<?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>131465</bug_id>
          
          <creation_ts>2014-04-09 16:54:29 -0700</creation_ts>
          <short_desc>Eliminate DragSession structure</short_desc>
          <delta_ts>2014-04-10 10:37:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>benjamin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>999357</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-04-09 16:54:29 -0700</bug_when>
    <thetext>It is very difficult to figure out which object is responsible for what in dragging. We have many &quot;session&quot;-like object, including DragController, DragData, DragState and DragSession. Plus a DragOperation enum that could also look like a session object at a first glance.

DragSession is the worst - it&apos;s really just a transient response to NSDragDestination delegate methods. WebKit2 keeps it as a member of WebPageProxy, but that&apos;s only because of its asynchronous nature - we can&apos;t apply the response until the next delegate call is made.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999360</commentid>
    <comment_count>1</comment_count>
      <attachid>229001</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-04-09 17:03:23 -0700</bug_when>
    <thetext>Created attachment 229001
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999361</commentid>
    <comment_count>2</comment_count>
      <attachid>229001</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-04-09 17:09:55 -0700</bug_when>
    <thetext>Comment on attachment 229001
proposed patch

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

Looks great.

&gt; Source/WebCore/page/DragController.h:65
&gt; +        // As computed from the most recent DragData.

Not sure the comment is useful. That is pretty much true for all the state of DragController.

&gt; Source/WebKit2/UIProcess/WebPageProxy.h:905
&gt; +    void resetCurrentDragInformation() { m_currentDragOperation = WebCore::DragOperationNone; m_currentDragIsOverFileInput = false; m_currentDragNumberOfFilesToBeAccepted = 0; }

Let&apos;s put this in the cpp file or split it over 3 lines.

&gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:2251
&gt; +    NSInteger numberOfValidItemsForDrop = _data-&gt;_page-&gt;currentDragNumberOfFilesToBeAccepted();

No need for cast here?

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2783
&gt; +    DragOperation resolvedDragOperation;

It may be better to create a scope for both cases and define resolvedDragOperation in there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999570</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-04-10 10:34:07 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r167074&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999573</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-04-10 10:37:46 -0700</bug_when>
    <thetext>Tried to fix Gtk build in &lt;http://trac.webkit.org/r167075&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229001</attachid>
            <date>2014-04-09 17:03:23 -0700</date>
            <delta_ts>2014-04-09 17:09:54 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>DragSession.txt</filename>
            <type>text/plain</type>
            <size>35020</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NzA1MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE0LTA0LTA5ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIEVsaW1pbmF0ZSBEcmFnU2Vz
