<?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>193740</bug_id>
          
          <creation_ts>2019-01-23 14:41:03 -0800</creation_ts>
          <short_desc>REGRESSION: Flaky ASSERTION FAILED: m_uncommittedState.state == State::Committed on http/tests/cookies/same-site/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page.html</short_desc>
          <delta_ts>2019-03-21 13:20:06 -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>Page Loading</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=191781</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=193788</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Shawn Roberts">sroberts</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>japhet</cc>
    
    <cc>jlewis3</cc>
    
    <cc>lforschler</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>rniwa</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1497576</commentid>
    <comment_count>0</comment_count>
    <who name="Shawn Roberts">sroberts</who>
    <bug_when>2019-01-23 14:41:03 -0800</bug_when>
    <thetext>The following layout test is flaky on Mojave Debug

http/tests/cookies/same-site/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page.html

Probable cause:

This test became flakey around 1/8/2019. Is a regression, we do not know the regression point. It looks like an assertion failure.

Flakiness Dashboard:

https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=http%2Ftests%2Fcookies%2Fsame-site%2Ffetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page.html


Crash Log: 

https://build.webkit.org/results/Apple%20Mojave%20Debug%20WK2%20(Tests)/r240342%20(1286)/http/tests/cookies/same-site/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page-crash-log.txt


ASSERTION FAILED: m_uncommittedState.state == State::Committed
/Volumes/Data/slave/mojave-debug/build/Source/WebKit/UIProcess/PageLoadState.cpp(298) : void WebKit::PageLoadState::didFinishLoad(const Transaction::Token &amp;)
1   0x10ef54b69 WTFCrash
2   0x11816e66b WTFCrashWithInfo(int, char const*, char const*, int)
3   0x1188c08fd WebKit::PageLoadState::didFinishLoad(WebKit::PageLoadState::Transaction::Token const&amp;)
4   0x118a78d72 WebKit::WebPageProxy::didFinishLoadForFrame(unsigned long long, unsigned long long, WebKit::UserData const&amp;)
5   0x1193f021e void IPC::callMemberFunctionImpl&lt;WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WebKit::UserData const&amp;), std::__1::tuple&lt;unsigned long long, unsigned long long, WebKit::UserData&gt;, 0ul, 1ul, 2ul&gt;(WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WebKit::UserData const&amp;), std::__1::tuple&lt;unsigned long long, unsigned long long, WebKit::UserData&gt;&amp;&amp;, std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul, 2ul&gt;)
6   0x1193eff40 void IPC::callMemberFunction&lt;WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WebKit::UserData const&amp;), std::__1::tuple&lt;unsigned long long, unsigned long long, WebKit::UserData&gt;, std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul, 2ul&gt; &gt;(std::__1::tuple&lt;unsigned long long, unsigned long long, WebKit::UserData&gt;&amp;&amp;, WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WebKit::UserData const&amp;))
7   0x1193d01fb void IPC::handleMessage&lt;Messages::WebPageProxy::DidFinishLoadForFrame, WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WebKit::UserData const&amp;)&gt;(IPC::Decoder&amp;, WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WebKit::UserData const&amp;))
8   0x1193c56f8 WebKit::WebPageProxy::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
9   0x118210c3a IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
10  0x11889b414 WebKit::ChildProcessProxy::dispatchMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
11  0x118b69e7a WebKit::WebProcessProxy::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
12  0x1181b616c IPC::Connection::dispatchMessage(IPC::Decoder&amp;)
13  0x1181a8551 IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)
14  0x1181b35c1 IPC::Connection::dispatchIncomingMessages()
15  0x1181d7c92 IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)::$_14::operator()()
16  0x1181d7bb9 WTF::Function&lt;void ()&gt;::CallableWrapper&lt;IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)::$_14&gt;::call()
17  0x10ef7e14d WTF::Function&lt;void ()&gt;::operator()() const
18  0x10efe6813 WTF::RunLoop::performWork()
19  0x10efe71a4 WTF::RunLoop::performWork(void*)
20  0x7fff4a8e51d9 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
21  0x7fff4a8e517f __CFRunLoopDoSource0
22  0x7fff4a8c902c __CFRunLoopDoSources0
23  0x7fff4a8c85d3 __CFRunLoopRun
24  0x7fff4a8c7eb6 CFRunLoopRunSpecific
25  0x7fff4cc4c4aa -[NSRunLoop(NSRunLoop) runMode:beforeDate:]
26  0x10ed5abd0 WTR::TestController::platformRunUntil(bool&amp;, WTF::Seconds)
27  0x10ed1b2ff WTR::TestController::runUntil(bool&amp;, WTF::Seconds)
28  0x10ed5dced WTR::TestInvocation::invoke()
29  0x10ed2c65f WTR::TestController::runTest(char const*)
30  0x10ed304a9 WTR::TestController::runTestingServerLoop()
31  0x10ed1c056 WTR::TestController::run()
LEAK: 1 CachedResource</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497932</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-24 13:46:56 -0800</bug_when>
    <thetext>&lt;rdar://problem/47527267&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501210</commentid>
    <comment_count>2</comment_count>
      <attachid>360882</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-02-01 12:10:55 -0800</bug_when>
    <thetext>Created attachment 360882
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501212</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-02-01 12:13:23 -0800</bug_when>
    <thetext>Attachment 360882 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:2578:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:2587:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:2588:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:2589:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:2590:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:2592:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
Total errors found: 6 in 13 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>1501215</commentid>
    <comment_count>4</comment_count>
      <attachid>360883</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-02-01 12:22:10 -0800</bug_when>
    <thetext>Created attachment 360883
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501219</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-02-01 12:24:12 -0800</bug_when>
    <thetext>Attachment 360883 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:2578:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:2587:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:2588:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:2589:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:2590:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:2592:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
Total errors found: 6 in 13 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>1501274</commentid>
    <comment_count>6</comment_count>
      <attachid>360883</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-02-01 14:12:52 -0800</bug_when>
    <thetext>Comment on attachment 360883
Patch

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

&gt; Source/WebCore/loader/PolicyChecker.cpp:219
&gt; +            function({ }, nullptr, { }, { }, ShouldContinue::No);

If this were before Ignore it could just assert then fall through.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501287</commentid>
    <comment_count>7</comment_count>
      <attachid>360883</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-02-01 14:25:34 -0800</bug_when>
    <thetext>Comment on attachment 360883
Patch

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

&gt;&gt; Source/WebCore/loader/PolicyChecker.cpp:219
&gt;&gt; +            function({ }, nullptr, { }, { }, ShouldContinue::No);
&gt; 
&gt; If this were before Ignore it could just assert then fall through.

But there is already the PolicyAction::Download case that falls through unfortunately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501302</commentid>
    <comment_count>8</comment_count>
      <attachid>360883</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-02-01 14:53:10 -0800</bug_when>
    <thetext>Comment on attachment 360883
Patch

Clearing flags on attachment: 360883

Committed r240880: &lt;https://trac.webkit.org/changeset/240880&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501303</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-02-01 14:53:12 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501829</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-04 08:02:33 -0800</bug_when>
    <thetext>Committed r240925: &lt;https://trac.webkit.org/changeset/240925&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505451</commentid>
    <comment_count>11</comment_count>
    <who name="Shawn Roberts">sroberts</who>
    <bug_when>2019-02-12 15:44:55 -0800</bug_when>
    <thetext>Still crashing on the bots and locally.

Flakiness dashboard:

https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=http%2Ftests%2Fcookies%2Fsame-site%2Ffetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page.html

Reproducible with:

run-webkit-tests d241309 http/tests/cookies/same-site/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page.html --iterations  100 -f --debug


Same Assertion failure from before.

Crash Log :

