<?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>65123</bug_id>
          
          <creation_ts>2011-07-25 11:09:02 -0700</creation_ts>
          <short_desc>Font loading during layout can cause layout code to be re-entered via resource load delegate</short_desc>
          <delta_ts>2011-11-11 08:36:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>441752</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-07-25 11:09:02 -0700</bug_when>
    <thetext>Font loading during layout can cause layout code to be re-entered via resource load delegate

Here is an example:

#import &lt;Foundation/Foundation.h&gt;
#import &lt;WebKit/WebKit.h&gt;

@interface ResourceLoadDelegate : NSObject {
}
@end

@implementation ResourceLoadDelegate

- (NSURLRequest *)webView:(WebView *)sender resource:(id)identifier willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse fromDataSource:(WebDataSource *)dataSource
{
    if ([[[request URL] path] hasSuffix:@&quot;.ttf&quot;]) {
        DOMElement *documentElement = [[[sender mainFrame] DOMDocument] documentElement];
        [[documentElement style] setProperty:@&quot;display&quot; value:@&quot;none&quot; priority:@&quot;&quot;];
        [documentElement offsetTop];
    }
    return request;
}

@end

int main (int argc, const char * argv[])
{
    @autoreleasepool {        
        WebView *webView = [[WebView alloc] initWithFrame:NSZeroRect frameName:nil groupName:[[NSBundle mainBundle] bundleIdentifier]];
        ResourceLoadDelegate *delegate = [[ResourceLoadDelegate alloc] init];
        webView.resourceLoadDelegate = delegate;
        [[webView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@&quot;http://www.alistapart.com/d/cssatten/heid.html&quot;]]];

        [[NSRunLoop mainRunLoop] run];
    }
    return 0;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441753</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2011-07-25 11:09:33 -0700</bug_when>
    <thetext>&lt;rdar://problem/9835028&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441758</commentid>
    <comment_count>2</comment_count>
      <attachid>101886</attachid>
    <who name="">mitz</who>
    <bug_when>2011-07-25 11:33:42 -0700</bug_when>
    <thetext>Created attachment 101886
Defer font loading using a zero-delay timer so that it does not happen during layout</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441783</commentid>
    <comment_count>3</comment_count>
      <attachid>101886</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-07-25 12:04:56 -0700</bug_when>
    <thetext>Comment on attachment 101886
Defer font loading using a zero-delay timer so that it does not happen during layout

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

&gt; Source/WebCore/css/CSSFontFaceSource.cpp:205
&gt; +    m_fontSelector.clear();

please use

m_fontSelector = nullptr;

here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441807</commentid>
    <comment_count>4</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-07-25 13:01:32 -0700</bug_when>
    <thetext>Fixed in &lt;http://trac.webkit.org/r91699&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441913</commentid>
    <comment_count>5</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-07-25 15:26:26 -0700</bug_when>
    <thetext>I reverted r91699 in &lt;http://trac.webkit.org/r91710&gt; because some tests had relied on the synchronous behavior in the cached, error, and local cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442030</commentid>
    <comment_count>6</comment_count>
      <attachid>101952</attachid>
    <who name="">mitz</who>
    <bug_when>2011-07-25 17:45:34 -0700</bug_when>
    <thetext>Created attachment 101952
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442057</commentid>
    <comment_count>7</comment_count>
      <attachid>101952</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-07-25 18:29:00 -0700</bug_when>
    <thetext>Comment on attachment 101952
Patch

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

&gt; Source/WebCore/css/CSSFontFaceSource.cpp:178
&gt; +        // the middle of layout, and the loader may invoke aribtrary delegate or event handler code.

typo: aribtrary

&gt; Source/WebCore/css/CSSFontFaceSource.cpp:181
&gt; +        if (!m_startLoadingTimer.isActive())
&gt; +            m_startLoadingTimer.startOneShot(0);

Sometimes it seems to me that these zero-length timers aren’t really timers.

&gt; Source/WebCore/css/CSSFontFaceSource.cpp:203
&gt; +    if (CachedResourceLoader* cachedResourceLoader = m_fontSelector-&gt;cachedResourceLoader())
&gt; +        m_font-&gt;beginLoadIfNeeded(cachedResourceLoader);

Could just call it loader.

&gt; Source/WebCore/css/CSSFontFaceSource.h:81
&gt; +    Timer&lt;CSSFontFaceSource&gt; m_startLoadingTimer;

That’s a verb phrase, not a noun phrase. Maybe m_loadStartTimer?

&gt; LayoutTests/ChangeLog:10
&gt; +        Unfortunately, font loading does not fire any DOM events, so in most cases
&gt; +        a constant timeout had to be introduced.

Wah! Well at least the timeout is only for test failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442085</commentid>
    <comment_count>8</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-07-25 20:22:38 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r91738&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442089</commentid>
    <comment_count>9</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-07-25 20:37:52 -0700</bug_when>
    <thetext>Build fix in &lt;http://trac.webkit.org/r91739&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446761</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-04 14:01:42 -0700</bug_when>
    <thetext>This patch appears to have made these tests flaky:

svg/custom/svg-fonts-with-no-element-reference.html
svg/custom/svg-fonts-without-missing-glyph.xhtml</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500596</commentid>
    <comment_count>11</comment_count>
      <attachid>101952</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-11-11 01:53:51 -0800</bug_when>
    <thetext>Comment on attachment 101952
Patch

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

&gt; LayoutTests/fast/css/custom-font-xheight.html:59
&gt; +    }, 100);
&gt;  }

I just noticed Darins comment &quot;Wah! Well at least the timeout is only for test failures.&quot;.
I think this observation is wrong, the timeout affects these tests in general.

According to chromiums flakiness dashboard
Recent examples of failure from their dashboard:
http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=svg%2Fcustom%2Fsvg-fonts-fallback.xhtml%2Csvg%2Fcustom%2Fsvg-fonts-segmented.xhtml%2Csvg%2Ftext%2Ftext-overflow-ellipsis-svgfont.html&amp;showExpectations=true

I&apos;ve spotted this while working with bashi on his testcase in bug 71765.

