<?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>75964</bug_id>
          
          <creation_ts>2012-01-10 07:57:36 -0800</creation_ts>
          <short_desc>[Qt][WK2] Fix the build for newer Qt5</short_desc>
          <delta_ts>2012-01-11 10:37:57 -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>New Bugs</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>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Csaba Osztrogonác">ossy</reporter>
          <assigned_to name="Rafael Brandao">rafael.lobo</assigned_to>
          <cc>hausmann</cc>
    
    <cc>jturcotte</cc>
    
    <cc>ossy</cc>
    
    <cc>rafael.lobo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>533074</commentid>
    <comment_count>0</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-01-10 07:57:36 -0800</bug_when>
    <thetext>https://bugreports.qt.nokia.com/browse/QTBUG-22750 
removed QHttp and it causes build error: 
/home/oszi/WebKit/Source/WebKit/qt/WebCoreSupport/InspectorServerQt.cpp:30:23: error: QHttpHeader: No such file or directory
/home/oszi/WebKit/Source/WebKit/qt/WebCoreSupport/InspectorServerQt.cpp:31:30: error: QHttpRequestHeader: No such file or directory
/home/oszi/WebKit/Source/WebKit/qt/WebCoreSupport/InspectorServerQt.cpp:32:31: error: QHttpResponseHeader: No such file or directory
/home/oszi/WebKit/Source/WebKit/qt/Api/qwebpage.cpp:128:30: error: QHttpRequestHeader: No such file or directory

It needs to be fixed with updating Qt5 on friday.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533078</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-01-10 08:03:22 -0800</bug_when>
    <thetext>Rafael, I heard you&apos;re working on this. Is this correct?

Do you have an estimate? Or would you like us to temporarily disable the inspectorserver code for Qt 5 for the time being?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533081</commentid>
    <comment_count>2</comment_count>
    <who name="Rafael Brandao">rafael.lobo</who>
    <bug_when>2012-01-10 08:04:19 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Rafael, I heard you&apos;re working on this. Is this correct?
&gt; 
&gt; Do you have an estimate? Or would you like us to temporarily disable the inspectorserver code for Qt 5 for the time being?

I&apos;m on the way to fix this, I believe it won&apos;t take much time. I&apos;m just moving code from there, but not everything (just the essentials).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533085</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-01-10 08:11:50 -0800</bug_when>
    <thetext>Excellent, thanks :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533255</commentid>
    <comment_count>4</comment_count>
      <attachid>121880</attachid>
    <who name="Rafael Brandao">rafael.lobo</who>
    <bug_when>2012-01-10 11:47:48 -0800</bug_when>
    <thetext>Created attachment 121880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533266</commentid>
    <comment_count>5</comment_count>
      <attachid>121880</attachid>
    <who name="Rafael Brandao">rafael.lobo</who>
    <bug_when>2012-01-10 11:54:08 -0800</bug_when>
    <thetext>Comment on attachment 121880
Patch

I was not sure about where to put this new code, so I&apos;ve put among the API stuff (WebCoreSupport doesn&apos;t fit to these guys). We didn&apos;t need everything from QHttp module that was removed, so I&apos;ve kept only what was essential and did some small changes on it to fit on our style and to not depend on other classes. I was testing this with our current working Qt hash with these classes named differently and it worked. But I&apos;ve also tried to build the new Qt hash but I couldn&apos;t, I&apos;ve got the following error:

In file included from ../../include/QtDeclarative/5.0.0/QtDeclarative/private/qv8_p.h:1:0,
                 from ../../include/QtDeclarative/5.0.0/QtDeclarative/private/../../../../../src/declarative/qml/ftw/qhashedstring_p.h:58,
                 from ../../include/QtDeclarative/5.0.0/QtDeclarative/private/qhashedstring_p.h:1,
                 from ../../include/QtDeclarative/5.0.0/QtDeclarative/private/../../../../../src/declarative/qml/ftw/qfastmetabuilder_p.h:60,
                 from ../../include/QtDeclarative/5.0.0/QtDeclarative/private/qfastmetabuilder_p.h:1,
                 from ../../include/QtDeclarative/5.0.0/QtDeclarative/private/../../../../../src/declarative/qml/qdeclarativescript_p.h:59,
                 from ../../include/QtDeclarative/5.0.0/QtDeclarative/private/../../../../../src/declarative/qml/qdeclarativecustomparser_p.h:58,
                 from ../../include/QtDeclarative/5.0.0/QtDeclarative/private/qdeclarativecustomparser_p.h:1,
                 from qml/qdeclarativelistmodel_p.h:46,
                 from qml/qdeclarativelistmodel_p_p.h:56,
                 from qml/qdeclarativelistmodel.cpp:42:
../../include/QtDeclarative/5.0.0/QtDeclarative/private/../../../../../src/declarative/qml/v8/qv8_p.h:42:24: fatal error: private/v8.h: No such file or directory
compilation terminated.

Ossy could you tell me how did you build (or even better, could you attach your current build script)? I would like to make sure this is working before it lands (or someone else could check it?). I&apos;m in a hurry right now, so I&apos;ll see this tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533712</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-01-11 00:27:03 -0800</bug_when>
    <thetext>CC&apos;ing Jocelyn also, because he was working on moving this code around. I suspect the header parsing may not be needed anymore in the future. It&apos;s rather simple to replace with hand-written code. But for the time being I believe we need this fix to move forward with Qt 5 development (it&apos;s a build fix).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533713</commentid>
    <comment_count>7</comment_count>
      <attachid>121880</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-01-11 00:27:16 -0800</bug_when>
    <thetext>Comment on attachment 121880
Patch

