<?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>176732</bug_id>
          
          <creation_ts>2017-09-11 14:11:10 -0700</creation_ts>
          <short_desc>Followup (r221805): Address comments and add more tests</short_desc>
          <delta_ts>2017-09-13 15:00:18 -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>Images</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=176016</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>japhet</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1347599</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-09-11 14:11:10 -0700</bug_when>
    <thetext>See Darin&apos;s comments in https://bugs.webkit.org/show_bug.cgi?id=176016#c15. The new test ensures that multiple decode() promises can be resolved or rejected simultaneously without any issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347605</commentid>
    <comment_count>1</comment_count>
      <attachid>320474</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-09-11 14:14:28 -0700</bug_when>
    <thetext>Created attachment 320474
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347624</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-11 14:29:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/34376485&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347769</commentid>
    <comment_count>3</comment_count>
      <attachid>320474</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-09-11 19:03:13 -0700</bug_when>
    <thetext>Comment on attachment 320474
Patch

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

Thanks. This addresses most of my comments.

&gt; Source/WebCore/loader/ImageLoader.cpp:402
&gt;      for (auto&amp; promise : m_decodingPromises)
&gt; -        promise-&gt;reject(Exception { EncodingError, WTFMove(message) });
&gt; +        promise-&gt;reject(Exception { EncodingError, message });

I asked this question in the previous patch, and I did not see an answer explaining why this is OK, nor a code change if it’s not OK:

Is there something that guarantees we will not reenter this function while rejecting the promises? Can rejecting a promise run arbitrary JavaScript code? What prevents modification of m_decodingPromises while iterating it?

&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:544
&gt; +    for (auto&amp; decodingCallback : *m_decodingCallbacks)
&gt;          decodingCallback();

Same question as above:

Is there something that guarantees we will not reenter this function while making the callbacks? Can a callback run arbitrary JavaScript code? What prevents modification of m_decodingCallbacks while iterating it?

&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:545
&gt; +    m_decodingCallbacks-&gt;clear();

I suggest deleting the Vector instead. Like this:

    m_decodingCallbacks = nullptr;

Unless perhaps there is some advantage to not deallocating it that I am missing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348447</commentid>
    <comment_count>4</comment_count>
      <attachid>320678</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-09-13 12:57:02 -0700</bug_when>
    <thetext>Created attachment 320678
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348457</commentid>
    <comment_count>5</comment_count>
      <attachid>320474</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-09-13 13:23:23 -0700</bug_when>
    <thetext>Comment on attachment 320474
Patch

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

&gt;&gt; Source/WebCore/loader/ImageLoader.cpp:402
&gt;&gt; +        promise-&gt;reject(Exception { EncodingError, message });
&gt; 
&gt; I asked this question in the previous patch, and I did not see an answer explaining why this is OK, nor a code change if it’s not OK:
&gt; 
&gt; Is there something that guarantees we will not reenter this function while rejecting the promises? Can rejecting a promise run arbitrary JavaScript code? What prevents modification of m_decodingPromises while iterating it?

Part of the Promise implementation is written in JS, please see JavaScriptCore/builtins/PromiseOperations.js. When creating a promise, createResolvingFunctions() is called to create wrappers around the user resolve and reject code blocks. The returned resolve() and reject() functions just call enqueueJob() for the user resolve and reject code blocks. So when ImageLoader::decodeError() calls DeferredPromise::reject(), we end up calling rejectPromise() in PromiseOperations.js which will schedule expecting the user reject code in the next JS execution cycle. If the user reject code has a call to image.decode(), it will not be called until ImageLoader::decodeError() finishes its execution. From looking at the source code and from debugging calling image.decode() from the reject block of another image.decode(), I can confirm that the functions of ImageLoader are not re-enterant. This case is tested by fast/images/decode-static-image-reject.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348507</commentid>
    <comment_count>6</comment_count>
      <attachid>320678</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-13 15:00:17 -0700</bug_when>
    <thetext>Comment on attachment 320678
Patch

Clearing flags on attachment: 320678

Committed r221996: &lt;http://trac.webkit.org/changeset/221996&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348508</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-13 15:00:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320474</attachid>
            <date>2017-09-11 14:14:28 -0700</date>
            <delta_ts>2017-09-13 12:57:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176732-20170911141427.patch</filename>
            <type>text/plain</type>
            <size>7897</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMTg3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE3LTA5LTExICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgRm9sbG93dXAg
