<?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>193967</bug_id>
          
          <creation_ts>2019-01-29 09:47:21 -0800</creation_ts>
          <short_desc>Regression (r240046): [PSON] Spurious changes to [WKWebView url] and [WKWebView loading] after [WKWebView loadRequest]</short_desc>
          <delta_ts>2019-01-29 13:00:06 -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>Page Loading</component>
          <version>WebKit Local 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 name="Ali Juma">ajuma</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ajuma</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>eugenebut</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1499566</commentid>
    <comment_count>0</comment_count>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2019-01-29 09:47:21 -0800</bug_when>
    <thetext>After r240046, on a cross-origin [WKWebView loadRequest], [WKWebView url] will first change to the new URL, then *change back* to the old URL, then change again to the new URL. Similarly, [WKWebView loading] will become true, then become false, and then become true again.

More specifically, we get the following sequence:
1) [WKWebView loadRequest] --&gt; [WKWebView ur] becomes the request URL and [WKWebView loading] becomes true
2) WebPageProxy::receivedPolicyDecision --&gt; [WKWebView url] reverts to the previous URL and [WKWebView loading] becomes false
3) WebPageProxy::didStartProvisionalLoadForFrameShared --&gt; [WKWebView url] becomes the requested URL again, and [WKWebView loading] becomes true again

The extra changes in (2) and (3) are confusing to embedders (like Chrome) that are doing KVO on [WKWebView url] and [WKWebView loading], since the change in (2) makes it look like the load was aborted.

The cause of these changes is that in r240046, WebPageProxy::receivedNavigationPolicyDecision sets policyAction to Ignore (instead of Suspend) on navigations which trigger process swaps, which then makes WebPageProxy::receivedPolicyDecision call PageLoadState::clearPendingAPIRequestURL, and this has the effect of reverting [WKWebView url] to the old URL and making [WKWebView loading] false.

Navigations initiated by [WKWebView goToBackForwardListItem] also have this broken behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499568</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-29 09:48:49 -0800</bug_when>
    <thetext>&lt;rdar://problem/47635348&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499573</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-01-29 09:54:11 -0800</bug_when>
    <thetext>Thanks for reporting this Ali, will fix ASAP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499575</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-01-29 10:09:46 -0800</bug_when>
    <thetext>Ali, how/when is it observable by the client exactly?

