<?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>174487</bug_id>
          
          <creation_ts>2017-07-13 19:51:40 -0700</creation_ts>
          <short_desc>Better deal with changes to the ResourceLoadStatisticsStore file on disk</short_desc>
          <delta_ts>2017-07-15 10:13:29 -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>WebKit2</component>
          <version>WebKit 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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1328653</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-13 19:51:40 -0700</bug_when>
    <thetext>Better deal with changes to the ResourceLoadStatisticsStore file on disk. We should merge the data on disk with the one we have in memory instead of merely replacing our in-memory data. This avoids data loss when re-syncing from disk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328658</commentid>
    <comment_count>1</comment_count>
      <attachid>315396</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-13 20:25:45 -0700</bug_when>
    <thetext>Created attachment 315396
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328666</commentid>
    <comment_count>2</comment_count>
      <attachid>315398</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-13 21:15:01 -0700</bug_when>
    <thetext>Created attachment 315398
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328683</commentid>
    <comment_count>3</comment_count>
      <attachid>315398</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-13 22:56:48 -0700</bug_when>
    <thetext>Comment on attachment 315398
Patch

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

Looks good! R=me

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:130
&gt; +    int m_monthDay { 0 }; // [1, 31].

Is this really 1-based? If we are, why is t it initialized with a 1?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328688</commentid>
    <comment_count>4</comment_count>
      <attachid>315398</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-13 23:08:07 -0700</bug_when>
    <thetext>Comment on attachment 315398
Patch

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

&gt;&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:130
&gt;&gt; +    int m_monthDay { 0 }; // [1, 31].
&gt; 
&gt; Is this really 1-based? If we are, why is t it initialized with a 1?

Yes, dayInMonthFromDayInYear() returns a value that is 1-based. The default constructor does not construct a valid date so I do not think it matters that we initialize all members to 0 though. The default constructor is only used for the KeyedDecoding and we would not use the date if the decoding failed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328693</commentid>
    <comment_count>5</comment_count>
      <attachid>315398</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-13 23:39:11 -0700</bug_when>
    <thetext>Comment on attachment 315398
Patch

Clearing flags on attachment: 315398

Committed r219499: &lt;http://trac.webkit.org/changeset/219499&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328694</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-13 23:39:12 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1329206</commentid>
    <comment_count>7</comment_count>
      <attachid>315398</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-07-15 10:13:29 -0700</bug_when>
    <thetext>Comment on attachment 315398
Patch

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

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:141
&gt; +    std::merge(existingDates.begin(), existingDates.end(), newDates.begin(), newDates.end(), mergedDates.begin());

I’d be tempted to assert std::is_sorted before calling std::merge.

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:147
&gt; +    // Remove duplicate dates.
&gt; +    removeRepeatedElements(mergedDates);
&gt; +
&gt; +    // Drop old dates until the Vector size reaches operatingDatesWindow.
&gt; +    while (mergedDates.size() &gt; operatingDatesWindow)
&gt; +        mergedDates.remove(0);

(When researching this, I discovered that Vector::removeRepeatedElements calls resize instead of calling shrink. It should call shrink.)

This code is unnecessarily inefficient. We should resize only once, not multiple times, and we should reduce the amount we move elements in the vector. Here is the almost identical code I would write that resizes the vector at most once and moves items in the vector at most twice:

    // Remove duplicate dates, then throw away all but the newest dates that fit in the window size.
    auto begin = mergedDates.begin();
    auto end = std::unique(begin, mergedDates.end());
    if (end - begin &gt; operatingDatesWindow)
        end = std::move(end - operatingDatesWindow, end, begin);
    mergedDates.shrink(end - begin);</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315396</attachid>
            <date>2017-07-13 20:25:45 -0700</date>
            <delta_ts>2017-07-13 21:14:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174487-20170713202545.patch</filename>
            <type>text/plain</type>
            <size>11763</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5NDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTA1MmIyZDE5YmE1NDkz