r=me but I&apos;ll place the classes into a namespace when landing to avoid clashes when building against Qt versions that _do_ have these classes (Qt 4 and older Qt 5 versions, like the one we&apos;re currently pinned to).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533725</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-01-11 00:44:15 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 121880 [details])
&gt; I was not sure about where to put this new code, so I&apos;ve put among the API stuff (WebCoreSupport doesn&apos;t fit to these guys). We didn&apos;t need everything from QHttp module that was removed, so I&apos;ve kept only what was essential and did some small changes on it to fit on our style and to not depend on other classes. I was testing this with our current working Qt hash with these classes named differently and it worked. But I&apos;ve also tried to build the new Qt hash but I couldn&apos;t, I&apos;ve got the following error:
&gt; 
&gt; In file included from ../../include/QtDeclarative/5.0.0/QtDeclarative/private/qv8_p.h:1:0,
&gt;                  from ../../include/QtDeclarative/5.0.0/QtDeclarative/private/../../../../../src/declarative/qml/ftw/qhashedstring_p.h:58,
&gt;                  from ../../include/QtDeclarative/5.0.0/QtDeclarative/private/qhashedstring_p.h:1,
&gt;                  from ../../include/QtDeclarative/5.0.0/QtDeclarative/private/../../../../../src/declarative/qml/ftw/qfastmetabuilder_p.h:60,
&gt;                  from ../../include/QtDeclarative/5.0.0/QtDeclarative/private/qfastmetabuilder_p.h:1,
&gt;                  from ../../include/QtDeclarative/5.0.0/QtDeclarative/private/../../../../../src/declarative/qml/qdeclarativescript_p.h:59,
&gt;                  from ../../include/QtDeclarative/5.0.0/QtDeclarative/private/../../../../../src/declarative/qml/qdeclarativecustomparser_p.h:58,
&gt;                  from ../../include/QtDeclarative/5.0.0/QtDeclarative/private/qdeclarativecustomparser_p.h:1,
&gt;                  from qml/qdeclarativelistmodel_p.h:46,
&gt;                  from qml/qdeclarativelistmodel_p_p.h:56,
&gt;                  from qml/qdeclarativelistmodel.cpp:42:
&gt; ../../include/QtDeclarative/5.0.0/QtDeclarative/private/../../../../../src/declarative/qml/v8/qv8_p.h:42:24: fatal error: private/v8.h: No such file or directory
&gt; compilation terminated.
&gt; 
&gt; Ossy could you tell me how did you build (or even better, could you attach your current build script)? I would like to make sure this is working before it lands (or someone else could check it?). I&apos;m in a hurry right now, so I&apos;ll see this tomorrow.

See the qt development list, V8 has been moved out of qtbase and into its own top-level Qt 5 module called qtjsbackend that needs to be built before qtdeclarative.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533732</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-01-11 01:03:08 -0800</bug_when>
    <thetext>Committed r104680: &lt;http://trac.webkit.org/changeset/104680&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534019</commentid>
    <comment_count>10</comment_count>
    <who name="Rafael Brandao">rafael.lobo</who>
    <bug_when>2012-01-11 10:37:57 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 121880 [details])
&gt; r=me but I&apos;ll place the classes into a namespace when landing to avoid clashes when building against Qt versions that _do_ have these classes (Qt 4 and older Qt 5 versions, like the one we&apos;re currently pinned to).

Ok, thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121880</attachid>
            <date>2012-01-10 11:47:48 -0800</date>
            <delta_ts>2012-01-11 00:27:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75964-20120110164746.patch</filename>
            <type>text/plain</type>
            <size>15571</size>
            <attacher name="Rafael Brandao">rafael.lobo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0NTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ2ZjQyNDg2NzY5MWY4ZDA5
