<?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>79143</bug_id>
          
          <creation_ts>2012-02-21 12:47:39 -0800</creation_ts>
          <short_desc>[Texmap] Consolidate the common parts of TextureMapperGL::drawTexture</short_desc>
          <delta_ts>2012-02-24 16:36:49 -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>Layout and Rendering</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="Yael">yael</reporter>
          <assigned_to name="Yael">yael</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mrobinson</cc>
    
    <cc>noam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>561150</commentid>
    <comment_count>0</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-02-21 12:47:39 -0800</bug_when>
    <thetext>We should not have duplicate code in those methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562379</commentid>
    <comment_count>1</comment_count>
      <attachid>128288</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-02-22 14:14:19 -0800</bug_when>
    <thetext>Created attachment 128288
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562406</commentid>
    <comment_count>2</comment_count>
      <attachid>128288</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-02-22 14:46:42 -0800</bug_when>
    <thetext>Comment on attachment 128288
Patch.

This could work a lot better if we just call something like TextureMapperShaderProgram::prepare that deals with the shader-specific aspects, and then do the drawing in a common drawTexture function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562695</commentid>
    <comment_count>3</comment_count>
      <attachid>128368</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-02-22 19:05:37 -0800</bug_when>
    <thetext>Created attachment 128368
Patch.

Second try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563192</commentid>
    <comment_count>4</comment_count>
      <attachid>128368</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-02-23 10:12:57 -0800</bug_when>
    <thetext>Comment on attachment 128368
Patch.

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

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperShaderManager.cpp:214
&gt; +    glUniformMatrix4fv(m_matrixVariable, 1, GL_FALSE, m4);
&gt; +    glUniformMatrix4fv(m_sourceMatrixVariable, 1, GL_FALSE, m4src);
&gt; +    glUniform1i(m_sourceTextureVariable, 0);