ZjVkYzFlYmQzZmZhZjMxYmRjY2Y5ZmFmMS4uODRhMDEyMjQyNjllNGYxOGZhMGFkNDQ5ZDg3NmY5
MmIzYTlkM2NmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ0IEBACiAyMDE3LTA3LTEzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgQmV0dGVyIGRlYWwgd2l0aCBj
aGFuZ2VzIHRvIHRoZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgZmlsZSBvbiBkaXNrCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ0ODcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJ3MgcmVzZXREYXRhRnJvbURlY29kZXIoKSB0byBt
ZXJnZVdpdGhEYXRhRnJvbURlY29kZXIoKQorICAgICAgICBhbmQgdXBkYXRlIGl0IHNvIHRoYXQg
aXQgYWN0dWFsIG1lcmdlcyB0aGUgZGF0YSBmcm9tIHRoZSBkaXNrIHdpdGggdGhlIG9uZSB3ZSBo
YXZlIGluIG1lbW9yeSwKKyAgICAgICAgaW5zdGVhZCBvZiByZXBsYWNpbmcgaXQuIFRoaXMgYXZv
aWQgZGF0YSBsb3NzLgorCisgICAgICAgIFdlIGxldmVyYWdlIHRoZSBleGlzdGluZyBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1lcmdlU3RhdGlzdGljcygpIHRvIG1lcmdlIHRoZQor
ICAgICAgICBzdGF0aXN0aWNzLgorCisgICAgICAgIFRvIGZhY2lsaWF0ZSBtZXJnaW5nIHRoZSBv
cGVyYXRpbmcgZGF0ZXMsIHRoZXkgYXJlIG5vdyByZXByZXNlbnRlZCBhcyBPcGVyYXRpbmdEYXRl
IG9iamVjdHMKKyAgICAgICAgaW5zdGVhZCBvZiBXYWxsVGltZSBvYmplY3RzLiBPcGVyYXRpbmdE
YXRlIG9ubHkgaW5jbHVkZSBkYXRlIHByZWNpc2lvbiwgbm8gdGltZSBpbmZvcm1hdGlvbi4KKyAg
ICAgICAgQXMgYSByZXN1bHQsIHRoZSBtZXJnZSAyIHZlY3RvcnMgb2YgT3BlcmF0aW5nRGF0ZSBv
YmplY3RzLCB3ZSBjYW46CisgICAgICAgIDEuIE1lcmdlIHRoZSAyIHNvcnRlZCB2ZWN0b3JzICh1
c2luZyBzdGQ6Om1lcmdlKCkpCisgICAgICAgIDIuIEdldCByaWQgb2YgZHVwbGljYXRlcyAoZWFz
eSBiZWNhdXNlIG9mIGRhdGUtbGV2ZWwgcHJlY2lzaW9uKQorICAgICAgICAzLiBEcm9wIG9sZCBk
YXRlcyB1bnRpbCB0aGUgdmVjdG9yIGhhcyBhdCBtb3N0IDMwIGl0ZW1zLgorCisgICAgICAgICog
VUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRT
dG9yYWdlOjpyZWZyZXNoTWVtb3J5U3RvcmVGcm9tRGlzayk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6cG9wdWxhdGVNZW1vcnlTdG9y
ZUZyb21EaXNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6T3BlcmF0aW5nRGF0ZTo6ZnJvbVdhbGxUaW1l
KToKKyAgICAgICAgKFdlYktpdDo6T3BlcmF0aW5nRGF0ZTo6dG9kYXkpOgorICAgICAgICAoV2Vi
S2l0OjpPcGVyYXRpbmdEYXRlOjpzZWNvbmRzU2luY2VFcG9jaCk6CisgICAgICAgIChXZWJLaXQ6
Ok9wZXJhdGluZ0RhdGU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViS2l0OjpPcGVyYXRpbmdE
YXRlOjpvcGVyYXRvcjwpOgorICAgICAgICAoV2ViS2l0OjpPcGVyYXRpbmdEYXRlOjpvcGVyYXRv
cjw9KToKKyAgICAgICAgKFdlYktpdDo6T3BlcmF0aW5nRGF0ZTo6T3BlcmF0aW5nRGF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6Om1lcmdlT3BlcmF0aW5nRGF0ZXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZUVuY29kZXJGcm9tRGF0YSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWVyZ2VXaXRo
RGF0YUZyb21EZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjppbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3RhdGlzdGlj
c0V4cGlyZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaDoKKworMjAxNy0wNy0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CiAgICAgICAgIE1vdmVkIGZpbGVzeXN0ZW0gY29kZSBvdXQgb2YgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlIGNsYXNzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzQ0MzUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJz
aXN0ZW50U3RvcmFnZS5jcHAKaW5kZXggMmNhZTA5ODIxNzc2M2NlMWFjZDY4NDAxOTNiNTBjNWQz
NTEyOTNiMC4uMTgyZjY5YWQ5Y2I5MjhlMWUxZjE5ZTRjNzQ5MjUyNzJlNTAxNTRhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
U3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwCkBAIC0x
NjYsNyArMTY2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3Jh
Z2U6OnJlZnJlc2hNZW1vcnlTdG9yZUZyb21EaXNrKCkKICAgICBpZiAoIWRlY29kZXIpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fbWVtb3J5U3RvcmUucmVzZXREYXRhRnJvbURlY29kZXIoKmRl
Y29kZXIpOworICAgIG1fbWVtb3J5U3RvcmUubWVyZ2VXaXRoRGF0YUZyb21EZWNvZGVyKCpkZWNv
ZGVyKTsKICAgICBtX2xhc3RTdGF0aXN0aWNzRmlsZVN5bmNUaW1lID0gcmVhZFRpbWU7CiB9CiAK
QEAgLTE5Myw3ICsxOTMsOCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZTo6cG9wdWxhdGVNZW1vcnlTdG9yZUZyb21EaXNrKCkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIG1fbWVtb3J5U3RvcmUucmVzZXREYXRhRnJvbURlY29kZXIoKmRlY29kZXIp
OworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9tZW1vcnlTdG9yZS5pc0VtcHR5KCksICJUaGlz
IGlzIHRoZSBpbml0aWFsIGltcG9ydCBzbyB0aGUgc3RvcmUgc2hvdWxkIGJlIGVtcHR5Iik7Cisg
ICAgbV9tZW1vcnlTdG9yZS5tZXJnZVdpdGhEYXRhRnJvbURlY29kZXIoKmRlY29kZXIpOwogCiAg
ICAgbV9sYXN0U3RhdGlzdGljc0ZpbGVTeW5jVGltZSA9IHJlYWRUaW1lOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwCmluZGV4IDA3YjFjNmI2YzBkNDFiMzk3N2I4NDAxYThlMWM2ZTJlZTE2NDFmNTku
LjFiYTM3Mjk5ZWE1NjQ3OTBhOTllNTc1YWNjNWZlODJlMGMzYmUyYjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9LZXllZENvZGlu
Zy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oPgogI2luY2x1
ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgorI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgog
I2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAKQEAgLTc3LDYgKzc4LDc3IEBAIHN0YXRpYyBjb25zdCBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiYgZGF0YVR5cGVzVG9SZW1vdmUoKQogICAgIHJldHVybiBkYXRhVHlwZXM7CiB9CiAK
K2NsYXNzIE9wZXJhdGluZ0RhdGUgeworcHVibGljOgorICAgIE9wZXJhdGluZ0RhdGUoKSA9IGRl
ZmF1bHQ7CisKKyAgICBzdGF0aWMgT3BlcmF0aW5nRGF0ZSBmcm9tV2FsbFRpbWUoV2FsbFRpbWUg
dGltZSkKKyAgICB7CisgICAgICAgIGRvdWJsZSBtcyA9IHRpbWUuc2Vjb25kc1NpbmNlRXBvY2go
KS5taWxsaXNlY29uZHMoKTsKKyAgICAgICAgaW50IHllYXIgPSBtc1RvWWVhcihtcyk7CisgICAg
ICAgIGludCB5ZWFyRGF5ID0gZGF5SW5ZZWFyKG1zLCB5ZWFyKTsKKyAgICAgICAgaW50IG1vbnRo
ID0gbW9udGhGcm9tRGF5SW5ZZWFyKHllYXJEYXksIGlzTGVhcFllYXIoeWVhcikpOworICAgICAg
ICBpbnQgbW9udGhEYXkgPSBkYXlJbk1vbnRoRnJvbURheUluWWVhcih5ZWFyRGF5LCBpc0xlYXBZ
ZWFyKHllYXIpKTsKKworICAgICAgICByZXR1cm4gT3BlcmF0aW5nRGF0ZSB7IHllYXIsIG1vbnRo
LCBtb250aERheSB9OworICAgIH0KKworICAgIHN0YXRpYyBPcGVyYXRpbmdEYXRlIHRvZGF5KCkK
KyAgICB7CisgICAgICAgIHJldHVybiBPcGVyYXRpbmdEYXRlOjpmcm9tV2FsbFRpbWUoV2FsbFRp
bWU6Om5vdygpKTsKKyAgICB9CisKKyAgICBTZWNvbmRzIHNlY29uZHNTaW5jZUVwb2NoKCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBTZWNvbmRzIHsgZGF0ZVRvRGF5c0Zyb20xOTcwKG1f
eWVhciwgbV9tb250aCwgbV9tb250aERheSkgKiBzZWNvbmRzUGVyRGF5IH07CisgICAgfQorCisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE9wZXJhdGluZ0RhdGUmIG90aGVyKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fbW9udGhEYXkgPT0gb3RoZXIubV9tb250aERheSAmJiBtX21v
bnRoID09IG90aGVyLm1fbW9udGggJiYgbV95ZWFyID09IG90aGVyLm1feWVhcjsKKyAgICB9CisK
KyAgICBib29sIG9wZXJhdG9yPChjb25zdCBPcGVyYXRpbmdEYXRlJiBvdGhlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBzZWNvbmRzU2luY2VFcG9jaCgpIDwgb3RoZXIuc2Vjb25kc1Np
bmNlRXBvY2goKTsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgT3BlcmF0aW5n
RGF0ZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gc2Vjb25kc1NpbmNlRXBv
Y2goKSA8PSBvdGhlci5zZWNvbmRzU2luY2VFcG9jaCgpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBPcGVyYXRpbmdEYXRlKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBtb250aERheSkKKyAgICAg
ICAgOiBtX3llYXIoeWVhcikKKyAgICAgICAgLCBtX21vbnRoKG1vbnRoKQorICAgICAgICAsIG1f
bW9udGhEYXkobW9udGhEYXkpCisgICAgeyB9CisKKyAgICBpbnQgbV95ZWFyIHsgMCB9OworICAg
IGludCBtX21vbnRoIHsgMCB9OyAvLyBbMCwgMTFdLgorICAgIGludCBtX21vbnRoRGF5IHsgMCB9
OyAvLyBbMSwgMzFdLgorfTsKKworc3RhdGljIFZlY3RvcjxPcGVyYXRpbmdEYXRlPiBtZXJnZU9w
ZXJhdGluZ0RhdGVzKGNvbnN0IFZlY3RvcjxPcGVyYXRpbmdEYXRlPiYgZXhpc3RpbmdEYXRlcywg
VmVjdG9yPE9wZXJhdGluZ0RhdGU+JiYgbmV3RGF0ZXMpCit7CisgICAgaWYgKGV4aXN0aW5nRGF0
ZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gV1RGTW92ZShuZXdEYXRlcyk7CisKKyAgICBW
ZWN0b3I8T3BlcmF0aW5nRGF0ZT4gbWVyZ2VkRGF0ZXMoZXhpc3RpbmdEYXRlcy5zaXplKCkgKyBu
ZXdEYXRlcy5zaXplKCkpOworCisgICAgLy8gTWVyZ2UgdGhlIHR3byBzb3J0ZWQgdmVjdG9ycyBv
ZiBkYXRlcy4KKyAgICBzdGQ6Om1lcmdlKGV4aXN0aW5nRGF0ZXMuYmVnaW4oKSwgZXhpc3RpbmdE
YXRlcy5lbmQoKSwgbmV3RGF0ZXMuYmVnaW4oKSwgbmV3RGF0ZXMuZW5kKCksIG1lcmdlZERhdGVz
LmJlZ2luKCkpOworICAgIC8vIFJlbW92ZSBkdXBsaWNhdGUgZGF0ZXMuCisgICAgcmVtb3ZlUmVw
ZWF0ZWRFbGVtZW50cyhtZXJnZWREYXRlcyk7CisKKyAgICAvLyBEcm9wIG9sZCBkYXRlcyB1bnRp
bCB0aGUgVmVjdG9yIHNpemUgcmVhY2hlcyBvcGVyYXRpbmdEYXRlc1dpbmRvdy4KKyAgICB3aGls
ZSAobWVyZ2VkRGF0ZXMuc2l6ZSgpID4gb3BlcmF0aW5nRGF0ZXNXaW5kb3cpCisgICAgICAgIG1l
cmdlZERhdGVzLnJlbW92ZSgwKTsKKworICAgIHJldHVybiBtZXJnZWREYXRlczsKK30KKwogV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBVcGRhdGVD
b29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlciYmIHVwZGF0ZUNvb2tpZVBhcnRpdGlv
bmluZ0ZvckRvbWFpbnNIYW5kbGVyKQogICAgIDogbV9zdGF0aXN0aWNzUXVldWUoV29ya1F1ZXVl
OjpjcmVhdGUoIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBQcm9jZXNzIERhdGEgUXVl
dWUiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OlV0aWxpdHkpKQog
ICAgICwgbV9wZXJzaXN0ZW50U3RvcmFnZSgqdGhpcywgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSkKQEAgLTQ3OCwxOSArNTUwLDE3IEBAIHN0ZDo6dW5pcXVlX3B0cjxLZXllZEVuY29k
ZXI+IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlRW5jb2RlckZyb21ECiAg
ICAgICAgIG9yaWdpbi52YWx1ZS5lbmNvZGUoZW5jb2RlcklubmVyKTsKICAgICB9KTsKIAotICAg
IGVuY29kZXItPmVuY29kZU9iamVjdHMoIm9wZXJhdGluZ0RhdGVzIiwgbV9vcGVyYXRpbmdEYXRl
cy5iZWdpbigpLCBtX29wZXJhdGluZ0RhdGVzLmVuZCgpLCBbXShLZXllZEVuY29kZXImIGVuY29k
ZXJJbm5lciwgV2FsbFRpbWUgZGF0ZSkgeworICAgIGVuY29kZXItPmVuY29kZU9iamVjdHMoIm9w
ZXJhdGluZ0RhdGVzIiwgbV9vcGVyYXRpbmdEYXRlcy5iZWdpbigpLCBtX29wZXJhdGluZ0RhdGVz
LmVuZCgpLCBbXShLZXllZEVuY29kZXImIGVuY29kZXJJbm5lciwgT3BlcmF0aW5nRGF0ZSBkYXRl
KSB7CiAgICAgICAgIGVuY29kZXJJbm5lci5lbmNvZGVEb3VibGUoImRhdGUiLCBkYXRlLnNlY29u
ZHNTaW5jZUVwb2NoKCkudmFsdWUoKSk7CiAgICAgfSk7CiAKICAgICByZXR1cm4gZW5jb2RlcjsK
IH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc2V0RGF0YUZyb21E
ZWNvZGVyKEtleWVkRGVjb2RlciYgZGVjb2RlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjptZXJnZVdpdGhEYXRhRnJvbURlY29kZXIoS2V5ZWREZWNvZGVyJiBkZWNvZGVy
KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgY2xlYXJJbk1lbW9y
eSgpOwotCiAgICAgdW5zaWduZWQgdmVyc2lvbk9uRGlzazsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlVUludDMyKCJ2ZXJzaW9uIiwgdmVyc2lvbk9uRGlzaykpCiAgICAgICAgIHJldHVybjsKQEAg
LTUxMiwyOSArNTgyLDIzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpy
ZXNldERhdGFGcm9tRGVjb2RlcihLZXllZERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFzdWNj
ZWVkZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxTdHJpbmc+IHByZXZhbGVudFJl
c291cmNlRG9tYWluc1dpdGhvdXRVc2VySW50ZXJhY3Rpb247Ci0gICAgcHJldmFsZW50UmVzb3Vy
Y2VEb21haW5zV2l0aG91dFVzZXJJbnRlcmFjdGlvbi5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxv
YWRlZFN0YXRpc3RpY3Muc2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8mIHN0YXRpc3RpY3MgOiBsb2Fk
ZWRTdGF0aXN0aWNzKSB7Ci0gICAgICAgIGlmIChzdGF0aXN0aWNzLmlzUHJldmFsZW50UmVzb3Vy
Y2UgJiYgIXN0YXRpc3RpY3MuaGFkVXNlckludGVyYWN0aW9uKSB7Ci0gICAgICAgICAgICBwcmV2
YWxlbnRSZXNvdXJjZURvbWFpbnNXaXRob3V0VXNlckludGVyYWN0aW9uLnVuY2hlY2tlZEFwcGVu
ZChzdGF0aXN0aWNzLmhpZ2hMZXZlbERvbWFpbik7Ci0gICAgICAgICAgICBzdGF0aXN0aWNzLmlz
TWFya2VkRm9yQ29va2llUGFydGl0aW9uaW5nID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBt
X3Jlc291cmNlU3RhdGlzdGljc01hcC5hZGQoc3RhdGlzdGljcy5oaWdoTGV2ZWxEb21haW4sIFdU
Rk1vdmUoc3RhdGlzdGljcykpOwotICAgIH0KKyAgICBtZXJnZVN0YXRpc3RpY3MoV1RGTW92ZShs
b2FkZWRTdGF0aXN0aWNzKSk7CisgICAgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCk7CiAKLSAg
ICBzdWNjZWVkZWQgPSBkZWNvZGVyLmRlY29kZU9iamVjdHMoIm9wZXJhdGluZ0RhdGVzIiwgbV9v
cGVyYXRpbmdEYXRlcywgW10oS2V5ZWREZWNvZGVyJiBkZWNvZGVyLCBXYWxsVGltZSYgd2FsbFRp
bWUpIHsKKyAgICBWZWN0b3I8T3BlcmF0aW5nRGF0ZT4gb3BlcmF0aW5nRGF0ZXM7CisgICAgc3Vj
Y2VlZGVkID0gZGVjb2Rlci5kZWNvZGVPYmplY3RzKCJvcGVyYXRpbmdEYXRlcyIsIG9wZXJhdGlu
Z0RhdGVzLCBbXShLZXllZERlY29kZXImIGRlY29kZXIsIE9wZXJhdGluZ0RhdGUmIGRhdGUpIHsK
ICAgICAgICAgZG91YmxlIHZhbHVlOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRG91Ymxl
KCJkYXRlIiwgdmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHdh
bGxUaW1lID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHZhbHVlKTsKKyAgICAgICAgZGF0ZSA9
IE9wZXJhdGluZ0RhdGU6OmZyb21XYWxsVGltZShXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHModmFs
dWUpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSk7CiAKICAgICBpZiAoIXN1Y2NlZWRl
ZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9t
YWlucyh7IH0sIHByZXZhbGVudFJlc291cmNlRG9tYWluc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24s
IFNob3VsZENsZWFyRmlyc3Q6Olllcyk7CisgICAgbV9vcGVyYXRpbmdEYXRlcyA9IG1lcmdlT3Bl
cmF0aW5nRGF0ZXMobV9vcGVyYXRpbmdEYXRlcywgV1RGTW92ZShvcGVyYXRpbmdEYXRlcykpOwog
fQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJJbk1lbW9yeSgp
CkBAIC02NjAsMTkgKzcyNCwyMCBAQCBWZWN0b3I8U3RyaW5nPiBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zVG9SZQogCiB2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRl
SWZOZWNlc3NhcnkoKQogewotICAgIGlmICghbV9vcGVyYXRpbmdEYXRlcy5pc0VtcHR5KCkgJiYg
KFdhbGxUaW1lOjpub3coKSAtIG1fb3BlcmF0aW5nRGF0ZXMubGFzdCgpIDwgMjRfaCkpCisgICAg
YXV0byB0b2RheSA9IE9wZXJhdGluZ0RhdGU6OnRvZGF5KCk7CisgICAgaWYgKCFtX29wZXJhdGlu
Z0RhdGVzLmlzRW1wdHkoKSAmJiB0b2RheSA8PSBtX29wZXJhdGluZ0RhdGVzLmxhc3QoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgd2hpbGUgKG1fb3BlcmF0aW5nRGF0ZXMuc2l6ZSgpID49IG9w
ZXJhdGluZ0RhdGVzV2luZG93KQotICAgICAgICBtX29wZXJhdGluZ0RhdGVzLnJlbW92ZUZpcnN0
KCk7CisgICAgICAgIG1fb3BlcmF0aW5nRGF0ZXMucmVtb3ZlKDApOwogCi0gICAgbV9vcGVyYXRp
bmdEYXRlcy5hcHBlbmQoV2FsbFRpbWU6Om5vdygpKTsKKyAgICBtX29wZXJhdGluZ0RhdGVzLmFw
cGVuZCh0b2RheSk7CiB9CiAKIGJvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpo
YXNTdGF0aXN0aWNzRXhwaXJlZChjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJj
ZVN0YXRpc3RpYykgY29uc3QKIHsKICAgICBpZiAobV9vcGVyYXRpbmdEYXRlcy5zaXplKCkgPj0g
b3BlcmF0aW5nRGF0ZXNXaW5kb3cpIHsKLSAgICAgICAgaWYgKHJlc291cmNlU3RhdGlzdGljLm1v
c3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lIDwgbV9vcGVyYXRpbmdEYXRlcy5maXJzdCgpKQor
ICAgICAgICBpZiAoT3BlcmF0aW5nRGF0ZTo6ZnJvbVdhbGxUaW1lKHJlc291cmNlU3RhdGlzdGlj
Lm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKSA8IG1fb3BlcmF0aW5nRGF0ZXMuZmlyc3Qo
KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmlu
ZGV4IDAyNWUzZGFhYjEwZWQzZmYyZTRkMTc3ZGMxOWY3OWJmMWIzMDhlMzEuLmMxZTY1MTE3MmZj
NmQwNTQ5ZDgzMzQ1NTFjNmI2YjcyNmY2ZTEzZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTUx
LDYgKzUxLDcgQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCitjbGFzcyBPcGVyYXRpbmdEYXRlOwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5Owog
CiBlbnVtIGNsYXNzIFNob3VsZENsZWFyRmlyc3Q7CkBAIC0xMTMsNyArMTE0LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKCk7CiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6S2V5ZWRFbmNvZGVyPiBjcmVhdGVFbmNvZGVyRnJvbURhdGEo
KSBjb25zdDsKLSAgICB2b2lkIHJlc2V0RGF0YUZyb21EZWNvZGVyKFdlYkNvcmU6OktleWVkRGVj
b2RlciYpOworICAgIHZvaWQgbWVyZ2VXaXRoRGF0YUZyb21EZWNvZGVyKFdlYkNvcmU6OktleWVk
RGVjb2RlciYpOwogICAgIHZvaWQgY2xlYXJJbk1lbW9yeSgpOwogICAgIHZvaWQgZ3JhbmRmYXRo
ZXJFeGlzdGluZ1dlYnNpdGVEYXRhKCk7CiAgICAgCkBAIC0xNjUsNyArMTY2LDcgQEAgcHJpdmF0
ZToKICNlbmRpZgogICAgIFJlZjxXVEY6OldvcmtRdWV1ZT4gbV9zdGF0aXN0aWNzUXVldWU7CiAg
ICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlIG1fcGVyc2lzdGVudFN0
b3JhZ2U7Ci0gICAgRGVxdWU8V1RGOjpXYWxsVGltZT4gbV9vcGVyYXRpbmdEYXRlczsKKyAgICBW
ZWN0b3I8T3BlcmF0aW5nRGF0ZT4gbV9vcGVyYXRpbmdEYXRlczsKIAogICAgIFVwZGF0ZUNvb2tp
ZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyIG1fdXBkYXRlQ29va2llUGFydGl0aW9uaW5n
Rm9yRG9tYWluc0hhbmRsZXI7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315398</attachid>
            <date>2017-07-13 21:15:01 -0700</date>
            <delta_ts>2017-07-13 23:39:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174487-20170713211500.patch</filename>
            <type>text/plain</type>
            <size>11686</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5NDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGMyNjFkZThhZTY0ZjQ4ZDEy