KHIyMjE4MDUpOiBBZGRyZXNzIGNvbW1lbnRzIGFuZCBhZGQgbW9yZSB0ZXN0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NzMyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9p
bWFnZXMvZGVjb2RlLXNsb3ctbG9hZC1zdGF0aWMtaW1hZ2UuaHRtbAorCisgICAgICAgIENvZGUg
Y2xlYW4gdXAgYW5kIGFkZGluZyBhIG5ldyB0ZXN0IHRvIGVuc3VyZSBtdWx0aXBsZSBkZWNvZGUo
KSBwcm9taXNlcworICAgICAgICBjYW4gYmUgcmVzb2x2ZWQgb3IgcmVqZWN0ZWQgc2ltdWx0YW5l
b3VzbHkgd2l0aG91dCBhbnkgaXNzdWVzLgorCisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpkZWNvZGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VMb2FkZXI6OmRlY29kZUVycm9yKToKKyAgICAgICAgKiBsb2FkZXIvSW1h
Z2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcEltYWdlOjpjYWxsRGVjb2RpbmdDYWxsYmFja3MpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisKIDIwMTctMDktMTEgIERlYW4gSmFja3NvbiAg
PGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHTCBtYWNPU10gTm8gbmVlZCB0byBtdWx0
aXNhbXBsZSB3aGVuIGJsaXR0aW5nIGludG8gV2ViR0xMYXllcgpJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvSW1hZ2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMjE4MDUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODYsNyArMzg2LDcg
QEAgdm9pZCBJbWFnZUxvYWRlcjo6ZGVjb2RlKFJlZjxEZWZlcnJlZFBybwogICAgIH0KICAgICAK
ICAgICBBdG9taWNTdHJpbmcgYXR0ciA9IGVsZW1lbnQoKS5pbWFnZVNvdXJjZVVSTCgpOwotICAg
IGlmIChhdHRyLmlzTnVsbCgpIHx8IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhh
dHRyKS5pc0VtcHR5KCkpIHsKKyAgICBpZiAoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3Bh
Y2VzKGF0dHIpLmlzRW1wdHkoKSkgewogICAgICAgICBkZWNvZGVFcnJvcigiTWlzc2luZyBzb3Vy
Y2UgVVJMLiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzk1LDExICszOTUsMTEgQEAg
dm9pZCBJbWFnZUxvYWRlcjo6ZGVjb2RlKFJlZjxEZWZlcnJlZFBybwogICAgICAgICBkZWNvZGUo
KTsKIH0KIAotdm9pZCBJbWFnZUxvYWRlcjo6ZGVjb2RlRXJyb3IoU3RyaW5nJiYgbWVzc2FnZSkK
K3ZvaWQgSW1hZ2VMb2FkZXI6OmRlY29kZUVycm9yKGNvbnN0IGNoYXIqIG1lc3NhZ2UpCiB7CiAg
ICAgQVNTRVJUKGhhc1BlbmRpbmdEZWNvZGVQcm9taXNlcygpKTsKICAgICBmb3IgKGF1dG8mIHBy
b21pc2UgOiBtX2RlY29kaW5nUHJvbWlzZXMpCi0gICAgICAgIHByb21pc2UtPnJlamVjdChFeGNl
cHRpb24geyBFbmNvZGluZ0Vycm9yLCBXVEZNb3ZlKG1lc3NhZ2UpIH0pOworICAgICAgICBwcm9t
aXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgRW5jb2RpbmdFcnJvciwgbWVzc2FnZSB9KTsKICAgICBt
X2RlY29kaW5nUHJvbWlzZXMuY2xlYXIoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ltYWdlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0lt
YWdlTG9hZGVyLmgJKHJldmlzaW9uIDIyMTgwNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9J
bWFnZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjbGVhckZhaWxlZExvYWRVUkwoKTsKIAogICAgIGJvb2wgaGFzUGVuZGluZ0RlY29k
ZVByb21pc2VzKCkgY29uc3QgeyByZXR1cm4gIW1fZGVjb2RpbmdQcm9taXNlcy5pc0VtcHR5KCk7
IH0KLSAgICB2b2lkIGRlY29kZUVycm9yKFN0cmluZyYmKTsKKyAgICB2b2lkIGRlY29kZUVycm9y
KGNvbnN0IGNoYXIqKTsKICAgICB2b2lkIGRlY29kZSgpOwogICAgIAogICAgIHZvaWQgdGltZXJG
aXJlZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmNwcAkocmV2aXNpb24gMjIxODA1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDEsNyArNTAx
LDEwIEBAIHZvaWQgQml0bWFwSW1hZ2U6OnJlc2V0QW5pbWF0aW9uKCkKIAogdm9pZCBCaXRtYXBJ
bWFnZTo6ZGVjb2RlKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQogewotICAgIG1f
ZGVjb2RpbmdDYWxsYmFja3MuYXBwZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBpZiAoIW1f
ZGVjb2RpbmdDYWxsYmFja3MpCisgICAgICAgIG1fZGVjb2RpbmdDYWxsYmFja3MgPSBzdGQ6Om1h
a2VfdW5pcXVlPFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+LCAxPj4oKTsKKworICAgIG1fZGVjb2Rp
bmdDYWxsYmFja3MtPmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKICAgICBpZiAoY2FuQW5p
bWF0ZSgpKSAgewogICAgICAgICBpZiAobV9kZXNpcmVkRnJhbWVTdGFydFRpbWUpIHsKQEAgLTUz
NSw5ICs1MzgsMTEgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZGVjb2RlKFdURjo6RnVuY3Rpb248dgog
CiB2b2lkIEJpdG1hcEltYWdlOjpjYWxsRGVjb2RpbmdDYWxsYmFja3MoKQogewotICAgIGZvciAo
YXV0byYgZGVjb2RpbmdDYWxsYmFjayA6IG1fZGVjb2RpbmdDYWxsYmFja3MpCisgICAgaWYgKCFt
X2RlY29kaW5nQ2FsbGJhY2tzKQorICAgICAgICByZXR1cm47CisgICAgZm9yIChhdXRvJiBkZWNv
ZGluZ0NhbGxiYWNrIDogKm1fZGVjb2RpbmdDYWxsYmFja3MpCiAgICAgICAgIGRlY29kaW5nQ2Fs
bGJhY2soKTsKLSAgICBtX2RlY29kaW5nQ2FsbGJhY2tzLmNsZWFyKCk7CisgICAgbV9kZWNvZGlu
Z0NhbGxiYWNrcy0+Y2xlYXIoKTsKIH0KIAogdm9pZCBCaXRtYXBJbWFnZTo6aW1hZ2VGcmFtZUF2
YWlsYWJsZUF0SW5kZXgoc2l6ZV90IGluZGV4KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCShyZXZpc2lvbiAyMjE4MDUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTMsNyArMjEzLDcgQEAgcHJpdmF0ZToKICAgICBSZXBldGl0aW9uQ291bnQgbV9yZXBl
dGl0aW9uc0NvbXBsZXRlIHsgUmVwZXRpdGlvbkNvdW50Tm9uZSB9OyAvLyBIb3cgbWFueSByZXBl
dGl0aW9ucyB3ZSd2ZSBmaW5pc2hlZC4KICAgICBNb25vdG9uaWNUaW1lIG1fZGVzaXJlZEZyYW1l
U3RhcnRUaW1lOyAvLyBUaGUgc3lzdGVtIHRpbWUgYXQgd2hpY2ggd2UgaG9wZSB0byBzZWUgdGhl
IG5leHQgY2FsbCB0byBzdGFydEFuaW1hdGlvbigpLgogCi0gICAgVmVjdG9yPEZ1bmN0aW9uPHZv
aWQoKT4sIDE+IG1fZGVjb2RpbmdDYWxsYmFja3M7CisgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3Rv
cjxGdW5jdGlvbjx2b2lkKCk+LCAxPj4gbV9kZWNvZGluZ0NhbGxiYWNrczsKICAgICBTZWNvbmRz
IG1fZnJhbWVEZWNvZGluZ0R1cmF0aW9uRm9yVGVzdGluZzsKICAgICBNb25vdG9uaWNUaW1lIG1f
ZGVzaXJlZEZyYW1lRGVjb2RlVGltZUZvclRlc3Rpbmc7CiAKSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIy
MTgwNSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDEzIEBACisyMDE3LTA5LTExICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBs
ZS5jb20+CisKKyAgICAgICAgRm9sbG93dXAgKHIyMjE4MDUpOiBBZGRyZXNzIGNvbW1lbnRzIGFu
ZCBhZGQgbW9yZSB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc2NzMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBodHRwL3Rlc3RzL2ltYWdlcy9kZWNvZGUtc2xvdy1sb2FkLXN0YXRpYy1pbWFn
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW1hZ2VzL2RlY29k
ZS1zbG93LWxvYWQtc3RhdGljLWltYWdlLmh0bWw6IEFkZGVkLgorCiAyMDE3LTA5LTA4ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVt
ZW50IEhUTUxJbWFnZUVsZW1lbnQuZGVjb29kZSgpIG1ldGhvZApJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbWFnZXMvZGVjb2RlLXNsb3ctbG9hZC1zdGF0aWMtaW1hZ2UtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW1hZ2VzL2RlY29kZS1z
bG93LWxvYWQtc3RhdGljLWltYWdlLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2ltYWdlcy9kZWNvZGUtc2xvdy1sb2FkLXN0YXRpYy1pbWFnZS1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBAQAorVGVzdCByZWplY3Rp
bmcvcmVzb2x2aW5nIG11bHRpcGxlIGRlY29kZSgpIHByb21pc2VzIGlzc3VlZCBmb3IgdGhlIHNh
bWUgaW1hZ2Ugc291cmNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworRGVjb2Rp
bmcgYW4gaW1hZ2Ugd2l0aCB1bnN1cHBvcnRlZCBmb3JtYXQgZmFpbGVkLiBSZXN1bHQgaXM6IEVu
Y29kaW5nRXJyb3I6IExvYWRpbmcgZXJyb3IuCitEZWNvZGluZyB0aGUgaW1hZ2Ugc3VjY2VlZGVk
LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW1hZ2VzL2RlY29kZS1zbG93LWxvYWQtc3RhdGlj
LWltYWdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbWFnZXMv
ZGVjb2RlLXNsb3ctbG9hZC1zdGF0aWMtaW1hZ2UuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2ltYWdlcy9kZWNvZGUtc2xvdy1sb2FkLXN0YXRpYy1pbWFnZS5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYgQEAKKzxoZWFkPgorICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+CisgICAgPGRpdj48L2Rpdj4KKyAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiBy
ZWplY3RlZEltYWdlU291cmNlVVJMKCkgeworICAgICAgICAgICAgcmV0dXJuICJodHRwOi8vMTI3
LjAuMC4xOjgwMDAvcmVzb3VyY2VzL2xvYWQtYW5kLXN0YWxsLnBocCIKKyAgICAgICAgICAgICAg
ICAgKyAiP25hbWU9Li4vLi4vLi4vZmFzdC9pbWFnZXMvcmVzb3VyY2VzLzEwMHgxMDAtcmVkLnBz
ZCIgCisgICAgICAgICAgICAgICAgICsgIiZtaW1lVHlwZT1pbWFnZSUyRnZuZC5hZG9iZS5waG90
b3Nob3AiCisgICAgICAgICAgICAgICAgICsgIiZzdGFsbEF0PTEwMjQiOworICAgICAgICAgICAg
ICAgICArICImc3RhbGxGb3I9MSI7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiByZXNv
bHZlZEltYWdlU291cmNlVVJMKCkgeworICAgICAgICAgICAgcmV0dXJuICJodHRwOi8vMTI3LjAu
MC4xOjgwMDAvcmVzb3VyY2VzL2xvYWQtYW5kLXN0YWxsLnBocCIKKyAgICAgICAgICAgICAgICAg
KyAiP25hbWU9Li4vLi4vLi4vZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2dyZWVuLTQwMHg0MDAucG5n
IiAKKyAgICAgICAgICAgICAgICAgKyAiJm1pbWVUeXBlPWltYWdlJTJGcG5nIgorICAgICAgICAg
ICAgICAgICArICImc3RhbGxBdD0xMDI0IjsKKyAgICAgICAgICAgICAgICAgKyAiJnN0YWxsRm9y
PTEiOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gbG9hZEltYWdlcyhpbWFnZVNvdXJj
ZVVSTCkgeworICAgICAgICAgICAgdmFyIHByb21pc2VzID0gW107CisgICAgICAgICAgICBmb3Ig
KHZhciBpbmRleCA9IDA7IGluZGV4IDwgNTsgKytpbmRleCkgeworICAgICAgICAgICAgICAgIHZh
ciBpbWFnZSA9IG5ldyBJbWFnZTsKKyAgICAgICAgICAgICAgICBpbWFnZS5zcmMgPSBpbWFnZVNv
dXJjZVVSTCgpOyAgICAKKyAgICAgICAgICAgICAgICBwcm9taXNlcy5wdXNoKGltYWdlLmRlY29k
ZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBwcm9taXNlczsKKyAgICAg
ICAgfQorCisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0IHJlamVjdGluZy9yZXNvbHZpbmcgbXVs
dGlwbGUgZGVjb2RlKCkgcHJvbWlzZXMgaXNzdWVkIGZvciB0aGUgc2FtZSBpbWFnZSBzb3VyY2Uu
Iik7CisgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIFByb21pc2UuYWxs
KGxvYWRJbWFnZXMocmVqZWN0ZWRJbWFnZVNvdXJjZVVSTCkpLmNhdGNoKHJlYXNvbiA9PiB7Cisg
ICAgICAgICAgICBkZWJ1ZygiRGVjb2RpbmcgYW4gaW1hZ2Ugd2l0aCB1bnN1cHBvcnRlZCBmb3Jt
YXQgZmFpbGVkLiBSZXN1bHQgaXM6ICIgKyByZWFzb24pOworCisgICAgICAgICAgICBQcm9taXNl
LmFsbChsb2FkSW1hZ2VzKHJlc29sdmVkSW1hZ2VTb3VyY2VVUkwpKS50aGVuKCgpID0+IHsKKyAg
ICAgICAgICAgICAgICBkZWJ1ZygiRGVjb2RpbmcgdGhlIGltYWdlIHN1Y2NlZWRlZC4iKTsKKyAg
ICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKKyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320678</attachid>
            <date>2017-09-13 12:57:02 -0700</date>
            <delta_ts>2017-09-13 15:00:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176732-20170913125702.patch</filename>
            <type>text/plain</type>
            <size>7924</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMTk3NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE3LTA5LTEzICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgRm9sbG93dXAg