I tried to write the following API test but it is passing:
TEST(ProcessSwap, LoadingStateAfterPolicyDecision)
{
    auto processPoolConfiguration = adoptNS([[_WKProcessPoolConfiguration alloc] init]);
    processPoolConfiguration.get().processSwapsOnNavigation = YES;
    auto processPool = adoptNS([[WKProcessPool alloc] _initWithConfiguration:processPoolConfiguration.get()]);

    auto webViewConfiguration = adoptNS([[WKWebViewConfiguration alloc] init]);
    [webViewConfiguration setProcessPool:processPool.get()];
    auto handler = adoptNS([[PSONScheme alloc] init]);
    [webViewConfiguration setURLSchemeHandler:handler.get() forURLScheme:@&quot;PSON&quot;];

    auto webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:webViewConfiguration.get()]);
    auto navigationDelegate = adoptNS([[PSONNavigationDelegate alloc] init]);
    [webView setNavigationDelegate:navigationDelegate.get()];

    [webView configuration].preferences.safeBrowsingEnabled = NO;

    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@&quot;pson://www.webkit.org/main.html&quot;]]];
    TestWebKitAPI::Util::run(&amp;done);
    done = false;

    didStartProvisionalLoad = false;
    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@&quot;pson://www.apple.com/main.html&quot;]]];
    EXPECT_WK_STREQ(@&quot;pson://www.apple.com/main.html&quot;, [[webView URL] absoluteString]);
    EXPECT_TRUE([webView isLoading]);

    navigationDelegate-&gt;decidePolicyForNavigationAction = ^(WKNavigationAction *, void (^decisionHandler)(WKNavigationActionPolicy)) {
        EXPECT_WK_STREQ(@&quot;pson://www.apple.com/main.html&quot;, [[webView URL] absoluteString]);
        EXPECT_TRUE([webView isLoading]);

        decisionHandler(WKNavigationActionPolicyAllow);

        EXPECT_WK_STREQ(@&quot;pson://www.apple.com/main.html&quot;, [[webView URL] absoluteString]);
        EXPECT_TRUE([webView isLoading]);
    };

    TestWebKitAPI::Util::run(&amp;didStartProvisionalLoad);
    didStartProvisionalLoad = false;

    EXPECT_WK_STREQ(@&quot;pson://www.apple.com/main.html&quot;, [[webView URL] absoluteString]);
    EXPECT_TRUE([webView isLoading]);

    TestWebKitAPI::Util::run(&amp;done);
    done = false;

    EXPECT_WK_STREQ(@&quot;pson://www.apple.com/main.html&quot;, [[webView URL] absoluteString]);
    EXPECT_FALSE([webView isLoading]);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499584</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-01-29 10:28:14 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #3)
&gt; Ali, how/when is it observable by the client exactly?
&gt; 
&gt; I tried to write the following API test but it is passing:
&gt; TEST(ProcessSwap, LoadingStateAfterPolicyDecision)
&gt; {
&gt;     auto processPoolConfiguration = adoptNS([[_WKProcessPoolConfiguration
&gt; alloc] init]);
&gt;     processPoolConfiguration.get().processSwapsOnNavigation = YES;
&gt;     auto processPool = adoptNS([[WKProcessPool alloc]
&gt; _initWithConfiguration:processPoolConfiguration.get()]);
&gt; 
&gt;     auto webViewConfiguration = adoptNS([[WKWebViewConfiguration alloc]
&gt; init]);
&gt;     [webViewConfiguration setProcessPool:processPool.get()];
&gt;     auto handler = adoptNS([[PSONScheme alloc] init]);
&gt;     [webViewConfiguration setURLSchemeHandler:handler.get()
&gt; forURLScheme:@&quot;PSON&quot;];
&gt; 
&gt;     auto webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0,
&gt; 800, 600) configuration:webViewConfiguration.get()]);
&gt;     auto navigationDelegate = adoptNS([[PSONNavigationDelegate alloc] init]);
&gt;     [webView setNavigationDelegate:navigationDelegate.get()];
&gt; 
&gt;     [webView configuration].preferences.safeBrowsingEnabled = NO;
&gt; 
&gt;     [webView loadRequest:[NSURLRequest requestWithURL:[NSURL
&gt; URLWithString:@&quot;pson://www.webkit.org/main.html&quot;]]];
&gt;     TestWebKitAPI::Util::run(&amp;done);
&gt;     done = false;
&gt; 
&gt;     didStartProvisionalLoad = false;
&gt;     [webView loadRequest:[NSURLRequest requestWithURL:[NSURL
&gt; URLWithString:@&quot;pson://www.apple.com/main.html&quot;]]];
&gt;     EXPECT_WK_STREQ(@&quot;pson://www.apple.com/main.html&quot;, [[webView URL]
&gt; absoluteString]);
&gt;     EXPECT_TRUE([webView isLoading]);
&gt; 
&gt;     navigationDelegate-&gt;decidePolicyForNavigationAction =
&gt; ^(WKNavigationAction *, void (^decisionHandler)(WKNavigationActionPolicy)) {
&gt;         EXPECT_WK_STREQ(@&quot;pson://www.apple.com/main.html&quot;, [[webView URL]
&gt; absoluteString]);
&gt;         EXPECT_TRUE([webView isLoading]);
&gt; 
&gt;         decisionHandler(WKNavigationActionPolicyAllow);
&gt; 
&gt;         EXPECT_WK_STREQ(@&quot;pson://www.apple.com/main.html&quot;, [[webView URL]
&gt; absoluteString]);
&gt;         EXPECT_TRUE([webView isLoading]);
&gt;     };
&gt; 
&gt;     TestWebKitAPI::Util::run(&amp;didStartProvisionalLoad);
&gt;     didStartProvisionalLoad = false;
&gt; 
&gt;     EXPECT_WK_STREQ(@&quot;pson://www.apple.com/main.html&quot;, [[webView URL]
&gt; absoluteString]);
&gt;     EXPECT_TRUE([webView isLoading]);
&gt; 
&gt;     TestWebKitAPI::Util::run(&amp;done);
&gt;     done = false;
&gt; 
&gt;     EXPECT_WK_STREQ(@&quot;pson://www.apple.com/main.html&quot;, [[webView URL]
&gt; absoluteString]);
&gt;     EXPECT_FALSE([webView isLoading]);
&gt; }

Nevermind, I can reproduce using KVO for &quot;loading&quot; key instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499589</commentid>
    <comment_count>5</comment_count>
      <attachid>360473</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-01-29 10:41:44 -0800</bug_when>
    <thetext>Created attachment 360473
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499591</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-29 10:44:19 -0800</bug_when>
    <thetext>Attachment 360473 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:3475:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499607</commentid>
    <comment_count>7</comment_count>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2019-01-29 11:03:30 -0800</bug_when>
    <thetext>Thanks for uploading a fix Chris!

(In reply to Chris Dumez from comment #4)
&gt; Nevermind, I can reproduce using KVO for &quot;loading&quot; key instead.

Yeah, this is observable by the client when doing KVO on &apos;loading&apos; or on &apos;url&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499635</commentid>
    <comment_count>8</comment_count>
      <attachid>360473</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-29 12:01:07 -0800</bug_when>
    <thetext>Comment on attachment 360473
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:3476
&gt; +    EXPECT_WK_STREQ(@&quot;loading&quot;, keyPath);

Should the test observe url also?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499639</commentid>
    <comment_count>9</comment_count>
      <attachid>360473</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-01-29 12:09:39 -0800</bug_when>
    <thetext>Comment on attachment 360473
Patch

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

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:3476
&gt;&gt; +    EXPECT_WK_STREQ(@&quot;loading&quot;, keyPath);
&gt; 
&gt; Should the test observe url also?

Why not. Let me look up how to do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499645</commentid>
    <comment_count>10</comment_count>
      <attachid>360487</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-01-29 12:15:06 -0800</bug_when>
    <thetext>Created attachment 360487
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499646</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-01-29 12:15:20 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #9)
&gt; Comment on attachment 360473 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=360473&amp;action=review
&gt; 
&gt; &gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:3476
&gt; &gt;&gt; +    EXPECT_WK_STREQ(@&quot;loading&quot;, keyPath);
&gt; &gt; 
&gt; &gt; Should the test observe url also?
&gt; 
&gt; Why not. Let me look up how to do that.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499647</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-29 12:18:09 -0800</bug_when>
    <thetext>Attachment 360487 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:3476:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499667</commentid>
    <comment_count>13</comment_count>
      <attachid>360487</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-01-29 13:00:04 -0800</bug_when>
    <thetext>Comment on attachment 360487
Patch

Clearing flags on attachment: 360487

Committed r240675: &lt;https://trac.webkit.org/changeset/240675&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499668</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-01-29 13:00:06 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360473</attachid>
            <date>2019-01-29 10:41:44 -0800</date>
            <delta_ts>2019-01-29 12:15:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193967-20190129104143.patch</filename>
            <type>text/plain</type>
            <size>9054</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwNjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkzYzM0YjU4MmQzYWJlZGFk
YTJhNDM4MWNmMDc5NTZmMWRmNmM4ZTkuLmIyODc5ZDlhYjc2NjA2OTI0YzE5ZTUxMjVjMTRkMTg1
OGUxYzlmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTktMDEtMjkgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWdyZXNzaW9uIChyMjQwMDQ2KTog
W1BTT05dIFNwdXJpb3VzIGNoYW5nZXMgdG8gW1dLV2ViVmlldyB1cmxdIGFuZCBbV0tXZWJWaWV3
IGxvYWRpbmddIGFmdGVyIFtXS1dlYlZpZXcgbG9hZFJlcXVlc3RdCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM5NjcKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQ3NjM1MzQ4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVwZGF0ZSBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oKSB0
byBubyBsb25nZXIgY2xlYXIgdGhlIHBlbmRpbmcgVVJMIHdoZW4gd2Ugc2VuZCBQb2xpY3lBY3Rp
b246Oklnbm9yZSB0bworICAgICAgICB0aGUgb2xkIHByb2Nlc3Mgd2hlbiB0aGUgbG9hZCBpcyBj
b250aW51aW5nIGluIGEgbmV3IHByb2Nlc3MgZHVlIHRvIFBTT04uCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpy
ZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oOgorCiAyMDE5LTAxLTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgTWFrZSBzdXJlIFdURjo6Z2VuZXJhdGVPYmplY3RJZGVudGlmaWVyKCkg
aW50ZXJuYWwgY291bnRlciBkb2VzIG5vdCBnZXQgZHVwbGljYXRlZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMWIzMjNmZWQyNjFlNWYwMDEzOGJjN2Q5ZjA1
NmRhOWIxMWYxZGNjNC4uYzQzYWQ5MzRiNzAzNmExZTdmNWY2ZTI3ZjM4YWRmYTI1NDk4ZTI1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yNzE3LDcgKzI3
MTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNp
b24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogICAgICAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uOiBrZWVwIHVzaW5nIHByb2Nlc3MgJWkgZm9yIG5hdmlnYXRpb24sIHJlYXNvbjogJXtwdWJs
aWN9cyIsIHByb2Nlc3NJZGVudGlmaWVyKCksIHJlYXNvbi51dGY4KCkuZGF0YSgpKTsKIAogICAg
ICAgICBib29sIHNob3VsZFByb2Nlc3NTd2FwID0gcHJvY2Vzc0Zvck5hdmlnYXRpb24ucHRyKCkg
IT0gJnByb2Nlc3MoKTsKLSAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rp
b24sIG5hdmlnYXRpb24ucHRyKCksIHNob3VsZFByb2Nlc3NTd2FwID8gV1RGOjpudWxsb3B0IDog
V1RGTW92ZShkYXRhKSwgV1RGTW92ZShzZW5kZXIpKTsKKyAgICAgICAgcmVjZWl2ZWRQb2xpY3lE
ZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24ucHRyKCksIHNob3VsZFByb2Nlc3NTd2Fw
ID8gV1RGOjpudWxsb3B0IDogV1RGTW92ZShkYXRhKSwgV1RGTW92ZShzZW5kZXIpLCBzaG91bGRQ
cm9jZXNzU3dhcCA/IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6OlllcyA6IFdpbGxDb250
aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vKTsKIAogICAgICAgICBpZiAoIXNob3VsZFByb2Nlc3NT
d2FwKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjczMCw3ICsyNzMwLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBw
b2xpY3lBY3Rpb24sIEEKICAgICB9KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVk
UG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZp
Z2F0aW9uLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywg
UmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlcikKK3ZvaWQgV2ViUGFnZVByb3h5Ojpy
ZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2aWdhdGlv
biogbmF2aWdhdGlvbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9s
aWNpZXMsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIsIFdpbGxDb250aW51ZUxv
YWRJbk5ld1Byb2Nlc3Mgd2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcykKIHsKICAgICBpZiAo
IWlzVmFsaWQoKSkgewogICAgICAgICBzZW5kZXItPnNlbmQoUG9saWN5QWN0aW9uOjpJZ25vcmUs
IDAsIERvd25sb2FkSUQoKSwgV1RGOjpudWxsb3B0KTsKQEAgLTI3MzksNyArMjczOSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rp
b24sIEFQSTo6TmF2aWdhdGlvbioKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2Fk
U3RhdGUudHJhbnNhY3Rpb24oKTsKIAotICAgIGlmIChhY3Rpb24gPT0gUG9saWN5QWN0aW9uOjpJ
Z25vcmUpCisgICAgaWYgKGFjdGlvbiA9PSBQb2xpY3lBY3Rpb246Oklnbm9yZSAmJiB3aWxsQ29u
dGludWVMb2FkSW5OZXdQcm9jZXNzID09IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5v
KQogICAgICAgICBtX3BhZ2VMb2FkU3RhdGUuY2xlYXJQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFu
c2FjdGlvbik7CiAKICAgICBEb3dubG9hZElEIGRvd25sb2FkSUQgPSB7IH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGE1ZWMxNjA1OTFhZmMzYTE3MjBiNzJjODQ3
OTNjNDQ0MzRkMTM3MmIuLjI5ZWU5NjU1OTAzMTk4OWQzNWYyOTUwZjcxNmY2YmRhNWU1ZmY3NmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC05NzIsNyArOTcyLDgg
QEAgcHVibGljOgogI2VuZGlmCiAKICAgICBjbGFzcyBQb2xpY3lEZWNpc2lvblNlbmRlcjsKLSAg
ICB2b2lkIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBBUEk6
Ok5hdmlnYXRpb24qLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBSZWY8UG9saWN5
RGVjaXNpb25TZW5kZXI+JiYpOworICAgIGVudW0gY2xhc3MgV2lsbENvbnRpbnVlTG9hZEluTmV3
UHJvY2VzcyA6IGJvb2wgeyBObywgWWVzIH07CisgICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lz
aW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiwgT3B0aW9uYWw8V2Vi
c2l0ZVBvbGljaWVzRGF0YT4mJiwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmLCBXaWxsQ29u
dGludWVMb2FkSW5OZXdQcm9jZXNzID0gV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6Tm8p
OwogICAgIHZvaWQgcmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9s
aWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50
LCBXZWJGcmFtZVByb3h5JiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqLCBSZWY8UG9saWN5RGVjaXNp
b25TZW5kZXI+JiYpOwogCiAgICAgdm9pZCBiYWNrRm9yd2FyZFJlbW92ZWRJdGVtKGNvbnN0IFdl
YkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhOWE4YzA1OWY5MGYzOTIyNjMwMGIyN2I2
MGViYjhlZDRlZjhiNmE5Li43ZjYwMjM0MjAxN2FmOTA4Mjg1ODJkY2JlYWE1ZTQ4NjZiZTdhYTc5
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTktMDEtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBSZWdyZXNzaW9uIChyMjQwMDQ2KTogW1BTT05dIFNwdXJpb3VzIGNoYW5nZXMg
dG8gW1dLV2ViVmlldyB1cmxdIGFuZCBbV0tXZWJWaWV3IGxvYWRpbmddIGFmdGVyIFtXS1dlYlZp
ZXcgbG9hZFJlcXVlc3RdCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTM5NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ3NjM1MzQ4PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBUEkgdGVzdCBj
b3ZlcmFnZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJv
Y2Vzc1N3YXBPbk5hdmlnYXRpb24ubW06CisgICAgICAgICgtW1BTT05Mb2FkaW5nT2JzZXJ2ZXIg
b2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKwogMjAx
OS0wMS0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04gKFBTT04pOiBUd2l0dGVyIGxpbmsgZ2V0cyBzdHVjayBhdCB0LmNvIGFmdGVyIG5hdmln
YXRpbmcgYmFjayBpbiB0YWIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCmluZGV4IGQ1
ZGMzNWJiN2MxZjhjZGM2ZGU1MDE0MWVlMTVlYTBiMTdmNThhOGQuLjBiNTdlNDY5NDM0MGIyMDA3
YzNhNjNiMzNiNzIyZTVhMDk0NmYyZTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5t
bQpAQCAtMzQ2NCw2ICszNDY0LDg4IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENsb3NlUGFnZUFmdGVy
Q3Jvc3NTaXRlUHJvdmlzaW9uYWxMb2FkKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVw
KDAuNSk7CiB9CiAKK3N0YXRpYyBWZWN0b3I8Ym9vbD4gbG9hZGluZ1N0YXRlQ2hhbmdlczsKKwor
QGludGVyZmFjZSBQU09OTG9hZGluZ09ic2VydmVyIDogTlNPYmplY3QKK0BlbmQKKworQGltcGxl
bWVudGF0aW9uIFBTT05Mb2FkaW5nT2JzZXJ2ZXIKKworLSh2b2lkKW9ic2VydmVWYWx1ZUZvcktl
eVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNE
aWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQgKiljb250ZXh0Cit7CisgICAgRVhQRUNU
X1dLX1NUUkVRKEAibG9hZGluZyIsIGtleVBhdGgpOworCisgICAgV0tXZWJWaWV3ICp3ZWJWaWV3
ID0gKFdLV2ViVmlldyAqKWNvbnRleHQ7CisgICAgbG9hZGluZ1N0YXRlQ2hhbmdlcy5hcHBlbmQo
W3dlYlZpZXcgaXNMb2FkaW5nXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAicHNvbjovL3d3dy5h
cHBsZS5jb20vbWFpbi5odG1sIiwgW1t3ZWJWaWV3IFVSTF0gYWJzb2x1dGVTdHJpbmddKTsKK30K
KworQGVuZAorCitURVNUKFByb2Nlc3NTd2FwLCBMb2FkaW5nU3RhdGVBZnRlclBvbGljeURlY2lz
aW9uKQoreworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19X
S1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAg
YXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdp
dGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAg
YXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFByb2Nlc3NQ
b29sOnByb2Nlc3NQb29sLmdldCgpXTsKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbUFNP
TlNjaGVtZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRVUkxT
Y2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiUFNPTiJdOworCisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0
aW9uLmdldCgpXSk7CisgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbUFNP
Tk5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldE5hdmln
YXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZpZXcg
Y29uZmlndXJhdGlvbl0ucHJlZmVyZW5jZXMuc2FmZUJyb3dzaW5nRW5hYmxlZCA9IE5POworCisg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAInBzb246Ly93d3cud2Via2l0Lm9yZy9tYWluLmh0bWwiXV1dOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOwor
CisgICAgYXV0byBsb2FkT2JzZXJ2ZXIgPSBhZG9wdE5TKFtbUFNPTkxvYWRpbmdPYnNlcnZlciBh
bGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IGFkZE9ic2VydmVyOmxvYWRPYnNlcnZlci5nZXQo
KSBmb3JLZXlQYXRoOkAibG9hZGluZyIgb3B0aW9uczowIGNvbnRleHQ6d2ViVmlldy5nZXQoKV07
CisKKyAgICBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJwc29uOi8vd3d3LmFwcGxlLmNvbS9tYWluLmh0bWwiXV1dOworICAgIEVYUEVDVF9XS19T
VFJFUShAInBzb246Ly93d3cuYXBwbGUuY29tL21haW4uaHRtbCIsIFtbd2ViVmlldyBVUkxdIGFi
c29sdXRlU3RyaW5nXSk7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgaXNMb2FkaW5nXSk7CisK
KyAgICBFWFBFQ1RfRVEoMVUsIGxvYWRpbmdTdGF0ZUNoYW5nZXMuc2l6ZSgpKTsKKyAgICBFWFBF
Q1RfVFJVRShsb2FkaW5nU3RhdGVDaGFuZ2VzWzBdKTsKKworICAgIG5hdmlnYXRpb25EZWxlZ2F0
ZS0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiA9IF4oV0tOYXZpZ2F0aW9uQWN0aW9u
ICosIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkpIHsK
KyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKEAicHNvbjovL3d3dy5hcHBsZS5jb20vbWFpbi5odG1s
IiwgW1t3ZWJWaWV3IFVSTF0gYWJzb2x1dGVTdHJpbmddKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
W3dlYlZpZXcgaXNMb2FkaW5nXSk7CisKKyAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdh
dGlvbkFjdGlvblBvbGljeUFsbG93KTsKKworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJwc29u
Oi8vd3d3LmFwcGxlLmNvbS9tYWluLmh0bWwiLCBbW3dlYlZpZXcgVVJMXSBhYnNvbHV0ZVN0cmlu
Z10pOworICAgICAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBpc0xvYWRpbmddKTsKKyAgICB9Owor
CisgICAgRVhQRUNUX0VRKDFVLCBsb2FkaW5nU3RhdGVDaGFuZ2VzLnNpemUoKSk7CisKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKTsKKyAgICBk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZCA9IGZhbHNlOworCisgICAgRVhQRUNUX0VRKDFVLCBsb2Fk
aW5nU3RhdGVDaGFuZ2VzLnNpemUoKSk7CisKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJwc29uOi8v
d3d3LmFwcGxlLmNvbS9tYWluLmh0bWwiLCBbW3dlYlZpZXcgVVJMXSBhYnNvbHV0ZVN0cmluZ10p
OworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IGlzTG9hZGluZ10pOworCisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoQCJwc29uOi8vd3d3LmFwcGxlLmNvbS9tYWluLmh0bWwiLCBbW3dlYlZpZXcgVVJM
XSBhYnNvbHV0ZVN0cmluZ10pOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBpc0xvYWRpbmdd
KTsKKworICAgIEVYUEVDVF9FUSgyVSwgbG9hZGluZ1N0YXRlQ2hhbmdlcy5zaXplKCkpOworICAg
IEVYUEVDVF9GQUxTRShsb2FkaW5nU3RhdGVDaGFuZ2VzWzFdKTsKKworICAgIFt3ZWJWaWV3IHJl
bW92ZU9ic2VydmVyOmxvYWRPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAibG9hZGluZyIgY29u
dGV4dDp3ZWJWaWV3LmdldCgpXTsKK30KKwogI2lmIFBMQVRGT1JNKE1BQykKIAogc3RhdGljIGNv
bnN0IGNoYXIqIHNhdmVPcGVuZXJUZXN0Qnl0ZXMgPSBSIlBTT05SRVNPVVJDRSgK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360487</attachid>
            <date>2019-01-29 12:15:06 -0800</date>
            <delta_ts>2019-01-29 13:00:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193967-20190129121505.patch</filename>
            <type>text/plain</type>
            <size>9492</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwNjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkzYzM0YjU4MmQzYWJlZGFk
YTJhNDM4MWNmMDc5NTZmMWRmNmM4ZTkuLmIyODc5ZDlhYjc2NjA2OTI0YzE5ZTUxMjVjMTRkMTg1
OGUxYzlmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTktMDEtMjkgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWdyZXNzaW9uIChyMjQwMDQ2KTog
W1BTT05dIFNwdXJpb3VzIGNoYW5nZXMgdG8gW1dLV2ViVmlldyB1cmxdIGFuZCBbV0tXZWJWaWV3
IGxvYWRpbmddIGFmdGVyIFtXS1dlYlZpZXcgbG9hZFJlcXVlc3RdCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM5NjcKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQ3NjM1MzQ4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVwZGF0ZSBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oKSB0
byBubyBsb25nZXIgY2xlYXIgdGhlIHBlbmRpbmcgVVJMIHdoZW4gd2Ugc2VuZCBQb2xpY3lBY3Rp
b246Oklnbm9yZSB0bworICAgICAgICB0aGUgb2xkIHByb2Nlc3Mgd2hlbiB0aGUgbG9hZCBpcyBj
b250aW51aW5nIGluIGEgbmV3IHByb2Nlc3MgZHVlIHRvIFBTT04uCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpy
ZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oOgorCiAyMDE5LTAxLTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgTWFrZSBzdXJlIFdURjo6Z2VuZXJhdGVPYmplY3RJZGVudGlmaWVyKCkg
aW50ZXJuYWwgY291bnRlciBkb2VzIG5vdCBnZXQgZHVwbGljYXRlZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMWIzMjNmZWQyNjFlNWYwMDEzOGJjN2Q5ZjA1
NmRhOWIxMWYxZGNjNC4uYzQzYWQ5MzRiNzAzNmExZTdmNWY2ZTI3ZjM4YWRmYTI1NDk4ZTI1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yNzE3LDcgKzI3
MTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNp
b24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogICAgICAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uOiBrZWVwIHVzaW5nIHByb2Nlc3MgJWkgZm9yIG5hdmlnYXRpb24sIHJlYXNvbjogJXtwdWJs
aWN9cyIsIHByb2Nlc3NJZGVudGlmaWVyKCksIHJlYXNvbi51dGY4KCkuZGF0YSgpKTsKIAogICAg
ICAgICBib29sIHNob3VsZFByb2Nlc3NTd2FwID0gcHJvY2Vzc0Zvck5hdmlnYXRpb24ucHRyKCkg
IT0gJnByb2Nlc3MoKTsKLSAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rp
b24sIG5hdmlnYXRpb24ucHRyKCksIHNob3VsZFByb2Nlc3NTd2FwID8gV1RGOjpudWxsb3B0IDog
V1RGTW92ZShkYXRhKSwgV1RGTW92ZShzZW5kZXIpKTsKKyAgICAgICAgcmVjZWl2ZWRQb2xpY3lE
ZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24ucHRyKCksIHNob3VsZFByb2Nlc3NTd2Fw
ID8gV1RGOjpudWxsb3B0IDogV1RGTW92ZShkYXRhKSwgV1RGTW92ZShzZW5kZXIpLCBzaG91bGRQ
cm9jZXNzU3dhcCA/IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6OlllcyA6IFdpbGxDb250
aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vKTsKIAogICAgICAgICBpZiAoIXNob3VsZFByb2Nlc3NT
d2FwKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjczMCw3ICsyNzMwLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBw
b2xpY3lBY3Rpb24sIEEKICAgICB9KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVk
UG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZp
Z2F0aW9uLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywg
UmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlcikKK3ZvaWQgV2ViUGFnZVByb3h5Ojpy
ZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2aWdhdGlv
biogbmF2aWdhdGlvbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9s
aWNpZXMsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIsIFdpbGxDb250aW51ZUxv
YWRJbk5ld1Byb2Nlc3Mgd2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcykKIHsKICAgICBpZiAo
IWlzVmFsaWQoKSkgewogICAgICAgICBzZW5kZXItPnNlbmQoUG9saWN5QWN0aW9uOjpJZ25vcmUs
IDAsIERvd25sb2FkSUQoKSwgV1RGOjpudWxsb3B0KTsKQEAgLTI3MzksNyArMjczOSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rp
b24sIEFQSTo6TmF2aWdhdGlvbioKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2Fk
U3RhdGUudHJhbnNhY3Rpb24oKTsKIAotICAgIGlmIChhY3Rpb24gPT0gUG9saWN5QWN0aW9uOjpJ
Z25vcmUpCisgICAgaWYgKGFjdGlvbiA9PSBQb2xpY3lBY3Rpb246Oklnbm9yZSAmJiB3aWxsQ29u
dGludWVMb2FkSW5OZXdQcm9jZXNzID09IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5v
KQogICAgICAgICBtX3BhZ2VMb2FkU3RhdGUuY2xlYXJQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFu
c2FjdGlvbik7CiAKICAgICBEb3dubG9hZElEIGRvd25sb2FkSUQgPSB7IH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGE1ZWMxNjA1OTFhZmMzYTE3MjBiNzJjODQ3
OTNjNDQ0MzRkMTM3MmIuLjI5ZWU5NjU1OTAzMTk4OWQzNWYyOTUwZjcxNmY2YmRhNWU1ZmY3NmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC05NzIsNyArOTcyLDgg
QEAgcHVibGljOgogI2VuZGlmCiAKICAgICBjbGFzcyBQb2xpY3lEZWNpc2lvblNlbmRlcjsKLSAg
ICB2b2lkIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBBUEk6
Ok5hdmlnYXRpb24qLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBSZWY8UG9saWN5
RGVjaXNpb25TZW5kZXI+JiYpOworICAgIGVudW0gY2xhc3MgV2lsbENvbnRpbnVlTG9hZEluTmV3
UHJvY2VzcyA6IGJvb2wgeyBObywgWWVzIH07CisgICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lz
aW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiwgT3B0aW9uYWw8V2Vi
c2l0ZVBvbGljaWVzRGF0YT4mJiwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmLCBXaWxsQ29u
dGludWVMb2FkSW5OZXdQcm9jZXNzID0gV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6Tm8p
OwogICAgIHZvaWQgcmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9s
aWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50
LCBXZWJGcmFtZVByb3h5JiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqLCBSZWY8UG9saWN5RGVjaXNp
b25TZW5kZXI+JiYpOwogCiAgICAgdm9pZCBiYWNrRm9yd2FyZFJlbW92ZWRJdGVtKGNvbnN0IFdl
YkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhOWE4YzA1OWY5MGYzOTIyNjMwMGIyN2I2
MGViYjhlZDRlZjhiNmE5Li43ZjYwMjM0MjAxN2FmOTA4Mjg1ODJkY2JlYWE1ZTQ4NjZiZTdhYTc5
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTktMDEtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBSZWdyZXNzaW9uIChyMjQwMDQ2KTogW1BTT05dIFNwdXJpb3VzIGNoYW5nZXMg
dG8gW1dLV2ViVmlldyB1cmxdIGFuZCBbV0tXZWJWaWV3IGxvYWRpbmddIGFmdGVyIFtXS1dlYlZp
ZXcgbG9hZFJlcXVlc3RdCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTM5NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ3NjM1MzQ4PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBUEkgdGVzdCBj
b3ZlcmFnZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJv
Y2Vzc1N3YXBPbk5hdmlnYXRpb24ubW06CisgICAgICAgICgtW1BTT05Mb2FkaW5nT2JzZXJ2ZXIg
b2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKwogMjAx
OS0wMS0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04gKFBTT04pOiBUd2l0dGVyIGxpbmsgZ2V0cyBzdHVjayBhdCB0LmNvIGFmdGVyIG5hdmln
YXRpbmcgYmFjayBpbiB0YWIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCmluZGV4IGQ1
ZGMzNWJiN2MxZjhjZGM2ZGU1MDE0MWVlMTVlYTBiMTdmNThhOGQuLmRiN2MwNTZhMTQ5ODNiZWMx
NmMxYjhjZWY0YTVkZWVhZDQ3OGE5NjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5t
bQpAQCAtMzQ2NCw2ICszNDY0LDk4IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENsb3NlUGFnZUFmdGVy
Q3Jvc3NTaXRlUHJvdmlzaW9uYWxMb2FkKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVw
KDAuNSk7CiB9CiAKK3N0YXRpYyBWZWN0b3I8Ym9vbD4gbG9hZGluZ1N0YXRlQ2hhbmdlczsKK3N0
YXRpYyB1bnNpZ25lZCB1cmxDaGFuZ2VDb3VudDsKKworQGludGVyZmFjZSBQU09OTG9hZGluZ09i
c2VydmVyIDogTlNPYmplY3QKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFBTT05Mb2FkaW5nT2Jz
ZXJ2ZXIKKworLSh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0
aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRl
eHQ6KHZvaWQgKiljb250ZXh0Cit7CisgICAgV0tXZWJWaWV3ICp3ZWJWaWV3ID0gKFdLV2ViVmll
dyAqKWNvbnRleHQ7CisKKyAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAibG9hZGlu
ZyJdKQorICAgICAgICBsb2FkaW5nU3RhdGVDaGFuZ2VzLmFwcGVuZChbd2ViVmlldyBpc0xvYWRp
bmddKTsKKyAgICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJVUkwiXSkKKyAg
ICAgICAgKyt1cmxDaGFuZ2VDb3VudDsKKworICAgIEVYUEVDVF9XS19TVFJFUShAInBzb246Ly93
d3cuYXBwbGUuY29tL21haW4uaHRtbCIsIFtbd2ViVmlldyBVUkxdIGFic29sdXRlU3RyaW5nXSk7
Cit9CisKK0BlbmQKKworVEVTVChQcm9jZXNzU3dhcCwgTG9hZGluZ1N0YXRlQWZ0ZXJQb2xpY3lE
ZWNpc2lvbikKK3sKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOwor
ICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2lu
aXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKwor
ICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRQcm9j
ZXNzUG9vbDpwcm9jZXNzUG9vbC5nZXQoKV07CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhb
W1BTT05TY2hlbWUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0
VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAIlBTT04iXTsKKwor
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmln
dXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhb
W1BTT05OYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXRO
YXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKKworICAgIFt3ZWJW
aWV3IGNvbmZpZ3VyYXRpb25dLnByZWZlcmVuY2VzLnNhZmVCcm93c2luZ0VuYWJsZWQgPSBOTzsK
KworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJwc29uOi8vd3d3LndlYmtpdC5vcmcvbWFpbi5odG1sIl1d
XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxz
ZTsKKworICAgIGF1dG8gbG9hZE9ic2VydmVyID0gYWRvcHROUyhbW1BTT05Mb2FkaW5nT2JzZXJ2
ZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBhZGRPYnNlcnZlcjpsb2FkT2JzZXJ2ZXIu
Z2V0KCkgZm9yS2V5UGF0aDpAImxvYWRpbmciIG9wdGlvbnM6MCBjb250ZXh0OndlYlZpZXcuZ2V0
KCldOworICAgIFt3ZWJWaWV3IGFkZE9ic2VydmVyOmxvYWRPYnNlcnZlci5nZXQoKSBmb3JLZXlQ
YXRoOkAiVVJMIiBvcHRpb25zOjAgY29udGV4dDp3ZWJWaWV3LmdldCgpXTsKKworICAgIHVybENo
YW5nZUNvdW50ID0gMDsKKyAgICBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZCA9IGZhbHNlOworICAg
IFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJwc29uOi8vd3d3LmFwcGxlLmNvbS9tYWluLmh0bWwiXV1dOworICAg
IEVYUEVDVF9XS19TVFJFUShAInBzb246Ly93d3cuYXBwbGUuY29tL21haW4uaHRtbCIsIFtbd2Vi
VmlldyBVUkxdIGFic29sdXRlU3RyaW5nXSk7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgaXNM
b2FkaW5nXSk7CisKKyAgICBFWFBFQ1RfRVEoMVUsIGxvYWRpbmdTdGF0ZUNoYW5nZXMuc2l6ZSgp
KTsKKyAgICBFWFBFQ1RfVFJVRShsb2FkaW5nU3RhdGVDaGFuZ2VzWzBdKTsKKyAgICBFWFBFQ1Rf
RVEoMVUsIHVybENoYW5nZUNvdW50KTsKKworICAgIG5hdmlnYXRpb25EZWxlZ2F0ZS0+ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiA9IF4oV0tOYXZpZ2F0aW9uQWN0aW9uICosIHZvaWQg
KF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkpIHsKKyAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKEAicHNvbjovL3d3dy5hcHBsZS5jb20vbWFpbi5odG1sIiwgW1t3ZWJW
aWV3IFVSTF0gYWJzb2x1dGVTdHJpbmddKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcg
aXNMb2FkaW5nXSk7CisKKyAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlv
blBvbGljeUFsbG93KTsKKworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJwc29uOi8vd3d3LmFw
cGxlLmNvbS9tYWluLmh0bWwiLCBbW3dlYlZpZXcgVVJMXSBhYnNvbHV0ZVN0cmluZ10pOworICAg
ICAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBpc0xvYWRpbmddKTsKKyAgICB9OworCisgICAgRVhQ
RUNUX0VRKDFVLCBsb2FkaW5nU3RhdGVDaGFuZ2VzLnNpemUoKSk7CisKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKTsKKyAgICBkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZCA9IGZhbHNlOworCisgICAgRVhQRUNUX0VRKDFVLCBsb2FkaW5nU3RhdGVD
aGFuZ2VzLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDFVLCB1cmxDaGFuZ2VDb3VudCk7CisKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoQCJwc29uOi8vd3d3LmFwcGxlLmNvbS9tYWluLmh0bWwiLCBbW3dl
YlZpZXcgVVJMXSBhYnNvbHV0ZVN0cmluZ10pOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IGlz
TG9hZGluZ10pOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBk
b25lID0gZmFsc2U7CisKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJwc29uOi8vd3d3LmFwcGxlLmNv
bS9tYWluLmh0bWwiLCBbW3dlYlZpZXcgVVJMXSBhYnNvbHV0ZVN0cmluZ10pOworICAgIEVYUEVD
VF9GQUxTRShbd2ViVmlldyBpc0xvYWRpbmddKTsKKworICAgIEVYUEVDVF9FUSgyVSwgbG9hZGlu
Z1N0YXRlQ2hhbmdlcy5zaXplKCkpOworICAgIEVYUEVDVF9GQUxTRShsb2FkaW5nU3RhdGVDaGFu
Z2VzWzFdKTsKKyAgICBFWFBFQ1RfRVEoMVUsIHVybENoYW5nZUNvdW50KTsKKworICAgIFt3ZWJW
aWV3IHJlbW92ZU9ic2VydmVyOmxvYWRPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAibG9hZGlu
ZyIgY29udGV4dDp3ZWJWaWV3LmdldCgpXTsKKyAgICBbd2ViVmlldyByZW1vdmVPYnNlcnZlcjps
b2FkT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIlVSTCIgY29udGV4dDp3ZWJWaWV3LmdldCgp
XTsKK30KKwogI2lmIFBMQVRGT1JNKE1BQykKIAogc3RhdGljIGNvbnN0IGNoYXIqIHNhdmVPcGVu
ZXJUZXN0Qnl0ZXMgPSBSIlBTT05SRVNPVVJDRSgK
</data>

          </attachment>
      

    </bug>

</bugzilla>