https://build.webkit.org/results/Apple%20Mojave%20Debug%20WK2%20(Tests)/r241295%20(1556)/http/tests/cookies/same-site/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page-crash-log.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519851</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-21 13:00:56 -0700</bug_when>
    <thetext>(In reply to Shawn Roberts from comment #11)
&gt; Still crashing on the bots and locally.
&gt; 
&gt; Flakiness dashboard:
&gt; 
&gt; https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.
&gt; html#showAllRuns=true&amp;tests=http%2Ftests%2Fcookies%2Fsame-site%2Ffetch-after-
&gt; top-level-navigation-initiated-from-iframe-in-cross-origin-page.html
&gt; 
&gt; Reproducible with:
&gt; 
&gt; run-webkit-tests d241309
&gt; http/tests/cookies/same-site/fetch-after-top-level-navigation-initiated-from-
&gt; iframe-in-cross-origin-page.html --iterations  100 -f --debug
&gt; 
&gt; 
&gt; Same Assertion failure from before.
&gt; 
&gt; Crash Log :
&gt; 
&gt; https://build.webkit.org/results/Apple%20Mojave%20Debug%20WK2%20(Tests)/
&gt; r241295%20(1556)/http/tests/cookies/same-site/fetch-after-top-level-
&gt; navigation-initiated-from-iframe-in-cross-origin-page-crash-log.txt

https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=http%2Ftests%2Fcookies%2Fsame-site%2Ffetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page.html 

seems to indicate this is no longer happening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519871</commentid>
    <comment_count>13</comment_count>
    <who name="Shawn Roberts">sroberts</who>
    <bug_when>2019-03-21 13:19:58 -0700</bug_when>
    <thetext>Issue appears to be resolved. Dashboard is happy, unable to reproduce locally.

Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360882</attachid>
            <date>2019-02-01 12:10:55 -0800</date>
            <delta_ts>2019-02-01 12:22:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193740-20190201121054.patch</filename>
            <type>text/plain</type>
            <size>26662</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwODE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzg0OWM5OTcwZWRkOWM4
YjQ4NDdiYTZmMmRlM2MzY2Y2MzQzNTFhNi4uMDcyMWI0YmE4MTA2NTI2MWQzMDQ1MzZjYjhjNjdm
ZTAzYjlhYjVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE5LTAyLTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTjogRmxha3kg
QVNTRVJUSU9OIEZBSUxFRDogbV91bmNvbW1pdHRlZFN0YXRlLnN0YXRlID09IFN0YXRlOjpDb21t
aXR0ZWQgb24gaHR0cC90ZXN0cy9jb29raWVzL3NhbWUtc2l0ZS9mZXRjaC1hZnRlci10b3AtbGV2
ZWwtbmF2aWdhdGlvbi1pbml0aWF0ZWQtZnJvbS1pZnJhbWUtaW4tY3Jvc3Mtb3JpZ2luLXBhZ2Uu
aHRtbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkz
NzQwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzUyNzI2Nz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBv
bGljeSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpsb2FkVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Ojpsb2FkV2l0aERvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Ojpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kpOgorICAgICAgICAqIGxvYWRlci9G
cmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlclR5cGVzLmg6CisgICAg
ICAgICogbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5
Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlBvbGlj
eUNoZWNrZXI6OmNoZWNrTmV3V2luZG93UG9saWN5KToKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5
Q2hlY2tlci5oOgorCiAyMDE5LTAxLTMxICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNv
bT4KIAogICAgICAgICBXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uIGNvcHkgY29uc3Ry
dWN0b3IgbmVlZHMgdG8gYmUgYmUgZGVmYXVsdCwgbm90IGRlbGV0ZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2NWRk
ZDE3Y2VjYTc2NGIxYmFjMGVhZDAwOTU1MTQxMjI4YTgyZmQxLi4zOWU3YmExZWFkNzA2MjI0NTQ2
NzZjZmFkNjEzMmNhNWFjMjdkNGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE5LTAy
LTAxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lP
TjogRmxha3kgQVNTRVJUSU9OIEZBSUxFRDogbV91bmNvbW1pdHRlZFN0YXRlLnN0YXRlID09IFN0
YXRlOjpDb21taXR0ZWQgb24gaHR0cC90ZXN0cy9jb29raWVzL3NhbWUtc2l0ZS9mZXRjaC1hZnRl
ci10b3AtbGV2ZWwtbmF2aWdhdGlvbi1pbml0aWF0ZWQtZnJvbS1pZnJhbWUtaW4tY3Jvc3Mtb3Jp
Z2luLXBhZ2UuaHRtbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkzNzQwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzUyNzI2Nz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgaXNzdWUgd2FzIGhh
cHBlbmluZyB3aGVuIHRoZSBwYWdlIGlzIHRyaWdnZXJpbmcgYSBjcm9zcy1zaXRlIG5hdmlnYXRp
b24gd2hpbGUgaW4gdGhlIG1pZGRsZSBvZiBwYXJzaW5nLiBUaGlzIHdvdWxkIGNhdXNlIHVzIHRv
CisgICAgICAgIHN0YXJ0IGEgbmV3IHByb3Zpc2lvbmFsIGxvYWQgaW4gYSBuZXcgcHJvY2VzcyBi
ZWZvcmUgdGhlIHByZXZpb3VzIHByb2Nlc3Mgc2VuZHMgdGhlIERpZEZpbmlzaExvYWRGb3JGcmFt
ZSgpIElQQyB0byB0aGUgVUlQcm9jZXNzLgorICAgICAgICBHZXR0aW5nIHN1Y2ggSVBDIGFmdGVy
IGEgcHJvdmlzaW9uYWwgbG9hZCBoYXMgc3RhcnRlZCB3b3VsZCBtZXNzIHVwIG91ciBzdGF0ZSBt
YWNoaW5lIGFuZCB0cmlwIGFzc2VydGlvbnMuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZXN0b3Jl
cyBub24tUFNPTiBiZWhhdmlvciB3aGljaCBpcyB0aGF0IHRoZSBwcmV2aW91cyBsb2FkIGluIHRo
ZSBvbGQgcHJvY2VzcyBub3cgZ2V0cyBzdG9wcGVkIHNvIHRoYXQgbm8gRGlkRmluaXNoTG9hZEZv
ckZyYW1lKCkKKyAgICAgICAgLyBEaWRGYWlsTG9hZEZvckZyYW1lKCkgZ2V0cyBzZW50LiBUbyBh
Y2hpZXZlIHRoaXMgYmVoYXZpb3IsIEkgaW50cm9kdWNlZCBhIG5ldyAiU3RvcEFsbExvYWRzIiBQ
b2xpY3lBY3Rpb24gdGhhdCB3ZSBub3cgc2VuZCB0aGUgb2xkCisgICAgICAgIHByb2Nlc3Mgd2hl
biB0aGUgbG9hZCBpcyBjb250aW51aW5nIGluIGEgbmV3IHByb2Nlc3MsIGluc3RlYWQgb2Ygc2Vu
ZGluZyBpdCAiSWdub3JlIi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFza0Jsb2IuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaXNw
YXRjaERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKHRvTlNVUkxTZXNzaW9uUmVzcG9uc2VE
aXNwb3NpdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNp
b24pOgorCiAyMDE5LTAxLTMxICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4K
IAogICAgICAgICBbbWFjT1NdIERpc2FibGUgcGVybWlzc2l2ZSBjYWxsIGxvZ2dpbmcgaW4gc2Fu
ZGJveApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggMTM1ZDI5
ZTQyMTJmZjFmMDFmNGM3ZDM0YWZmNzA2NzMyMDhhZGNlMS4uZWI2MjMwNDM0YTMxNTFjMzIxMzQw
ODdhZmRlOWJiYzExZTdlNmYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCkBAIC02NDUsMTMgKzY0NSwxNCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2Vu
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyYwogICAg
IGlmICghZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UpCiAgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKIAotICAgIGF1dG8gbmF2aWdhdGlvblBv
bGljeUNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0YXRlPiYmLCBTaG91bGRDb250
aW51ZSBzaG91bGRDb250aW51ZSkgbXV0YWJsZSB7CisgICAgYXV0byBuYXZpZ2F0aW9uUG9saWN5
Q29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2Vha1B0cjxGb3JtU3RhdGU+JiYsIE5hdmlnYXRpb25Qb2xp
Y3lEZWNpc2lvbiBuYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24pIG11dGFibGUgewogICAgICAgICBt
X3dhaXRpbmdGb3JOYXZpZ2F0aW9uUG9saWN5ID0gZmFsc2U7Ci0gICAgICAgIHN3aXRjaCAoc2hv
dWxkQ29udGludWUpIHsKLSAgICAgICAgY2FzZSBTaG91bGRDb250aW51ZTo6Tm86CisgICAgICAg
IHN3aXRjaCAobmF2aWdhdGlvblBvbGljeURlY2lzaW9uKSB7CisgICAgICAgIGNhc2UgTmF2aWdh
dGlvblBvbGljeURlY2lzaW9uOjpJZ25vcmVMb2FkOgorICAgICAgICBjYXNlIE5hdmlnYXRpb25Q
b2xpY3lEZWNpc2lvbjo6U3RvcEFsbExvYWRzOgogICAgICAgICAgICAgc3RvcExvYWRpbmdGb3JQ
b2xpY3lDaGFuZ2UoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNob3VsZENv
bnRpbnVlOjpZZXM6CisgICAgICAgIGNhc2UgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uOjpDb250
aW51ZUxvYWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC05MzUsNiArOTM2
LDggQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3koUG9s
aWN5QWN0aW9uIHBvbGljeSkKICAgICAgICAgICAgIHN0YXRpY19jYXN0PFJlc291cmNlTG9hZGVy
Kj4obWFpblJlc291cmNlTG9hZGVyKCkpLT5kaWRGYWlsKGludGVycnVwdGVkRm9yUG9saWN5Q2hh
bmdlRXJyb3IoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBQb2xpY3lBY3Rp
b246OlN0b3BBbGxMb2FkczoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgY2Fz
ZSBQb2xpY3lBY3Rpb246Oklnbm9yZToKICAgICAgICAgaWYgKFJlc291cmNlTG9hZGVyKiBtYWlu
UmVzb3VyY2VMb2FkZXIgPSB0aGlzLT5tYWluUmVzb3VyY2VMb2FkZXIoKSkKICAgICAgICAgICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29udGludWVXaXRoUG9saWN5SWdub3JlKCptX2Zy
YW1lLCBtYWluUmVzb3VyY2VMb2FkZXItPmlkZW50aWZpZXIoKSwgKnRoaXMsIG1fcmVzcG9uc2Up
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggMGEwZDdlNzdmN2IzMjU5
MjY2YWQ1OTNjYmNjZTcwMjkyMGY4MTA2Ni4uMmVmZDE3NjFjYTA3NGIyN2NiNTU0OTgyOGJlZWMx
YTNlZTU5YjI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xMzk4
LDggKzEzOTgsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKEZyYW1lTG9hZFJlcXVlc3Qm
JiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZgogICAgICAgICBvbGREb2N1bWVu
dExvYWRlci0+c2V0TGFzdENoZWNrZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCgpKTsKICAgICAg
ICAgcG9saWN5Q2hlY2tlcigpLnN0b3BDaGVjaygpOwogICAgICAgICBwb2xpY3lDaGVja2VyKCku
c2V0TG9hZFR5cGUobmV3TG9hZFR5cGUpOwotICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tO
YXZpZ2F0aW9uUG9saWN5KFdURk1vdmUocmVxdWVzdCksIFJlc291cmNlUmVzcG9uc2UgeyB9IC8q
IHJlZGlyZWN0UmVzcG9uc2UgKi8sIG9sZERvY3VtZW50TG9hZGVyLmdldCgpLCBXVEZNb3ZlKGZv
cm1TdGF0ZSksIFt0aGlzLCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSldIChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0YXRlPiYmLCBTaG91bGRD
b250aW51ZSBzaG91bGRDb250aW51ZSkgewotICAgICAgICAgICAgY29udGludWVGcmFnbWVudFNj
cm9sbEFmdGVyTmF2aWdhdGlvblBvbGljeShyZXF1ZXN0LCBzaG91bGRDb250aW51ZSA9PSBTaG91
bGRDb250aW51ZTo6WWVzKTsKKyAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmF2aWdhdGlv
blBvbGljeShXVEZNb3ZlKHJlcXVlc3QpLCBSZXNvdXJjZVJlc3BvbnNlIHsgfSAvKiByZWRpcmVj
dFJlc3BvbnNlICovLCBvbGREb2N1bWVudExvYWRlci5nZXQoKSwgV1RGTW92ZShmb3JtU3RhdGUp
LCBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpXSAoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiwgTmF2aWdhdGlvblBvbGlj
eURlY2lzaW9uIG5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbikgeworICAgICAgICAgICAgY29udGlu
dWVGcmFnbWVudFNjcm9sbEFmdGVyTmF2aWdhdGlvblBvbGljeShyZXF1ZXN0LCBuYXZpZ2F0aW9u
UG9saWN5RGVjaXNpb24gPT0gTmF2aWdhdGlvblBvbGljeURlY2lzaW9uOjpDb250aW51ZUxvYWQp
OwogICAgICAgICB9LCBQb2xpY3lEZWNpc2lvbk1vZGU6OlN5bmNocm9ub3VzKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTE1OTUsOCArMTU5NSw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6Omxv
YWRXaXRoRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgRnJhbWVMb2FkVHlw
ZSB0CiAgICAgICAgIG9sZERvY3VtZW50TG9hZGVyLT5zZXRUcmlnZ2VyaW5nQWN0aW9uKFdURk1v
dmUoYWN0aW9uKSk7CiAgICAgICAgIG9sZERvY3VtZW50TG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0KCkpOwogICAgICAgICBwb2xpY3lDaGVja2VyKCkuc3RvcENo
ZWNrKCk7Ci0gICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3koUmVz
b3VyY2VSZXF1ZXN0KGxvYWRlci0+cmVxdWVzdCgpKSwgUmVzb3VyY2VSZXNwb25zZSB7IH0gIC8q
IHJlZGlyZWN0UmVzcG9uc2UgKi8sIG9sZERvY3VtZW50TG9hZGVyLmdldCgpLCBXVEZNb3ZlKGZv
cm1TdGF0ZSksIFt0aGlzLCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSldIChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0YXRlPiYmLCBTaG91bGRD
b250aW51ZSBzaG91bGRDb250aW51ZSkgewotICAgICAgICAgICAgY29udGludWVGcmFnbWVudFNj
cm9sbEFmdGVyTmF2aWdhdGlvblBvbGljeShyZXF1ZXN0LCBzaG91bGRDb250aW51ZSA9PSBTaG91
bGRDb250aW51ZTo6WWVzKTsKKyAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmF2aWdhdGlv
blBvbGljeShSZXNvdXJjZVJlcXVlc3QobG9hZGVyLT5yZXF1ZXN0KCkpLCBSZXNvdXJjZVJlc3Bv
bnNlIHsgfSAgLyogcmVkaXJlY3RSZXNwb25zZSAqLywgb2xkRG9jdW1lbnRMb2FkZXIuZ2V0KCks
IFdURk1vdmUoZm9ybVN0YXRlKSwgW3RoaXMsIHByb3RlY3RlZEZyYW1lID0gbWFrZVJlZihtX2Zy
YW1lKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2Vha1B0cjxGb3JtU3RhdGU+
JiYsIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiBuYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24pIHsK
KyAgICAgICAgICAgIGNvbnRpbnVlRnJhZ21lbnRTY3JvbGxBZnRlck5hdmlnYXRpb25Qb2xpY3ko
cmVxdWVzdCwgbmF2aWdhdGlvblBvbGljeURlY2lzaW9uID09IE5hdmlnYXRpb25Qb2xpY3lEZWNp
c2lvbjo6Q29udGludWVMb2FkKTsKICAgICAgICAgfSwgUG9saWN5RGVjaXNpb25Nb2RlOjpTeW5j
aHJvbm91cyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNjE3LDcgKzE2MTcsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiBs
b2FkZXIsIEZyYW1lTG9hZFR5cGUgdAogICAgICAgICAvLyBhIG5ldyBVUkwsIHRoZSBwYXJlbnQg
ZnJhbWUgc2hvdWxkbid0IGxlYXJuIHRoZSBVUkwuCiAgICAgICAgIGlmICghbV9zdGF0ZU1hY2hp
bmUuY29tbWl0dGVkRmlyc3RSZWFsRG9jdW1lbnRMb2FkKCkKICAgICAgICAgICAgICYmICFvd25l
ckVsZW1lbnQtPmRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KGxvYWRlci0+cmVxdWVzdCgpLnVybCgp
LnN0cmluZygpKSkgewotICAgICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9s
aWN5KGxvYWRlci0+cmVxdWVzdCgpLCBmb3JtU3RhdGUuZ2V0KCksIFNob3VsZENvbnRpbnVlOjpO
bywgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKKyAgICAgICAgICAgIGNvbnRpbnVlTG9h
ZEFmdGVyTmF2aWdhdGlvblBvbGljeShsb2FkZXItPnJlcXVlc3QoKSwgZm9ybVN0YXRlLmdldCgp
LCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246Oklnbm9yZUxvYWQsIGFsbG93TmF2aWdhdGlvblRv
SW52YWxpZFVSTCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0x
NjI1LDEyICsxNjI1LDEyIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2Fk
ZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgRnJhbWVMb2FkVHlwZSB0CiAgICAgbV9mcmFtZS5u
YXZpZ2F0aW9uU2NoZWR1bGVyKCkuY2FuY2VsKE5ld0xvYWRJblByb2dyZXNzOjpZZXMpOwogCiAg
ICAgaWYgKHNob3VsZFRyZWF0Q3VycmVudExvYWRBc0NvbnRpbnVpbmdMb2FkKCkpIHsKLSAgICAg
ICAgY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGxvYWRlci0+cmVxdWVzdCgpLCBm
b3JtU3RhdGUuZ2V0KCksIFNob3VsZENvbnRpbnVlOjpZZXMsIGFsbG93TmF2aWdhdGlvblRvSW52
YWxpZFVSTCk7CisgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShsb2Fk
ZXItPnJlcXVlc3QoKSwgZm9ybVN0YXRlLmdldCgpLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246
OkNvbnRpbnVlTG9hZCwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3ko
UmVzb3VyY2VSZXF1ZXN0KGxvYWRlci0+cmVxdWVzdCgpKSwgUmVzb3VyY2VSZXNwb25zZSB7IH0g
LyogcmVkaXJlY3RSZXNwb25zZSAqLywgbG9hZGVyLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIFt0aGlz
LCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSksIGFsbG93TmF2aWdhdGlvblRvSW52
YWxpZFVSTCwgY29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxl
YXNlKCldIChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0YXRl
PiYmIGZvcm1TdGF0ZSwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGludWUpIG11dGFibGUgewot
ICAgICAgICBjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kocmVxdWVzdCwgZm9ybVN0
YXRlLmdldCgpLCBzaG91bGRDb250aW51ZSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsK
KyAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVz
dChsb2FkZXItPnJlcXVlc3QoKSksIFJlc291cmNlUmVzcG9uc2UgeyB9IC8qIHJlZGlyZWN0UmVz
cG9uc2UgKi8sIGxvYWRlciwgV1RGTW92ZShmb3JtU3RhdGUpLCBbdGhpcywgcHJvdGVjdGVkRnJh
bWUgPSBtYWtlUmVmKG1fZnJhbWUpLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIGNvbXBs
ZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpXSAoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUs
IE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiBuYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24pIG11dGFi
bGUgeworICAgICAgICBjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kocmVxdWVzdCwg
Zm9ybVN0YXRlLmdldCgpLCBuYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24sIGFsbG93TmF2aWdhdGlv
blRvSW52YWxpZFVSTCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSwgUG9s
aWN5RGVjaXNpb25Nb2RlOjpBc3luY2hyb25vdXMpOwogfQpAQCAtMzM1Nyw3ICszMzU3LDcgQEAg
Ym9vbCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hCZWZvcmVVbmxvYWRFdmVudChDaHJvbWUmIGNocm9t
ZSwgRnJhbWVMb2FkZXIqIGZyYW1lTG8KICAgICByZXR1cm4gY2hyb21lLnJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbCh0ZXh0LCBtX2ZyYW1lKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6Y29u
dGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVl
LCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJM
KQordm9pZCBGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIE5hdmln
YXRpb25Qb2xpY3lEZWNpc2lvbiBuYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24sIEFsbG93TmF2aWdh
dGlvblRvSW52YWxpZFVSTCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwpCiB7CiAgICAgLy8g
SWYgd2UgbG9hZGVkIGFuIGFsdGVybmF0ZSBwYWdlIHRvIHJlcGxhY2UgYW4gdW5yZWFjaGFibGVV
UkwsIHdlJ2xsIGdldCBpbiBoZXJlIHdpdGggYQogICAgIC8vIG5pbCBwb2xpY3lEYXRhU291cmNl
IGJlY2F1c2UgbG9hZGluZyB0aGUgYWx0ZXJuYXRlIHBhZ2Ugd2lsbCBoYXZlIHBhc3NlZApAQCAt
MzM2Nyw3ICszMzY3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZp
Z2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWUKICAgICBib29sIGlzVGFy
Z2V0SXRlbSA9IGhpc3RvcnkoKS5wcm92aXNpb25hbEl0ZW0oKSA/IGhpc3RvcnkoKS5wcm92aXNp
b25hbEl0ZW0oKS0+aXNUYXJnZXRJdGVtKCkgOiBmYWxzZTsKIAogICAgIGJvb2wgdXJsSXNEaXNh
bGxvd2VkID0gYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMID09IEFsbG93TmF2aWdhdGlvblRv
SW52YWxpZFVSTDo6Tm8gJiYgIXJlcXVlc3QudXJsKCkuaXNWYWxpZCgpOwotICAgIGJvb2wgY2Fu
Q29udGludWUgPSBzaG91bGRDb250aW51ZSAhPSBTaG91bGRDb250aW51ZTo6Tm8gJiYgc2hvdWxk
Q2xvc2UoKSAmJiAhdXJsSXNEaXNhbGxvd2VkOworICAgIGJvb2wgY2FuQ29udGludWUgPSBuYXZp
Z2F0aW9uUG9saWN5RGVjaXNpb24gPT0gTmF2aWdhdGlvblBvbGljeURlY2lzaW9uOjpDb250aW51
ZUxvYWQgJiYgc2hvdWxkQ2xvc2UoKSAmJiAhdXJsSXNEaXNhbGxvd2VkOwogCiAgICAgaWYgKCFj
YW5Db250aW51ZSkgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjb250aW51ZUxv
YWRBZnRlck5hdmlnYXRpb25Qb2xpY3k6IGNhbid0IGNvbnRpbnVlIGxvYWRpbmcgZnJhbWUgZHVl
IHRvIHRoZSBmb2xsb3dpbmcgcmVhc29ucyAoIgpAQCAtMzM3NSwxMiArMzM3NSwxMiBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZQogICAgICAgICAgICAgIm1haW4gPSAlZCwgIgogICAgICAgICAg
ICAgImFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCA9ICVkLCAiCiAgICAgICAgICAgICAicmVx
dWVzdFVSTElzVmFsaWQgPSAlZCwgIgotICAgICAgICAgICAgInNob3VsZENvbnRpbnVlID0gJWQp
IiwKKyAgICAgICAgICAgICJuYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPSAlZCkiLAogICAgICAg
ICAgICAgJm1fZnJhbWUsCiAgICAgICAgICAgICBtX2ZyYW1lLmlzTWFpbkZyYW1lKCksCiAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCksCiAg
ICAgICAgICAgICByZXF1ZXN0LnVybCgpLmlzVmFsaWQoKSwKLSAgICAgICAgICAgIHN0YXRpY19j
YXN0PGludD4oc2hvdWxkQ29udGludWUpKTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4o
bmF2aWdhdGlvblBvbGljeURlY2lzaW9uKSk7CiAKICAgICAgICAgLy8gSWYgd2Ugd2VyZSB3YWl0
aW5nIGZvciBhIHF1aWNrIHJlZGlyZWN0LCBidXQgdGhlIHBvbGljeSBkZWxlZ2F0ZSBkZWNpZGVk
IHRvIGlnbm9yZSBpdCwgdGhlbiB3ZSAKICAgICAgICAgLy8gbmVlZCB0byByZXBvcnQgdGhhdCB0
aGUgY2xpZW50IHJlZGlyZWN0IHdhcyBjYW5jZWxsZWQuCkBAIC0zMzg4LDkgKzMzODgsMTYgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWUKICAgICAgICAgaWYgKG1fcXVpY2tSZWRpcmVjdENvbWlu
ZykKICAgICAgICAgICAgIGNsaWVudFJlZGlyZWN0Q2FuY2VsbGVkT3JGaW5pc2hlZChOZXdMb2Fk
SW5Qcm9ncmVzczo6Tm8pOwogCisgICAgICAgIGlmIChuYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24g
PT0gTmF2aWdhdGlvblBvbGljeURlY2lzaW9uOjpTdG9wQWxsTG9hZHMpIHsKKyAgICAgICAgICAg
IHN0b3BBbGxMb2FkZXJzKCk7CisgICAgICAgICAgICBtX2NoZWNrVGltZXIuc3RvcCgpOworICAg
ICAgICB9CisKICAgICAgICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIobnVsbHB0cik7CiAgICAg
ICAgIGNoZWNrQ29tcGxldGVkKCk7Ci0gICAgICAgIGNoZWNrTG9hZENvbXBsZXRlKCk7CisKKyAg
ICAgICAgaWYgKG5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiAhPSBOYXZpZ2F0aW9uUG9saWN5RGVj
aXNpb246OlN0b3BBbGxMb2FkcykKKyAgICAgICAgICAgIGNoZWNrTG9hZENvbXBsZXRlKCk7CiAK
ICAgICAgICAgLy8gSWYgdGhlIG5hdmlnYXRpb24gcmVxdWVzdCBjYW1lIGZyb20gdGhlIGJhY2sv
Zm9yd2FyZCBtZW51LCBhbmQgd2UgcHVudCBvbiBpdCwgd2UgaGF2ZSB0aGUgCiAgICAgICAgIC8v
IHByb2JsZW0gdGhhdCB3ZSBoYXZlIG9wdGltaXN0aWNhbGx5IG1vdmVkIHRoZSBiL2YgY3Vyc29y
IGFscmVhZHksIHNvIG1vdmUgaXQgYmFjay4gRm9yIHNhbml0eSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmgKaW5kZXggYzM3YzQ0MDNiYzg1OTY3MzVlOThhZWE2MGJlMjAyMDQ5ZTUwZDk1
NC4uYTU4NDU2NzBjY2Q1OGJkNjA2NDRkMTIwMWYyNDMzNWFlNTc5M2Q1NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTg0LDYgKzg0LDcgQEAgY2xhc3MgU3Vic3RpdHV0ZURh
dGE7CiAKIGVudW0gY2xhc3MgTmV3TG9hZEluUHJvZ3Jlc3MgOiBib29sOwogZW51bSBjbGFzcyBT
aG91bGRDb250aW51ZTsKK2VudW0gY2xhc3MgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uIDogdWlu
dDhfdDsKIGVudW0gY2xhc3MgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIDogYm9vbDsKIAog
c3RydWN0IFdpbmRvd0ZlYXR1cmVzOwpAQCAtMzQ4LDcgKzM0OSw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBkaXNwYXRjaEJlZm9yZVVubG9hZEV2ZW50KENocm9tZSYsIEZyYW1lTG9hZGVyKiBmcmFt
ZUxvYWRlckJlaW5nTmF2aWdhdGVkKTsKICAgICB2b2lkIGRpc3BhdGNoVW5sb2FkRXZlbnRzKFVu
bG9hZEV2ZW50UG9saWN5KTsKIAotICAgIHZvaWQgY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9u
UG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIFNob3VsZENvbnRpbnVl
LCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwpOworICAgIHZvaWQgY29udGludWVMb2FkQWZ0
ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIE5h
dmlnYXRpb25Qb2xpY3lEZWNpc2lvbiwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKICAg
ICB2b2lkIGNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIEZvcm1TdGF0ZSosIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJiwgU2hvdWxkQ29udGludWUsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwg
TmV3RnJhbWVPcGVuZXJQb2xpY3kpOwogICAgIHZvaWQgY29udGludWVGcmFnbWVudFNjcm9sbEFm
dGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBib29sIHNob3VsZENv
bnRpbnVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
VHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgKaW5kZXgg
MTI1MDIzOWNhNjE0NWFjNWRmN2JiNWJhNDFjNTU2Nzk5ZDZiOTY5Zi4uMzkxOTJjOWQ2M2VlNzU1
ZTgyZjBkYjc1MDNiMWNjYTk3MjU3ZDI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXJUeXBlcy5oCkBAIC00NCw2ICs0NCw3IEBAIGVudW0gY2xhc3MgUG9saWN5QWN0aW9uIDog
dWludDhfdCB7CiAgICAgVXNlLAogICAgIERvd25sb2FkLAogICAgIElnbm9yZSwKKyAgICBTdG9w
QWxsTG9hZHMKIH07CiAKIGVudW0gY2xhc3MgUmVsb2FkT3B0aW9uIDogdWludDhfdCB7CkBAIC0x
NTIsNyArMTUzLDggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpQb2xp
Y3lBY3Rpb24+IHsKICAgICAgICAgV2ViQ29yZTo6UG9saWN5QWN0aW9uLAogICAgICAgICBXZWJD
b3JlOjpQb2xpY3lBY3Rpb246OlVzZSwKICAgICAgICAgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpE
b3dubG9hZCwKLSAgICAgICAgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpJZ25vcmUKKyAgICAgICAg
V2ViQ29yZTo6UG9saWN5QWN0aW9uOjpJZ25vcmUsCisgICAgICAgIFdlYkNvcmU6OlBvbGljeUFj
dGlvbjo6U3RvcEFsbExvYWRzCiAgICAgPjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xp
Y3lDaGVja2VyLmNwcAppbmRleCAxZjRiZDI1MGEwMGM5OWMwMTI3NjRjMzAwZDVkYzI1NjI2ODhk
ZDNlLi5lY2FmMjJlOGYyM2VhZDY2ODE3NWY0Y2Q5ZGZiNTc1YWNjMDQxNjliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBQ
b2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgY29uc3QgUmVzb3UKICAgICAvLyBEb24ndCBhc2sgbW9yZSB0aGFuIG9uY2UgZm9yIHRo
ZSBzYW1lIHJlcXVlc3Qgb3IgaWYgd2UgYXJlIGxvYWRpbmcgYW4gZW1wdHkgVVJMLgogICAgIC8v
IFRoaXMgYXZvaWRzIGNvbmZ1c2lvbiBvbiB0aGUgcGFydCBvZiB0aGUgY2xpZW50LgogICAgIGlm
IChlcXVhbElnbm9yaW5nSGVhZGVyRmllbGRzKHJlcXVlc3QsIGxvYWRlci0+bGFzdENoZWNrZWRS
ZXF1ZXN0KCkpIHx8ICghcmVxdWVzdC5pc051bGwoKSAmJiByZXF1ZXN0LnVybCgpLmlzRW1wdHko
KSkpIHsKLSAgICAgICAgZnVuY3Rpb24oUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCB7IH0sIFNo
b3VsZENvbnRpbnVlOjpZZXMpOworICAgICAgICBmdW5jdGlvbihSZXNvdXJjZVJlcXVlc3QocmVx
dWVzdCksIHsgfSwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uOjpDb250aW51ZUxvYWQpOwogICAg
ICAgICBsb2FkZXItPnNldExhc3RDaGVja2VkUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFBvbGljeUNoZWNr
ZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25z
dCBSZXNvdQogI2VuZGlmCiAgICAgICAgIGlmIChpc0JhY2tGb3J3YXJkTG9hZFR5cGUobV9sb2Fk
VHlwZSkpCiAgICAgICAgICAgICBtX2xvYWRUeXBlID0gRnJhbWVMb2FkVHlwZTo6UmVsb2FkOwot
ICAgICAgICBmdW5jdGlvbihXVEZNb3ZlKHJlcXVlc3QpLCB7IH0sIHNob3VsZENvbnRpbnVlID8g
U2hvdWxkQ29udGludWU6OlllcyA6IFNob3VsZENvbnRpbnVlOjpObyk7CisgICAgICAgIGZ1bmN0
aW9uKFdURk1vdmUocmVxdWVzdCksIHsgfSwgc2hvdWxkQ29udGludWUgPyBOYXZpZ2F0aW9uUG9s
aWN5RGVjaXNpb246OkNvbnRpbnVlTG9hZCA6IE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbjo6SWdu
b3JlTG9hZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2
b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBjb25zdCBSZXNvdQogICAgICAgICAgICAgLy8gcmV2ZWFsIHRoYXQgdGhlIGZy
YW1lIHdhcyBibG9ja2VkLiBUaGlzIHdheSwgaXQgbG9va3MgbGlrZSBhbnkgb3RoZXIgY3Jvc3Mt
b3JpZ2luIHBhZ2UgbG9hZC4KICAgICAgICAgICAgIG1fZnJhbWUub3duZXJFbGVtZW50KCktPmRp
c3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50LCBFdmVudDo6
Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKICAgICAgICAgfQotICAg
ICAgICBmdW5jdGlvbihXVEZNb3ZlKHJlcXVlc3QpLCB7IH0sIFNob3VsZENvbnRpbnVlOjpObyk7
CisgICAgICAgIGZ1bmN0aW9uKFdURk1vdmUocmVxdWVzdCksIHsgfSwgTmF2aWdhdGlvblBvbGlj
eURlY2lzaW9uOjpJZ25vcmVMb2FkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTUx
LDcgKzE1MSw3IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291CiAjaWYgVVNFKFFVSUNLX0xPT0sp
CiAgICAgLy8gQWx3YXlzIGFsbG93IFF1aWNrTG9vay1nZW5lcmF0ZWQgVVJMcyBiYXNlZCBvbiB0
aGUgcHJvdG9jb2wgc2NoZW1lLgogICAgIGlmICghcmVxdWVzdC5pc051bGwoKSAmJiBpc1F1aWNr
TG9va1ByZXZpZXdVUkwocmVxdWVzdC51cmwoKSkpCi0gICAgICAgIHJldHVybiBmdW5jdGlvbihX
VEZNb3ZlKHJlcXVlc3QpLCBtYWtlV2Vha1B0cihmb3JtU3RhdGUuZ2V0KCkpLCBTaG91bGRDb250
aW51ZTo6WWVzKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKFdURk1vdmUocmVxdWVzdCksIG1h
a2VXZWFrUHRyKGZvcm1TdGF0ZS5nZXQoKSksIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbjo6Q29u
dGludWVMb2FkKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpAQCAt
MTYxLDcgKzE2MSw3IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5
KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291CiAgICAgICAgICAgICBpZiAo
dW5ibG9ja2VkKQogICAgICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5yZWxvYWQoKTsKICAg
ICAgICAgfSk7Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbih7IH0sIG51bGxwdHIsIFNob3VsZENv
bnRpbnVlOjpObyk7CisgICAgICAgIHJldHVybiBmdW5jdGlvbih7IH0sIG51bGxwdHIsIE5hdmln
YXRpb25Qb2xpY3lEZWNpc2lvbjo6SWdub3JlTG9hZCk7CiAgICAgfQogICAgIG1fY29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyID0geyB9OwogI2VuZGlmCkBAIC0xODEsMTMgKzE4MSwxNiBAQCB2
b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBjb25zdCBSZXNvdQogICAgICAgICAgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGll
bnQoKS5zdGFydERvd25sb2FkKHJlcXVlc3QsIHN1Z2dlc3RlZEZpbGVuYW1lKTsKICAgICAgICAg
ICAgIEZBTExUSFJPVUdIOwogICAgICAgICBjYXNlIFBvbGljeUFjdGlvbjo6SWdub3JlOgotICAg
ICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHsgfSwgbnVsbHB0ciwgU2hvdWxkQ29udGludWU6Ok5v
KTsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih7IH0sIG51bGxwdHIsIE5hdmlnYXRpb25Q
b2xpY3lEZWNpc2lvbjo6SWdub3JlTG9hZCk7CisgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpT
dG9wQWxsTG9hZHM6CisgICAgICAgICAgICBmdW5jdGlvbih7IH0sIG51bGxwdHIsIE5hdmlnYXRp
b25Qb2xpY3lEZWNpc2lvbjo6U3RvcEFsbExvYWRzKTsKKyAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgY2FzZSBQb2xpY3lBY3Rpb246OlVzZToKICAgICAgICAgICAgIGlmICghbV9mcmFtZS5s
b2FkZXIoKS5jbGllbnQoKS5jYW5IYW5kbGVSZXF1ZXN0KHJlcXVlc3QpKSB7CiAgICAgICAgICAg
ICAgICAgaGFuZGxlVW5pbXBsZW1lbnRhYmxlUG9saWN5KG1fZnJhbWUubG9hZGVyKCkuY2xpZW50
KCkuY2Fubm90U2hvd1VSTEVycm9yKHJlcXVlc3QpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZnVuY3Rpb24oeyB9LCB7IH0sIFNob3VsZENvbnRpbnVlOjpObyk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uKHsgfSwgeyB9LCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246Oklnbm9y
ZUxvYWQpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKFdURk1v
dmUocmVxdWVzdCksIG1ha2VXZWFrUHRyKGZvcm1TdGF0ZS5nZXQoKSksIFNob3VsZENvbnRpbnVl
OjpZZXMpOworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKFdURk1vdmUocmVxdWVzdCksIG1h
a2VXZWFrUHRyKGZvcm1TdGF0ZS5nZXQoKSksIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbjo6Q29u
dGludWVMb2FkKTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICB9KTsKQEAgLTIxMSw2ICsyMTQsMTAgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05ld1dp
bmRvd1BvbGljeShOYXZpZ2F0aW9uQWN0aW9uJiYgbmF2aWdhdGlvbkFjdGlvbiwgUmUKICAgICAg
ICAgY2FzZSBQb2xpY3lBY3Rpb246Oklnbm9yZToKICAgICAgICAgICAgIGZ1bmN0aW9uKHsgfSwg
bnVsbHB0ciwgeyB9LCB7IH0sIFNob3VsZENvbnRpbnVlOjpObyk7CiAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpTdG9wQWxsTG9hZHM6CisgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGZ1bmN0aW9uKHsgfSwgbnVsbHB0
ciwgeyB9LCB7IH0sIFNob3VsZENvbnRpbnVlOjpObyk7CisgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpVc2U6CiAgICAgICAgICAgICBmdW5jdGlvbihyZXF1
ZXN0LCBtYWtlV2Vha1B0cihmb3JtU3RhdGUuZ2V0KCkpLCBmcmFtZU5hbWUsIG5hdmlnYXRpb25B
Y3Rpb24sIFNob3VsZENvbnRpbnVlOjpZZXMpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmgKaW5kZXggZDdmZDdiM2ZiMTdhNTgyMWNkMzE0NTdi
Mjk4YjUwMmUyNmIwZDczZS4uMGVmMWU2ZTU3MzFjZmE1Y2I2ZWQ3ZWFlNWIyN2EyOWM1YzkzYWUy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5oCkBAIC01NywxMCArNTcsMTYg
QEAgZW51bSBjbGFzcyBTaG91bGRDb250aW51ZSB7CiAgICAgTm8KIH07CiAKK2VudW0gY2xhc3Mg
TmF2aWdhdGlvblBvbGljeURlY2lzaW9uIDogdWludDhfdCB7CisgICAgQ29udGludWVMb2FkLAor
ICAgIElnbm9yZUxvYWQsCisgICAgU3RvcEFsbExvYWRzLAorfTsKKwogZW51bSBjbGFzcyBQb2xp
Y3lEZWNpc2lvbk1vZGUgeyBTeW5jaHJvbm91cywgQXN5bmNocm9ub3VzIH07CiAKIHVzaW5nIE5l
d1dpbmRvd1BvbGljeURlY2lzaW9uRnVuY3Rpb24gPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIFdlYWtQdHI8Rm9ybVN0YXRlPiYmLCBjb25zdCBTdHJpbmcm
IGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIFNob3VsZENvbnRpbnVlKT47Ci11
c2luZyBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYsIFdlYWtQdHI8Rm9ybVN0YXRlPiYmLCBTaG91bGRDb250
aW51ZSk+OwordXNpbmcgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24gPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmLCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiwg
TmF2aWdhdGlvblBvbGljeURlY2lzaW9uKT47CiAKIGNsYXNzIFBvbGljeUNoZWNrZXIgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFBvbGljeUNoZWNrZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKaW5kZXggMjQyN2Ix
NTYyYmFkYTQ3YThmNWM3ZWM4MjgxNTg2YzY3YjA0ZTdiMC4uZGYyYWZlYzE0NDU3NzA5ZTVlNzA5
NWU1OTU1YmRiZWJmMmVhMzkyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCkBAIC0zMTIsNiArMzEyLDkgQEAgdm9pZCBO
ZXR3b3JrRGF0YVRhc2tCbG9iOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShFcnJvciBlcnJv
ckNvZGUpCiAgICAgICAgICAgICBtX2J1ZmZlci5yZXNpemUoYnVmZmVyU2l6ZSk7CiAgICAgICAg
ICAgICByZWFkKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQb2xpY3lBY3Rp
b246OlN0b3BBbGxMb2FkczoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpJZ25vcmU6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQb2xpY3lBY3Rpb246OkRvd25sb2FkOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tCmluZGV4IGVjNTIzYjZiMTg4ZjBjZDUyOTQ0YWQ3YmY1MzM2N2ZhZTA2MzA2
YzkuLjFlYzE0Y2NkNzFiMDU0MGUwNDY2NmMxMjU4YTVlOGRmOGE4MTVjZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW0KQEAgLTYxLDYgKzYxLDggQEAgQ0ZTdHJpbmdSZWYgY29uc3QgV2ViS2l0MkhUVFBT
UHJveHlEZWZhdWx0c0tleSA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihAIldlYksKIHN0YXRp
YyBOU1VSTFNlc3Npb25SZXNwb25zZURpc3Bvc2l0aW9uIHRvTlNVUkxTZXNzaW9uUmVzcG9uc2VE
aXNwb3NpdGlvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24gZGlzcG9zaXRpb24pCiB7CiAgICAgc3dp
dGNoIChkaXNwb3NpdGlvbikgeworICAgIGNhc2UgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpTdG9w
QWxsTG9hZHM6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIGNhc2UgV2ViQ29y
ZTo6UG9saWN5QWN0aW9uOjpJZ25vcmU6CiAgICAgICAgIHJldHVybiBOU1VSTFNlc3Npb25SZXNw
b25zZUNhbmNlbDsKICAgICBjYXNlIFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6VXNlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYzdlMDlkODIxNjY5MTJmMjU2
MWM4MmEzOGE2MzFlZDM3OGMwMDEyNy4uNjhiZWIwNDI4NDgxYTdkYWU0OWVkOTQ0MTUwOTc0MmQy
Zjk5NjgwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0y
NzEwLDcgKzI3MTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9s
aWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKHByb2Nlc3NGb3JOYXZpZ2F0aW9uLnB0cigpICE9ICZwcm9jZXNzKCkpIHsKLSAg
ICAgICAgICAgIHBvbGljeUFjdGlvbiA9IFBvbGljeUFjdGlvbjo6SWdub3JlOworICAgICAgICAg
ICAgcG9saWN5QWN0aW9uID0gUG9saWN5QWN0aW9uOjpTdG9wQWxsTG9hZHM7CiAgICAgICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24sIHN3YXBwaW5nIHByb2Nlc3MgJWkgd2l0aCBwcm9jZXNzICVpIGZv
ciBuYXZpZ2F0aW9uLCByZWFzb246ICV7cHVibGljfXMiLCBwcm9jZXNzSWRlbnRpZmllcigpLCBw
cm9jZXNzRm9yTmF2aWdhdGlvbi0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgcmVhc29uLnV0ZjgoKS5k
YXRhKCkpOwogICAgICAgICAgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIihQcm9jZXNzU3dhcHBp
bmcpIFN3aXRjaGluZyBmcm9tIHByb2Nlc3MgJWkgdG8gbmV3IHByb2Nlc3MgKCVpKSBmb3IgbmF2
aWdhdGlvbiAlIiBQUkl1NjQgIiAnJXMnIiwgcHJvY2Vzc0lkZW50aWZpZXIoKSwgcHJvY2Vzc0Zv
ck5hdmlnYXRpb24tPnByb2Nlc3NJZGVudGlmaWVyKCksIG5hdmlnYXRpb24tPm5hdmlnYXRpb25J
RCgpLCBuYXZpZ2F0aW9uLT5sb2dnaW5nU3RyaW5nKCkpOwogICAgICAgICB9IGVsc2UKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5NGQ2MmQ1MWE0
OGQzMjMwNjk3M2NlZTFlZmFiNzkyMjUxYmZhMWUxLi5lNGYyNjA3MjY2NTcxYjQ0YWY2YzhlNTNl
YzliMTJmNDBjMDg3NDM4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMDItMDEgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OOiBGbGFreSBBU1NFUlRJT04gRkFJ
TEVEOiBtX3VuY29tbWl0dGVkU3RhdGUuc3RhdGUgPT0gU3RhdGU6OkNvbW1pdHRlZCBvbiBodHRw
L3Rlc3RzL2Nvb2tpZXMvc2FtZS1zaXRlL2ZldGNoLWFmdGVyLXRvcC1sZXZlbC1uYXZpZ2F0aW9u
LWluaXRpYXRlZC1mcm9tLWlmcmFtZS1pbi1jcm9zcy1vcmlnaW4tcGFnZS5odG1sCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM3NDAKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQ3NTI3MjY3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBBUEkgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW06
CisKIDIwMTktMDEtMzEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZlcnQgcjIzODgxOSB3aGljaCBpcyB1bm5lZWRlZCBhbmQgY2F1c2Vk
IGEgcGVyZm9ybWFuY2UgcmVncmVzc2lvbi4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1t
CmluZGV4IDdlZTllZWJiNmVjNDI4OWUwN2U1MzljNTE5NGMyNmVmZjM1ZGNiZjQuLmYzOWUzMjll
MzlhZTg4OTNkNDdkNDRmYmFkNDdmZmE1MjExMDE1NjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2
aWdhdGlvbi5tbQpAQCAtMjQ5MSw2ICsyNDkxLDUzIEBAIFRFU1QoUHJvY2Vzc1N3YXAsIE1haW5G
cmFtZXNPbmx5KQogICAgIEVYUEVDVF9FUSgxdSwgc2VlblBJRHMuc2l6ZSgpKTsKIH0KIAorc3Rh
dGljIGNvbnN0IGNoYXIqIG5hdmlnYXRlQmVmb3JlUGFnZUxvYWRFbmRCeXRlcyA9IFIiUFNPTlJF
U09VUkNFKAorPGJvZHk+Cis8YSBpZD0idGVzdExpbmsiIGhyZWY9InBzb246Ly93d3cuYXBwbGUu
Y29tL21haW4uaHRtbCI+TGluazwvYT4KKzxzY3JpcHQ+CisgICAgdGVzdExpbmsuY2xpY2soKTsK
Kzwvc2NyaXB0PgorPHA+VEVTVDwvcD4KKzxzY3JpcHQgc3JjPSJ0ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJ0ZXN0Mi5qcyI+PC9zY3JpcHQ+Cis8aWZyYW1lIHNyYz0ic3ViZnJhbWUx
Lmh0bWw+PC9pZnJhbWU+Cis8aWZyYW1lIHNyYz0ic3ViZnJhbWUyLmh0bWw+PC9pZnJhbWU+Cis8
aWZyYW1lIHNyYz0ic3ViZnJhbWUzLmh0bWw+PC9pZnJhbWU+Cis8aWZyYW1lIHNyYz0ic3ViZnJh
bWU0Lmh0bWw+PC9pZnJhbWU+Cis8L2JvZHk+CispUFNPTlJFU09VUkNFIjsKKworVEVTVChQcm9j
ZXNzU3dhcCwgTmF2aWdhdGVDcm9zc1NpdGVCZWZvcmVQYWdlTG9hZEVuZCkKK3sKKyAgICBhdXRv
IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNl
dFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNdOworICAgIFtwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gc2V0UHJld2FybXNQcm9jZXNzZXNBdXRvbWF0aWNhbGx5OllFU107CisgICAgYXV0byBw
cm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25m
aWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgYXV0byB3
ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOnBy
b2Nlc3NQb29sLmdldCgpXTsKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbUFNPTlNjaGVt
ZSBhbGxvY10gaW5pdF0pOworICAgIFtoYW5kbGVyIGFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOkAi
cHNvbjovL3d3dy53ZWJraXQub3JnL21haW4uaHRtbCIgdG9EYXRhOm5hdmlnYXRlQmVmb3JlUGFn
ZUxvYWRFbmRCeXRlc107CisgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhh
bmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJQU09OIl07CisKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1BTT05OYXZpZ2F0aW9uRGVsZWdh
dGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVs
ZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ucHJlZmVyZW5jZXMu
c2FmZUJyb3dzaW5nRW5hYmxlZCA9IE5POworCisgICAgZmFpbGVkID0gZmFsc2U7CisgICAgTlNV
UkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzpAInBzb246Ly93d3cud2Via2l0Lm9yZy9tYWluLmh0bWwiXV07CisgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIEVYUEVDVF9GQUxTRShmYWls
ZWQpOworICAgIEVYUEVDVF9XS19TVFJFUShAInBzb246Ly93d3cuYXBwbGUuY29tL21haW4uaHRt
bCIsIFtbd2ViVmlldyBVUkxdIGFic29sdXRlU3RyaW5nXSk7Cit9CisKKwogVEVTVChQcm9jZXNz
U3dhcCwgRG9TYW1lU2l0ZU5hdmlnYXRpb25BZnRlckNyb3NzU2l0ZVByb3Zpc2lvbmFsTG9hZFN0
YXJ0ZWQpCiB7CiAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
X1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360883</attachid>
            <date>2019-02-01 12:22:10 -0800</date>
            <delta_ts>2019-02-01 14:53:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193740-20190201122209.patch</filename>
            <type>text/plain</type>
            <size>26766</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwODE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzg0OWM5OTcwZWRkOWM4
YjQ4NDdiYTZmMmRlM2MzY2Y2MzQzNTFhNi4uMDcyMWI0YmE4MTA2NTI2MWQzMDQ1MzZjYjhjNjdm
ZTAzYjlhYjVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE5LTAyLTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTjogRmxha3kg
QVNTRVJUSU9OIEZBSUxFRDogbV91bmNvbW1pdHRlZFN0YXRlLnN0YXRlID09IFN0YXRlOjpDb21t
aXR0ZWQgb24gaHR0cC90ZXN0cy9jb29raWVzL3NhbWUtc2l0ZS9mZXRjaC1hZnRlci10b3AtbGV2
ZWwtbmF2aWdhdGlvbi1pbml0aWF0ZWQtZnJvbS1pZnJhbWUtaW4tY3Jvc3Mtb3JpZ2luLXBhZ2Uu
aHRtbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkz
NzQwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzUyNzI2Nz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBv
bGljeSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpsb2FkVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Ojpsb2FkV2l0aERvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Ojpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kpOgorICAgICAgICAqIGxvYWRlci9G
cmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlclR5cGVzLmg6CisgICAg
ICAgICogbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5
Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlBvbGlj
eUNoZWNrZXI6OmNoZWNrTmV3V2luZG93UG9saWN5KToKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5
Q2hlY2tlci5oOgorCiAyMDE5LTAxLTMxICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNv
bT4KIAogICAgICAgICBXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uIGNvcHkgY29uc3Ry
dWN0b3IgbmVlZHMgdG8gYmUgYmUgZGVmYXVsdCwgbm90IGRlbGV0ZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2NWRk
ZDE3Y2VjYTc2NGIxYmFjMGVhZDAwOTU1MTQxMjI4YTgyZmQxLi4zOWU3YmExZWFkNzA2MjI0NTQ2
NzZjZmFkNjEzMmNhNWFjMjdkNGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE5LTAy
LTAxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lP
TjogRmxha3kgQVNTRVJUSU9OIEZBSUxFRDogbV91bmNvbW1pdHRlZFN0YXRlLnN0YXRlID09IFN0
YXRlOjpDb21taXR0ZWQgb24gaHR0cC90ZXN0cy9jb29raWVzL3NhbWUtc2l0ZS9mZXRjaC1hZnRl
ci10b3AtbGV2ZWwtbmF2aWdhdGlvbi1pbml0aWF0ZWQtZnJvbS1pZnJhbWUtaW4tY3Jvc3Mtb3Jp
Z2luLXBhZ2UuaHRtbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkzNzQwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzUyNzI2Nz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgaXNzdWUgd2FzIGhh
cHBlbmluZyB3aGVuIHRoZSBwYWdlIGlzIHRyaWdnZXJpbmcgYSBjcm9zcy1zaXRlIG5hdmlnYXRp
b24gd2hpbGUgaW4gdGhlIG1pZGRsZSBvZiBwYXJzaW5nLiBUaGlzIHdvdWxkIGNhdXNlIHVzIHRv
CisgICAgICAgIHN0YXJ0IGEgbmV3IHByb3Zpc2lvbmFsIGxvYWQgaW4gYSBuZXcgcHJvY2VzcyBi
ZWZvcmUgdGhlIHByZXZpb3VzIHByb2Nlc3Mgc2VuZHMgdGhlIERpZEZpbmlzaExvYWRGb3JGcmFt
ZSgpIElQQyB0byB0aGUgVUlQcm9jZXNzLgorICAgICAgICBHZXR0aW5nIHN1Y2ggSVBDIGFmdGVy
IGEgcHJvdmlzaW9uYWwgbG9hZCBoYXMgc3RhcnRlZCB3b3VsZCBtZXNzIHVwIG91ciBzdGF0ZSBt
YWNoaW5lIGFuZCB0cmlwIGFzc2VydGlvbnMuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZXN0b3Jl
cyBub24tUFNPTiBiZWhhdmlvciB3aGljaCBpcyB0aGF0IHRoZSBwcmV2aW91cyBsb2FkIGluIHRo
ZSBvbGQgcHJvY2VzcyBub3cgZ2V0cyBzdG9wcGVkIHNvIHRoYXQgbm8gRGlkRmluaXNoTG9hZEZv
ckZyYW1lKCkKKyAgICAgICAgLyBEaWRGYWlsTG9hZEZvckZyYW1lKCkgZ2V0cyBzZW50LiBUbyBh
Y2hpZXZlIHRoaXMgYmVoYXZpb3IsIEkgaW50cm9kdWNlZCBhIG5ldyAiU3RvcEFsbExvYWRzIiBQ
b2xpY3lBY3Rpb24gdGhhdCB3ZSBub3cgc2VuZCB0aGUgb2xkCisgICAgICAgIHByb2Nlc3Mgd2hl
biB0aGUgbG9hZCBpcyBjb250aW51aW5nIGluIGEgbmV3IHByb2Nlc3MsIGluc3RlYWQgb2Ygc2Vu
ZGluZyBpdCAiSWdub3JlIi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFza0Jsb2IuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaXNw
YXRjaERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKHRvTlNVUkxTZXNzaW9uUmVzcG9uc2VE
aXNwb3NpdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNp
b24pOgorCiAyMDE5LTAxLTMxICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4K
IAogICAgICAgICBbbWFjT1NdIERpc2FibGUgcGVybWlzc2l2ZSBjYWxsIGxvZ2dpbmcgaW4gc2Fu
ZGJveApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggMTM1ZDI5
ZTQyMTJmZjFmMDFmNGM3ZDM0YWZmNzA2NzMyMDhhZGNlMS4uNTZmODQ2NjdhZGU3NzNhYjgxODEx
MjhiZThlMTYzMTUwMjE1MWEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCkBAIC02NDUsMTMgKzY0NSwxNCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2Vu
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyYwogICAg
IGlmICghZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UpCiAgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKIAotICAgIGF1dG8gbmF2aWdhdGlvblBv
bGljeUNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0YXRlPiYmLCBTaG91bGRDb250
aW51ZSBzaG91bGRDb250aW51ZSkgbXV0YWJsZSB7CisgICAgYXV0byBuYXZpZ2F0aW9uUG9saWN5
Q29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2Vha1B0cjxGb3JtU3RhdGU+JiYsIE5hdmlnYXRpb25Qb2xp
Y3lEZWNpc2lvbiBuYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24pIG11dGFibGUgewogICAgICAgICBt
X3dhaXRpbmdGb3JOYXZpZ2F0aW9uUG9saWN5ID0gZmFsc2U7Ci0gICAgICAgIHN3aXRjaCAoc2hv
dWxkQ29udGludWUpIHsKLSAgICAgICAgY2FzZSBTaG91bGRDb250aW51ZTo6Tm86CisgICAgICAg
IHN3aXRjaCAobmF2aWdhdGlvblBvbGljeURlY2lzaW9uKSB7CisgICAgICAgIGNhc2UgTmF2aWdh
dGlvblBvbGljeURlY2lzaW9uOjpJZ25vcmVMb2FkOgorICAgICAgICBjYXNlIE5hdmlnYXRpb25Q
b2xpY3lEZWNpc2lvbjo6U3RvcEFsbExvYWRzOgogICAgICAgICAgICAgc3RvcExvYWRpbmdGb3JQ
b2xpY3lDaGFuZ2UoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNob3VsZENv
bnRpbnVlOjpZZXM6CisgICAgICAgIGNhc2UgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uOjpDb250
aW51ZUxvYWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC05MzUsNiArOTM2
LDExIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KFBv
bGljeUFjdGlvbiBwb2xpY3kpCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxSZXNvdXJjZUxvYWRl
cio+KG1haW5SZXNvdXJjZUxvYWRlcigpKS0+ZGlkRmFpbChpbnRlcnJ1cHRlZEZvclBvbGljeUNo
YW5nZUVycm9yKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGNhc2UgUG9saWN5QWN0
aW9uOjpTdG9wQWxsTG9hZHM6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2lmIEFT
U0VSVF9ESVNBQkxFRAorICAgICAgICBGQUxMVEhST1VHSDsKKyNlbmRpZgogICAgIGNhc2UgUG9s
aWN5QWN0aW9uOjpJZ25vcmU6CiAgICAgICAgIGlmIChSZXNvdXJjZUxvYWRlciogbWFpblJlc291
cmNlTG9hZGVyID0gdGhpcy0+bWFpblJlc291cmNlTG9hZGVyKCkpCiAgICAgICAgICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVlV2l0aFBvbGljeUlnbm9yZSgqbV9mcmFtZSwg
bWFpblJlc291cmNlTG9hZGVyLT5pZGVudGlmaWVyKCksICp0aGlzLCBtX3Jlc3BvbnNlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDBhMGQ3ZTc3ZjdiMzI1OTI2NmFk
NTkzY2JjY2U3MDI5MjBmODEwNjYuLjJlZmQxNzYxY2EwNzRiMjdjYjU1NDk4MjhiZWVjMWEzZWU1
OWIyNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTM5OCw4ICsx
Mzk4LDggQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChGcmFtZUxvYWRSZXF1ZXN0JiYgZnJh
bWVMb2FkUmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWYKICAgICAgICAgb2xkRG9jdW1lbnRMb2Fk
ZXItPnNldExhc3RDaGVja2VkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoKSk7CiAgICAgICAgIHBv
bGljeUNoZWNrZXIoKS5zdG9wQ2hlY2soKTsKICAgICAgICAgcG9saWN5Q2hlY2tlcigpLnNldExv
YWRUeXBlKG5ld0xvYWRUeXBlKTsKLSAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmF2aWdh
dGlvblBvbGljeShXVEZNb3ZlKHJlcXVlc3QpLCBSZXNvdXJjZVJlc3BvbnNlIHsgfSAvKiByZWRp
cmVjdFJlc3BvbnNlICovLCBvbGREb2N1bWVudExvYWRlci5nZXQoKSwgV1RGTW92ZShmb3JtU3Rh
dGUpLCBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpXSAoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiwgU2hvdWxkQ29udGlu
dWUgc2hvdWxkQ29udGludWUpIHsKLSAgICAgICAgICAgIGNvbnRpbnVlRnJhZ21lbnRTY3JvbGxB
ZnRlck5hdmlnYXRpb25Qb2xpY3kocmVxdWVzdCwgc2hvdWxkQ29udGludWUgPT0gU2hvdWxkQ29u
dGludWU6Olllcyk7CisgICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xp
Y3koV1RGTW92ZShyZXF1ZXN0KSwgUmVzb3VyY2VSZXNwb25zZSB7IH0gLyogcmVkaXJlY3RSZXNw
b25zZSAqLywgb2xkRG9jdW1lbnRMb2FkZXIuZ2V0KCksIFdURk1vdmUoZm9ybVN0YXRlKSwgW3Ro
aXMsIHByb3RlY3RlZEZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKV0gKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgV2Vha1B0cjxGb3JtU3RhdGU+JiYsIE5hdmlnYXRpb25Qb2xpY3lEZWNp
c2lvbiBuYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24pIHsKKyAgICAgICAgICAgIGNvbnRpbnVlRnJh
Z21lbnRTY3JvbGxBZnRlck5hdmlnYXRpb25Qb2xpY3kocmVxdWVzdCwgbmF2aWdhdGlvblBvbGlj
eURlY2lzaW9uID09IE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbjo6Q29udGludWVMb2FkKTsKICAg
ICAgICAgfSwgUG9saWN5RGVjaXNpb25Nb2RlOjpTeW5jaHJvbm91cyk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC0xNTk1LDggKzE1OTUsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0
aERvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIEZyYW1lTG9hZFR5cGUgdAog
ICAgICAgICBvbGREb2N1bWVudExvYWRlci0+c2V0VHJpZ2dlcmluZ0FjdGlvbihXVEZNb3ZlKGFj
dGlvbikpOwogICAgICAgICBvbGREb2N1bWVudExvYWRlci0+c2V0TGFzdENoZWNrZWRSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCgpKTsKICAgICAgICAgcG9saWN5Q2hlY2tlcigpLnN0b3BDaGVjaygp
OwotICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNl
UmVxdWVzdChsb2FkZXItPnJlcXVlc3QoKSksIFJlc291cmNlUmVzcG9uc2UgeyB9ICAvKiByZWRp
cmVjdFJlc3BvbnNlICovLCBvbGREb2N1bWVudExvYWRlci5nZXQoKSwgV1RGTW92ZShmb3JtU3Rh
dGUpLCBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpXSAoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiwgU2hvdWxkQ29udGlu
dWUgc2hvdWxkQ29udGludWUpIHsKLSAgICAgICAgICAgIGNvbnRpbnVlRnJhZ21lbnRTY3JvbGxB
ZnRlck5hdmlnYXRpb25Qb2xpY3kocmVxdWVzdCwgc2hvdWxkQ29udGludWUgPT0gU2hvdWxkQ29u
dGludWU6Olllcyk7CisgICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xp
Y3koUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci0+cmVxdWVzdCgpKSwgUmVzb3VyY2VSZXNwb25zZSB7
IH0gIC8qIHJlZGlyZWN0UmVzcG9uc2UgKi8sIG9sZERvY3VtZW50TG9hZGVyLmdldCgpLCBXVEZN
b3ZlKGZvcm1TdGF0ZSksIFt0aGlzLCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSld
IChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0YXRlPiYmLCBO
YXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gbmF2aWdhdGlvblBvbGljeURlY2lzaW9uKSB7CisgICAg
ICAgICAgICBjb250aW51ZUZyYWdtZW50U2Nyb2xsQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHJlcXVl
c3QsIG5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9PSBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246
OkNvbnRpbnVlTG9hZCk7CiAgICAgICAgIH0sIFBvbGljeURlY2lzaW9uTW9kZTo6U3luY2hyb25v
dXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTYxNyw3ICsxNjE3LDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVy
LCBGcmFtZUxvYWRUeXBlIHQKICAgICAgICAgLy8gYSBuZXcgVVJMLCB0aGUgcGFyZW50IGZyYW1l
IHNob3VsZG4ndCBsZWFybiB0aGUgVVJMLgogICAgICAgICBpZiAoIW1fc3RhdGVNYWNoaW5lLmNv
bW1pdHRlZEZpcnN0UmVhbERvY3VtZW50TG9hZCgpCiAgICAgICAgICAgICAmJiAhb3duZXJFbGVt
ZW50LT5kaXNwYXRjaEJlZm9yZUxvYWRFdmVudChsb2FkZXItPnJlcXVlc3QoKS51cmwoKS5zdHJp
bmcoKSkpIHsKLSAgICAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShs
b2FkZXItPnJlcXVlc3QoKSwgZm9ybVN0YXRlLmdldCgpLCBTaG91bGRDb250aW51ZTo6Tm8sIGFs
bG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CisgICAgICAgICAgICBjb250aW51ZUxvYWRBZnRl
ck5hdmlnYXRpb25Qb2xpY3kobG9hZGVyLT5yZXF1ZXN0KCksIGZvcm1TdGF0ZS5nZXQoKSwgTmF2
aWdhdGlvblBvbGljeURlY2lzaW9uOjpJZ25vcmVMb2FkLCBhbGxvd05hdmlnYXRpb25Ub0ludmFs
aWRVUkwpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMTYyNSwx
MiArMTYyNSwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVyKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIEZyYW1lTG9hZFR5cGUgdAogICAgIG1fZnJhbWUubmF2aWdh
dGlvblNjaGVkdWxlcigpLmNhbmNlbChOZXdMb2FkSW5Qcm9ncmVzczo6WWVzKTsKIAogICAgIGlm
IChzaG91bGRUcmVhdEN1cnJlbnRMb2FkQXNDb250aW51aW5nTG9hZCgpKSB7Ci0gICAgICAgIGNv
bnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShsb2FkZXItPnJlcXVlc3QoKSwgZm9ybVN0
YXRlLmdldCgpLCBTaG91bGRDb250aW51ZTo6WWVzLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRV
UkwpOworICAgICAgICBjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kobG9hZGVyLT5y
ZXF1ZXN0KCksIGZvcm1TdGF0ZS5nZXQoKSwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uOjpDb250
aW51ZUxvYWQsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291
cmNlUmVxdWVzdChsb2FkZXItPnJlcXVlc3QoKSksIFJlc291cmNlUmVzcG9uc2UgeyB9IC8qIHJl
ZGlyZWN0UmVzcG9uc2UgKi8sIGxvYWRlciwgV1RGTW92ZShmb3JtU3RhdGUpLCBbdGhpcywgcHJv
dGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRV
UkwsIGNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgp
XSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiBm
b3JtU3RhdGUsIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSBtdXRhYmxlIHsKLSAgICAg
ICAgY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHJlcXVlc3QsIGZvcm1TdGF0ZS5n
ZXQoKSwgc2hvdWxkQ29udGludWUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CisgICAg
cG9saWN5Q2hlY2tlcigpLmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QobG9h
ZGVyLT5yZXF1ZXN0KCkpLCBSZXNvdXJjZVJlc3BvbnNlIHsgfSAvKiByZWRpcmVjdFJlc3BvbnNl
ICovLCBsb2FkZXIsIFdURk1vdmUoZm9ybVN0YXRlKSwgW3RoaXMsIHByb3RlY3RlZEZyYW1lID0g
bWFrZVJlZihtX2ZyYW1lKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBjb21wbGV0aW9u
SGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2Vha1B0cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlLCBOYXZp
Z2F0aW9uUG9saWN5RGVjaXNpb24gbmF2aWdhdGlvblBvbGljeURlY2lzaW9uKSBtdXRhYmxlIHsK
KyAgICAgICAgY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHJlcXVlc3QsIGZvcm1T
dGF0ZS5nZXQoKSwgbmF2aWdhdGlvblBvbGljeURlY2lzaW9uLCBhbGxvd05hdmlnYXRpb25Ub0lu
dmFsaWRVUkwpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0sIFBvbGljeURl
Y2lzaW9uTW9kZTo6QXN5bmNocm9ub3VzKTsKIH0KQEAgLTMzNTcsNyArMzM1Nyw3IEBAIGJvb2wg
RnJhbWVMb2FkZXI6OmRpc3BhdGNoQmVmb3JlVW5sb2FkRXZlbnQoQ2hyb21lJiBjaHJvbWUsIEZy
YW1lTG9hZGVyKiBmcmFtZUxvCiAgICAgcmV0dXJuIGNocm9tZS5ydW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWwodGV4dCwgbV9mcmFtZSk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVl
TG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSwgQWxs
b3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCkKK3Zv
aWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBOYXZpZ2F0aW9u
UG9saWN5RGVjaXNpb24gbmF2aWdhdGlvblBvbGljeURlY2lzaW9uLCBBbGxvd05hdmlnYXRpb25U
b0ludmFsaWRVUkwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKQogewogICAgIC8vIElmIHdl
IGxvYWRlZCBhbiBhbHRlcm5hdGUgcGFnZSB0byByZXBsYWNlIGFuIHVucmVhY2hhYmxlVVJMLCB3
ZSdsbCBnZXQgaW4gaGVyZSB3aXRoIGEKICAgICAvLyBuaWwgcG9saWN5RGF0YVNvdXJjZSBiZWNh
dXNlIGxvYWRpbmcgdGhlIGFsdGVybmF0ZSBwYWdlIHdpbGwgaGF2ZSBwYXNzZWQKQEAgLTMzNjcs
NyArMzM2Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlv
blBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlCiAgICAgYm9vbCBpc1RhcmdldEl0
ZW0gPSBoaXN0b3J5KCkucHJvdmlzaW9uYWxJdGVtKCkgPyBoaXN0b3J5KCkucHJvdmlzaW9uYWxJ
dGVtKCktPmlzVGFyZ2V0SXRlbSgpIDogZmFsc2U7CiAKICAgICBib29sIHVybElzRGlzYWxsb3dl
ZCA9IGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCA9PSBBbGxvd05hdmlnYXRpb25Ub0ludmFs
aWRVUkw6Ok5vICYmICFyZXF1ZXN0LnVybCgpLmlzVmFsaWQoKTsKLSAgICBib29sIGNhbkNvbnRp
bnVlID0gc2hvdWxkQ29udGludWUgIT0gU2hvdWxkQ29udGludWU6Ok5vICYmIHNob3VsZENsb3Nl
KCkgJiYgIXVybElzRGlzYWxsb3dlZDsKKyAgICBib29sIGNhbkNvbnRpbnVlID0gbmF2aWdhdGlv
blBvbGljeURlY2lzaW9uID09IE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbjo6Q29udGludWVMb2Fk
ICYmIHNob3VsZENsb3NlKCkgJiYgIXVybElzRGlzYWxsb3dlZDsKIAogICAgIGlmICghY2FuQ29u
dGludWUpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29udGludWVMb2FkQWZ0
ZXJOYXZpZ2F0aW9uUG9saWN5OiBjYW4ndCBjb250aW51ZSBsb2FkaW5nIGZyYW1lIGR1ZSB0byB0
aGUgZm9sbG93aW5nIHJlYXNvbnMgKCIKQEAgLTMzNzUsMTIgKzMzNzUsMTIgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWUKICAgICAgICAgICAgICJtYWluID0gJWQsICIKICAgICAgICAgICAgICJh
bGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwgPSAlZCwgIgogICAgICAgICAgICAgInJlcXVlc3RV
UkxJc1ZhbGlkID0gJWQsICIKLSAgICAgICAgICAgICJzaG91bGRDb250aW51ZSA9ICVkKSIsCisg
ICAgICAgICAgICAibmF2aWdhdGlvblBvbGljeURlY2lzaW9uID0gJWQpIiwKICAgICAgICAgICAg
ICZtX2ZyYW1lLAogICAgICAgICAgICAgbV9mcmFtZS5pc01haW5GcmFtZSgpLAogICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8aW50PihhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwpLAogICAgICAg
ICAgICAgcmVxdWVzdC51cmwoKS5pc1ZhbGlkKCksCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxp
bnQ+KHNob3VsZENvbnRpbnVlKSk7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KG5hdmln
YXRpb25Qb2xpY3lEZWNpc2lvbikpOwogCiAgICAgICAgIC8vIElmIHdlIHdlcmUgd2FpdGluZyBm
b3IgYSBxdWljayByZWRpcmVjdCwgYnV0IHRoZSBwb2xpY3kgZGVsZWdhdGUgZGVjaWRlZCB0byBp
Z25vcmUgaXQsIHRoZW4gd2UgCiAgICAgICAgIC8vIG5lZWQgdG8gcmVwb3J0IHRoYXQgdGhlIGNs
aWVudCByZWRpcmVjdCB3YXMgY2FuY2VsbGVkLgpAQCAtMzM4OCw5ICszMzg4LDE2IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlCiAgICAgICAgIGlmIChtX3F1aWNrUmVkaXJlY3RDb21pbmcpCiAg
ICAgICAgICAgICBjbGllbnRSZWRpcmVjdENhbmNlbGxlZE9yRmluaXNoZWQoTmV3TG9hZEluUHJv
Z3Jlc3M6Ok5vKTsKIAorICAgICAgICBpZiAobmF2aWdhdGlvblBvbGljeURlY2lzaW9uID09IE5h
dmlnYXRpb25Qb2xpY3lEZWNpc2lvbjo6U3RvcEFsbExvYWRzKSB7CisgICAgICAgICAgICBzdG9w
QWxsTG9hZGVycygpOworICAgICAgICAgICAgbV9jaGVja1RpbWVyLnN0b3AoKTsKKyAgICAgICAg
fQorCiAgICAgICAgIHNldFBvbGljeURvY3VtZW50TG9hZGVyKG51bGxwdHIpOwogICAgICAgICBj
aGVja0NvbXBsZXRlZCgpOwotICAgICAgICBjaGVja0xvYWRDb21wbGV0ZSgpOworCisgICAgICAg
IGlmIChuYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gIT0gTmF2aWdhdGlvblBvbGljeURlY2lzaW9u
OjpTdG9wQWxsTG9hZHMpCisgICAgICAgICAgICBjaGVja0xvYWRDb21wbGV0ZSgpOwogCiAgICAg
ICAgIC8vIElmIHRoZSBuYXZpZ2F0aW9uIHJlcXVlc3QgY2FtZSBmcm9tIHRoZSBiYWNrL2Zvcndh
cmQgbWVudSwgYW5kIHdlIHB1bnQgb24gaXQsIHdlIGhhdmUgdGhlIAogICAgICAgICAvLyBwcm9i
bGVtIHRoYXQgd2UgaGF2ZSBvcHRpbWlzdGljYWxseSBtb3ZlZCB0aGUgYi9mIGN1cnNvciBhbHJl
YWR5LCBzbyBtb3ZlIGl0IGJhY2suIEZvciBzYW5pdHksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCmluZGV4IGMzN2M0NDAzYmM4NTk2NzM1ZTk4YWVhNjBiZTIwMjA0OWU1MGQ5NTQuLmE1
ODQ1NjcwY2NkNThiZDYwNjQ0ZDEyMDFmMjQzMzVhZTU3OTNkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5oCkBAIC04NCw2ICs4NCw3IEBAIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwog
CiBlbnVtIGNsYXNzIE5ld0xvYWRJblByb2dyZXNzIDogYm9vbDsKIGVudW0gY2xhc3MgU2hvdWxk
Q29udGludWU7CitlbnVtIGNsYXNzIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA6IHVpbnQ4X3Q7
CiBlbnVtIGNsYXNzIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCA6IGJvb2w7CiAKIHN0cnVj
dCBXaW5kb3dGZWF0dXJlczsKQEAgLTM0OCw3ICszNDksNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
ZGlzcGF0Y2hCZWZvcmVVbmxvYWRFdmVudChDaHJvbWUmLCBGcmFtZUxvYWRlciogZnJhbWVMb2Fk
ZXJCZWluZ05hdmlnYXRlZCk7CiAgICAgdm9pZCBkaXNwYXRjaFVubG9hZEV2ZW50cyhVbmxvYWRF
dmVudFBvbGljeSk7CiAKLSAgICB2b2lkIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGlj
eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUqLCBTaG91bGRDb250aW51ZSwgQWxs
b3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKKyAgICB2b2lkIGNvbnRpbnVlTG9hZEFmdGVyTmF2
aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUqLCBOYXZpZ2F0
aW9uUG9saWN5RGVjaXNpb24sIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CiAgICAgdm9p
ZCBjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFj
dGlvbiYsIFNob3VsZENvbnRpbnVlLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIE5ld0Zy
YW1lT3BlbmVyUG9saWN5KTsKICAgICB2b2lkIGNvbnRpbnVlRnJhZ21lbnRTY3JvbGxBZnRlck5h
dmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBzaG91bGRDb250aW51
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCmluZGV4IDEyNTAy
MzljYTYxNDVhYzVkZjdiYjViYTQxYzU1Njc5OWQ2Yjk2OWYuLjM5MTkyYzlkNjNlZTc1NWU4MmYw
ZGI3NTAzYjFjY2E5NzI1N2QyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlclR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
VHlwZXMuaApAQCAtNDQsNiArNDQsNyBAQCBlbnVtIGNsYXNzIFBvbGljeUFjdGlvbiA6IHVpbnQ4
X3QgewogICAgIFVzZSwKICAgICBEb3dubG9hZCwKICAgICBJZ25vcmUsCisgICAgU3RvcEFsbExv
YWRzCiB9OwogCiBlbnVtIGNsYXNzIFJlbG9hZE9wdGlvbiA6IHVpbnQ4X3QgewpAQCAtMTUyLDcg
KzE1Myw4IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6UG9saWN5QWN0
aW9uPiB7CiAgICAgICAgIFdlYkNvcmU6OlBvbGljeUFjdGlvbiwKICAgICAgICAgV2ViQ29yZTo6
UG9saWN5QWN0aW9uOjpVc2UsCiAgICAgICAgIFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6RG93bmxv
YWQsCi0gICAgICAgIFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6SWdub3JlCisgICAgICAgIFdlYkNv
cmU6OlBvbGljeUFjdGlvbjo6SWdub3JlLAorICAgICAgICBXZWJDb3JlOjpQb2xpY3lBY3Rpb246
OlN0b3BBbGxMb2FkcwogICAgID47CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUG9saWN5Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hl
Y2tlci5jcHAKaW5kZXggMWY0YmQyNTBhMDBjOTljMDEyNzY0YzMwMGQ1ZGMyNTYyNjg4ZGQzZS4u
ZWNhZjIyZThmMjNlYWQ2NjgxNzVmNGNkOWRmYjU3NWFjYzA0MTY5YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgUG9saWN5
Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IGNvbnN0IFJlc291CiAgICAgLy8gRG9uJ3QgYXNrIG1vcmUgdGhhbiBvbmNlIGZvciB0aGUgc2Ft
ZSByZXF1ZXN0IG9yIGlmIHdlIGFyZSBsb2FkaW5nIGFuIGVtcHR5IFVSTC4KICAgICAvLyBUaGlz
IGF2b2lkcyBjb25mdXNpb24gb24gdGhlIHBhcnQgb2YgdGhlIGNsaWVudC4KICAgICBpZiAoZXF1
YWxJZ25vcmluZ0hlYWRlckZpZWxkcyhyZXF1ZXN0LCBsb2FkZXItPmxhc3RDaGVja2VkUmVxdWVz
dCgpKSB8fCAoIXJlcXVlc3QuaXNOdWxsKCkgJiYgcmVxdWVzdC51cmwoKS5pc0VtcHR5KCkpKSB7
Ci0gICAgICAgIGZ1bmN0aW9uKFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgeyB9LCBTaG91bGRD
b250aW51ZTo6WWVzKTsKKyAgICAgICAgZnVuY3Rpb24oUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3Qp
LCB7IH0sIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbjo6Q29udGludWVMb2FkKTsKICAgICAgICAg
bG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpj
aGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVz
b3UKICNlbmRpZgogICAgICAgICBpZiAoaXNCYWNrRm9yd2FyZExvYWRUeXBlKG1fbG9hZFR5cGUp
KQogICAgICAgICAgICAgbV9sb2FkVHlwZSA9IEZyYW1lTG9hZFR5cGU6OlJlbG9hZDsKLSAgICAg
ICAgZnVuY3Rpb24oV1RGTW92ZShyZXF1ZXN0KSwgeyB9LCBzaG91bGRDb250aW51ZSA/IFNob3Vs
ZENvbnRpbnVlOjpZZXMgOiBTaG91bGRDb250aW51ZTo6Tm8pOworICAgICAgICBmdW5jdGlvbihX
VEZNb3ZlKHJlcXVlc3QpLCB7IH0sIHNob3VsZENvbnRpbnVlID8gTmF2aWdhdGlvblBvbGljeURl
Y2lzaW9uOjpDb250aW51ZUxvYWQgOiBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246Oklnbm9yZUxv
YWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBQ
b2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgY29uc3QgUmVzb3UKICAgICAgICAgICAgIC8vIHJldmVhbCB0aGF0IHRoZSBmcmFtZSB3
YXMgYmxvY2tlZC4gVGhpcyB3YXksIGl0IGxvb2tzIGxpa2UgYW55IG90aGVyIGNyb3NzLW9yaWdp
biBwYWdlIGxvYWQuCiAgICAgICAgICAgICBtX2ZyYW1lLm93bmVyRWxlbWVudCgpLT5kaXNwYXRj
aEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgRXZlbnQ6OkNhbkJ1
YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiAgICAgICAgIH0KLSAgICAgICAg
ZnVuY3Rpb24oV1RGTW92ZShyZXF1ZXN0KSwgeyB9LCBTaG91bGRDb250aW51ZTo6Tm8pOworICAg
ICAgICBmdW5jdGlvbihXVEZNb3ZlKHJlcXVlc3QpLCB7IH0sIE5hdmlnYXRpb25Qb2xpY3lEZWNp
c2lvbjo6SWdub3JlTG9hZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE1MSw3ICsx
NTEsNyBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdQogI2lmIFVTRShRVUlDS19MT09LKQogICAg
IC8vIEFsd2F5cyBhbGxvdyBRdWlja0xvb2stZ2VuZXJhdGVkIFVSTHMgYmFzZWQgb24gdGhlIHBy
b3RvY29sIHNjaGVtZS4KICAgICBpZiAoIXJlcXVlc3QuaXNOdWxsKCkgJiYgaXNRdWlja0xvb2tQ
cmV2aWV3VVJMKHJlcXVlc3QudXJsKCkpKQotICAgICAgICByZXR1cm4gZnVuY3Rpb24oV1RGTW92
ZShyZXF1ZXN0KSwgbWFrZVdlYWtQdHIoZm9ybVN0YXRlLmdldCgpKSwgU2hvdWxkQ29udGludWU6
Olllcyk7CisgICAgICAgIHJldHVybiBmdW5jdGlvbihXVEZNb3ZlKHJlcXVlc3QpLCBtYWtlV2Vh
a1B0cihmb3JtU3RhdGUuZ2V0KCkpLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246OkNvbnRpbnVl
TG9hZCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKQEAgLTE2MSw3
ICsxNjEsNyBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdQogICAgICAgICAgICAgaWYgKHVuYmxv
Y2tlZCkKICAgICAgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCkucmVsb2FkKCk7CiAgICAgICAg
IH0pOwotICAgICAgICByZXR1cm4gZnVuY3Rpb24oeyB9LCBudWxscHRyLCBTaG91bGRDb250aW51
ZTo6Tm8pOworICAgICAgICByZXR1cm4gZnVuY3Rpb24oeyB9LCBudWxscHRyLCBOYXZpZ2F0aW9u
UG9saWN5RGVjaXNpb246Oklnbm9yZUxvYWQpOwogICAgIH0KICAgICBtX2NvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlciA9IHsgfTsKICNlbmRpZgpAQCAtMTgxLDEzICsxODEsMTYgQEAgdm9pZCBQ
b2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgY29uc3QgUmVzb3UKICAgICAgICAgICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCku
c3RhcnREb3dubG9hZChyZXF1ZXN0LCBzdWdnZXN0ZWRGaWxlbmFtZSk7CiAgICAgICAgICAgICBG
QUxMVEhST1VHSDsKICAgICAgICAgY2FzZSBQb2xpY3lBY3Rpb246Oklnbm9yZToKLSAgICAgICAg
ICAgIHJldHVybiBmdW5jdGlvbih7IH0sIG51bGxwdHIsIFNob3VsZENvbnRpbnVlOjpObyk7Cisg
ICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oeyB9LCBudWxscHRyLCBOYXZpZ2F0aW9uUG9saWN5
RGVjaXNpb246Oklnbm9yZUxvYWQpOworICAgICAgICBjYXNlIFBvbGljeUFjdGlvbjo6U3RvcEFs
bExvYWRzOgorICAgICAgICAgICAgZnVuY3Rpb24oeyB9LCBudWxscHRyLCBOYXZpZ2F0aW9uUG9s
aWN5RGVjaXNpb246OlN0b3BBbGxMb2Fkcyk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IGNhc2UgUG9saWN5QWN0aW9uOjpVc2U6CiAgICAgICAgICAgICBpZiAoIW1fZnJhbWUubG9hZGVy
KCkuY2xpZW50KCkuY2FuSGFuZGxlUmVxdWVzdChyZXF1ZXN0KSkgewogICAgICAgICAgICAgICAg
IGhhbmRsZVVuaW1wbGVtZW50YWJsZVBvbGljeShtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmNh
bm5vdFNob3dVUkxFcnJvcihyZXF1ZXN0KSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0
aW9uKHsgfSwgeyB9LCBTaG91bGRDb250aW51ZTo6Tm8pOworICAgICAgICAgICAgICAgIHJldHVy
biBmdW5jdGlvbih7IH0sIHsgfSwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uOjpJZ25vcmVMb2Fk
KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihXVEZNb3ZlKHJl
cXVlc3QpLCBtYWtlV2Vha1B0cihmb3JtU3RhdGUuZ2V0KCkpLCBTaG91bGRDb250aW51ZTo6WWVz
KTsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihXVEZNb3ZlKHJlcXVlc3QpLCBtYWtlV2Vh
a1B0cihmb3JtU3RhdGUuZ2V0KCkpLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246OkNvbnRpbnVl
TG9hZCk7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfSk7
CkBAIC0yMTEsNiArMjE0LDEwIEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOZXdXaW5kb3dQ
b2xpY3koTmF2aWdhdGlvbkFjdGlvbiYmIG5hdmlnYXRpb25BY3Rpb24sIFJlCiAgICAgICAgIGNh
c2UgUG9saWN5QWN0aW9uOjpJZ25vcmU6CiAgICAgICAgICAgICBmdW5jdGlvbih7IH0sIG51bGxw
dHIsIHsgfSwgeyB9LCBTaG91bGRDb250aW51ZTo6Tm8pOwogICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBjYXNlIFBvbGljeUFjdGlvbjo6U3RvcEFsbExvYWRzOgorICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBmdW5jdGlvbih7IH0sIG51bGxwdHIsIHsg
fSwgeyB9LCBTaG91bGRDb250aW51ZTo6Tm8pOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICBjYXNlIFBvbGljeUFjdGlvbjo6VXNlOgogICAgICAgICAgICAgZnVuY3Rpb24ocmVxdWVzdCwg
bWFrZVdlYWtQdHIoZm9ybVN0YXRlLmdldCgpKSwgZnJhbWVOYW1lLCBuYXZpZ2F0aW9uQWN0aW9u
LCBTaG91bGRDb250aW51ZTo6WWVzKTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUG9saWN5Q2hlY2tlci5oCmluZGV4IGQ3ZmQ3YjNmYjE3YTU4MjFjZDMxNDU3YjI5OGI1
MDJlMjZiMGQ3M2UuLjBlZjFlNmU1NzMxY2ZhNWNiNmVkN2VhZTViMjdhMjljNWM5M2FlMmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuaApAQCAtNTcsMTAgKzU3LDE2IEBAIGVu
dW0gY2xhc3MgU2hvdWxkQ29udGludWUgewogICAgIE5vCiB9OwogCitlbnVtIGNsYXNzIE5hdmln
YXRpb25Qb2xpY3lEZWNpc2lvbiA6IHVpbnQ4X3QgeworICAgIENvbnRpbnVlTG9hZCwKKyAgICBJ
Z25vcmVMb2FkLAorICAgIFN0b3BBbGxMb2FkcywKK307CisKIGVudW0gY2xhc3MgUG9saWN5RGVj
aXNpb25Nb2RlIHsgU3luY2hyb25vdXMsIEFzeW5jaHJvbm91cyB9OwogCiB1c2luZyBOZXdXaW5k
b3dQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiwgY29uc3QgU3RyaW5nJiBmcmFt
ZU5hbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBTaG91bGRDb250aW51ZSk+OwotdXNpbmcg
TmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24gPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlc291cmNlUmVxdWVzdCYmLCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiwgU2hvdWxkQ29udGludWUp
PjsKK3VzaW5nIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJiwgV2Vha1B0cjxGb3JtU3RhdGU+JiYsIE5hdmln
YXRpb25Qb2xpY3lEZWNpc2lvbik+OwogCiBjbGFzcyBQb2xpY3lDaGVja2VyIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShQb2xpY3lDaGVja2VyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCmluZGV4IDI0MjdiMTU2MmJh
ZGE0N2E4ZjVjN2VjODI4MTU4NmM2N2IwNGU3YjAuLmRmMmFmZWMxNDQ1NzcwOWU1ZTcwOTVlNTk1
NWJkYmViZjJlYTM5MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcApAQCAtMzEyLDYgKzMxMiw5IEBAIHZvaWQgTmV0d29y
a0RhdGFUYXNrQmxvYjo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRXJyb3IgZXJyb3JDb2Rl
KQogICAgICAgICAgICAgbV9idWZmZXIucmVzaXplKGJ1ZmZlclNpemUpOwogICAgICAgICAgICAg
cmVhZCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpT
dG9wQWxsTG9hZHM6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBvbGljeUFjdGlvbjo6SWdub3JlOgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpEb3dubG9hZDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbQppbmRleCBlYzUyM2I2YjE4OGYwY2Q1Mjk0NGFkN2JmNTMzNjdmYWUwNjMwNmM5Li4y
YTk1ZDlkZTE5YzNkYWNhNzcwMWM3NTM0ZDdiMmFkMGUwZTlkOTY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tCkBAIC02MSw2ICs2MSwxMSBAQCBDRlN0cmluZ1JlZiBjb25zdCBXZWJLaXQySFRUUFNQcm94
eURlZmF1bHRzS2V5ID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KEAiV2ViSwogc3RhdGljIE5T
VVJMU2Vzc2lvblJlc3BvbnNlRGlzcG9zaXRpb24gdG9OU1VSTFNlc3Npb25SZXNwb25zZURpc3Bv
c2l0aW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiBkaXNwb3NpdGlvbikKIHsKICAgICBzd2l0Y2gg
KGRpc3Bvc2l0aW9uKSB7CisgICAgY2FzZSBXZWJDb3JlOjpQb2xpY3lBY3Rpb246OlN0b3BBbGxM
b2FkczoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjaWYgQVNTRVJUX0RJU0FCTEVE
CisgICAgICAgIEZBTExUSFJPVUdIOworI2VuZGlmCiAgICAgY2FzZSBXZWJDb3JlOjpQb2xpY3lB
Y3Rpb246Oklnbm9yZToKICAgICAgICAgcmV0dXJuIE5TVVJMU2Vzc2lvblJlc3BvbnNlQ2FuY2Vs
OwogICAgIGNhc2UgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpVc2U6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjN2UwOWQ4MjE2NjkxMmYyNTYxYzgyYTM4YTYz
MWVkMzc4YzAwMTI3Li42OGJlYjA0Mjg0ODFhN2RhZTQ5ZWQ5NDQxNTA5NzQyZDJmOTk2ODBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTI3MTAsNyArMjcx
MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bihQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBCiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
cHJvY2Vzc0Zvck5hdmlnYXRpb24ucHRyKCkgIT0gJnByb2Nlc3MoKSkgewotICAgICAgICAgICAg
cG9saWN5QWN0aW9uID0gUG9saWN5QWN0aW9uOjpJZ25vcmU7CisgICAgICAgICAgICBwb2xpY3lB
Y3Rpb24gPSBQb2xpY3lBY3Rpb246OlN0b3BBbGxMb2FkczsKICAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbiwgc3dhcHBpbmcgcHJvY2VzcyAlaSB3aXRoIHByb2Nlc3MgJWkgZm9yIG5hdmlnYXRp
b24sIHJlYXNvbjogJXtwdWJsaWN9cyIsIHByb2Nlc3NJZGVudGlmaWVyKCksIHByb2Nlc3NGb3JO
YXZpZ2F0aW9uLT5wcm9jZXNzSWRlbnRpZmllcigpLCByZWFzb24udXRmOCgpLmRhdGEoKSk7CiAg
ICAgICAgICAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiKFByb2Nlc3NTd2FwcGluZykgU3dpdGNo
aW5nIGZyb20gcHJvY2VzcyAlaSB0byBuZXcgcHJvY2VzcyAoJWkpIGZvciBuYXZpZ2F0aW9uICUi
IFBSSXU2NCAiICclcyciLCBwcm9jZXNzSWRlbnRpZmllcigpLCBwcm9jZXNzRm9yTmF2aWdhdGlv
bi0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIG5hdmln
YXRpb24tPmxvZ2dpbmdTdHJpbmcoKSk7CiAgICAgICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk0ZDYyZDUxYTQ4ZDMyMzA2OTcz
Y2VlMWVmYWI3OTIyNTFiZmExZTEuLmU0ZjI2MDcyNjY1NzFiNDRhZjZjOGU1M2VjOWIxMmY0MGMw
ODc0MzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxOS0wMi0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIFJFR1JFU1NJT046IEZsYWt5IEFTU0VSVElPTiBGQUlMRUQ6IG1fdW5j
b21taXR0ZWRTdGF0ZS5zdGF0ZSA9PSBTdGF0ZTo6Q29tbWl0dGVkIG9uIGh0dHAvdGVzdHMvY29v
a2llcy9zYW1lLXNpdGUvZmV0Y2gtYWZ0ZXItdG9wLWxldmVsLW5hdmlnYXRpb24taW5pdGlhdGVk
LWZyb20taWZyYW1lLWluLWNyb3NzLW9yaWdpbi1wYWdlLmh0bWwKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5Mzc0MAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNDc1MjcyNjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIEFQSSB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbToKKwogMjAxOS0w
MS0zMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJldmVydCByMjM4ODE5IHdoaWNoIGlzIHVubmVlZGVkIGFuZCBjYXVzZWQgYSBwZXJmb3Jt
YW5jZSByZWdyZXNzaW9uLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggN2Vl
OWVlYmI2ZWM0Mjg5ZTA3ZTUzOWM1MTk0YzI2ZWZmMzVkY2JmNC4uZjM5ZTMyOWUzOWFlODg5M2Q0
N2Q0NGZiYWQ0N2ZmYTUyMTEwMTU2NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1t
CkBAIC0yNDkxLDYgKzI0OTEsNTMgQEAgVEVTVChQcm9jZXNzU3dhcCwgTWFpbkZyYW1lc09ubHkp
CiAgICAgRVhQRUNUX0VRKDF1LCBzZWVuUElEcy5zaXplKCkpOwogfQogCitzdGF0aWMgY29uc3Qg
Y2hhciogbmF2aWdhdGVCZWZvcmVQYWdlTG9hZEVuZEJ5dGVzID0gUiJQU09OUkVTT1VSQ0UoCis8
Ym9keT4KKzxhIGlkPSJ0ZXN0TGluayIgaHJlZj0icHNvbjovL3d3dy5hcHBsZS5jb20vbWFpbi5o
dG1sIj5MaW5rPC9hPgorPHNjcmlwdD4KKyAgICB0ZXN0TGluay5jbGljaygpOworPC9zY3JpcHQ+
Cis8cD5URVNUPC9wPgorPHNjcmlwdCBzcmM9InRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InRlc3QyLmpzIj48L3NjcmlwdD4KKzxpZnJhbWUgc3JjPSJzdWJmcmFtZTEuaHRtbD48L2lm
cmFtZT4KKzxpZnJhbWUgc3JjPSJzdWJmcmFtZTIuaHRtbD48L2lmcmFtZT4KKzxpZnJhbWUgc3Jj
PSJzdWJmcmFtZTMuaHRtbD48L2lmcmFtZT4KKzxpZnJhbWUgc3JjPSJzdWJmcmFtZTQuaHRtbD48
L2lmcmFtZT4KKzwvYm9keT4KKylQU09OUkVTT1VSQ0UiOworCitURVNUKFByb2Nlc3NTd2FwLCBO
YXZpZ2F0ZUNyb3NzU2l0ZUJlZm9yZVBhZ2VMb2FkRW5kKQoreworICAgIGF1dG8gcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOworICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1N3
YXBzT25OYXZpZ2F0aW9uOllFU107CisgICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRQ
cmV3YXJtc1Byb2Nlc3Nlc0F1dG9tYXRpY2FsbHk6WUVTXTsKKyAgICBhdXRvIHByb2Nlc3NQb29s
ID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBhdXRvIHdlYlZpZXdDb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKKyAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wu
Z2V0KCldOworICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tQU09OU2NoZW1lIGFsbG9jXSBp
bml0XSk7CisgICAgW2hhbmRsZXIgYWRkTWFwcGluZ0Zyb21VUkxTdHJpbmc6QCJwc29uOi8vd3d3
LndlYmtpdC5vcmcvbWFpbi5odG1sIiB0b0RhdGE6bmF2aWdhdGVCZWZvcmVQYWdlTG9hZEVuZEJ5
dGVzXTsKKyAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5k
bGVyLmdldCgpIGZvclVSTFNjaGVtZTpAIlBTT04iXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOworICAg
IGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUFNPTk5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQo
KV07CisKKyAgICBbd2ViVmlldyBjb25maWd1cmF0aW9uXS5wcmVmZXJlbmNlcy5zYWZlQnJvd3Np
bmdFbmFibGVkID0gTk87CisKKyAgICBmYWlsZWQgPSBmYWxzZTsKKyAgICBOU1VSTFJlcXVlc3Qg
KnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAicHNvbjovL3d3dy53ZWJraXQub3JnL21haW4uaHRtbCJdXTsKKyAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpyZXF1ZXN0XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9u
ZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgRVhQRUNUX0ZBTFNFKGZhaWxlZCk7CisgICAg
RVhQRUNUX1dLX1NUUkVRKEAicHNvbjovL3d3dy5hcHBsZS5jb20vbWFpbi5odG1sIiwgW1t3ZWJW
aWV3IFVSTF0gYWJzb2x1dGVTdHJpbmddKTsKK30KKworCiBURVNUKFByb2Nlc3NTd2FwLCBEb1Nh
bWVTaXRlTmF2aWdhdGlvbkFmdGVyQ3Jvc3NTaXRlUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCkKIHsK
ICAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>