KHIyMjE4MDUpOiBBZGRyZXNzIGNvbW1lbnRzIGFuZCBhZGQgbW9yZSB0ZXN0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NzMyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9pbWFn
ZXMvZGVjb2RlLXNsb3ctbG9hZC1zdGF0aWMtaW1hZ2UuaHRtbAorCisgICAgICAgIENvZGUgY2xl
YW4gdXAgYW5kIGFkZGluZyBhIG5ldyB0ZXN0IHRvIGVuc3VyZSBtdWx0aXBsZSBkZWNvZGUoKSBw
cm9taXNlcworICAgICAgICBjYW4gYmUgcmVzb2x2ZWQgb3IgcmVqZWN0ZWQgc2ltdWx0YW5lb3Vz
bHkgd2l0aG91dCBhbnkgaXNzdWVzLgorCisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpkZWNvZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VMb2FkZXI6OmRlY29kZUVycm9yKToKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VM
b2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpjYWxsRGVjb2RpbmdDYWxsYmFja3MpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisKIDIwMTctMDktMTMgIEpvaG4gV2lsYW5kZXIgIDx3
aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIFN0b3JhZ2UgQWNjZXNzIEFQ
SSAoZG9jdW1lbnQgcGFydHMpIGFzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAJKHJldmlzaW9uIDIyMTk3NykKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4Niw3
ICszODYsNyBAQCB2b2lkIEltYWdlTG9hZGVyOjpkZWNvZGUoUmVmPERlZmVycmVkUHJvCiAgICAg
fQogICAgIAogICAgIEF0b21pY1N0cmluZyBhdHRyID0gZWxlbWVudCgpLmltYWdlU291cmNlVVJM
KCk7Ci0gICAgaWYgKGF0dHIuaXNOdWxsKCkgfHwgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1M
U3BhY2VzKGF0dHIpLmlzRW1wdHkoKSkgeworICAgIGlmIChzdHJpcExlYWRpbmdBbmRUcmFpbGlu
Z0hUTUxTcGFjZXMoYXR0cikuaXNFbXB0eSgpKSB7CiAgICAgICAgIGRlY29kZUVycm9yKCJNaXNz
aW5nIHNvdXJjZSBVUkwuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zOTUsMTEgKzM5
NSwxMSBAQCB2b2lkIEltYWdlTG9hZGVyOjpkZWNvZGUoUmVmPERlZmVycmVkUHJvCiAgICAgICAg
IGRlY29kZSgpOwogfQogCi12b2lkIEltYWdlTG9hZGVyOjpkZWNvZGVFcnJvcihTdHJpbmcmJiBt
ZXNzYWdlKQordm9pZCBJbWFnZUxvYWRlcjo6ZGVjb2RlRXJyb3IoY29uc3QgY2hhciogbWVzc2Fn
ZSkKIHsKICAgICBBU1NFUlQoaGFzUGVuZGluZ0RlY29kZVByb21pc2VzKCkpOwogICAgIGZvciAo
YXV0byYgcHJvbWlzZSA6IG1fZGVjb2RpbmdQcm9taXNlcykKLSAgICAgICAgcHJvbWlzZS0+cmVq
ZWN0KEV4Y2VwdGlvbiB7IEVuY29kaW5nRXJyb3IsIFdURk1vdmUobWVzc2FnZSkgfSk7CisgICAg
ICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBFbmNvZGluZ0Vycm9yLCBtZXNzYWdlIH0p
OwogICAgIG1fZGVjb2RpbmdQcm9taXNlcy5jbGVhcigpOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvSW1hZ2VMb2FkZXIuaAkocmV2aXNpb24gMjIxOTc3KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ltYWdlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGNsZWFyRmFpbGVkTG9hZFVSTCgpOwogCiAgICAgYm9vbCBoYXNQZW5k
aW5nRGVjb2RlUHJvbWlzZXMoKSBjb25zdCB7IHJldHVybiAhbV9kZWNvZGluZ1Byb21pc2VzLmlz
RW1wdHkoKTsgfQotICAgIHZvaWQgZGVjb2RlRXJyb3IoU3RyaW5nJiYpOworICAgIHZvaWQgZGVj
b2RlRXJyb3IoY29uc3QgY2hhciopOwogICAgIHZvaWQgZGVjb2RlKCk7CiAgICAgCiAgICAgdm9p
ZCB0aW1lckZpcmVkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuY3BwCShyZXZpc2lvbiAyMjE5NzcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUw
MSw3ICs1MDEsMTAgQEAgdm9pZCBCaXRtYXBJbWFnZTo6cmVzZXRBbmltYXRpb24oKQogCiB2b2lk
IEJpdG1hcEltYWdlOjpkZWNvZGUoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7
Ci0gICAgbV9kZWNvZGluZ0NhbGxiYWNrcy5hcHBlbmQoV1RGTW92ZShjYWxsYmFjaykpOworICAg
IGlmICghbV9kZWNvZGluZ0NhbGxiYWNrcykKKyAgICAgICAgbV9kZWNvZGluZ0NhbGxiYWNrcyA9
IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4sIDE+PigpOworCisgICAg
bV9kZWNvZGluZ0NhbGxiYWNrcy0+YXBwZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIGlm
IChjYW5BbmltYXRlKCkpICB7CiAgICAgICAgIGlmIChtX2Rlc2lyZWRGcmFtZVN0YXJ0VGltZSkg
ewpAQCAtNTM1LDkgKzUzOCwxMSBAQCB2b2lkIEJpdG1hcEltYWdlOjpkZWNvZGUoV1RGOjpGdW5j
dGlvbjx2CiAKIHZvaWQgQml0bWFwSW1hZ2U6OmNhbGxEZWNvZGluZ0NhbGxiYWNrcygpCiB7Ci0g
ICAgZm9yIChhdXRvJiBkZWNvZGluZ0NhbGxiYWNrIDogbV9kZWNvZGluZ0NhbGxiYWNrcykKKyAg
ICBpZiAoIW1fZGVjb2RpbmdDYWxsYmFja3MpCisgICAgICAgIHJldHVybjsKKyAgICBmb3IgKGF1
dG8mIGRlY29kaW5nQ2FsbGJhY2sgOiAqbV9kZWNvZGluZ0NhbGxiYWNrcykKICAgICAgICAgZGVj
b2RpbmdDYWxsYmFjaygpOwotICAgIG1fZGVjb2RpbmdDYWxsYmFja3MuY2xlYXIoKTsKKyAgICBt
X2RlY29kaW5nQ2FsbGJhY2tzID0gbnVsbHB0cjsKIH0KIAogdm9pZCBCaXRtYXBJbWFnZTo6aW1h
Z2VGcmFtZUF2YWlsYWJsZUF0SW5kZXgoc2l6ZV90IGluZGV4KQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCShyZXZpc2lvbiAyMjE5Nzcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTMsNyArMjEzLDcgQEAgcHJpdmF0ZToKICAgICBSZXBldGl0aW9uQ291
bnQgbV9yZXBldGl0aW9uc0NvbXBsZXRlIHsgUmVwZXRpdGlvbkNvdW50Tm9uZSB9OyAvLyBIb3cg
bWFueSByZXBldGl0aW9ucyB3ZSd2ZSBmaW5pc2hlZC4KICAgICBNb25vdG9uaWNUaW1lIG1fZGVz
aXJlZEZyYW1lU3RhcnRUaW1lOyAvLyBUaGUgc3lzdGVtIHRpbWUgYXQgd2hpY2ggd2UgaG9wZSB0
byBzZWUgdGhlIG5leHQgY2FsbCB0byBzdGFydEFuaW1hdGlvbigpLgogCi0gICAgVmVjdG9yPEZ1
bmN0aW9uPHZvaWQoKT4sIDE+IG1fZGVjb2RpbmdDYWxsYmFja3M7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+LCAxPj4gbV9kZWNvZGluZ0NhbGxiYWNrczsKICAg
ICBTZWNvbmRzIG1fZnJhbWVEZWNvZGluZ0R1cmF0aW9uRm9yVGVzdGluZzsKICAgICBNb25vdG9u
aWNUaW1lIG1fZGVzaXJlZEZyYW1lRGVjb2RlVGltZUZvclRlc3Rpbmc7CiAKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIyMTk3NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE3LTA5LTEzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFs
bGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgRm9sbG93dXAgKHIyMjE4MDUpOiBBZGRyZXNzIGNv
bW1lbnRzIGFuZCBhZGQgbW9yZSB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NzMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2ltYWdlcy9kZWNvZGUtc2xvdy1sb2FkLXN0YXRp
Yy1pbWFnZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW1hZ2Vz
L2RlY29kZS1zbG93LWxvYWQtc3RhdGljLWltYWdlLmh0bWw6IEFkZGVkLgorCiAyMDE3LTA5LTEz
ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEludHJvZHVj
ZSBTdG9yYWdlIEFjY2VzcyBBUEkgKGRvY3VtZW50IHBhcnRzKSBhcyBhbiBleHBlcmltZW50YWwg
ZmVhdHVyZQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbWFnZXMvZGVjb2RlLXNsb3ct
bG9hZC1zdGF0aWMtaW1hZ2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW1hZ2VzL2RlY29kZS1zbG93LWxvYWQtc3RhdGljLWltYWdlLWV4cGVjdGVk
LnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ltYWdlcy9kZWNv
ZGUtc2xvdy1sb2FkLXN0YXRpYy1pbWFnZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMSBAQAorVGVzdCByZWplY3RpbmcvcmVzb2x2aW5nIG11bHRpcGxlIGRlY29kZSgp
IHByb21pc2VzIGlzc3VlZCBmb3IgdGhlIHNhbWUgaW1hZ2Ugc291cmNlLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworRGVjb2RpbmcgYW4gaW1hZ2Ugd2l0aCB1bnN1cHBvcnRlZCBm
b3JtYXQgZmFpbGVkLiBSZXN1bHQgaXM6IEVuY29kaW5nRXJyb3I6IExvYWRpbmcgZXJyb3IuCitE
ZWNvZGluZyB0aGUgaW1hZ2Ugc3VjY2VlZGVkLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW1h
Z2VzL2RlY29kZS1zbG93LWxvYWQtc3RhdGljLWltYWdlLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbWFnZXMvZGVjb2RlLXNsb3ctbG9hZC1zdGF0aWMtaW1hZ2Uu
aHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ltYWdlcy9kZWNv
ZGUtc2xvdy1sb2FkLXN0YXRpYy1pbWFnZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NDYgQEAKKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdj48L2Rpdj4KKyAgICA8
c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiByZWplY3RlZEltYWdlU291cmNlVVJMKCkgeworICAg
ICAgICAgICAgcmV0dXJuICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL2xvYWQtYW5k
LXN0YWxsLnBocCIKKyAgICAgICAgICAgICAgICAgKyAiP25hbWU9Li4vLi4vLi4vZmFzdC9pbWFn
ZXMvcmVzb3VyY2VzLzEwMHgxMDAtcmVkLnBzZCIgCisgICAgICAgICAgICAgICAgICsgIiZtaW1l
VHlwZT1pbWFnZSUyRnZuZC5hZG9iZS5waG90b3Nob3AiCisgICAgICAgICAgICAgICAgICsgIiZz
dGFsbEF0PTEwMjQiOworICAgICAgICAgICAgICAgICArICImc3RhbGxGb3I9MSI7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiByZXNvbHZlZEltYWdlU291cmNlVVJMKCkgeworICAgICAg
ICAgICAgcmV0dXJuICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL2xvYWQtYW5kLXN0
YWxsLnBocCIKKyAgICAgICAgICAgICAgICAgKyAiP25hbWU9Li4vLi4vLi4vZmFzdC9pbWFnZXMv
cmVzb3VyY2VzL2dyZWVuLTQwMHg0MDAucG5nIiAKKyAgICAgICAgICAgICAgICAgKyAiJm1pbWVU
eXBlPWltYWdlJTJGcG5nIgorICAgICAgICAgICAgICAgICArICImc3RhbGxBdD0xMDI0IjsKKyAg
ICAgICAgICAgICAgICAgKyAiJnN0YWxsRm9yPTEiOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gbG9hZEltYWdlcyhpbWFnZVNvdXJjZVVSTCkgeworICAgICAgICAgICAgdmFyIHByb21p
c2VzID0gW107CisgICAgICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgNTsgKytp
bmRleCkgeworICAgICAgICAgICAgICAgIHZhciBpbWFnZSA9IG5ldyBJbWFnZTsKKyAgICAgICAg
ICAgICAgICBpbWFnZS5zcmMgPSBpbWFnZVNvdXJjZVVSTCgpOyAgICAKKyAgICAgICAgICAgICAg
ICBwcm9taXNlcy5wdXNoKGltYWdlLmRlY29kZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHJldHVybiBwcm9taXNlczsKKyAgICAgICAgfQorCisgICAgICAgIGRlc2NyaXB0aW9uKCJU
ZXN0IHJlamVjdGluZy9yZXNvbHZpbmcgbXVsdGlwbGUgZGVjb2RlKCkgcHJvbWlzZXMgaXNzdWVk
IGZvciB0aGUgc2FtZSBpbWFnZSBzb3VyY2UuIik7CisgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0
cnVlOworCisgICAgICAgIFByb21pc2UuYWxsKGxvYWRJbWFnZXMocmVqZWN0ZWRJbWFnZVNvdXJj
ZVVSTCkpLmNhdGNoKHJlYXNvbiA9PiB7CisgICAgICAgICAgICBkZWJ1ZygiRGVjb2RpbmcgYW4g
aW1hZ2Ugd2l0aCB1bnN1cHBvcnRlZCBmb3JtYXQgZmFpbGVkLiBSZXN1bHQgaXM6ICIgKyByZWFz
b24pOworCisgICAgICAgICAgICBQcm9taXNlLmFsbChsb2FkSW1hZ2VzKHJlc29sdmVkSW1hZ2VT
b3VyY2VVUkwpKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiRGVjb2Rpbmcg
dGhlIGltYWdlIHN1Y2NlZWRlZC4iKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>