NGNhOGU1MDQxZmRlNTVkOGJjZDZkYTYuLjIxYmU3ZmJlYzFhMjQyN2FlNjhkNGYyZTAwYjNhNWY0
ZTc3MDU5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDEtMTAgIFJhZmFlbCBC
cmFuZGFvICA8cmFmYWVsLmxvYm9Ab3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUXRdW1dLMl0g
Rml4IHRoZSBidWlsZCBmb3IgbmV3ZXIgUXQ1CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NTk2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViS2l0LnByaTogQWRkZWQgdGhlIG5ldyBmaWxlcyB0byB0
aGUgYnVpbGRzeXN0ZW0uCisKIDIwMTItMDEtMDYgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gU29ydCB0aGUgcmVzb3VyY2VzIG9mIFdlYktp
dC54Y29kZXByb2oKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggOWU3MDU1Y2RjYzU5YzNiMjBmMjVjZDcyMjUx
MGNjY2JjZjQ2YTg2Yi4uZGMwM2Y4MDRiMWVmNGM0YjM2MTE4MzIyM2EwZmYxMzJhZjU4Yjc4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxMi0wMS0xMCAgUmFmYWVsIEJyYW5k
YW8gIDxyYWZhZWwubG9ib0BvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBGaXgg
dGhlIGJ1aWxkIGZvciBuZXdlciBRdDUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc1OTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkZWQgUUh0dHBIZWFkZXIsIFFIdHRwUmVzcG9uc2VIZWFkZXIgYW5k
IFFIdHRwUmVxdWVzdEhlYWRlcgorICAgICAgICB0aGF0IHdlcmUgcmVtb3ZlZCBmcm9tIFF0LiBU
aGV5IGFyZSBub3cga2VwdCB1bmRlciBhIHByaXZhdGUgaGVhZGVyCisgICAgICAgIGFuZCBvbmx5
IHRoZSByZWxldmFudCBjb2RlIGlzIHByZXNlbnQuCisKKyAgICAgICAgKiBBcGkvcWh0dHBoZWFk
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFFIdHRwSGVhZGVyOjpRSHR0cEhlYWRlcik6CisgICAg
ICAgIChRSHR0cEhlYWRlcjo6flFIdHRwSGVhZGVyKToKKyAgICAgICAgKFFIdHRwSGVhZGVyOjpw
YXJzZSk6CisgICAgICAgIChRSHR0cEhlYWRlcjo6dmFsdWUpOgorICAgICAgICAoUUh0dHBIZWFk
ZXI6Omhhc0tleSk6CisgICAgICAgIChRSHR0cEhlYWRlcjo6c2V0VmFsdWUpOgorICAgICAgICAo
UUh0dHBIZWFkZXI6OmFkZFZhbHVlKToKKyAgICAgICAgKFFIdHRwSGVhZGVyOjpwYXJzZUxpbmUp
OgorICAgICAgICAoUUh0dHBIZWFkZXI6OnRvU3RyaW5nKToKKyAgICAgICAgKFFIdHRwSGVhZGVy
OjpoYXNDb250ZW50TGVuZ3RoKToKKyAgICAgICAgKFFIdHRwSGVhZGVyOjpjb250ZW50TGVuZ3Ro
KToKKyAgICAgICAgKFFIdHRwSGVhZGVyOjpzZXRDb250ZW50TGVuZ3RoKToKKyAgICAgICAgKFFI
dHRwSGVhZGVyOjpoYXNDb250ZW50VHlwZSk6CisgICAgICAgIChRSHR0cEhlYWRlcjo6Y29udGVu
dFR5cGUpOgorICAgICAgICAoUUh0dHBIZWFkZXI6OnNldENvbnRlbnRUeXBlKToKKyAgICAgICAg
KFFIdHRwUmVzcG9uc2VIZWFkZXI6OlFIdHRwUmVzcG9uc2VIZWFkZXIpOgorICAgICAgICAoUUh0
dHBSZXNwb25zZUhlYWRlcjo6cGFyc2VMaW5lKToKKyAgICAgICAgKFFIdHRwUmVzcG9uc2VIZWFk
ZXI6OnRvU3RyaW5nKToKKyAgICAgICAgKFFIdHRwUmVxdWVzdEhlYWRlcjo6UUh0dHBSZXF1ZXN0
SGVhZGVyKToKKyAgICAgICAgKFFIdHRwUmVxdWVzdEhlYWRlcjo6cGFyc2VMaW5lKToKKyAgICAg
ICAgKFFIdHRwUmVxdWVzdEhlYWRlcjo6dG9TdHJpbmcpOgorICAgICAgICAqIEFwaS9xaHR0cGhl
YWRlcl9wLmg6IEFkZGVkLgorICAgICAgICAoUUh0dHBIZWFkZXI6OmlzVmFsaWQpOgorICAgICAg
ICAoUUh0dHBIZWFkZXI6OnNldFZhbGlkKToKKyAgICAgICAgKFFIdHRwUmVzcG9uc2VIZWFkZXI6
OnN0YXR1c0NvZGUpOgorICAgICAgICAoUUh0dHBSZXNwb25zZUhlYWRlcjo6cmVhc29uUGhyYXNl
KToKKyAgICAgICAgKFFIdHRwUmVzcG9uc2VIZWFkZXI6Om1ham9yVmVyc2lvbik6CisgICAgICAg
IChRSHR0cFJlc3BvbnNlSGVhZGVyOjptaW5vclZlcnNpb24pOgorICAgICAgICAoUUh0dHBSZXF1
ZXN0SGVhZGVyOjptZXRob2QpOgorICAgICAgICAoUUh0dHBSZXF1ZXN0SGVhZGVyOjpwYXRoKToK
KyAgICAgICAgKFFIdHRwUmVxdWVzdEhlYWRlcjo6bWFqb3JWZXJzaW9uKToKKyAgICAgICAgKFFI
dHRwUmVxdWVzdEhlYWRlcjo6bWlub3JWZXJzaW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9JbnNwZWN0b3JTZXJ2ZXJRdC5jcHA6CisKIDIwMTItMDEtMDggIFNoZXJpZmYgQm90ICA8d2Vi
a2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIxMDQ0MjEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC5wcmkgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC5wcmkKaW5kZXggY2ExYTBmZGFmZTMzNzMwNTljYzhiMzljODQwNmUy
NzFjNzRhOWQ0Yy4uMDVlYjA5YTg3OGY1M2MxYzM5MTU2MzA0YWMzZDkwN2Q2MGNkM2U1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0LnByaQpAQCAtMTMsNyArMTMsOCBAQCBTT1VSQ0VTICs9IFwKICAgICAkJFBXRC9xdC9BcGkv
cXdlYnNjcmlwdHdvcmxkLmNwcCBcCiAgICAgJCRQV0QvcXQvQXBpL3F3ZWJkYXRhYmFzZS5jcHAg
XAogICAgICQkUFdEL3F0L0FwaS9xd2ViaW5zcGVjdG9yLmNwcCBcCi0gICAgJCRQV0QvcXQvQXBp
L3F3ZWJraXR2ZXJzaW9uLmNwcAorICAgICQkUFdEL3F0L0FwaS9xd2Via2l0dmVyc2lvbi5jcHAg
XAorICAgICQkUFdEL3F0L0FwaS9xaHR0cGhlYWRlci5jcHAKIAogSEVBREVSUyArPSBcCiAgICAg
JCRQV0QvcXQvQXBpL3F3ZWJmcmFtZS5oIFwKQEAgLTMyLDUgKzMzLDYgQEAgSEVBREVSUyArPSBc
CiAgICAgJCRQV0QvcXQvQXBpL3F3ZWJoaXN0b3J5LmggXAogICAgICQkUFdEL3F0L0FwaS9xd2Vi
aW5zcGVjdG9yLmggXAogICAgICQkUFdEL3F0L0FwaS9xd2Via2l0dmVyc2lvbi5oIFwKLSAgICAk
JFBXRC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFiYXNlX3AuaAorICAgICQkUFdEL3F0L0FwaS9xd2Vi
cGx1Z2luZGF0YWJhc2VfcC5oIFwKKyAgICAkJFBXRC9xdC9BcGkvcWh0dHBoZWFkZXJfcC5oCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3FodHRwaGVhZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvcXQvQXBpL3FodHRwaGVhZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjQwMGQ3ODk1OWVi
NjA4Y2Q0NjAxZDUwM2FmYzZhZTcwZDNhNTllCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9xdC9BcGkvcWh0dHBoZWFkZXIuY3BwCkBAIC0wLDAgKzEsMjcxIEBACisvKgorICAgIENv
cHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykKKworICAgIFRoZXNlIHdlcmUgcGFydCBvZiB0aGUgUXROZXR3b3JrIG1vZHVsZSBvZiB0
aGUgUXQgVG9vbGtpdC4KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAicWh0dHBo
ZWFkZXJfcC5oIgorCitzdGF0aWMgUVN0cmluZyBjb250ZW50TGVuZ3RoU3RyaW5nID0gUUxhdGlu
MVN0cmluZygiY29udGVudC1sZW5ndGgiKTsKK3N0YXRpYyBRU3RyaW5nIGNvbnRlbnRUeXBlU3Ry
aW5nID0gUUxhdGluMVN0cmluZygiY29udGVudC10eXBlIik7CisKK1FIdHRwSGVhZGVyOjpRSHR0
cEhlYWRlcigpCit7CisgICAgc2V0VmFsaWQodHJ1ZSk7Cit9CisKK1FIdHRwSGVhZGVyOjpRSHR0
cEhlYWRlcihjb25zdCBRU3RyaW5nJiBzdHIpCit7CisgICAgc2V0VmFsaWQodHJ1ZSk7CisgICAg
cGFyc2Uoc3RyKTsKK30KKworUUh0dHBIZWFkZXI6On5RSHR0cEhlYWRlcigpCit7Cit9CisKK2Jv
b2wgUUh0dHBIZWFkZXI6OnBhcnNlKGNvbnN0IFFTdHJpbmcmIHN0cikKK3sKKyAgICBRU3RyaW5n
TGlzdCBsc3Q7CisgICAgaW50IHBvcyA9IHN0ci5pbmRleE9mKFFMYXRpbjFDaGFyKCdcbicpKTsK
KyAgICBpZiAocG9zID4gMCAmJiBzdHIuYXQocG9zIC0gMSkgPT0gUUxhdGluMUNoYXIoJ1xyJykp
CisgICAgICAgIGxzdCA9IHN0ci50cmltbWVkKCkuc3BsaXQoUUxhdGluMVN0cmluZygiXHJcbiIp
KTsKKyAgICBlbHNlCisgICAgICAgIGxzdCA9IHN0ci50cmltbWVkKCkuc3BsaXQoUUxhdGluMVN0
cmluZygiXG4iKSk7CisgICAgbHN0LnJlbW92ZUFsbChRU3RyaW5nKCkpOworCisgICAgaWYgKGxz
dC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgUVN0cmluZ0xpc3QgbGlu
ZXM7CisgICAgUVN0cmluZ0xpc3Q6Okl0ZXJhdG9yIGl0ID0gbHN0LmJlZ2luKCk7CisgICAgZm9y
ICg7IGl0ICE9IGxzdC5lbmQoKTsgKytpdCkgeworICAgICAgICBpZiAoISgqaXQpLmlzRW1wdHko
KSkgeworICAgICAgICAgICAgaWYgKCgqaXQpWzBdLmlzU3BhY2UoKSkgeworICAgICAgICAgICAg
ICAgIGlmICghbGluZXMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGxpbmVzLmxh
c3QoKSArPSBRTGF0aW4xQ2hhcignICcpOworICAgICAgICAgICAgICAgICAgICBsaW5lcy5sYXN0
KCkgKz0gKCppdCkudHJpbW1lZCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgoKml0KSk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBpbnQgbnVtYmVyID0gMDsKKyAgICBmb3IgKGl0ID0gbGluZXMuYmVnaW4oKTsg
aXQgIT0gbGluZXMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgaWYgKCFwYXJzZUxpbmUoKml0LCBu
dW1iZXIrKykpIHsKKyAgICAgICAgICAgIHNldFZhbGlkKGZhbHNlKTsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUVN0
cmluZyBRSHR0cEhlYWRlcjo6dmFsdWUoY29uc3QgUVN0cmluZyYga2V5KSBjb25zdAoreworICAg
IFFTdHJpbmcgbG93ZXJjYXNlS2V5ID0ga2V5LnRvTG93ZXIoKTsKKyAgICBRTGlzdDxRUGFpcjxR
U3RyaW5nLCBRU3RyaW5nPiA+OjpDb25zdEl0ZXJhdG9yIGl0ID0gbV92YWx1ZXMuY29uc3RCZWdp
bigpOworICAgIHdoaWxlIChpdCAhPSBtX3ZhbHVlcy5jb25zdEVuZCgpKSB7CisgICAgICAgIGlm
ICgoKml0KS5maXJzdC50b0xvd2VyKCkgPT0gbG93ZXJjYXNlS2V5KQorICAgICAgICAgICAgcmV0
dXJuICgqaXQpLnNlY29uZDsKKyAgICAgICAgKytpdDsKKyAgICB9CisgICAgcmV0dXJuIFFTdHJp
bmcoKTsKK30KKworYm9vbCBRSHR0cEhlYWRlcjo6aGFzS2V5KGNvbnN0IFFTdHJpbmcmIGtleSkg
Y29uc3QKK3sKKyAgICBRU3RyaW5nIGxvd2VyY2FzZUtleSA9IGtleS50b0xvd2VyKCk7CisgICAg
UUxpc3Q8UVBhaXI8UVN0cmluZywgUVN0cmluZz4gPjo6Q29uc3RJdGVyYXRvciBpdCA9IG1fdmFs
dWVzLmNvbnN0QmVnaW4oKTsKKyAgICB3aGlsZSAoaXQgIT0gbV92YWx1ZXMuY29uc3RFbmQoKSkg
eworICAgICAgICBpZiAoKCppdCkuZmlyc3QudG9Mb3dlcigpID09IGxvd2VyY2FzZUtleSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICArK2l0OworICAgIH0KKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK3ZvaWQgUUh0dHBIZWFkZXI6OnNldFZhbHVlKGNvbnN0IFFTdHJpbmcmIGtl
eSwgY29uc3QgUVN0cmluZyYgdmFsdWUpCit7CisgICAgUVN0cmluZyBsb3dlcmNhc2VLZXkgPSBr
ZXkudG9Mb3dlcigpOworICAgIFFMaXN0PFFQYWlyPFFTdHJpbmcsIFFTdHJpbmc+ID46Okl0ZXJh
dG9yIGl0ID0gbV92YWx1ZXMuYmVnaW4oKTsKKyAgICB3aGlsZSAoaXQgIT0gbV92YWx1ZXMuZW5k
KCkpIHsKKyAgICAgICAgaWYgKCgqaXQpLmZpcnN0LnRvTG93ZXIoKSA9PSBsb3dlcmNhc2VLZXkp
IHsKKyAgICAgICAgICAgICgqaXQpLnNlY29uZCA9IHZhbHVlOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgICsraXQ7CisgICAgfQorICAgIGFkZFZhbHVlKGtleSwgdmFs
dWUpOworfQorCit2b2lkIFFIdHRwSGVhZGVyOjphZGRWYWx1ZShjb25zdCBRU3RyaW5nJiBrZXks
IGNvbnN0IFFTdHJpbmcmIHZhbHVlKQoreworICAgIG1fdmFsdWVzLmFwcGVuZChxTWFrZVBhaXIo
a2V5LCB2YWx1ZSkpOworfQorCitib29sIFFIdHRwSGVhZGVyOjpwYXJzZUxpbmUoY29uc3QgUVN0
cmluZyYgbGluZSwgaW50KQoreworICAgIGludCBpID0gbGluZS5pbmRleE9mKFFMYXRpbjFDaGFy
KCc6JykpOworICAgIGlmIChpID09IC0xKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBh
ZGRWYWx1ZShsaW5lLmxlZnQoaSkudHJpbW1lZCgpLCBsaW5lLm1pZChpICsgMSkudHJpbW1lZCgp
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUVN0cmluZyBRSHR0cEhlYWRlcjo6dG9TdHJpbmco
KSBjb25zdAoreworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gUUxhdGluMVN0
cmluZygiIik7CisKKyAgICBRU3RyaW5nIHJldCA9IFFMYXRpbjFTdHJpbmcoIiIpOworCisgICAg
UUxpc3Q8UVBhaXI8UVN0cmluZywgUVN0cmluZz4gPjo6Q29uc3RJdGVyYXRvciBpdCA9IG1fdmFs
dWVzLmNvbnN0QmVnaW4oKTsKKyAgICB3aGlsZSAoaXQgIT0gbV92YWx1ZXMuY29uc3RFbmQoKSkg
eworICAgICAgICByZXQgKz0gKCppdCkuZmlyc3QgKyBRTGF0aW4xU3RyaW5nKCI6ICIpICsgKCpp
dCkuc2Vjb25kICsgUUxhdGluMVN0cmluZygiXHJcbiIpOworICAgICAgICArK2l0OworICAgIH0K
KyAgICByZXR1cm4gcmV0OworfQorCitib29sIFFIdHRwSGVhZGVyOjpoYXNDb250ZW50TGVuZ3Ro
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gaGFzS2V5KGNvbnRlbnRMZW5ndGhTdHJpbmcpOworfQor
Cit1aW50IFFIdHRwSGVhZGVyOjpjb250ZW50TGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
dmFsdWUoY29udGVudExlbmd0aFN0cmluZykudG9VSW50KCk7Cit9CisKK3ZvaWQgUUh0dHBIZWFk
ZXI6OnNldENvbnRlbnRMZW5ndGgoaW50IGxlbikKK3sKKyAgICBzZXRWYWx1ZShjb250ZW50TGVu
Z3RoU3RyaW5nLCBRU3RyaW5nOjpudW1iZXIobGVuKSk7Cit9CisKK2Jvb2wgUUh0dHBIZWFkZXI6
Omhhc0NvbnRlbnRUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaGFzS2V5KGNvbnRlbnRUeXBl
U3RyaW5nKTsKK30KKworUVN0cmluZyBRSHR0cEhlYWRlcjo6Y29udGVudFR5cGUoKSBjb25zdAor
eworICAgIFFTdHJpbmcgdHlwZSA9IHZhbHVlKGNvbnRlbnRUeXBlU3RyaW5nKTsKKyAgICBpZiAo
dHlwZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBRU3RyaW5nKCk7CisKKyAgICBpbnQgcG9z
ID0gdHlwZS5pbmRleE9mKFFMYXRpbjFDaGFyKCc7JykpOworICAgIGlmIChwb3MgPT0gLTEpCisg
ICAgICAgIHJldHVybiB0eXBlOworCisgICAgcmV0dXJuIHR5cGUubGVmdChwb3MpLnRyaW1tZWQo
KTsKK30KKwordm9pZCBRSHR0cEhlYWRlcjo6c2V0Q29udGVudFR5cGUoY29uc3QgUVN0cmluZyAm
dHlwZSkKK3sKKyAgICBzZXRWYWx1ZShjb250ZW50VHlwZVN0cmluZywgdHlwZSk7Cit9CisKK1FI
dHRwUmVzcG9uc2VIZWFkZXI6OlFIdHRwUmVzcG9uc2VIZWFkZXIoaW50IGNvZGUsIGNvbnN0IFFT
dHJpbmcgJnRleHQsIGludCBtYWpvclZlciwgaW50IG1pbm9yVmVyKQorICAgIDogUUh0dHBIZWFk
ZXIoKQorICAgICwgbV9zdGF0dXNDb2RlKGNvZGUpCisgICAgLCBtX3JlYXNvblBocmFzZSh0ZXh0
KQorICAgICwgbV9tYWpvclZlcnNpb24obWFqb3JWZXIpCisgICAgLCBtX21pbm9yVmVyc2lvbiht
aW5vclZlcikKK3sKK30KKworYm9vbCBRSHR0cFJlc3BvbnNlSGVhZGVyOjpwYXJzZUxpbmUoY29u
c3QgUVN0cmluZyYgbGluZSwgaW50IG51bWJlcikKK3sKKyAgICBpZiAobnVtYmVyKQorICAgICAg
ICByZXR1cm4gUUh0dHBIZWFkZXI6OnBhcnNlTGluZShsaW5lLCBudW1iZXIpOworCisgICAgUVN0
cmluZyBsID0gbGluZS5zaW1wbGlmaWVkKCk7CisgICAgaWYgKGwubGVuZ3RoKCkgPCAxMCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGwubGVmdCg1KSA9PSBRTGF0aW4xU3RyaW5n
KCJIVFRQLyIpICYmIGxbNV0uaXNEaWdpdCgpICYmIGxbNl0gPT0gUUxhdGluMUNoYXIoJy4nKQor
ICAgICAgICAgICAgJiYgbFs3XS5pc0RpZ2l0KCkgJiYgbFs4XSA9PSBRTGF0aW4xQ2hhcignICcp
ICYmIGxbOV0uaXNEaWdpdCgpKSB7CisgICAgICAgIG1fbWFqb3JWZXJzaW9uID0gbFs1XS50b0xh
dGluMSgpIC0gJzAnOworICAgICAgICBtX21pbm9yVmVyc2lvbiA9IGxbN10udG9MYXRpbjEoKSAt
ICcwJzsKKworICAgICAgICBpbnQgcG9zID0gbC5pbmRleE9mKFFMYXRpbjFDaGFyKCcgJyksIDkp
OworICAgICAgICBpZiAocG9zICE9IC0xKSB7CisgICAgICAgICAgICBtX3JlYXNvblBocmFzZSA9
IGwubWlkKHBvcyArIDEpOworICAgICAgICAgICAgbV9zdGF0dXNDb2RlID0gbC5taWQoOSwgcG9z
IC0gOSkudG9JbnQoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fc3RhdHVzQ29k
ZSA9IGwubWlkKDkpLnRvSW50KCk7CisgICAgICAgICAgICBtX3JlYXNvblBocmFzZS5jbGVhcigp
OworICAgICAgICB9CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJl
dHVybiB0cnVlOworfQorCitRU3RyaW5nIFFIdHRwUmVzcG9uc2VIZWFkZXI6OnRvU3RyaW5nKCkg
Y29uc3QKK3sKKyAgICBzdGF0aWMgUVN0cmluZyByZXQoUUxhdGluMVN0cmluZygiSFRUUC8lMS4l
MiAlMyAlNFxyXG4lNVxyXG4iKSk7CisgICAgcmV0dXJuIHJldC5hcmcobV9tYWpvclZlcnNpb24p
LmFyZyhtX21pbm9yVmVyc2lvbikuYXJnKG1fc3RhdHVzQ29kZSkuYXJnKG1fcmVhc29uUGhyYXNl
KS5hcmcoUUh0dHBIZWFkZXI6OnRvU3RyaW5nKCkpOworfQorCitRSHR0cFJlcXVlc3RIZWFkZXI6
OlFIdHRwUmVxdWVzdEhlYWRlcigpCisgICAgOiBRSHR0cEhlYWRlcigpCit7CisgICAgc2V0VmFs
aWQoZmFsc2UpOworfQorCitRSHR0cFJlcXVlc3RIZWFkZXI6OlFIdHRwUmVxdWVzdEhlYWRlcihj
b25zdCBRU3RyaW5nJiBzdHIpCit7CisgICAgcGFyc2Uoc3RyKTsKK30KKworYm9vbCBRSHR0cFJl
cXVlc3RIZWFkZXI6OnBhcnNlTGluZShjb25zdCBRU3RyaW5nJiBsaW5lLCBpbnQgbnVtYmVyKQor
eworICAgIGlmIChudW1iZXIpCisgICAgICAgIHJldHVybiBRSHR0cEhlYWRlcjo6cGFyc2VMaW5l
KGxpbmUsIG51bWJlcik7CisKKyAgICBRU3RyaW5nTGlzdCBsc3QgPSBsaW5lLnNpbXBsaWZpZWQo
KS5zcGxpdChRTGF0aW4xU3RyaW5nKCIgIikpOworICAgIGlmIChsc3QuY291bnQoKSA+IDApIHsK
KyAgICAgICAgbV9tZXRob2QgPSBsc3RbMF07CisgICAgICAgIGlmIChsc3QuY291bnQoKSA+IDEp
IHsKKyAgICAgICAgICAgIG1fcGF0aCA9IGxzdFsxXTsKKyAgICAgICAgICAgIGlmIChsc3QuY291
bnQoKSA+IDIpIHsKKyAgICAgICAgICAgICAgICBRU3RyaW5nIHYgPSBsc3RbMl07CisgICAgICAg
ICAgICAgICAgaWYgKHYubGVuZ3RoKCkgPj0gOCAmJiB2LmxlZnQoNSkgPT0gUUxhdGluMVN0cmlu
ZygiSFRUUC8iKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgdls1XS5pc0RpZ2l0KCkgJiYg
dls2XSA9PSBRTGF0aW4xQ2hhcignLicpICYmIHZbN10uaXNEaWdpdCgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIG1fbWFqb3JWZXJzaW9uID0gdls1XS50b0xhdGluMSgpIC0gJzAnOworICAgICAg
ICAgICAgICAgICAgICBtX21pbm9yVmVyc2lvbiA9IHZbN10udG9MYXRpbjEoKSAtICcwJzsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitRU3Ry
aW5nIFFIdHRwUmVxdWVzdEhlYWRlcjo6dG9TdHJpbmcoKSBjb25zdAoreworICAgIHN0YXRpYyBR
U3RyaW5nIGZpcnN0KFFMYXRpbjFTdHJpbmcoIiUxICUyIikpOworICAgIHN0YXRpYyBRU3RyaW5n
IGxhc3QoUUxhdGluMVN0cmluZygiIEhUVFAvJTMuJTRcclxuJTVcclxuIikpOworICAgIHJldHVy
biBmaXJzdC5hcmcobV9tZXRob2QpLmFyZyhtX3BhdGgpICsgbGFzdC5hcmcobV9tYWpvclZlcnNp
b24pLmFyZyhtX21pbm9yVmVyc2lvbikuYXJnKFFIdHRwSGVhZGVyOjp0b1N0cmluZygpKTsKK30K
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcWh0dHBoZWFkZXJfcC5oIGIvU291
cmNlL1dlYktpdC9xdC9BcGkvcWh0dHBoZWFkZXJfcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhZTc5NDNmOGJi
YjRlMGI4MjUyMjRlYzYyMTQ1NGNhZjM1OTEyZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3F0L0FwaS9xaHR0cGhlYWRlcl9wLmgKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgICAg
Q29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQorCisgICAgVGhlc2Ugd2VyZSBwYXJ0IG9mIHRoZSBRdE5ldHdvcmsgbW9kdWxlIG9m
IHRoZSBRdCBUb29sa2l0LgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgcWh0dHBoZWFkZXJfcF9oCisjZGVmaW5lIHFo
dHRwaGVhZGVyX3BfaAorCisjaW5jbHVkZSA8UVBhaXI+CisjaW5jbHVkZSA8UVN0cmluZz4KKyNp
bmNsdWRlIDxRU3RyaW5nTGlzdD4KKworY2xhc3MgUUh0dHBIZWFkZXIgeworcHVibGljOgorICAg
IFFIdHRwSGVhZGVyKCk7CisgICAgUUh0dHBIZWFkZXIoY29uc3QgUVN0cmluZyYpOworICAgIHZp
cnR1YWwgflFIdHRwSGVhZGVyKCk7CisKKyAgICB2b2lkIHNldFZhbHVlKGNvbnN0IFFTdHJpbmcm
IGtleSwgY29uc3QgUVN0cmluZyYgdmFsdWUpOworICAgIHZvaWQgYWRkVmFsdWUoY29uc3QgUVN0
cmluZyYga2V5LCBjb25zdCBRU3RyaW5nJiB2YWx1ZSk7CisgICAgUVN0cmluZyB2YWx1ZShjb25z
dCBRU3RyaW5nJiBrZXkpIGNvbnN0OworICAgIGJvb2wgaGFzS2V5KGNvbnN0IFFTdHJpbmcmKSBj
b25zdDsKKworICAgIC8vICMjIyBRdCA1OiBjaGFuZ2UgdG8gcWludDY0CisgICAgYm9vbCBoYXND
b250ZW50TGVuZ3RoKCkgY29uc3Q7CisgICAgdWludCBjb250ZW50TGVuZ3RoKCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXRDb250ZW50TGVuZ3RoKGludCk7CisKKyAgICBib29sIGhhc0NvbnRlbnRUeXBl
KCkgY29uc3Q7CisgICAgUVN0cmluZyBjb250ZW50VHlwZSgpIGNvbnN0OworICAgIHZvaWQgc2V0
Q29udGVudFR5cGUoY29uc3QgUVN0cmluZyYpOworCisgICAgdmlydHVhbCBRU3RyaW5nIHRvU3Ry
aW5nKCkgY29uc3Q7CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV92YWxpZDsg
fQorCisgICAgdmlydHVhbCBpbnQgbWFqb3JWZXJzaW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgaW50IG1pbm9yVmVyc2lvbigpIGNvbnN0ID0gMDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1
YWwgYm9vbCBwYXJzZUxpbmUoY29uc3QgUVN0cmluZyYgbGluZSwgaW50IG51bWJlcik7CisgICAg
Ym9vbCBwYXJzZShjb25zdCBRU3RyaW5nJik7CisgICAgdm9pZCBzZXRWYWxpZChib29sIHYpIHsg
bV92YWxpZCA9IHY7IH0KKworcHJpdmF0ZToKKyAgICBib29sIG1fdmFsaWQ7CisgICAgUUxpc3Q8
UVBhaXI8UVN0cmluZywgUVN0cmluZz4gPiBtX3ZhbHVlczsKK307CisKK2NsYXNzIFFIdHRwUmVz
cG9uc2VIZWFkZXIgOiBwdWJsaWMgUUh0dHBIZWFkZXIgeworcHVibGljOgorICAgIFFIdHRwUmVz
cG9uc2VIZWFkZXIoaW50IGNvZGUsIGNvbnN0IFFTdHJpbmcmIHRleHQgPSBRU3RyaW5nKCksIGlu
dCBtYWpvclZlciA9IDEsIGludCBtaW5vclZlciA9IDEpOworCisgICAgaW50IHN0YXR1c0NvZGUo
KSBjb25zdCB7IHJldHVybiBtX3N0YXR1c0NvZGU7IH0KKyAgICBRU3RyaW5nIHJlYXNvblBocmFz
ZSgpIGNvbnN0IHtyZXR1cm4gbV9yZWFzb25QaHJhc2U7IH0KKyAgICBpbnQgbWFqb3JWZXJzaW9u
KCkgY29uc3QgeyByZXR1cm4gbV9tYWpvclZlcnNpb247IH0KKyAgICBpbnQgbWlub3JWZXJzaW9u
KCkgY29uc3QgeyByZXR1cm4gbV9taW5vclZlcnNpb247IH0KKworICAgIFFTdHJpbmcgdG9TdHJp
bmcoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIGJvb2wgcGFyc2VMaW5lKGNvbnN0IFFTdHJp
bmcmIGxpbmUsIGludCBudW1iZXIpOworCitwcml2YXRlOgorICAgIGludCBtX3N0YXR1c0NvZGU7
CisgICAgUVN0cmluZyBtX3JlYXNvblBocmFzZTsKKyAgICBpbnQgbV9tYWpvclZlcnNpb247Cisg
ICAgaW50IG1fbWlub3JWZXJzaW9uOworfTsKKworY2xhc3MgUUh0dHBSZXF1ZXN0SGVhZGVyIDog
cHVibGljIFFIdHRwSGVhZGVyIHsKK3B1YmxpYzoKKyAgICBRSHR0cFJlcXVlc3RIZWFkZXIoKTsK
KyAgICBRSHR0cFJlcXVlc3RIZWFkZXIoY29uc3QgUVN0cmluZyYpOworCisgICAgUVN0cmluZyBt
ZXRob2QoKSBjb25zdCB7IHJldHVybiBtX21ldGhvZDsgfQorICAgIFFTdHJpbmcgcGF0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGF0aDsgfQorICAgIGludCBtYWpvclZlcnNpb24oKSBjb25zdCB7IHJl
dHVybiBtX21ham9yVmVyc2lvbjsgfQorICAgIGludCBtaW5vclZlcnNpb24oKSBjb25zdCB7IHJl
dHVybiBtX21pbm9yVmVyc2lvbjsgfQorCisgICAgUVN0cmluZyB0b1N0cmluZygpIGNvbnN0Owor
Citwcm90ZWN0ZWQ6CisgICAgYm9vbCBwYXJzZUxpbmUoY29uc3QgUVN0cmluZyYgbGluZSwgaW50
IG51bWJlcik7CisKK3ByaXZhdGU6CisgICAgUVN0cmluZyBtX21ldGhvZDsKKyAgICBRU3RyaW5n
IG1fcGF0aDsKKyAgICBpbnQgbV9tYWpvclZlcnNpb247CisgICAgaW50IG1fbWlub3JWZXJzaW9u
OworfTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0luc3BlY3RvclNlcnZlclF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvSW5zcGVjdG9yU2VydmVyUXQuY3BwCmluZGV4IGY1MDJmMDFhNWYxNzBiNDU1YWM5MTBiMGI1
YzBkYjZhYTVjOTI0MWUuLmJkNTdhMWEyOGY5MjIyMGM5NmVjNGVhOTUzZjc3MTE3ZWMxNTYxNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yU2Vy
dmVyUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9y
U2VydmVyUXQuY3BwCkBAIC0yNCwxMiArMjQsMTAgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiTUQ1LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUg
InFodHRwaGVhZGVyX3AuaCIKICNpbmNsdWRlICJxd2VicGFnZS5oIgogI2luY2x1ZGUgInF3ZWJw
YWdlX3AuaCIKICNpbmNsdWRlIDxRRmlsZT4KLSNpbmNsdWRlIDxRSHR0cEhlYWRlcj4KLSNpbmNs
dWRlIDxRSHR0cFJlcXVlc3RIZWFkZXI+Ci0jaW5jbHVkZSA8UUh0dHBSZXNwb25zZUhlYWRlcj4K
ICNpbmNsdWRlIDxRU3RyaW5nPgogI2luY2x1ZGUgPFFTdHJpbmdMaXN0PgogI2luY2x1ZGUgPFFU
Y3BTZXJ2ZXI+Cg==
</data>
<flag name="review"
          id="122521"
          type_id="1"
          status="+"
          setter="hausmann"
    />
    <flag name="commit-queue"
          id="122525"
          type_id="3"
          status="-"
          setter="hausmann"
    />
          </attachment>
      

    </bug>

</bugzilla>