<?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>35762</bug_id>
          
          <creation_ts>2010-03-04 12:04:46 -0800</creation_ts>
          <short_desc>New port: EFL; adding files to WebCore/plugins/efl (patch 2/2)</short_desc>
          <delta_ts>2010-04-13 06:42:23 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Leandro Pereira">leandro</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barbieri</cc>
    
    <cc>bunhere</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>oliver</cc>
    
    <cc>rakuco</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zecke</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>196177</commentid>
    <comment_count>0</comment_count>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-03-04 12:04:46 -0800</bug_when>
    <thetext>+++ This bug was initially created as a clone of Bug #35087 +++

Subject says it all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196178</commentid>
    <comment_count>1</comment_count>
      <attachid>50045</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-03-04 12:05:57 -0800</bug_when>
    <thetext>Created attachment 50045
Add EFL port files to WebCore/plugins/efl (patch 2/2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197863</commentid>
    <comment_count>2</comment_count>
      <attachid>50045</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2010-03-09 20:11:46 -0800</bug_when>
    <thetext>Comment on attachment 50045
Add EFL port files to WebCore/plugins/efl (patch 2/2)

Patch mostly looks fine. I have minir comments inside...



&gt; +X11EmbedContainer::~X11EmbedContainer()
&gt; +{
&gt; +    setVisible(false);
&gt; +
&gt; +    if (client()) {
&gt; +        XUnmapWindow(x11Info()-&gt;display(), client());
&gt; +        XReparentWindow(x11Info()-&gt;display(), client(), rootWindow(), 0, 0);
&gt; +    }
&gt; +
&gt; +    delete m_focusProxy;
&gt; +    delete m_clientWindow;

It would make sense to make m_focusProxy and m_clientWindow OwnPtr here.



&gt; +class X11Info {
&gt; +public:
&gt; +    Display* display() { return (Display*) ecore_x_display_get(); }
&gt; +    Visual* visual() { return (Visual*) m_att.visual; }
&gt; +    unsigned int depth() { return m_att.depth; }
&gt; +    Colormap colormap() { return m_att.colormap; }
&gt; +    unsigned int x11Time() { return ecore_x_current_time_get(); }
&gt; +
&gt; +private:
&gt; +    X11Info(WinId owner)
&gt; +    {
&gt; +        m_owner = owner;
&gt; +        ecore_x_window_attributes_get(owner, &amp;m_att);
&gt; +        m_att.colormap = DefaultColormap(display(), DefaultScreen(display()));
&gt; +    }
&gt; +    WinId m_owner;
&gt; +    Ecore_X_Window_Attributes m_att;
&gt; +    friend class X11Window;
&gt; +};


Is there any reason to not have X11Info more static? Currently you will end up having
one instance per plugin, I think having one instance per Screen should be fine?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198238</commentid>
    <comment_count>3</comment_count>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-03-10 11:22:59 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; &gt; +X11EmbedContainer::~X11EmbedContainer()
&gt; &gt; +{ (...)
&gt; 
&gt; It would make sense to make m_focusProxy and m_clientWindow OwnPtr here.
&gt; 

Will do.

&gt; &gt; +class X11Info { (...)
&gt; 
&gt; 
&gt; Is there any reason to not have X11Info more static? Currently you will end up
&gt; having
&gt; one instance per plugin, I think having one instance per Screen should be fine?
&gt;

I wouldn&apos;t bother with this right now, since WebCore/plugins/efl is scheduled to be rewritten.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199527</commentid>
    <comment_count>4</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2010-03-14 18:52:40 -0700</bug_when>
    <thetext>(In reply to comment #3)

&gt; 
&gt; I wouldn&apos;t bother with this right now, since WebCore/plugins/efl is scheduled
&gt; to be rewritten.

If that is the case please us the PluginViewNone.cpp, this way no one needs to spend time on dead and deprecated code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199528</commentid>
    <comment_count>5</comment_count>
      <attachid>50045</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2010-03-14 18:54:49 -0700</bug_when>
    <thetext>Comment on attachment 50045
Add EFL port files to WebCore/plugins/efl (patch 2/2)

According to the comments the plugin code will be rewritten and I think there is little point reviewing and landing a version that will not be used. If this judgement seem inappropriate please just set the review flag again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199532</commentid>
    <comment_count>6</comment_count>
    <who name="Gustavo Sverzut Barbieri">barbieri</who>
    <bug_when>2010-03-14 19:17:01 -0700</bug_when>
    <thetext>Hi zecke,

The current system works, albeit the code is not as perfect as one would want. Going with &quot;none&quot; is loosing functionality.

The next system will be our attempt to use Qt and Gtk efforts for windowless flash... the golden goal, but we&apos;re holding this since you do know it will takes lots of time to get this working and with great performance. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199622</commentid>
    <comment_count>7</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-03-15 06:46:46 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; The current system works, albeit the code is not as perfect as one would want.
&gt; Going with &quot;none&quot; is loosing functionality.
&gt; 
&gt; The next system will be our attempt to use Qt and Gtk efforts for windowless
&gt; flash... the golden goal, but we&apos;re holding this since you do know it will
&gt; takes lots of time to get this working and with great performance. :-)

I think what zecke is saying is that we have two options: land a fixed-up version of the current code, or land the rewritten version. EFL has currently no plugin code in the tree, so you won&apos;t be loosing anything for now.

So, if the golden goal is going to take a while, fixing the issues with the current code to get it landed seems to be worth it =).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211787</commentid>
    <comment_count>8</comment_count>
    <who name="Gustavo Sverzut Barbieri">barbieri</who>
    <bug_when>2010-04-12 17:24:13 -0700</bug_when>
    <thetext>Please close this bug as we&apos;ll go with Plugin*None as requested by Zecke as soon as #37478 is done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211921</commentid>
    <comment_count>9</comment_count>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-04-13 06:42:23 -0700</bug_when>
    <thetext>Closing this bug as we&apos;ll use the Plugin*None implementation until we have a better Plugin implementation.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50045</attachid>
            <date>2010-03-04 12:05:57 -0800</date>
            <delta_ts>2010-04-02 11:44:36 -0700</delta_ts>
            <desc>Add EFL port files to WebCore/plugins/efl (patch 2/2)</desc>
            <filename>webkit-efl-webcore_plugins_efl-2.diff</filename>
            <type>text/plain</type>
            <size>22478</size>
            <attacher name="Leandro Pereira">leandro</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9lZmwvWDExRW1iZWRDb250YWluZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIC9kZXYvbnVsbAorKysgV2ViQ29yZS9wbHVnaW5zL2VmbC9YMTFFbWJlZENvbnRhaW5l
ci5jcHAKQEAgLTAsMCArMSwzNjAgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5IElOZFQg
LSBJbnN0aXR1dG8gTm9raWEgZGUgVGVjbm9sb2dpYQorICAgIENvcHlyaWdodCAoQykgMjAwOS0y
MDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIw
MTAgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1
ZGUgIlgxMUVtYmVkQ29udGFpbmVyLmgiCisKKyNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCisjaW5j
bHVkZSAiWDExV2luZG93LmgiCisKKyNpbmNsdWRlIDxYMTEvWC5oPgorI2luY2x1ZGUgPFgxMS9Y
bGliLmg+CisKKyNkZWZpbmUgS2V5UHJlc3MgICAgIDIKKyNkZWZpbmUgS2V5UmVsZWFzZSAgIDMK
KyNkZWZpbmUgRm9jdXNJbiAgICAgIDkKKyNkZWZpbmUgRm9jdXNPdXQgICAgMTAKKworI2RlZmlu
ZSBBVE9NKG5hbWUpIGVjb3JlX3hfYXRvbV9nZXQoI25hbWUpCisKK3VzaW5nIG5hbWVzcGFjZSBz
dGQ7Cit1c2luZyBuYW1lc3BhY2UgV1RGOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK2Ns
YXNzIFgxMUVtYmVkRXZlbnRIYW5kbGVyOworCitzdGF0aWMgdW5zaWduZWQgaW50IHhlbWJlZFZl
cnNpb24gPSAwOworc3RhdGljIHVuc2lnbmVkIGludCB4ZW1iZWRNYXBwZWQgPSAoMSA8PCAwKTsK
K3N0YXRpYyB2b2lkIHNlbmRYRW1iZWRNZXNzYWdlKFdpbklkICwgRGlzcGxheSogLCBsb25nICwg
bG9uZyBkZXRhaWwgPSAwLCBsb25nIGRhdGExID0gMCwgbG9uZyBkYXRhMiA9IDApOworCitlbnVt
IFgxMUVtYmVkTWVzc2FnZVR5cGUgeworICAgIFhFTUJFRF9FTUJFRERFRF9OT1RJRlkgPSAwLAor
ICAgIFhFTUJFRF9XSU5ET1dfQUNUSVZBVEUgPSAxLAorICAgIFhFTUJFRF9XSU5ET1dfREVBQ1RJ
VkFURSA9IDIsCisgICAgWEVNQkVEX1JFUVVFU1RfRk9DVVMgPSAzLAorICAgIFhFTUJFRF9GT0NV
U19JTiA9IDQsCisgICAgWEVNQkVEX0ZPQ1VTX09VVCA9IDUsCisgICAgWEVNQkVEX0ZPQ1VTX05F
WFQgPSA2LAorICAgIFhFTUJFRF9GT0NVU19QUkVWID0gNywKKyAgICAvKiA4LTkgd2VyZSB1c2Vk
IGZvciBYRU1CRURfR1JBQl9LRVkvWEVNQkVEX1VOR1JBQl9LRVkgKi8KKyAgICBYRU1CRURfTU9E
QUxJVFlfT04gPSAxMCwKKyAgICBYRU1CRURfTU9EQUxJVFlfT0ZGID0gMTEsCisgICAgWEVNQkVE
X1JFR0lTVEVSX0FDQ0VMRVJBVE9SID0gMTIsCisgICAgWEVNQkVEX1VOUkVHSVNURVJfQUNDRUxF
UkFUT1IgPSAxMywKKyAgICBYRU1CRURfQUNUSVZBVEVfQUNDRUxFUkFUT1IgPSAxNAorfTsKKwor
ZW51bSBYMTFFbWJlZEZvY3VzSW5EZXRhaWwgeworICAgIFhFTUJFRF9GT0NVU19DVVJSRU5UID0g
MCwKKyAgICBYRU1CRURfRk9DVVNfRklSU1QgPSAxLAorICAgIFhFTUJFRF9GT0NVU19MQVNUID0g
MgorfTsKKworWDExRW1iZWRDb250YWluZXI6OlgxMUVtYmVkQ29udGFpbmVyKEV2YXMqIGV2YXMs
IFBsdWdpblZpZXcqIHZpZXcpCisgICAgOiBYMTFXaW5kb3coZXZhcykKKyAgICAsIG1fY2xpZW50
KDApCisgICAgLCBtX2NsaWVudFdpbmRvdygwKQorICAgICwgbV9hY3RpdmUoZmFsc2UpCisgICAg
LCBtX3BsdWdpblZpZXcodmlldykKK3sKKyAgICAvLyBpbXBsZW1lbnQgdGhlIGZvY3VzIHByb3h5
IGFzIGluIHRoZSBzcGVjLCBvZmZzY3JlZW4KKyAgICBtX2ZvY3VzUHJveHkgPSBuZXcgWDExV2lu
ZG93KHdpbklkKCksIEludFJlY3QoLTEsIC0xLCAxLCAxKSk7CisgICAgbV9mb2N1c1Byb3h5LT5p
bnN0YWxsRXZlbnRGaWx0ZXIodGhpcyk7CisgICAgbV9mb2N1c1Byb3h5LT5zaG93KCk7CisKKyAg
ICBlY29yZV94X3dpbmRvd19iYWNrZ3JvdW5kX2NvbG9yX3NldCh3aW5JZCgpLCA2NTUzNSwgNjU1
MzUsIDY1NTM1KTsKKworICAgIC8vIENoYW5nZSB0aGUgZXZlbnQgZmlsdGVyIGZvciB0aGUgZXZl
bnRzIHdlIHdvdWxkIGxpa2UgdG8gcmVjZWl2ZQorICAgIFhTZWxlY3RJbnB1dCh4MTFJbmZvKCkt
PmRpc3BsYXkoKSwgd2luSWQoKSwKKyAgICAgICAgICAgIEtleVByZXNzTWFzayB8IEtleVJlbGVh
c2VNYXNrCisgICAgICAgICAgICB8IEJ1dHRvblByZXNzTWFzayB8IEJ1dHRvblJlbGVhc2VNYXNr
IHwgQnV0dG9uTW90aW9uTWFzaworICAgICAgICAgICAgfCBLZXltYXBTdGF0ZU1hc2sKKyAgICAg
ICAgICAgIHwgUG9pbnRlck1vdGlvbk1hc2sKKyAgICAgICAgICAgIHwgRW50ZXJXaW5kb3dNYXNr
IHwgTGVhdmVXaW5kb3dNYXNrCisgICAgICAgICAgICB8IEZvY3VzQ2hhbmdlTWFzaworICAgICAg
ICAgICAgfCBFeHBvc3VyZU1hc2sKKyAgICAgICAgICAgIHwgU3RydWN0dXJlTm90aWZ5TWFzawor
ICAgICAgICAgICAgfCBTdWJzdHJ1Y3R1cmVOb3RpZnlNYXNrKTsKKworICAgIFhGbHVzaCh4MTFJ
bmZvKCktPmRpc3BsYXkoKSk7Cit9CisKK1gxMUVtYmVkQ29udGFpbmVyOjp+WDExRW1iZWRDb250
YWluZXIoKQoreworICAgIHNldFZpc2libGUoZmFsc2UpOworCisgICAgaWYgKGNsaWVudCgpKSB7
CisgICAgICAgIFhVbm1hcFdpbmRvdyh4MTFJbmZvKCktPmRpc3BsYXkoKSwgY2xpZW50KCkpOwor
ICAgICAgICBYUmVwYXJlbnRXaW5kb3coeDExSW5mbygpLT5kaXNwbGF5KCksIGNsaWVudCgpLCBy
b290V2luZG93KCksIDAsIDApOworICAgIH0KKworICAgIGRlbGV0ZSBtX2ZvY3VzUHJveHk7Cisg
ICAgZGVsZXRlIG1fY2xpZW50V2luZG93OworfQorCit2b2lkIFgxMUVtYmVkQ29udGFpbmVyOjpt
b3ZlSW5wdXRGb2N1c1RvUHJveHkoKQoreworICAgIGlmIChoYXNGb2N1cygpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBYU2V0SW5wdXRGb2N1cyh4MTFJbmZvKCktPmRpc3BsYXkoKSwgbV9mb2N1
c1Byb3h5LT53aW5JZCgpLCBSZXZlcnRUb1BhcmVudCwgeDExSW5mbygpLT54MTFUaW1lKCkpOwor
fQorCit2b2lkIFgxMUVtYmVkQ29udGFpbmVyOjphY2NlcHQoV2luSWQgY2xpZW50KQoreworICAg
IHNldENsaWVudChjbGllbnQpOworICAgIG1fY2xpZW50V2luZG93LT5pbnN0YWxsRXZlbnRGaWx0
ZXIodGhpcyk7CisKKyAgICBYQWRkVG9TYXZlU2V0KHgxMUluZm8oKS0+ZGlzcGxheSgpLCBjbGll
bnQpOyAvLyBhdm9pZCBjbGllbnQgZnJvbSBjcmFzaGluZyBhbG9uZyB3aXRoIHVzCisKKyAgICB1
bnNpZ25lZCBpbnQgdmVyc2lvbiA9IDA7IC8vIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBzcGVjCisK
KyAgICBpbnQgbml0ZW1zID0gMDsKKyAgICB1bnNpZ25lZCBjaGFyICpkYXRhID0gMDsKKyAgICB1
bnNpZ25lZCBpbnQgY2xpZW50VmVyc2lvbiA9IDA7CisKKyAgICBzdGF0aWMgQXRvbSBhdG9tID0g
QVRPTShfWEVNQkVEX0lORk8pOworCisgICAgaWYgKGVjb3JlX3hfd2luZG93X3Byb3BfcHJvcGVy
dHlfZ2V0KGNsaWVudCwgYXRvbSwgYXRvbSwgMiwgJmRhdGEsICZuaXRlbXMpKSB7CisgICAgICAg
IHVuc2lnbmVkIGludCAqcHJvcCA9ICh1bnNpZ25lZCBpbnQgKikgZGF0YTsKKworICAgICAgICBp
ZiAobml0ZW1zID49IDIpCisgICAgICAgICAgICBjbGllbnRWZXJzaW9uID0gcHJvcFswXTsKKyAg
ICAgICAgZnJlZShkYXRhKTsKKyAgICB9CisKKyAgICAvLyBBc2sgdGhlIGNsaWVudCBmb3IgaXRz
IG1pbmltdW0gc2l6ZS4KKyAgICBJbnRTaXplIG1pblNpemVIaW50OworICAgIFhTaXplSGludHMg
c2l6ZUhpbnQ7CisgICAgbG9uZyB1bnVzZWQ7CisgICAgaWYgKFhHZXRXTU5vcm1hbEhpbnRzKHgx
MUluZm8oKS0+ZGlzcGxheSgpLCBjbGllbnQsICZzaXplSGludCwgJnVudXNlZCkgJiYgKHNpemVI
aW50LmZsYWdzICYgUE1pblNpemUpKQorICAgICAgICBtaW5TaXplSGludCA9IEludFNpemUoc2l6
ZUhpbnQubWluX3dpZHRoLCBzaXplSGludC5taW5faGVpZ2h0KTsKKyAgICBlbHNlCisgICAgICAg
IG1pblNpemVIaW50ID0gSW50U2l6ZSgwLCAwKTsKKworICAgIHVuc2lnbmVkIGludCBtaW5WZXJz
aW9uID0gdmVyc2lvbiA+IGNsaWVudFZlcnNpb24gPyBjbGllbnRWZXJzaW9uIDogdmVyc2lvbjsK
KworICAgIHNlbmRYRW1iZWRNZXNzYWdlKGNsaWVudCwgeDExSW5mbygpLT5kaXNwbGF5KCksIFhF
TUJFRF9FTUJFRERFRF9OT1RJRlksIDAsIHdpbklkKCksIG1pblZlcnNpb24pOworCisgICAgWE1h
cFdpbmRvdyh4MTFJbmZvKCktPmRpc3BsYXkoKSwgY2xpZW50KTsKKworICAgIHJlc2l6ZShtYXgo
c2l6ZSgpLndpZHRoKCksIG1pblNpemVIaW50LndpZHRoKCkpLCBtYXgoc2l6ZSgpLmhlaWdodCgp
LCBtaW5TaXplSGludC5oZWlnaHQoKSkpOworfQorCit2b2lkIFgxMUVtYmVkQ29udGFpbmVyOjpy
ZWplY3QoV2luSWQgY2xpZW50KQoreworICAgIFhSZW1vdmVGcm9tU2F2ZVNldCh4MTFJbmZvKCkt
PmRpc3BsYXkoKSwgY2xpZW50KTsKKyAgICBYUmVwYXJlbnRXaW5kb3coeDExSW5mbygpLT5kaXNw
bGF5KCksIGNsaWVudCwgcm9vdFdpbmRvdygpLCAwLCAwKTsKK30KKwordm9pZCBYMTFFbWJlZENv
bnRhaW5lcjo6c2hvdygpCit7CisgICAgWDExV2luZG93OjpzaG93KCk7CisKKyAgICAvLyBzaWdu
YWwgbWFwCisgICAgaWYgKGNsaWVudCgpKSB7CisgICAgICAgIHVuc2lnbmVkIGludCBkYXRhW10g
PSB7eGVtYmVkVmVyc2lvbiwgeGVtYmVkTWFwcGVkfTsKKyAgICAgICAgWENoYW5nZVByb3BlcnR5
KHgxMUluZm8oKS0+ZGlzcGxheSgpLCBjbGllbnQoKSwgQVRPTShfWEVNQkVEX0lORk8pLCBBVE9N
KF9YRU1CRURfSU5GTyksIDMyLAorICAgICAgICAgICAgUHJvcE1vZGVSZXBsYWNlLCAodW5zaWdu
ZWQgY2hhciAqKSBkYXRhLCAyKTsKKyAgICB9Cit9CisKK3ZvaWQgWDExRW1iZWRDb250YWluZXI6
OmhpZGUoKQoreworICAgIFgxMVdpbmRvdzo6aGlkZSgpOworCisgICAgLy8gc2lnbmFsIHVubWFw
CisgICAgaWYgKGNsaWVudCgpKSB7CisgICAgICAgIHVuc2lnbmVkIGludCBkYXRhW10gPSB7eGVt
YmVkVmVyc2lvbiwgeGVtYmVkTWFwcGVkfTsKKyAgICAgICAgWENoYW5nZVByb3BlcnR5KHgxMUlu
Zm8oKS0+ZGlzcGxheSgpLCBjbGllbnQoKSwgQVRPTShfWEVNQkVEX0lORk8pLCBBVE9NKF9YRU1C
RURfSU5GTyksIDMyLAorICAgICAgICAgICAgUHJvcE1vZGVSZXBsYWNlLCAodW5zaWduZWQgY2hh
ciAqKSBkYXRhLCAyKTsKKyAgICB9CisgICAgbV9hY3RpdmUgPSBmYWxzZTsKK30KKwordm9pZCBY
MTFFbWJlZENvbnRhaW5lcjo6cmVzaXplKGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICBY
MTFXaW5kb3c6OnJlc2l6ZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICBpZiAoY2xpZW50KCkpCisgICAg
ICAgIFhSZXNpemVXaW5kb3coeDExSW5mbygpLT5kaXNwbGF5KCksIGNsaWVudCgpLCB3aWR0aCwg
aGVpZ2h0KTsKK30KKwordm9pZCBYMTFFbWJlZENvbnRhaW5lcjo6c2V0RnJhbWVSZWN0KGNvbnN0
IEludFJlY3QmIHJlY3QpCit7CisgICAgWDExV2luZG93OjpzZXRGcmFtZVJlY3QocmVjdCk7Cisg
ICAgaWYgKGNsaWVudCgpKQorICAgICAgICBYTW92ZVJlc2l6ZVdpbmRvdyh4MTFJbmZvKCktPmRp
c3BsYXkoKSwgY2xpZW50KCksIDAsIDAsIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7Cit9
CisKK3ZvaWQgWDExRW1iZWRDb250YWluZXI6OnNldEZvY3VzKCkKK3sKKyAgICBtb3ZlSW5wdXRG
b2N1c1RvUHJveHkoKTsKKyAgICBtX2FjdGl2ZSA9IHRydWU7Cit9CisKK2Jvb2wgWDExRW1iZWRD
b250YWluZXI6Omhhc0ZvY3VzKCkKK3sKKyAgICBXaW5JZCBmb2N1c2VkOworICAgIGludCByZXZl
cnRUbzsKKyAgICBYR2V0SW5wdXRGb2N1cyh4MTFJbmZvKCktPmRpc3BsYXkoKSwgJmZvY3VzZWQs
ICZyZXZlcnRUbyk7CisKKyAgICByZXR1cm4gZm9jdXNlZCA9PSBtX2ZvY3VzUHJveHktPndpbklk
KCk7Cit9CisKK2Jvb2wgWDExRW1iZWRDb250YWluZXI6OmlzQWN0aXZlKCkKK3sKKyAgICByZXR1
cm4gbV9hY3RpdmU7Cit9CisKK1dpbklkIFgxMUVtYmVkQ29udGFpbmVyOjpyb290V2luZG93KCkK
K3sKKyAgICByZXR1cm4gRGVmYXVsdFJvb3RXaW5kb3coeDExSW5mbygpLT5kaXNwbGF5KCkpOwor
fQorCitib29sIFgxMUVtYmVkQ29udGFpbmVyOjp4MTFFdmVudChYRXZlbnQqIGV2ZW50KQorewor
ICAgIC8vIHdlIHN1YnNjcmliZSB0byBldmVudHMgZGlyZWN0bHkgZnJvbSB0aGUgY2xpZW50IGFz
IHdlbGwKKyAgICAvLyBpbiBvcmRlciB0byBwaWNrIHVwIHdoZWVsIGV2ZW50cy4KKyAgICBpZiAo
ZXZlbnQtPnhhbnkud2luZG93ID09IGNsaWVudCgpKSB7CisgICAgICAgIHN3aXRjaCAoZXZlbnQt
PnR5cGUpIHsKKyAgICAgICAgY2FzZSBCdXR0b25QcmVzczoKKyAgICAgICAgICAgIG1fcGx1Z2lu
Vmlldy0+ZGlzcGF0Y2hXaGVlbEV2ZW50KGV2ZW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEJ1dHRvblJlbGVhc2U6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKGV2ZW50LT50eXBlKSB7
CisgICAgY2FzZSBGb2N1c0luOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvY3VzT3V0Ogor
ICAgICAgICAvLyB3aGVuIG91ciBwcm94eSBnYWluIGZvY3VzLCB0aGUgY29udGFpbmVyIGFjdHVh
bGx5CisgICAgICAgIC8vIGxvb3NlcyBpdCwgc28gb25seSBkZWFjdGl2YXRlIHdoZW4gdGhlIHBy
b3h5IGxvb3NlcworICAgICAgICAvLyBmb2N1cy4KKyAgICAgICAgaWYgKGV2ZW50LT54YW55Lndp
bmRvdyAhPSBtX2ZvY3VzUHJveHktPndpbklkKCkpCisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBzZW5kWEVtYmVkTWVzc2FnZShjbGllbnQoKSwgeDExSW5mbygpLT5kaXNwbGF5KCksIFhF
TUJFRF9GT0NVU19PVVQpOworICAgICAgICBtX2FjdGl2ZSA9IGZhbHNlOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIExlYXZlTm90aWZ5OgorICAgICAgICBzZW5kWEVtYmVkTWVzc2FnZShjbGll
bnQoKSwgeDExSW5mbygpLT5kaXNwbGF5KCksIFhFTUJFRF9XSU5ET1dfREVBQ1RJVkFURSk7Cisg
ICAgICAgIGlmICghbV9hY3RpdmUpCisgICAgICAgICAgICBlY29yZV94X3dpbmRvd19mb2N1cyhl
Y29yZV94X3dpbmRvd19wYXJlbnRfZ2V0KHdpbklkKCkpKTsKKworICAgICAgICBYVW5ncmFiQnV0
dG9uKHgxMUluZm8oKS0+ZGlzcGxheSgpLCA0LCBBbnlNb2RpZmllciwgY2xpZW50KCkpOworICAg
ICAgICBYVW5ncmFiQnV0dG9uKHgxMUluZm8oKS0+ZGlzcGxheSgpLCA1LCBBbnlNb2RpZmllciwg
Y2xpZW50KCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEVudGVyTm90aWZ5OgorICAgICAg
ICBzZW5kWEVtYmVkTWVzc2FnZShjbGllbnQoKSwgeDExSW5mbygpLT5kaXNwbGF5KCksIFhFTUJF
RF9XSU5ET1dfQUNUSVZBVEUpOworICAgICAgICBtb3ZlSW5wdXRGb2N1c1RvUHJveHkoKTsKKwor
ICAgICAgICBYR3JhYkJ1dHRvbih4MTFJbmZvKCktPmRpc3BsYXkoKSwgNCwgQW55TW9kaWZpZXIs
IGNsaWVudCgpLCBmYWxzZSwKKyAgICAgICAgICAgICAgICBCdXR0b25QcmVzc01hc2ssIEdyYWJN
b2RlQXN5bmMsIEdyYWJNb2RlQXN5bmMsIDBMLCAwTCk7CisgICAgICAgIFhHcmFiQnV0dG9uKHgx
MUluZm8oKS0+ZGlzcGxheSgpLCA1LCBBbnlNb2RpZmllciwgY2xpZW50KCksIGZhbHNlLAorICAg
ICAgICAgICAgICAgIEJ1dHRvblByZXNzTWFzaywgR3JhYk1vZGVBc3luYywgR3JhYk1vZGVBc3lu
YywgMEwsIDBMKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLZXlQcmVzczoKKyAgICBjYXNl
IEtleVJlbGVhc2U6CisgICAgICAgIGlmIChjbGllbnQoKSAmJiBpc0FjdGl2ZSgpKQorICAgICAg
ICAgICAgZXZlbnQtPnhrZXkud2luZG93ID0gY2xpZW50KCk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGV2ZW50LT54a2V5LndpbmRvdyA9IGVjb3JlX3hfd2luZG93X3BhcmVudF9nZXQod2lu
SWQoKSk7CisKKyAgICAgICAgWFNlbmRFdmVudCh4MTFJbmZvKCktPmRpc3BsYXkoKSwgZXZlbnQt
PnhrZXkud2luZG93LCBmYWxzZSwgTm9FdmVudE1hc2ssIGV2ZW50KTsKKyAgICAgICAgWFN5bmMo
eDExSW5mbygpLT5kaXNwbGF5KCksIGZhbHNlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
cmVhdGVOb3RpZnk6CisgICAgICAgIGlmIChjbGllbnQoKSkKKyAgICAgICAgICAgIHJlamVjdChl
dmVudC0+eGNyZWF0ZXdpbmRvdy53aW5kb3cpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBh
Y2NlcHQoZXZlbnQtPnhjcmVhdGV3aW5kb3cud2luZG93KTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBEZXN0cm95Tm90aWZ5OgorICAgICAgICAvLyBjbGllbnQgZ29lcyBhd2F5CisgICAgICAg
IGlmIChldmVudC0+eGRlc3Ryb3l3aW5kb3cud2luZG93ID09IGNsaWVudCgpKSB7CisgICAgICAg
ICAgICBzZXRDbGllbnQoMCk7CisgICAgICAgICAgICBzZXRGcmFtZVJlY3QoSW50UmVjdCgtMSwg
LTEsIDEsIDEpKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFJlcGFyZW50
Tm90aWZ5OgorICAgICAgICAvLyB0aGUgY2xpZW50IHJlcGFyZW50cyBpdHNlbGYgb3V0IG9mIHVz
LCB3YW50cyB0byBsZWF2ZSB1cworICAgICAgICBpZiAoZXZlbnQtPnhyZXBhcmVudC53aW5kb3cg
PT0gY2xpZW50KCkgJiYgZXZlbnQtPnhyZXBhcmVudC5wYXJlbnQgIT0gd2luSWQoKSkgeworICAg
ICAgICAgICAgc2V0Q2xpZW50KDApOworICAgICAgICAgICAgc2V0RnJhbWVSZWN0KEludFJlY3Qo
LTEsIC0xLCAxLCAxKSk7CisgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQtPnhyZXBhcmVudC5wYXJl
bnQgPT0gd2luSWQoKSkgeyAvLyB0aGUgY2xpZW50IHJlcGFyZW50cyBpdHNlbGYgaW50byB1cwor
ICAgICAgICAgICAgaWYgKGNsaWVudCgpKQorICAgICAgICAgICAgICAgIHJlamVjdChldmVudC0+
eHJlcGFyZW50LndpbmRvdyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYWNj
ZXB0KGV2ZW50LT54cmVwYXJlbnQud2luZG93KTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsK
KyAgICBjYXNlIENsaWVudE1lc3NhZ2U6CisgICAgICAgIGlmIChldmVudC0+eGNsaWVudC5tZXNz
YWdlX3R5cGUgIT0gQVRPTShfWEVNQkVEKSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IC8vIG5vdCBmb3IgdXMsIGlnbm9yZQorICAgICAgICBpZiAoZXZlbnQtPnhjbGllbnQud2luZG93
ICE9IHdpbklkKCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBzd2l0Y2ggKGV2ZW50
LT54Y2xpZW50LmRhdGEubFsxXSkgeworICAgICAgICBjYXNlIFhFTUJFRF9SRVFVRVNUX0ZPQ1VT
OgorICAgICAgICAgICAgbV9wbHVnaW5WaWV3LT5zZXRGb2N1cygpOworICAgICAgICAgICAgc2Vu
ZFhFbWJlZE1lc3NhZ2UoY2xpZW50KCksIHgxMUluZm8oKS0+ZGlzcGxheSgpLCBYRU1CRURfRk9D
VVNfSU4sIFhFTUJFRF9GT0NVU19DVVJSRU5UKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFhFTUJFRF9GT0NVU19ORVhUOgorICAgICAgICAgICAgLy8gQ2xpZW50IHNlbmRzIHRo
aXMgZXZlbnQgd2hlbiBpdCByZWNlaXZlZCBhIHRhYgorICAgICAgICAgICAgLy8gZm9yd2FyZCBh
bmQgd2FzIGF0IHRoZSBlbmQgb2YgaXRzIGZvY3VzIGNoYWluLiBJZgorICAgICAgICAgICAgLy8g
d2UgYXJlIHRoZSBvbmx5IHdpZGdldCBpbiB0aGUgZm9jdXMgY2hhaW4sIHdlIHNlbmQKKyAgICAg
ICAgICAgIC8vIG91cnNlbHZlcyBhIEZvY3VzT3V0IGV2ZW50LgorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgWEVNQkVEX0ZPQ1VTX1BSRVY6CisgICAgICAgICAgICAvLyBDbGllbnQg
c2VuZHMgdGhpcyBldmVudCB3aGVuIGl0IHJlY2VpdmVkIGEgYmFja3RhYgorICAgICAgICAgICAg
Ly8gYW5kIHdhcyBhdCB0aGUgc3RhcnQgb2YgaXRzIGZvY3VzIGNoYWluLiBJZiB3ZSBhcmUKKyAg
ICAgICAgICAgIC8vIHRoZSBvbmx5IHdpZGdldCBpbiB0aGUgZm9jdXMgY2hhaW4sIHdlIHNlbmQK
KyAgICAgICAgICAgIC8vIG91cnNlbHZlcyBhIEZvY3VzT3V0IGV2ZW50LgorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKwordm9pZCBzZW5kWEVtYmVkTWVzc2FnZShXaW5JZCB3aW5kb3csIERpc3BsYXkqIGRp
c3BsYXksIGxvbmcgbWVzc2FnZSwgbG9uZyBkZXRhaWwsIGxvbmcgZGF0YTEsIGxvbmcgZGF0YTIp
Cit7CisgICAgWEV2ZW50IGV2OworICAgIG1lbXNldCgmZXYsIDAsIHNpemVvZihldikpOworICAg
IGV2LnhjbGllbnQudHlwZSA9IENsaWVudE1lc3NhZ2U7CisgICAgZXYueGNsaWVudC53aW5kb3cg
PSB3aW5kb3c7CisgICAgZXYueGNsaWVudC5tZXNzYWdlX3R5cGUgPSBBVE9NKF9YRU1CRURfSU5G
Tyk7CisgICAgZXYueGNsaWVudC5mb3JtYXQgPSAzMjsKKyAgICBldi54Y2xpZW50LmRhdGEubFsw
XSA9IGVjb3JlX3hfY3VycmVudF90aW1lX2dldCgpOworICAgIGV2LnhjbGllbnQuZGF0YS5sWzFd
ID0gbWVzc2FnZTsKKyAgICBldi54Y2xpZW50LmRhdGEubFsyXSA9IGRldGFpbDsKKyAgICBldi54
Y2xpZW50LmRhdGEubFszXSA9IGRhdGExOworICAgIGV2LnhjbGllbnQuZGF0YS5sWzRdID0gZGF0
YTI7CisgICAgWFNlbmRFdmVudChkaXNwbGF5LCB3aW5kb3csIGZhbHNlLCBOb0V2ZW50TWFzaywg
JmV2KTsKKyAgICBYU3luYyhkaXNwbGF5LCBmYWxzZSk7Cit9CisKSW5kZXg6IFdlYkNvcmUvcGx1
Z2lucy9lZmwvWDExRW1iZWRDb250YWluZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSAvZGV2L251bGwKKysr
IFdlYkNvcmUvcGx1Z2lucy9lZmwvWDExRW1iZWRDb250YWluZXIuaApAQCAtMCwwICsxLDc4IEBA
CisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOSBJTmRUIC0gSW5zdGl0dXRvIE5va2lhIGRlIFRl
Y25vbG9naWEKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQg
c3lzdGVtcworICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MK
KworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisq
LworCisjaWZuZGVmIFgxMUVtYmVkQ29udGFpbmVyX2gKKyNkZWZpbmUgWDExRW1iZWRDb250YWlu
ZXJfaAorCisjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgorI2luY2x1ZGUgIlgxMVdpbmRvdy5oIgor
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK2NsYXNz
IFgxMUVtYmVkQ29udGFpbmVyOworY2xhc3MgWDExV2luZG93OworCitjbGFzcyBYMTFFbWJlZENv
bnRhaW5lciA6IHB1YmxpYyBYMTFXaW5kb3cgeworcHVibGljOgorICAgIFgxMUVtYmVkQ29udGFp
bmVyKEV2YXMqIGV2YXMsIFdlYkNvcmU6OlBsdWdpblZpZXcqIHZpZXcpOworICAgIH5YMTFFbWJl
ZENvbnRhaW5lcigpOworCisgICAgV2luSWQgcm9vdFdpbmRvdygpOworCisgICAgV2luSWQgY2xp
ZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KKyAgICB2b2lkIHNldENsaWVudChXaW5JZCBjbGll
bnQpCisgICAgeworICAgICAgICBtX2NsaWVudCA9IGNsaWVudDsKKyAgICAgICAgaWYgKGNsaWVu
dCkKKyAgICAgICAgICAgIG1fY2xpZW50V2luZG93ID0gWDExV2luZG93OjphZG9wdChjbGllbnQp
OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGRlbGV0ZSBtX2NsaWVudFdpbmRvdzsKKyAg
ICAgICAgICAgIG1fY2xpZW50V2luZG93ID0gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZv
aWQgYWNjZXB0KFdpbklkIGNsaWVudCk7CisgICAgdm9pZCByZWplY3QoV2luSWQgY2xpZW50KTsK
KworICAgIHZvaWQgbW92ZUlucHV0Rm9jdXNUb1Byb3h5KCk7CisgICAgYm9vbCB4MTFFdmVudChY
RXZlbnQqIGV2ZW50KTsKKworICAgIHZvaWQgc2V0RnJhbWVSZWN0KGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIHJlY3QpOworCisgICAgdm9pZCByZXNpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsK
KworICAgIHZvaWQgc2hvdygpOworICAgIHZvaWQgaGlkZSgpOworCisgICAgdm9pZCBzZXRGb2N1
cygpOworICAgIGJvb2wgaGFzRm9jdXMoKTsKKyAgICBib29sIGlzQWN0aXZlKCk7CisKK3ByaXZh
dGU6CisgICAgV2ViQ29yZTo6UGx1Z2luVmlldyogbV9wbHVnaW5WaWV3OworICAgIFgxMVdpbmRv
dyogbV9mb2N1c1Byb3h5OworICAgIFgxMVdpbmRvdyogbV9jbGllbnRXaW5kb3c7CisKKyAgICBi
b29sIG1fYWN0aXZlOworICAgIFdpbklkIG1fY2xpZW50OworfTsKKworI2VuZGlmIC8vIFgxMUVt
YmVkQ29udGFpbmVyX2gKSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9lZmwvWDExV2luZG93LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSAvZGV2L251bGwKKysrIFdlYkNvcmUvcGx1Z2lucy9lZmwvWDExV2luZG93
LmNwcApAQCAtMCwwICsxLDE4MyBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDkgSU5kVCAt
IEluc3RpdHV0byBOb2tpYSBkZSBUZWNub2xvZ2lhCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIw
MTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAx
MCBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlgxMVdpbmRvdy5oIgorCisjaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworaW50IG9uRWNvcmVYRXZlbnQodm9pZCogb2JqZWN0LCBpbnQgdHlwZSwg
dm9pZCogZXZlbnREYXRhKTsKKwordm9pZCBYMTFXaW5kb3c6OmluaXQoV2luSWQgcGFyZW50LCBJ
bnRSZWN0JiBnZW9tZXRyeSkKK3sKKyAgICBtX3dpbklkID0gZWNvcmVfeF93aW5kb3dfbmV3KHBh
cmVudCwgZ2VvbWV0cnkueCgpLCBnZW9tZXRyeS55KCksCisgICAgICAgICAgICBnZW9tZXRyeS53
aWR0aCgpLCBnZW9tZXRyeS5oZWlnaHQoKSk7CisgICAgbV9YRXZlbnRIYW5kbGVyID0gZWNvcmVf
ZXZlbnRfaGFuZGxlcl9hZGQoRUNPUkVfWF9FVkVOVF9BTlksIG9uRWNvcmVYRXZlbnQsIHRoaXMp
OworfQorCitYMTFXaW5kb3cqIFgxMVdpbmRvdzo6YWRvcHQoV2luSWQgaWQpCit7CisgICAgWDEx
V2luZG93KiB3aW4gPSBuZXcgWDExV2luZG93KCk7CisgICAgd2luLT5tX3dpbklkID0gaWQ7Cisg
ICAgd2luLT5tX1hFdmVudEhhbmRsZXIgPSBlY29yZV9ldmVudF9oYW5kbGVyX2FkZChFQ09SRV9Y
X0VWRU5UX0FOWSwgb25FY29yZVhFdmVudCwgd2luKTsKKworICAgIHJldHVybiB3aW47Cit9CisK
K1gxMVdpbmRvdzo6WDExV2luZG93KCkKKyAgICA6IG1feDExSW5mbygwKQorICAgICwgbV92aXNp
YmxlKGZhbHNlKQorICAgICwgbV9yZWN0KEludFJlY3QoKSkKKyAgICAsIG1fZXZlbnRGaWx0ZXIo
MCkKKyAgICAsIG1fYWRvcHRlZCh0cnVlKQoreworfQorCitYMTFXaW5kb3c6OlgxMVdpbmRvdyhF
dmFzICpldmFzLCBJbnRSZWN0IGdlb21ldHJ5KQorICAgIDogbV94MTFJbmZvKDApCisgICAgLCBt
X3Zpc2libGUoZmFsc2UpCisgICAgLCBtX3JlY3QoZ2VvbWV0cnkpCisgICAgLCBtX2V2ZW50Rmls
dGVyKDApCisgICAgLCBtX2Fkb3B0ZWQoZmFsc2UpCit7CisgICAgRWNvcmVfRXZhcyogZWUgPSBl
Y29yZV9ldmFzX2Vjb3JlX2V2YXNfZ2V0KGV2YXMpOworICAgIFdpbklkIHBhcmVudCA9IGVjb3Jl
X2V2YXNfd2luZG93X2dldChlZSk7CisgICAgaW5pdChwYXJlbnQsIGdlb21ldHJ5KTsKK30KKwor
WDExV2luZG93OjpYMTFXaW5kb3coV2luSWQgcGFyZW50LCBJbnRSZWN0IGdlb21ldHJ5KQorICAg
IDogbV94MTFJbmZvKDApCisgICAgLCBtX3Zpc2libGUoZmFsc2UpCisgICAgLCBtX3JlY3QoZ2Vv
bWV0cnkpCisgICAgLCBtX2V2ZW50RmlsdGVyKDApCisgICAgLCBtX2Fkb3B0ZWQoZmFsc2UpCit7
CisgICAgaW5pdChwYXJlbnQsIGdlb21ldHJ5KTsKK30KKworWDExV2luZG93Ojp+WDExV2luZG93
KCkKK3sKKyAgICBlY29yZV9ldmVudF9oYW5kbGVyX2RlbChtX1hFdmVudEhhbmRsZXIpOworCisg
ICAgZGVsZXRlIG1feDExSW5mbzsKKyAgICBpZiAoIW1fYWRvcHRlZCkKKyAgICAgICAgZWNvcmVf
eF93aW5kb3dfZnJlZShtX3dpbklkKTsKK30KKwordm9pZCBYMTFXaW5kb3c6OnNob3coKQorewor
ICAgIGlmIChtX3Zpc2libGUpCisgICAgICAgIHJldHVybjsKKyAgICBlY29yZV94X3dpbmRvd19z
aG93KG1fd2luSWQpOworICAgIG1fdmlzaWJsZSA9IHRydWU7Cit9CisKK3ZvaWQgWDExV2luZG93
OjpoaWRlKCkKK3sKKyAgICBpZiAobV92aXNpYmxlKQorICAgICAgICByZXR1cm47CisgICAgZWNv
cmVfeF93aW5kb3dfaGlkZShtX3dpbklkKTsKKyAgICBtX3Zpc2libGUgPSBmYWxzZTsKK30KKwor
dm9pZCBYMTFXaW5kb3c6OnNldFZpc2libGUoYm9vbCBvbikKK3sKKyAgICBpZiAob24pCisgICAg
ICAgIHNob3coKTsKKyAgICBlbHNlCisgICAgICAgIGhpZGUoKTsKK30KKwordm9pZCBYMTFXaW5k
b3c6Om1vdmUoaW50IHgsIGludCB5KQoreworICAgIEludFBvaW50IG5ld1BvcyA9IEludFBvaW50
KHgsIHkpOworICAgIGlmIChnZW9tZXRyeSgpLmxvY2F0aW9uKCkgPT0gbmV3UG9zKQorICAgICAg
ICByZXR1cm47CisKKyAgICBlY29yZV94X3dpbmRvd19tb3ZlKHdpbklkKCksIHgsIHkpOworICAg
IG1fcmVjdC5zZXRMb2NhdGlvbihuZXdQb3MpOworfQorCit2b2lkIFgxMVdpbmRvdzo6cmVzaXpl
KGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICBJbnRTaXplIG5ld1NpemUgPSBJbnRTaXpl
KHdpZHRoLCBoZWlnaHQpOworCisgICAgaWYgKHNpemUoKSA9PSBuZXdTaXplKQorICAgICAgICBy
ZXR1cm47CisgICAgZWNvcmVfeF93aW5kb3dfcmVzaXplKHdpbklkKCksIHdpZHRoLCBoZWlnaHQp
OworICAgIG1fcmVjdC5zZXRTaXplKG5ld1NpemUpOworfQorCit2b2lkIFgxMVdpbmRvdzo6c2V0
RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgaWYgKGdlb21ldHJ5KCkgPT0g
cmVjdCkKKyAgICAgICAgcmV0dXJuOworICAgIGVjb3JlX3hfd2luZG93X21vdmVfcmVzaXplKHdp
bklkKCksIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsK
KyAgICBtX3JlY3QgPSByZWN0OworfQorCit2b2lkIFgxMVdpbmRvdzo6dXBkYXRlKGNvbnN0IElu
dFJlY3QmIHJlY3QpCit7CisgICAgZWNvcmVfeF93aW5kb3dfYXJlYV9leHBvc2Uod2luSWQoKSwg
cmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworfQorCit2
b2lkIFgxMVdpbmRvdzo6c2V0Rm9jdXMoKQoreworICAgIGVjb3JlX3hfd2luZG93X2ZvY3VzKHdp
bklkKCkpOworfQorCit2b2lkIFgxMVdpbmRvdzo6aW5zdGFsbEV2ZW50RmlsdGVyKFgxMVdpbmRv
dyogb2JqZWN0KQoreworICAgIG1fZXZlbnRGaWx0ZXIgPSBvYmplY3Q7Cit9CisKK3ZvaWQgWDEx
V2luZG93Ojpwcm9jZXNzRXZlbnQoWEV2ZW50KiB4ZXZlbnQpCit7CisgICAgYm9vbCBoYW5kbGVk
ID0gZmFsc2U7CisKKyAgICBpZiAobV9ldmVudEZpbHRlcikKKyAgICAgICAgaGFuZGxlZCA9IG1f
ZXZlbnRGaWx0ZXItPngxMUV2ZW50KHhldmVudCk7CisKKyAgICBpZiAoaGFuZGxlZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgeDExRXZlbnQoeGV2ZW50KTsKK30KKworYm9vbCBYMTFXaW5kb3c6
OngxMUV2ZW50KFhFdmVudCogeGV2ZW50KQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworaW50
IG9uRWNvcmVYRXZlbnQodm9pZCogb2JqZWN0LCBpbnQgdHlwZSwgdm9pZCogZXZlbnREYXRhKQor
eworICAgIFgxMVdpbmRvdyogd2luID0gc3RhdGljX2Nhc3Q8WDExV2luZG93Kj4ob2JqZWN0KTsK
KworICAgIFhFdmVudCogeGV2ZW50ID0gKFhFdmVudCopIGV2ZW50RGF0YTsKKworICAgIGlmICh4
ZXZlbnQtPnR5cGUgPiAxICYmIHhldmVudC0+eGFueS53aW5kb3cgPT0gd2luLT53aW5JZCgpKQor
ICAgICAgICB3aW4tPnByb2Nlc3NFdmVudCh4ZXZlbnQpOworCisgICAgcmV0dXJuIEVDT1JFX0NB
TExCQUNLX1JFTkVXOworfQorCkluZGV4OiBXZWJDb3JlL3BsdWdpbnMvZWZsL1gxMVdpbmRvdy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIC9kZXYvbnVsbAorKysgV2ViQ29yZS9wbHVnaW5zL2VmbC9YMTFXaW5k
b3cuaApAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDkgSU5kVCAt
IEluc3RpdHV0byBOb2tpYSBkZSBUZWNub2xvZ2lhCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIw
MTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAx
MCBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBYMTFXaW5kb3dfaAorI2RlZmluZSBY
MTFXaW5kb3dfaAorCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIlBsdWdpblBhY2th
Z2UuaCIKKworI2luY2x1ZGUgPEVjb3JlLmg+CisjaW5jbHVkZSA8RWNvcmVfWC5oPgorI2luY2x1
ZGUgPEV2YXMuaD4KKwordHlwZWRlZiBXaW5kb3cgV2luSWQ7CisKK2NsYXNzIFgxMUluZm8gewor
cHVibGljOgorICAgIERpc3BsYXkqIGRpc3BsYXkoKSB7IHJldHVybiAoRGlzcGxheSopIGVjb3Jl
X3hfZGlzcGxheV9nZXQoKTsgfQorICAgIFZpc3VhbCogdmlzdWFsKCkgeyByZXR1cm4gKFZpc3Vh
bCopIG1fYXR0LnZpc3VhbDsgfQorICAgIHVuc2lnbmVkIGludCBkZXB0aCgpIHsgcmV0dXJuIG1f
YXR0LmRlcHRoOyB9CisgICAgQ29sb3JtYXAgY29sb3JtYXAoKSB7IHJldHVybiBtX2F0dC5jb2xv
cm1hcDsgfQorICAgIHVuc2lnbmVkIGludCB4MTFUaW1lKCkgeyByZXR1cm4gZWNvcmVfeF9jdXJy
ZW50X3RpbWVfZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBYMTFJbmZvKFdpbklkIG93bmVyKQor
ICAgIHsKKyAgICAgICAgbV9vd25lciA9IG93bmVyOworICAgICAgICBlY29yZV94X3dpbmRvd19h
dHRyaWJ1dGVzX2dldChvd25lciwgJm1fYXR0KTsKKyAgICAgICAgbV9hdHQuY29sb3JtYXAgPSBE
ZWZhdWx0Q29sb3JtYXAoZGlzcGxheSgpLCBEZWZhdWx0U2NyZWVuKGRpc3BsYXkoKSkpOworICAg
IH0KKyAgICBXaW5JZCBtX293bmVyOworICAgIEVjb3JlX1hfV2luZG93X0F0dHJpYnV0ZXMgbV9h
dHQ7CisgICAgZnJpZW5kIGNsYXNzIFgxMVdpbmRvdzsKK307CisKK2NsYXNzIFgxMVdpbmRvdyB7
CitwdWJsaWM6CisgICAgWDExV2luZG93KEV2YXMgKmV2YXMsIFdlYkNvcmU6OkludFJlY3QgZ2Vv
bWV0cnkgPSBXZWJDb3JlOjpJbnRSZWN0KDAsIDAsIDMyLCAzMikpOworICAgIFgxMVdpbmRvdyhX
aW5JZCBwYXJlbnQsIFdlYkNvcmU6OkludFJlY3QgZ2VvbWV0cnkgPSBXZWJDb3JlOjpJbnRSZWN0
KDAsIDAsIDMyLCAzMikpOworICAgIH5YMTFXaW5kb3coKTsKKworICAgIHN0YXRpYyBYMTFXaW5k
b3cqIGFkb3B0KFdpbklkIGlkKTsKKworICAgIFgxMUluZm8qIHgxMUluZm8oKQorICAgIHsKKyAg
ICAgICAgaWYgKCFtX3gxMUluZm8pCisgICAgICAgICAgICBtX3gxMUluZm8gPSBuZXcgWDExSW5m
byhtX3dpbklkKTsKKyAgICAgICAgcmV0dXJuIG1feDExSW5mbzsKKyAgICB9CisKKyAgICBXZWJD
b3JlOjpJbnRTaXplIHNpemUoKSB7IHJldHVybiBtX3JlY3Quc2l6ZSgpOyB9CisgICAgV2ViQ29y
ZTo6SW50UmVjdCBnZW9tZXRyeSgpIHsgcmV0dXJuIG1fcmVjdDsgfQorCisgICAgdm9pZCBpbnN0
YWxsRXZlbnRGaWx0ZXIoWDExV2luZG93KiBvYmplY3QpOworICAgIHZvaWQgcHJvY2Vzc0V2ZW50
KFhFdmVudCogeGV2ZW50KTsKKyAgICB2aXJ0dWFsIGJvb2wgeDExRXZlbnQoWEV2ZW50KiBldmVu
dCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RnJhbWVSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIHJlY3QpOworCisgICAgdmlydHVhbCB2b2lkIG1vdmUoaW50IHgsIGludCB5KTsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVzaXplKGludCB3aWR0aCwgaW50IGhlaWdodCk7CisKKyAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpOworCisgICAgdmlydHVh
bCB2b2lkIHNob3coKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpOworICAgIHZvaWQgc2V0Vmlz
aWJsZShib29sIG9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9jdXMoKTsKKworICAgIFdpbklk
IHdpbklkKCkgeyByZXR1cm4gbV93aW5JZDsgfQorCitwcm90ZWN0ZWQ6CisgICAgWDExV2luZG93
KCk7CisgICAgdm9pZCBpbml0KFdpbklkIHBhcmVudCwgV2ViQ29yZTo6SW50UmVjdCYgZ2VvbWV0
cnkpOworICAgIHZvaWQgYWNjZXB0RXZlbnRUeXBlKGludCB0eXBlKTsKKworICAgIFdpbklkIG1f
d2luSWQ7CisgICAgWDExSW5mbyogbV94MTFJbmZvOworICAgIGJvb2wgbV92aXNpYmxlOworICAg
IFdlYkNvcmU6OkludFJlY3QgbV9yZWN0OworICAgIFgxMVdpbmRvdyogbV9ldmVudEZpbHRlcjsK
KyAgICBFY29yZV9FdmVudF9IYW5kbGVyKiBtX1hFdmVudEhhbmRsZXI7CisgICAgYm9vbCBtX2Fk
b3B0ZWQ7Cit9OworCisKKyNlbmRpZiAvLyBYMTFXaW5kb3dfaApJbmRleDogV2ViQ29yZS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cKKysrIFdlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDMtMDQgIExlYW5kcm8gUGVyZWlyYSAgPGxlYW5k
cm9AcHJvZnVzaW9uLm1vYmk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIEVGTCBwb3J0IGZpbGVzIHRvIHBsdWdpbnMvZWZsLgorICAgICAgICBo
dHRwOi8vd2Via2l0Lm9yZy9iLzM1NzYyCisKKyAgICAgICAgKiBwbHVnaW5zL2VmbC9YMTFFbWJl
ZENvbnRhaW5lci5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsdWdpbnMvZWZsL1gxMUVtYmVkQ29u
dGFpbmVyLmg6IEFkZGVkLgorICAgICAgICAqIHBsdWdpbnMvZWZsL1gxMVdpbmRvdy5jcHA6IEFk
ZGVkLgorICAgICAgICAqIHBsdWdpbnMvZWZsL1gxMVdpbmRvdy5oOiBBZGRlZC4KKwogMjAxMC0w
My0wNCAgQW50b25pbyBHb21lcyAgPHRvbmlraXRvb0B3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQgYnVpbGQgZml4Lgo=
</data>
<flag name="review"
          id="33083"
          type_id="1"
          status="-"
          setter="zecke"
    />
          </attachment>
      

    </bug>

</bugzilla>