<?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>96801</bug_id>
          
          <creation_ts>2012-09-14 09:56:37 -0700</creation_ts>
          <short_desc>[CSS Shaders] Refactor FECustomFilter to make it usable from platform dependent implementations</short_desc>
          <delta_ts>2012-09-14 12:35:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Alexandru Chiculita">achicu</reporter>
          <assigned_to name="Alexandru Chiculita">achicu</assigned_to>
          <cc>dino</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>720856</commentid>
    <comment_count>0</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-09-14 09:56:37 -0700</bug_when>
    <thetext>Refactoring the code in FECustomFilter to make it easy to use from FECustomFilterSkia.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720876</commentid>
    <comment_count>1</comment_count>
      <attachid>164176</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-09-14 10:08:27 -0700</bug_when>
    <thetext>Created attachment 164176
Patch V1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720883</commentid>
    <comment_count>2</comment_count>
      <attachid>164178</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-09-14 10:10:47 -0700</bug_when>
    <thetext>Created attachment 164178
Patch V2

I forgot to remove the Skia method in FECustomFilter.h. Fixed it now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720911</commentid>
    <comment_count>3</comment_count>
      <attachid>164184</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-09-14 10:25:52 -0700</bug_when>
    <thetext>Created attachment 164184
Patch V3

Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720979</commentid>
    <comment_count>4</comment_count>
      <attachid>164184</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-09-14 11:28:40 -0700</bug_when>
    <thetext>Comment on attachment 164184
Patch V3

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

I didn&apos;t look through this so carefully since I&apos;d already done it in the original bug :)

&gt; Source/WebCore/platform/graphics/filters/FECustomFilter.cpp:185
&gt; +    // Only allocate a texture if the program needs one and the caller doesn&apos;t allocate one by itself.
&gt; +    if (programNeedsInputTexture() &amp;&amp; (filterDrawType == NEEDS_INPUT_TEXTURE) &amp;&amp; !ensureInputTexture())
&gt; +        return false;
&gt; +    if (!ensureFrameBuffer())
&gt; +        return false;

Any reason why we don&apos;t merge that into one test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721000</commentid>
    <comment_count>5</comment_count>
      <attachid>164184</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-09-14 11:54:34 -0700</bug_when>
    <thetext>Comment on attachment 164184
Patch V3

Thanks Dean!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721034</commentid>
    <comment_count>6</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-09-14 12:35:17 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/128641 .</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164176</attachid>
            <date>2012-09-14 10:08:27 -0700</date>
            <delta_ts>2012-09-14 10:10:47 -0700</delta_ts>
            <desc>Patch V1</desc>
            <filename>bug96801_1.patch</filename>
            <type>text/plain</type>
            <size>16572</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwMTljMjNiLi5hMjVkZjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAg
QEAKKzIwMTItMDktMTQgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgor
CisgICAgICAgIFtDU1MgU2hhZGVyc10gUmVmYWN0b3IgRkVDdXN0b21GaWx0ZXIgdG8gbWFrZSBp
dCB1c2FibGUgZnJvbSBwbGF0Zm9ybSBkZXBlbmRlbnQgaW1wbGVtZW50YXRpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjgwMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkndmUgcmVmYWN0b3JlZCB0
aGUgRkVDdXN0b21GaWx0ZXIgdG8gYWxsb3cgRkVDdXN0b21GaWx0ZXJTa2lhLmNwcCB0byB1c2Ug
dGhlIHJlbmRlcmluZyBwYXJ0CisgICAgICAgIGZyb20gb3V0c2lkZS4KKworICAgICAgICBBbHNv
IHJlbW92ZWQgdGhlIFRleHR1cmUgY2xhc3MgYXMgaXQgaXMgbm90IGF2YWlsYWJsZSBvbiBzb21l
IHBsYXRmb3Jtcy4KKworICAgICAgICBUaGUgY2hhbmdlcyBmb3IgU2tpYSB3aWxsIGxhbmQgaW4g
YSBkaWZmZXJlbnQgcGF0Y2g6CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NjU3OQorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhlIGV4aXN0aW5nIGN1
c3RvbSBmaWx0ZXJzIHRlc3RzIHNob3VsZCBhbHJlYWR5IGNvdmVyIHRoaXMuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dDo6cHJlcGFyZUNv
bnRleHRJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1
c3RvbUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUN1c3RvbUZpbHRlcjo6RkVDdXN0
b21GaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OmRlbGV0ZVJlbmRl
ckJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OmRyYXdGaWx0ZXJN
ZXNoKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0
ZXI6OnByZXBhcmVGb3JEcmF3aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9tRmlsdGVy
Ojpwcm9ncmFtTmVlZHNJbnB1dFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21G
aWx0ZXI6OmFwcGx5U2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9tRmlsdGVyOjpp
bml0aWFsaXplQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGRUN1c3RvbUZpbHRlcjo6ZW5z
dXJlSW5wdXRUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9tRmlsdGVyOjp1cGxv
YWRJbnB1dFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OmVuc3Vy
ZUZyYW1lQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9tRmlsdGVyOjpyZXNpemVD
b250ZXh0SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OnJlc2l6
ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OmJpbmRQcm9ncmFt
QW5kQnVmZmVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3Rv
bUZpbHRlci5oOgorICAgICAgICAoRkVDdXN0b21GaWx0ZXIpOgorCiAyMDEyLTA5LTE0ICBUb3Ig
QXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRd
IFJlbW92ZSBvbGQgY3J1ZnQgZnJvbSB0aGUgcW1ha2UgYnVpbGQgc3lzdGVtCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckds
b2JhbENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmNwcAppbmRleCA1ODI4NDZlLi5kYTk3ODJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlckdsb2JhbENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5jcHAKQEAgLTc4LDYgKzc4
LDggQEAgdm9pZCBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0OjpwcmVwYXJlQ29udGV4dElmTmVl
ZGVkKEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJp
YnV0ZXMgYXR0cmlidXRlczsKICAgICBhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlciA9
IHRydWU7CiAgICAgYXR0cmlidXRlcy5wcmVtdWx0aXBsaWVkQWxwaGEgPSBmYWxzZTsKKyAgICBh
dHRyaWJ1dGVzLnNoYXJlUmVzb3VyY2VzID0gdHJ1ZTsKKyAgICBhdHRyaWJ1dGVzLnByZWZlckRp
c2NyZXRlR1BVID0gdHJ1ZTsKICAgICBtX2NvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRDo6Y3Jl
YXRlKGF0dHJpYnV0ZXMsIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJPZmZz
Y3JlZW4pOwogICAgIGlmICghbV9jb250ZXh0KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21G
aWx0ZXIuY3BwCmluZGV4IGZkMTI1MDYuLjM0MmFkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3Bw
CkBAIC0xLDQgKzEsNSBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1z
IEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAx
MSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKQEAgLTgzLDYgKzg0LDcgQEAgRkVDdXN0b21GaWx0ZXI6OkZFQ3VzdG9tRmls
dGVyKEZpbHRlciogZmlsdGVyLCBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0KiBjdXN0b20KICAg
ICAsIG1fZ2xvYmFsQ29udGV4dChjdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0KQogICAgICwgbV92
YWxpZGF0ZWRQcm9ncmFtKHZhbGlkYXRlZFByb2dyYW0pCiAgICAgLCBtX2NvbXBpbGVkUHJvZ3Jh
bSgwKSAvLyBEb24ndCBjb21waWxlIHRoZSBwcm9ncmFtIHVubGVzcyB3ZSBuZWVkIHRvIHBhaW50
LgorICAgICwgbV9pbnB1dFRleHR1cmUoMCkKICAgICAsIG1fZnJhbWVCdWZmZXIoMCkKICAgICAs
IG1fZGVwdGhCdWZmZXIoMCkKICAgICAsIG1fZGVzdFRleHR1cmUoMCkKQEAgLTExMiw2ICsxMTQs
MTAgQEAgdm9pZCBGRUN1c3RvbUZpbHRlcjo6ZGVsZXRlUmVuZGVyQnVmZmVycygpCiAgICAgaWYg
KCFtX2NvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpOworICAgIGlmIChtX2lucHV0VGV4dHVyZSkgeworICAgICAgICBtX2NvbnRleHQt
PmRlbGV0ZVRleHR1cmUobV9pbnB1dFRleHR1cmUpOworICAgICAgICBtX2lucHV0VGV4dHVyZSA9
IDA7CisgICAgfQogICAgIGlmIChtX2ZyYW1lQnVmZmVyKSB7CiAgICAgICAgIC8vIE1ha2Ugc3Vy
ZSB0byB1bmJpbmQgYW55IGZyYW1lYnVmZmVyIGZyb20gdGhlIGNvbnRleHQgZmlyc3QsIG90aGVy
d2lzZQogICAgICAgICAvLyBzb21lIHBsYXRmb3JtcyBtaWdodCByZWZ1c2UgdG8gYmluZCB0aGUg
c2FtZSBidWZmZXIgaWQgYWdhaW4uCkBAIC0xNDgsNDYgKzE1NCw2NSBAQCB2b2lkIEZFQ3VzdG9t
RmlsdGVyOjpjbGVhclNoYWRlclJlc3VsdCgpCiAgICAgaW4tPmNvcHlVbm11bHRpcGxpZWRJbWFn
ZShkc3RQaXhlbEFycmF5LCBlZmZlY3REcmF3aW5nUmVjdCk7CiB9CiAKK3ZvaWQgRkVDdXN0b21G
aWx0ZXI6OmRyYXdGaWx0ZXJNZXNoKFBsYXRmb3JtM0RPYmplY3QgaW5wdXRUZXh0dXJlKQorewor
ICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJV
RkZFUiwgbV9mcmFtZUJ1ZmZlcik7CisgICAgbV9jb250ZXh0LT52aWV3cG9ydCgwLCAwLCBtX2Nv
bnRleHRTaXplLndpZHRoKCksIG1fY29udGV4dFNpemUuaGVpZ2h0KCkpOworICAgIAorICAgIG1f
Y29udGV4dC0+Y2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKKyAgICBtX2NvbnRleHQtPmNsZWFyKEdy
YXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklUIHwgR3JhcGhpY3NDb250ZXh0M0Q6OkRF
UFRIX0JVRkZFUl9CSVQpOworICAgIAorICAgIGJpbmRQcm9ncmFtQW5kQnVmZmVycyhpbnB1dFRl
eHR1cmUpOworICAgIG1fY29udGV4dC0+ZHJhd0VsZW1lbnRzKEdyYXBoaWNzQ29udGV4dDNEOjpU
UklBTkdMRVMsIG1fbWVzaC0+aW5kaWNlc0NvdW50KCksIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJ
R05FRF9TSE9SVCwgMCk7CisgICAgdW5iaW5kVmVydGV4QXR0cmlidXRlcygpOworfQorCitib29s
IEZFQ3VzdG9tRmlsdGVyOjpwcmVwYXJlRm9yRHJhd2luZyhDdXN0b21GaWx0ZXJEcmF3VHlwZSBm
aWx0ZXJEcmF3VHlwZSkKK3sKKyAgICBpZiAoIW1fY29udGV4dCAmJiAhaW5pdGlhbGl6ZUNvbnRl
eHQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCk7CisKKyAgICAvLyBJZiB0aGUgc2hhZGVyIGhhZCBjb21waWxlciBlcnJvcnMgd2Ug
Y2Fubm90IGRyYXcgYW55dGhpbmcuCisgICAgaWYgKCFtX2NvbXBpbGVkUHJvZ3JhbS0+aXNJbml0
aWFsaXplZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgLy8gT25seSBhbGxv
Y2F0ZSBhIHRleHR1cmUgaWYgdGhlIHByb2dyYW0gbmVlZHMgb25lIGFuZCB0aGUgY2FsbGVyIGRv
ZXNuJ3QgYWxsb2NhdGUgb25lIGJ5IGl0c2VsZi4KKyAgICBpZiAocHJvZ3JhbU5lZWRzSW5wdXRU
ZXh0dXJlKCkgJiYgKGZpbHRlckRyYXdUeXBlID09IE5FRURTX0lOUFVUX1RFWFRVUkUpICYmICFl
bnN1cmVJbnB1dFRleHR1cmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZW5z
dXJlRnJhbWVCdWZmZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVy
biB0cnVlOworfQorCitib29sIEZFQ3VzdG9tRmlsdGVyOjpwcm9ncmFtTmVlZHNJbnB1dFRleHR1
cmUoKSBjb25zdAoreworICAgIEFTU0VSVChtX2NvbXBpbGVkUHJvZ3JhbS5nZXQoKSk7CisgICAg
cmV0dXJuIG1fY29tcGlsZWRQcm9ncmFtLT5zYW1wbGVyTG9jYXRpb24oKSAhPSAtMTsKK30KKwog
Ym9vbCBGRUN1c3RvbUZpbHRlcjo6YXBwbHlTaGFkZXIoKQogewogICAgIFVpbnQ4Q2xhbXBlZEFy
cmF5KiBkc3RQaXhlbEFycmF5ID0gY3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKICAg
ICBpZiAoIWRzdFBpeGVsQXJyYXkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmICgh
cHJlcGFyZUZvckRyYXdpbmcoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgRmlsdGVy
RWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogICAgIEludFJlY3QgZWZmZWN0RHJhd2luZ1Jl
Y3QgPSByZXF1ZXN0ZWRSZWdpb25PZklucHV0SW1hZ2VEYXRhKGluLT5hYnNvbHV0ZVBhaW50UmVj
dCgpKTsKLSAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHNyY1BpeGVsQXJyYXkgPSBpbi0+
YXNVbm11bHRpcGxpZWRJbWFnZShlZmZlY3REcmF3aW5nUmVjdCk7Ci0gICAgCiAgICAgSW50U2l6
ZSBuZXdDb250ZXh0U2l6ZShlZmZlY3REcmF3aW5nUmVjdC5zaXplKCkpOwotICAgIGJvb2wgaGFk
Q29udGV4dCA9IG1fY29udGV4dDsKLSAgICBpZiAoIW1fY29udGV4dCAmJiAhaW5pdGlhbGl6ZUNv
bnRleHQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCk7Ci0gICAgCi0gICAgaWYgKCFoYWRDb250ZXh0IHx8IG1fY29udGV4dFNpemUg
IT0gbmV3Q29udGV4dFNpemUpCi0gICAgICAgIHJlc2l6ZUNvbnRleHQobmV3Q29udGV4dFNpemUp
OwotCi0jaWYgIVBMQVRGT1JNKEJMQUNLQkVSUlkpIC8vIEJsYWNrQmVycnkgZGVmaW5lcyBpdHMg
b3duIFRleHR1cmUgY2xhc3MuCi0gICAgLy8gRG8gbm90IGRyYXcgdGhlIGZpbHRlciBpZiB0aGUg
aW5wdXQgaW1hZ2UgY2Fubm90IGZpdCBpbnNpZGUgYSBzaW5nbGUgR1BVIHRleHR1cmUuCi0gICAg
aWYgKG1faW5wdXRUZXh0dXJlLT50aWxlcygpLm51bVRpbGVzWCgpICE9IDEgfHwgbV9pbnB1dFRl
eHR1cmUtPnRpbGVzKCkubnVtVGlsZXNZKCkgIT0gMSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
I2VuZGlmCi0gICAgCi0gICAgLy8gVGhlIHNoYWRlciBoYWQgY29tcGlsZXIgZXJyb3JzLiBXZSBj
YW5ub3QgZHJhdyBhbnl0aGluZy4KLSAgICBpZiAoIW1fY29tcGlsZWRQcm9ncmFtLT5pc0luaXRp
YWxpemVkKCkpCisgICAgaWYgKCFyZXNpemVDb250ZXh0SWZOZWVkZWQobmV3Q29udGV4dFNpemUp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZl
cihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZnJhbWVCdWZmZXIpOwotICAgIG1f
Y29udGV4dC0+dmlld3BvcnQoMCwgMCwgbmV3Q29udGV4dFNpemUud2lkdGgoKSwgbmV3Q29udGV4
dFNpemUuaGVpZ2h0KCkpOwotICAgIAotICAgIG1fY29udGV4dC0+Y2xlYXJDb2xvcigwLCAwLCAw
LCAwKTsKLSAgICBtX2NvbnRleHQtPmNsZWFyKEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZG
RVJfQklUIHwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0JVRkZFUl9CSVQpOwotICAgIAotICAg
IGJpbmRQcm9ncmFtQW5kQnVmZmVycyhzcmNQaXhlbEFycmF5LmdldCgpKTsKLSAgICAKLSAgICBt
X2NvbnRleHQtPmRyYXdFbGVtZW50cyhHcmFwaGljc0NvbnRleHQzRDo6VFJJQU5HTEVTLCBtX21l
c2gtPmluZGljZXNDb3VudCgpLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlQsIDAp
OwotICAgIAotICAgIHVuYmluZFZlcnRleEF0dHJpYnV0ZXMoKTsKKyAgICBib29sIG5lZWRzSW5w
dXRUZXh0dXJlID0gcHJvZ3JhbU5lZWRzSW5wdXRUZXh0dXJlKCk7CisgICAgaWYgKG5lZWRzSW5w
dXRUZXh0dXJlKSB7CisgICAgICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3JjUGl4ZWxB
cnJheSA9IGluLT5hc1VubXVsdGlwbGllZEltYWdlKGVmZmVjdERyYXdpbmdSZWN0KTsKKyAgICAg
ICAgdXBsb2FkSW5wdXRUZXh0dXJlKHNyY1BpeGVsQXJyYXkuZ2V0KCkpOworICAgIH0KKyAgICBk
cmF3RmlsdGVyTWVzaChuZWVkc0lucHV0VGV4dHVyZSA/IG1faW5wdXRUZXh0dXJlIDogMCk7CiAK
ICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihuZXdDb250ZXh0U2l6ZS53aWR0aCgpICog
bmV3Q29udGV4dFNpemUuaGVpZ2h0KCkgKiA0KSA9PSBkc3RQaXhlbEFycmF5LT5sZW5ndGgoKSk7
CiAgICAgbV9jb250ZXh0LT5yZWFkUGl4ZWxzKDAsIDAsIG5ld0NvbnRleHRTaXplLndpZHRoKCks
IG5ld0NvbnRleHRTaXplLmhlaWdodCgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGRzdFBpeGVsQXJyYXktPmRhdGEoKSk7CkBAIC0y
MTAsNDEgKzIzNSw3MyBAQCBib29sIEZFQ3VzdG9tRmlsdGVyOjppbml0aWFsaXplQ29udGV4dCgp
CiAgICAgbV9tZXNoID0gQ3VzdG9tRmlsdGVyTWVzaDo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSwg
bV9tZXNoQ29sdW1ucywgbV9tZXNoUm93cywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZsb2F0UmVjdCgwLCAwLCAxLCAxKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9tZXNoVHlwZSk7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBGRUN1c3RvbUZpbHRlcjo6cmVzaXplQ29udGV4dChjb25zdCBJbnRTaXplJiBuZXdDb250ZXh0
U2l6ZSkKK2Jvb2wgRkVDdXN0b21GaWx0ZXI6OmVuc3VyZUlucHV0VGV4dHVyZSgpCit7CisgICAg
aWYgKCFtX2lucHV0VGV4dHVyZSkKKyAgICAgICAgbV9pbnB1dFRleHR1cmUgPSBtX2NvbnRleHQt
PmNyZWF0ZVRleHR1cmUoKTsKKyAgICByZXR1cm4gbV9pbnB1dFRleHR1cmU7Cit9CisKK3ZvaWQg
RkVDdXN0b21GaWx0ZXI6OnVwbG9hZElucHV0VGV4dHVyZShVaW50OENsYW1wZWRBcnJheSogc3Jj
UGl4ZWxBcnJheSkKK3sKKyAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBtX2lucHV0VGV4dHVyZSk7CisgICAgbV9jb250ZXh0LT50ZXhJbWFn
ZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBHcmFwaGljc0NvbnRleHQzRDo6
UkdCQSwgbV9jb250ZXh0U2l6ZS53aWR0aCgpLCBtX2NvbnRleHRTaXplLmhlaWdodCgpLCAwLCBH
cmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUs
IHNyY1BpeGVsQXJyYXktPmRhdGEoKSk7Cit9CisKK2Jvb2wgRkVDdXN0b21GaWx0ZXI6OmVuc3Vy
ZUZyYW1lQnVmZmVyKCkKIHsKLSNpZiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkgLy8gQmxhY2tCZXJy
eSBkZWZpbmVzIGl0cyBvd24gVGV4dHVyZSBjbGFzcwotICAgIG1faW5wdXRUZXh0dXJlID0gVGV4
dHVyZTo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSwgVGV4dHVyZTo6UkdCQTgsIG5ld0NvbnRleHRT
aXplLndpZHRoKCksIG5ld0NvbnRleHRTaXplLmhlaWdodCgpKTsKLSNlbHNlCi0gICAgbV9pbnB1
dFRleHR1cmUgPSBUZXh0dXJlOjpjcmVhdGUodHJ1ZSk7Ci0jZW5kaWYKLSAgICAKICAgICBpZiAo
IW1fZnJhbWVCdWZmZXIpCiAgICAgICAgIG1fZnJhbWVCdWZmZXIgPSBtX2NvbnRleHQtPmNyZWF0
ZUZyYW1lYnVmZmVyKCk7CiAgICAgaWYgKCFtX2RlcHRoQnVmZmVyKQogICAgICAgICBtX2RlcHRo
QnVmZmVyID0gbV9jb250ZXh0LT5jcmVhdGVSZW5kZXJidWZmZXIoKTsKLSAgICBpZiAoIW1fZGVz
dFRleHR1cmUpIHsKKyAgICBpZiAoIW1fZGVzdFRleHR1cmUpCiAgICAgICAgIG1fZGVzdFRleHR1
cmUgPSBtX2NvbnRleHQtPmNyZWF0ZVRleHR1cmUoKTsKLSAgICAgICAgbV9jb250ZXh0LT5iaW5k
VGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9kZXN0VGV4dHVyZSk7Ci0g
ICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250
ZXh0M0Q6OkxJTkVBUik7Ci0gICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJ
TFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7Ci0gICAgICAgIG1fY29udGV4dC0+dGV4
UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7Ci0g
ICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHQz
RDo6Q0xBTVBfVE9fRURHRSk7Ci0gICAgfQotICAgIAotICAgIG1fY29udGV4dC0+YmluZFRleHR1
cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fZGVzdFRleHR1cmUpOwotICAgIG1f
Y29udGV4dC0+dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIG5ld0NvbnRleHRTaXplLndpZHRoKCks
IG5ld0NvbnRleHRTaXplLmhlaWdodCgpLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUpOworICAgIHJldHVybiBtX2ZyYW1lQnVmZmVy
ICYmIG1fZGVwdGhCdWZmZXIgJiYgbV9kZXN0VGV4dHVyZTsKK30KIAorYm9vbCBGRUN1c3RvbUZp
bHRlcjo6cmVzaXplQ29udGV4dElmTmVlZGVkKGNvbnN0IEludFNpemUmIG5ld0NvbnRleHRTaXpl
KQoreworICAgIGlmIChuZXdDb250ZXh0U2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAobV9jb250ZXh0U2l6ZSA9PSBuZXdDb250ZXh0U2l6ZSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICBpbnQgbWF4VGV4dHVyZVNpemUgPSAwOworICAgIG1fY29udGV4
dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9URVhUVVJFX1NJWkUsICZtYXhU
ZXh0dXJlU2l6ZSk7CisgICAgaWYgKG5ld0NvbnRleHRTaXplLmhlaWdodCgpID4gbWF4VGV4dHVy
ZVNpemUgfHwgbmV3Q29udGV4dFNpemUud2lkdGgoKSA+IG1heFRleHR1cmVTaXplKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gcmVzaXplQ29udGV4dChuZXdDb250ZXh0U2l6
ZSk7Cit9CisKK2Jvb2wgRkVDdXN0b21GaWx0ZXI6OnJlc2l6ZUNvbnRleHQoY29uc3QgSW50U2l6
ZSYgbmV3Q29udGV4dFNpemUpCit7CiAgICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3Jh
cGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2ZyYW1lQnVmZmVyKTsKKyAgICBtX2NvbnRl
eHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX2Rlc3RUZXh0
dXJlKTsKKyAgICAvLyBXZSBhcmUgZ29pbmcgdG8gY2xlYXIgdGhlIG91dHB1dCBidWZmZXIgYW55
d2F5LCBzbyB3ZSBjYW4gc2FmZWx5IGluaXRpYWxpemUgdGhlIGRlc3RpbmF0aW9uIHRleHR1cmUg
d2l0aCBnYXJiYWdlIGRhdGEuCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgLy8gRklYTUU6
IEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJERGlyZWN0IGlzIG5vdCBpbXBsZW1lbnRlZCBv
biBDaHJvbWl1bS4KKyAgICBtX2NvbnRleHQtPnRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBuZXdDb250ZXh0U2l6ZS53
aWR0aCgpLCBuZXdDb250ZXh0U2l6ZS5oZWlnaHQoKSwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJH
QkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCAwKTsKKyNlbHNlCisgICAgbV9j
b250ZXh0LT50ZXhJbWFnZTJERGlyZWN0KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAw
LCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgbmV3Q29udGV4dFNpemUud2lkdGgoKSwgbmV3Q29u
dGV4dFNpemUuaGVpZ2h0KCksIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0Nv
bnRleHQzRDo6VU5TSUdORURfQllURSwgMCk7CisjZW5kaWYKICAgICBtX2NvbnRleHQtPmZyYW1l
YnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3ND
b250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgbV9kZXN0VGV4dHVyZSwgMCk7Ci0gICAgCisgCiAgICAgbV9jb250ZXh0LT5iaW5kUmVuZGVy
YnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwog
ICAgIG1fY29udGV4dC0+cmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVO
REVSQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTYsIG5ld0NvbnRl
eHRTaXplLndpZHRoKCksIG5ld0NvbnRleHRTaXplLmhlaWdodCgpKTsKICAgICBtX2NvbnRleHQt
PmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwg
R3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQsIEdyYXBoaWNzQ29udGV4dDNEOjpS
RU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOworCisgICAgaWYgKG1fY29udGV4dC0+Y2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIpICE9IEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgbV9jb250ZXh0LT5iaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpS
RU5ERVJCVUZGRVIsIDApOwogICAgIAogICAgIG1fY29udGV4dFNpemUgPSBuZXdDb250ZXh0U2l6
ZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBGRUN1c3RvbUZpbHRlcjo6YmluZFZlcnRl
eEF0dHJpYnV0ZShpbnQgYXR0cmlidXRlTG9jYXRpb24sIHVuc2lnbmVkIHNpemUsIHVuc2lnbmVk
IG9mZnNldCkKQEAgLTMyMiwyNCArMzc5LDI0IEBAIHZvaWQgRkVDdXN0b21GaWx0ZXI6OmJpbmRQ
cm9ncmFtUGFyYW1ldGVycygpCiAgICAgfQogfQogCi12b2lkIEZFQ3VzdG9tRmlsdGVyOjpiaW5k
UHJvZ3JhbUFuZEJ1ZmZlcnMoVWludDhDbGFtcGVkQXJyYXkqIHNyY1BpeGVsQXJyYXkpCit2b2lk
IEZFQ3VzdG9tRmlsdGVyOjpiaW5kUHJvZ3JhbUFuZEJ1ZmZlcnMoUGxhdGZvcm0zRE9iamVjdCBp
bnB1dFRleHR1cmUpCiB7CiAgICAgQVNTRVJUKG1fY29tcGlsZWRQcm9ncmFtLT5pc0luaXRpYWxp
emVkKCkpOwogCiAgICAgbV9jb250ZXh0LT51c2VQcm9ncmFtKG1fY29tcGlsZWRQcm9ncmFtLT5w
cm9ncmFtKCkpOwogICAgIAotICAgIGlmIChtX2NvbXBpbGVkUHJvZ3JhbS0+c2FtcGxlckxvY2F0
aW9uKCkgIT0gLTEpIHsKKyAgICBpZiAocHJvZ3JhbU5lZWRzSW5wdXRUZXh0dXJlKCkpIHsKICAg
ICAgICAgLy8gV2Ugc2hvdWxkIGJlIGJpbmRpbmcgdGhlIERPTSBlbGVtZW50IHRleHR1cmUgc2Ft
cGxlciBvbmx5IGlmIHRoZSBhdXRob3IgaXMgdXNpbmcgdGhlIENTUyBtaXggZnVuY3Rpb24uCiAg
ICAgICAgIEFTU0VSVChtX3ZhbGlkYXRlZFByb2dyYW0tPnByb2dyYW1JbmZvKCkucHJvZ3JhbVR5
cGUoKSA9PSBQUk9HUkFNX1RZUEVfQkxFTkRTX0VMRU1FTlRfVEVYVFVSRSk7CisgICAgICAgIEFT
U0VSVChtX2NvbXBpbGVkUHJvZ3JhbS0+c2FtcGxlckxvY2F0aW9uKCkgIT0gLTEpOwogCiAgICAg
ICAgIG1fY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTAp
OwogICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xaShtX2NvbXBpbGVkUHJvZ3JhbS0+c2FtcGxl
ckxvY2F0aW9uKCksIDApOwotI2lmICFQTEFURk9STShCTEFDS0JFUlJZKQotICAgICAgICBtX2lu
cHV0VGV4dHVyZS0+bG9hZChzcmNQaXhlbEFycmF5LT5kYXRhKCkpOwotICAgICAgICBtX2lucHV0
VGV4dHVyZS0+YmluZFRpbGUoMCk7Ci0jZWxzZQotICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwot
I2VuZGlmCisgICAgICAgIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIGlucHV0VGV4dHVyZSk7CisgICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1l
dGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7CisgICAgICAgIG1f
Y29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJ
TkVBUik7CisgICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGlj
c0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7CisgICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1l
dGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7CiAgICAgfQog
ICAgIAogICAgIGlmIChtX2NvbXBpbGVkUHJvZ3JhbS0+cHJvamVjdGlvbk1hdHJpeExvY2F0aW9u
KCkgIT0gLTEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuaAppbmRleCA5NmJiOTE4Li5lNzUzODMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9t
RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUN1c3RvbUZpbHRlci5oCkBAIC03NywyNiArNzcsNDUgQEAgcHJpdmF0ZToKICAgICBib29sIGFw
cGx5U2hhZGVyKCk7CiAgICAgdm9pZCBjbGVhclNoYWRlclJlc3VsdCgpOwogICAgIGJvb2wgaW5p
dGlhbGl6ZUNvbnRleHQoKTsKKyAgICAKKyAgICBlbnVtIEN1c3RvbUZpbHRlckRyYXdUeXBlIHsK
KyAgICAgICAgTkVFRFNfSU5QVVRfVEVYVFVSRSwKKyAgICAgICAgTk9fSU5QVVRfVEVYVFVSRQor
ICAgIH07CisgICAgYm9vbCBwcmVwYXJlRm9yRHJhd2luZyhDdXN0b21GaWx0ZXJEcmF3VHlwZSA9
IE5FRURTX0lOUFVUX1RFWFRVUkUpOworCisgICAgdm9pZCBkcmF3RmlsdGVyTWVzaChQbGF0Zm9y
bTNET2JqZWN0IGlucHV0VGV4dHVyZSk7CisgICAgYm9vbCBwcm9ncmFtTmVlZHNJbnB1dFRleHR1
cmUoKSBjb25zdDsKKyAgICBib29sIGVuc3VyZUlucHV0VGV4dHVyZSgpOworICAgIHZvaWQgdXBs
b2FkSW5wdXRUZXh0dXJlKFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmNQaXhlbEFycmF5KTsKKyAgICBi
b29sIHJlc2l6ZUNvbnRleHRJZk5lZWRlZChjb25zdCBJbnRTaXplJik7CisgICAgYm9vbCByZXNp
emVDb250ZXh0KGNvbnN0IEludFNpemUmKTsKKworICAgIGJvb2wgZW5zdXJlRnJhbWVCdWZmZXIo
KTsKICAgICB2b2lkIGRlbGV0ZVJlbmRlckJ1ZmZlcnMoKTsKLSAgICB2b2lkIHJlc2l6ZUNvbnRl
eHQoY29uc3QgSW50U2l6ZSYgbmV3Q29udGV4dFNpemUpOworCiAgICAgdm9pZCBiaW5kVmVydGV4
QXR0cmlidXRlKGludCBhdHRyaWJ1dGVMb2NhdGlvbiwgdW5zaWduZWQgc2l6ZSwgdW5zaWduZWQg
b2Zmc2V0KTsKICAgICB2b2lkIHVuYmluZFZlcnRleEF0dHJpYnV0ZShpbnQgYXR0cmlidXRlTG9j
YXRpb24pOwogICAgIHZvaWQgYmluZFByb2dyYW1OdW1iZXJQYXJhbWV0ZXJzKGludCB1bmlmb3Jt
TG9jYXRpb24sIEN1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlciopOwogICAgIHZvaWQgYmluZFBy
b2dyYW1UcmFuc2Zvcm1QYXJhbWV0ZXIoaW50IHVuaWZvcm1Mb2NhdGlvbiwgQ3VzdG9tRmlsdGVy
VHJhbnNmb3JtUGFyYW1ldGVyKik7CiAgICAgdm9pZCBiaW5kUHJvZ3JhbVBhcmFtZXRlcnMoKTsK
LSAgICB2b2lkIGJpbmRQcm9ncmFtQW5kQnVmZmVycyhVaW50OENsYW1wZWRBcnJheSogc3JjUGl4
ZWxBcnJheSk7CisgICAgdm9pZCBiaW5kUHJvZ3JhbUFuZEJ1ZmZlcnMoUGxhdGZvcm0zRE9iamVj
dCBpbnB1dFRleHR1cmUpOwogICAgIHZvaWQgdW5iaW5kVmVydGV4QXR0cmlidXRlcygpOworCisj
aWYgVVNFKFNLSUEpCisgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQXBwbHlTa2lhKCk7CisjZW5k
aWYKICAgICAKICAgICAvLyBObyBuZWVkIHRvIGtlZXAgYSByZWZlcmVuY2UgaGVyZS4gSXQgaXMg
b3duZWQgYnkgdGhlIFJlbmRlclZpZXcuCiAgICAgQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dCog
bV9nbG9iYWxDb250ZXh0OwogICAgIAogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9j
b250ZXh0OwotICAgIFJlZlB0cjxUZXh0dXJlPiBtX2lucHV0VGV4dHVyZTsKICAgICBSZWZQdHI8
Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbT4gbV92YWxpZGF0ZWRQcm9ncmFtOwogICAgIFJl
ZlB0cjxDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0+IG1fY29tcGlsZWRQcm9ncmFtOwogICAg
IFJlZlB0cjxDdXN0b21GaWx0ZXJNZXNoPiBtX21lc2g7CiAgICAgSW50U2l6ZSBtX2NvbnRleHRT
aXplOwogCisgICAgUGxhdGZvcm0zRE9iamVjdCBtX2lucHV0VGV4dHVyZTsKICAgICBQbGF0Zm9y
bTNET2JqZWN0IG1fZnJhbWVCdWZmZXI7CiAgICAgUGxhdGZvcm0zRE9iamVjdCBtX2RlcHRoQnVm
ZmVyOwogICAgIFBsYXRmb3JtM0RPYmplY3QgbV9kZXN0VGV4dHVyZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164178</attachid>
            <date>2012-09-14 10:10:47 -0700</date>
            <delta_ts>2012-09-14 10:25:52 -0700</delta_ts>
            <desc>Patch V2</desc>
            <filename>bug96801_2.patch</filename>
            <type>text/plain</type>
            <size>16508</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwMTljMjNiLi5hMjVkZjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAg
QEAKKzIwMTItMDktMTQgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgor
CisgICAgICAgIFtDU1MgU2hhZGVyc10gUmVmYWN0b3IgRkVDdXN0b21GaWx0ZXIgdG8gbWFrZSBp
dCB1c2FibGUgZnJvbSBwbGF0Zm9ybSBkZXBlbmRlbnQgaW1wbGVtZW50YXRpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjgwMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkndmUgcmVmYWN0b3JlZCB0
aGUgRkVDdXN0b21GaWx0ZXIgdG8gYWxsb3cgRkVDdXN0b21GaWx0ZXJTa2lhLmNwcCB0byB1c2Ug
dGhlIHJlbmRlcmluZyBwYXJ0CisgICAgICAgIGZyb20gb3V0c2lkZS4KKworICAgICAgICBBbHNv
IHJlbW92ZWQgdGhlIFRleHR1cmUgY2xhc3MgYXMgaXQgaXMgbm90IGF2YWlsYWJsZSBvbiBzb21l
IHBsYXRmb3Jtcy4KKworICAgICAgICBUaGUgY2hhbmdlcyBmb3IgU2tpYSB3aWxsIGxhbmQgaW4g
YSBkaWZmZXJlbnQgcGF0Y2g6CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NjU3OQorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhlIGV4aXN0aW5nIGN1
c3RvbSBmaWx0ZXJzIHRlc3RzIHNob3VsZCBhbHJlYWR5IGNvdmVyIHRoaXMuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dDo6cHJlcGFyZUNv
bnRleHRJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1
c3RvbUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUN1c3RvbUZpbHRlcjo6RkVDdXN0
b21GaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OmRlbGV0ZVJlbmRl
ckJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OmRyYXdGaWx0ZXJN
ZXNoKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0
ZXI6OnByZXBhcmVGb3JEcmF3aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9tRmlsdGVy
Ojpwcm9ncmFtTmVlZHNJbnB1dFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21G
aWx0ZXI6OmFwcGx5U2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9tRmlsdGVyOjpp
bml0aWFsaXplQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGRUN1c3RvbUZpbHRlcjo6ZW5z
dXJlSW5wdXRUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9tRmlsdGVyOjp1cGxv
YWRJbnB1dFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OmVuc3Vy
ZUZyYW1lQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9tRmlsdGVyOjpyZXNpemVD
b250ZXh0SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OnJlc2l6
ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OmJpbmRQcm9ncmFt
QW5kQnVmZmVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3Rv
bUZpbHRlci5oOgorICAgICAgICAoRkVDdXN0b21GaWx0ZXIpOgorCiAyMDEyLTA5LTE0ICBUb3Ig
QXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRd
IFJlbW92ZSBvbGQgY3J1ZnQgZnJvbSB0aGUgcW1ha2UgYnVpbGQgc3lzdGVtCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckds
b2JhbENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmNwcAppbmRleCA1ODI4NDZlLi5kYTk3ODJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlckdsb2JhbENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5jcHAKQEAgLTc4LDYgKzc4
LDggQEAgdm9pZCBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0OjpwcmVwYXJlQ29udGV4dElmTmVl
ZGVkKEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJp
YnV0ZXMgYXR0cmlidXRlczsKICAgICBhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlciA9
IHRydWU7CiAgICAgYXR0cmlidXRlcy5wcmVtdWx0aXBsaWVkQWxwaGEgPSBmYWxzZTsKKyAgICBh
dHRyaWJ1dGVzLnNoYXJlUmVzb3VyY2VzID0gdHJ1ZTsKKyAgICBhdHRyaWJ1dGVzLnByZWZlckRp
c2NyZXRlR1BVID0gdHJ1ZTsKICAgICBtX2NvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRDo6Y3Jl
YXRlKGF0dHJpYnV0ZXMsIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJPZmZz
Y3JlZW4pOwogICAgIGlmICghbV9jb250ZXh0KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21G
aWx0ZXIuY3BwCmluZGV4IGZkMTI1MDYuLjM0MmFkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3Bw
CkBAIC0xLDQgKzEsNSBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1z
IEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAx
MSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKQEAgLTgzLDYgKzg0LDcgQEAgRkVDdXN0b21GaWx0ZXI6OkZFQ3VzdG9tRmls
dGVyKEZpbHRlciogZmlsdGVyLCBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0KiBjdXN0b20KICAg
ICAsIG1fZ2xvYmFsQ29udGV4dChjdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0KQogICAgICwgbV92
YWxpZGF0ZWRQcm9ncmFtKHZhbGlkYXRlZFByb2dyYW0pCiAgICAgLCBtX2NvbXBpbGVkUHJvZ3Jh
bSgwKSAvLyBEb24ndCBjb21waWxlIHRoZSBwcm9ncmFtIHVubGVzcyB3ZSBuZWVkIHRvIHBhaW50
LgorICAgICwgbV9pbnB1dFRleHR1cmUoMCkKICAgICAsIG1fZnJhbWVCdWZmZXIoMCkKICAgICAs
IG1fZGVwdGhCdWZmZXIoMCkKICAgICAsIG1fZGVzdFRleHR1cmUoMCkKQEAgLTExMiw2ICsxMTQs
MTAgQEAgdm9pZCBGRUN1c3RvbUZpbHRlcjo6ZGVsZXRlUmVuZGVyQnVmZmVycygpCiAgICAgaWYg
KCFtX2NvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpOworICAgIGlmIChtX2lucHV0VGV4dHVyZSkgeworICAgICAgICBtX2NvbnRleHQt
PmRlbGV0ZVRleHR1cmUobV9pbnB1dFRleHR1cmUpOworICAgICAgICBtX2lucHV0VGV4dHVyZSA9
IDA7CisgICAgfQogICAgIGlmIChtX2ZyYW1lQnVmZmVyKSB7CiAgICAgICAgIC8vIE1ha2Ugc3Vy
ZSB0byB1bmJpbmQgYW55IGZyYW1lYnVmZmVyIGZyb20gdGhlIGNvbnRleHQgZmlyc3QsIG90aGVy
d2lzZQogICAgICAgICAvLyBzb21lIHBsYXRmb3JtcyBtaWdodCByZWZ1c2UgdG8gYmluZCB0aGUg
c2FtZSBidWZmZXIgaWQgYWdhaW4uCkBAIC0xNDgsNDYgKzE1NCw2NSBAQCB2b2lkIEZFQ3VzdG9t
RmlsdGVyOjpjbGVhclNoYWRlclJlc3VsdCgpCiAgICAgaW4tPmNvcHlVbm11bHRpcGxpZWRJbWFn
ZShkc3RQaXhlbEFycmF5LCBlZmZlY3REcmF3aW5nUmVjdCk7CiB9CiAKK3ZvaWQgRkVDdXN0b21G
aWx0ZXI6OmRyYXdGaWx0ZXJNZXNoKFBsYXRmb3JtM0RPYmplY3QgaW5wdXRUZXh0dXJlKQorewor
ICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJV
RkZFUiwgbV9mcmFtZUJ1ZmZlcik7CisgICAgbV9jb250ZXh0LT52aWV3cG9ydCgwLCAwLCBtX2Nv
bnRleHRTaXplLndpZHRoKCksIG1fY29udGV4dFNpemUuaGVpZ2h0KCkpOworICAgIAorICAgIG1f
Y29udGV4dC0+Y2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKKyAgICBtX2NvbnRleHQtPmNsZWFyKEdy
YXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklUIHwgR3JhcGhpY3NDb250ZXh0M0Q6OkRF
UFRIX0JVRkZFUl9CSVQpOworICAgIAorICAgIGJpbmRQcm9ncmFtQW5kQnVmZmVycyhpbnB1dFRl
eHR1cmUpOworICAgIG1fY29udGV4dC0+ZHJhd0VsZW1lbnRzKEdyYXBoaWNzQ29udGV4dDNEOjpU
UklBTkdMRVMsIG1fbWVzaC0+aW5kaWNlc0NvdW50KCksIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJ
R05FRF9TSE9SVCwgMCk7CisgICAgdW5iaW5kVmVydGV4QXR0cmlidXRlcygpOworfQorCitib29s
IEZFQ3VzdG9tRmlsdGVyOjpwcmVwYXJlRm9yRHJhd2luZyhDdXN0b21GaWx0ZXJEcmF3VHlwZSBm
aWx0ZXJEcmF3VHlwZSkKK3sKKyAgICBpZiAoIW1fY29udGV4dCAmJiAhaW5pdGlhbGl6ZUNvbnRl
eHQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCk7CisKKyAgICAvLyBJZiB0aGUgc2hhZGVyIGhhZCBjb21waWxlciBlcnJvcnMgd2Ug
Y2Fubm90IGRyYXcgYW55dGhpbmcuCisgICAgaWYgKCFtX2NvbXBpbGVkUHJvZ3JhbS0+aXNJbml0
aWFsaXplZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgLy8gT25seSBhbGxv
Y2F0ZSBhIHRleHR1cmUgaWYgdGhlIHByb2dyYW0gbmVlZHMgb25lIGFuZCB0aGUgY2FsbGVyIGRv
ZXNuJ3QgYWxsb2NhdGUgb25lIGJ5IGl0c2VsZi4KKyAgICBpZiAocHJvZ3JhbU5lZWRzSW5wdXRU
ZXh0dXJlKCkgJiYgKGZpbHRlckRyYXdUeXBlID09IE5FRURTX0lOUFVUX1RFWFRVUkUpICYmICFl
bnN1cmVJbnB1dFRleHR1cmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZW5z
dXJlRnJhbWVCdWZmZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVy
biB0cnVlOworfQorCitib29sIEZFQ3VzdG9tRmlsdGVyOjpwcm9ncmFtTmVlZHNJbnB1dFRleHR1
cmUoKSBjb25zdAoreworICAgIEFTU0VSVChtX2NvbXBpbGVkUHJvZ3JhbS5nZXQoKSk7CisgICAg
cmV0dXJuIG1fY29tcGlsZWRQcm9ncmFtLT5zYW1wbGVyTG9jYXRpb24oKSAhPSAtMTsKK30KKwog
Ym9vbCBGRUN1c3RvbUZpbHRlcjo6YXBwbHlTaGFkZXIoKQogewogICAgIFVpbnQ4Q2xhbXBlZEFy
cmF5KiBkc3RQaXhlbEFycmF5ID0gY3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKICAg
ICBpZiAoIWRzdFBpeGVsQXJyYXkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmICgh
cHJlcGFyZUZvckRyYXdpbmcoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgRmlsdGVy
RWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogICAgIEludFJlY3QgZWZmZWN0RHJhd2luZ1Jl
Y3QgPSByZXF1ZXN0ZWRSZWdpb25PZklucHV0SW1hZ2VEYXRhKGluLT5hYnNvbHV0ZVBhaW50UmVj
dCgpKTsKLSAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHNyY1BpeGVsQXJyYXkgPSBpbi0+
YXNVbm11bHRpcGxpZWRJbWFnZShlZmZlY3REcmF3aW5nUmVjdCk7Ci0gICAgCiAgICAgSW50U2l6
ZSBuZXdDb250ZXh0U2l6ZShlZmZlY3REcmF3aW5nUmVjdC5zaXplKCkpOwotICAgIGJvb2wgaGFk
Q29udGV4dCA9IG1fY29udGV4dDsKLSAgICBpZiAoIW1fY29udGV4dCAmJiAhaW5pdGlhbGl6ZUNv
bnRleHQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCk7Ci0gICAgCi0gICAgaWYgKCFoYWRDb250ZXh0IHx8IG1fY29udGV4dFNpemUg
IT0gbmV3Q29udGV4dFNpemUpCi0gICAgICAgIHJlc2l6ZUNvbnRleHQobmV3Q29udGV4dFNpemUp
OwotCi0jaWYgIVBMQVRGT1JNKEJMQUNLQkVSUlkpIC8vIEJsYWNrQmVycnkgZGVmaW5lcyBpdHMg
b3duIFRleHR1cmUgY2xhc3MuCi0gICAgLy8gRG8gbm90IGRyYXcgdGhlIGZpbHRlciBpZiB0aGUg
aW5wdXQgaW1hZ2UgY2Fubm90IGZpdCBpbnNpZGUgYSBzaW5nbGUgR1BVIHRleHR1cmUuCi0gICAg
aWYgKG1faW5wdXRUZXh0dXJlLT50aWxlcygpLm51bVRpbGVzWCgpICE9IDEgfHwgbV9pbnB1dFRl
eHR1cmUtPnRpbGVzKCkubnVtVGlsZXNZKCkgIT0gMSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
I2VuZGlmCi0gICAgCi0gICAgLy8gVGhlIHNoYWRlciBoYWQgY29tcGlsZXIgZXJyb3JzLiBXZSBj
YW5ub3QgZHJhdyBhbnl0aGluZy4KLSAgICBpZiAoIW1fY29tcGlsZWRQcm9ncmFtLT5pc0luaXRp
YWxpemVkKCkpCisgICAgaWYgKCFyZXNpemVDb250ZXh0SWZOZWVkZWQobmV3Q29udGV4dFNpemUp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZl
cihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZnJhbWVCdWZmZXIpOwotICAgIG1f
Y29udGV4dC0+dmlld3BvcnQoMCwgMCwgbmV3Q29udGV4dFNpemUud2lkdGgoKSwgbmV3Q29udGV4
dFNpemUuaGVpZ2h0KCkpOwotICAgIAotICAgIG1fY29udGV4dC0+Y2xlYXJDb2xvcigwLCAwLCAw
LCAwKTsKLSAgICBtX2NvbnRleHQtPmNsZWFyKEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZG
RVJfQklUIHwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0JVRkZFUl9CSVQpOwotICAgIAotICAg
IGJpbmRQcm9ncmFtQW5kQnVmZmVycyhzcmNQaXhlbEFycmF5LmdldCgpKTsKLSAgICAKLSAgICBt
X2NvbnRleHQtPmRyYXdFbGVtZW50cyhHcmFwaGljc0NvbnRleHQzRDo6VFJJQU5HTEVTLCBtX21l
c2gtPmluZGljZXNDb3VudCgpLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlQsIDAp
OwotICAgIAotICAgIHVuYmluZFZlcnRleEF0dHJpYnV0ZXMoKTsKKyAgICBib29sIG5lZWRzSW5w
dXRUZXh0dXJlID0gcHJvZ3JhbU5lZWRzSW5wdXRUZXh0dXJlKCk7CisgICAgaWYgKG5lZWRzSW5w
dXRUZXh0dXJlKSB7CisgICAgICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3JjUGl4ZWxB
cnJheSA9IGluLT5hc1VubXVsdGlwbGllZEltYWdlKGVmZmVjdERyYXdpbmdSZWN0KTsKKyAgICAg
ICAgdXBsb2FkSW5wdXRUZXh0dXJlKHNyY1BpeGVsQXJyYXkuZ2V0KCkpOworICAgIH0KKyAgICBk
cmF3RmlsdGVyTWVzaChuZWVkc0lucHV0VGV4dHVyZSA/IG1faW5wdXRUZXh0dXJlIDogMCk7CiAK
ICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihuZXdDb250ZXh0U2l6ZS53aWR0aCgpICog
bmV3Q29udGV4dFNpemUuaGVpZ2h0KCkgKiA0KSA9PSBkc3RQaXhlbEFycmF5LT5sZW5ndGgoKSk7
CiAgICAgbV9jb250ZXh0LT5yZWFkUGl4ZWxzKDAsIDAsIG5ld0NvbnRleHRTaXplLndpZHRoKCks
IG5ld0NvbnRleHRTaXplLmhlaWdodCgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGRzdFBpeGVsQXJyYXktPmRhdGEoKSk7CkBAIC0y
MTAsNDEgKzIzNSw3MyBAQCBib29sIEZFQ3VzdG9tRmlsdGVyOjppbml0aWFsaXplQ29udGV4dCgp
CiAgICAgbV9tZXNoID0gQ3VzdG9tRmlsdGVyTWVzaDo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSwg
bV9tZXNoQ29sdW1ucywgbV9tZXNoUm93cywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZsb2F0UmVjdCgwLCAwLCAxLCAxKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9tZXNoVHlwZSk7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBGRUN1c3RvbUZpbHRlcjo6cmVzaXplQ29udGV4dChjb25zdCBJbnRTaXplJiBuZXdDb250ZXh0
U2l6ZSkKK2Jvb2wgRkVDdXN0b21GaWx0ZXI6OmVuc3VyZUlucHV0VGV4dHVyZSgpCit7CisgICAg
aWYgKCFtX2lucHV0VGV4dHVyZSkKKyAgICAgICAgbV9pbnB1dFRleHR1cmUgPSBtX2NvbnRleHQt
PmNyZWF0ZVRleHR1cmUoKTsKKyAgICByZXR1cm4gbV9pbnB1dFRleHR1cmU7Cit9CisKK3ZvaWQg
RkVDdXN0b21GaWx0ZXI6OnVwbG9hZElucHV0VGV4dHVyZShVaW50OENsYW1wZWRBcnJheSogc3Jj
UGl4ZWxBcnJheSkKK3sKKyAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBtX2lucHV0VGV4dHVyZSk7CisgICAgbV9jb250ZXh0LT50ZXhJbWFn
ZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBHcmFwaGljc0NvbnRleHQzRDo6
UkdCQSwgbV9jb250ZXh0U2l6ZS53aWR0aCgpLCBtX2NvbnRleHRTaXplLmhlaWdodCgpLCAwLCBH
cmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUs
IHNyY1BpeGVsQXJyYXktPmRhdGEoKSk7Cit9CisKK2Jvb2wgRkVDdXN0b21GaWx0ZXI6OmVuc3Vy
ZUZyYW1lQnVmZmVyKCkKIHsKLSNpZiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkgLy8gQmxhY2tCZXJy
eSBkZWZpbmVzIGl0cyBvd24gVGV4dHVyZSBjbGFzcwotICAgIG1faW5wdXRUZXh0dXJlID0gVGV4
dHVyZTo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSwgVGV4dHVyZTo6UkdCQTgsIG5ld0NvbnRleHRT
aXplLndpZHRoKCksIG5ld0NvbnRleHRTaXplLmhlaWdodCgpKTsKLSNlbHNlCi0gICAgbV9pbnB1
dFRleHR1cmUgPSBUZXh0dXJlOjpjcmVhdGUodHJ1ZSk7Ci0jZW5kaWYKLSAgICAKICAgICBpZiAo
IW1fZnJhbWVCdWZmZXIpCiAgICAgICAgIG1fZnJhbWVCdWZmZXIgPSBtX2NvbnRleHQtPmNyZWF0
ZUZyYW1lYnVmZmVyKCk7CiAgICAgaWYgKCFtX2RlcHRoQnVmZmVyKQogICAgICAgICBtX2RlcHRo
QnVmZmVyID0gbV9jb250ZXh0LT5jcmVhdGVSZW5kZXJidWZmZXIoKTsKLSAgICBpZiAoIW1fZGVz
dFRleHR1cmUpIHsKKyAgICBpZiAoIW1fZGVzdFRleHR1cmUpCiAgICAgICAgIG1fZGVzdFRleHR1
cmUgPSBtX2NvbnRleHQtPmNyZWF0ZVRleHR1cmUoKTsKLSAgICAgICAgbV9jb250ZXh0LT5iaW5k
VGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9kZXN0VGV4dHVyZSk7Ci0g
ICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250
ZXh0M0Q6OkxJTkVBUik7Ci0gICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJ
TFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7Ci0gICAgICAgIG1fY29udGV4dC0+dGV4
UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7Ci0g
ICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHQz
RDo6Q0xBTVBfVE9fRURHRSk7Ci0gICAgfQotICAgIAotICAgIG1fY29udGV4dC0+YmluZFRleHR1
cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fZGVzdFRleHR1cmUpOwotICAgIG1f
Y29udGV4dC0+dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIG5ld0NvbnRleHRTaXplLndpZHRoKCks
IG5ld0NvbnRleHRTaXplLmhlaWdodCgpLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUpOworICAgIHJldHVybiBtX2ZyYW1lQnVmZmVy
ICYmIG1fZGVwdGhCdWZmZXIgJiYgbV9kZXN0VGV4dHVyZTsKK30KIAorYm9vbCBGRUN1c3RvbUZp
bHRlcjo6cmVzaXplQ29udGV4dElmTmVlZGVkKGNvbnN0IEludFNpemUmIG5ld0NvbnRleHRTaXpl
KQoreworICAgIGlmIChuZXdDb250ZXh0U2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAobV9jb250ZXh0U2l6ZSA9PSBuZXdDb250ZXh0U2l6ZSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICBpbnQgbWF4VGV4dHVyZVNpemUgPSAwOworICAgIG1fY29udGV4
dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9URVhUVVJFX1NJWkUsICZtYXhU
ZXh0dXJlU2l6ZSk7CisgICAgaWYgKG5ld0NvbnRleHRTaXplLmhlaWdodCgpID4gbWF4VGV4dHVy
ZVNpemUgfHwgbmV3Q29udGV4dFNpemUud2lkdGgoKSA+IG1heFRleHR1cmVTaXplKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gcmVzaXplQ29udGV4dChuZXdDb250ZXh0U2l6
ZSk7Cit9CisKK2Jvb2wgRkVDdXN0b21GaWx0ZXI6OnJlc2l6ZUNvbnRleHQoY29uc3QgSW50U2l6
ZSYgbmV3Q29udGV4dFNpemUpCit7CiAgICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3Jh
cGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2ZyYW1lQnVmZmVyKTsKKyAgICBtX2NvbnRl
eHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX2Rlc3RUZXh0
dXJlKTsKKyAgICAvLyBXZSBhcmUgZ29pbmcgdG8gY2xlYXIgdGhlIG91dHB1dCBidWZmZXIgYW55
d2F5LCBzbyB3ZSBjYW4gc2FmZWx5IGluaXRpYWxpemUgdGhlIGRlc3RpbmF0aW9uIHRleHR1cmUg
d2l0aCBnYXJiYWdlIGRhdGEuCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgLy8gRklYTUU6
IEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJERGlyZWN0IGlzIG5vdCBpbXBsZW1lbnRlZCBv
biBDaHJvbWl1bS4KKyAgICBtX2NvbnRleHQtPnRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBuZXdDb250ZXh0U2l6ZS53
aWR0aCgpLCBuZXdDb250ZXh0U2l6ZS5oZWlnaHQoKSwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJH
QkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCAwKTsKKyNlbHNlCisgICAgbV9j
b250ZXh0LT50ZXhJbWFnZTJERGlyZWN0KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAw
LCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgbmV3Q29udGV4dFNpemUud2lkdGgoKSwgbmV3Q29u
dGV4dFNpemUuaGVpZ2h0KCksIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0Nv
bnRleHQzRDo6VU5TSUdORURfQllURSwgMCk7CisjZW5kaWYKICAgICBtX2NvbnRleHQtPmZyYW1l
YnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3ND
b250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgbV9kZXN0VGV4dHVyZSwgMCk7Ci0gICAgCisgCiAgICAgbV9jb250ZXh0LT5iaW5kUmVuZGVy
YnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwog
ICAgIG1fY29udGV4dC0+cmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVO
REVSQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTYsIG5ld0NvbnRl
eHRTaXplLndpZHRoKCksIG5ld0NvbnRleHRTaXplLmhlaWdodCgpKTsKICAgICBtX2NvbnRleHQt
PmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwg
R3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQsIEdyYXBoaWNzQ29udGV4dDNEOjpS
RU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOworCisgICAgaWYgKG1fY29udGV4dC0+Y2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIpICE9IEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgbV9jb250ZXh0LT5iaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpS
RU5ERVJCVUZGRVIsIDApOwogICAgIAogICAgIG1fY29udGV4dFNpemUgPSBuZXdDb250ZXh0U2l6
ZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBGRUN1c3RvbUZpbHRlcjo6YmluZFZlcnRl
eEF0dHJpYnV0ZShpbnQgYXR0cmlidXRlTG9jYXRpb24sIHVuc2lnbmVkIHNpemUsIHVuc2lnbmVk
IG9mZnNldCkKQEAgLTMyMiwyNCArMzc5LDI0IEBAIHZvaWQgRkVDdXN0b21GaWx0ZXI6OmJpbmRQ
cm9ncmFtUGFyYW1ldGVycygpCiAgICAgfQogfQogCi12b2lkIEZFQ3VzdG9tRmlsdGVyOjpiaW5k
UHJvZ3JhbUFuZEJ1ZmZlcnMoVWludDhDbGFtcGVkQXJyYXkqIHNyY1BpeGVsQXJyYXkpCit2b2lk
IEZFQ3VzdG9tRmlsdGVyOjpiaW5kUHJvZ3JhbUFuZEJ1ZmZlcnMoUGxhdGZvcm0zRE9iamVjdCBp
bnB1dFRleHR1cmUpCiB7CiAgICAgQVNTRVJUKG1fY29tcGlsZWRQcm9ncmFtLT5pc0luaXRpYWxp
emVkKCkpOwogCiAgICAgbV9jb250ZXh0LT51c2VQcm9ncmFtKG1fY29tcGlsZWRQcm9ncmFtLT5w
cm9ncmFtKCkpOwogICAgIAotICAgIGlmIChtX2NvbXBpbGVkUHJvZ3JhbS0+c2FtcGxlckxvY2F0
aW9uKCkgIT0gLTEpIHsKKyAgICBpZiAocHJvZ3JhbU5lZWRzSW5wdXRUZXh0dXJlKCkpIHsKICAg
ICAgICAgLy8gV2Ugc2hvdWxkIGJlIGJpbmRpbmcgdGhlIERPTSBlbGVtZW50IHRleHR1cmUgc2Ft
cGxlciBvbmx5IGlmIHRoZSBhdXRob3IgaXMgdXNpbmcgdGhlIENTUyBtaXggZnVuY3Rpb24uCiAg
ICAgICAgIEFTU0VSVChtX3ZhbGlkYXRlZFByb2dyYW0tPnByb2dyYW1JbmZvKCkucHJvZ3JhbVR5
cGUoKSA9PSBQUk9HUkFNX1RZUEVfQkxFTkRTX0VMRU1FTlRfVEVYVFVSRSk7CisgICAgICAgIEFT
U0VSVChtX2NvbXBpbGVkUHJvZ3JhbS0+c2FtcGxlckxvY2F0aW9uKCkgIT0gLTEpOwogCiAgICAg
ICAgIG1fY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTAp
OwogICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xaShtX2NvbXBpbGVkUHJvZ3JhbS0+c2FtcGxl
ckxvY2F0aW9uKCksIDApOwotI2lmICFQTEFURk9STShCTEFDS0JFUlJZKQotICAgICAgICBtX2lu
cHV0VGV4dHVyZS0+bG9hZChzcmNQaXhlbEFycmF5LT5kYXRhKCkpOwotICAgICAgICBtX2lucHV0
VGV4dHVyZS0+YmluZFRpbGUoMCk7Ci0jZWxzZQotICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwot
I2VuZGlmCisgICAgICAgIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIGlucHV0VGV4dHVyZSk7CisgICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1l
dGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7CisgICAgICAgIG1f
Y29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJ
TkVBUik7CisgICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGlj
c0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7CisgICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1l
dGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7CiAgICAgfQog
ICAgIAogICAgIGlmIChtX2NvbXBpbGVkUHJvZ3JhbS0+cHJvamVjdGlvbk1hdHJpeExvY2F0aW9u
KCkgIT0gLTEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuaAppbmRleCA5NmJiOTE4Li44ODU0NmI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9t
RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUN1c3RvbUZpbHRlci5oCkBAIC03NywyNiArNzcsNDEgQEAgcHJpdmF0ZToKICAgICBib29sIGFw
cGx5U2hhZGVyKCk7CiAgICAgdm9pZCBjbGVhclNoYWRlclJlc3VsdCgpOwogICAgIGJvb2wgaW5p
dGlhbGl6ZUNvbnRleHQoKTsKKyAgICAKKyAgICBlbnVtIEN1c3RvbUZpbHRlckRyYXdUeXBlIHsK
KyAgICAgICAgTkVFRFNfSU5QVVRfVEVYVFVSRSwKKyAgICAgICAgTk9fSU5QVVRfVEVYVFVSRQor
ICAgIH07CisgICAgYm9vbCBwcmVwYXJlRm9yRHJhd2luZyhDdXN0b21GaWx0ZXJEcmF3VHlwZSA9
IE5FRURTX0lOUFVUX1RFWFRVUkUpOworCisgICAgdm9pZCBkcmF3RmlsdGVyTWVzaChQbGF0Zm9y
bTNET2JqZWN0IGlucHV0VGV4dHVyZSk7CisgICAgYm9vbCBwcm9ncmFtTmVlZHNJbnB1dFRleHR1
cmUoKSBjb25zdDsKKyAgICBib29sIGVuc3VyZUlucHV0VGV4dHVyZSgpOworICAgIHZvaWQgdXBs
b2FkSW5wdXRUZXh0dXJlKFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmNQaXhlbEFycmF5KTsKKyAgICBi
b29sIHJlc2l6ZUNvbnRleHRJZk5lZWRlZChjb25zdCBJbnRTaXplJik7CisgICAgYm9vbCByZXNp
emVDb250ZXh0KGNvbnN0IEludFNpemUmKTsKKworICAgIGJvb2wgZW5zdXJlRnJhbWVCdWZmZXIo
KTsKICAgICB2b2lkIGRlbGV0ZVJlbmRlckJ1ZmZlcnMoKTsKLSAgICB2b2lkIHJlc2l6ZUNvbnRl
eHQoY29uc3QgSW50U2l6ZSYgbmV3Q29udGV4dFNpemUpOworCiAgICAgdm9pZCBiaW5kVmVydGV4
QXR0cmlidXRlKGludCBhdHRyaWJ1dGVMb2NhdGlvbiwgdW5zaWduZWQgc2l6ZSwgdW5zaWduZWQg
b2Zmc2V0KTsKICAgICB2b2lkIHVuYmluZFZlcnRleEF0dHJpYnV0ZShpbnQgYXR0cmlidXRlTG9j
YXRpb24pOwogICAgIHZvaWQgYmluZFByb2dyYW1OdW1iZXJQYXJhbWV0ZXJzKGludCB1bmlmb3Jt
TG9jYXRpb24sIEN1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlciopOwogICAgIHZvaWQgYmluZFBy
b2dyYW1UcmFuc2Zvcm1QYXJhbWV0ZXIoaW50IHVuaWZvcm1Mb2NhdGlvbiwgQ3VzdG9tRmlsdGVy
VHJhbnNmb3JtUGFyYW1ldGVyKik7CiAgICAgdm9pZCBiaW5kUHJvZ3JhbVBhcmFtZXRlcnMoKTsK
LSAgICB2b2lkIGJpbmRQcm9ncmFtQW5kQnVmZmVycyhVaW50OENsYW1wZWRBcnJheSogc3JjUGl4
ZWxBcnJheSk7CisgICAgdm9pZCBiaW5kUHJvZ3JhbUFuZEJ1ZmZlcnMoUGxhdGZvcm0zRE9iamVj
dCBpbnB1dFRleHR1cmUpOwogICAgIHZvaWQgdW5iaW5kVmVydGV4QXR0cmlidXRlcygpOwogICAg
IAogICAgIC8vIE5vIG5lZWQgdG8ga2VlcCBhIHJlZmVyZW5jZSBoZXJlLiBJdCBpcyBvd25lZCBi
eSB0aGUgUmVuZGVyVmlldy4KICAgICBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0KiBtX2dsb2Jh
bENvbnRleHQ7CiAgICAgCiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7
Ci0gICAgUmVmUHRyPFRleHR1cmU+IG1faW5wdXRUZXh0dXJlOwogICAgIFJlZlB0cjxDdXN0b21G
aWx0ZXJWYWxpZGF0ZWRQcm9ncmFtPiBtX3ZhbGlkYXRlZFByb2dyYW07CiAgICAgUmVmUHRyPEN1
c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbT4gbV9jb21waWxlZFByb2dyYW07CiAgICAgUmVmUHRy
PEN1c3RvbUZpbHRlck1lc2g+IG1fbWVzaDsKICAgICBJbnRTaXplIG1fY29udGV4dFNpemU7CiAK
KyAgICBQbGF0Zm9ybTNET2JqZWN0IG1faW5wdXRUZXh0dXJlOwogICAgIFBsYXRmb3JtM0RPYmpl
Y3QgbV9mcmFtZUJ1ZmZlcjsKICAgICBQbGF0Zm9ybTNET2JqZWN0IG1fZGVwdGhCdWZmZXI7CiAg
ICAgUGxhdGZvcm0zRE9iamVjdCBtX2Rlc3RUZXh0dXJlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164184</attachid>
            <date>2012-09-14 10:25:52 -0700</date>
            <delta_ts>2012-09-14 11:54:33 -0700</delta_ts>
            <desc>Patch V3</desc>
            <filename>bug96801_3.patch</filename>
            <type>text/plain</type>
            <size>16572</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMTliYTY0Li4zODBkNzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAg
QEAKKzIwMTItMDktMTQgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgor
CisgICAgICAgIFtDU1MgU2hhZGVyc10gUmVmYWN0b3IgRkVDdXN0b21GaWx0ZXIgdG8gbWFrZSBp
dCB1c2FibGUgZnJvbSBwbGF0Zm9ybSBkZXBlbmRlbnQgaW1wbGVtZW50YXRpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjgwMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkndmUgcmVmYWN0b3JlZCB0
aGUgRkVDdXN0b21GaWx0ZXIgdG8gYWxsb3cgRkVDdXN0b21GaWx0ZXJTa2lhLmNwcCB0byB1c2Ug
dGhlIHJlbmRlcmluZyBwYXJ0CisgICAgICAgIGZyb20gb3V0c2lkZS4KKworICAgICAgICBBbHNv
IHJlbW92ZWQgdGhlIFRleHR1cmUgY2xhc3MgYXMgaXQgaXMgbm90IGF2YWlsYWJsZSBvbiBzb21l
IHBsYXRmb3Jtcy4KKworICAgICAgICBUaGUgY2hhbmdlcyBmb3IgU2tpYSB3aWxsIGxhbmQgaW4g
YSBkaWZmZXJlbnQgcGF0Y2g6CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NjU3OQorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhlIGV4aXN0aW5nIGN1
c3RvbSBmaWx0ZXJzIHRlc3RzIHNob3VsZCBhbHJlYWR5IGNvdmVyIHRoaXMuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dDo6cHJlcGFyZUNv
bnRleHRJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1
c3RvbUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUN1c3RvbUZpbHRlcjo6RkVDdXN0
b21GaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OmRlbGV0ZVJlbmRl
ckJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OmRyYXdGaWx0ZXJN
ZXNoKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0
ZXI6OnByZXBhcmVGb3JEcmF3aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9tRmlsdGVy
Ojpwcm9ncmFtTmVlZHNJbnB1dFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21G
aWx0ZXI6OmFwcGx5U2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9tRmlsdGVyOjpp
bml0aWFsaXplQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGRUN1c3RvbUZpbHRlcjo6ZW5z
dXJlSW5wdXRUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9tRmlsdGVyOjp1cGxv
YWRJbnB1dFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OmVuc3Vy
ZUZyYW1lQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9tRmlsdGVyOjpyZXNpemVD
b250ZXh0SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OnJlc2l6
ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OmJpbmRQcm9ncmFt
QW5kQnVmZmVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3Rv
bUZpbHRlci5oOgorICAgICAgICAoRkVDdXN0b21GaWx0ZXIpOgorCiAyMDEyLTA5LTE0ICBNaWNo
ZWxhbmdlbG8gRGUgU2ltb25lICA8bWljaGVsYW5nZWxvQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VXNlIGFycmF5cyBpbiBzaGFkZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250
ZXh0LmNwcAppbmRleCA1ODI4NDZlLi5kYTk3ODJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmls
dGVyR2xvYmFsQ29udGV4dC5jcHAKQEAgLTc4LDYgKzc4LDggQEAgdm9pZCBDdXN0b21GaWx0ZXJH
bG9iYWxDb250ZXh0OjpwcmVwYXJlQ29udGV4dElmTmVlZGVkKEhvc3RXaW5kb3cqIGhvc3RXaW5k
b3cpCiAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmlidXRlczsKICAgICBh
dHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlciA9IHRydWU7CiAgICAgYXR0cmlidXRlcy5w
cmVtdWx0aXBsaWVkQWxwaGEgPSBmYWxzZTsKKyAgICBhdHRyaWJ1dGVzLnNoYXJlUmVzb3VyY2Vz
ID0gdHJ1ZTsKKyAgICBhdHRyaWJ1dGVzLnByZWZlckRpc2NyZXRlR1BVID0gdHJ1ZTsKICAgICBt
X2NvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKGF0dHJpYnV0ZXMsIGhvc3RXaW5k
b3csIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJPZmZzY3JlZW4pOwogICAgIGlmICghbV9jb250
ZXh0KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCmluZGV4IDA1MjdhMWMu
LjU5ZThjY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCkBAIC0xLDQgKzEsNSBAQAogLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9y
YXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTg0LDYgKzg1
LDcgQEAgRkVDdXN0b21GaWx0ZXI6OkZFQ3VzdG9tRmlsdGVyKEZpbHRlciogZmlsdGVyLCBDdXN0
b21GaWx0ZXJHbG9iYWxDb250ZXh0KiBjdXN0b20KICAgICAsIG1fZ2xvYmFsQ29udGV4dChjdXN0
b21GaWx0ZXJHbG9iYWxDb250ZXh0KQogICAgICwgbV92YWxpZGF0ZWRQcm9ncmFtKHZhbGlkYXRl
ZFByb2dyYW0pCiAgICAgLCBtX2NvbXBpbGVkUHJvZ3JhbSgwKSAvLyBEb24ndCBjb21waWxlIHRo
ZSBwcm9ncmFtIHVubGVzcyB3ZSBuZWVkIHRvIHBhaW50LgorICAgICwgbV9pbnB1dFRleHR1cmUo
MCkKICAgICAsIG1fZnJhbWVCdWZmZXIoMCkKICAgICAsIG1fZGVwdGhCdWZmZXIoMCkKICAgICAs
IG1fZGVzdFRleHR1cmUoMCkKQEAgLTExMyw2ICsxMTUsMTAgQEAgdm9pZCBGRUN1c3RvbUZpbHRl
cjo6ZGVsZXRlUmVuZGVyQnVmZmVycygpCiAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgIHJl
dHVybjsKICAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGlmIChtX2lu
cHV0VGV4dHVyZSkgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVRleHR1cmUobV9pbnB1dFRl
eHR1cmUpOworICAgICAgICBtX2lucHV0VGV4dHVyZSA9IDA7CisgICAgfQogICAgIGlmIChtX2Zy
YW1lQnVmZmVyKSB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0byB1bmJpbmQgYW55IGZyYW1lYnVm
ZmVyIGZyb20gdGhlIGNvbnRleHQgZmlyc3QsIG90aGVyd2lzZQogICAgICAgICAvLyBzb21lIHBs
YXRmb3JtcyBtaWdodCByZWZ1c2UgdG8gYmluZCB0aGUgc2FtZSBidWZmZXIgaWQgYWdhaW4uCkBA
IC0xNDksNDYgKzE1NSw2NSBAQCB2b2lkIEZFQ3VzdG9tRmlsdGVyOjpjbGVhclNoYWRlclJlc3Vs
dCgpCiAgICAgaW4tPmNvcHlVbm11bHRpcGxpZWRJbWFnZShkc3RQaXhlbEFycmF5LCBlZmZlY3RE
cmF3aW5nUmVjdCk7CiB9CiAKK3ZvaWQgRkVDdXN0b21GaWx0ZXI6OmRyYXdGaWx0ZXJNZXNoKFBs
YXRmb3JtM0RPYmplY3QgaW5wdXRUZXh0dXJlKQoreworICAgIG1fY29udGV4dC0+YmluZEZyYW1l
YnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mcmFtZUJ1ZmZlcik7Cisg
ICAgbV9jb250ZXh0LT52aWV3cG9ydCgwLCAwLCBtX2NvbnRleHRTaXplLndpZHRoKCksIG1fY29u
dGV4dFNpemUuaGVpZ2h0KCkpOworICAgIAorICAgIG1fY29udGV4dC0+Y2xlYXJDb2xvcigwLCAw
LCAwLCAwKTsKKyAgICBtX2NvbnRleHQtPmNsZWFyKEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9C
VUZGRVJfQklUIHwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0JVRkZFUl9CSVQpOworICAgIAor
ICAgIGJpbmRQcm9ncmFtQW5kQnVmZmVycyhpbnB1dFRleHR1cmUpOworICAgIG1fY29udGV4dC0+
ZHJhd0VsZW1lbnRzKEdyYXBoaWNzQ29udGV4dDNEOjpUUklBTkdMRVMsIG1fbWVzaC0+aW5kaWNl
c0NvdW50KCksIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9TSE9SVCwgMCk7CisgICAgdW5i
aW5kVmVydGV4QXR0cmlidXRlcygpOworfQorCitib29sIEZFQ3VzdG9tRmlsdGVyOjpwcmVwYXJl
Rm9yRHJhd2luZyhDdXN0b21GaWx0ZXJEcmF3VHlwZSBmaWx0ZXJEcmF3VHlwZSkKK3sKKyAgICBp
ZiAoIW1fY29udGV4dCAmJiAhaW5pdGlhbGl6ZUNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICAvLyBJZiB0
aGUgc2hhZGVyIGhhZCBjb21waWxlciBlcnJvcnMgd2UgY2Fubm90IGRyYXcgYW55dGhpbmcuCisg
ICAgaWYgKCFtX2NvbXBpbGVkUHJvZ3JhbS0+aXNJbml0aWFsaXplZCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgCisgICAgLy8gT25seSBhbGxvY2F0ZSBhIHRleHR1cmUgaWYgdGhlIHBy
b2dyYW0gbmVlZHMgb25lIGFuZCB0aGUgY2FsbGVyIGRvZXNuJ3QgYWxsb2NhdGUgb25lIGJ5IGl0
c2VsZi4KKyAgICBpZiAocHJvZ3JhbU5lZWRzSW5wdXRUZXh0dXJlKCkgJiYgKGZpbHRlckRyYXdU
eXBlID09IE5FRURTX0lOUFVUX1RFWFRVUkUpICYmICFlbnN1cmVJbnB1dFRleHR1cmUoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZW5zdXJlRnJhbWVCdWZmZXIoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiB0cnVlOworfQorCitib29sIEZFQ3Vz
dG9tRmlsdGVyOjpwcm9ncmFtTmVlZHNJbnB1dFRleHR1cmUoKSBjb25zdAoreworICAgIEFTU0VS
VChtX2NvbXBpbGVkUHJvZ3JhbS5nZXQoKSk7CisgICAgcmV0dXJuIG1fY29tcGlsZWRQcm9ncmFt
LT5zYW1wbGVyTG9jYXRpb24oKSAhPSAtMTsKK30KKwogYm9vbCBGRUN1c3RvbUZpbHRlcjo6YXBw
bHlTaGFkZXIoKQogewogICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBkc3RQaXhlbEFycmF5ID0gY3Jl
YXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKICAgICBpZiAoIWRzdFBpeGVsQXJyYXkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmICghcHJlcGFyZUZvckRyYXdpbmcoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0
KDApOwogICAgIEludFJlY3QgZWZmZWN0RHJhd2luZ1JlY3QgPSByZXF1ZXN0ZWRSZWdpb25PZklu
cHV0SW1hZ2VEYXRhKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKLSAgICBSZWZQdHI8VWludDhD
bGFtcGVkQXJyYXk+IHNyY1BpeGVsQXJyYXkgPSBpbi0+YXNVbm11bHRpcGxpZWRJbWFnZShlZmZl
Y3REcmF3aW5nUmVjdCk7Ci0gICAgCiAgICAgSW50U2l6ZSBuZXdDb250ZXh0U2l6ZShlZmZlY3RE
cmF3aW5nUmVjdC5zaXplKCkpOwotICAgIGJvb2wgaGFkQ29udGV4dCA9IG1fY29udGV4dDsKLSAg
ICBpZiAoIW1fY29udGV4dCAmJiAhaW5pdGlhbGl6ZUNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgCi0gICAg
aWYgKCFoYWRDb250ZXh0IHx8IG1fY29udGV4dFNpemUgIT0gbmV3Q29udGV4dFNpemUpCi0gICAg
ICAgIHJlc2l6ZUNvbnRleHQobmV3Q29udGV4dFNpemUpOwotCi0jaWYgIVBMQVRGT1JNKEJMQUNL
QkVSUlkpIC8vIEJsYWNrQmVycnkgZGVmaW5lcyBpdHMgb3duIFRleHR1cmUgY2xhc3MuCi0gICAg
Ly8gRG8gbm90IGRyYXcgdGhlIGZpbHRlciBpZiB0aGUgaW5wdXQgaW1hZ2UgY2Fubm90IGZpdCBp
bnNpZGUgYSBzaW5nbGUgR1BVIHRleHR1cmUuCi0gICAgaWYgKG1faW5wdXRUZXh0dXJlLT50aWxl
cygpLm51bVRpbGVzWCgpICE9IDEgfHwgbV9pbnB1dFRleHR1cmUtPnRpbGVzKCkubnVtVGlsZXNZ
KCkgIT0gMSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0gICAgCi0gICAgLy8gVGhl
IHNoYWRlciBoYWQgY29tcGlsZXIgZXJyb3JzLiBXZSBjYW5ub3QgZHJhdyBhbnl0aGluZy4KLSAg
ICBpZiAoIW1fY29tcGlsZWRQcm9ncmFtLT5pc0luaXRpYWxpemVkKCkpCisgICAgaWYgKCFyZXNp
emVDb250ZXh0SWZOZWVkZWQobmV3Q29udGV4dFNpemUpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJB
TUVCVUZGRVIsIG1fZnJhbWVCdWZmZXIpOwotICAgIG1fY29udGV4dC0+dmlld3BvcnQoMCwgMCwg
bmV3Q29udGV4dFNpemUud2lkdGgoKSwgbmV3Q29udGV4dFNpemUuaGVpZ2h0KCkpOwotICAgIAot
ICAgIG1fY29udGV4dC0+Y2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKLSAgICBtX2NvbnRleHQtPmNs
ZWFyKEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklUIHwgR3JhcGhpY3NDb250ZXh0
M0Q6OkRFUFRIX0JVRkZFUl9CSVQpOwotICAgIAotICAgIGJpbmRQcm9ncmFtQW5kQnVmZmVycyhz
cmNQaXhlbEFycmF5LmdldCgpKTsKLSAgICAKLSAgICBtX2NvbnRleHQtPmRyYXdFbGVtZW50cyhH
cmFwaGljc0NvbnRleHQzRDo6VFJJQU5HTEVTLCBtX21lc2gtPmluZGljZXNDb3VudCgpLCBHcmFw
aGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlQsIDApOwotICAgIAotICAgIHVuYmluZFZlcnRl
eEF0dHJpYnV0ZXMoKTsKKyAgICBib29sIG5lZWRzSW5wdXRUZXh0dXJlID0gcHJvZ3JhbU5lZWRz
SW5wdXRUZXh0dXJlKCk7CisgICAgaWYgKG5lZWRzSW5wdXRUZXh0dXJlKSB7CisgICAgICAgIFJl
ZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3JjUGl4ZWxBcnJheSA9IGluLT5hc1VubXVsdGlwbGll
ZEltYWdlKGVmZmVjdERyYXdpbmdSZWN0KTsKKyAgICAgICAgdXBsb2FkSW5wdXRUZXh0dXJlKHNy
Y1BpeGVsQXJyYXkuZ2V0KCkpOworICAgIH0KKyAgICBkcmF3RmlsdGVyTWVzaChuZWVkc0lucHV0
VGV4dHVyZSA/IG1faW5wdXRUZXh0dXJlIDogMCk7CiAKICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8
c2l6ZV90PihuZXdDb250ZXh0U2l6ZS53aWR0aCgpICogbmV3Q29udGV4dFNpemUuaGVpZ2h0KCkg
KiA0KSA9PSBkc3RQaXhlbEFycmF5LT5sZW5ndGgoKSk7CiAgICAgbV9jb250ZXh0LT5yZWFkUGl4
ZWxzKDAsIDAsIG5ld0NvbnRleHRTaXplLndpZHRoKCksIG5ld0NvbnRleHRTaXplLmhlaWdodCgp
LCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZ
VEUsIGRzdFBpeGVsQXJyYXktPmRhdGEoKSk7CkBAIC0yMTEsNDEgKzIzNiw3MyBAQCBib29sIEZF
Q3VzdG9tRmlsdGVyOjppbml0aWFsaXplQ29udGV4dCgpCiAgICAgbV9tZXNoID0gQ3VzdG9tRmls
dGVyTWVzaDo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSwgbV9tZXNoQ29sdW1ucywgbV9tZXNoUm93
cywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0UmVjdCgwLCAw
LCAxLCAxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9tZXNoVHlw
ZSk7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBGRUN1c3RvbUZpbHRlcjo6cmVzaXpl
Q29udGV4dChjb25zdCBJbnRTaXplJiBuZXdDb250ZXh0U2l6ZSkKK2Jvb2wgRkVDdXN0b21GaWx0
ZXI6OmVuc3VyZUlucHV0VGV4dHVyZSgpCit7CisgICAgaWYgKCFtX2lucHV0VGV4dHVyZSkKKyAg
ICAgICAgbV9pbnB1dFRleHR1cmUgPSBtX2NvbnRleHQtPmNyZWF0ZVRleHR1cmUoKTsKKyAgICBy
ZXR1cm4gbV9pbnB1dFRleHR1cmU7Cit9CisKK3ZvaWQgRkVDdXN0b21GaWx0ZXI6OnVwbG9hZElu
cHV0VGV4dHVyZShVaW50OENsYW1wZWRBcnJheSogc3JjUGl4ZWxBcnJheSkKK3sKKyAgICBtX2Nv
bnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX2lucHV0
VGV4dHVyZSk7CisgICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgbV9jb250ZXh0U2l6ZS53aWR0
aCgpLCBtX2NvbnRleHRTaXplLmhlaWdodCgpLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwg
R3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIHNyY1BpeGVsQXJyYXktPmRhdGEoKSk7
Cit9CisKK2Jvb2wgRkVDdXN0b21GaWx0ZXI6OmVuc3VyZUZyYW1lQnVmZmVyKCkKIHsKLSNpZiAh
UExBVEZPUk0oQkxBQ0tCRVJSWSkgLy8gQmxhY2tCZXJyeSBkZWZpbmVzIGl0cyBvd24gVGV4dHVy
ZSBjbGFzcwotICAgIG1faW5wdXRUZXh0dXJlID0gVGV4dHVyZTo6Y3JlYXRlKG1fY29udGV4dC5n
ZXQoKSwgVGV4dHVyZTo6UkdCQTgsIG5ld0NvbnRleHRTaXplLndpZHRoKCksIG5ld0NvbnRleHRT
aXplLmhlaWdodCgpKTsKLSNlbHNlCi0gICAgbV9pbnB1dFRleHR1cmUgPSBUZXh0dXJlOjpjcmVh
dGUodHJ1ZSk7Ci0jZW5kaWYKLSAgICAKICAgICBpZiAoIW1fZnJhbWVCdWZmZXIpCiAgICAgICAg
IG1fZnJhbWVCdWZmZXIgPSBtX2NvbnRleHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCk7CiAgICAgaWYg
KCFtX2RlcHRoQnVmZmVyKQogICAgICAgICBtX2RlcHRoQnVmZmVyID0gbV9jb250ZXh0LT5jcmVh
dGVSZW5kZXJidWZmZXIoKTsKLSAgICBpZiAoIW1fZGVzdFRleHR1cmUpIHsKKyAgICBpZiAoIW1f
ZGVzdFRleHR1cmUpCiAgICAgICAgIG1fZGVzdFRleHR1cmUgPSBtX2NvbnRleHQtPmNyZWF0ZVRl
eHR1cmUoKTsKLSAgICAgICAgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgbV9kZXN0VGV4dHVyZSk7Ci0gICAgICAgIG1fY29udGV4dC0+dGV4UGFy
YW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7Ci0gICAgICAg
IG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6
OkxJTkVBUik7Ci0gICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFw
aGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7Ci0gICAgICAgIG1fY29udGV4dC0+dGV4UGFy
YW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7Ci0gICAg
fQotICAgIAotICAgIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIG1fZGVzdFRleHR1cmUpOwotICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRFJlc291
cmNlU2FmZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgR3JhcGhpY3NDb250ZXh0
M0Q6OlJHQkEsIG5ld0NvbnRleHRTaXplLndpZHRoKCksIG5ld0NvbnRleHRTaXplLmhlaWdodCgp
LCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVE
X0JZVEUpOworICAgIHJldHVybiBtX2ZyYW1lQnVmZmVyICYmIG1fZGVwdGhCdWZmZXIgJiYgbV9k
ZXN0VGV4dHVyZTsKK30KIAorYm9vbCBGRUN1c3RvbUZpbHRlcjo6cmVzaXplQ29udGV4dElmTmVl
ZGVkKGNvbnN0IEludFNpemUmIG5ld0NvbnRleHRTaXplKQoreworICAgIGlmIChuZXdDb250ZXh0
U2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9jb250ZXh0
U2l6ZSA9PSBuZXdDb250ZXh0U2l6ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpbnQg
bWF4VGV4dHVyZVNpemUgPSAwOworICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3ND
b250ZXh0M0Q6Ok1BWF9URVhUVVJFX1NJWkUsICZtYXhUZXh0dXJlU2l6ZSk7CisgICAgaWYgKG5l
d0NvbnRleHRTaXplLmhlaWdodCgpID4gbWF4VGV4dHVyZVNpemUgfHwgbmV3Q29udGV4dFNpemUu
d2lkdGgoKSA+IG1heFRleHR1cmVTaXplKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gcmVzaXplQ29udGV4dChuZXdDb250ZXh0U2l6ZSk7Cit9CisKK2Jvb2wgRkVDdXN0b21G
aWx0ZXI6OnJlc2l6ZUNvbnRleHQoY29uc3QgSW50U2l6ZSYgbmV3Q29udGV4dFNpemUpCit7CiAg
ICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSLCBtX2ZyYW1lQnVmZmVyKTsKKyAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCBtX2Rlc3RUZXh0dXJlKTsKKyAgICAvLyBXZSBhcmUgZ29p
bmcgdG8gY2xlYXIgdGhlIG91dHB1dCBidWZmZXIgYW55d2F5LCBzbyB3ZSBjYW4gc2FmZWx5IGlu
aXRpYWxpemUgdGhlIGRlc3RpbmF0aW9uIHRleHR1cmUgd2l0aCBnYXJiYWdlIGRhdGEuCisjaWYg
UExBVEZPUk0oQ0hST01JVU0pCisgICAgLy8gRklYTUU6IEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJ
bWFnZTJERGlyZWN0IGlzIG5vdCBpbXBsZW1lbnRlZCBvbiBDaHJvbWl1bS4KKyAgICBtX2NvbnRl
eHQtPnRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIEdyYXBoaWNz
Q29udGV4dDNEOjpSR0JBLCBuZXdDb250ZXh0U2l6ZS53aWR0aCgpLCBuZXdDb250ZXh0U2l6ZS5o
ZWlnaHQoKSwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpV
TlNJR05FRF9CWVRFLCAwKTsKKyNlbHNlCisgICAgbV9jb250ZXh0LT50ZXhJbWFnZTJERGlyZWN0
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdC
QSwgbmV3Q29udGV4dFNpemUud2lkdGgoKSwgbmV3Q29udGV4dFNpemUuaGVpZ2h0KCksIDAsIEdy
YXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwg
MCk7CisjZW5kaWYKICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNz
Q29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1F
TlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9kZXN0VGV4dHVyZSwgMCk7Ci0g
ICAgCisgCiAgICAgbV9jb250ZXh0LT5iaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNE
OjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwogICAgIG1fY29udGV4dC0+cmVuZGVyYnVm
ZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBHcmFwaGljc0NvbnRl
eHQzRDo6REVQVEhfQ09NUE9ORU5UMTYsIG5ld0NvbnRleHRTaXplLndpZHRoKCksIG5ld0NvbnRl
eHRTaXplLmhlaWdodCgpKTsKICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRI
X0FUVEFDSE1FTlQsIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZm
ZXIpOworCisgICAgaWYgKG1fY29udGV4dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGlj
c0NvbnRleHQzRDo6RlJBTUVCVUZGRVIpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZF
Ul9DT01QTEVURSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9jb250ZXh0LT5iaW5k
UmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIDApOwogICAgIAog
ICAgIG1fY29udGV4dFNpemUgPSBuZXdDb250ZXh0U2l6ZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogdm9pZCBGRUN1c3RvbUZpbHRlcjo6YmluZFZlcnRleEF0dHJpYnV0ZShpbnQgYXR0cmlidXRl
TG9jYXRpb24sIHVuc2lnbmVkIHNpemUsIHVuc2lnbmVkIG9mZnNldCkKQEAgLTMzNywyNCArMzk0
LDI0IEBAIHZvaWQgRkVDdXN0b21GaWx0ZXI6OmJpbmRQcm9ncmFtUGFyYW1ldGVycygpCiAgICAg
fQogfQogCi12b2lkIEZFQ3VzdG9tRmlsdGVyOjpiaW5kUHJvZ3JhbUFuZEJ1ZmZlcnMoVWludDhD
bGFtcGVkQXJyYXkqIHNyY1BpeGVsQXJyYXkpCit2b2lkIEZFQ3VzdG9tRmlsdGVyOjpiaW5kUHJv
Z3JhbUFuZEJ1ZmZlcnMoUGxhdGZvcm0zRE9iamVjdCBpbnB1dFRleHR1cmUpCiB7CiAgICAgQVNT
RVJUKG1fY29tcGlsZWRQcm9ncmFtLT5pc0luaXRpYWxpemVkKCkpOwogCiAgICAgbV9jb250ZXh0
LT51c2VQcm9ncmFtKG1fY29tcGlsZWRQcm9ncmFtLT5wcm9ncmFtKCkpOwogICAgIAotICAgIGlm
IChtX2NvbXBpbGVkUHJvZ3JhbS0+c2FtcGxlckxvY2F0aW9uKCkgIT0gLTEpIHsKKyAgICBpZiAo
cHJvZ3JhbU5lZWRzSW5wdXRUZXh0dXJlKCkpIHsKICAgICAgICAgLy8gV2Ugc2hvdWxkIGJlIGJp
bmRpbmcgdGhlIERPTSBlbGVtZW50IHRleHR1cmUgc2FtcGxlciBvbmx5IGlmIHRoZSBhdXRob3Ig
aXMgdXNpbmcgdGhlIENTUyBtaXggZnVuY3Rpb24uCiAgICAgICAgIEFTU0VSVChtX3ZhbGlkYXRl
ZFByb2dyYW0tPnByb2dyYW1JbmZvKCkucHJvZ3JhbVR5cGUoKSA9PSBQUk9HUkFNX1RZUEVfQkxF
TkRTX0VMRU1FTlRfVEVYVFVSRSk7CisgICAgICAgIEFTU0VSVChtX2NvbXBpbGVkUHJvZ3JhbS0+
c2FtcGxlckxvY2F0aW9uKCkgIT0gLTEpOwogCiAgICAgICAgIG1fY29udGV4dC0+YWN0aXZlVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApOwogICAgICAgICBtX2NvbnRleHQtPnVu
aWZvcm0xaShtX2NvbXBpbGVkUHJvZ3JhbS0+c2FtcGxlckxvY2F0aW9uKCksIDApOwotI2lmICFQ
TEFURk9STShCTEFDS0JFUlJZKQotICAgICAgICBtX2lucHV0VGV4dHVyZS0+bG9hZChzcmNQaXhl
bEFycmF5LT5kYXRhKCkpOwotICAgICAgICBtX2lucHV0VGV4dHVyZS0+YmluZFRpbGUoMCk7Ci0j
ZWxzZQotICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlmCisgICAgICAgIG1fY29udGV4
dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGlucHV0VGV4dHVy
ZSk7CisgICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkxJTkVBUik7CisgICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
TUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7CisgICAgICAgIG1fY29udGV4
dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURH
RSk7CisgICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGljc0Nv
bnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7CiAgICAgfQogICAgIAogICAgIGlmIChtX2NvbXBpbGVk
UHJvZ3JhbS0+cHJvamVjdGlvbk1hdHJpeExvY2F0aW9uKCkgIT0gLTEpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0
ZXIuaAppbmRleCBhMzkwZmEyLi4wNDE4MDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oCkBAIC03OCwy
NyArNzgsNDIgQEAgcHJpdmF0ZToKICAgICBib29sIGFwcGx5U2hhZGVyKCk7CiAgICAgdm9pZCBj
bGVhclNoYWRlclJlc3VsdCgpOwogICAgIGJvb2wgaW5pdGlhbGl6ZUNvbnRleHQoKTsKKyAgICAK
KyAgICBlbnVtIEN1c3RvbUZpbHRlckRyYXdUeXBlIHsKKyAgICAgICAgTkVFRFNfSU5QVVRfVEVY
VFVSRSwKKyAgICAgICAgTk9fSU5QVVRfVEVYVFVSRQorICAgIH07CisgICAgYm9vbCBwcmVwYXJl
Rm9yRHJhd2luZyhDdXN0b21GaWx0ZXJEcmF3VHlwZSA9IE5FRURTX0lOUFVUX1RFWFRVUkUpOwor
CisgICAgdm9pZCBkcmF3RmlsdGVyTWVzaChQbGF0Zm9ybTNET2JqZWN0IGlucHV0VGV4dHVyZSk7
CisgICAgYm9vbCBwcm9ncmFtTmVlZHNJbnB1dFRleHR1cmUoKSBjb25zdDsKKyAgICBib29sIGVu
c3VyZUlucHV0VGV4dHVyZSgpOworICAgIHZvaWQgdXBsb2FkSW5wdXRUZXh0dXJlKFVpbnQ4Q2xh
bXBlZEFycmF5KiBzcmNQaXhlbEFycmF5KTsKKyAgICBib29sIHJlc2l6ZUNvbnRleHRJZk5lZWRl
ZChjb25zdCBJbnRTaXplJik7CisgICAgYm9vbCByZXNpemVDb250ZXh0KGNvbnN0IEludFNpemUm
KTsKKworICAgIGJvb2wgZW5zdXJlRnJhbWVCdWZmZXIoKTsKICAgICB2b2lkIGRlbGV0ZVJlbmRl
ckJ1ZmZlcnMoKTsKLSAgICB2b2lkIHJlc2l6ZUNvbnRleHQoY29uc3QgSW50U2l6ZSYgbmV3Q29u
dGV4dFNpemUpOworCiAgICAgdm9pZCBiaW5kVmVydGV4QXR0cmlidXRlKGludCBhdHRyaWJ1dGVM
b2NhdGlvbiwgdW5zaWduZWQgc2l6ZSwgdW5zaWduZWQgb2Zmc2V0KTsKICAgICB2b2lkIHVuYmlu
ZFZlcnRleEF0dHJpYnV0ZShpbnQgYXR0cmlidXRlTG9jYXRpb24pOwogICAgIHZvaWQgYmluZFBy
b2dyYW1BcnJheVBhcmFtZXRlcnMoaW50IHVuaWZvcm1Mb2NhdGlvbiwgQ3VzdG9tRmlsdGVyQXJy
YXlQYXJhbWV0ZXIqKTsKICAgICB2b2lkIGJpbmRQcm9ncmFtTnVtYmVyUGFyYW1ldGVycyhpbnQg
dW5pZm9ybUxvY2F0aW9uLCBDdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXIqKTsKICAgICB2b2lk
IGJpbmRQcm9ncmFtVHJhbnNmb3JtUGFyYW1ldGVyKGludCB1bmlmb3JtTG9jYXRpb24sIEN1c3Rv
bUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlciopOwogICAgIHZvaWQgYmluZFByb2dyYW1QYXJhbWV0
ZXJzKCk7Ci0gICAgdm9pZCBiaW5kUHJvZ3JhbUFuZEJ1ZmZlcnMoVWludDhDbGFtcGVkQXJyYXkq
IHNyY1BpeGVsQXJyYXkpOworICAgIHZvaWQgYmluZFByb2dyYW1BbmRCdWZmZXJzKFBsYXRmb3Jt
M0RPYmplY3QgaW5wdXRUZXh0dXJlKTsKICAgICB2b2lkIHVuYmluZFZlcnRleEF0dHJpYnV0ZXMo
KTsKICAgICAKICAgICAvLyBObyBuZWVkIHRvIGtlZXAgYSByZWZlcmVuY2UgaGVyZS4gSXQgaXMg
b3duZWQgYnkgdGhlIFJlbmRlclZpZXcuCiAgICAgQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dCog
bV9nbG9iYWxDb250ZXh0OwogICAgIAogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9j
b250ZXh0OwotICAgIFJlZlB0cjxUZXh0dXJlPiBtX2lucHV0VGV4dHVyZTsKICAgICBSZWZQdHI8
Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbT4gbV92YWxpZGF0ZWRQcm9ncmFtOwogICAgIFJl
ZlB0cjxDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0+IG1fY29tcGlsZWRQcm9ncmFtOwogICAg
IFJlZlB0cjxDdXN0b21GaWx0ZXJNZXNoPiBtX21lc2g7CiAgICAgSW50U2l6ZSBtX2NvbnRleHRT
aXplOwogCisgICAgUGxhdGZvcm0zRE9iamVjdCBtX2lucHV0VGV4dHVyZTsKICAgICBQbGF0Zm9y
bTNET2JqZWN0IG1fZnJhbWVCdWZmZXI7CiAgICAgUGxhdGZvcm0zRE9iamVjdCBtX2RlcHRoQnVm
ZmVyOwogICAgIFBsYXRmb3JtM0RPYmplY3QgbV9kZXN0VGV4dHVyZTsK
</data>
<flag name="review"
          id="175877"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>