ZmVkNzM3ZGEwMjFmODhmNTFmNWI5YTAuLmM3MzM4NmQ3MjlhMTZkYTIwZjUyZDVmZmYyNmMwZTg5
MDQ0OWVkOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTctMDctMTMgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBCZXR0ZXIgZGVhbCB3aXRoIGNoYW5n
ZXMgdG8gdGhlIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBmaWxlIG9uIGRpc2sKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDQ4NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUncyByZXNldERhdGFGcm9tRGVjb2RlcigpIHRvIG1lcmdl
V2l0aERhdGFGcm9tRGVjb2RlcigpCisgICAgICAgIGFuZCB1cGRhdGUgaXQgc28gdGhhdCBpdCBh
Y3R1YWwgbWVyZ2VzIHRoZSBkYXRhIGZyb20gdGhlIGRpc2sgd2l0aCB0aGUgb25lIHdlIGhhdmUg
aW4gbWVtb3J5LAorICAgICAgICBpbnN0ZWFkIG9mIHJlcGxhY2luZyBpdC4gVGhpcyBhdm9pZCBk
YXRhIGxvc3MuCisKKyAgICAgICAgV2UgbGV2ZXJhZ2UgdGhlIGV4aXN0aW5nIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6bWVyZ2VTdGF0aXN0aWNzKCkgdG8gbWVyZ2UgdGhlCisgICAg
ICAgIHN0YXRpc3RpY3MuCisKKyAgICAgICAgVG8gZmFjaWxpYXRlIG1lcmdpbmcgdGhlIG9wZXJh
dGluZyBkYXRlcywgdGhleSBhcmUgbm93IHJlcHJlc2VudGVkIGFzIE9wZXJhdGluZ0RhdGUgb2Jq
ZWN0cworICAgICAgICBpbnN0ZWFkIG9mIFdhbGxUaW1lIG9iamVjdHMuIE9wZXJhdGluZ0RhdGUg
b25seSBpbmNsdWRlIGRhdGUgcHJlY2lzaW9uLCBubyB0aW1lIGluZm9ybWF0aW9uLgorICAgICAg
ICBBcyBhIHJlc3VsdCwgdGhlIG1lcmdlIDIgdmVjdG9ycyBvZiBPcGVyYXRpbmdEYXRlIG9iamVj
dHMsIHdlIGNhbjoKKyAgICAgICAgMS4gTWVyZ2UgdGhlIDIgc29ydGVkIHZlY3RvcnMgKHVzaW5n
IHN0ZDo6bWVyZ2UoKSkKKyAgICAgICAgMi4gR2V0IHJpZCBvZiBkdXBsaWNhdGVzIChlYXN5IGJl
Y2F1c2Ugb2YgZGF0ZS1sZXZlbCBwcmVjaXNpb24pCisgICAgICAgIDMuIERyb3Agb2xkIGRhdGVz
IHVudGlsIHRoZSB2ZWN0b3IgaGFzIGF0IG1vc3QgMzAgaXRlbXMuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3Jh
Z2U6OnJlZnJlc2hNZW1vcnlTdG9yZUZyb21EaXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpwb3B1bGF0ZU1lbW9yeVN0b3JlRnJv
bURpc2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpPcGVyYXRpbmdEYXRlOjpmcm9tV2FsbFRpbWUpOgor
ICAgICAgICAoV2ViS2l0OjpPcGVyYXRpbmdEYXRlOjp0b2RheSk6CisgICAgICAgIChXZWJLaXQ6
Ok9wZXJhdGluZ0RhdGU6OnNlY29uZHNTaW5jZUVwb2NoKToKKyAgICAgICAgKFdlYktpdDo6T3Bl
cmF0aW5nRGF0ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJLaXQ6Ok9wZXJhdGluZ0RhdGU6
Om9wZXJhdG9yPCk6CisgICAgICAgIChXZWJLaXQ6Ok9wZXJhdGluZ0RhdGU6Om9wZXJhdG9yPD0p
OgorICAgICAgICAoV2ViS2l0OjpPcGVyYXRpbmdEYXRlOjpPcGVyYXRpbmdEYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6bWVyZ2VPcGVyYXRpbmdEYXRlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlRW5jb2RlckZyb21EYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptZXJnZVdpdGhEYXRh
RnJvbURlY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmluY2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNTdGF0aXN0aWNzRXhw
aXJlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oOgorCiAyMDE3LTA3LTEzICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVtb3ZlZCBlbXB0eSBwcm9qZWN0IGRpcmVjdG9yaWVzIGxlZnQgYmVoaW5kIGFmdGVy
IHRoZSByZW5hbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2Uv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9y
YWdlLmNwcAppbmRleCAyY2FlMDk4MjE3NzYzY2UxYWNkNjg0MDE5M2I1MGM1ZDM1MTI5M2IwLi4x
ODJmNjlhZDljYjkyOGUxZTFmMTllNGM3NDkyNTI3MmU1MDE1NGEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0
ZW50U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwCkBAIC0xNjYsNyArMTY2LDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OnJlZnJlc2hN
ZW1vcnlTdG9yZUZyb21EaXNrKCkKICAgICBpZiAoIWRlY29kZXIpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fbWVtb3J5U3RvcmUucmVzZXREYXRhRnJvbURlY29kZXIoKmRlY29kZXIpOworICAg
IG1fbWVtb3J5U3RvcmUubWVyZ2VXaXRoRGF0YUZyb21EZWNvZGVyKCpkZWNvZGVyKTsKICAgICBt
X2xhc3RTdGF0aXN0aWNzRmlsZVN5bmNUaW1lID0gcmVhZFRpbWU7CiB9CiAKQEAgLTE5Myw3ICsx
OTMsOCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6cG9w
dWxhdGVNZW1vcnlTdG9yZUZyb21EaXNrKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IG1fbWVtb3J5U3RvcmUucmVzZXREYXRhRnJvbURlY29kZXIoKmRlY29kZXIpOworICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UobV9tZW1vcnlTdG9yZS5pc0VtcHR5KCksICJUaGlzIGlzIHRoZSBpbml0
aWFsIGltcG9ydCBzbyB0aGUgc3RvcmUgc2hvdWxkIGJlIGVtcHR5Iik7CisgICAgbV9tZW1vcnlT
dG9yZS5tZXJnZVdpdGhEYXRhRnJvbURlY29kZXIoKmRlY29kZXIpOwogCiAgICAgbV9sYXN0U3Rh
dGlzdGljc0ZpbGVTeW5jVGltZSA9IHJlYWRUaW1lOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRl
eCAwN2IxYzZiNmMwZDQxYjM5NzdiODQwMWE4ZTFjNmUyZWUxNjQxZjU5Li4xYmEzNzI5OWVhNTY0
NzkwYTk5ZTU3NWFjYzVmZTgyZTBjM2JlMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0tleWVkQ29kaW5nLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhy
ZWFkQ29waWVyLmg+CisjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL01h
dGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtNzcsNiAr
NzgsNzcgQEAgc3RhdGljIGNvbnN0IE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+JiBkYXRhVHlw
ZXNUb1JlbW92ZSgpCiAgICAgcmV0dXJuIGRhdGFUeXBlczsKIH0KIAorY2xhc3MgT3BlcmF0aW5n
RGF0ZSB7CitwdWJsaWM6CisgICAgT3BlcmF0aW5nRGF0ZSgpID0gZGVmYXVsdDsKKworICAgIHN0
YXRpYyBPcGVyYXRpbmdEYXRlIGZyb21XYWxsVGltZShXYWxsVGltZSB0aW1lKQorICAgIHsKKyAg
ICAgICAgZG91YmxlIG1zID0gdGltZS5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kcygp
OworICAgICAgICBpbnQgeWVhciA9IG1zVG9ZZWFyKG1zKTsKKyAgICAgICAgaW50IHllYXJEYXkg
PSBkYXlJblllYXIobXMsIHllYXIpOworICAgICAgICBpbnQgbW9udGggPSBtb250aEZyb21EYXlJ
blllYXIoeWVhckRheSwgaXNMZWFwWWVhcih5ZWFyKSk7CisgICAgICAgIGludCBtb250aERheSA9
IGRheUluTW9udGhGcm9tRGF5SW5ZZWFyKHllYXJEYXksIGlzTGVhcFllYXIoeWVhcikpOworCisg
ICAgICAgIHJldHVybiBPcGVyYXRpbmdEYXRlIHsgeWVhciwgbW9udGgsIG1vbnRoRGF5IH07Cisg
ICAgfQorCisgICAgc3RhdGljIE9wZXJhdGluZ0RhdGUgdG9kYXkoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIE9wZXJhdGluZ0RhdGU6OmZyb21XYWxsVGltZShXYWxsVGltZTo6bm93KCkpOworICAg
IH0KKworICAgIFNlY29uZHMgc2Vjb25kc1NpbmNlRXBvY2goKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFNlY29uZHMgeyBkYXRlVG9EYXlzRnJvbTE5NzAobV95ZWFyLCBtX21vbnRoLCBt
X21vbnRoRGF5KSAqIHNlY29uZHNQZXJEYXkgfTsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgT3BlcmF0aW5nRGF0ZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9tb250aERheSA9PSBvdGhlci5tX21vbnRoRGF5ICYmIG1fbW9udGggPT0gb3RoZXIubV9t
b250aCAmJiBtX3llYXIgPT0gb3RoZXIubV95ZWFyOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0
b3I8KGNvbnN0IE9wZXJhdGluZ0RhdGUmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIHNlY29uZHNTaW5jZUVwb2NoKCkgPCBvdGhlci5zZWNvbmRzU2luY2VFcG9jaCgpOworICAg
IH0KKworICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBPcGVyYXRpbmdEYXRlJiBvdGhlcikgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBzZWNvbmRzU2luY2VFcG9jaCgpIDw9IG90aGVyLnNl
Y29uZHNTaW5jZUVwb2NoKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIE9wZXJhdGluZ0RhdGUo
aW50IHllYXIsIGludCBtb250aCwgaW50IG1vbnRoRGF5KQorICAgICAgICA6IG1feWVhcih5ZWFy
KQorICAgICAgICAsIG1fbW9udGgobW9udGgpCisgICAgICAgICwgbV9tb250aERheShtb250aERh
eSkKKyAgICB7IH0KKworICAgIGludCBtX3llYXIgeyAwIH07CisgICAgaW50IG1fbW9udGggeyAw
IH07IC8vIFswLCAxMV0uCisgICAgaW50IG1fbW9udGhEYXkgeyAwIH07IC8vIFsxLCAzMV0uCit9
OworCitzdGF0aWMgVmVjdG9yPE9wZXJhdGluZ0RhdGU+IG1lcmdlT3BlcmF0aW5nRGF0ZXMoY29u
c3QgVmVjdG9yPE9wZXJhdGluZ0RhdGU+JiBleGlzdGluZ0RhdGVzLCBWZWN0b3I8T3BlcmF0aW5n
RGF0ZT4mJiBuZXdEYXRlcykKK3sKKyAgICBpZiAoZXhpc3RpbmdEYXRlcy5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBXVEZNb3ZlKG5ld0RhdGVzKTsKKworICAgIFZlY3RvcjxPcGVyYXRpbmdE
YXRlPiBtZXJnZWREYXRlcyhleGlzdGluZ0RhdGVzLnNpemUoKSArIG5ld0RhdGVzLnNpemUoKSk7
CisKKyAgICAvLyBNZXJnZSB0aGUgdHdvIHNvcnRlZCB2ZWN0b3JzIG9mIGRhdGVzLgorICAgIHN0
ZDo6bWVyZ2UoZXhpc3RpbmdEYXRlcy5iZWdpbigpLCBleGlzdGluZ0RhdGVzLmVuZCgpLCBuZXdE
YXRlcy5iZWdpbigpLCBuZXdEYXRlcy5lbmQoKSwgbWVyZ2VkRGF0ZXMuYmVnaW4oKSk7CisgICAg
Ly8gUmVtb3ZlIGR1cGxpY2F0ZSBkYXRlcy4KKyAgICByZW1vdmVSZXBlYXRlZEVsZW1lbnRzKG1l
cmdlZERhdGVzKTsKKworICAgIC8vIERyb3Agb2xkIGRhdGVzIHVudGlsIHRoZSBWZWN0b3Igc2l6
ZSByZWFjaGVzIG9wZXJhdGluZ0RhdGVzV2luZG93LgorICAgIHdoaWxlIChtZXJnZWREYXRlcy5z
aXplKCkgPiBvcGVyYXRpbmdEYXRlc1dpbmRvdykKKyAgICAgICAgbWVyZ2VkRGF0ZXMucmVtb3Zl
KDApOworCisgICAgcmV0dXJuIG1lcmdlZERhdGVzOworfQorCiBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBTdHJpbmcm
IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFVwZGF0ZUNvb2tpZVBhcnRpdGlvbmlu
Z0ZvckRvbWFpbnNIYW5kbGVyJiYgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWluc0hh
bmRsZXIpCiAgICAgOiBtX3N0YXRpc3RpY3NRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIFByb2Nlc3MgRGF0YSBRdWV1ZSIsIFdvcmtRdWV1ZTo6
VHlwZTo6U2VyaWFsLCBXb3JrUXVldWU6OlFPUzo6VXRpbGl0eSkpCiAgICAgLCBtX3BlcnNpc3Rl
bnRTdG9yYWdlKCp0aGlzLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KQpAQCAtNDc4
LDE5ICs1NTAsMTcgQEAgc3RkOjp1bmlxdWVfcHRyPEtleWVkRW5jb2Rlcj4gV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGVFbmNvZGVyRnJvbUQKICAgICAgICAgb3JpZ2luLnZh
bHVlLmVuY29kZShlbmNvZGVySW5uZXIpOwogICAgIH0pOwogCi0gICAgZW5jb2Rlci0+ZW5jb2Rl
T2JqZWN0cygib3BlcmF0aW5nRGF0ZXMiLCBtX29wZXJhdGluZ0RhdGVzLmJlZ2luKCksIG1fb3Bl
cmF0aW5nRGF0ZXMuZW5kKCksIFtdKEtleWVkRW5jb2RlciYgZW5jb2RlcklubmVyLCBXYWxsVGlt
ZSBkYXRlKSB7CisgICAgZW5jb2Rlci0+ZW5jb2RlT2JqZWN0cygib3BlcmF0aW5nRGF0ZXMiLCBt
X29wZXJhdGluZ0RhdGVzLmJlZ2luKCksIG1fb3BlcmF0aW5nRGF0ZXMuZW5kKCksIFtdKEtleWVk
RW5jb2RlciYgZW5jb2RlcklubmVyLCBPcGVyYXRpbmdEYXRlIGRhdGUpIHsKICAgICAgICAgZW5j
b2RlcklubmVyLmVuY29kZURvdWJsZSgiZGF0ZSIsIGRhdGUuc2Vjb25kc1NpbmNlRXBvY2goKS52
YWx1ZSgpKTsKICAgICB9KTsKIAogICAgIHJldHVybiBlbmNvZGVyOwogfQogCi12b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzZXREYXRhRnJvbURlY29kZXIoS2V5ZWREZWNv
ZGVyJiBkZWNvZGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1lcmdl
V2l0aERhdGFGcm9tRGVjb2RlcihLZXllZERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBjbGVhckluTWVtb3J5KCk7Ci0KICAgICB1bnNp
Z25lZCB2ZXJzaW9uT25EaXNrOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGVVSW50MzIoInZlcnNp
b24iLCB2ZXJzaW9uT25EaXNrKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTEyLDI5ICs1ODIsMjMg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc2V0RGF0YUZyb21EZWNv
ZGVyKEtleWVkRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIXN1Y2NlZWRlZCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgVmVjdG9yPFN0cmluZz4gcHJldmFsZW50UmVzb3VyY2VEb21haW5zV2l0
aG91dFVzZXJJbnRlcmFjdGlvbjsKLSAgICBwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnNXaXRob3V0
VXNlckludGVyYWN0aW9uLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobG9hZGVkU3RhdGlzdGljcy5z
aXplKCkpOwotICAgIGZvciAoYXV0byYgc3RhdGlzdGljcyA6IGxvYWRlZFN0YXRpc3RpY3MpIHsK
LSAgICAgICAgaWYgKHN0YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNvdXJjZSAmJiAhc3RhdGlzdGlj
cy5oYWRVc2VySW50ZXJhY3Rpb24pIHsKLSAgICAgICAgICAgIHByZXZhbGVudFJlc291cmNlRG9t
YWluc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24udW5jaGVja2VkQXBwZW5kKHN0YXRpc3RpY3MuaGln
aExldmVsRG9tYWluKTsKLSAgICAgICAgICAgIHN0YXRpc3RpY3MuaXNNYXJrZWRGb3JDb29raWVQ
YXJ0aXRpb25pbmcgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIG1fcmVzb3VyY2VTdGF0aXN0
aWNzTWFwLmFkZChzdGF0aXN0aWNzLmhpZ2hMZXZlbERvbWFpbiwgV1RGTW92ZShzdGF0aXN0aWNz
KSk7Ci0gICAgfQorICAgIG1lcmdlU3RhdGlzdGljcyhXVEZNb3ZlKGxvYWRlZFN0YXRpc3RpY3Mp
KTsKKyAgICB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmcoKTsKIAotICAgIHN1Y2NlZWRlZCA9IGRl
Y29kZXIuZGVjb2RlT2JqZWN0cygib3BlcmF0aW5nRGF0ZXMiLCBtX29wZXJhdGluZ0RhdGVzLCBb
XShLZXllZERlY29kZXImIGRlY29kZXIsIFdhbGxUaW1lJiB3YWxsVGltZSkgeworICAgIFZlY3Rv
cjxPcGVyYXRpbmdEYXRlPiBvcGVyYXRpbmdEYXRlczsKKyAgICBzdWNjZWVkZWQgPSBkZWNvZGVy
LmRlY29kZU9iamVjdHMoIm9wZXJhdGluZ0RhdGVzIiwgb3BlcmF0aW5nRGF0ZXMsIFtdKEtleWVk
RGVjb2RlciYgZGVjb2RlciwgT3BlcmF0aW5nRGF0ZSYgZGF0ZSkgewogICAgICAgICBkb3VibGUg
dmFsdWU7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVEb3VibGUoImRhdGUiLCB2YWx1ZSkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgd2FsbFRpbWUgPSBXYWxsVGlt
ZTo6ZnJvbVJhd1NlY29uZHModmFsdWUpOworICAgICAgICBkYXRlID0gT3BlcmF0aW5nRGF0ZTo6
ZnJvbVdhbGxUaW1lKFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyh2YWx1ZSkpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9KTsKIAogICAgIGlmICghc3VjY2VlZGVkKQogICAgICAgICByZXR1
cm47CiAKLSAgICB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zKHsgfSwgcHJldmFs
ZW50UmVzb3VyY2VEb21haW5zV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgU2hvdWxkQ2xlYXJGaXJz
dDo6WWVzKTsKKyAgICBtX29wZXJhdGluZ0RhdGVzID0gbWVyZ2VPcGVyYXRpbmdEYXRlcyhtX29w
ZXJhdGluZ0RhdGVzLCBXVEZNb3ZlKG9wZXJhdGluZ0RhdGVzKSk7CiB9CiAKIHZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhckluTWVtb3J5KCkKQEAgLTY2MCwxOSArNzI0
LDIwIEBAIFZlY3RvcjxTdHJpbmc+IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dG9w
UHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNUb1JlCiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjppbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgpCiB7
Ci0gICAgaWYgKCFtX29wZXJhdGluZ0RhdGVzLmlzRW1wdHkoKSAmJiAoV2FsbFRpbWU6Om5vdygp
IC0gbV9vcGVyYXRpbmdEYXRlcy5sYXN0KCkgPCAyNF9oKSkKKyAgICBhdXRvIHRvZGF5ID0gT3Bl
cmF0aW5nRGF0ZTo6dG9kYXkoKTsKKyAgICBpZiAoIW1fb3BlcmF0aW5nRGF0ZXMuaXNFbXB0eSgp
ICYmIHRvZGF5IDw9IG1fb3BlcmF0aW5nRGF0ZXMubGFzdCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICB3aGlsZSAobV9vcGVyYXRpbmdEYXRlcy5zaXplKCkgPj0gb3BlcmF0aW5nRGF0ZXNXaW5k
b3cpCi0gICAgICAgIG1fb3BlcmF0aW5nRGF0ZXMucmVtb3ZlRmlyc3QoKTsKKyAgICAgICAgbV9v
cGVyYXRpbmdEYXRlcy5yZW1vdmUoMCk7CiAKLSAgICBtX29wZXJhdGluZ0RhdGVzLmFwcGVuZChX
YWxsVGltZTo6bm93KCkpOworICAgIG1fb3BlcmF0aW5nRGF0ZXMuYXBwZW5kKHRvZGF5KTsKIH0K
IAogYm9vbCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0YXRpc3RpY3NFeHBp
cmVkKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHJlc291cmNlU3RhdGlzdGljKSBjb25z
dAogewogICAgIGlmIChtX29wZXJhdGluZ0RhdGVzLnNpemUoKSA+PSBvcGVyYXRpbmdEYXRlc1dp
bmRvdykgewotICAgICAgICBpZiAocmVzb3VyY2VTdGF0aXN0aWMubW9zdFJlY2VudFVzZXJJbnRl
cmFjdGlvblRpbWUgPCBtX29wZXJhdGluZ0RhdGVzLmZpcnN0KCkpCisgICAgICAgIGlmIChPcGVy
YXRpbmdEYXRlOjpmcm9tV2FsbFRpbWUocmVzb3VyY2VTdGF0aXN0aWMubW9zdFJlY2VudFVzZXJJ
bnRlcmFjdGlvblRpbWUpIDwgbV9vcGVyYXRpbmdEYXRlcy5maXJzdCgpKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDAyNWUzZGFhYjEwZWQz
ZmYyZTRkMTc3ZGMxOWY3OWJmMWIzMDhlMzEuLmMxZTY1MTE3MmZjNmQwNTQ5ZDgzMzQ1NTFjNmI2
YjcyNmY2ZTEzZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC01MSw2ICs1MSw3IEBAIHN0cnVjdCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgT3Bl
cmF0aW5nRGF0ZTsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIAogZW51bSBjbGFzcyBTaG91bGRD
bGVhckZpcnN0OwpAQCAtMTEzLDcgKzExNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0UGFy
YW1ldGVyc1RvRGVmYXVsdFZhbHVlcygpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OktleWVkRW5jb2Rlcj4gY3JlYXRlRW5jb2RlckZyb21EYXRhKCkgY29uc3Q7Ci0gICAgdm9pZCBy
ZXNldERhdGFGcm9tRGVjb2RlcihXZWJDb3JlOjpLZXllZERlY29kZXImKTsKKyAgICB2b2lkIG1l
cmdlV2l0aERhdGFGcm9tRGVjb2RlcihXZWJDb3JlOjpLZXllZERlY29kZXImKTsKICAgICB2b2lk
IGNsZWFySW5NZW1vcnkoKTsKICAgICB2b2lkIGdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0
YSgpOwogICAgIApAQCAtMTY1LDcgKzE2Niw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBSZWY8
V1RGOjpXb3JrUXVldWU+IG1fc3RhdGlzdGljc1F1ZXVlOwogICAgIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NQZXJzaXN0ZW50U3RvcmFnZSBtX3BlcnNpc3RlbnRTdG9yYWdlOwotICAgIERlcXVlPFdU
Rjo6V2FsbFRpbWU+IG1fb3BlcmF0aW5nRGF0ZXM7CisgICAgVmVjdG9yPE9wZXJhdGluZ0RhdGU+
IG1fb3BlcmF0aW5nRGF0ZXM7CiAKICAgICBVcGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21h
aW5zSGFuZGxlciBtX3VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyOwog
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>