Doesn&apos;t make sense that this part is here and not in the common function.
Let&apos;s have prepare() just receive opacity/mask.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperShaderManager.cpp:217
&gt; +    if (maskTexture &amp;&amp; maskTexture-&gt;isValid()) {

Early return

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperShaderManager.h:55
&gt; +    virtual void prepareToDraw(const GLfloat m4[], const GLfloat m4src[], float opacity, const BitmapTexture*) {}

Make it just prepare(opacity, mask)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563205</commentid>
    <comment_count>5</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-02-23 10:24:16 -0800</bug_when>
    <thetext>(In reply to comment #4)
Thanks for your review
&gt; (From update of attachment 128368 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=128368&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperShaderManager.cpp:214
&gt; &gt; +    glUniformMatrix4fv(m_matrixVariable, 1, GL_FALSE, m4);
&gt; &gt; +    glUniformMatrix4fv(m_sourceMatrixVariable, 1, GL_FALSE, m4src);
&gt; &gt; +    glUniform1i(m_sourceTextureVariable, 0);
&gt; 
&gt; Doesn&apos;t make sense that this part is here and not in the common function.
&gt; Let&apos;s have prepare() just receive opacity/mask.

Doing that will result in either more typecasting in the common function, or making the variables part of the base class again.
Am I missing something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563304</commentid>
    <comment_count>6</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-02-23 11:39:26 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; Thanks for your review
&gt; &gt; (From update of attachment 128368 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=128368&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperShaderManager.cpp:214
&gt; &gt; &gt; +    glUniformMatrix4fv(m_matrixVariable, 1, GL_FALSE, m4);
&gt; &gt; &gt; +    glUniformMatrix4fv(m_sourceMatrixVariable, 1, GL_FALSE, m4src);
&gt; &gt; &gt; +    glUniform1i(m_sourceTextureVariable, 0);
&gt; &gt; 
&gt; &gt; Doesn&apos;t make sense that this part is here and not in the common function.
&gt; &gt; Let&apos;s have prepare() just receive opacity/mask.
&gt; 
&gt; Doing that will result in either more typecasting in the common function, or making the variables part of the base class again.
&gt; Am I missing something?

They should be part of the base class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563587</commentid>
    <comment_count>7</comment_count>
      <attachid>128578</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-02-23 15:53:39 -0800</bug_when>
    <thetext>Created attachment 128578
Third try</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563708</commentid>
    <comment_count>8</comment_count>
      <attachid>128578</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-02-23 16:58:28 -0800</bug_when>
    <thetext>Comment on attachment 128578
Third try

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

Almost LGTM :) one fix and we&apos;re done.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperShaderManager.cpp:202
&gt; +void TextureMapperShaderProgramOpacityAndMask::prepare(const BitmapTexture* maskTexture)

I want opacity to be part of the parameters as well; it&apos;s ok if it&apos;s duplicated.
That&apos;s because we might want to add another shader that does not use opacity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563788</commentid>
    <comment_count>9</comment_count>
      <attachid>128624</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-02-23 18:16:08 -0800</bug_when>
    <thetext>Created attachment 128624
Patch.

Merge and address comment #8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564129</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2012-02-24 02:20:23 -0800</bug_when>
    <thetext>Attachment 128624 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/platform/graphics/texmap/TextureMapperShaderManager.h:55:  Missing space inside { }.  [whitespace/braces] [5]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564282</commentid>
    <comment_count>11</comment_count>
      <attachid>128624</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-02-24 06:38:10 -0800</bug_when>
    <thetext>Comment on attachment 128624
Patch.

LGTM
Please fix minor style issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564326</commentid>
    <comment_count>12</comment_count>
      <attachid>128736</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-02-24 07:54:51 -0800</bug_when>
    <thetext>Created attachment 128736
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564352</commentid>
    <comment_count>13</comment_count>
      <attachid>128736</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-24 09:03:04 -0800</bug_when>
    <thetext>Comment on attachment 128736
Patch for landing.

Clearing flags on attachment: 128736

Committed r108810: &lt;http://trac.webkit.org/changeset/108810&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564353</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-24 09:03:13 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564413</commentid>
    <comment_count>15</comment_count>
      <attachid>128736</attachid>
    <who name="Rafael Brandao">rafael.lobo</who>
    <bug_when>2012-02-24 10:03:24 -0800</bug_when>
    <thetext>Comment on attachment 128736
Patch for landing.

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

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperShaderManager.h:56
&gt; +    GLint matrixVariable() { return m_matrixVariable; }

Would it make any difference to use &quot;GLint matrixVariable() const { ... }&quot; instead? It may be more code style friendly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564573</commentid>
    <comment_count>16</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-02-24 13:13:38 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 128736 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=128736&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperShaderManager.h:56
&gt; &gt; +    GLint matrixVariable() { return m_matrixVariable; }
&gt; 
&gt; Would it make any difference to use &quot;GLint matrixVariable() const { ... }&quot; instead? It may be more code style friendly.

I agree, my oversight.
Yael, can you clean up some of the constness in the new classes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564759</commentid>
    <comment_count>17</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-02-24 16:36:49 -0800</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=79545</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128288</attachid>
            <date>2012-02-22 14:14:19 -0800</date>
            <delta_ts>2012-02-22 19:05:37 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>79143.patch</filename>
            <type>text/plain</type>
            <size>9622</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODU0NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAyLTIyICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAgICBbVGV4bWFwXSBDb25zb2xp
ZGF0ZSB0aGUgY29tbW9uIHBhcnRzIG9mIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MTQzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBDb21i
aW5lIGRyYXdUZXh0dXJlU2ltcGxlIGFuZCBkcmF3VGV4dHVyZU9wYWNpdHlBbmRNYXNrIGludG8g
ZHJhd1RleHR1cmUsCisgICAgICAgIHdpdGggbW9yZSBwYXJhbWV0ZXJzIGJlaW5nIHBhc3NlZC4K
KyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oOgorICAgICAgICAoV2ViQ29yZSk6
CisKIDIwMTItMDItMjIgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBDcmFzaCBkdWUgdG8gYWNjZXNzaW5nIHJlbW92ZWQgcGFyZW50IGxpbmVib3hlcyB3
aGVuIGNsZWFyaW5nIHZpZXcgc2VsZWN0aW9uLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAJ
KHJldmlzaW9uIDEwODU0MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODYsMTYgKzI4Niwx
NyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUoY29uc3QKIAogdm9pZCBUZXh0
dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBj
b25zdCBGbG9hdFNpemUmIHJlbGF0aXZlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFj
aXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSkKIHsKLSAgICBpZiAobWFza1Rl
eHR1cmUpCi0gICAgICAgIGRyYXdUZXh0dXJlV2l0aE1hc2tBbmRPcGFjaXR5KHRleHR1cmUsIGZs
YWdzLCByZWxhdGl2ZVNpemUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSwg
bWFza1RleHR1cmUpOwotICAgIGVsc2UKLSAgICAgICAgZHJhd1RleHR1cmVTaW1wbGUodGV4dHVy
ZSwgZmxhZ3MsIHJlbGF0aXZlU2l6ZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFj
aXR5LCBtYXNrVGV4dHVyZSk7CisgICAgaWYgKG1hc2tUZXh0dXJlKSB7CisgICAgICAgIFJlZlB0
cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbU9wYWNpdHlBbmRNYXNrPiBzaGFkZXJJbmZvID0g
ZGF0YSgpLnNoYXJlZEdMRGF0YSgpLnRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmdldFNoYWRl
clByb2dyYW08VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1PcGFjaXR5QW5kTWFzaz4oKTsKKyAg
ICAgICAgZHJhd1RleHR1cmUodGV4dHVyZSwgZmxhZ3MsIHJlbGF0aXZlU2l6ZSwgdGFyZ2V0UmVj
dCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5LCBtYXNrVGV4dHVyZSwgc2hhZGVySW5mby5nZXQo
KSwgc2hhZGVySW5mby0+bWF0cml4VmFyaWFibGUoKSwgc2hhZGVySW5mby0+c291cmNlTWF0cml4
VmFyaWFibGUoKSwgc2hhZGVySW5mby0+c291cmNlVGV4dHVyZVZhcmlhYmxlKCksIHNoYWRlcklu
Zm8tPm9wYWNpdHlWYXJpYWJsZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBSZWZQdHI8VGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW1TaW1wbGU+IHNoYWRlckluZm8gPSBkYXRhKCkuc2hhcmVk
R0xEYXRhKCkudGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuZ2V0U2hhZGVyUHJvZ3JhbTxUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbVNpbXBsZT4oKTsKKyAgICAgICAgZHJhd1RleHR1cmUodGV4
dHVyZSwgZmxhZ3MsIHJlbGF0aXZlU2l6ZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBv
cGFjaXR5LCBtYXNrVGV4dHVyZSwgc2hhZGVySW5mby5nZXQoKSwgc2hhZGVySW5mby0+bWF0cml4
VmFyaWFibGUoKSwgc2hhZGVySW5mby0+c291cmNlTWF0cml4VmFyaWFibGUoKSwgc2hhZGVySW5m
by0+c291cmNlVGV4dHVyZVZhcmlhYmxlKCksIHNoYWRlckluZm8tPm9wYWNpdHlWYXJpYWJsZSgp
KTsKKyAgICB9CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZVdpdGhNYXNr
QW5kT3BhY2l0eSh1aW50MzJfdCB0ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgRmxvYXRTaXpl
JiByZWxhdGl2ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0
bWFwVGV4dHVyZSogbWFza1RleHR1cmUpCit2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1
cmUodWludDMyX3QgdGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEZsb2F0U2l6ZSYgcmVsYXRp
dmVTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1
cmUqIG1hc2tUZXh0dXJlLCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSogc2hhZGVySW5mbywg
aW50IG1hdHJpeFZhcmlhYmxlLCBpbnQgc291cmNlTWF0cml4VmFyaWFibGUsIGludCBzb3VyY2VU
ZXh0dXJlVmFyaWFibGUsIGludCBvcGFjaXR5VmFyaWFibGUpCiB7Ci0gICAgUmVmUHRyPFRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtT3BhY2l0eUFuZE1hc2s+IHNoYWRlckluZm8gPSBkYXRhKCku
c2hhcmVkR0xEYXRhKCkudGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuZ2V0U2hhZGVyUHJvZ3Jh
bTxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbU9wYWNpdHlBbmRNYXNrPigpOwotCiAgICAgR0xf
Q01EKGdsVXNlUHJvZ3JhbShzaGFkZXJJbmZvLT5pZCgpKSkKICAgICBHTF9DTUQoZ2xFbmFibGVW
ZXJ0ZXhBdHRyaWJBcnJheShzaGFkZXJJbmZvLT52ZXJ0ZXhBdHRyaWIoKSkpCiAgICAgR0xfQ01E
KGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCkpCkBAIC0zMjEsMTIgKzMyMiwxMyBAQCB2b2lk
IFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmVXaXRoTWFzCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMCwgMCwgMSwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLCAoZmxhZ3MgJiBTaG91bGRGbGlwVGV4dHVyZSkgPyByZWxhdGl2ZVNpemUu
aGVpZ2h0KCkgOiAwLCAwLCAxfTsKIAotICAgIEdMX0NNRChnbFVuaWZvcm1NYXRyaXg0ZnYoc2hh
ZGVySW5mby0+bWF0cml4VmFyaWFibGUoKSwgMSwgR0xfRkFMU0UsIG00KSkKLSAgICBHTF9DTUQo
Z2xVbmlmb3JtTWF0cml4NGZ2KHNoYWRlckluZm8tPnNvdXJjZU1hdHJpeFZhcmlhYmxlKCksIDEs
IEdMX0ZBTFNFLCBtNHNyYykpCi0gICAgR0xfQ01EKGdsVW5pZm9ybTFpKHNoYWRlckluZm8tPnNv
dXJjZVRleHR1cmVWYXJpYWJsZSgpLCAwKSkKLSAgICBHTF9DTUQoZ2xVbmlmb3JtMWYoc2hhZGVy
SW5mby0+b3BhY2l0eVZhcmlhYmxlKCksIG9wYWNpdHkpKQorICAgIEdMX0NNRChnbFVuaWZvcm1N
YXRyaXg0ZnYobWF0cml4VmFyaWFibGUsIDEsIEdMX0ZBTFNFLCBtNCkpCisgICAgR0xfQ01EKGds
VW5pZm9ybU1hdHJpeDRmdihzb3VyY2VNYXRyaXhWYXJpYWJsZSwgMSwgR0xfRkFMU0UsIG00c3Jj
KSkKKyAgICBHTF9DTUQoZ2xVbmlmb3JtMWkoc291cmNlVGV4dHVyZVZhcmlhYmxlLCAwKSkKKyAg
ICBHTF9DTUQoZ2xVbmlmb3JtMWYob3BhY2l0eVZhcmlhYmxlLCBvcGFjaXR5KSkKIAotICAgIGlm
IChtYXNrVGV4dHVyZS0+aXNWYWxpZCgpKSB7CisgICAgaWYgKG1hc2tUZXh0dXJlICYmIG1hc2tU
ZXh0dXJlLT5pc1ZhbGlkKCkpIHsKKyAgICAgICAgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1P
cGFjaXR5QW5kTWFzayogb3BhY2l0eUFuZE1hc2tTaGFkZXJJbmZvID0gc3RhdGljX2Nhc3Q8VGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW1PcGFjaXR5QW5kTWFzayo+KHNoYWRlckluZm8pOwogICAg
ICAgICBjb25zdCBCaXRtYXBUZXh0dXJlR0wqIG1hc2tUZXh0dXJlR0wgPSBzdGF0aWNfY2FzdDxj
b25zdCBCaXRtYXBUZXh0dXJlR0wqPihtYXNrVGV4dHVyZSk7CiAgICAgICAgIEdMX0NNRChnbEFj
dGl2ZVRleHR1cmUoR0xfVEVYVFVSRTEpKQogICAgICAgICBHTF9DTUQoZ2xCaW5kVGV4dHVyZShH
TF9URVhUVVJFXzJELCBtYXNrVGV4dHVyZUdMLT5pZCgpKSkKQEAgLTMzNCw1MyArMzM2LDEyIEBA
IHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZVdpdGhNYXMKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgbWFza1RleHR1cmVHTC0+cmVsYXRpdmVTaXpl
KCkuaGVpZ2h0KCksIDAsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAsIDAsIDEsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAsIDAsIDAsIDF9OwotICAgICAgICBHTF9DTUQoZ2xVbmlmb3JtTWF0cml4NGZ2KHNoYWRlcklu
Zm8tPm1hc2tNYXRyaXhWYXJpYWJsZSgpLCAxLCBHTF9GQUxTRSwgbTRtYXNrKSk7Ci0gICAgICAg
IEdMX0NNRChnbFVuaWZvcm0xaShzaGFkZXJJbmZvLT5tYXNrVGV4dHVyZVZhcmlhYmxlKCksIDEp
KQorICAgICAgICBHTF9DTUQoZ2xVbmlmb3JtTWF0cml4NGZ2KG9wYWNpdHlBbmRNYXNrU2hhZGVy
SW5mby0+bWFza01hdHJpeFZhcmlhYmxlKCksIDEsIEdMX0ZBTFNFLCBtNG1hc2spKTsKKyAgICAg
ICAgR0xfQ01EKGdsVW5pZm9ybTFpKG9wYWNpdHlBbmRNYXNrU2hhZGVySW5mby0+bWFza1RleHR1
cmVWYXJpYWJsZSgpLCAxKSkKICAgICAgICAgR0xfQ01EKGdsQWN0aXZlVGV4dHVyZShHTF9URVhU
VVJFMCkpCiAgICAgfQogCi0gICAgR0xfQ01EKGdsQmxlbmRGdW5jKEdMX09ORSwgR0xfT05FX01J
TlVTX1NSQ19BTFBIQSkpCi0gICAgR0xfQ01EKGdsRW5hYmxlKEdMX0JMRU5EKSkKLQotICAgIEdM
X0NNRChnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVfRkFOLCAwLCA0KSkKLSAgICBHTF9DTUQoZ2xE
aXNhYmxlVmVydGV4QXR0cmliQXJyYXkoc2hhZGVySW5mby0+dmVydGV4QXR0cmliKCkpKQotfQot
Ci12b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmVTaW1wbGUodWludDMyX3QgdGV4dHVy
ZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEZsb2F0U2l6ZSYgcmVsYXRpdmVTaXplLCBjb25zdCBGbG9h
dFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdN
YXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqKQotewotICAgIFJlZlB0
cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbVNpbXBsZT4gc2hhZGVySW5mbyA9IGRhdGEoKS5z
aGFyZWRHTERhdGEoKS50ZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5nZXRTaGFkZXJQcm9ncmFt
PFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtU2ltcGxlPigpOwotCi0gICAgR0xfQ01EKGdsVXNl
UHJvZ3JhbShzaGFkZXJJbmZvLT5pZCgpKSkKLSAgICBHTF9DTUQoZ2xFbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheShzaGFkZXJJbmZvLT52ZXJ0ZXhBdHRyaWIoKSkpCi0gICAgR0xfQ01EKGdsQWN0aXZl
VGV4dHVyZShHTF9URVhUVVJFMCkpCi0gICAgR0xfQ01EKGdsQmluZFRleHR1cmUoR0xfVEVYVFVS
RV8yRCwgdGV4dHVyZSkpCi0gICAgR0xfQ01EKGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIs
IDApKQotICAgIGNvbnN0IEdMZmxvYXQgdW5pdFJlY3RbXSA9IHswLCAwLCAxLCAwLCAxLCAxLCAw
LCAxfTsKLSAgICBHTF9DTUQoZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHNoYWRlckluZm8tPnZlcnRl
eEF0dHJpYigpLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIHVuaXRSZWN0KSkKLQotICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KGRhdGEoKS5w
cm9qZWN0aW9uTWF0cml4KS5tdWx0aXBseShtb2RlbFZpZXdNYXRyaXgpLm11bHRpcGx5KFRyYW5z
Zm9ybWF0aW9uTWF0cml4KAotICAgICAgICAgICAgdGFyZ2V0UmVjdC53aWR0aCgpLCAwLCAwLCAw
LAotICAgICAgICAgICAgMCwgdGFyZ2V0UmVjdC5oZWlnaHQoKSwgMCwgMCwKLSAgICAgICAgICAg
IDAsIDAsIDEsIDAsCi0gICAgICAgICAgICB0YXJnZXRSZWN0LngoKSwgdGFyZ2V0UmVjdC55KCks
IDAsIDEpKTsKLQotICAgIGNvbnN0IEdMZmxvYXQgbTRbXSA9IHsKLSAgICAgICAgbWF0cml4Lm0x
MSgpLCBtYXRyaXgubTEyKCksIG1hdHJpeC5tMTMoKSwgbWF0cml4Lm0xNCgpLAotICAgICAgICBt
YXRyaXgubTIxKCksIG1hdHJpeC5tMjIoKSwgbWF0cml4Lm0yMygpLCBtYXRyaXgubTI0KCksCi0g
ICAgICAgIG1hdHJpeC5tMzEoKSwgbWF0cml4Lm0zMigpLCBtYXRyaXgubTMzKCksIG1hdHJpeC5t
MzQoKSwKLSAgICAgICAgbWF0cml4Lm00MSgpLCBtYXRyaXgubTQyKCksIG1hdHJpeC5tNDMoKSwg
bWF0cml4Lm00NCgpCi0gICAgfTsKLSAgICBjb25zdCBHTGZsb2F0IG00c3JjW10gPSB7cmVsYXRp
dmVTaXplLndpZHRoKCksIDAsIDAsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMCwgcmVsYXRpdmVTaXplLmhlaWdodCgpICogKChmbGFncyAmIFNob3VsZEZsaXBUZXh0
dXJlKSA/IC0xIDogMSksIDAsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMCwgMCwgMSwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAo
ZmxhZ3MgJiBTaG91bGRGbGlwVGV4dHVyZSkgPyByZWxhdGl2ZVNpemUuaGVpZ2h0KCkgOiAwLCAw
LCAxfTsKLQotICAgIEdMX0NNRChnbFVuaWZvcm1NYXRyaXg0ZnYoc2hhZGVySW5mby0+bWF0cml4
VmFyaWFibGUoKSwgMSwgR0xfRkFMU0UsIG00KSkKLSAgICBHTF9DTUQoZ2xVbmlmb3JtTWF0cml4
NGZ2KHNoYWRlckluZm8tPnNvdXJjZU1hdHJpeFZhcmlhYmxlKCksIDEsIEdMX0ZBTFNFLCBtNHNy
YykpCi0gICAgR0xfQ01EKGdsVW5pZm9ybTFpKHNoYWRlckluZm8tPnNvdXJjZVRleHR1cmVWYXJp
YWJsZSgpLCAwKSkKLSAgICBHTF9DTUQoZ2xVbmlmb3JtMWYoc2hhZGVySW5mby0+b3BhY2l0eVZh
cmlhYmxlKCksIG9wYWNpdHkpKQotCi0gICAgYm9vbCBuZWVkc0JsZW5kaW5nID0gKGZsYWdzICYg
U3VwcG9ydHNCbGVuZGluZykgfHwgb3BhY2l0eSA8IDAuOTk7CisgICAgYm9vbCBuZWVkc0JsZW5k
aW5nID0gKGZsYWdzICYgU3VwcG9ydHNCbGVuZGluZykgfHwgb3BhY2l0eSA8IDAuOTkgfHwgbWFz
a1RleHR1cmU7CiAKICAgICBpZiAobmVlZHNCbGVuZGluZykgewogICAgICAgICBHTF9DTUQoZ2xC
bGVuZEZ1bmMoR0xfT05FLCBHTF9PTkVfTUlOVVNfU1JDX0FMUEhBKSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckdMLmgJKHJldmlzaW9uIDEwODU0MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiAr
MzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRleHR1cmVNYXBwZXJHTERhdGE7
CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bTsKIAogLy8gQW4gT3BlbkdMLUVTMiBpbXBsZW1lbnRhdGlvbiBvZiBUZXh0dXJlTWFwcGVyLgog
Y2xhc3MgVGV4dHVyZU1hcHBlckdMIDogcHVibGljIFRleHR1cmVNYXBwZXIgewpAQCAtNDgsOCAr
NDksNyBAQCBwdWJsaWM6CiAgICAgLy8gcmVpbXBzIGZyb20gVGV4dHVyZU1hcHBlcgogICAgIHZp
cnR1YWwgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBjb25zdCBC
aXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSk7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJl
KHVpbnQzMl90IHRleHR1cmUsIEZsYWdzLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJp
dG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlKTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmVX
aXRoTWFza0FuZE9wYWNpdHkodWludDMyX3QgdGV4dHVyZSwgRmxhZ3MsIGNvbnN0IEZsb2F0U2l6
ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQg
b3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUpOwotICAgIHZpcnR1YWwg
dm9pZCBkcmF3VGV4dHVyZVNpbXBsZSh1aW50MzJfdCB0ZXh0dXJlLCBGbGFncywgY29uc3QgRmxv
YXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBm
bG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSk7CisgICAgdmly
dHVhbCB2b2lkIGRyYXdUZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIEZsYWdzLCBjb25zdCBGbG9h
dFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZs
b2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlLCBUZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbSogc2hhZGVySW5mbywgaW50LCBpbnQsIGludCwgaW50KTsKICAgICB2
aXJ0dWFsIHZvaWQgYmluZFN1cmZhY2UoQml0bWFwVGV4dHVyZSogc3VyZmFjZSk7CiAgICAgdmly
dHVhbCB2b2lkIGJlZ2luQ2xpcChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZs
b2F0UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBiZWdpblBhaW50aW5nKCk7Cg==
</data>
<flag name="review"
          id="130624"
          type_id="1"
          status="-"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128368</attachid>
            <date>2012-02-22 19:05:37 -0800</date>
            <delta_ts>2012-02-23 15:53:39 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>79143.patch</filename>
            <type>text/plain</type>
            <size>15066</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODU5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEyLTAyLTIyICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAgICBbVGV4bWFwXSBDb25zb2xp
ZGF0ZSB0aGUgY29tbW9uIHBhcnRzIG9mIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MTQzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBDb21i
aW5lIGRyYXdUZXh0dXJlU2ltcGxlIGFuZCBkcmF3VGV4dHVyZU9wYWNpdHlBbmRNYXNrIGludG8g
ZHJhd1RleHR1cmUuCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gbmV3IGZ1bmN0aW9uYWxpdHku
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNw
cDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdM
OjpkcmF3VGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJHTC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChCaXRtYXBUZXh0dXJl
R0wpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjp+Qml0bWFwVGV4dHVyZUdM
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6aWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwVGV4dHVyZUdMOjpyZWxhdGl2ZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwVGV4dHVyZUdMOjpzZXRUZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcFRleHR1cmVHTDo6Qml0bWFwVGV4dHVyZUdMKToKKwogMjAxMi0wMi0yMiAgQWRyaWVubmUg
V2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gVW5yZXZpZXdl
ZCBzcGVjdWxhdGl2ZSBjaHJvbWl1bS1tYWMgYnVpbGQgZml4LgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5jcHAJKHJldmlzaW9uIDEwODU0MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODEs
NDEgKzE4MSw2IEBAIHN0cnVjdCBUZXh0dXJlTWFwcGVyR0xEYXRhIHsKICAgICBSZWZQdHI8U2hh
cmVkR0xEYXRhPiBtX3NoYXJlZEdMRGF0YTsKIH07CiAKLWNsYXNzIEJpdG1hcFRleHR1cmVHTCA6
IHB1YmxpYyBCaXRtYXBUZXh0dXJlIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJv
eSgpOwotICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29s
IGlzVmFsaWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzZXQoKTsKLSAgICB2b2lk
IGJpbmQoKTsKLSAgICB+Qml0bWFwVGV4dHVyZUdMKCkgeyBkZXN0cm95KCk7IH0KLSAgICB2aXJ0
dWFsIHVpbnQzMl90IGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQotICAgIGlubGluZSBGbG9h
dFNpemUgcmVsYXRpdmVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9yZWxhdGl2ZVNpemU7IH0KLSAg
ICB2b2lkIHNldFRleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlckdMKiB0ZXhtYXApIHsgbV90ZXh0
dXJlTWFwcGVyID0gdGV4bWFwOyB9Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50cyhJbWFnZSosIGNv
bnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JiwgUGl4ZWxGb3JtYXQpOwotICAgIHZvaWQgdXBk
YXRlQ29udGVudHMoY29uc3Qgdm9pZCosIGNvbnN0IEludFJlY3QmKTsKLQotcHJpdmF0ZToKLSAg
ICBHTHVpbnQgbV9pZDsKLSAgICBGbG9hdFNpemUgbV9yZWxhdGl2ZVNpemU7Ci0gICAgSW50U2l6
ZSBtX3RleHR1cmVTaXplOwotICAgIEludFJlY3QgbV9kaXJ0eVJlY3Q7Ci0gICAgR0x1aW50IG1f
ZmJvOwotICAgIEdMdWludCBtX3JibzsKLSAgICBib29sIG1fc3VyZmFjZU5lZWRzUmVzZXQ7Ci0g
ICAgVGV4dHVyZU1hcHBlckdMKiBtX3RleHR1cmVNYXBwZXI7Ci0gICAgQml0bWFwVGV4dHVyZUdM
KCkKLSAgICAgICAgOiBtX2lkKDApCi0gICAgICAgICwgbV9mYm8oMCkKLSAgICAgICAgLCBtX3Ji
bygwKQotICAgICAgICAsIG1fc3VyZmFjZU5lZWRzUmVzZXQodHJ1ZSkKLSAgICAgICAgLCBtX3Rl
eHR1cmVNYXBwZXIoMCkKLSAgICB7Ci0gICAgfQotCi0gICAgZnJpZW5kIGNsYXNzIFRleHR1cmVN
YXBwZXJHTDsKLX07Ci0KIFRleHR1cmVNYXBwZXJHTDo6VGV4dHVyZU1hcHBlckdMKCkKICAgICA6
IG1fZGF0YShuZXcgVGV4dHVyZU1hcHBlckdMRGF0YSkKICAgICAsIG1fY29udGV4dCgwKQpAQCAt
Mjg2LDY5ICsyNTEsMTEgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKGNvbnN0
CiAKIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlLCBG
bGFncyBmbGFncywgY29uc3QgRmxvYXRTaXplJiByZWxhdGl2ZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJp
eCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUpCiB7Cisg
ICAgUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiBzaGFkZXJJbmZvOwogICAgIGlm
IChtYXNrVGV4dHVyZSkKLSAgICAgICAgZHJhd1RleHR1cmVXaXRoTWFza0FuZE9wYWNpdHkodGV4
dHVyZSwgZmxhZ3MsIHJlbGF0aXZlU2l6ZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBv
cGFjaXR5LCBtYXNrVGV4dHVyZSk7CisgICAgICAgIHNoYWRlckluZm8gPSBkYXRhKCkuc2hhcmVk
R0xEYXRhKCkudGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuZ2V0U2hhZGVyUHJvZ3JhbTxUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbU9wYWNpdHlBbmRNYXNrPigpOwogICAgIGVsc2UKLSAgICAg
ICAgZHJhd1RleHR1cmVTaW1wbGUodGV4dHVyZSwgZmxhZ3MsIHJlbGF0aXZlU2l6ZSwgdGFyZ2V0
UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5LCBtYXNrVGV4dHVyZSk7Ci19Ci0KLXZvaWQg
VGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZVdpdGhNYXNrQW5kT3BhY2l0eSh1aW50MzJfdCB0
ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgRmxvYXRTaXplJiByZWxhdGl2ZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVs
Vmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1
cmUpCi17Ci0gICAgUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtT3BhY2l0eUFuZE1h
c2s+IHNoYWRlckluZm8gPSBkYXRhKCkuc2hhcmVkR0xEYXRhKCkudGV4dHVyZU1hcHBlclNoYWRl
ck1hbmFnZXIuZ2V0U2hhZGVyUHJvZ3JhbTxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbU9wYWNp
dHlBbmRNYXNrPigpOwotCi0gICAgR0xfQ01EKGdsVXNlUHJvZ3JhbShzaGFkZXJJbmZvLT5pZCgp
KSkKLSAgICBHTF9DTUQoZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShzaGFkZXJJbmZvLT52ZXJ0
ZXhBdHRyaWIoKSkpCi0gICAgR0xfQ01EKGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCkpCi0g
ICAgR0xfQ01EKGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSkpCi0gICAgR0xf
Q01EKGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIDApKQotICAgIGNvbnN0IEdMZmxvYXQg
dW5pdFJlY3RbXSA9IHswLCAwLCAxLCAwLCAxLCAxLCAwLCAxfTsKLSAgICBHTF9DTUQoZ2xWZXJ0
ZXhBdHRyaWJQb2ludGVyKHNoYWRlckluZm8tPnZlcnRleEF0dHJpYigpLCAyLCBHTF9GTE9BVCwg
R0xfRkFMU0UsIDAsIHVuaXRSZWN0KSkKLQotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJp
eCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KGRhdGEoKS5wcm9qZWN0aW9uTWF0cml4KS5tdWx0aXBs
eShtb2RlbFZpZXdNYXRyaXgpLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4KAotICAgICAg
ICAgICAgdGFyZ2V0UmVjdC53aWR0aCgpLCAwLCAwLCAwLAotICAgICAgICAgICAgMCwgdGFyZ2V0
UmVjdC5oZWlnaHQoKSwgMCwgMCwKLSAgICAgICAgICAgIDAsIDAsIDEsIDAsCi0gICAgICAgICAg
ICB0YXJnZXRSZWN0LngoKSwgdGFyZ2V0UmVjdC55KCksIDAsIDEpKTsKLQotICAgIGNvbnN0IEdM
ZmxvYXQgbTRbXSA9IHsKLSAgICAgICAgbWF0cml4Lm0xMSgpLCBtYXRyaXgubTEyKCksIG1hdHJp
eC5tMTMoKSwgbWF0cml4Lm0xNCgpLAotICAgICAgICBtYXRyaXgubTIxKCksIG1hdHJpeC5tMjIo
KSwgbWF0cml4Lm0yMygpLCBtYXRyaXgubTI0KCksCi0gICAgICAgIG1hdHJpeC5tMzEoKSwgbWF0
cml4Lm0zMigpLCBtYXRyaXgubTMzKCksIG1hdHJpeC5tMzQoKSwKLSAgICAgICAgbWF0cml4Lm00
MSgpLCBtYXRyaXgubTQyKCksIG1hdHJpeC5tNDMoKSwgbWF0cml4Lm00NCgpCi0gICAgfTsKLSAg
ICBjb25zdCBHTGZsb2F0IG00c3JjW10gPSB7cmVsYXRpdmVTaXplLndpZHRoKCksIDAsIDAsIDAs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgcmVsYXRpdmVTaXplLmhl
aWdodCgpICogKChmbGFncyAmIFNob3VsZEZsaXBUZXh0dXJlKSA/IC0xIDogMSksIDAsIDAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMSwgMCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAoZmxhZ3MgJiBTaG91bGRGbGlwVGV4dHVy
ZSkgPyByZWxhdGl2ZVNpemUuaGVpZ2h0KCkgOiAwLCAwLCAxfTsKLQotICAgIEdMX0NNRChnbFVu
aWZvcm1NYXRyaXg0ZnYoc2hhZGVySW5mby0+bWF0cml4VmFyaWFibGUoKSwgMSwgR0xfRkFMU0Us
IG00KSkKLSAgICBHTF9DTUQoZ2xVbmlmb3JtTWF0cml4NGZ2KHNoYWRlckluZm8tPnNvdXJjZU1h
dHJpeFZhcmlhYmxlKCksIDEsIEdMX0ZBTFNFLCBtNHNyYykpCi0gICAgR0xfQ01EKGdsVW5pZm9y
bTFpKHNoYWRlckluZm8tPnNvdXJjZVRleHR1cmVWYXJpYWJsZSgpLCAwKSkKLSAgICBHTF9DTUQo
Z2xVbmlmb3JtMWYoc2hhZGVySW5mby0+b3BhY2l0eVZhcmlhYmxlKCksIG9wYWNpdHkpKQotCi0g
ICAgaWYgKG1hc2tUZXh0dXJlLT5pc1ZhbGlkKCkpIHsKLSAgICAgICAgY29uc3QgQml0bWFwVGV4
dHVyZUdMKiBtYXNrVGV4dHVyZUdMID0gc3RhdGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUdM
Kj4obWFza1RleHR1cmUpOwotICAgICAgICBHTF9DTUQoZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRV
UkUxKSkKLSAgICAgICAgR0xfQ01EKGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbWFza1Rl
eHR1cmVHTC0+aWQoKSkpCi0gICAgICAgIGNvbnN0IEdMZmxvYXQgbTRtYXNrW10gPSB7bWFza1Rl
eHR1cmVHTC0+cmVsYXRpdmVTaXplKCkud2lkdGgoKSwgMCwgMCwgMCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgbWFza1RleHR1cmVHTC0+cmVsYXRpdmVTaXpl
KCkuaGVpZ2h0KCksIDAsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAsIDAsIDEsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAsIDAsIDAsIDF9OwotICAgICAgICBHTF9DTUQoZ2xVbmlmb3JtTWF0cml4NGZ2KHNoYWRlcklu
Zm8tPm1hc2tNYXRyaXhWYXJpYWJsZSgpLCAxLCBHTF9GQUxTRSwgbTRtYXNrKSk7Ci0gICAgICAg
IEdMX0NNRChnbFVuaWZvcm0xaShzaGFkZXJJbmZvLT5tYXNrVGV4dHVyZVZhcmlhYmxlKCksIDEp
KQotICAgICAgICBHTF9DTUQoZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKSkKLSAgICB9Ci0K
LSAgICBHTF9DTUQoZ2xCbGVuZEZ1bmMoR0xfT05FLCBHTF9PTkVfTUlOVVNfU1JDX0FMUEhBKSkK
LSAgICBHTF9DTUQoZ2xFbmFibGUoR0xfQkxFTkQpKQotCi0gICAgR0xfQ01EKGdsRHJhd0FycmF5
cyhHTF9UUklBTkdMRV9GQU4sIDAsIDQpKQotICAgIEdMX0NNRChnbERpc2FibGVWZXJ0ZXhBdHRy
aWJBcnJheShzaGFkZXJJbmZvLT52ZXJ0ZXhBdHRyaWIoKSkpCi19Ci0KLXZvaWQgVGV4dHVyZU1h
cHBlckdMOjpkcmF3VGV4dHVyZVNpbXBsZSh1aW50MzJfdCB0ZXh0dXJlLCBGbGFncyBmbGFncywg
Y29uc3QgRmxvYXRTaXplJiByZWxhdGl2ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVj
dCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3Bh
Y2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSopCi17Ci0gICAgUmVmUHRyPFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtU2ltcGxlPiBzaGFkZXJJbmZvID0gZGF0YSgpLnNoYXJlZEdMRGF0YSgpLnRl
eHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmdldFNoYWRlclByb2dyYW08VGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW1TaW1wbGU+KCk7CisgICAgICAgIHNoYWRlckluZm8gPSBkYXRhKCkuc2hhcmVk
R0xEYXRhKCkudGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuZ2V0U2hhZGVyUHJvZ3JhbTxUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbVNpbXBsZT4oKTsKIAogICAgIEdMX0NNRChnbFVzZVByb2dy
YW0oc2hhZGVySW5mby0+aWQoKSkpCiAgICAgR0xfQ01EKGdsRW5hYmxlVmVydGV4QXR0cmliQXJy
YXkoc2hhZGVySW5mby0+dmVydGV4QXR0cmliKCkpKQpAQCAtMzc1LDEyICsyODIsOSBAQCB2b2lk
IFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmVTaW1wbGUoCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMCwgMCwgMSwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLCAoZmxhZ3MgJiBTaG91bGRGbGlwVGV4dHVyZSkgPyByZWxhdGl2ZVNpemUu
aGVpZ2h0KCkgOiAwLCAwLCAxfTsKIAotICAgIEdMX0NNRChnbFVuaWZvcm1NYXRyaXg0ZnYoc2hh
ZGVySW5mby0+bWF0cml4VmFyaWFibGUoKSwgMSwgR0xfRkFMU0UsIG00KSkKLSAgICBHTF9DTUQo
Z2xVbmlmb3JtTWF0cml4NGZ2KHNoYWRlckluZm8tPnNvdXJjZU1hdHJpeFZhcmlhYmxlKCksIDEs
IEdMX0ZBTFNFLCBtNHNyYykpCi0gICAgR0xfQ01EKGdsVW5pZm9ybTFpKHNoYWRlckluZm8tPnNv
dXJjZVRleHR1cmVWYXJpYWJsZSgpLCAwKSkKLSAgICBHTF9DTUQoZ2xVbmlmb3JtMWYoc2hhZGVy
SW5mby0+b3BhY2l0eVZhcmlhYmxlKCksIG9wYWNpdHkpKQorICAgIHNoYWRlckluZm8tPnByZXBh
cmVUb0RyYXcobTQsIG00c3JjLCBvcGFjaXR5LCBtYXNrVGV4dHVyZSk7CiAKLSAgICBib29sIG5l
ZWRzQmxlbmRpbmcgPSAoZmxhZ3MgJiBTdXBwb3J0c0JsZW5kaW5nKSB8fCBvcGFjaXR5IDwgMC45
OTsKKyAgICBib29sIG5lZWRzQmxlbmRpbmcgPSAoZmxhZ3MgJiBTdXBwb3J0c0JsZW5kaW5nKSB8
fCBvcGFjaXR5IDwgMC45OSB8fCBtYXNrVGV4dHVyZTsKIAogICAgIGlmIChuZWVkc0JsZW5kaW5n
KSB7CiAgICAgICAgIEdMX0NNRChnbEJsZW5kRnVuYyhHTF9PTkUsIEdMX09ORV9NSU5VU19TUkNf
QUxQSEEpKQpAQCAtNjUxLDcgKzU1NSw3IEBAIGJvb2wgVGV4dHVyZU1hcHBlckdMOjpiZWdpblNj
aXNzb3JDbGlwKGMKIGJvb2wgVGV4dHVyZU1hcHBlckdMOjplbmRTY2lzc29yQ2xpcCgpCiB7CiAg
ICAgZGF0YSgpLnNoYXJlZEdMRGF0YSgpLmNsaXBTdGFjay5yZW1vdmVMYXN0KCk7Ci0gICAgQVNT
RVJUKCFkYXRhKCkuc2hhcmVkR0xEYXRhKCkuY2xpcFN0YWNrLmlzRW1wdHkoKSk7CisgICAgaWYg
KGRhdGEoKS5zaGFyZWRHTERhdGEoKS5jbGlwU3RhY2suaXNFbXB0eSgpKSByZXR1cm4gZmFsc2U7
CiAKICAgICBJbnRSZWN0IHJlY3QgPSBkYXRhKCkuc2hhcmVkR0xEYXRhKCkuY2xpcFN0YWNrLmxh
c3QoKTsKICAgICBpZiAocmVjdC5pc0VtcHR5KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCShy
ZXZpc2lvbiAxMDg1NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckdMLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKIAog
I2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJP
cGVuR0xTaGltcy5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKICNpbmNsdWRlICJUcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oIgogCkBAIC0zMSw2ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgVGV4dHVyZU1hcHBlckdMRGF0YTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsK
K2NsYXNzIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOwogCiAvLyBBbiBPcGVuR0wtRVMyIGlt
cGxlbWVudGF0aW9uIG9mIFRleHR1cmVNYXBwZXIuCiBjbGFzcyBUZXh0dXJlTWFwcGVyR0wgOiBw
dWJsaWMgVGV4dHVyZU1hcHBlciB7CkBAIC00OCw4ICs1MCw2IEBAIHB1YmxpYzoKICAgICAvLyBy
ZWltcHMgZnJvbSBUZXh0dXJlTWFwcGVyCiAgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNv
bnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJl
KTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUodWludDMyX3QgdGV4dHVyZSwgRmxhZ3Ms
IGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUp
OwotICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZVdpdGhNYXNrQW5kT3BhY2l0eSh1aW50MzJf
dCB0ZXh0dXJlLCBGbGFncywgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0
dXJlKiBtYXNrVGV4dHVyZSk7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlU2ltcGxlKHVp
bnQzMl90IHRleHR1cmUsIEZsYWdzLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1h
cFRleHR1cmUqIG1hc2tUZXh0dXJlKTsKICAgICB2aXJ0dWFsIHZvaWQgYmluZFN1cmZhY2UoQml0
bWFwVGV4dHVyZSogc3VyZmFjZSk7CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luQ2xpcChjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIHZpcnR1YWwgdm9p
ZCBiZWdpblBhaW50aW5nKCk7CkBAIC03NCw2ICs3NCw0MSBAQCBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBCaXRtYXBUZXh0dXJlR0w7CiB9OwogCitjbGFzcyBCaXRtYXBUZXh0dXJlR0wgOiBw
dWJsaWMgQml0bWFwVGV4dHVyZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3ko
KTsKKyAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBp
c1ZhbGlkKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlc2V0KCk7CisgICAgdm9pZCBi
aW5kKCk7CisgICAgfkJpdG1hcFRleHR1cmVHTCgpIHsgZGVzdHJveSgpOyB9CisgICAgdmlydHVh
bCB1aW50MzJfdCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICBpbmxpbmUgRmxvYXRT
aXplIHJlbGF0aXZlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVsYXRpdmVTaXplOyB9CisgICAg
dm9pZCBzZXRUZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXJHTCogdGV4bWFwKSB7IG1fdGV4dHVy
ZU1hcHBlciA9IHRleG1hcDsgfQorICAgIHZvaWQgdXBkYXRlQ29udGVudHMoSW1hZ2UqLCBjb25z
dCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYsIFBpeGVsRm9ybWF0KTsKKyAgICB2b2lkIHVwZGF0
ZUNvbnRlbnRzKGNvbnN0IHZvaWQqLCBjb25zdCBJbnRSZWN0Jik7CisKK3ByaXZhdGU6CisgICAg
R0x1aW50IG1faWQ7CisgICAgRmxvYXRTaXplIG1fcmVsYXRpdmVTaXplOworICAgIEludFNpemUg
bV90ZXh0dXJlU2l6ZTsKKyAgICBJbnRSZWN0IG1fZGlydHlSZWN0OworICAgIEdMdWludCBtX2Zi
bzsKKyAgICBHTHVpbnQgbV9yYm87CisgICAgYm9vbCBtX3N1cmZhY2VOZWVkc1Jlc2V0OworICAg
IFRleHR1cmVNYXBwZXJHTCogbV90ZXh0dXJlTWFwcGVyOworICAgIEJpdG1hcFRleHR1cmVHTCgp
CisgICAgICAgIDogbV9pZCgwKQorICAgICAgICAsIG1fZmJvKDApCisgICAgICAgICwgbV9yYm8o
MCkKKyAgICAgICAgLCBtX3N1cmZhY2VOZWVkc1Jlc2V0KHRydWUpCisgICAgICAgICwgbV90ZXh0
dXJlTWFwcGVyKDApCisgICAgeworICAgIH0KKworICAgIGZyaWVuZCBjbGFzcyBUZXh0dXJlTWFw
cGVyR0w7Cit9OworCiAvLyBBbiBvZmZzY3JlZW4gYnVmZmVyIHRvIGJlIHJlbmRlcmVkIGJ5IHNv
ZnR3YXJlLgogc3RhdGljIGlubGluZSBpbnQgbmV4dFBvd2VyT2ZUd28oaW50IG51bSkKIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
U2hhZGVyTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmNwcAkocmV2aXNpb24g
MTA4NTk0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsOCBA
QAogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBVU0UoVEVYVFVSRV9NQVBQ
RVIpCiAKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAjaWZuZGVmIFRFWE1BUF9PUEVOR0xfRVNfMgpAQCAtMTcxLDYgKzE3MywxNCBAQCBjb25z
dCBjaGFyKiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbVNpCiAgICAgcmV0dXJuIGZyYWdtZW50
U2hhZGVyU291cmNlU2ltcGxlOwogfQogCit2b2lkIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFt
U2ltcGxlOjpwcmVwYXJlVG9EcmF3KGNvbnN0IEdMZmxvYXQgbTRbXSwgY29uc3QgR0xmbG9hdCBt
NHNyY1tdLCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKikKK3sKKyAgICBnbFVu
aWZvcm1NYXRyaXg0ZnYobV9tYXRyaXhWYXJpYWJsZSwgMSwgR0xfRkFMU0UsIG00KTsKKyAgICBn
bFVuaWZvcm1NYXRyaXg0ZnYobV9zb3VyY2VNYXRyaXhWYXJpYWJsZSwgMSwgR0xfRkFMU0UsIG00
c3JjKTsKKyAgICBnbFVuaWZvcm0xaShtX3NvdXJjZVRleHR1cmVWYXJpYWJsZSwgMCk7CisgICAg
Z2xVbmlmb3JtMWYobV9vcGFjaXR5VmFyaWFibGUsIG9wYWNpdHkpOworfQorCiBQYXNzUmVmUHRy
PFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtT3BhY2l0eUFuZE1hc2s+IFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtT3BhY2l0eUFuZE1hc2s6OmNyZWF0ZSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbU9wYWNpdHlBbmRNYXNrKCkpOwpAQCAt
MTk3LDYgKzIwNywyNyBAQCBjb25zdCBjaGFyKiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbU9w
CiAgICAgcmV0dXJuIGZyYWdtZW50U2hhZGVyU291cmNlT3BhY2l0eUFuZE1hc2s7CiB9CiAKK3Zv
aWQgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1PcGFjaXR5QW5kTWFzazo6cHJlcGFyZVRvRHJh
dyhjb25zdCBHTGZsb2F0IG00W10sIGNvbnN0IEdMZmxvYXQgbTRzcmNbXSwgZmxvYXQgb3BhY2l0
eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUpCit7CisgICAgZ2xVbmlmb3JtTWF0
cml4NGZ2KG1fbWF0cml4VmFyaWFibGUsIDEsIEdMX0ZBTFNFLCBtNCk7CisgICAgZ2xVbmlmb3Jt
TWF0cml4NGZ2KG1fc291cmNlTWF0cml4VmFyaWFibGUsIDEsIEdMX0ZBTFNFLCBtNHNyYyk7Cisg
ICAgZ2xVbmlmb3JtMWkobV9zb3VyY2VUZXh0dXJlVmFyaWFibGUsIDApOworICAgIGdsVW5pZm9y
bTFmKG1fb3BhY2l0eVZhcmlhYmxlLCBvcGFjaXR5KTsKKworICAgIGlmIChtYXNrVGV4dHVyZSAm
JiBtYXNrVGV4dHVyZS0+aXNWYWxpZCgpKSB7CisgICAgICAgIGNvbnN0IEJpdG1hcFRleHR1cmVH
TCogbWFza1RleHR1cmVHTCA9IHN0YXRpY19jYXN0PGNvbnN0IEJpdG1hcFRleHR1cmVHTCo+KG1h
c2tUZXh0dXJlKTsKKyAgICAgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUxKTsKKyAgICAg
ICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtYXNrVGV4dHVyZUdMLT5pZCgpKTsKKyAg
ICAgICAgY29uc3QgR0xmbG9hdCBtNG1hc2tbXSA9IHttYXNrVGV4dHVyZUdMLT5yZWxhdGl2ZVNp
emUoKS53aWR0aCgpLCAwLCAwLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLCBtYXNrVGV4dHVyZUdMLT5yZWxhdGl2ZVNpemUoKS5oZWlnaHQoKSwgMCwgMCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMSwgMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMX07CisgICAg
ICAgIGdsVW5pZm9ybU1hdHJpeDRmdihtX21hc2tNYXRyaXhWYXJpYWJsZSwgMSwgR0xfRkFMU0Us
IG00bWFzayk7CisgICAgICAgIGdsVW5pZm9ybTFpKG1fbWFza1RleHR1cmVWYXJpYWJsZSwgMSk7
CisgICAgICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7CisgICAgfQorfQorCiBQYXNz
UmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtQ2xpcD4gVGV4dHVyZU1hcHBlclNoYWRl
clByb2dyYW1DbGlwOjpjcmVhdGUoKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dHVy
ZU1hcHBlclNoYWRlclByb2dyYW1DbGlwKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJTaGFkZXJNYW5hZ2VyLmgJKHJldmlzaW9uIDEwODU5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlwZWRl
ZiB2b2lkKiBTaGFkZXJUeXBlOwogCitjbGFzcyBCaXRtYXBUZXh0dXJlOwogY2xhc3MgVGV4dHVy
ZU1hcHBlclNoYWRlck1hbmFnZXI7CiAKIGNsYXNzIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFt
IDogcHVibGljIFJlZkNvdW50ZWQ8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0+IHsKQEAgLTUx
LDYgKzUyLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gJnR5cGU7CiAgICAgfQogCisgICAg
dmlydHVhbCB2b2lkIHByZXBhcmVUb0RyYXcoY29uc3QgR0xmbG9hdCBtNFtdLCBjb25zdCBHTGZs
b2F0IG00c3JjW10sIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqKSB7fQorCiBw
cm90ZWN0ZWQ6CiAgICAgdm9pZCBnZXRVbmlmb3JtTG9jYXRpb24oR0xpbnQmIHZhciwgY29uc3Qg
Y2hhciogbmFtZSk7CiAgICAgdm9pZCBpbml0aWFsaXplUHJvZ3JhbSgpOwpAQCAtNzAsNiArNzMs
NyBAQCBwdWJsaWM6CiAgICAgR0xpbnQgc291cmNlTWF0cml4VmFyaWFibGUoKSB7IHJldHVybiBt
X3NvdXJjZU1hdHJpeFZhcmlhYmxlOyB9CiAgICAgR0xpbnQgc291cmNlVGV4dHVyZVZhcmlhYmxl
KCkgeyByZXR1cm4gbV9zb3VyY2VUZXh0dXJlVmFyaWFibGU7IH0KICAgICBHTGludCBvcGFjaXR5
VmFyaWFibGUoKSB7IHJldHVybiBtX29wYWNpdHlWYXJpYWJsZTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBwcmVwYXJlVG9EcmF3KGNvbnN0IEdMZmxvYXQgbTRbXSwgY29uc3QgR0xmbG9hdCBtNHNyY1td
LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKik7CiAKIHByaXZhdGU6CiAgICAg
dmlydHVhbCBjb25zdCBjaGFyKiB2ZXJ0ZXhTaGFkZXJTb3VyY2UoKTsKQEAgLTkwLDYgKzk0LDcg
QEAgcHVibGljOgogICAgIEdMaW50IHNvdXJjZVRleHR1cmVWYXJpYWJsZSgpIHsgcmV0dXJuIG1f
c291cmNlVGV4dHVyZVZhcmlhYmxlOyB9CiAgICAgR0xpbnQgbWFza1RleHR1cmVWYXJpYWJsZSgp
IHsgcmV0dXJuIG1fbWFza1RleHR1cmVWYXJpYWJsZTsgfQogICAgIEdMaW50IG9wYWNpdHlWYXJp
YWJsZSgpIHsgcmV0dXJuIG1fb3BhY2l0eVZhcmlhYmxlOyB9CisgICAgdmlydHVhbCB2b2lkIHBy
ZXBhcmVUb0RyYXcoY29uc3QgR0xmbG9hdCBtNFtdLCBjb25zdCBHTGZsb2F0IG00c3JjW10sIGZs
b2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqKTsKIAogcHJpdmF0ZToKICAgICBzdGF0
aWMgaW50IG1fY2xhc3NJRDsK
</data>
<flag name="review"
          id="130727"
          type_id="1"
          status="-"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128578</attachid>
            <date>2012-02-23 15:53:39 -0800</date>
            <delta_ts>2012-02-23 18:16:08 -0800</delta_ts>
            <desc>Third try</desc>
            <filename>79143.patch</filename>
            <type>text/plain</type>
            <size>15811</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODY2OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDEyLTAyLTIzICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAgICBbVGV4bWFwXSBDb25zb2xp
ZGF0ZSB0aGUgY29tbW9uIHBhcnRzIG9mIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MTQzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29tYmluZSB0aGUg
dHdvIGRyYXdUZXh0dXJlIG1ldGhvZHMgaW50byBvbmUsIGFuZCBleHRyYWN0IHRoZSBwYXJ0IHRo
YXQKKyAgICAgICAgY291bGQgbm90IGJlIGNvbWJpbmVkIGludG8gaXRzIG93biBtZXRob2QuCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4gUmVmYWN0b3Jpbmcgb25seS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKEJpdG1hcFRleHR1cmVHTCk6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBUZXh0dXJlR0w6On5CaXRtYXBUZXh0dXJlR0wpOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwVGV4dHVyZUdMOjppZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJl
R0w6OnJlbGF0aXZlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6OnNl
dFRleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjpCaXRt
YXBUZXh0dXJlR0wpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyU2hhZGVyTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
U2hhZGVyUHJvZ3JhbU9wYWNpdHlBbmRNYXNrOjpmcmFnbWVudFNoYWRlclNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtT3BhY2l0eUFuZE1hc2s6OnByZXBhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6cHJlcGFyZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6bWF0cml4VmFy
aWFibGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OnNv
dXJjZU1hdHJpeFZhcmlhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJTaGFk
ZXJQcm9ncmFtOjpzb3VyY2VUZXh0dXJlVmFyaWFibGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW06Om9wYWNpdHlWYXJpYWJsZSk6CisgICAgICAgIChUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSk6CisgICAgICAgIChUZXh0dXJlTWFwcGVyU2hhZGVyUHJv
Z3JhbVNpbXBsZSk6CisgICAgICAgIChUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbU9wYWNpdHlB
bmRNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtT3Bh
Y2l0eUFuZE1hc2s6Om1hc2tNYXRyaXhWYXJpYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbU9wYWNpdHlBbmRNYXNrOjptYXNrVGV4dHVyZVZhcmlhYmxl
KToKKwogMjAxMi0wMi0yMyAgRXJpayBBcnZpZHNzb24gIDxhcnZAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIEFkZCBzdXBwb3J0IGZvciBJbnRlcmZhY2VOYW1lIGluIHRoZSBiaW5kaW5ncwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJH
TC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAJKHJldmlzaW9uIDEwODU0MykKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODEsNDEgKzE4MSw2IEBAIHN0cnVjdCBUZXh0dXJlTWFwcGVyR0xEYXRhIHsK
ICAgICBSZWZQdHI8U2hhcmVkR0xEYXRhPiBtX3NoYXJlZEdMRGF0YTsKIH07CiAKLWNsYXNzIEJp
dG1hcFRleHR1cmVHTCA6IHB1YmxpYyBCaXRtYXBUZXh0dXJlIHsKLXB1YmxpYzoKLSAgICB2aXJ0
dWFsIHZvaWQgZGVzdHJveSgpOwotICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVz
ZXQoKTsKLSAgICB2b2lkIGJpbmQoKTsKLSAgICB+Qml0bWFwVGV4dHVyZUdMKCkgeyBkZXN0cm95
KCk7IH0KLSAgICB2aXJ0dWFsIHVpbnQzMl90IGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQot
ICAgIGlubGluZSBGbG9hdFNpemUgcmVsYXRpdmVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9yZWxh
dGl2ZVNpemU7IH0KLSAgICB2b2lkIHNldFRleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlckdMKiB0
ZXhtYXApIHsgbV90ZXh0dXJlTWFwcGVyID0gdGV4bWFwOyB9Ci0gICAgdm9pZCB1cGRhdGVDb250
ZW50cyhJbWFnZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JiwgUGl4ZWxGb3JtYXQp
OwotICAgIHZvaWQgdXBkYXRlQ29udGVudHMoY29uc3Qgdm9pZCosIGNvbnN0IEludFJlY3QmKTsK
LQotcHJpdmF0ZToKLSAgICBHTHVpbnQgbV9pZDsKLSAgICBGbG9hdFNpemUgbV9yZWxhdGl2ZVNp
emU7Ci0gICAgSW50U2l6ZSBtX3RleHR1cmVTaXplOwotICAgIEludFJlY3QgbV9kaXJ0eVJlY3Q7
Ci0gICAgR0x1aW50IG1fZmJvOwotICAgIEdMdWludCBtX3JibzsKLSAgICBib29sIG1fc3VyZmFj
ZU5lZWRzUmVzZXQ7Ci0gICAgVGV4dHVyZU1hcHBlckdMKiBtX3RleHR1cmVNYXBwZXI7Ci0gICAg
Qml0bWFwVGV4dHVyZUdMKCkKLSAgICAgICAgOiBtX2lkKDApCi0gICAgICAgICwgbV9mYm8oMCkK
LSAgICAgICAgLCBtX3JibygwKQotICAgICAgICAsIG1fc3VyZmFjZU5lZWRzUmVzZXQodHJ1ZSkK
LSAgICAgICAgLCBtX3RleHR1cmVNYXBwZXIoMCkKLSAgICB7Ci0gICAgfQotCi0gICAgZnJpZW5k
IGNsYXNzIFRleHR1cmVNYXBwZXJHTDsKLX07Ci0KIFRleHR1cmVNYXBwZXJHTDo6VGV4dHVyZU1h
cHBlckdMKCkKICAgICA6IG1fZGF0YShuZXcgVGV4dHVyZU1hcHBlckdMRGF0YSkKICAgICAsIG1f
Y29udGV4dCgwKQpAQCAtMjg2LDE1ICsyNTEsMTEgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRy
YXdUZXh0dXJlKGNvbnN0CiAKIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZSh1aW50
MzJfdCB0ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgRmxvYXRTaXplJiByZWxhdGl2ZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFz
a1RleHR1cmUpCiB7CisgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiBzaGFk
ZXJJbmZvOwogICAgIGlmIChtYXNrVGV4dHVyZSkKLSAgICAgICAgZHJhd1RleHR1cmVXaXRoTWFz
a0FuZE9wYWNpdHkodGV4dHVyZSwgZmxhZ3MsIHJlbGF0aXZlU2l6ZSwgdGFyZ2V0UmVjdCwgbW9k
ZWxWaWV3TWF0cml4LCBvcGFjaXR5LCBtYXNrVGV4dHVyZSk7CisgICAgICAgIHNoYWRlckluZm8g
PSBkYXRhKCkuc2hhcmVkR0xEYXRhKCkudGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuZ2V0U2hh
ZGVyUHJvZ3JhbTxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbU9wYWNpdHlBbmRNYXNrPigpOwog
ICAgIGVsc2UKLSAgICAgICAgZHJhd1RleHR1cmVTaW1wbGUodGV4dHVyZSwgZmxhZ3MsIHJlbGF0
aXZlU2l6ZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5LCBtYXNrVGV4dHVy
ZSk7Ci19Ci0KLXZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZVdpdGhNYXNrQW5kT3Bh
Y2l0eSh1aW50MzJfdCB0ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgRmxvYXRTaXplJiByZWxh
dGl2ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4
dHVyZSogbWFza1RleHR1cmUpCi17Ci0gICAgUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtT3BhY2l0eUFuZE1hc2s+IHNoYWRlckluZm8gPSBkYXRhKCkuc2hhcmVkR0xEYXRhKCkudGV4
dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuZ2V0U2hhZGVyUHJvZ3JhbTxUZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbU9wYWNpdHlBbmRNYXNrPigpOworICAgICAgICBzaGFkZXJJbmZvID0gZGF0YSgp
LnNoYXJlZEdMRGF0YSgpLnRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmdldFNoYWRlclByb2dy
YW08VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1TaW1wbGU+KCk7CiAKICAgICBHTF9DTUQoZ2xV
c2VQcm9ncmFtKHNoYWRlckluZm8tPmlkKCkpKQogICAgIEdMX0NNRChnbEVuYWJsZVZlcnRleEF0
dHJpYkFycmF5KHNoYWRlckluZm8tPnZlcnRleEF0dHJpYigpKSkKQEAgLTMyNiw2MSArMjg3LDkg
QEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlV2l0aE1hcwogICAgIEdMX0NNRChn
bFVuaWZvcm0xaShzaGFkZXJJbmZvLT5zb3VyY2VUZXh0dXJlVmFyaWFibGUoKSwgMCkpCiAgICAg
R0xfQ01EKGdsVW5pZm9ybTFmKHNoYWRlckluZm8tPm9wYWNpdHlWYXJpYWJsZSgpLCBvcGFjaXR5
KSkKIAotICAgIGlmIChtYXNrVGV4dHVyZS0+aXNWYWxpZCgpKSB7Ci0gICAgICAgIGNvbnN0IEJp
dG1hcFRleHR1cmVHTCogbWFza1RleHR1cmVHTCA9IHN0YXRpY19jYXN0PGNvbnN0IEJpdG1hcFRl
eHR1cmVHTCo+KG1hc2tUZXh0dXJlKTsKLSAgICAgICAgR0xfQ01EKGdsQWN0aXZlVGV4dHVyZShH
TF9URVhUVVJFMSkpCi0gICAgICAgIEdMX0NNRChnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQs
IG1hc2tUZXh0dXJlR0wtPmlkKCkpKQotICAgICAgICBjb25zdCBHTGZsb2F0IG00bWFza1tdID0g
e21hc2tUZXh0dXJlR0wtPnJlbGF0aXZlU2l6ZSgpLndpZHRoKCksIDAsIDAsIDAsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIG1hc2tUZXh0dXJlR0wtPnJlbGF0
aXZlU2l6ZSgpLmhlaWdodCgpLCAwLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLCAwLCAxLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLCAwLCAwLCAxfTsKLSAgICAgICAgR0xfQ01EKGdsVW5pZm9ybU1hdHJpeDRmdihz
aGFkZXJJbmZvLT5tYXNrTWF0cml4VmFyaWFibGUoKSwgMSwgR0xfRkFMU0UsIG00bWFzaykpOwot
ICAgICAgICBHTF9DTUQoZ2xVbmlmb3JtMWkoc2hhZGVySW5mby0+bWFza1RleHR1cmVWYXJpYWJs
ZSgpLCAxKSkKLSAgICAgICAgR0xfQ01EKGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCkpCi0g
ICAgfQotCi0gICAgR0xfQ01EKGdsQmxlbmRGdW5jKEdMX09ORSwgR0xfT05FX01JTlVTX1NSQ19B
TFBIQSkpCi0gICAgR0xfQ01EKGdsRW5hYmxlKEdMX0JMRU5EKSkKLQotICAgIEdMX0NNRChnbERy
YXdBcnJheXMoR0xfVFJJQU5HTEVfRkFOLCAwLCA0KSkKLSAgICBHTF9DTUQoZ2xEaXNhYmxlVmVy
dGV4QXR0cmliQXJyYXkoc2hhZGVySW5mby0+dmVydGV4QXR0cmliKCkpKQotfQotCi12b2lkIFRl
eHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmVTaW1wbGUodWludDMyX3QgdGV4dHVyZSwgRmxhZ3Mg
ZmxhZ3MsIGNvbnN0IEZsb2F0U2l6ZSYgcmVsYXRpdmVTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRh
cmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZs
b2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqKQotewotICAgIFJlZlB0cjxUZXh0dXJl
TWFwcGVyU2hhZGVyUHJvZ3JhbVNpbXBsZT4gc2hhZGVySW5mbyA9IGRhdGEoKS5zaGFyZWRHTERh
dGEoKS50ZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5nZXRTaGFkZXJQcm9ncmFtPFRleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtU2ltcGxlPigpOwotCi0gICAgR0xfQ01EKGdsVXNlUHJvZ3JhbShz
aGFkZXJJbmZvLT5pZCgpKSkKLSAgICBHTF9DTUQoZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShz
aGFkZXJJbmZvLT52ZXJ0ZXhBdHRyaWIoKSkpCi0gICAgR0xfQ01EKGdsQWN0aXZlVGV4dHVyZShH
TF9URVhUVVJFMCkpCi0gICAgR0xfQ01EKGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4
dHVyZSkpCi0gICAgR0xfQ01EKGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIDApKQotICAg
IGNvbnN0IEdMZmxvYXQgdW5pdFJlY3RbXSA9IHswLCAwLCAxLCAwLCAxLCAxLCAwLCAxfTsKLSAg
ICBHTF9DTUQoZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHNoYWRlckluZm8tPnZlcnRleEF0dHJpYigp
LCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIHVuaXRSZWN0KSkKLQotICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IG1hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KGRhdGEoKS5wcm9qZWN0aW9u
TWF0cml4KS5tdWx0aXBseShtb2RlbFZpZXdNYXRyaXgpLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9u
TWF0cml4KAotICAgICAgICAgICAgdGFyZ2V0UmVjdC53aWR0aCgpLCAwLCAwLCAwLAotICAgICAg
ICAgICAgMCwgdGFyZ2V0UmVjdC5oZWlnaHQoKSwgMCwgMCwKLSAgICAgICAgICAgIDAsIDAsIDEs
IDAsCi0gICAgICAgICAgICB0YXJnZXRSZWN0LngoKSwgdGFyZ2V0UmVjdC55KCksIDAsIDEpKTsK
LQotICAgIGNvbnN0IEdMZmxvYXQgbTRbXSA9IHsKLSAgICAgICAgbWF0cml4Lm0xMSgpLCBtYXRy
aXgubTEyKCksIG1hdHJpeC5tMTMoKSwgbWF0cml4Lm0xNCgpLAotICAgICAgICBtYXRyaXgubTIx
KCksIG1hdHJpeC5tMjIoKSwgbWF0cml4Lm0yMygpLCBtYXRyaXgubTI0KCksCi0gICAgICAgIG1h
dHJpeC5tMzEoKSwgbWF0cml4Lm0zMigpLCBtYXRyaXgubTMzKCksIG1hdHJpeC5tMzQoKSwKLSAg
ICAgICAgbWF0cml4Lm00MSgpLCBtYXRyaXgubTQyKCksIG1hdHJpeC5tNDMoKSwgbWF0cml4Lm00
NCgpCi0gICAgfTsKLSAgICBjb25zdCBHTGZsb2F0IG00c3JjW10gPSB7cmVsYXRpdmVTaXplLndp
ZHRoKCksIDAsIDAsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwg
cmVsYXRpdmVTaXplLmhlaWdodCgpICogKChmbGFncyAmIFNob3VsZEZsaXBUZXh0dXJlKSA/IC0x
IDogMSksIDAsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwg
MSwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAoZmxhZ3MgJiBT
aG91bGRGbGlwVGV4dHVyZSkgPyByZWxhdGl2ZVNpemUuaGVpZ2h0KCkgOiAwLCAwLCAxfTsKLQot
ICAgIEdMX0NNRChnbFVuaWZvcm1NYXRyaXg0ZnYoc2hhZGVySW5mby0+bWF0cml4VmFyaWFibGUo
KSwgMSwgR0xfRkFMU0UsIG00KSkKLSAgICBHTF9DTUQoZ2xVbmlmb3JtTWF0cml4NGZ2KHNoYWRl
ckluZm8tPnNvdXJjZU1hdHJpeFZhcmlhYmxlKCksIDEsIEdMX0ZBTFNFLCBtNHNyYykpCi0gICAg
R0xfQ01EKGdsVW5pZm9ybTFpKHNoYWRlckluZm8tPnNvdXJjZVRleHR1cmVWYXJpYWJsZSgpLCAw
KSkKLSAgICBHTF9DTUQoZ2xVbmlmb3JtMWYoc2hhZGVySW5mby0+b3BhY2l0eVZhcmlhYmxlKCks
IG9wYWNpdHkpKQorICAgIHNoYWRlckluZm8tPnByZXBhcmUobWFza1RleHR1cmUpOwogCi0gICAg
Ym9vbCBuZWVkc0JsZW5kaW5nID0gKGZsYWdzICYgU3VwcG9ydHNCbGVuZGluZykgfHwgb3BhY2l0
eSA8IDAuOTk7CisgICAgYm9vbCBuZWVkc0JsZW5kaW5nID0gKGZsYWdzICYgU3VwcG9ydHNCbGVu
ZGluZykgfHwgb3BhY2l0eSA8IDAuOTkgfHwgbWFza1RleHR1cmU7CiAKICAgICBpZiAobmVlZHNC
bGVuZGluZykgewogICAgICAgICBHTF9DTUQoZ2xCbGVuZEZ1bmMoR0xfT05FLCBHTF9PTkVfTUlO
VVNfU1JDX0FMUEhBKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyR0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgJKHJldmlzaW9uIDEwODU0MykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
R0wuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogCiAjaW5jbHVkZSAiRmxvYXRR
dWFkLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIk9wZW5HTFNoaW1zLmgiCiAj
aW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4
LmgiCiAKQEAgLTMxLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUZXh0
dXJlTWFwcGVyR0xEYXRhOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3MgVGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW07CiAKIC8vIEFuIE9wZW5HTC1FUzIgaW1wbGVtZW50YXRpb24gb2Yg
VGV4dHVyZU1hcHBlci4KIGNsYXNzIFRleHR1cmVNYXBwZXJHTCA6IHB1YmxpYyBUZXh0dXJlTWFw
cGVyIHsKQEAgLTQ4LDggKzUwLDYgQEAgcHVibGljOgogICAgIC8vIHJlaW1wcyBmcm9tIFRleHR1
cmVNYXBwZXIKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoY29uc3QgQml0bWFwVGV4dHVy
ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQg
b3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUpOwogICAgIHZpcnR1YWwg
dm9pZCBkcmF3VGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlLCBGbGFncywgY29uc3QgRmxvYXRTaXpl
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBv
cGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSk7Ci0gICAgdmlydHVhbCB2
b2lkIGRyYXdUZXh0dXJlV2l0aE1hc2tBbmRPcGFjaXR5KHVpbnQzMl90IHRleHR1cmUsIEZsYWdz
LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJl
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmVTaW1wbGUodWludDMyX3QgdGV4dHVyZSwg
RmxhZ3MsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1Rl
eHR1cmUpOwogICAgIHZpcnR1YWwgdm9pZCBiaW5kU3VyZmFjZShCaXRtYXBUZXh0dXJlKiBzdXJm
YWNlKTsKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5DbGlwKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiwgY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luUGFpbnRpbmco
KTsKQEAgLTc0LDYgKzc0LDQxIEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEJpdG1hcFRl
eHR1cmVHTDsKIH07CiAKK2NsYXNzIEJpdG1hcFRleHR1cmVHTCA6IHB1YmxpYyBCaXRtYXBUZXh0
dXJlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpOworICAgIHZpcnR1YWwg
SW50U2l6ZSBzaXplKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzZXQoKTsKKyAgICB2b2lkIGJpbmQoKTsKKyAgICB+Qml0
bWFwVGV4dHVyZUdMKCkgeyBkZXN0cm95KCk7IH0KKyAgICB2aXJ0dWFsIHVpbnQzMl90IGlkKCkg
Y29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAgIGlubGluZSBGbG9hdFNpemUgcmVsYXRpdmVTaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9yZWxhdGl2ZVNpemU7IH0KKyAgICB2b2lkIHNldFRleHR1cmVN
YXBwZXIoVGV4dHVyZU1hcHBlckdMKiB0ZXhtYXApIHsgbV90ZXh0dXJlTWFwcGVyID0gdGV4bWFw
OyB9CisgICAgdm9pZCB1cGRhdGVDb250ZW50cyhJbWFnZSosIGNvbnN0IEludFJlY3QmLCBjb25z
dCBJbnRSZWN0JiwgUGl4ZWxGb3JtYXQpOworICAgIHZvaWQgdXBkYXRlQ29udGVudHMoY29uc3Qg
dm9pZCosIGNvbnN0IEludFJlY3QmKTsKKworcHJpdmF0ZToKKyAgICBHTHVpbnQgbV9pZDsKKyAg
ICBGbG9hdFNpemUgbV9yZWxhdGl2ZVNpemU7CisgICAgSW50U2l6ZSBtX3RleHR1cmVTaXplOwor
ICAgIEludFJlY3QgbV9kaXJ0eVJlY3Q7CisgICAgR0x1aW50IG1fZmJvOworICAgIEdMdWludCBt
X3JibzsKKyAgICBib29sIG1fc3VyZmFjZU5lZWRzUmVzZXQ7CisgICAgVGV4dHVyZU1hcHBlckdM
KiBtX3RleHR1cmVNYXBwZXI7CisgICAgQml0bWFwVGV4dHVyZUdMKCkKKyAgICAgICAgOiBtX2lk
KDApCisgICAgICAgICwgbV9mYm8oMCkKKyAgICAgICAgLCBtX3JibygwKQorICAgICAgICAsIG1f
c3VyZmFjZU5lZWRzUmVzZXQodHJ1ZSkKKyAgICAgICAgLCBtX3RleHR1cmVNYXBwZXIoMCkKKyAg
ICB7CisgICAgfQorCisgICAgZnJpZW5kIGNsYXNzIFRleHR1cmVNYXBwZXJHTDsKK307CisKIC8v
IEFuIG9mZnNjcmVlbiBidWZmZXIgdG8gYmUgcmVuZGVyZWQgYnkgc29mdHdhcmUuCiBzdGF0aWMg
aW5saW5lIGludCBuZXh0UG93ZXJPZlR3byhpbnQgbnVtKQogewpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuY3BwCShyZXZpc2lvbiAxMDg1OTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1h
bmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw4IEBACiAKICNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVTRShURVhUVVJFX01BUFBFUikKIAorI2luY2x1ZGUg
IlRleHR1cmVNYXBwZXJHTC5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZm5kZWYgVEVY
TUFQX09QRU5HTF9FU18yCkBAIC0xOTcsNiArMTk5LDIzIEBAIGNvbnN0IGNoYXIqIFRleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtT3AKICAgICByZXR1cm4gZnJhZ21lbnRTaGFkZXJTb3VyY2VPcGFj
aXR5QW5kTWFzazsKIH0KIAordm9pZCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbU9wYWNpdHlB
bmRNYXNrOjpwcmVwYXJlKGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlKQoreworICAg
IGlmICghbWFza1RleHR1cmUgfHwgIW1hc2tUZXh0dXJlLT5pc1ZhbGlkKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGNvbnN0IEJpdG1hcFRleHR1cmVHTCogbWFza1RleHR1cmVHTCA9IHN0YXRp
Y19jYXN0PGNvbnN0IEJpdG1hcFRleHR1cmVHTCo+KG1hc2tUZXh0dXJlKTsKKyAgICBnbEFjdGl2
ZVRleHR1cmUoR0xfVEVYVFVSRTEpOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwg
bWFza1RleHR1cmVHTC0+aWQoKSk7CisgICAgY29uc3QgR0xmbG9hdCBtNG1hc2tbXSA9IHttYXNr
VGV4dHVyZUdMLT5yZWxhdGl2ZVNpemUoKS53aWR0aCgpLCAwLCAwLCAwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAsIG1hc2tUZXh0dXJlR0wtPnJlbGF0aXZlU2l6ZSgp
LmhlaWdodCgpLCAwLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAs
IDAsIDEsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwg
MX07CisgICAgZ2xVbmlmb3JtTWF0cml4NGZ2KG1fbWFza01hdHJpeFZhcmlhYmxlLCAxLCBHTF9G
QUxTRSwgbTRtYXNrKTsKKyAgICBnbFVuaWZvcm0xaShtX21hc2tUZXh0dXJlVmFyaWFibGUsIDEp
OworICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7Cit9CisKIFBhc3NSZWZQdHI8VGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW1DbGlwPiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbUNs
aXA6OmNyZWF0ZSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbUNsaXAoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1h
bmFnZXIuaAkocmV2aXNpb24gMTA4NTk0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0eXBlZGVmIHZvaWQqIFNo
YWRlclR5cGU7CiAKK2NsYXNzIEJpdG1hcFRleHR1cmU7CiBjbGFzcyBUZXh0dXJlTWFwcGVyU2hh
ZGVyTWFuYWdlcjsKIAogY2xhc3MgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0gOiBwdWJsaWMg
UmVmQ291bnRlZDxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gewpAQCAtNTEsNiArNTIsMTIg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gJnR5cGU7CiAgICAgfQogCisgICAgdmlydHVhbCB2
b2lkIHByZXBhcmUoY29uc3QgQml0bWFwVGV4dHVyZSopIHt9CisgICAgR0xpbnQgbWF0cml4VmFy
aWFibGUoKSB7IHJldHVybiBtX21hdHJpeFZhcmlhYmxlOyB9CisgICAgR0xpbnQgc291cmNlTWF0
cml4VmFyaWFibGUoKSB7IHJldHVybiBtX3NvdXJjZU1hdHJpeFZhcmlhYmxlOyB9CisgICAgR0xp
bnQgc291cmNlVGV4dHVyZVZhcmlhYmxlKCkgeyByZXR1cm4gbV9zb3VyY2VUZXh0dXJlVmFyaWFi
bGU7IH0KKyAgICBHTGludCBvcGFjaXR5VmFyaWFibGUoKSB7IHJldHVybiBtX29wYWNpdHlWYXJp
YWJsZTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBnZXRVbmlmb3JtTG9jYXRpb24oR0xpbnQm
IHZhciwgY29uc3QgY2hhciogbmFtZSk7CiAgICAgdm9pZCBpbml0aWFsaXplUHJvZ3JhbSgpOwpA
QCAtNjEsNDcgKzY4LDM2IEBAIHByb3RlY3RlZDoKICAgICBHTHVpbnQgbV92ZXJ0ZXhBdHRyaWI7
CiAgICAgR0x1aW50IG1fdmVydGV4U2hhZGVyOwogICAgIEdMdWludCBtX2ZyYWdtZW50U2hhZGVy
OworICAgIEdMaW50IG1fbWF0cml4VmFyaWFibGU7CisgICAgR0xpbnQgbV9zb3VyY2VNYXRyaXhW
YXJpYWJsZTsKKyAgICBHTGludCBtX3NvdXJjZVRleHR1cmVWYXJpYWJsZTsKKyAgICBHTGludCBt
X29wYWNpdHlWYXJpYWJsZTsKIH07CiAKIGNsYXNzIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFt
U2ltcGxlIDogcHVibGljIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbVNpbXBsZT4gY3Jl
YXRlKCk7Ci0gICAgR0xpbnQgbWF0cml4VmFyaWFibGUoKSB7IHJldHVybiBtX21hdHJpeFZhcmlh
YmxlOyB9Ci0gICAgR0xpbnQgc291cmNlTWF0cml4VmFyaWFibGUoKSB7IHJldHVybiBtX3NvdXJj
ZU1hdHJpeFZhcmlhYmxlOyB9Ci0gICAgR0xpbnQgc291cmNlVGV4dHVyZVZhcmlhYmxlKCkgeyBy
ZXR1cm4gbV9zb3VyY2VUZXh0dXJlVmFyaWFibGU7IH0KLSAgICBHTGludCBvcGFjaXR5VmFyaWFi
bGUoKSB7IHJldHVybiBtX29wYWNpdHlWYXJpYWJsZTsgfQogCiBwcml2YXRlOgogICAgIHZpcnR1
YWwgY29uc3QgY2hhciogdmVydGV4U2hhZGVyU291cmNlKCk7CiAgICAgdmlydHVhbCBjb25zdCBj
aGFyKiBmcmFnbWVudFNoYWRlclNvdXJjZSgpOwogICAgIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtU2ltcGxlKCk7Ci0gICAgR0xpbnQgbV9tYXRyaXhWYXJpYWJsZTsKLSAgICBHTGludCBtX3Nv
dXJjZU1hdHJpeFZhcmlhYmxlOwotICAgIEdMaW50IG1fc291cmNlVGV4dHVyZVZhcmlhYmxlOwot
ICAgIEdMaW50IG1fb3BhY2l0eVZhcmlhYmxlOwogfTsKIAogY2xhc3MgVGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW1PcGFjaXR5QW5kTWFzayA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyU2hhZGVyUHJv
Z3JhbSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRl
clByb2dyYW1PcGFjaXR5QW5kTWFzaz4gY3JlYXRlKCk7Ci0gICAgR0xpbnQgc291cmNlTWF0cml4
VmFyaWFibGUoKSB7IHJldHVybiBtX3NvdXJjZU1hdHJpeFZhcmlhYmxlOyB9Ci0gICAgR0xpbnQg
bWF0cml4VmFyaWFibGUoKSB7IHJldHVybiBtX21hdHJpeFZhcmlhYmxlOyB9CisgICAgdmlydHVh
bCB2b2lkIHByZXBhcmUoY29uc3QgQml0bWFwVGV4dHVyZSopOwogICAgIEdMaW50IG1hc2tNYXRy
aXhWYXJpYWJsZSgpIHsgcmV0dXJuIG1fbWFza01hdHJpeFZhcmlhYmxlOyB9Ci0gICAgR0xpbnQg
c291cmNlVGV4dHVyZVZhcmlhYmxlKCkgeyByZXR1cm4gbV9zb3VyY2VUZXh0dXJlVmFyaWFibGU7
IH0KICAgICBHTGludCBtYXNrVGV4dHVyZVZhcmlhYmxlKCkgeyByZXR1cm4gbV9tYXNrVGV4dHVy
ZVZhcmlhYmxlOyB9Ci0gICAgR0xpbnQgb3BhY2l0eVZhcmlhYmxlKCkgeyByZXR1cm4gbV9vcGFj
aXR5VmFyaWFibGU7IH0KIAogcHJpdmF0ZToKICAgICBzdGF0aWMgaW50IG1fY2xhc3NJRDsKICAg
ICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHZlcnRleFNoYWRlclNvdXJjZSgpOwogICAgIHZpcnR1YWwg
Y29uc3QgY2hhciogZnJhZ21lbnRTaGFkZXJTb3VyY2UoKTsKICAgICBUZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbU9wYWNpdHlBbmRNYXNrKCk7Ci0gICAgR0xpbnQgbV9zb3VyY2VNYXRyaXhWYXJp
YWJsZTsKLSAgICBHTGludCBtX21hdHJpeFZhcmlhYmxlOwogICAgIEdMaW50IG1fbWFza01hdHJp
eFZhcmlhYmxlOwotICAgIEdMaW50IG1fc291cmNlVGV4dHVyZVZhcmlhYmxlOwogICAgIEdMaW50
IG1fbWFza1RleHR1cmVWYXJpYWJsZTsKLSAgICBHTGludCBtX29wYWNpdHlWYXJpYWJsZTsKIH07
CiAKIGNsYXNzIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtQ2xpcCA6IHB1YmxpYyBUZXh0dXJl
TWFwcGVyU2hhZGVyUHJvZ3JhbSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128624</attachid>
            <date>2012-02-23 18:16:08 -0800</date>
            <delta_ts>2012-02-24 07:54:51 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>79143.patch</filename>
            <type>text/plain</type>
            <size>16574</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODY5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDEyLTAyLTIzICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAgICBbVGV4bWFwXSBDb25zb2xp
ZGF0ZSB0aGUgY29tbW9uIHBhcnRzIG9mIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MTQzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29tYmluZSB0aGUg
dHdvIGRyYXdUZXh0dXJlIG1ldGhvZHMgaW50byBvbmUsIGFuZCBleHRyYWN0IHRoZSBwYXJ0IHRo
YXQKKyAgICAgICAgY291bGQgbm90IGJlIGNvbWJpbmVkIGludG8gaXRzIG93biBtZXRob2QuCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4gUmVmYWN0b3Jpbmcgb25seS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKEJpdG1hcFRleHR1cmVHTCk6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBUZXh0dXJlR0w6On5CaXRtYXBUZXh0dXJlR0wpOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwVGV4dHVyZUdMOjppZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJl
R0w6OnJlbGF0aXZlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6OnNl
dFRleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjpCaXRt
YXBUZXh0dXJlR0wpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyU2hhZGVyTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
U2hhZGVyUHJvZ3JhbU9wYWNpdHlBbmRNYXNrOjpmcmFnbWVudFNoYWRlclNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtT3BhY2l0eUFuZE1hc2s6OnByZXBhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6cHJlcGFyZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6bWF0cml4VmFy
aWFibGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OnNv
dXJjZU1hdHJpeFZhcmlhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJTaGFk
ZXJQcm9ncmFtOjpzb3VyY2VUZXh0dXJlVmFyaWFibGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW06Om9wYWNpdHlWYXJpYWJsZSk6CisgICAgICAgIChUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSk6CisgICAgICAgIChUZXh0dXJlTWFwcGVyU2hhZGVyUHJv
Z3JhbVNpbXBsZSk6CisgICAgICAgIChUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbU9wYWNpdHlB
bmRNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtT3Bh
Y2l0eUFuZE1hc2s6Om1hc2tNYXRyaXhWYXJpYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbU9wYWNpdHlBbmRNYXNrOjptYXNrVGV4dHVyZVZhcmlhYmxl
KToKKwogMjAxMi0wMi0yMSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtjaHJvbWl1bV0gTm90aWZ5IGNvbXBvc2l0b3Igb2Ygd2hlZWwgZXZlbnQgcmVn
aXN0cmF0aW9uIHZpYSBTY3JvbGxpbmdDb29yZGluYXRvcgpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJH
TC5jcHAJKHJldmlzaW9uIDEwODY5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsNDIg
KzIyMyw2IEBAIHN0cnVjdCBUZXh0dXJlTWFwcGVyR0xEYXRhIHsKICAgICBSZWZQdHI8Qml0bWFw
VGV4dHVyZT4gY3VycmVudFN1cmZhY2U7CiB9OwogCi1jbGFzcyBCaXRtYXBUZXh0dXJlR0wgOiBw
dWJsaWMgQml0bWFwVGV4dHVyZSB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3ko
KTsKLSAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBp
c1ZhbGlkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlc2V0KCk7Ci0gICAgdm9pZCBi
aW5kKCk7Ci0gICAgdm9pZCBpbml0aWFsaXplU3RlbmNpbCgpOwotICAgIH5CaXRtYXBUZXh0dXJl
R0woKSB7IGRlc3Ryb3koKTsgfQotICAgIHZpcnR1YWwgdWludDMyX3QgaWQoKSBjb25zdCB7IHJl
dHVybiBtX2lkOyB9Ci0gICAgaW5saW5lIEZsb2F0U2l6ZSByZWxhdGl2ZVNpemUoKSBjb25zdCB7
IHJldHVybiBtX3JlbGF0aXZlU2l6ZTsgfQotICAgIHZvaWQgc2V0VGV4dHVyZU1hcHBlcihUZXh0
dXJlTWFwcGVyR0wqIHRleG1hcCkgeyBtX3RleHR1cmVNYXBwZXIgPSB0ZXhtYXA7IH0KLSAgICB2
b2lkIHVwZGF0ZUNvbnRlbnRzKEltYWdlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3Qm
LCBQaXhlbEZvcm1hdCk7Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50cyhjb25zdCB2b2lkKiwgY29u
c3QgSW50UmVjdCYpOwotCi1wcml2YXRlOgotICAgIEdMdWludCBtX2lkOwotICAgIEZsb2F0U2l6
ZSBtX3JlbGF0aXZlU2l6ZTsKLSAgICBJbnRTaXplIG1fdGV4dHVyZVNpemU7Ci0gICAgSW50UmVj
dCBtX2RpcnR5UmVjdDsKLSAgICBHTHVpbnQgbV9mYm87Ci0gICAgR0x1aW50IG1fcmJvOwotICAg
IGJvb2wgbV9zdXJmYWNlTmVlZHNSZXNldDsKLSAgICBUZXh0dXJlTWFwcGVyR0wqIG1fdGV4dHVy
ZU1hcHBlcjsKLSAgICBCaXRtYXBUZXh0dXJlR0woKQotICAgICAgICA6IG1faWQoMCkKLSAgICAg
ICAgLCBtX2ZibygwKQotICAgICAgICAsIG1fcmJvKDApCi0gICAgICAgICwgbV9zdXJmYWNlTmVl
ZHNSZXNldCh0cnVlKQotICAgICAgICAsIG1fdGV4dHVyZU1hcHBlcigwKQotICAgIHsKLSAgICB9
Ci0KLSAgICBmcmllbmQgY2xhc3MgVGV4dHVyZU1hcHBlckdMOwotfTsKLQogdm9pZCBUZXh0dXJl
TWFwcGVyR0xEYXRhOjppbml0aWFsaXplU3RlbmNpbCgpCiB7CiAgICAgaWYgKGN1cnJlbnRTdXJm
YWNlKSB7CkBAIC0zNTQsMTUgKzMxOCwxMSBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1Rl
eHR1cmUoY29uc3QKIAogdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKHVpbnQzMl90
IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBGbG9hdFNpemUmIHJlbGF0aXZlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9k
ZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4
dHVyZSkKIHsKKyAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0+IHNoYWRlcklu
Zm87CiAgICAgaWYgKG1hc2tUZXh0dXJlKQotICAgICAgICBkcmF3VGV4dHVyZVdpdGhNYXNrQW5k
T3BhY2l0eSh0ZXh0dXJlLCBmbGFncywgcmVsYXRpdmVTaXplLCB0YXJnZXRSZWN0LCBtb2RlbFZp
ZXdNYXRyaXgsIG9wYWNpdHksIG1hc2tUZXh0dXJlKTsKKyAgICAgICAgc2hhZGVySW5mbyA9IGRh
dGEoKS5zaGFyZWRHTERhdGEoKS50ZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5nZXRTaGFkZXJQ
cm9ncmFtPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtT3BhY2l0eUFuZE1hc2s+KCk7CiAgICAg
ZWxzZQotICAgICAgICBkcmF3VGV4dHVyZVNpbXBsZSh0ZXh0dXJlLCBmbGFncywgcmVsYXRpdmVT
aXplLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHksIG1hc2tUZXh0dXJlKTsK
LX0KLQotdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlV2l0aE1hc2tBbmRPcGFjaXR5
KHVpbnQzMl90IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBGbG9hdFNpemUmIHJlbGF0aXZl
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJl
KiBtYXNrVGV4dHVyZSkKLXsKLSAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1P
cGFjaXR5QW5kTWFzaz4gc2hhZGVySW5mbyA9IGRhdGEoKS5zaGFyZWRHTERhdGEoKS50ZXh0dXJl
TWFwcGVyU2hhZGVyTWFuYWdlci5nZXRTaGFkZXJQcm9ncmFtPFRleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtT3BhY2l0eUFuZE1hc2s+KCk7CisgICAgICAgIHNoYWRlckluZm8gPSBkYXRhKCkuc2hh
cmVkR0xEYXRhKCkudGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuZ2V0U2hhZGVyUHJvZ3JhbTxU
ZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbVNpbXBsZT4oKTsKIAogICAgIEdMX0NNRChnbFVzZVBy
b2dyYW0oc2hhZGVySW5mby0+aWQoKSkpCiAgICAgR0xfQ01EKGdsRW5hYmxlVmVydGV4QXR0cmli
QXJyYXkoc2hhZGVySW5mby0+dmVydGV4QXR0cmliKCkpKQpAQCAtMzkyLDYzICszNTIsMTAgQEAg
dm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlV2l0aE1hcwogICAgIEdMX0NNRChnbFVu
aWZvcm1NYXRyaXg0ZnYoc2hhZGVySW5mby0+bWF0cml4VmFyaWFibGUoKSwgMSwgR0xfRkFMU0Us
IG00KSkKICAgICBHTF9DTUQoZ2xVbmlmb3JtTWF0cml4NGZ2KHNoYWRlckluZm8tPnNvdXJjZU1h
dHJpeFZhcmlhYmxlKCksIDEsIEdMX0ZBTFNFLCBtNHNyYykpCiAgICAgR0xfQ01EKGdsVW5pZm9y
bTFpKHNoYWRlckluZm8tPnNvdXJjZVRleHR1cmVWYXJpYWJsZSgpLCAwKSkKLSAgICBHTF9DTUQo
Z2xVbmlmb3JtMWYoc2hhZGVySW5mby0+b3BhY2l0eVZhcmlhYmxlKCksIG9wYWNpdHkpKQotCi0g
ICAgaWYgKG1hc2tUZXh0dXJlLT5pc1ZhbGlkKCkpIHsKLSAgICAgICAgY29uc3QgQml0bWFwVGV4
dHVyZUdMKiBtYXNrVGV4dHVyZUdMID0gc3RhdGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUdM
Kj4obWFza1RleHR1cmUpOwotICAgICAgICBHTF9DTUQoZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRV
UkUxKSkKLSAgICAgICAgR0xfQ01EKGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbWFza1Rl
eHR1cmVHTC0+aWQoKSkpCi0gICAgICAgIGNvbnN0IEdMZmxvYXQgbTRtYXNrW10gPSB7bWFza1Rl
eHR1cmVHTC0+cmVsYXRpdmVTaXplKCkud2lkdGgoKSwgMCwgMCwgMCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgbWFza1RleHR1cmVHTC0+cmVsYXRpdmVTaXpl
KCkuaGVpZ2h0KCksIDAsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAsIDAsIDEsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAsIDAsIDAsIDF9OwotICAgICAgICBHTF9DTUQoZ2xVbmlmb3JtTWF0cml4NGZ2KHNoYWRlcklu
Zm8tPm1hc2tNYXRyaXhWYXJpYWJsZSgpLCAxLCBHTF9GQUxTRSwgbTRtYXNrKSk7Ci0gICAgICAg
IEdMX0NNRChnbFVuaWZvcm0xaShzaGFkZXJJbmZvLT5tYXNrVGV4dHVyZVZhcmlhYmxlKCksIDEp
KQotICAgICAgICBHTF9DTUQoZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKSkKLSAgICB9Ci0K
LSAgICBHTF9DTUQoZ2xCbGVuZEZ1bmMoR0xfT05FLCBHTF9PTkVfTUlOVVNfU1JDX0FMUEhBKSkK
LSAgICBHTF9DTUQoZ2xFbmFibGUoR0xfQkxFTkQpKQotCi0gICAgR0xfQ01EKGdsRHJhd0FycmF5
cyhHTF9UUklBTkdMRV9GQU4sIDAsIDQpKQotICAgIEdMX0NNRChnbERpc2FibGVWZXJ0ZXhBdHRy
aWJBcnJheShzaGFkZXJJbmZvLT52ZXJ0ZXhBdHRyaWIoKSkpCi19Ci0KLXZvaWQgVGV4dHVyZU1h
cHBlckdMOjpkcmF3VGV4dHVyZVNpbXBsZSh1aW50MzJfdCB0ZXh0dXJlLCBGbGFncyBmbGFncywg
Y29uc3QgRmxvYXRTaXplJiByZWxhdGl2ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVj
dCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3Bh
Y2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSopCi17Ci0gICAgUmVmUHRyPFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtU2ltcGxlPiBzaGFkZXJJbmZvID0gZGF0YSgpLnNoYXJlZEdMRGF0YSgpLnRl
eHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmdldFNoYWRlclByb2dyYW08VGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW1TaW1wbGU+KCk7Ci0KLSAgICBHTF9DTUQoZ2xVc2VQcm9ncmFtKHNoYWRlcklu
Zm8tPmlkKCkpKQotICAgIEdMX0NNRChnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHNoYWRlcklu
Zm8tPnZlcnRleEF0dHJpYigpKSkKLSAgICBHTF9DTUQoZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRV
UkUwKSkKLSAgICBHTF9DTUQoZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlKSkK
LSAgICBHTF9DTUQoZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgMCkpCi0gICAgY29uc3Qg
R0xmbG9hdCB1bml0UmVjdFtdID0gezAsIDAsIDEsIDAsIDEsIDEsIDAsIDF9OwotICAgIEdMX0NN
RChnbFZlcnRleEF0dHJpYlBvaW50ZXIoc2hhZGVySW5mby0+dmVydGV4QXR0cmliKCksIDIsIEdM
X0ZMT0FULCBHTF9GQUxTRSwgMCwgdW5pdFJlY3QpKQogCi0gICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggbWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoZGF0YSgpLnByb2plY3Rpb25NYXRyaXgp
Lm11bHRpcGx5KG1vZGVsVmlld01hdHJpeCkubXVsdGlwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXgo
Ci0gICAgICAgICAgICB0YXJnZXRSZWN0LndpZHRoKCksIDAsIDAsIDAsCi0gICAgICAgICAgICAw
LCB0YXJnZXRSZWN0LmhlaWdodCgpLCAwLCAwLAotICAgICAgICAgICAgMCwgMCwgMSwgMCwKLSAg
ICAgICAgICAgIHRhcmdldFJlY3QueCgpLCB0YXJnZXRSZWN0LnkoKSwgMCwgMSkpOwotCi0gICAg
Y29uc3QgR0xmbG9hdCBtNFtdID0gewotICAgICAgICBtYXRyaXgubTExKCksIG1hdHJpeC5tMTIo
KSwgbWF0cml4Lm0xMygpLCBtYXRyaXgubTE0KCksCi0gICAgICAgIG1hdHJpeC5tMjEoKSwgbWF0
cml4Lm0yMigpLCBtYXRyaXgubTIzKCksIG1hdHJpeC5tMjQoKSwKLSAgICAgICAgbWF0cml4Lm0z
MSgpLCBtYXRyaXgubTMyKCksIG1hdHJpeC5tMzMoKSwgbWF0cml4Lm0zNCgpLAotICAgICAgICBt
YXRyaXgubTQxKCksIG1hdHJpeC5tNDIoKSwgbWF0cml4Lm00MygpLCBtYXRyaXgubTQ0KCkKLSAg
ICB9OwotICAgIGNvbnN0IEdMZmxvYXQgbTRzcmNbXSA9IHtyZWxhdGl2ZVNpemUud2lkdGgoKSwg
MCwgMCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCByZWxhdGl2
ZVNpemUuaGVpZ2h0KCkgKiAoKGZsYWdzICYgU2hvdWxkRmxpcFRleHR1cmUpID8gLTEgOiAxKSwg
MCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAxLCAwLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIChmbGFncyAmIFNob3VsZEZs
aXBUZXh0dXJlKSA/IHJlbGF0aXZlU2l6ZS5oZWlnaHQoKSA6IDAsIDAsIDF9OwotCi0gICAgR0xf
Q01EKGdsVW5pZm9ybU1hdHJpeDRmdihzaGFkZXJJbmZvLT5tYXRyaXhWYXJpYWJsZSgpLCAxLCBH
TF9GQUxTRSwgbTQpKQotICAgIEdMX0NNRChnbFVuaWZvcm1NYXRyaXg0ZnYoc2hhZGVySW5mby0+
c291cmNlTWF0cml4VmFyaWFibGUoKSwgMSwgR0xfRkFMU0UsIG00c3JjKSkKLSAgICBHTF9DTUQo
Z2xVbmlmb3JtMWkoc2hhZGVySW5mby0+c291cmNlVGV4dHVyZVZhcmlhYmxlKCksIDApKQotICAg
IEdMX0NNRChnbFVuaWZvcm0xZihzaGFkZXJJbmZvLT5vcGFjaXR5VmFyaWFibGUoKSwgb3BhY2l0
eSkpCisgICAgc2hhZGVySW5mby0+cHJlcGFyZShvcGFjaXR5LCBtYXNrVGV4dHVyZSk7CiAKLSAg
ICBib29sIG5lZWRzQmxlbmRpbmcgPSAoZmxhZ3MgJiBTdXBwb3J0c0JsZW5kaW5nKSB8fCBvcGFj
aXR5IDwgMC45OTsKKyAgICBib29sIG5lZWRzQmxlbmRpbmcgPSAoZmxhZ3MgJiBTdXBwb3J0c0Js
ZW5kaW5nKSB8fCBvcGFjaXR5IDwgMC45OSB8fCBtYXNrVGV4dHVyZTsKIAogICAgIGlmIChuZWVk
c0JsZW5kaW5nKSB7CiAgICAgICAgIEdMX0NNRChnbEJsZW5kRnVuYyhHTF9PTkUsIEdMX09ORV9N
SU5VU19TUkNfQUxQSEEpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAkocmV2aXNpb24gMTA4Njk4
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJGbG9h
dFF1YWQuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiT3BlbkdMU2hpbXMuaCIK
ICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRy
aXguaCIKIApAQCAtMzEsNiArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRl
eHR1cmVNYXBwZXJHTERhdGE7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBUZXh0dXJl
TWFwcGVyU2hhZGVyUHJvZ3JhbTsKIAogLy8gQW4gT3BlbkdMLUVTMiBpbXBsZW1lbnRhdGlvbiBv
ZiBUZXh0dXJlTWFwcGVyLgogY2xhc3MgVGV4dHVyZU1hcHBlckdMIDogcHVibGljIFRleHR1cmVN
YXBwZXIgewpAQCAtNDgsOCArNTAsNiBAQCBwdWJsaWM6CiAgICAgLy8gcmVpbXBzIGZyb20gVGV4
dHVyZU1hcHBlcgogICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0
dXJlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9h
dCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSk7CiAgICAgdmlydHVh
bCB2b2lkIGRyYXdUZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIEZsYWdzLCBjb25zdCBGbG9hdFNp
emUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0
IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZHJhd1RleHR1cmVXaXRoTWFza0FuZE9wYWNpdHkodWludDMyX3QgdGV4dHVyZSwgRmxh
Z3MsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1
cmUpOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZVNpbXBsZSh1aW50MzJfdCB0ZXh0dXJl
LCBGbGFncywgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNr
VGV4dHVyZSk7CiAgICAgdmlydHVhbCB2b2lkIGJpbmRTdXJmYWNlKEJpdG1hcFRleHR1cmUqIHN1
cmZhY2UpOwogICAgIHZpcnR1YWwgdm9pZCBiZWdpbkNsaXAoY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmLCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5QYWludGlu
ZygpOwpAQCAtNzMsNiArNzMsNDIgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQml0bWFw
VGV4dHVyZUdMOwogfTsKIAorY2xhc3MgQml0bWFwVGV4dHVyZUdMIDogcHVibGljIEJpdG1hcFRl
eHR1cmUgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCk7CisgICAgdmlydHVh
bCBJbnRTaXplIHNpemUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0
OworICAgIHZpcnR1YWwgdm9pZCBkaWRSZXNldCgpOworICAgIHZvaWQgYmluZCgpOworICAgIHZv
aWQgaW5pdGlhbGl6ZVN0ZW5jaWwoKTsKKyAgICB+Qml0bWFwVGV4dHVyZUdMKCkgeyBkZXN0cm95
KCk7IH0KKyAgICB2aXJ0dWFsIHVpbnQzMl90IGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQor
ICAgIGlubGluZSBGbG9hdFNpemUgcmVsYXRpdmVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9yZWxh
dGl2ZVNpemU7IH0KKyAgICB2b2lkIHNldFRleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlckdMKiB0
ZXhtYXApIHsgbV90ZXh0dXJlTWFwcGVyID0gdGV4bWFwOyB9CisgICAgdm9pZCB1cGRhdGVDb250
ZW50cyhJbWFnZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JiwgUGl4ZWxGb3JtYXQp
OworICAgIHZvaWQgdXBkYXRlQ29udGVudHMoY29uc3Qgdm9pZCosIGNvbnN0IEludFJlY3QmKTsK
KworcHJpdmF0ZToKKyAgICBHTHVpbnQgbV9pZDsKKyAgICBGbG9hdFNpemUgbV9yZWxhdGl2ZVNp
emU7CisgICAgSW50U2l6ZSBtX3RleHR1cmVTaXplOworICAgIEludFJlY3QgbV9kaXJ0eVJlY3Q7
CisgICAgR0x1aW50IG1fZmJvOworICAgIEdMdWludCBtX3JibzsKKyAgICBib29sIG1fc3VyZmFj
ZU5lZWRzUmVzZXQ7CisgICAgVGV4dHVyZU1hcHBlckdMKiBtX3RleHR1cmVNYXBwZXI7CisgICAg
Qml0bWFwVGV4dHVyZUdMKCkKKyAgICAgICAgOiBtX2lkKDApCisgICAgICAgICwgbV9mYm8oMCkK
KyAgICAgICAgLCBtX3JibygwKQorICAgICAgICAsIG1fc3VyZmFjZU5lZWRzUmVzZXQodHJ1ZSkK
KyAgICAgICAgLCBtX3RleHR1cmVNYXBwZXIoMCkKKyAgICB7CisgICAgfQorCisgICAgZnJpZW5k
IGNsYXNzIFRleHR1cmVNYXBwZXJHTDsKK307CisKIC8vIEFuIG9mZnNjcmVlbiBidWZmZXIgdG8g
YmUgcmVuZGVyZWQgYnkgc29mdHdhcmUuCiBzdGF0aWMgaW5saW5lIGludCBuZXh0UG93ZXJPZlR3
byhpbnQgbnVtKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFn
ZXIuY3BwCShyZXZpc2lvbiAxMDg2OTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMiw2ICsyMiw4IEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYm
IFVTRShURVhUVVJFX01BUFBFUikKIAorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZm5kZWYgVEVYTUFQX09QRU5HTF9FU18yCkBAIC0xNTQs
NiArMTU2LDExIEBAIGNvbnN0IGNoYXIqIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtU2kKICAg
ICByZXR1cm4gZnJhZ21lbnRTaGFkZXJTb3VyY2VTaW1wbGU7CiB9CiAKK3ZvaWQgVGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW1TaW1wbGU6OnByZXBhcmUoZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0
bWFwVGV4dHVyZSogbWFza1RleHR1cmUpCit7CisgICAgZ2xVbmlmb3JtMWYobV9vcGFjaXR5VmFy
aWFibGUsIG9wYWNpdHkpOworfQorCiBQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtT3BhY2l0eUFuZE1hc2s+IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtT3BhY2l0eUFuZE1h
c2s6OmNyZWF0ZSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbU9wYWNpdHlBbmRNYXNrKCkpOwpAQCAtMTgwLDYgKzE4NywyNCBAQCBjb25zdCBj
aGFyKiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbU9wCiAgICAgcmV0dXJuIGZyYWdtZW50U2hh
ZGVyU291cmNlT3BhY2l0eUFuZE1hc2s7CiB9CiAKK3ZvaWQgVGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW1PcGFjaXR5QW5kTWFzazo6cHJlcGFyZShmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBU
ZXh0dXJlKiBtYXNrVGV4dHVyZSkKK3sKKyAgICBnbFVuaWZvcm0xZihtX29wYWNpdHlWYXJpYWJs
ZSwgb3BhY2l0eSk7CisgICAgaWYgKCFtYXNrVGV4dHVyZSB8fCAhbWFza1RleHR1cmUtPmlzVmFs
aWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgQml0bWFwVGV4dHVyZUdMKiBtYXNr
VGV4dHVyZUdMID0gc3RhdGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUdMKj4obWFza1RleHR1
cmUpOworICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMSk7CisgICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCBtYXNrVGV4dHVyZUdMLT5pZCgpKTsKKyAgICBjb25zdCBHTGZsb2F0
IG00bWFza1tdID0ge21hc2tUZXh0dXJlR0wtPnJlbGF0aXZlU2l6ZSgpLndpZHRoKCksIDAsIDAs
IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgbWFza1RleHR1cmVH
TC0+cmVsYXRpdmVTaXplKCkuaGVpZ2h0KCksIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMCwgMCwgMSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLCAwLCAwLCAxfTsKKyAgICBnbFVuaWZvcm1NYXRyaXg0ZnYobV9tYXNrTWF0cml4
VmFyaWFibGUsIDEsIEdMX0ZBTFNFLCBtNG1hc2spOworICAgIGdsVW5pZm9ybTFpKG1fbWFza1Rl
eHR1cmVWYXJpYWJsZSwgMSk7CisgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKK30K
KwogVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OlRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2Vy
KCkKIHsKICAgICBBU1NFUlQoaW5pdGlhbGl6ZU9wZW5HTFNoaW1zKCkpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5h
Z2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmgJKHJldmlzaW9uIDEwODY5OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVy
TWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdHlwZWRlZiB2b2lkKiBTaGFkZXJUeXBlOwogCitjbGFzcyBCaXRtYXBUZXh0dXJl
OwogY2xhc3MgVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI7CiAKIGNsYXNzIFRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtIDogcHVibGljIFJlZkNvdW50ZWQ8VGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW0+IHsKQEAgLTUxLDYgKzUyLDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICZ0eXBl
OwogICAgIH0KIAorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlKGZsb2F0IG9wYWNpdHksIGNvbnN0
IEJpdG1hcFRleHR1cmUqKSB7fQorICAgIEdMaW50IG1hdHJpeFZhcmlhYmxlKCkgeyByZXR1cm4g
bV9tYXRyaXhWYXJpYWJsZTsgfQorICAgIEdMaW50IHNvdXJjZU1hdHJpeFZhcmlhYmxlKCkgeyBy
ZXR1cm4gbV9zb3VyY2VNYXRyaXhWYXJpYWJsZTsgfQorICAgIEdMaW50IHNvdXJjZVRleHR1cmVW
YXJpYWJsZSgpIHsgcmV0dXJuIG1fc291cmNlVGV4dHVyZVZhcmlhYmxlOyB9CisgICAgR0xpbnQg
b3BhY2l0eVZhcmlhYmxlKCkgeyByZXR1cm4gbV9vcGFjaXR5VmFyaWFibGU7IH0KKwogcHJvdGVj
dGVkOgogICAgIHZvaWQgZ2V0VW5pZm9ybUxvY2F0aW9uKEdMaW50JiB2YXIsIGNvbnN0IGNoYXIq
IG5hbWUpOwogICAgIHZvaWQgaW5pdGlhbGl6ZVByb2dyYW0oKTsKQEAgLTYxLDQ3ICs2OCwzNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgR0x1aW50IG1fdmVydGV4QXR0cmliOwogICAgIEdMdWludCBtX3Zl
cnRleFNoYWRlcjsKICAgICBHTHVpbnQgbV9mcmFnbWVudFNoYWRlcjsKKyAgICBHTGludCBtX21h
dHJpeFZhcmlhYmxlOworICAgIEdMaW50IG1fc291cmNlTWF0cml4VmFyaWFibGU7CisgICAgR0xp
bnQgbV9zb3VyY2VUZXh0dXJlVmFyaWFibGU7CisgICAgR0xpbnQgbV9vcGFjaXR5VmFyaWFibGU7
CiB9OwogCiBjbGFzcyBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbVNpbXBsZSA6IHB1YmxpYyBU
ZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1TaW1wbGU+IGNyZWF0ZSgpOwotICAgIEdMaW50
IG1hdHJpeFZhcmlhYmxlKCkgeyByZXR1cm4gbV9tYXRyaXhWYXJpYWJsZTsgfQotICAgIEdMaW50
IHNvdXJjZU1hdHJpeFZhcmlhYmxlKCkgeyByZXR1cm4gbV9zb3VyY2VNYXRyaXhWYXJpYWJsZTsg
fQotICAgIEdMaW50IHNvdXJjZVRleHR1cmVWYXJpYWJsZSgpIHsgcmV0dXJuIG1fc291cmNlVGV4
dHVyZVZhcmlhYmxlOyB9Ci0gICAgR0xpbnQgb3BhY2l0eVZhcmlhYmxlKCkgeyByZXR1cm4gbV9v
cGFjaXR5VmFyaWFibGU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZShmbG9hdCBvcGFjaXR5
LCBjb25zdCBCaXRtYXBUZXh0dXJlKik7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBj
aGFyKiB2ZXJ0ZXhTaGFkZXJTb3VyY2UoKTsKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGZyYWdt
ZW50U2hhZGVyU291cmNlKCk7CiAgICAgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1TaW1wbGUo
KTsKLSAgICBHTGludCBtX21hdHJpeFZhcmlhYmxlOwotICAgIEdMaW50IG1fc291cmNlTWF0cml4
VmFyaWFibGU7Ci0gICAgR0xpbnQgbV9zb3VyY2VUZXh0dXJlVmFyaWFibGU7Ci0gICAgR0xpbnQg
bV9vcGFjaXR5VmFyaWFibGU7CiB9OwogCiBjbGFzcyBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bU9wYWNpdHlBbmRNYXNrIDogcHVibGljIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbU9w
YWNpdHlBbmRNYXNrPiBjcmVhdGUoKTsKLSAgICBHTGludCBzb3VyY2VNYXRyaXhWYXJpYWJsZSgp
IHsgcmV0dXJuIG1fc291cmNlTWF0cml4VmFyaWFibGU7IH0KLSAgICBHTGludCBtYXRyaXhWYXJp
YWJsZSgpIHsgcmV0dXJuIG1fbWF0cml4VmFyaWFibGU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJl
cGFyZShmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKik7CiAgICAgR0xpbnQgbWFz
a01hdHJpeFZhcmlhYmxlKCkgeyByZXR1cm4gbV9tYXNrTWF0cml4VmFyaWFibGU7IH0KLSAgICBH
TGludCBzb3VyY2VUZXh0dXJlVmFyaWFibGUoKSB7IHJldHVybiBtX3NvdXJjZVRleHR1cmVWYXJp
YWJsZTsgfQogICAgIEdMaW50IG1hc2tUZXh0dXJlVmFyaWFibGUoKSB7IHJldHVybiBtX21hc2tU
ZXh0dXJlVmFyaWFibGU7IH0KLSAgICBHTGludCBvcGFjaXR5VmFyaWFibGUoKSB7IHJldHVybiBt
X29wYWNpdHlWYXJpYWJsZTsgfQogCiBwcml2YXRlOgogICAgIHN0YXRpYyBpbnQgbV9jbGFzc0lE
OwogICAgIHZpcnR1YWwgY29uc3QgY2hhciogdmVydGV4U2hhZGVyU291cmNlKCk7CiAgICAgdmly
dHVhbCBjb25zdCBjaGFyKiBmcmFnbWVudFNoYWRlclNvdXJjZSgpOwogICAgIFRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtT3BhY2l0eUFuZE1hc2soKTsKLSAgICBHTGludCBtX3NvdXJjZU1hdHJp
eFZhcmlhYmxlOwotICAgIEdMaW50IG1fbWF0cml4VmFyaWFibGU7CiAgICAgR0xpbnQgbV9tYXNr
TWF0cml4VmFyaWFibGU7Ci0gICAgR0xpbnQgbV9zb3VyY2VUZXh0dXJlVmFyaWFibGU7CiAgICAg
R0xpbnQgbV9tYXNrVGV4dHVyZVZhcmlhYmxlOwotICAgIEdMaW50IG1fb3BhY2l0eVZhcmlhYmxl
OwogfTsKIAogY2xhc3MgVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIgewo=
</data>
<flag name="review"
          id="131070"
          type_id="1"
          status="+"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128736</attachid>
            <date>2012-02-24 07:54:51 -0800</date>
            <delta_ts>2012-02-24 10:03:24 -0800</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>79143.patch</filename>
            <type>text/plain</type>
            <size>16575</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODY5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDEyLTAyLTIzICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAgICBbVGV4bWFwXSBDb25zb2xp
ZGF0ZSB0aGUgY29tbW9uIHBhcnRzIG9mIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MTQzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTm9hbSBSb3NlbnRoYWwuCisKKyAgICAgICAgQ29tYmluZSB0aGUg
dHdvIGRyYXdUZXh0dXJlIG1ldGhvZHMgaW50byBvbmUsIGFuZCBleHRyYWN0IHRoZSBwYXJ0IHRo
YXQKKyAgICAgICAgY291bGQgbm90IGJlIGNvbWJpbmVkIGludG8gaXRzIG93biBtZXRob2QuCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4gUmVmYWN0b3Jpbmcgb25seS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKEJpdG1hcFRleHR1cmVHTCk6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBUZXh0dXJlR0w6On5CaXRtYXBUZXh0dXJlR0wpOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwVGV4dHVyZUdMOjppZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJl
R0w6OnJlbGF0aXZlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6OnNl
dFRleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjpCaXRt
YXBUZXh0dXJlR0wpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyU2hhZGVyTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
U2hhZGVyUHJvZ3JhbU9wYWNpdHlBbmRNYXNrOjpmcmFnbWVudFNoYWRlclNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtT3BhY2l0eUFuZE1hc2s6OnByZXBhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6cHJlcGFyZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6bWF0cml4VmFy
aWFibGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OnNv
dXJjZU1hdHJpeFZhcmlhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJTaGFk
ZXJQcm9ncmFtOjpzb3VyY2VUZXh0dXJlVmFyaWFibGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW06Om9wYWNpdHlWYXJpYWJsZSk6CisgICAgICAgIChUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSk6CisgICAgICAgIChUZXh0dXJlTWFwcGVyU2hhZGVyUHJv
Z3JhbVNpbXBsZSk6CisgICAgICAgIChUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbU9wYWNpdHlB
bmRNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtT3Bh
Y2l0eUFuZE1hc2s6Om1hc2tNYXRyaXhWYXJpYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbU9wYWNpdHlBbmRNYXNrOjptYXNrVGV4dHVyZVZhcmlhYmxl
KToKKwogMjAxMi0wMi0yMSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtjaHJvbWl1bV0gTm90aWZ5IGNvbXBvc2l0b3Igb2Ygd2hlZWwgZXZlbnQgcmVn
aXN0cmF0aW9uIHZpYSBTY3JvbGxpbmdDb29yZGluYXRvcgpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJH
TC5jcHAJKHJldmlzaW9uIDEwODY5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsNDIg
KzIyMyw2IEBAIHN0cnVjdCBUZXh0dXJlTWFwcGVyR0xEYXRhIHsKICAgICBSZWZQdHI8Qml0bWFw
VGV4dHVyZT4gY3VycmVudFN1cmZhY2U7CiB9OwogCi1jbGFzcyBCaXRtYXBUZXh0dXJlR0wgOiBw
dWJsaWMgQml0bWFwVGV4dHVyZSB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3ko
KTsKLSAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBp
c1ZhbGlkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlc2V0KCk7Ci0gICAgdm9pZCBi
aW5kKCk7Ci0gICAgdm9pZCBpbml0aWFsaXplU3RlbmNpbCgpOwotICAgIH5CaXRtYXBUZXh0dXJl
R0woKSB7IGRlc3Ryb3koKTsgfQotICAgIHZpcnR1YWwgdWludDMyX3QgaWQoKSBjb25zdCB7IHJl
dHVybiBtX2lkOyB9Ci0gICAgaW5saW5lIEZsb2F0U2l6ZSByZWxhdGl2ZVNpemUoKSBjb25zdCB7
IHJldHVybiBtX3JlbGF0aXZlU2l6ZTsgfQotICAgIHZvaWQgc2V0VGV4dHVyZU1hcHBlcihUZXh0
dXJlTWFwcGVyR0wqIHRleG1hcCkgeyBtX3RleHR1cmVNYXBwZXIgPSB0ZXhtYXA7IH0KLSAgICB2
b2lkIHVwZGF0ZUNvbnRlbnRzKEltYWdlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3Qm
LCBQaXhlbEZvcm1hdCk7Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50cyhjb25zdCB2b2lkKiwgY29u
c3QgSW50UmVjdCYpOwotCi1wcml2YXRlOgotICAgIEdMdWludCBtX2lkOwotICAgIEZsb2F0U2l6
ZSBtX3JlbGF0aXZlU2l6ZTsKLSAgICBJbnRTaXplIG1fdGV4dHVyZVNpemU7Ci0gICAgSW50UmVj
dCBtX2RpcnR5UmVjdDsKLSAgICBHTHVpbnQgbV9mYm87Ci0gICAgR0x1aW50IG1fcmJvOwotICAg
IGJvb2wgbV9zdXJmYWNlTmVlZHNSZXNldDsKLSAgICBUZXh0dXJlTWFwcGVyR0wqIG1fdGV4dHVy
ZU1hcHBlcjsKLSAgICBCaXRtYXBUZXh0dXJlR0woKQotICAgICAgICA6IG1faWQoMCkKLSAgICAg
ICAgLCBtX2ZibygwKQotICAgICAgICAsIG1fcmJvKDApCi0gICAgICAgICwgbV9zdXJmYWNlTmVl
ZHNSZXNldCh0cnVlKQotICAgICAgICAsIG1fdGV4dHVyZU1hcHBlcigwKQotICAgIHsKLSAgICB9
Ci0KLSAgICBmcmllbmQgY2xhc3MgVGV4dHVyZU1hcHBlckdMOwotfTsKLQogdm9pZCBUZXh0dXJl
TWFwcGVyR0xEYXRhOjppbml0aWFsaXplU3RlbmNpbCgpCiB7CiAgICAgaWYgKGN1cnJlbnRTdXJm
YWNlKSB7CkBAIC0zNTQsMTUgKzMxOCwxMSBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1Rl
eHR1cmUoY29uc3QKIAogdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKHVpbnQzMl90
IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBGbG9hdFNpemUmIHJlbGF0aXZlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9k
ZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4
dHVyZSkKIHsKKyAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0+IHNoYWRlcklu
Zm87CiAgICAgaWYgKG1hc2tUZXh0dXJlKQotICAgICAgICBkcmF3VGV4dHVyZVdpdGhNYXNrQW5k
T3BhY2l0eSh0ZXh0dXJlLCBmbGFncywgcmVsYXRpdmVTaXplLCB0YXJnZXRSZWN0LCBtb2RlbFZp
ZXdNYXRyaXgsIG9wYWNpdHksIG1hc2tUZXh0dXJlKTsKKyAgICAgICAgc2hhZGVySW5mbyA9IGRh
dGEoKS5zaGFyZWRHTERhdGEoKS50ZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5nZXRTaGFkZXJQ
cm9ncmFtPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtT3BhY2l0eUFuZE1hc2s+KCk7CiAgICAg
ZWxzZQotICAgICAgICBkcmF3VGV4dHVyZVNpbXBsZSh0ZXh0dXJlLCBmbGFncywgcmVsYXRpdmVT
aXplLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHksIG1hc2tUZXh0dXJlKTsK
LX0KLQotdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlV2l0aE1hc2tBbmRPcGFjaXR5
KHVpbnQzMl90IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBGbG9hdFNpemUmIHJlbGF0aXZl
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJl
KiBtYXNrVGV4dHVyZSkKLXsKLSAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1P
cGFjaXR5QW5kTWFzaz4gc2hhZGVySW5mbyA9IGRhdGEoKS5zaGFyZWRHTERhdGEoKS50ZXh0dXJl
TWFwcGVyU2hhZGVyTWFuYWdlci5nZXRTaGFkZXJQcm9ncmFtPFRleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtT3BhY2l0eUFuZE1hc2s+KCk7CisgICAgICAgIHNoYWRlckluZm8gPSBkYXRhKCkuc2hh
cmVkR0xEYXRhKCkudGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuZ2V0U2hhZGVyUHJvZ3JhbTxU
ZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbVNpbXBsZT4oKTsKIAogICAgIEdMX0NNRChnbFVzZVBy
b2dyYW0oc2hhZGVySW5mby0+aWQoKSkpCiAgICAgR0xfQ01EKGdsRW5hYmxlVmVydGV4QXR0cmli
QXJyYXkoc2hhZGVySW5mby0+dmVydGV4QXR0cmliKCkpKQpAQCAtMzkyLDYzICszNTIsMTAgQEAg
dm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlV2l0aE1hcwogICAgIEdMX0NNRChnbFVu
aWZvcm1NYXRyaXg0ZnYoc2hhZGVySW5mby0+bWF0cml4VmFyaWFibGUoKSwgMSwgR0xfRkFMU0Us
IG00KSkKICAgICBHTF9DTUQoZ2xVbmlmb3JtTWF0cml4NGZ2KHNoYWRlckluZm8tPnNvdXJjZU1h
dHJpeFZhcmlhYmxlKCksIDEsIEdMX0ZBTFNFLCBtNHNyYykpCiAgICAgR0xfQ01EKGdsVW5pZm9y
bTFpKHNoYWRlckluZm8tPnNvdXJjZVRleHR1cmVWYXJpYWJsZSgpLCAwKSkKLSAgICBHTF9DTUQo
Z2xVbmlmb3JtMWYoc2hhZGVySW5mby0+b3BhY2l0eVZhcmlhYmxlKCksIG9wYWNpdHkpKQotCi0g
ICAgaWYgKG1hc2tUZXh0dXJlLT5pc1ZhbGlkKCkpIHsKLSAgICAgICAgY29uc3QgQml0bWFwVGV4
dHVyZUdMKiBtYXNrVGV4dHVyZUdMID0gc3RhdGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUdM
Kj4obWFza1RleHR1cmUpOwotICAgICAgICBHTF9DTUQoZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRV
UkUxKSkKLSAgICAgICAgR0xfQ01EKGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbWFza1Rl
eHR1cmVHTC0+aWQoKSkpCi0gICAgICAgIGNvbnN0IEdMZmxvYXQgbTRtYXNrW10gPSB7bWFza1Rl
eHR1cmVHTC0+cmVsYXRpdmVTaXplKCkud2lkdGgoKSwgMCwgMCwgMCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgbWFza1RleHR1cmVHTC0+cmVsYXRpdmVTaXpl
KCkuaGVpZ2h0KCksIDAsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAsIDAsIDEsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAsIDAsIDAsIDF9OwotICAgICAgICBHTF9DTUQoZ2xVbmlmb3JtTWF0cml4NGZ2KHNoYWRlcklu
Zm8tPm1hc2tNYXRyaXhWYXJpYWJsZSgpLCAxLCBHTF9GQUxTRSwgbTRtYXNrKSk7Ci0gICAgICAg
IEdMX0NNRChnbFVuaWZvcm0xaShzaGFkZXJJbmZvLT5tYXNrVGV4dHVyZVZhcmlhYmxlKCksIDEp
KQotICAgICAgICBHTF9DTUQoZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKSkKLSAgICB9Ci0K
LSAgICBHTF9DTUQoZ2xCbGVuZEZ1bmMoR0xfT05FLCBHTF9PTkVfTUlOVVNfU1JDX0FMUEhBKSkK
LSAgICBHTF9DTUQoZ2xFbmFibGUoR0xfQkxFTkQpKQotCi0gICAgR0xfQ01EKGdsRHJhd0FycmF5
cyhHTF9UUklBTkdMRV9GQU4sIDAsIDQpKQotICAgIEdMX0NNRChnbERpc2FibGVWZXJ0ZXhBdHRy
aWJBcnJheShzaGFkZXJJbmZvLT52ZXJ0ZXhBdHRyaWIoKSkpCi19Ci0KLXZvaWQgVGV4dHVyZU1h
cHBlckdMOjpkcmF3VGV4dHVyZVNpbXBsZSh1aW50MzJfdCB0ZXh0dXJlLCBGbGFncyBmbGFncywg
Y29uc3QgRmxvYXRTaXplJiByZWxhdGl2ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVj
dCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3Bh
Y2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSopCi17Ci0gICAgUmVmUHRyPFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtU2ltcGxlPiBzaGFkZXJJbmZvID0gZGF0YSgpLnNoYXJlZEdMRGF0YSgpLnRl
eHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmdldFNoYWRlclByb2dyYW08VGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW1TaW1wbGU+KCk7Ci0KLSAgICBHTF9DTUQoZ2xVc2VQcm9ncmFtKHNoYWRlcklu
Zm8tPmlkKCkpKQotICAgIEdMX0NNRChnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHNoYWRlcklu
Zm8tPnZlcnRleEF0dHJpYigpKSkKLSAgICBHTF9DTUQoZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRV
UkUwKSkKLSAgICBHTF9DTUQoZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlKSkK
LSAgICBHTF9DTUQoZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgMCkpCi0gICAgY29uc3Qg
R0xmbG9hdCB1bml0UmVjdFtdID0gezAsIDAsIDEsIDAsIDEsIDEsIDAsIDF9OwotICAgIEdMX0NN
RChnbFZlcnRleEF0dHJpYlBvaW50ZXIoc2hhZGVySW5mby0+dmVydGV4QXR0cmliKCksIDIsIEdM
X0ZMT0FULCBHTF9GQUxTRSwgMCwgdW5pdFJlY3QpKQogCi0gICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggbWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoZGF0YSgpLnByb2plY3Rpb25NYXRyaXgp
Lm11bHRpcGx5KG1vZGVsVmlld01hdHJpeCkubXVsdGlwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXgo
Ci0gICAgICAgICAgICB0YXJnZXRSZWN0LndpZHRoKCksIDAsIDAsIDAsCi0gICAgICAgICAgICAw
LCB0YXJnZXRSZWN0LmhlaWdodCgpLCAwLCAwLAotICAgICAgICAgICAgMCwgMCwgMSwgMCwKLSAg
ICAgICAgICAgIHRhcmdldFJlY3QueCgpLCB0YXJnZXRSZWN0LnkoKSwgMCwgMSkpOwotCi0gICAg
Y29uc3QgR0xmbG9hdCBtNFtdID0gewotICAgICAgICBtYXRyaXgubTExKCksIG1hdHJpeC5tMTIo
KSwgbWF0cml4Lm0xMygpLCBtYXRyaXgubTE0KCksCi0gICAgICAgIG1hdHJpeC5tMjEoKSwgbWF0
cml4Lm0yMigpLCBtYXRyaXgubTIzKCksIG1hdHJpeC5tMjQoKSwKLSAgICAgICAgbWF0cml4Lm0z
MSgpLCBtYXRyaXgubTMyKCksIG1hdHJpeC5tMzMoKSwgbWF0cml4Lm0zNCgpLAotICAgICAgICBt
YXRyaXgubTQxKCksIG1hdHJpeC5tNDIoKSwgbWF0cml4Lm00MygpLCBtYXRyaXgubTQ0KCkKLSAg
ICB9OwotICAgIGNvbnN0IEdMZmxvYXQgbTRzcmNbXSA9IHtyZWxhdGl2ZVNpemUud2lkdGgoKSwg
MCwgMCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCByZWxhdGl2
ZVNpemUuaGVpZ2h0KCkgKiAoKGZsYWdzICYgU2hvdWxkRmxpcFRleHR1cmUpID8gLTEgOiAxKSwg
MCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAxLCAwLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIChmbGFncyAmIFNob3VsZEZs
aXBUZXh0dXJlKSA/IHJlbGF0aXZlU2l6ZS5oZWlnaHQoKSA6IDAsIDAsIDF9OwotCi0gICAgR0xf
Q01EKGdsVW5pZm9ybU1hdHJpeDRmdihzaGFkZXJJbmZvLT5tYXRyaXhWYXJpYWJsZSgpLCAxLCBH
TF9GQUxTRSwgbTQpKQotICAgIEdMX0NNRChnbFVuaWZvcm1NYXRyaXg0ZnYoc2hhZGVySW5mby0+
c291cmNlTWF0cml4VmFyaWFibGUoKSwgMSwgR0xfRkFMU0UsIG00c3JjKSkKLSAgICBHTF9DTUQo
Z2xVbmlmb3JtMWkoc2hhZGVySW5mby0+c291cmNlVGV4dHVyZVZhcmlhYmxlKCksIDApKQotICAg
IEdMX0NNRChnbFVuaWZvcm0xZihzaGFkZXJJbmZvLT5vcGFjaXR5VmFyaWFibGUoKSwgb3BhY2l0
eSkpCisgICAgc2hhZGVySW5mby0+cHJlcGFyZShvcGFjaXR5LCBtYXNrVGV4dHVyZSk7CiAKLSAg
ICBib29sIG5lZWRzQmxlbmRpbmcgPSAoZmxhZ3MgJiBTdXBwb3J0c0JsZW5kaW5nKSB8fCBvcGFj
aXR5IDwgMC45OTsKKyAgICBib29sIG5lZWRzQmxlbmRpbmcgPSAoZmxhZ3MgJiBTdXBwb3J0c0Js
ZW5kaW5nKSB8fCBvcGFjaXR5IDwgMC45OSB8fCBtYXNrVGV4dHVyZTsKIAogICAgIGlmIChuZWVk
c0JsZW5kaW5nKSB7CiAgICAgICAgIEdMX0NNRChnbEJsZW5kRnVuYyhHTF9PTkUsIEdMX09ORV9N
SU5VU19TUkNfQUxQSEEpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAkocmV2aXNpb24gMTA4Njk4
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJGbG9h
dFF1YWQuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiT3BlbkdMU2hpbXMuaCIK
ICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRy
aXguaCIKIApAQCAtMzEsNiArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRl
eHR1cmVNYXBwZXJHTERhdGE7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBUZXh0dXJl
TWFwcGVyU2hhZGVyUHJvZ3JhbTsKIAogLy8gQW4gT3BlbkdMLUVTMiBpbXBsZW1lbnRhdGlvbiBv
ZiBUZXh0dXJlTWFwcGVyLgogY2xhc3MgVGV4dHVyZU1hcHBlckdMIDogcHVibGljIFRleHR1cmVN
YXBwZXIgewpAQCAtNDgsOCArNTAsNiBAQCBwdWJsaWM6CiAgICAgLy8gcmVpbXBzIGZyb20gVGV4
dHVyZU1hcHBlcgogICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0
dXJlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9h
dCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSk7CiAgICAgdmlydHVh
bCB2b2lkIGRyYXdUZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIEZsYWdzLCBjb25zdCBGbG9hdFNp
emUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0
IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZHJhd1RleHR1cmVXaXRoTWFza0FuZE9wYWNpdHkodWludDMyX3QgdGV4dHVyZSwgRmxh
Z3MsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1
cmUpOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZVNpbXBsZSh1aW50MzJfdCB0ZXh0dXJl
LCBGbGFncywgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNr
VGV4dHVyZSk7CiAgICAgdmlydHVhbCB2b2lkIGJpbmRTdXJmYWNlKEJpdG1hcFRleHR1cmUqIHN1
cmZhY2UpOwogICAgIHZpcnR1YWwgdm9pZCBiZWdpbkNsaXAoY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmLCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5QYWludGlu
ZygpOwpAQCAtNzMsNiArNzMsNDIgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQml0bWFw
VGV4dHVyZUdMOwogfTsKIAorY2xhc3MgQml0bWFwVGV4dHVyZUdMIDogcHVibGljIEJpdG1hcFRl
eHR1cmUgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCk7CisgICAgdmlydHVh
bCBJbnRTaXplIHNpemUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0
OworICAgIHZpcnR1YWwgdm9pZCBkaWRSZXNldCgpOworICAgIHZvaWQgYmluZCgpOworICAgIHZv
aWQgaW5pdGlhbGl6ZVN0ZW5jaWwoKTsKKyAgICB+Qml0bWFwVGV4dHVyZUdMKCkgeyBkZXN0cm95
KCk7IH0KKyAgICB2aXJ0dWFsIHVpbnQzMl90IGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQor
ICAgIGlubGluZSBGbG9hdFNpemUgcmVsYXRpdmVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9yZWxh
dGl2ZVNpemU7IH0KKyAgICB2b2lkIHNldFRleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlckdMKiB0
ZXhtYXApIHsgbV90ZXh0dXJlTWFwcGVyID0gdGV4bWFwOyB9CisgICAgdm9pZCB1cGRhdGVDb250
ZW50cyhJbWFnZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JiwgUGl4ZWxGb3JtYXQp
OworICAgIHZvaWQgdXBkYXRlQ29udGVudHMoY29uc3Qgdm9pZCosIGNvbnN0IEludFJlY3QmKTsK
KworcHJpdmF0ZToKKyAgICBHTHVpbnQgbV9pZDsKKyAgICBGbG9hdFNpemUgbV9yZWxhdGl2ZVNp
emU7CisgICAgSW50U2l6ZSBtX3RleHR1cmVTaXplOworICAgIEludFJlY3QgbV9kaXJ0eVJlY3Q7
CisgICAgR0x1aW50IG1fZmJvOworICAgIEdMdWludCBtX3JibzsKKyAgICBib29sIG1fc3VyZmFj
ZU5lZWRzUmVzZXQ7CisgICAgVGV4dHVyZU1hcHBlckdMKiBtX3RleHR1cmVNYXBwZXI7CisgICAg
Qml0bWFwVGV4dHVyZUdMKCkKKyAgICAgICAgOiBtX2lkKDApCisgICAgICAgICwgbV9mYm8oMCkK
KyAgICAgICAgLCBtX3JibygwKQorICAgICAgICAsIG1fc3VyZmFjZU5lZWRzUmVzZXQodHJ1ZSkK
KyAgICAgICAgLCBtX3RleHR1cmVNYXBwZXIoMCkKKyAgICB7CisgICAgfQorCisgICAgZnJpZW5k
IGNsYXNzIFRleHR1cmVNYXBwZXJHTDsKK307CisKIC8vIEFuIG9mZnNjcmVlbiBidWZmZXIgdG8g
YmUgcmVuZGVyZWQgYnkgc29mdHdhcmUuCiBzdGF0aWMgaW5saW5lIGludCBuZXh0UG93ZXJPZlR3
byhpbnQgbnVtKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFn
ZXIuY3BwCShyZXZpc2lvbiAxMDg2OTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMiw2ICsyMiw4IEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYm
IFVTRShURVhUVVJFX01BUFBFUikKIAorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZm5kZWYgVEVYTUFQX09QRU5HTF9FU18yCkBAIC0xNTQs
NiArMTU2LDExIEBAIGNvbnN0IGNoYXIqIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtU2kKICAg
ICByZXR1cm4gZnJhZ21lbnRTaGFkZXJTb3VyY2VTaW1wbGU7CiB9CiAKK3ZvaWQgVGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW1TaW1wbGU6OnByZXBhcmUoZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0
bWFwVGV4dHVyZSogbWFza1RleHR1cmUpCit7CisgICAgZ2xVbmlmb3JtMWYobV9vcGFjaXR5VmFy
aWFibGUsIG9wYWNpdHkpOworfQorCiBQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtT3BhY2l0eUFuZE1hc2s+IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtT3BhY2l0eUFuZE1h
c2s6OmNyZWF0ZSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbU9wYWNpdHlBbmRNYXNrKCkpOwpAQCAtMTgwLDYgKzE4NywyNCBAQCBjb25zdCBj
aGFyKiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbU9wCiAgICAgcmV0dXJuIGZyYWdtZW50U2hh
ZGVyU291cmNlT3BhY2l0eUFuZE1hc2s7CiB9CiAKK3ZvaWQgVGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW1PcGFjaXR5QW5kTWFzazo6cHJlcGFyZShmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBU
ZXh0dXJlKiBtYXNrVGV4dHVyZSkKK3sKKyAgICBnbFVuaWZvcm0xZihtX29wYWNpdHlWYXJpYWJs
ZSwgb3BhY2l0eSk7CisgICAgaWYgKCFtYXNrVGV4dHVyZSB8fCAhbWFza1RleHR1cmUtPmlzVmFs
aWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgQml0bWFwVGV4dHVyZUdMKiBtYXNr
VGV4dHVyZUdMID0gc3RhdGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUdMKj4obWFza1RleHR1
cmUpOworICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMSk7CisgICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCBtYXNrVGV4dHVyZUdMLT5pZCgpKTsKKyAgICBjb25zdCBHTGZsb2F0
IG00bWFza1tdID0ge21hc2tUZXh0dXJlR0wtPnJlbGF0aXZlU2l6ZSgpLndpZHRoKCksIDAsIDAs
IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgbWFza1RleHR1cmVH
TC0+cmVsYXRpdmVTaXplKCkuaGVpZ2h0KCksIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMCwgMCwgMSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLCAwLCAwLCAxfTsKKyAgICBnbFVuaWZvcm1NYXRyaXg0ZnYobV9tYXNrTWF0cml4
VmFyaWFibGUsIDEsIEdMX0ZBTFNFLCBtNG1hc2spOworICAgIGdsVW5pZm9ybTFpKG1fbWFza1Rl
eHR1cmVWYXJpYWJsZSwgMSk7CisgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKK30K
KwogVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OlRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2Vy
KCkKIHsKICAgICBBU1NFUlQoaW5pdGlhbGl6ZU9wZW5HTFNoaW1zKCkpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5h
Z2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmgJKHJldmlzaW9uIDEwODY5OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVy
TWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdHlwZWRlZiB2b2lkKiBTaGFkZXJUeXBlOwogCitjbGFzcyBCaXRtYXBUZXh0dXJl
OwogY2xhc3MgVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI7CiAKIGNsYXNzIFRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtIDogcHVibGljIFJlZkNvdW50ZWQ8VGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW0+IHsKQEAgLTUxLDYgKzUyLDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICZ0eXBl
OwogICAgIH0KIAorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlKGZsb2F0IG9wYWNpdHksIGNvbnN0
IEJpdG1hcFRleHR1cmUqKSB7IH0KKyAgICBHTGludCBtYXRyaXhWYXJpYWJsZSgpIHsgcmV0dXJu
IG1fbWF0cml4VmFyaWFibGU7IH0KKyAgICBHTGludCBzb3VyY2VNYXRyaXhWYXJpYWJsZSgpIHsg
cmV0dXJuIG1fc291cmNlTWF0cml4VmFyaWFibGU7IH0KKyAgICBHTGludCBzb3VyY2VUZXh0dXJl
VmFyaWFibGUoKSB7IHJldHVybiBtX3NvdXJjZVRleHR1cmVWYXJpYWJsZTsgfQorICAgIEdMaW50
IG9wYWNpdHlWYXJpYWJsZSgpIHsgcmV0dXJuIG1fb3BhY2l0eVZhcmlhYmxlOyB9CisKIHByb3Rl
Y3RlZDoKICAgICB2b2lkIGdldFVuaWZvcm1Mb2NhdGlvbihHTGludCYgdmFyLCBjb25zdCBjaGFy
KiBuYW1lKTsKICAgICB2b2lkIGluaXRpYWxpemVQcm9ncmFtKCk7CkBAIC02MSw0NyArNjgsMzcg
QEAgcHJvdGVjdGVkOgogICAgIEdMdWludCBtX3ZlcnRleEF0dHJpYjsKICAgICBHTHVpbnQgbV92
ZXJ0ZXhTaGFkZXI7CiAgICAgR0x1aW50IG1fZnJhZ21lbnRTaGFkZXI7CisgICAgR0xpbnQgbV9t
YXRyaXhWYXJpYWJsZTsKKyAgICBHTGludCBtX3NvdXJjZU1hdHJpeFZhcmlhYmxlOworICAgIEdM
aW50IG1fc291cmNlVGV4dHVyZVZhcmlhYmxlOworICAgIEdMaW50IG1fb3BhY2l0eVZhcmlhYmxl
OwogfTsKIAogY2xhc3MgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1TaW1wbGUgOiBwdWJsaWMg
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtU2ltcGxlPiBjcmVhdGUoKTsKLSAgICBHTGlu
dCBtYXRyaXhWYXJpYWJsZSgpIHsgcmV0dXJuIG1fbWF0cml4VmFyaWFibGU7IH0KLSAgICBHTGlu
dCBzb3VyY2VNYXRyaXhWYXJpYWJsZSgpIHsgcmV0dXJuIG1fc291cmNlTWF0cml4VmFyaWFibGU7
IH0KLSAgICBHTGludCBzb3VyY2VUZXh0dXJlVmFyaWFibGUoKSB7IHJldHVybiBtX3NvdXJjZVRl
eHR1cmVWYXJpYWJsZTsgfQotICAgIEdMaW50IG9wYWNpdHlWYXJpYWJsZSgpIHsgcmV0dXJuIG1f
b3BhY2l0eVZhcmlhYmxlOyB9CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmUoZmxvYXQgb3BhY2l0
eSwgY29uc3QgQml0bWFwVGV4dHVyZSopOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3Qg
Y2hhciogdmVydGV4U2hhZGVyU291cmNlKCk7CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiBmcmFn
bWVudFNoYWRlclNvdXJjZSgpOwogICAgIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtU2ltcGxl
KCk7Ci0gICAgR0xpbnQgbV9tYXRyaXhWYXJpYWJsZTsKLSAgICBHTGludCBtX3NvdXJjZU1hdHJp
eFZhcmlhYmxlOwotICAgIEdMaW50IG1fc291cmNlVGV4dHVyZVZhcmlhYmxlOwotICAgIEdMaW50
IG1fb3BhY2l0eVZhcmlhYmxlOwogfTsKIAogY2xhc3MgVGV4dHVyZU1hcHBlclNoYWRlclByb2dy
YW1PcGFjaXR5QW5kTWFzayA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1P
cGFjaXR5QW5kTWFzaz4gY3JlYXRlKCk7Ci0gICAgR0xpbnQgc291cmNlTWF0cml4VmFyaWFibGUo
KSB7IHJldHVybiBtX3NvdXJjZU1hdHJpeFZhcmlhYmxlOyB9Ci0gICAgR0xpbnQgbWF0cml4VmFy
aWFibGUoKSB7IHJldHVybiBtX21hdHJpeFZhcmlhYmxlOyB9CisgICAgdmlydHVhbCB2b2lkIHBy
ZXBhcmUoZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSopOwogICAgIEdMaW50IG1h
c2tNYXRyaXhWYXJpYWJsZSgpIHsgcmV0dXJuIG1fbWFza01hdHJpeFZhcmlhYmxlOyB9Ci0gICAg
R0xpbnQgc291cmNlVGV4dHVyZVZhcmlhYmxlKCkgeyByZXR1cm4gbV9zb3VyY2VUZXh0dXJlVmFy
aWFibGU7IH0KICAgICBHTGludCBtYXNrVGV4dHVyZVZhcmlhYmxlKCkgeyByZXR1cm4gbV9tYXNr
VGV4dHVyZVZhcmlhYmxlOyB9Ci0gICAgR0xpbnQgb3BhY2l0eVZhcmlhYmxlKCkgeyByZXR1cm4g
bV9vcGFjaXR5VmFyaWFibGU7IH0KIAogcHJpdmF0ZToKICAgICBzdGF0aWMgaW50IG1fY2xhc3NJ
RDsKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHZlcnRleFNoYWRlclNvdXJjZSgpOwogICAgIHZp
cnR1YWwgY29uc3QgY2hhciogZnJhZ21lbnRTaGFkZXJTb3VyY2UoKTsKICAgICBUZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbU9wYWNpdHlBbmRNYXNrKCk7Ci0gICAgR0xpbnQgbV9zb3VyY2VNYXRy
aXhWYXJpYWJsZTsKLSAgICBHTGludCBtX21hdHJpeFZhcmlhYmxlOwogICAgIEdMaW50IG1fbWFz
a01hdHJpeFZhcmlhYmxlOwotICAgIEdMaW50IG1fc291cmNlVGV4dHVyZVZhcmlhYmxlOwogICAg
IEdMaW50IG1fbWFza1RleHR1cmVWYXJpYWJsZTsKLSAgICBHTGludCBtX29wYWNpdHlWYXJpYWJs
ZTsKIH07CiAKIGNsYXNzIFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>