c2lvbiBzdHJ1Y3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzMTQ2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIERyYWdTZXNzaW9uIGlzIHJlYWxseSBqdXN0IGEgdHJhbnNpZW50IHJlc3BvbnNlIHRv
IE5TRHJhZ0Rlc3RpbmF0aW9uIGRlbGVnYXRlIG1ldGhvZHMuCisgICAgICAgIFRoZSAic2Vzc2lv
biIgbmFtZSB3YXMgcXVpdGUgbWlzbGVhZGluZywgYW5kIHRoYW5rZnVsbHksIHdlIGRvbid0IG5l
ZWQgYSBjbGFzcyBmb3IgdGhpcworICAgICAgICBiYWcgb2YgZGF0YSBhdCBhbGwuCisKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9E
cmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6RHJh
Z0NvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRl
cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnVXBkYXRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJhZ0VudGVyZWRPclVwZGF0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyk6CisgICAg
ICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRy
b2xsZXI6Om1vdXNlSXNPdmVyRmlsZUlucHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250
cm9sbGVyOjpudW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkKToKKyAgICAgICAgKiBwYWdlL0RyYWdT
ZXNzaW9uLmg6IFJlbW92ZWQuCisKIDIwMTQtMDQtMDkgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6
YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWdyZXNzaW9uOiBBWDogbGlzdCBoZXVyaXN0aWNz
IHNvbWV0aW1lcyBkZXRlcm1pbmVkIGFzIHByZXNlbnRhdGlvbmFsIGV2ZW4gd2hlbiBleHBsaWNp
dCByb2xlcyBhcHBsaWVkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjcwMTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEx
ODAsNyArMTE4MCw2IEBACiAJCTMxNjExRTYxMEUxQzRFMTQwMEY2QTU3OSAvKiBET01XZWJLaXRD
U1NUcmFuc2Zvcm1WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzE2MTFFNUUwRTFDNEUxNDAwRjZBNTc5IC8qIERPTVdlYktpdENTU1RyYW5zZm9y
bVZhbHVlLmggKi87IH07CiAJCTMxNjExRTYyMEUxQzRFMTQwMEY2QTU3OSAvKiBET01XZWJLaXRD
U1NUcmFuc2Zvcm1WYWx1ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxNjExRTVGMEUxQzRFMTQwMEY2QTU3OSAvKiBET01XZWJLaXRDU1NUcmFuc2Zv
cm1WYWx1ZS5tbSAqLzsgfTsKIAkJMzE2MTFFNjMwRTFDNEUxNDAwRjZBNTc5IC8qIERPTVdlYktp
dENTU1RyYW5zZm9ybVZhbHVlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxNjExRTYwMEUxQzRFMTQwMEY2QTU3OSAvKiBET01XZWJLaXRD
U1NUcmFuc2Zvcm1WYWx1ZUludGVybmFsLmggKi87IH07Ci0JCTMxNjkzNzlDMTQ2MDlDNkMwMEMw
MTM2MiAvKiBEcmFnU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzE2OTM3OUExNDYwOUM1QjAwQzAxMzYyIC8qIERyYWdTZXNzaW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzE2RkUwNzEw
RTZDQ0JFRTAwQkY2MDg4IC8qIEpTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkZFMDZEMEU2Q0NCRUUwMEJG
NjA4OCAvKiBKU1dlYktpdENTU0tleWZyYW1lUnVsZS5jcHAgKi87IH07CiAJCTMxNkZFMDcyMEU2
Q0NCRUUwMEJGNjA4OCAvKiBKU1dlYktpdENTU0tleWZyYW1lUnVsZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2RkUwNkUwRTZDQ0JFRTAwQkY2MDg4
IC8qIEpTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmggKi87IH07CiAJCTMxNkZFMDczMEU2Q0NCRUUw
MEJGNjA4OCAvKiBKU1dlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2RkUwNkYwRTZDQ0JFRTAwQkY2MDg4IC8q
IEpTV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5jcHAgKi87IH07CkBAIC04MDc4LDcgKzgwNzcsNiBA
QAogCQkzMTYxMUU1RTBFMUM0RTE0MDBGNkE1NzkgLyogRE9NV2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE2MTFFNUYwRTFDNEUx
NDAwRjZBNTc5IC8qIERPTVdlYktpdENTU1RyYW5zZm9ybVZhbHVlLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNjExRTYwMEUxQzRFMTQwMEY2QTU3OSAv
KiBET01XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZUludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERPTVdlYktpdENTU1RyYW5zZm9ybVZhbHVlSW50ZXJuYWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2OTM3OUExNDYwOUM1QjAwQzAxMzYyIC8qIERy
YWdTZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYWdTZXNzaW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNkZFMDZEMEU2Q0NCRUUwMEJGNjA4
OCAvKiBKU1dlYktpdENTU0tleWZyYW1lUnVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1dlYktpdENTU0tleWZyYW1lUnVsZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMxNkZFMDZFMEU2Q0NCRUUwMEJGNjA4OCAvKiBKU1dlYktpdENTU0tl
eWZyYW1lUnVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYktpdENT
U0tleWZyYW1lUnVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTZGRTA2RjBF
NkNDQkVFMDBCRjYwODggLyogSlNXZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjI2OSw3ICsxNjI2Nyw2IEBACiAJCQkJ
QTdDQTU5NjIwQjI3QzFGMjAwRkEwMjFEIC8qIERyYWdDbGllbnQuaCAqLywKIAkJCQlBN0NBNTk1
QzBCMjdCRDlFMDBGQTAyMUQgLyogRHJhZ0NvbnRyb2xsZXIuY3BwICovLAogCQkJCUE3Q0E1OTVC
MEIyN0JEOUUwMEZBMDIxRCAvKiBEcmFnQ29udHJvbGxlci5oICovLAotCQkJCTMxNjkzNzlBMTQ2
MDlDNUIwMEMwMTM2MiAvKiBEcmFnU2Vzc2lvbi5oICovLAogCQkJCTgxRjY1RkY1MTM3ODhGQUEw
MEZGNkYyRCAvKiBEcmFnU3RhdGUuaCAqLywKIAkJCQkxQUYzMjY3NzBENzhCOTQ0MDA2OEYwQzQg
LyogRWRpdG9yQ2xpZW50LmggKi8sCiAJCQkJOTNDMDlBODAwQjA2NEYwMDAwNUFCRDREIC8qIEV2
ZW50SGFuZGxlci5jcHAgKi8sCkBAIC0yMzc0Nyw3ICsyMzc0NCw2IEBACiAJCQkJQTdDQTU5NUQw
QjI3QkQ5RTAwRkEwMjFEIC8qIERyYWdDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
N0I2RTY5RjBCMjkxQTk2MDBEMDUyOUYgLyogRHJhZ0RhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3Q0ZCM0QyMEI3RUQxMEEwMDcwQzMyRCAvKiBEcmFnSW1hZ2UuaCBpbiBIZWFkZXJzICovLAot
CQkJCTMxNjkzNzlDMTQ2MDlDNkMwMEMwMTM2MiAvKiBEcmFnU2Vzc2lvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODFGNjVGRjYxMzc4OEZBQTAwRkY2RjJEIC8qIERyYWdTdGF0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDk4NzcwREMxMjQyQzUzNTAwMjIyNkJBIC8qIERyYXdpbmdCdWZmZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUUxQkE2NkYxMTc0MkJEODYwMEMyMDI1MSAvKiBEeW5hbWljTGlu
a2VySW50ZXJwb3NpbmcuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9EcmFnQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDE2NzA0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw2IEBACiAj
aW5jbHVkZSAiRHJhZ0NsaWVudC5oIgogI2luY2x1ZGUgIkRyYWdEYXRhLmgiCiAjaW5jbHVkZSAi
RHJhZ0ltYWdlLmgiCi0jaW5jbHVkZSAiRHJhZ1Nlc3Npb24uaCIKICNpbmNsdWRlICJEcmFnU3Rh
dGUuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIKQEAg
LTEwMSw5ICsxMDAsNyBAQCBzdGF0aWMgUGxhdGZvcm1Nb3VzZUV2ZW50IGNyZWF0ZU1vdXNlRXZl
CiBEcmFnQ29udHJvbGxlcjo6RHJhZ0NvbnRyb2xsZXIoUGFnZSYgcGFnZSwgRHJhZ0NsaWVudCYg
Y2xpZW50KQogICAgIDogbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCi0gICAg
LCBtX2RvY3VtZW50VW5kZXJNb3VzZSgwKQotICAgICwgbV9kcmFnSW5pdGlhdG9yKDApCi0gICAg
LCBtX2ZpbGVJbnB1dEVsZW1lbnRVbmRlck1vdXNlKDApCisgICAgLCBtX251bWJlck9mSXRlbXNU
b0JlQWNjZXB0ZWQoMCkKICAgICAsIG1fZG9jdW1lbnRJc0hhbmRsaW5nRHJhZyhmYWxzZSkKICAg
ICAsIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlvbk5vbmUpCiAg
ICAgLCBtX2RyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvbk5vbmUpCkBAIC0xNzYsNyAr
MTczLDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZHJhZ0VuZGVkKCkKICAgICBtX2NsaWVudC5k
cmFnRW5kZWQoKTsKIH0KIAotRHJhZ1Nlc3Npb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVk
KERyYWdEYXRhJiBkcmFnRGF0YSkKK0RyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdF
bnRlcmVkKERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAgICByZXR1cm4gZHJhZ0VudGVyZWRPclVw
ZGF0ZWQoZHJhZ0RhdGEpOwogfQpAQCAtMTk2LDcgKzE5Myw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xs
ZXI6OmRyYWdFeGl0ZWQoRHJhZ0RhdGEKICAgICBtX2ZpbGVJbnB1dEVsZW1lbnRVbmRlck1vdXNl
ID0gMDsKIH0KIAotRHJhZ1Nlc3Npb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdVcGRhdGVkKERyYWdE
YXRhJiBkcmFnRGF0YSkKK0RyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdVcGRhdGVk
KERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAgICByZXR1cm4gZHJhZ0VudGVyZWRPclVwZGF0ZWQo
ZHJhZ0RhdGEpOwogfQpAQCAtMjQ3LDIxICsyNDQsMjEgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6
bW91c2VNb3ZlZEludG9Eb2N1bQogICAgIG1fZG9jdW1lbnRVbmRlck1vdXNlID0gbmV3RG9jdW1l
bnQ7CiB9CiAKLURyYWdTZXNzaW9uIERyYWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRl
ZChEcmFnRGF0YSYgZHJhZ0RhdGEpCitEcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFn
RW50ZXJlZE9yVXBkYXRlZChEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgbW91c2VNb3ZlZElu
dG9Eb2N1bWVudChtX3BhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnRBdFBvaW50KGRyYWdEYXRhLmNs
aWVudFBvc2l0aW9uKCkpKTsKIAogICAgIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uID0gbV9jbGll
bnQuYWN0aW9uTWFza0ZvckRyYWcoZHJhZ0RhdGEpOwogICAgIGlmIChtX2RyYWdEZXN0aW5hdGlv
bkFjdGlvbiA9PSBEcmFnRGVzdGluYXRpb25BY3Rpb25Ob25lKSB7CiAgICAgICAgIGNhbmNlbERy
YWcoKTsgLy8gRklYTUU6IFdoeSBub3QgY2FsbCBtb3VzZU1vdmVkSW50b0RvY3VtZW50KDApPwot
ICAgICAgICByZXR1cm4gRHJhZ1Nlc3Npb24oKTsKKyAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRp
b25Ob25lOwogICAgIH0KIAotICAgIERyYWdTZXNzaW9uIGRyYWdTZXNzaW9uOwotICAgIG1fZG9j
dW1lbnRJc0hhbmRsaW5nRHJhZyA9IHRyeURvY3VtZW50RHJhZyhkcmFnRGF0YSwgbV9kcmFnRGVz
dGluYXRpb25BY3Rpb24sIGRyYWdTZXNzaW9uKTsKKyAgICBEcmFnT3BlcmF0aW9uIGRyYWdPcGVy
YXRpb24gPSBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBtX2RvY3VtZW50SXNIYW5kbGluZ0RyYWcg
PSB0cnlEb2N1bWVudERyYWcoZHJhZ0RhdGEsIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBkcmFn
T3BlcmF0aW9uKTsKICAgICBpZiAoIW1fZG9jdW1lbnRJc0hhbmRsaW5nRHJhZyAmJiAobV9kcmFn
RGVzdGluYXRpb25BY3Rpb24gJiBEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkKSkKLSAgICAgICAg
ZHJhZ1Nlc3Npb24ub3BlcmF0aW9uID0gb3BlcmF0aW9uRm9yTG9hZChkcmFnRGF0YSk7Ci0gICAg
cmV0dXJuIGRyYWdTZXNzaW9uOworICAgICAgICBkcmFnT3BlcmF0aW9uID0gb3BlcmF0aW9uRm9y
TG9hZChkcmFnRGF0YSk7CisgICAgcmV0dXJuIGRyYWdPcGVyYXRpb247CiB9CiAKIHN0YXRpYyBI
VE1MSW5wdXRFbGVtZW50KiBhc0ZpbGVJbnB1dChOb2RlKiBub2RlKQpAQCAtMjk3LDcgKzI5NCw3
IEBAIHN0YXRpYyBFbGVtZW50KiBlbGVtZW50VW5kZXJNb3VzZShEb2N1bWUKICAgICByZXR1cm4g
dG9FbGVtZW50KG4pOwogfQogCi1ib29sIERyYWdDb250cm9sbGVyOjp0cnlEb2N1bWVudERyYWco
RHJhZ0RhdGEmIGRyYWdEYXRhLCBEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9uTWFzaywgRHJh
Z1Nlc3Npb24mIGRyYWdTZXNzaW9uKQorYm9vbCBEcmFnQ29udHJvbGxlcjo6dHJ5RG9jdW1lbnRE
cmFnKERyYWdEYXRhJiBkcmFnRGF0YSwgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbk1hc2ss
IERyYWdPcGVyYXRpb24mIGRyYWdPcGVyYXRpb24pCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50VW5k
ZXJNb3VzZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzA3LDcgKzMwNCw3IEBAIGJvb2wg
RHJhZ0NvbnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyhEcmEKIAogICAgIGJvb2wgaXNIYW5kbGlu
Z0RyYWcgPSBmYWxzZTsKICAgICBpZiAoYWN0aW9uTWFzayAmIERyYWdEZXN0aW5hdGlvbkFjdGlv
bkRIVE1MKSB7Ci0gICAgICAgIGlzSGFuZGxpbmdEcmFnID0gdHJ5REhUTUxEcmFnKGRyYWdEYXRh
LCBkcmFnU2Vzc2lvbi5vcGVyYXRpb24pOworICAgICAgICBpc0hhbmRsaW5nRHJhZyA9IHRyeURI
VE1MRHJhZyhkcmFnRGF0YSwgZHJhZ09wZXJhdGlvbik7CiAgICAgICAgIC8vIERvIG5vdCBjb250
aW51ZSBpZiBtX2RvY3VtZW50VW5kZXJNb3VzZSBoYXMgYmVlbiByZXNldCBieSB0cnlESFRNTERy
YWcuCiAgICAgICAgIC8vIHRyeURIVE1MRHJhZyBmaXJlcyBkcmFnZW50ZXIgZXZlbnQuIFRoZSBl
dmVudCBsaXN0ZW5lciB0aGF0IGxpc3RlbnMKICAgICAgICAgLy8gdG8gdGhpcyBldmVudCBtYXkg
Y3JlYXRlIGEgbmVzdGVkIG1lc3NhZ2UgbG9vcCAob3BlbiBhIG1vZGFsIGRpYWxvZyksCkBAIC0z
MzAsNyArMzI3LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6dHJ5RG9jdW1lbnREcmFnKERyYQog
CiAgICAgaWYgKChhY3Rpb25NYXNrICYgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRWRpdCkgJiYgY2Fu
UHJvY2Vzc0RyYWcoZHJhZ0RhdGEpKSB7CiAgICAgICAgIGlmIChkcmFnRGF0YS5jb250YWluc0Nv
bG9yKCkpIHsKLSAgICAgICAgICAgIGRyYWdTZXNzaW9uLm9wZXJhdGlvbiA9IERyYWdPcGVyYXRp
b25HZW5lcmljOworICAgICAgICAgICAgZHJhZ09wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25HZW5l
cmljOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIApAQCAtMzUwLDI4ICsz
NDcsMjcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6dHJ5RG9jdW1lbnREcmFnKERyYQogICAgICAg
ICAgICAgbV9wYWdlLmRyYWdDYXJldENvbnRyb2xsZXIoKS5zZXRDYXJldFBvc2l0aW9uKG1fZG9j
dW1lbnRVbmRlck1vdXNlLT5mcmFtZSgpLT52aXNpYmxlUG9zaXRpb25Gb3JQb2ludChwb2ludCkp
OwogCiAgICAgICAgIEZyYW1lKiBpbm5lckZyYW1lID0gZWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFt
ZSgpOwotICAgICAgICBkcmFnU2Vzc2lvbi5vcGVyYXRpb24gPSBkcmFnSXNNb3ZlKGlubmVyRnJh
bWUtPnNlbGVjdGlvbigpLCBkcmFnRGF0YSkgPyBEcmFnT3BlcmF0aW9uTW92ZSA6IERyYWdPcGVy
YXRpb25Db3B5OwotICAgICAgICBkcmFnU2Vzc2lvbi5tb3VzZUlzT3ZlckZpbGVJbnB1dCA9IG1f
ZmlsZUlucHV0RWxlbWVudFVuZGVyTW91c2U7Ci0gICAgICAgIGRyYWdTZXNzaW9uLm51bWJlck9m
SXRlbXNUb0JlQWNjZXB0ZWQgPSAwOworICAgICAgICBkcmFnT3BlcmF0aW9uID0gZHJhZ0lzTW92
ZShpbm5lckZyYW1lLT5zZWxlY3Rpb24oKSwgZHJhZ0RhdGEpID8gRHJhZ09wZXJhdGlvbk1vdmUg
OiBEcmFnT3BlcmF0aW9uQ29weTsKKyAgICAgICAgbV9udW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVk
ID0gMDsKIAogICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkZpbGVzID0gZHJhZ0RhdGEubnVtYmVy
T2ZGaWxlcygpOwogICAgICAgICBpZiAobV9maWxlSW5wdXRFbGVtZW50VW5kZXJNb3VzZSkgewog
ICAgICAgICAgICAgaWYgKG1fZmlsZUlucHV0RWxlbWVudFVuZGVyTW91c2UtPmlzRGlzYWJsZWRG
b3JtQ29udHJvbCgpKQotICAgICAgICAgICAgICAgIGRyYWdTZXNzaW9uLm51bWJlck9mSXRlbXNU
b0JlQWNjZXB0ZWQgPSAwOworICAgICAgICAgICAgICAgIG1fbnVtYmVyT2ZJdGVtc1RvQmVBY2Nl
cHRlZCA9IDA7CiAgICAgICAgICAgICBlbHNlIGlmIChtX2ZpbGVJbnB1dEVsZW1lbnRVbmRlck1v
dXNlLT5tdWx0aXBsZSgpKQotICAgICAgICAgICAgICAgIGRyYWdTZXNzaW9uLm51bWJlck9mSXRl
bXNUb0JlQWNjZXB0ZWQgPSBudW1iZXJPZkZpbGVzOworICAgICAgICAgICAgICAgIG1fbnVtYmVy
T2ZJdGVtc1RvQmVBY2NlcHRlZCA9IG51bWJlck9mRmlsZXM7CiAgICAgICAgICAgICBlbHNlIGlm
IChudW1iZXJPZkZpbGVzID4gMSkKLSAgICAgICAgICAgICAgICBkcmFnU2Vzc2lvbi5udW1iZXJP
Zkl0ZW1zVG9CZUFjY2VwdGVkID0gMDsKKyAgICAgICAgICAgICAgICBtX251bWJlck9mSXRlbXNU
b0JlQWNjZXB0ZWQgPSAwOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGRyYWdT
ZXNzaW9uLm51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQgPSAxOworICAgICAgICAgICAgICAgIG1f
bnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCA9IDE7CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IGlmICghZHJhZ1Nlc3Npb24ubnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCkKLSAgICAgICAgICAg
ICAgICBkcmFnU2Vzc2lvbi5vcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9uZTsKLSAgICAgICAg
ICAgIG1fZmlsZUlucHV0RWxlbWVudFVuZGVyTW91c2UtPnNldENhblJlY2VpdmVEcm9wcGVkRmls
ZXMoZHJhZ1Nlc3Npb24ubnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCk7CisgICAgICAgICAgICBp
ZiAoIW1fbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCkKKyAgICAgICAgICAgICAgICBkcmFnT3Bl
cmF0aW9uID0gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgICAgICAgICBtX2ZpbGVJbnB1dEVsZW1l
bnRVbmRlck1vdXNlLT5zZXRDYW5SZWNlaXZlRHJvcHBlZEZpbGVzKG1fbnVtYmVyT2ZJdGVtc1Rv
QmVBY2NlcHRlZCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSBhcmUgbm90
IG92ZXIgYSBmaWxlIGlucHV0IGVsZW1lbnQuIFRoZSBkcmFnZ2VkIGl0ZW0ocykgd2lsbCBvbmx5
CiAgICAgICAgICAgICAvLyBiZSBsb2FkZWQgaW50byB0aGUgdmlldyB0aGUgbnVtYmVyIG9mIGRy
YWdnZWQgaXRlbXMgaXMgMS4KLSAgICAgICAgICAgIGRyYWdTZXNzaW9uLm51bWJlck9mSXRlbXNU
b0JlQWNjZXB0ZWQgPSBudW1iZXJPZkZpbGVzICE9IDEgPyAwIDogMTsKKyAgICAgICAgICAgIG1f
bnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCA9IG51bWJlck9mRmlsZXMgIT0gMSA/IDAgOiAxOwog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmgJKHJldmlzaW9uIDE2NzA0MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUGFnZTsKICAgICBjbGFzcyBQbGF0Zm9y
bU1vdXNlRXZlbnQ7CiAKLSAgICBzdHJ1Y3QgRHJhZ1Nlc3Npb247CiAgICAgc3RydWN0IERyYWdT
dGF0ZTsKIAogICAgIGNsYXNzIERyYWdDb250cm9sbGVyIHsKQEAgLTU4LDExICs1NywxNSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgRHJhZ0NsaWVudCYgY2xpZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9jbGllbnQ7IH0KIAotICAgICAgICBEcmFnU2Vzc2lvbiBkcmFnRW50ZXJlZChE
cmFnRGF0YSYpOworICAgICAgICBEcmFnT3BlcmF0aW9uIGRyYWdFbnRlcmVkKERyYWdEYXRhJik7
CiAgICAgICAgIHZvaWQgZHJhZ0V4aXRlZChEcmFnRGF0YSYpOwotICAgICAgICBEcmFnU2Vzc2lv
biBkcmFnVXBkYXRlZChEcmFnRGF0YSYpOworICAgICAgICBEcmFnT3BlcmF0aW9uIGRyYWdVcGRh
dGVkKERyYWdEYXRhJik7CiAgICAgICAgIGJvb2wgcGVyZm9ybURyYWdPcGVyYXRpb24oRHJhZ0Rh
dGEmKTsKLSAgICAgICAgCisKKyAgICAgICAgLy8gQXMgY29tcHV0ZWQgZnJvbSB0aGUgbW9zdCBy
ZWNlbnQgRHJhZ0RhdGEuCisgICAgICAgIGJvb2wgbW91c2VJc092ZXJGaWxlSW5wdXQoKSBjb25z
dCB7IHJldHVybiBtX2ZpbGVJbnB1dEVsZW1lbnRVbmRlck1vdXNlOyB9CisgICAgICAgIHVuc2ln
bmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQoKSBjb25zdCB7IHJldHVybiBtX251bWJlck9m
SXRlbXNUb0JlQWNjZXB0ZWQ7IH0KKwogICAgICAgICAvLyBGSVhNRTogSXQgc2hvdWxkIGJlIHBv
c3NpYmxlIHRvIHJlbW92ZSBhIG51bWJlciBvZiB0aGVzZSBhY2Nlc3NvcnMgb25jZSBhbGwKICAg
ICAgICAgLy8gZHJhZyBsb2dpYyBpcyBpbiBXZWJDb3JlLgogICAgICAgICB2b2lkIHNldERpZElu
aXRpYXRlRHJhZyhib29sIGluaXRpYXRlZCkgeyBtX2RpZEluaXRpYXRlRHJhZyA9IGluaXRpYXRl
ZDsgfSAKQEAgLTk1LDkgKzk4LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29s
IGRpc3BhdGNoVGV4dElucHV0RXZlbnRGb3IoRnJhbWUqLCBEcmFnRGF0YSYpOwogICAgICAgICBi
b29sIGNhblByb2Nlc3NEcmFnKERyYWdEYXRhJik7CiAgICAgICAgIGJvb2wgY29uY2x1ZGVFZGl0
RHJhZyhEcmFnRGF0YSYpOwotICAgICAgICBEcmFnU2Vzc2lvbiBkcmFnRW50ZXJlZE9yVXBkYXRl
ZChEcmFnRGF0YSYpOworICAgICAgICBEcmFnT3BlcmF0aW9uIGRyYWdFbnRlcmVkT3JVcGRhdGVk
KERyYWdEYXRhJik7CiAgICAgICAgIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uRm9yTG9hZChEcmFn
RGF0YSYpOwotICAgICAgICBib29sIHRyeURvY3VtZW50RHJhZyhEcmFnRGF0YSYsIERyYWdEZXN0
aW5hdGlvbkFjdGlvbiwgRHJhZ1Nlc3Npb24mKTsKKyAgICAgICAgYm9vbCB0cnlEb2N1bWVudERy
YWcoRHJhZ0RhdGEmLCBEcmFnRGVzdGluYXRpb25BY3Rpb24sIERyYWdPcGVyYXRpb24mKTsKICAg
ICAgICAgYm9vbCB0cnlESFRNTERyYWcoRHJhZ0RhdGEmLCBEcmFnT3BlcmF0aW9uJik7CiAgICAg
ICAgIERyYWdPcGVyYXRpb24gZHJhZ09wZXJhdGlvbihEcmFnRGF0YSYpOwogICAgICAgICB2b2lk
IGNhbmNlbERyYWcoKTsKQEAgLTExNyw2ICsxMjAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIFJlZlB0cjxEb2N1bWVudD4gbV9kb2N1bWVudFVuZGVyTW91c2U7IC8vIFRoZSBkb2N1
bWVudCB0aGUgbW91c2Ugd2FzIGxhc3QgZHJhZ2dlZCBvdmVyLgogICAgICAgICBSZWZQdHI8RG9j
dW1lbnQ+IG1fZHJhZ0luaXRpYXRvcjsgLy8gVGhlIERvY3VtZW50IChpZiBhbnkpIHRoYXQgaW5p
dGlhdGVkIHRoZSBkcmFnLgogICAgICAgICBSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gbV9maWxl
SW5wdXRFbGVtZW50VW5kZXJNb3VzZTsKKyAgICAgICAgdW5zaWduZWQgbV9udW1iZXJPZkl0ZW1z
VG9CZUFjY2VwdGVkOwogICAgICAgICBib29sIG1fZG9jdW1lbnRJc0hhbmRsaW5nRHJhZzsKIAog
ICAgICAgICBEcmFnRGVzdGluYXRpb25BY3Rpb24gbV9kcmFnRGVzdGluYXRpb25BY3Rpb247Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnU2Vzc2lvbi5oCShyZXZpc2lvbiAxNjcwMTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RyYWdTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDggKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZu
ZGVmIERyYWdTZXNzaW9uX2gKLSNkZWZpbmUgRHJhZ1Nlc3Npb25faAotCi0jaW5jbHVkZSAiRHJh
Z0FjdGlvbnMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotc3RydWN0IERyYWdTZXNz
aW9uIHsKLSAgICBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbjsKLSAgICBib29sIG1vdXNlSXNPdmVy
RmlsZUlucHV0OwotICAgIHVuc2lnbmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQ7Ci0KLSAg
ICBEcmFnU2Vzc2lvbigpCi0gICAgICAgIDogb3BlcmF0aW9uKERyYWdPcGVyYXRpb25Ob25lKQot
ICAgICAgICAsIG1vdXNlSXNPdmVyRmlsZUlucHV0KGZhbHNlKQotICAgICAgICAsIG51bWJlck9m
SXRlbXNUb0JlQWNjZXB0ZWQoMCkKLSAgICB7Ci0gICAgfQotfTsKLQotfQotCi0jZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NzA1MikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE0LTA0LTA5ICBBbGV4ZXkgUHJv
c2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIEVsaW1pbmF0ZSBEcmFnU2Vzc2lv
biBzdHJ1Y3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzMTQ2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzLnB5OgorICAgICAgICAoc3RydWN0X29yX2Ns
YXNzKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxEcmFnU2Vzc2lvbj46OmVuY29kZSk6IERlbGV0ZWQuCisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RHJhZ1Nlc3Npb24+OjpkZWNvZGUpOiBEZWxldGVk
LgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBkcmFnZ2luZ0Vu
dGVyZWQ6XSk6CisgICAgICAgICgtW1dLVmlldyBkcmFnZ2luZ1VwZGF0ZWQ6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRQ
ZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjdXJyZW50RHJhZ09wZXJh
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3VycmVudERyYWdJc092ZXJG
aWxlSW5wdXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmN1cnJlbnREcmFnTnVt
YmVyT2ZGaWxlc1RvQmVBY2NlcHRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
cmVzZXRDdXJyZW50RHJhZ0luZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkcmFnU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cmVzZXREcmFnU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFj
dGlvbik6CisKIDIwMTQtMDQtMDkgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFRyeSB0byBmaXggdGhlIEdUSysgYnVpbGQgYWZ0ZXIgcmVzZXREcmFn
T3BlcmF0aW9uIHJlbmFtZQpJbmRleDogU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQyL21l
c3NhZ2VzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9t
ZXNzYWdlcy5weQkocmV2aXNpb24gMTY3MDE0KQorKysgU291cmNlL1dlYktpdDIvU2NyaXB0cy93
ZWJraXQyL21lc3NhZ2VzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNyArMTcyLDYgQEAgZGVm
IHN0cnVjdF9vcl9jbGFzcyhuYW1lc3BhY2UsIHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6RWRp
dG9yQ29tbWFuZHNGb3JLZXlFdmVudCcsCiAgICAgICAgICdXZWJDb3JlOjpDb21wb3NpdGlvblVu
ZGVybGluZScsCiAgICAgICAgICdXZWJDb3JlOjpDb29raWUnLAotICAgICAgICAnV2ViQ29yZTo6
RHJhZ1Nlc3Npb24nLAogICAgICAgICAnV2ViQ29yZTo6RmxvYXRQb2ludDNEJywKICAgICAgICAg
J1dlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MnLAogICAgICAgICAnV2ViQ29yZTo6R3JhbW1h
ckRldGFpbCcsCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcAkocmV2aXNpb24gMTY3MDE0KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDYg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0N1cnNvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJh
c2VEZXRhaWxzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvRHJhZ1Nlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRv
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZUNob29zZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbHRlck9wZXJhdGlvbi5oPgpAQCAtMTMxMCwyNCArMTMwOSw2IEBAIGJvb2wgQXJndW1lbnRD
b2RlcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+OjoKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBB
cmd1bWVudENvZGVyPERyYWdTZXNzaW9uPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgRHJhZ1Nlc3Npb24mIHJlc3VsdCkKLXsKLSAgICBlbmNvZGVyLmVuY29kZUVudW0o
cmVzdWx0Lm9wZXJhdGlvbik7Ci0gICAgZW5jb2RlciA8PCByZXN1bHQubW91c2VJc092ZXJGaWxl
SW5wdXQ7Ci0gICAgZW5jb2RlciA8PCByZXN1bHQubnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZDsK
LX0KLQotYm9vbCBBcmd1bWVudENvZGVyPERyYWdTZXNzaW9uPjo6ZGVjb2RlKEFyZ3VtZW50RGVj
b2RlciYgZGVjb2RlciwgRHJhZ1Nlc3Npb24mIHJlc3VsdCkKLXsKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlRW51bShyZXN1bHQub3BlcmF0aW9uKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1vdXNlSXNPdmVyRmlsZUlucHV0KSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm51bWJlck9m
SXRlbXNUb0JlQWNjZXB0ZWQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KIHZvaWQgQXJndW1lbnRDb2RlcjxVUkw+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBVUkwmIHJlc3VsdCkKIHsKICAgICBlbmNvZGVyIDw8IHJlc3VsdC5z
dHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgJKHJldmlzaW9uIDE2NzAxNCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNiBAQCBjbGFz
cyBVUkw7CiBzdHJ1Y3QgQ29tcG9zaXRpb25VbmRlcmxpbmU7CiBzdHJ1Y3QgQ29va2llOwogc3Ry
dWN0IERpY3RhdGlvbkFsdGVybmF0aXZlOwotc3RydWN0IERyYWdTZXNzaW9uOwogc3RydWN0IEZp
bGVDaG9vc2VyU2V0dGluZ3M7CiBzdHJ1Y3QgSURCRGF0YWJhc2VNZXRhZGF0YTsKIHN0cnVjdCBJ
REJHZXRSZXN1bHQ7CkBAIC0zMzksMTEgKzMzOCw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZToKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVy
JiwgV2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0Jik7CiB9OwogICAgIAotdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpEcmFnU2Vzc2lvbj4gewotICAgIHN0YXRpYyB2
b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpEcmFnU2Vzc2lvbiYp
OwotICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBXZWJDb3JlOjpEcmFn
U2Vzc2lvbiYpOwotfTsKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpVUkw+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgY29uc3Qg
V2ViQ29yZTo6VVJMJik7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYs
IFdlYkNvcmU6OlVSTCYpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAJKHJldmlzaW9uIDE2NzA0MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw2IEBACiAjaW5jbHVk
ZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdDb250cm9sbGVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRHJh
Z1Nlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRm9jdXNEaXJlY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0
cnkuaD4KQEAgLTMyMCw2ICszMTksOSBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdl
Q2xpZW50JiBwCiAgICAgLCBtX2hhc1NwZWxsRG9jdW1lbnRUYWcoZmFsc2UpCiAgICAgLCBtX3Bl
bmRpbmdMZWFybk9ySWdub3JlV29yZE1lc3NhZ2VDb3VudCgwKQogICAgICwgbV9tYWluRnJhbWVI
YXNDdXN0b21Db250ZW50UHJvdmlkZXIoZmFsc2UpCisgICAgLCBtX2N1cnJlbnREcmFnT3BlcmF0
aW9uKERyYWdPcGVyYXRpb25Ob25lKQorICAgICwgbV9jdXJyZW50RHJhZ0lzT3ZlckZpbGVJbnB1
dChmYWxzZSkKKyAgICAsIG1fY3VycmVudERyYWdOdW1iZXJPZkZpbGVzVG9CZUFjY2VwdGVkKDAp
CiAgICAgLCBtX2RlbGVnYXRlc1Njcm9sbGluZyhmYWxzZSkKICAgICAsIG1fbWFpbkZyYW1lSGFz
SG9yaXpvbnRhbFNjcm9sbGJhcihmYWxzZSkKICAgICAsIG1fbWFpbkZyYW1lSGFzVmVydGljYWxT
Y3JvbGxiYXIoZmFsc2UpCkBAIC0xMjA1LDkgKzEyMDcsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnBlcmZvcm1EcmFnQ29udHJvbGxlcgogI2VuZGlmCiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oV2ViQ29yZTo6RHJhZ1Nlc3Npb24gZHJhZ1Nl
c3Npb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9u
KHVpbnQ2NF90IGRyYWdPcGVyYXRpb24sIGJvb2wgbW91c2VJc092ZXJGaWxlSW5wdXQsIHVuc2ln
bmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQpCiB7Ci0gICAgbV9jdXJyZW50RHJhZ1Nlc3Np
b24gPSBkcmFnU2Vzc2lvbjsKKyAgICBNRVNTQUdFX0NIRUNLKGRyYWdPcGVyYXRpb24gPD0gRHJh
Z09wZXJhdGlvbkRlbGV0ZSk7CisKKyAgICBtX2N1cnJlbnREcmFnT3BlcmF0aW9uID0gc3RhdGlj
X2Nhc3Q8RHJhZ09wZXJhdGlvbj4oZHJhZ09wZXJhdGlvbik7CisgICAgbV9jdXJyZW50RHJhZ0lz
T3ZlckZpbGVJbnB1dCA9IG1vdXNlSXNPdmVyRmlsZUlucHV0OworICAgIG1fY3VycmVudERyYWdO
dW1iZXJPZkZpbGVzVG9CZUFjY2VwdGVkID0gbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZDsKIH0K
IAogI2lmIFBMQVRGT1JNKEdUSykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgJKHJldmlzaW9uIDE2NzA0MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNiBAQAogI2luY2x1ZGUg
IldlYlBvcHVwTWVudVByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0RyYWdTZXNzaW9u
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgpAQCAtODIsNyAr
ODEsNiBAQAogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICNpbmNsdWRlIDxXZWJDb3JlL0Ry
YWdBY3Rpb25zLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9EcmFnU2Vzc2lvbi5oPgogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpAQCAtODUxLDcgKzg0OSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRyYWdFeGl0ZWQoV2ViQ29yZTo6RHJhZ0RhdGEmLCBjb25zdCBTdHJpbmcmIGRyYWdT
dG9yYWdlTmFtZSA9IFN0cmluZygpKTsKICAgICB2b2lkIHBlcmZvcm1EcmFnT3BlcmF0aW9uKFdl
YkNvcmU6OkRyYWdEYXRhJiwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5Jik7CiAKLSAgICB2b2lkIGRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihXZWJDb3Jl
OjpEcmFnU2Vzc2lvbik7CisgICAgdm9pZCBkaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24o
dWludDY0X3QgZHJhZ09wZXJhdGlvbiwgYm9vbCBtb3VzZUlzT3ZlckZpbGVJbnB1dCwgdW5zaWdu
ZWQgbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCk7CiAgICAgdm9pZCBkcmFnRW5kZWQoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IG9wZXJhdGlvbik7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgdm9pZCBzZXREcmFnSW1hZ2UoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVu
dFBvc2l0aW9uLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgZHJhZ0ltYWdlSGFuZGxl
LCBib29sIGlzTGlua0RyYWcpOwpAQCAtOTAxLDggKzg5OSwxMCBAQCBwdWJsaWM6CiAgICAgRnJh
bWVMb2FkU3RhdGU6OlN0YXRlIGxvYWRTdGF0ZUF0UHJvY2Vzc0V4aXQoKSBjb25zdCB7IHJldHVy
biBtX2xvYWRTdGF0ZUF0UHJvY2Vzc0V4aXQ7IH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQp
Ci0gICAgV2ViQ29yZTo6RHJhZ1Nlc3Npb24gZHJhZ1Nlc3Npb24oKSBjb25zdCB7IHJldHVybiBt
X2N1cnJlbnREcmFnU2Vzc2lvbjsgfQotICAgIHZvaWQgcmVzZXREcmFnU2Vzc2lvbigpIHsgbV9j
dXJyZW50RHJhZ1Nlc3Npb24gPSBXZWJDb3JlOjpEcmFnU2Vzc2lvbigpOyB9CisgICAgV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbiBjdXJyZW50RHJhZ09wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
Y3VycmVudERyYWdPcGVyYXRpb247IH0KKyAgICBib29sIGN1cnJlbnREcmFnSXNPdmVyRmlsZUlu
cHV0KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50RHJhZ0lzT3ZlckZpbGVJbnB1dDsgfQorICAg
IHVuc2lnbmVkIGN1cnJlbnREcmFnTnVtYmVyT2ZGaWxlc1RvQmVBY2NlcHRlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fY3VycmVudERyYWdOdW1iZXJPZkZpbGVzVG9CZUFjY2VwdGVkOyB9CisgICAgdm9p
ZCByZXNldEN1cnJlbnREcmFnSW5mb3JtYXRpb24oKSB7IG1fY3VycmVudERyYWdPcGVyYXRpb24g
PSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTm9uZTsgbV9jdXJyZW50RHJhZ0lzT3ZlckZpbGVJbnB1
dCA9IGZhbHNlOyBtX2N1cnJlbnREcmFnTnVtYmVyT2ZGaWxlc1RvQmVBY2NlcHRlZCA9IDA7IH0K
ICNlbmRpZgogCiAgICAgdm9pZCBwcmVmZXJlbmNlc0RpZENoYW5nZSgpOwpAQCAtMTU3Myw3ICsx
NTczLDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX21haW5GcmFtZUhhc0N1c3RvbUNvbnRlbnRQ
cm92aWRlcjsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgV2ViQ29yZTo6RHJhZ1Nl
c3Npb24gbV9jdXJyZW50RHJhZ1Nlc3Npb247CisgICAgLy8gQ3VycmVudCBkcmFnIGRlc3RpbmF0
aW9uIGRldGFpbHMgYXJlIGRlbGl2ZXJlZCBhcyBhbiBhc3luY2hyb25vdXMgcmVzcG9uc2UsCisg
ICAgLy8gc28gd2UgcHJlc2VydmUgdGhlbSB0byBiZSB1c2VkIHdoZW4gdGhlIG5leHQgZHJhZ2dp
bmcgZGVsZWdhdGUgY2FsbCBpcyBtYWRlLgorICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gbV9j
dXJyZW50RHJhZ09wZXJhdGlvbjsKKyAgICBib29sIG1fY3VycmVudERyYWdJc092ZXJGaWxlSW5w
dXQ7CisgICAgdW5zaWduZWQgbV9jdXJyZW50RHJhZ051bWJlck9mRmlsZXNUb0JlQWNjZXB0ZWQ7
CiAjZW5kaWYKIAogICAgIFBhZ2VMb2FkU3RhdGUgbV9wYWdlTG9hZFN0YXRlOwpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShy
ZXZpc2lvbiAxNjcwMTQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsNyArMjU1LDcgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZVByb3h5IHsKIAogICAgICMgRHJhZyBhbmQgZHJvcCBtZXNzYWdlcwogI2lmIEVO
QUJMRShEUkFHX1NVUFBPUlQpCi0gICAgRGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKFdl
YkNvcmU6OkRyYWdTZXNzaW9uIGRyYWdTZXNzaW9uKQorICAgIERpZFBlcmZvcm1EcmFnQ29udHJv
bGxlckFjdGlvbih1aW50NjRfdCBkcmFnT3BlcmF0aW9uLCBib29sIG1vdXNlSXNPdmVyRmlsZUlu
cHV0LCB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkKQogI2VuZGlmCiAjaWYgUExB
VEZPUk0oQ09DT0EpICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgU2V0RHJhZ0ltYWdlKFdl
YkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlIGRyYWdJbWFnZSwgYm9vbCBsaW5rRHJhZykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0JKHJldmlzaW9uIDE2NzA0MCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzgs
NyArNzgsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9EcmFnQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnRGF0YS5oPgotI2ltcG9y
dCA8V2ViQ29yZS9EcmFnU2Vzc2lvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvSW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvSW50UmVjdC5oPgpA
QCAtMjIzNyw3ICsyMjM2LDcgQEAgLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nRW50ZXJlZDoo
aWQgPAogICAgIEludFBvaW50IGdsb2JhbChnbG9iYWxQb2ludChbZHJhZ2dpbmdJbmZvIGRyYWdn
aW5nTG9jYXRpb25dLCBbc2VsZiB3aW5kb3ddKSk7CiAgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZHJh
Z2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlvbj4oW2Ry
YWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRp
b25GbGFnczpkcmFnZ2luZ0luZm9dKTsKIAotICAgIF9kYXRhLT5fcGFnZS0+cmVzZXREcmFnU2Vz
c2lvbigpOworICAgIF9kYXRhLT5fcGFnZS0+cmVzZXRDdXJyZW50RHJhZ0luZm9ybWF0aW9uKCk7
CiAgICAgX2RhdGEtPl9wYWdlLT5kcmFnRW50ZXJlZChkcmFnRGF0YSwgW1tkcmFnZ2luZ0luZm8g
ZHJhZ2dpbmdQYXN0ZWJvYXJkXSBuYW1lXSk7CiAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbkNv
cHk7CiB9CkBAIC0yMjQ5LDEwICsyMjQ4LDkgQEAgLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5n
VXBkYXRlZDooaWQgPAogICAgIERyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50
LCBnbG9iYWwsIHN0YXRpY19jYXN0PERyYWdPcGVyYXRpb24+KFtkcmFnZ2luZ0luZm8gZHJhZ2dp
bmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJ
bmZvXSk7CiAgICAgX2RhdGEtPl9wYWdlLT5kcmFnVXBkYXRlZChkcmFnRGF0YSwgW1tkcmFnZ2lu
Z0luZm8gZHJhZ2dpbmdQYXN0ZWJvYXJkXSBuYW1lXSk7CiAgICAgCi0gICAgV2ViQ29yZTo6RHJh
Z1Nlc3Npb24gZHJhZ1Nlc3Npb24gPSBfZGF0YS0+X3BhZ2UtPmRyYWdTZXNzaW9uKCk7Ci0gICAg
TlNJbnRlZ2VyIG51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3AgPSBkcmFnU2Vzc2lvbi5udW1iZXJP
Zkl0ZW1zVG9CZUFjY2VwdGVkOworICAgIE5TSW50ZWdlciBudW1iZXJPZlZhbGlkSXRlbXNGb3JE
cm9wID0gX2RhdGEtPl9wYWdlLT5jdXJyZW50RHJhZ051bWJlck9mRmlsZXNUb0JlQWNjZXB0ZWQo
KTsKICAgICBOU0RyYWdnaW5nRm9ybWF0aW9uIGRyYWdnaW5nRm9ybWF0aW9uID0gTlNEcmFnZ2lu
Z0Zvcm1hdGlvbk5vbmU7Ci0gICAgaWYgKGRyYWdTZXNzaW9uLm1vdXNlSXNPdmVyRmlsZUlucHV0
ICYmIG51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3AgPiAwKQorICAgIGlmIChfZGF0YS0+X3BhZ2Ut
PmN1cnJlbnREcmFnSXNPdmVyRmlsZUlucHV0KCkgJiYgbnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJv
cCA+IDApCiAgICAgICAgIGRyYWdnaW5nRm9ybWF0aW9uID0gTlNEcmFnZ2luZ0Zvcm1hdGlvbkxp
c3Q7CiAKICAgICBpZiAoW2RyYWdnaW5nSW5mbyBudW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wXSAh
PSBudW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wKQpAQCAtMjI2MCw3ICsyMjU4LDcgQEAgLSAoTlNE
cmFnT3BlcmF0aW9uKWRyYWdnaW5nVXBkYXRlZDooaWQgPAogICAgIGlmIChbZHJhZ2dpbmdJbmZv
IGRyYWdnaW5nRm9ybWF0aW9uXSAhPSBkcmFnZ2luZ0Zvcm1hdGlvbikKICAgICAgICAgW2RyYWdn
aW5nSW5mbyBzZXREcmFnZ2luZ0Zvcm1hdGlvbjpkcmFnZ2luZ0Zvcm1hdGlvbl07CiAKLSAgICBy
ZXR1cm4gZHJhZ1Nlc3Npb24ub3BlcmF0aW9uOworICAgIHJldHVybiBfZGF0YS0+X3BhZ2UtPmN1
cnJlbnREcmFnT3BlcmF0aW9uKCk7CiB9CiAKIC0gKHZvaWQpZHJhZ2dpbmdFeGl0ZWQ6KGlkIDxO
U0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCkBAIC0yMjY5LDcgKzIyNjcsNyBAQCAtICh2b2lk
KWRyYWdnaW5nRXhpdGVkOihpZCA8TlNEcmFnZ2luZ0luCiAgICAgSW50UG9pbnQgZ2xvYmFsKGds
b2JhbFBvaW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0sIFtzZWxmIHdpbmRvd10p
KTsKICAgICBEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBz
dGF0aWNfY2FzdDxEcmFnT3BlcmF0aW9uPihbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3Bl
cmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10pOwogICAg
IF9kYXRhLT5fcGFnZS0+ZHJhZ0V4aXRlZChkcmFnRGF0YSwgW1tkcmFnZ2luZ0luZm8gZHJhZ2dp
bmdQYXN0ZWJvYXJkXSBuYW1lXSk7Ci0gICAgX2RhdGEtPl9wYWdlLT5yZXNldERyYWdTZXNzaW9u
KCk7CisgICAgX2RhdGEtPl9wYWdlLT5yZXNldEN1cnJlbnREcmFnSW5mb3JtYXRpb24oKTsKIH0K
IAogLSAoQk9PTClwcmVwYXJlRm9yRHJhZ09wZXJhdGlvbjooaWQgPE5TRHJhZ2dpbmdJbmZvPilk
cmFnZ2luZ0luZm8KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAJKHJldmlzaW9uIDE2NzA0MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw2IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0RyYWdDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ1Nlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Vs
ZW1lbnRJdGVyYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KQEAgLTI3NDAsNyArMjczOSw3IEBAIGJv
b2wgV2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQKIHZvaWQgV2ViUGFnZTo6cGVy
Zm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGFjdGlvbiwgV2ViQ29yZTo6RHJhZ0Rh
dGEgZHJhZ0RhdGEpCiB7CiAgICAgaWYgKCFtX3BhZ2UpIHsKLSAgICAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oV2ViQ29yZTo6
RHJhZ1Nlc3Npb24oKSkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnT3BlcmF0aW9uTm9uZSwgZmFsc2UsIDAp
KTsKICAgICAgICAgRGF0YU9iamVjdEd0ayogZGF0YSA9IGNvbnN0X2Nhc3Q8RGF0YU9iamVjdEd0
ayo+KGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKICAgICAgICAgZGF0YS0+ZGVyZWYoKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjc3NiwxOCArMjc3NSwyMSBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZv
cm1EcmFnQ29udHJvbGxlckFjdGlvCiB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxl
ckFjdGlvbih1aW50NjRfdCBhY3Rpb24sIFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9u
LCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3QgZHJhZ2dpbmdTb3Vy
Y2VPcGVyYXRpb25NYXNrLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgdWludDMyX3Qg
ZmxhZ3MsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmIHNhbmRib3hFeHRlbnNp
b25zSGFuZGxlQXJyYXkpCiB7CiAgICAgaWYgKCFtX3BhZ2UpIHsKLSAgICAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oV2ViQ29y
ZTo6RHJhZ1Nlc3Npb24oKSkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnT3BlcmF0aW9uTm9uZSwgZmFsc2Us
IDApKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIERyYWdEYXRhIGRyYWdEYXRhKGRy
YWdTdG9yYWdlTmFtZSwgY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBzdGF0aWNfY2Fz
dDxEcmFnT3BlcmF0aW9uPihkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBzdGF0aWNfY2Fz
dDxEcmFnQXBwbGljYXRpb25GbGFncz4oZmxhZ3MpKTsKKyAgICBEcmFnT3BlcmF0aW9uIHJlc29s
dmVkRHJhZ09wZXJhdGlvbjsKICAgICBzd2l0Y2ggKGFjdGlvbikgewogICAgIGNhc2UgRHJhZ0Nv
bnRyb2xsZXJBY3Rpb25FbnRlcmVkOgotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihtX3BhZ2UtPmRyYWdDb250cm9sbGVy
KCkuZHJhZ0VudGVyZWQoZHJhZ0RhdGEpKSk7CisgICAgICAgIHJlc29sdmVkRHJhZ09wZXJhdGlv
biA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0YSk7CisgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVy
QWN0aW9uKHJlc29sdmVkRHJhZ09wZXJhdGlvbiwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLm1v
dXNlSXNPdmVyRmlsZUlucHV0KCksIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5udW1iZXJPZkl0
ZW1zVG9CZUFjY2VwdGVkKCkpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIERyYWdDb250
cm9sbGVyQWN0aW9uVXBkYXRlZDoKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24obV9wYWdlLT5kcmFnQ29udHJvbGxlcigp
LmRyYWdVcGRhdGVkKGRyYWdEYXRhKSkpOworICAgICAgICByZXNvbHZlZERyYWdPcGVyYXRpb24g
PSBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpOworICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFj
dGlvbihyZXNvbHZlZERyYWdPcGVyYXRpb24sIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5tb3Vz
ZUlzT3ZlckZpbGVJbnB1dCgpLCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkubnVtYmVyT2ZJdGVt
c1RvQmVBY2NlcHRlZCgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKICAgICBjYXNlIERy
YWdDb250cm9sbGVyQWN0aW9uRXhpdGVkOgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24g
MTY3MDUyKQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTQtMDQtMDkgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBs
ZS5jb20+CisKKyAgICAgICAgRWxpbWluYXRlIERyYWdTZXNzaW9uIHN0cnVjdHVyZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxNDY1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZp
ZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgZHJhZ2dpbmdFbnRlcmVkOl0pOgorICAgICAgICAo
LVtXZWJWaWV3IGRyYWdnaW5nVXBkYXRlZDpdKToKKwogMjAxNC0wNC0wOSAgQWxleGV5IFByb3Nr
dXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgc29tZSBkcmFnZ2luZyBm
dW5jdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9u
IDE2NzA0MCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTIzLDcgKzEyMyw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50TG9h
ZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0RyYWdEYXRhLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0RyYWdTZXNzaW9uLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0VkaXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9FdmVudEhhbmRsZXIuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRXhjZXB0aW9uSGFuZGxlcnMuaD4KQEAgLTU5ODAsNyArNTk3OSw3IEBA
IC0gKE5TRHJhZ09wZXJhdGlvbilkcmFnZ2luZ0VudGVyZWQ6KGlkIDwKICAgICBJbnRQb2ludCBj
bGllbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSk7CiAgICAgSW50UG9pbnQgZ2xv
YmFsKGdsb2JhbFBvaW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0sIFtzZWxmIHdp
bmRvd10pKTsKICAgICBEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xv
YmFsLCBzdGF0aWNfY2FzdDxEcmFnT3BlcmF0aW9uPihbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10p
OwotICAgIHJldHVybiBjb3JlKHNlbGYpLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbnRlcmVkKGRy
YWdEYXRhKS5vcGVyYXRpb247CisgICAgcmV0dXJuIGNvcmUoc2VsZiktPmRyYWdDb250cm9sbGVy
KCkuZHJhZ0VudGVyZWQoZHJhZ0RhdGEpOwogfQogCiAtIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dp
bmdVcGRhdGVkOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwpAQCAtNTk5Miw3ICs1
OTkxLDcgQEAgLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nVXBkYXRlZDooaWQgPAogICAgIElu
dFBvaW50IGNsaWVudChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dKTsKICAgICBJbnRQ
b2ludCBnbG9iYWwoZ2xvYmFsUG9pbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSwg
W3NlbGYgd2luZG93XSkpOwogICAgIERyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xp
ZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PERyYWdPcGVyYXRpb24+KFtkcmFnZ2luZ0luZm8gZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dp
bmdJbmZvXSk7Ci0gICAgcmV0dXJuIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ1VwZGF0ZWQo
ZHJhZ0RhdGEpLm9wZXJhdGlvbjsKKyAgICByZXR1cm4gcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5k
cmFnVXBkYXRlZChkcmFnRGF0YSk7CiB9CiAKIC0gKHZvaWQpZHJhZ2dpbmdFeGl0ZWQ6KGlkIDxO
U0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lv
biAxNjcwNTIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMiBAQAorMjAxNC0wNC0wOSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFw
cGxlLmNvbT4KKworICAgICAgICBFbGltaW5hdGUgRHJhZ1Nlc3Npb24gc3RydWN0dXJlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE0NjUKKworICAg
ICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6RHJhZ0VudGVyKToKKyAgICAg
ICAgKFdlYlZpZXc6OkRyYWdPdmVyKToKKwogMjAxNC0wNC0wOSAgQWxleGV5IFByb3NrdXJ5YWtv
diAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgc29tZSBkcmFnZ2luZyBmdW5jdGlv
bnMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAxNjcwNDApCisrKyBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNiBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9EcmFnQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0RhdGEuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL0RyYWdTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0
b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRXZlbnROYW1lcy5oPgpAQCAtNTI0Niw3ICs1MjQ1LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJWaWV3OjpEcmFnRQogICAgIDo6U2NyZWVuVG9DbGllbnQobV92aWV3V2luZG93
LCAoTFBQT0lOVCkmbG9jYWxwdCk7CiAgICAgRHJhZ0RhdGEgZGF0YShwRGF0YU9iamVjdCwgSW50
UG9pbnQobG9jYWxwdC54LCBsb2NhbHB0LnkpLCAKICAgICAgICAgSW50UG9pbnQocHQueCwgcHQu
eSksIGtleVN0YXRlVG9EcmFnT3BlcmF0aW9uKGdyZktleVN0YXRlKSk7Ci0gICAgKnBkd0VmZmVj
dCA9IGRyYWdPcGVyYXRpb25Ub0RyYWdDdXJzb3IobV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRy
YWdFbnRlcmVkKGRhdGEpLm9wZXJhdGlvbik7CisgICAgKnBkd0VmZmVjdCA9IGRyYWdPcGVyYXRp
b25Ub0RyYWdDdXJzb3IobV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbnRlcmVkKGRhdGEp
KTsKIAogICAgIG1fbGFzdERyb3BFZmZlY3QgPSAqcGR3RWZmZWN0OwogICAgIG1fZHJhZ0RhdGEg
PSBwRGF0YU9iamVjdDsKQEAgLTUyNjUsNyArNTI2NCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViVmlldzo6RHJhZ08KICAgICAgICAgOjpTY3JlZW5Ub0NsaWVudChtX3ZpZXdXaW5k
b3csIChMUFBPSU5UKSZsb2NhbHB0KTsKICAgICAgICAgRHJhZ0RhdGEgZGF0YShtX2RyYWdEYXRh
LmdldCgpLCBJbnRQb2ludChsb2NhbHB0LngsIGxvY2FscHQueSksIAogICAgICAgICAgICAgSW50
UG9pbnQocHQueCwgcHQueSksIGtleVN0YXRlVG9EcmFnT3BlcmF0aW9uKGdyZktleVN0YXRlKSk7
Ci0gICAgICAgICpwZHdFZmZlY3QgPSBkcmFnT3BlcmF0aW9uVG9EcmFnQ3Vyc29yKG1fcGFnZS0+
ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnVXBkYXRlZChkYXRhKS5vcGVyYXRpb24pOworICAgICAgICAq
cGR3RWZmZWN0ID0gZHJhZ09wZXJhdGlvblRvRHJhZ0N1cnNvcihtX3BhZ2UtPmRyYWdDb250cm9s
bGVyKCkuZHJhZ1VwZGF0ZWQoZGF0YSkpOwogICAgIH0gZWxzZQogICAgICAgICAqcGR3RWZmZWN0
ID0gRFJPUEVGRkVDVF9OT05FOwogCg==
</data>
<flag name="review"
          id="253352"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>