To fix this fully we need to be able to listen for events indicating the custom font has finished loading.
I think we could do this through window.internals, what do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500800</commentid>
    <comment_count>12</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-11-11 08:36:02 -0800</bug_when>
    <thetext>Sure would be nice to have a way to do this without a timer.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101886</attachid>
            <date>2011-07-25 11:33:42 -0700</date>
            <delta_ts>2011-07-25 17:45:30 -0700</delta_ts>
            <desc>Defer font loading using a zero-delay timer so that it does not happen during layout</desc>
            <filename>bug-65123-20110725113341.patch</filename>
            <type>text/plain</type>
            <size>4366</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkxNjgzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDctMjUgIERhbiBCZXJu
c3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTgzNTAy
OD4gRm9udCBsb2FkaW5nIGR1cmluZyBsYXlvdXQgY2FuIGNhdXNlIGxheW91dCBjb2RlIHRvIGJl
IHJlLWVudGVyZWQgdmlhIHJlc291cmNlIGxvYWQgZGVsZWdhdGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MTIzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2luY2UgQ1NTRm9udEZhY2VTb3VyY2U6Omdl
dEZvbnREYXRhKCkgY2FuIGdldCBjYWxsZWQgZHVyaW5nIGxheW91dCwgYXZvaWQgY2FsbGluZyBv
dXQgdG8gbG9hZGVyCisgICAgICAgIGNvZGUgZnJvbSB1bmRlciBpdCwgYW5kIGluc3RlYWQgZGVm
ZXIgdGhhdCB3b3JrIHVzaW5nIGEgemVyby1kZWxheSB0aW1lci4KKworICAgICAgICAqIGNzcy9D
U1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJj
ZTo6Q1NTRm9udEZhY2VTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3Vy
Y2U6On5DU1NGb250RmFjZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNv
dXJjZTo6Z2V0Rm9udERhdGEpOiBSYXRoZXIgdGhhbiBzdGFydGluZyB0aGUgZm9udCBsb2FkIGhl
cmUsIHNjaGVkdWxlCisgICAgICAgIGEgemVyby1kZWxheSB0aW1lciB0byBkbyBpdC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpzdGFydExvYWRpbmdUaW1lckZpcmVkKTog
QWRkZWQuIFN0YXJ0cyBsb2FkaW5nIHRoZSBmb250IGlmIG5lZWRlZC4KKyAgICAgICAgKiBjc3Mv
Q1NTRm9udEZhY2VTb3VyY2UuaDoKKwogMjAxMS0wNy0yNSAgQXJubyBSZW5ldmllciAgPGFybm9A
cmVuZXZpZXIubmV0PgogCiAgICAgICAgIHJlbW92ZXMgbGFzdCBFTkFCTEUoRFJBR19TVVBQT1JU
KSBndGsgY2hlY2sKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNw
cAkocmV2aXNpb24gOTE2NzApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIENTU0ZvbnRGYWNlU291cmNl
OjpDU1NGb250RmFjZVNvdXJjZShjb24KICAgICA6IG1fc3RyaW5nKHN0cikKICAgICAsIG1fZm9u
dChmb250KQogICAgICwgbV9mYWNlKDApCisgICAgLCBtX3N0YXJ0TG9hZGluZ1RpbWVyKHRoaXMs
ICZDU1NGb250RmFjZVNvdXJjZTo6c3RhcnRMb2FkaW5nVGltZXJGaXJlZCkKICNpZiBFTkFCTEUo
U1ZHX0ZPTlRTKQogICAgICwgbV9oYXNFeHRlcm5hbFNWR0ZvbnQoZmFsc2UpCiAjZW5kaWYKQEAg
LTYwLDYgKzYxLDcgQEAgQ1NTRm9udEZhY2VTb3VyY2U6OkNTU0ZvbnRGYWNlU291cmNlKGNvbgog
CiBDU1NGb250RmFjZVNvdXJjZTo6fkNTU0ZvbnRGYWNlU291cmNlKCkKIHsKKyAgICBtX3N0YXJ0
TG9hZGluZ1RpbWVyLnN0b3AoKTsKICAgICBpZiAobV9mb250KQogICAgICAgICBtX2ZvbnQtPnJl
bW92ZUNsaWVudCh0aGlzKTsKICAgICBwcnVuZVRhYmxlKCk7CkBAIC0xNzIsOSArMTc0LDEyIEBA
IFNpbXBsZUZvbnREYXRhKiBDU1NGb250RmFjZVNvdXJjZTo6Z2V0Rm8KICNlbmRpZgogICAgICAg
ICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgLy8gS2ljayBvZmYgdGhlIGxvYWQgbm93LgotICAg
ICAgICBpZiAoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyID0gZm9u
dFNlbGVjdG9yLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKQotICAgICAgICAgICAgbV9mb250LT5i
ZWdpbkxvYWRJZk5lZWRlZChjYWNoZWRSZXNvdXJjZUxvYWRlcik7CisgICAgICAgIC8vIEtpY2sg
b2ZmIHRoZSBsb2FkIG5vdy4gRG8gaXQgb24gYSB6ZXJvLWRlbGF5IHRpbWVyIHJhdGhlciB0aGFu
IHN5bmNocm9ub3VzbHksIGJlY2F1c2Ugd2UgbWF5IGJlIGluCisgICAgICAgIC8vIHRoZSBtaWRk
bGUgb2YgbGF5b3V0LCBhbmQgdGhlIGxvYWRlciBtYXkgaW52b2tlIGFyaWJ0cmFyeSBkZWxlZ2F0
ZSBvciBldmVudCBoYW5kbGVyIGNvZGUuCisgICAgICAgIG1fZm9udFNlbGVjdG9yID0gZm9udFNl
bGVjdG9yOworICAgICAgICBpZiAoIW1fc3RhcnRMb2FkaW5nVGltZXIuaXNBY3RpdmUoKSkKKyAg
ICAgICAgICAgIG1fc3RhcnRMb2FkaW5nVGltZXIuc3RhcnRPbmVTaG90KDApOworCiAgICAgICAg
IC8vIEZJWE1FOiBtX3N0cmluZyBpcyBhIFVSTCBzbyBpdCBtYWtlcyBubyBzZW5zZSB0byBwYXNz
IGl0IGFzIGEgZmFtaWx5IG5hbWUuCiAgICAgICAgIFNpbXBsZUZvbnREYXRhKiB0ZW1wRGF0YSA9
IGZvbnRDYWNoZSgpLT5nZXRDYWNoZWRGb250RGF0YShmb250RGVzY3JpcHRpb24sIG1fc3RyaW5n
KTsKICAgICAgICAgaWYgKCF0ZW1wRGF0YSkKQEAgLTE4OSw2ICsxOTQsMTcgQEAgU2ltcGxlRm9u
dERhdGEqIENTU0ZvbnRGYWNlU291cmNlOjpnZXRGbwogICAgIHJldHVybiBmb250RGF0YVJhd1B0
cjsKIH0KIAordm9pZCBDU1NGb250RmFjZVNvdXJjZTo6c3RhcnRMb2FkaW5nVGltZXJGaXJlZChU
aW1lcjxXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZT4qKQoreworICAgIEFTU0VSVChtX2ZvbnQp
OworICAgIEFTU0VSVChtX2ZvbnRTZWxlY3Rvcik7CisKKyAgICBpZiAoQ2FjaGVkUmVzb3VyY2VM
b2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyID0gbV9mb250U2VsZWN0b3ItPmNhY2hlZFJlc291
cmNlTG9hZGVyKCkpCisgICAgICAgIG1fZm9udC0+YmVnaW5Mb2FkSWZOZWVkZWQoY2FjaGVkUmVz
b3VyY2VMb2FkZXIpOworCisgICAgbV9mb250U2VsZWN0b3IuY2xlYXIoKTsKK30KKwogI2lmIEVO
QUJMRShTVkdfRk9OVFMpCiBTVkdGb250RmFjZUVsZW1lbnQqIENTU0ZvbnRGYWNlU291cmNlOjpz
dmdGb250RmFjZUVsZW1lbnQoKSBjb25zdAogewpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmgJKHJldmlzaW9uIDkxNjcwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VI
YW5kbGUuaCIKKyNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKQEAgLTcwLDExICs3MSwxNiBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKKyAgICB2b2lkIHN0YXJ0TG9hZGluZ1RpbWVyRmly
ZWQoVGltZXI8Q1NTRm9udEZhY2VTb3VyY2U+Kik7CisKICAgICBBdG9taWNTdHJpbmcgbV9zdHJp
bmc7IC8vIFVSSSBmb3IgcmVtb3RlLCBidWlsdC1pbiBmb250IG5hbWUgZm9yIGxvY2FsLgogICAg
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEZvbnQ+IG1fZm9udDsgLy8gRm9yIHJlbW90ZSBm
b250cywgYSBwb2ludGVyIHRvIG91ciBjYWNoZWQgcmVzb3VyY2UuCiAgICAgQ1NTRm9udEZhY2Uq
IG1fZmFjZTsgLy8gT3VyIG93bmluZyBmb250IGZhY2UuCiAgICAgSGFzaE1hcDx1bnNpZ25lZCwg
U2ltcGxlRm9udERhdGEqPiBtX2ZvbnREYXRhVGFibGU7IC8vIFRoZSBoYXNoIGtleSBpcyBjb21w
b3NlZCBvZiBzaXplIHN5bnRoZXRpYyBzdHlsZXMuCiAKKyAgICBUaW1lcjxDU1NGb250RmFjZVNv
dXJjZT4gbV9zdGFydExvYWRpbmdUaW1lcjsKKyAgICBSZWZQdHI8Q1NTRm9udFNlbGVjdG9yPiBt
X2ZvbnRTZWxlY3RvcjsKKwogI2lmIEVOQUJMRShTVkdfRk9OVFMpCiAgICAgUmVmUHRyPFNWR0Zv
bnRGYWNlRWxlbWVudD4gbV9zdmdGb250RmFjZUVsZW1lbnQ7CiAgICAgUmVmUHRyPFNWR0ZvbnRF
bGVtZW50PiBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101952</attachid>
            <date>2011-07-25 17:45:34 -0700</date>
            <delta_ts>2011-11-11 01:53:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65123-20110725174533.patch</filename>
            <type>text/plain</type>
            <size>17750</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkxNzMwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDctMjUgIERhbiBCZXJu
c3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTgzNTAy
OD4gRm9udCBsb2FkaW5nIGR1cmluZyBsYXlvdXQgY2FuIGNhdXNlIGxheW91dCBjb2RlIHRvIGJl
IHJlLWVudGVyZWQgdmlhIHJlc291cmNlIGxvYWQgZGVsZWdhdGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MTIzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQW5kZXJzIENhcmxzc29uLgorCisgICAgICAgIFNpbmNlIENTU0ZvbnRGYWNlU291cmNlOjpn
ZXRGb250RGF0YSgpIGNhbiBnZXQgY2FsbGVkIGR1cmluZyBsYXlvdXQsIGF2b2lkIGNhbGxpbmcg
b3V0IHRvIGxvYWRlcgorICAgICAgICBjb2RlIGZyb20gdW5kZXIgaXQsIGFuZCBpbnN0ZWFkIGRl
ZmVyIHRoYXQgd29yayB1c2luZyBhIHplcm8tZGVsYXkgdGltZXIuCisKKyAgICAgICAgKiBjc3Mv
Q1NTRm9udEZhY2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3Vy
Y2U6OkNTU0ZvbnRGYWNlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291
cmNlOjp+Q1NTRm9udEZhY2VTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VT
b3VyY2U6OmdldEZvbnREYXRhKTogUmF0aGVyIHRoYW4gc3RhcnRpbmcgdGhlIGZvbnQgbG9hZCBo
ZXJlLCBzY2hlZHVsZQorICAgICAgICBhIHplcm8tZGVsYXkgdGltZXIgdG8gZG8gaXQuCisgICAg
ICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6c3RhcnRMb2FkaW5nVGltZXJGaXJlZCk6
IEFkZGVkLiBTdGFydHMgbG9hZGluZyB0aGUgZm9udCBpZiBuZWVkZWQuCisgICAgICAgICogY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmg6CisKIDIwMTEtMDctMjUgIElhbiBIZW5kZXJzb24gIDxpYW5o
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJGcmFtZSBzaG91bGQgaGF2ZSBhIG1ldGhvZCB0byBk
ZXRlcm1pbmUgaXRzIHZpc3VhbCBlbXB0aW5lc3MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU291cmNlLmNwcAkocmV2aXNpb24gOTE3MTApCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBA
IENTU0ZvbnRGYWNlU291cmNlOjpDU1NGb250RmFjZVNvdXJjZShjb24KICAgICA6IG1fc3RyaW5n
KHN0cikKICAgICAsIG1fZm9udChmb250KQogICAgICwgbV9mYWNlKDApCisgICAgLCBtX3N0YXJ0
TG9hZGluZ1RpbWVyKHRoaXMsICZDU1NGb250RmFjZVNvdXJjZTo6c3RhcnRMb2FkaW5nVGltZXJG
aXJlZCkKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgICwgbV9oYXNFeHRlcm5hbFNWR0ZvbnQo
ZmFsc2UpCiAjZW5kaWYKQEAgLTYwLDYgKzYxLDcgQEAgQ1NTRm9udEZhY2VTb3VyY2U6OkNTU0Zv
bnRGYWNlU291cmNlKGNvbgogCiBDU1NGb250RmFjZVNvdXJjZTo6fkNTU0ZvbnRGYWNlU291cmNl
KCkKIHsKKyAgICBtX3N0YXJ0TG9hZGluZ1RpbWVyLnN0b3AoKTsKICAgICBpZiAobV9mb250KQog
ICAgICAgICBtX2ZvbnQtPnJlbW92ZUNsaWVudCh0aGlzKTsKICAgICBwcnVuZVRhYmxlKCk7CkBA
IC0xNzIsOSArMTc0LDEyIEBAIFNpbXBsZUZvbnREYXRhKiBDU1NGb250RmFjZVNvdXJjZTo6Z2V0
Rm8KICNlbmRpZgogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgLy8gS2ljayBvZmYg
dGhlIGxvYWQgbm93LgotICAgICAgICBpZiAoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJl
c291cmNlTG9hZGVyID0gZm9udFNlbGVjdG9yLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKQotICAg
ICAgICAgICAgbV9mb250LT5iZWdpbkxvYWRJZk5lZWRlZChjYWNoZWRSZXNvdXJjZUxvYWRlcik7
CisgICAgICAgIC8vIEtpY2sgb2ZmIHRoZSBsb2FkIG5vdy4gRG8gaXQgb24gYSB6ZXJvLWRlbGF5
IHRpbWVyIHJhdGhlciB0aGFuIHN5bmNocm9ub3VzbHksIGJlY2F1c2Ugd2UgbWF5IGJlIGluCisg
ICAgICAgIC8vIHRoZSBtaWRkbGUgb2YgbGF5b3V0LCBhbmQgdGhlIGxvYWRlciBtYXkgaW52b2tl
IGFyaWJ0cmFyeSBkZWxlZ2F0ZSBvciBldmVudCBoYW5kbGVyIGNvZGUuCisgICAgICAgIG1fZm9u
dFNlbGVjdG9yID0gZm9udFNlbGVjdG9yOworICAgICAgICBpZiAoIW1fc3RhcnRMb2FkaW5nVGlt
ZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgICAgIG1fc3RhcnRMb2FkaW5nVGltZXIuc3RhcnRPbmVT
aG90KDApOworCiAgICAgICAgIC8vIEZJWE1FOiBtX3N0cmluZyBpcyBhIFVSTCBzbyBpdCBtYWtl
cyBubyBzZW5zZSB0byBwYXNzIGl0IGFzIGEgZmFtaWx5IG5hbWUuCiAgICAgICAgIFNpbXBsZUZv
bnREYXRhKiB0ZW1wRGF0YSA9IGZvbnRDYWNoZSgpLT5nZXRDYWNoZWRGb250RGF0YShmb250RGVz
Y3JpcHRpb24sIG1fc3RyaW5nKTsKICAgICAgICAgaWYgKCF0ZW1wRGF0YSkKQEAgLTE4OSw2ICsx
OTQsMTcgQEAgU2ltcGxlRm9udERhdGEqIENTU0ZvbnRGYWNlU291cmNlOjpnZXRGbwogICAgIHJl
dHVybiBmb250RGF0YVJhd1B0cjsKIH0KIAordm9pZCBDU1NGb250RmFjZVNvdXJjZTo6c3RhcnRM
b2FkaW5nVGltZXJGaXJlZChUaW1lcjxXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZT4qKQorewor
ICAgIEFTU0VSVChtX2ZvbnQpOworICAgIEFTU0VSVChtX2ZvbnRTZWxlY3Rvcik7CisKKyAgICBp
ZiAoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyID0gbV9mb250U2Vs
ZWN0b3ItPmNhY2hlZFJlc291cmNlTG9hZGVyKCkpCisgICAgICAgIG1fZm9udC0+YmVnaW5Mb2Fk
SWZOZWVkZWQoY2FjaGVkUmVzb3VyY2VMb2FkZXIpOworCisgICAgbV9mb250U2VsZWN0b3IgPSBu
dWxscHRyOworfQorCiAjaWYgRU5BQkxFKFNWR19GT05UUykKIFNWR0ZvbnRGYWNlRWxlbWVudCog
Q1NTRm9udEZhY2VTb3VyY2U6OnN2Z0ZvbnRGYWNlRWxlbWVudCgpIGNvbnN0CiB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAkocmV2aXNpb24gOTE3MTApCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNs
dWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIApA
QCAtNzAsMTEgKzcxLDE2IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgorICAgIHZvaWQg
c3RhcnRMb2FkaW5nVGltZXJGaXJlZChUaW1lcjxDU1NGb250RmFjZVNvdXJjZT4qKTsKKwogICAg
IEF0b21pY1N0cmluZyBtX3N0cmluZzsgLy8gVVJJIGZvciByZW1vdGUsIGJ1aWx0LWluIGZvbnQg
bmFtZSBmb3IgbG9jYWwuCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkRm9udD4gbV9m
b250OyAvLyBGb3IgcmVtb3RlIGZvbnRzLCBhIHBvaW50ZXIgdG8gb3VyIGNhY2hlZCByZXNvdXJj
ZS4KICAgICBDU1NGb250RmFjZSogbV9mYWNlOyAvLyBPdXIgb3duaW5nIGZvbnQgZmFjZS4KICAg
ICBIYXNoTWFwPHVuc2lnbmVkLCBTaW1wbGVGb250RGF0YSo+IG1fZm9udERhdGFUYWJsZTsgLy8g
VGhlIGhhc2gga2V5IGlzIGNvbXBvc2VkIG9mIHNpemUgc3ludGhldGljIHN0eWxlcy4KIAorICAg
IFRpbWVyPENTU0ZvbnRGYWNlU291cmNlPiBtX3N0YXJ0TG9hZGluZ1RpbWVyOworICAgIFJlZlB0
cjxDU1NGb250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOworCiAjaWYgRU5BQkxFKFNWR19GT05U
UykKICAgICBSZWZQdHI8U1ZHRm9udEZhY2VFbGVtZW50PiBtX3N2Z0ZvbnRGYWNlRWxlbWVudDsK
ICAgICBSZWZQdHI8U1ZHRm9udEVsZW1lbnQ+IG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudDsKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDkxNzMwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDctMjUgIERhbiBCZXJuc3RlaW4gIDxtaXR6
QGFwcGxlLmNvbT4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTgzNTAyOD4gRm9udCBsb2Fk
aW5nIGR1cmluZyBsYXlvdXQgY2FuIGNhdXNlIGxheW91dCBjb2RlIHRvIGJlIHJlLWVudGVyZWQg
dmlhIHJlc291cmNlIGxvYWQgZGVsZWdhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY1MTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXBkYXRlZCB0ZXN0cyB0aGF0IGRlcGVuZGVkIG9uIGZvbnRzIGxv
YWRpbmcgc3luY2hyb25vdXNseSBkdXJpbmcgbGF5b3V0LgorICAgICAgICBVbmZvcnR1bmF0ZWx5
LCBmb250IGxvYWRpbmcgZG9lcyBub3QgZmlyZSBhbnkgRE9NIGV2ZW50cywgc28gaW4gbW9zdCBj
YXNlcworICAgICAgICBhIGNvbnN0YW50IHRpbWVvdXQgaGFkIHRvIGJlIGludHJvZHVjZWQuCisK
KyAgICAgICAgKiBmYXN0L2Jsb2NrZmxvdy9icm9rZW4taWRlb2dyYXBoLXNtYWxsLWNhcHMuaHRt
bDoKKyAgICAgICAgKiBmYXN0L2Nzcy9jb2xvci1sZWFrYWdlLmh0bWw6CisgICAgICAgICogZmFz
dC9jc3MvY3VzdG9tLWZvbnQteGhlaWdodC5odG1sOgorICAgICAgICAqIGZhc3QvY3NzL2ZvbnQt
ZmFjZS1tdWx0aXBsZS1mYWNlcy5odG1sOgorICAgICAgICAqIGZhc3QvY3NzL2ZvbnQtZmFjZS1t
dWx0aXBsZS1yZW1vdGUtc291cmNlcy5odG1sOgorICAgICAgICAqIGZhc3QvY3NzL2ZvbnQtZmFj
ZS1yZW1vdGUuaHRtbDoKKyAgICAgICAgKiBmYXN0L2Nzcy9mb250LWZhY2Utd29mZi5odG1sOgor
ICAgICAgICAqIHN2Zy9XM0MtU1ZHLTEuMS1TRS90ZXh0LWludHJvLTA5LWIuc3ZnOgorICAgICAg
ICAqIHN2Zy9XM0MtU1ZHLTEuMS9mb250cy1lbGVtLTA3LWIuc3ZnOgorICAgICAgICAqIHN2Zy9j
dXN0b20vc3ZnLWZvbnRzLWZhbGxiYWNrLnhodG1sOgorICAgICAgICAqIHN2Zy9jdXN0b20vc3Zn
LWZvbnRzLWluLWh0bWwuaHRtbDoKKyAgICAgICAgKiBzdmcvY3VzdG9tL3N2Zy1mb250cy1zZWdt
ZW50ZWQueGh0bWw6CisgICAgICAgICogc3ZnL2N1c3RvbS9zdmctZm9udHMtd2l0aC1uby1lbGVt
ZW50LXJlZmVyZW5jZS5odG1sOgorICAgICAgICAqIHN2Zy9jdXN0b20vc3ZnLWZvbnRzLXdpdGhv
dXQtbWlzc2luZy1nbHlwaC54aHRtbDoKKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0LW92ZXJmbG93
LWVsbGlwc2lzLXN2Z2ZvbnQuaHRtbDoKKwogMjAxMS0wNy0yNSAgQWRyaWVubmUgV2Fsa2VyICA8
ZW5uZUBnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTWFyayBmYXN0L3NlbGVjdG9y
cy8wMDEuaHRtbCBhcyBhIGZsYWt5IGNyYXNoZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Js
b2NrZmxvdy9icm9rZW4taWRlb2dyYXBoLXNtYWxsLWNhcHMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2Jsb2NrZmxvdy9icm9rZW4taWRlb2dyYXBoLXNtYWxsLWNhcHMuaHRt
bAkocmV2aXNpb24gOTE3MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrZmxvdy9icm9rZW4t
aWRlb2dyYXBoLXNtYWxsLWNhcHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTAgKzU3LDYg
QEAgcCB7CiAKIDwvc3R5bGU+CiAgIAotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgot
Ci08L3NjcmlwdD4KLSAgCiA8L2hlYWQ+CiA8Ym9keT4KIApAQCAtNjksNSArNjUsMTIgQEAgcCB7
CiA8ZGl2IGNsYXNzPSJiYXNpYyBkMSB2ZXJ0Ij48cD7nrKzkuIDmrrXokL0gUGFyYWdyYXBoIDE8
L3A+PHA+56ys5LqM5q616JC9IFBhcmFncmFwaCAyPC9wPjwvZGl2PgogPC9kaXY+CiAKKzxzY3Jp
cHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIGRvY3VtZW50LmJvZHku
b2Zmc2V0VG9wOworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7IH0sIDEwMCk7CisgICAgfQorPC9zY3JpcHQ+CiA8L2JvZHk+
Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9jc3MvY29sb3ItbGVha2FnZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvY3NzL2NvbG9yLWxlYWthZ2UuaHRtbAkocmV2aXNpb24gOTE3MDgpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9jb2xvci1sZWFrYWdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTIsMTAgKzIsNiBAQAogICA8aGVhZD4KICAgPCEtLSBUaGUgQWhlbSBmb250IHJlbmRlcmVkIGlu
IHRoaXMgdGVzdCBzaG91bGQgYmUgZGlzcGxheWVkIGJsYWNrLCBub3QgYmx1ZS4gLS0+CiAgICAg
PHN0eWxlPgotICAgICAgQGZvbnQtZmFjZSB7Ci0gICAgICAgIGZvbnQtZmFtaWx5OiAnQWhlbSc7
Ci0gICAgICAgIHNyYzogdXJsKCdyZXNvdXJjZXMvQWhlbS50dGYnKTsKLSAgICAgIH0KICAgICAg
IGRpdiB7CiAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICBmb250LWZhbWlseTogQWhl
bTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1mb250LXhoZWlnaHQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tZm9udC14aGVpZ2h0Lmh0
bWwJKHJldmlzaW9uIDkxNzA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLWZvbnQt
eGhlaWdodC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNyArMzcsMjUgQEAgV2ViS2l0IG5p
Z2h0bHkgYWRkaW5nIGluc2FuZSBoZWlnaHQgdG8gZAogPC9kaXY+CiAKIDxzY3JpcHQ+Ci1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewogICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CiAKIGZ1bmN0aW9uIHRlc3QoKQog
ewotICAgIHZhciB0b3RhbEhlaWdodCA9IGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVk
U3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKSwgbnVsbCkuZ2V0UHJvcGVydHlD
U1NWYWx1ZSgiaGVpZ2h0Iik7Ci0gICAgdG90YWxIZWlnaHQgPSB0b3RhbEhlaWdodC5nZXRGbG9h
dFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19QWCk7Ci0gICAgaWYgKHRvdGFsSGVpZ2h0ID4g
MTUwICYmIHRvdGFsSGVpZ2h0IDwgMzAwKQotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVzdWx0IikuaW5uZXJIVE1MID0gIlBBU1MiOwotICAgIGVsc2UKLSAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCA9ICJGQUlMOiAiICsgdG90YWxI
ZWlnaHQgKyAicHgiOworICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOworICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciB0b3RhbEhlaWdodCA9IGRvY3VtZW50LmRlZmF1
bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKSwg
bnVsbCkuZ2V0UHJvcGVydHlDU1NWYWx1ZSgiaGVpZ2h0Iik7CisgICAgICAgIHRvdGFsSGVpZ2h0
ID0gdG90YWxIZWlnaHQuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfUFgpOwor
ICAgICAgICBpZiAodG90YWxIZWlnaHQgPiAxNTAgJiYgdG90YWxIZWlnaHQgPCAzMDApCisgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MID0gIlBB
U1MiOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVzdWx0IikuaW5uZXJIVE1MID0gIkZBSUw6ICIgKyB0b3RhbEhlaWdodCArICJweCI7CisKKyAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9LCAxMDApOwogfQogPC9zY3JpcHQ+
CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250LWZhY2UtbXVsdGlwbGUt
ZmFjZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250LWZhY2Ut
bXVsdGlwbGUtZmFjZXMuaHRtbAkocmV2aXNpb24gOTE3MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2Nzcy9mb250LWZhY2UtbXVsdGlwbGUtZmFjZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTQ4
LDMgKzE0OCwxMCBAQAogPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IHdlYmtpdC1mb3VyOyI+CiAg
ICAgQUhFTSA8aT5BSEVNPC9pPgogPC9kaXY+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKKyAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyB9
LCAxMDApOworICAgIH0KKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9u
dC1mYWNlLW11bHRpcGxlLXJlbW90ZS1zb3VyY2VzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9jc3MvZm9udC1mYWNlLW11bHRpcGxlLXJlbW90ZS1zb3VyY2VzLmh0bWwJKHJl
dmlzaW9uIDkxNzA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udC1mYWNlLW11bHRpcGxl
LXJlbW90ZS1zb3VyY2VzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE1LDYgKzE1LDEwIEBACiAg
ICAgICAgIF9mYWlsCiAgICAgPC9kaXY+CiAgICAgPHNjcmlwdD4KLSAgICAgICAgZG9jdW1lbnQu
Ym9keS5vZmZzZXRUb3A7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAg
ICAgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyB9LCAxMDAp
OworICAgICAgICB9CiAgICAgPC9zY3JpcHQ+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy9mb250LWZhY2UtcmVtb3RlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvZm9udC1mYWNlLXJlbW90ZS5odG1sCShyZXZpc2lvbiA5MTcwOCkKKysrIExheW91
dFRlc3RzL2Zhc3QvY3NzL2ZvbnQtZmFjZS1yZW1vdGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
OCw3ICs4LDcgQEAKICAgICAgICAgZGl2IHsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBi
YWNrZ3JvdW5kLWNvbG9yOiByZWQ7IGZvbnQtZmFtaWx5OiAncmVtb3RlJzsgZm9udC1zaXplOiAy
MHB4OyBjb2xvcjogZ3JlZW47IH0KICAgICA8L3N0eWxlPgogPC9oZWFkPgotPGJvZHkgb25sb2Fk
PSJmaW5pc2hlZCgpIj4KKzxib2R5PgogICAgIDxkaXY+CiAgICAgICAgIEZBSUxfPGJyPgogICAg
ICAgICBYWFhYWDxicj4KQEAgLTE3LDE2ICsxNywxMCBAQAogICAgICAgICBfRkFJTDxicj4KICAg
ICA8L2Rpdj4KICAgICA8c2NyaXB0PgotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0KLSAgICAgICAg
Ly8gS2ljayBvZmYgbG9hZGluZyBvZiB0aGUgZm9udAotICAgICAgICBkb2N1bWVudC5ib2R5Lm9m
ZnNldFRvcDsKLQotICAgICAgICBmdW5jdGlvbiBmaW5pc2hlZCgpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgZG9jdW1lbnQu
Ym9keS5vZmZzZXRUb3A7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7IH0sIDEwMCk7CiAgICAgICAgIH0KICAgICA8
L3NjcmlwdD4KIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnQtZmFjZS13
b2ZmLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udC1mYWNlLXdv
ZmYuaHRtbAkocmV2aXNpb24gOTE3MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250LWZh
Y2Utd29mZi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDMgKzgsMTAgQEAKIDxwPlRoaXMgdGVz
dCB0cmllcyB0byByZW5kZXIgdGhlIGZvbGxvd2luZyB0ZXh0IHdpdGggQWhlbSwgbG9hZGVkIGZy
b20gYSBXT0ZGIGZpbGUuIFRoZSB0ZXh0IGJlbG93IHNob3VsZCBiZSBhIHNlcmllcyBvZiBibGFj
ayBib3hlcy48L3A+CiAKIDxwIHN0eWxlPSJmb250LWZhbWlseTogZmFtaWx5MTsgZm9udC1zaXpl
OiA0ZW07Ij5GYWlsdXJlPC9wPgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CisgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsgfSwgMTAwKTsK
KyAgICB9Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9XM0MtU1ZHLTEuMS1TRS90
ZXh0LWludHJvLTA5LWIuc3ZnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9XM0MtU1ZH
LTEuMS1TRS90ZXh0LWludHJvLTA5LWIuc3ZnCShyZXZpc2lvbiA5MTcwOCkKKysrIExheW91dFRl
c3RzL3N2Zy9XM0MtU1ZHLTEuMS1TRS90ZXh0LWludHJvLTA5LWIuc3ZnCSh3b3JraW5nIGNvcHkp
CkBAIC04Niw0ICs4NiwxMSBAQAogICAgIDx0ZXh0IGZvbnQtZmFtaWx5PSJTVkdGcmVlU2Fuc0FT
Q0lJLHNhbnMtc2VyaWYiIGZvbnQtd2VpZ2h0PSJib2xkIiBmb250LXNpemU9IjIwIiB4PSIyNDAi
CiAgICAgICB0ZXh0LWFuY2hvcj0ibWlkZGxlIiB5PSIxOCIgc3Ryb2tlLXdpZHRoPSIwLjUiIHN0
cm9rZT0iYmxhY2siIGZpbGw9IndoaXRlIj5EUkFGVDwvdGV4dD4KICAgPC9nPi0tPgorPHNjcmlw
dD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50Lm9mZnNldFRvcDsKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyB9LCAxMDApOworICAgIH0KKzwvc2NyaXB0
Pg0KIDwvc3ZnPgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL1czQy1TVkctMS4xL2ZvbnRzLWVsZW0t
MDctYi5zdmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL1czQy1TVkctMS4xL2ZvbnRz
LWVsZW0tMDctYi5zdmcJKHJldmlzaW9uIDkxNzA4KQorKysgTGF5b3V0VGVzdHMvc3ZnL1czQy1T
VkctMS4xL2ZvbnRzLWVsZW0tMDctYi5zdmcJKHdvcmtpbmcgY29weSkKQEAgLTExMyw0ICsxMTMs
MTEgQEAKIAk8L2c+CiAJPHRleHQgaWQ9InJldmlzaW9uIiB4PSIxMCIgeT0iMzQwIiBmb250LXNp
emU9IjQwIiBzdHJva2U9Im5vbmUiIGZpbGw9ImJsYWNrIj4kUmV2aXNpb246IDEuNyAkPC90ZXh0
PgogCTxyZWN0IGlkPSJ0ZXN0LWZyYW1lIiB4PSIxIiB5PSIxIiB3aWR0aD0iNDc4IiBoZWlnaHQ9
IjM1OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIi8+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OyB9LCAxMDApOworICAgICAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KIDwvc3ZnPgpJbmRl
eDogTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9zdmctZm9udHMtZmFsbGJhY2sueGh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9zdmctZm9udHMtZmFsbGJhY2sueGh0bWwJ
KHJldmlzaW9uIDkxNzA4KQorKysgTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9zdmctZm9udHMtZmFs
bGJhY2sueGh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTc2LDYgKzc2LDEyIEBACiAgICAgPCEtLSAn
YScsICcgJywgJ28nIGZyb20gVGVzdEZvbnQyLCAnJiN4YmUyOycgY2FuJ3QgYmUgcmVuZGVyZWQs
IGFzIG5vbmUgb2YgdGhlIGRlZmF1bHQgZm9udHMgZGVmaW5lcyBpdCAtLT4KICAgICA8c3BhbiBz
dHlsZT0nZm9udC1mYW1pbHk6IFRlc3RGb250MjsgZm9udC1zaXplOiA0MHB4OyAnPmEgJiN4YmUy
OyBvPC9zcGFuPjxici8+CiA8L3A+Ci0KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CisgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5vZmZzZXRUb3A7CisgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsgfSwgMTAwKTsKKyAgICB9Cis8L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL3N2Zy9jdXN0b20vc3ZnLWZvbnRzLWluLWh0bWwuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3N2Zy1mb250cy1pbi1odG1sLmh0bWwJKHJldmlz
aW9uIDkxNzA4KQorKysgTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9zdmctZm9udHMtaW4taHRtbC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMDgsNiArMjA4LDEyIEBACiA8IS0tIEFkZCBhIGJhY2tn
cm91bmQgaW1hZ2UgdG8gZWFjaCBhbmQgdXNlIHdpZHRoIGFuZCBoZWlnaHQgdG8gY29udHJvbCBz
aXppbmcsIHBsYWNlIHdpdGggYWJzb2x1dGUgcG9zaXRpb25pbmcgLS0+DQogPGRpdiBpZD0iZXh0
cmFEaXYxIj48c3Bhbj48L3NwYW4+PC9kaXY+PGRpdiBpZD0iZXh0cmFEaXYyIj48c3Bhbj48L3Nw
YW4+PC9kaXY+PGRpdiBpZD0iZXh0cmFEaXYzIj48c3Bhbj48L3NwYW4+PC9kaXY+DQogPGRpdiBp
ZD0iZXh0cmFEaXY0Ij48c3Bhbj48L3NwYW4+PC9kaXY+PGRpdiBpZD0iZXh0cmFEaXY1Ij48c3Bh
bj48L3NwYW4+PC9kaXY+PGRpdiBpZD0iZXh0cmFEaXY2Ij48c3Bhbj48L3NwYW4+PC9kaXY+DQot
DQorPHNjcmlwdD4NCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgew0KKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOw0KKyAgICAgICAgZG9j
dW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNldFRvcDsNCisgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsgfSwgMTAwKTsNCisg
ICAgfQ0KKzwvc2NyaXB0Pg0KIDwvYm9keT4NCiA8L2h0bWw+DQpJbmRleDogTGF5b3V0VGVzdHMv
c3ZnL2N1c3RvbS9zdmctZm9udHMtc2VnbWVudGVkLnhodG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3N2Zy9jdXN0b20vc3ZnLWZvbnRzLXNlZ21lbnRlZC54aHRtbAkocmV2aXNpb24gOTE3
MDgpCisrKyBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3N2Zy1mb250cy1zZWdtZW50ZWQueGh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDEyIEBACiAKIDwhLS0gJ0FCQycgc2hvdWxkIGJl
IHJlbmRlcmVkIHVzaW5nIFRpbWVzLCAnZGVmJyB1c2luZyBDb3VyaWVyLCAnbycgdXNpbmcgdGhl
IFNWRyBGb250LCBhbmQgJ08nIGFnYWluIGJ5IFRpbWVzIC0tPgogPHAgc3R5bGU9J2ZvbnQtZmFt
aWx5OiBUZXN0Rm9udDsgZm9udC1zaXplOiA0MHB4OyAnPkFCQ2RlZm9vb088L3A+Ci0KKzxzY3Jp
cHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIGRvY3VtZW50LmRvY3Vt
ZW50RWxlbWVudC5vZmZzZXRUb3A7CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsgfSwgMTAwKTsKKyAgICB9Cis8L3Njcmlw
dD4KIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9jdXN0b20vc3ZnLWZv
bnRzLXdpdGgtbm8tZWxlbWVudC1yZWZlcmVuY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9zdmcvY3VzdG9tL3N2Zy1mb250cy13aXRoLW5vLWVsZW1lbnQtcmVmZXJlbmNlLmh0bWwJ
KHJldmlzaW9uIDkxNzA4KQorKysgTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9zdmctZm9udHMtd2l0
aC1uby1lbGVtZW50LXJlZmVyZW5jZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSwx
MyBAQAogPGJvZHk+DQogPHAgY2xhc3M9ImZpcnN0Ij5UaGlzIHRleHQgc2hvdWxkIGJlIHJlbmRl
cmVkIHdpdGggYSBmaXJzdCBmb250LjwvcD4NCiA8cCBjbGFzcz0ic2Vjb25kIj5UaGlzIHRleHQg
c2hvdWxkIGJlIHJlbmRlcmVkIHdpdGggYSBzZWNvbmQgZm9udC48L3A+DQorPHNjcmlwdD4NCisg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgew0KKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOw0KKyAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50Lm9mZnNldFRvcDsNCisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsgfSwgMTAwKTsNCisgICAgfQ0KKzwvc2NyaXB0
Pg0KIDwvYm9keT4NCiANCiA8L2h0bWw+DQpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9z
dmctZm9udHMtd2l0aG91dC1taXNzaW5nLWdseXBoLnhodG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3N2Zy9jdXN0b20vc3ZnLWZvbnRzLXdpdGhvdXQtbWlzc2luZy1nbHlwaC54aHRtbAko
cmV2aXNpb24gOTE3MDgpCisrKyBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3N2Zy1mb250cy13aXRo
b3V0LW1pc3NpbmctZ2x5cGgueGh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDEyIEBA
CiA8cCBjbGFzcz0idGFyZ2V0Ij5BWFg8L3A+CiA8cCBjbGFzcz0idGFyZ2V0Ij5YWFg8L3A+CiA8
cCBjbGFzcz0idGFyZ2V0Ij5BQUE8L3A+Ci0KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CisgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5vZmZzZXRUb3A7Cisg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsgfSwgMTAwKTsKKyAgICB9Cis8L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL3N2Zy90ZXh0L3RleHQtb3ZlcmZsb3ctZWxsaXBzaXMtc3ZnZm9udC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy90ZXh0L3RleHQtb3ZlcmZsb3ctZWxs
aXBzaXMtc3ZnZm9udC5odG1sCShyZXZpc2lvbiA5MTcwOCkKKysrIExheW91dFRlc3RzL3N2Zy90
ZXh0L3RleHQtb3ZlcmZsb3ctZWxsaXBzaXMtc3ZnZm9udC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw1ICszNiwxMiBAQCBQYXNzIGlmIHNvbWUgdGV4dCBpcyBzaG93biBmb2xsb3dlZCBieSBh
CiAJYWJjIGFiYyBhYmMgYWJjIGFiYyBhYmMgYWJjIGFiYyBhYmMgYWJjCiA8L2Rpdj4KIAorPHNj
cmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgZG9jdW1lbnQuZG9j
dW1lbnRFbGVtZW50Lm9mZnNldFRvcDsKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyB9LCAxMDApOworICAgIH0KKzwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgo=
</data>
<flag name="review"
          id="97036"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>