<?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>174710</bug_id>
          
          <creation_ts>2017-07-21 06:08:38 -0700</creation_ts>
          <short_desc>WebDriver: handle click events on option elements</short_desc>
          <delta_ts>2021-06-12 11:56:46 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>175016</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bburg</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>joepeck</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>srividhya.vkb</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1330954</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-07-21 06:08:38 -0700</bug_when>
    <thetext>The spec explicitly says we should handle clicks on option elements in a different way. If the option item is a child of a select that allows multiple items, we should actually toggle the item selected state. See https://www.w3.org/TR/webdriver/#element-click. The main problem we have here is that client rects don&apos;t work at all for option elements in WebKit, so we are currenly always clicking at 0,0 for option elements. I guess it&apos;s because in WebKit option elements don&apos;t have a renderer, the thing is that it works in firefox and chromium. If we manage to make clicks work on option elements, maybe we can simply add Meta/Ctrl modifier to the mouse event when the option element should be toggled, since Meta/Ctrl + Click is indeed the desired behavior. I think this is causing several tests to fail, at least testIsSelectedAndToggle is failing sor sure because of this.

selenium/webdriver/common/api_example_tests.py F
================================================================================== short test summary info ===================================================================================
FAIL selenium/webdriver/common/api_example_tests.py::testIsSelectedAndToggle[WebKitGTK]

========================================================================================== FAILURES ==========================================================================================
_____________________________________________________________________________ testIsSelectedAndToggle[WebKitGTK] _____________________________________________________________________________

driver = &lt;selenium.webdriver.webkitgtk.webdriver.WebDriver (session=&quot;4da33091-8ace-4991-bb2e-61c1c48d2dc4&quot;)&gt;, pages = &lt;conftest.Pages object at 0x7fa80ea2b950&gt;

    def testIsSelectedAndToggle(driver, pages):
        pages.load(&quot;formPage.html&quot;)
        elem = driver.find_element_by_id(&quot;multi&quot;)
        option_elems = elem.find_elements_by_xpath(&quot;option&quot;)
        assert option_elems[0].is_selected()
        option_elems[0].click()
&gt;       assert not option_elems[0].is_selected()
E       assert not True
E        +  where True = &lt;bound method WebElement.is_selected of &lt;selenium.webdriver.remote.webelement....4991-bb2e-61c1c48d2dc4&quot;, element=&quot;node-21CE8204-45CE-4C7C-AF6D-BF0B6A75D0D3&quot;)&gt;&gt;()
E        +    where &lt;bound method WebElement.is_selected of &lt;selenium.webdriver.remote.webelement....4991-bb2e-61c1c48d2dc4&quot;, element=&quot;node-21CE8204-45CE-4C7C-AF6D-BF0B6A75D0D3&quot;)&gt;&gt; = &lt;selenium.webdriver.remote.webelement.WebElement (session=&quot;4da33091-8ace-4991-bb2e-61c1c48d2dc4&quot;, element=&quot;node-21CE8204-45CE-4C7C-AF6D-BF0B6A75D0D3&quot;)&gt;.is_selected

selenium/webdriver/common/api_example_tests.py:178: AssertionError</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331047</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-07-21 12:00:49 -0700</bug_when>
    <thetext>&lt;rdar://problem/33459305&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336440</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-08 05:33:05 -0700</bug_when>
    <thetext>Actually we can&apos;t click in option elements in general, because we should be able to select also elements in a drop down menu list, or in a listbox even when the element is not visible in the scroll area. So, we need to handle option elements differently as explained in the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336445</commentid>
    <comment_count>3</comment_count>
      <attachid>317563</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-08 05:54:33 -0700</bug_when>
    <thetext>Created attachment 317563
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336447</commentid>
    <comment_count>4</comment_count>
      <attachid>317564</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-08 06:00:20 -0700</bug_when>
    <thetext>Created attachment 317564
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336448</commentid>
    <comment_count>5</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-08 06:01:39 -0700</bug_when>
    <thetext>Attachment 317564 did not pass style-queue:


ERROR: Source/WebDriver/Session.h:138:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/Session.h:140:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/Session.cpp:734:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/Session.cpp:1199:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 4 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>1336480</commentid>
    <comment_count>6</comment_count>
      <attachid>317573</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-08 08:14:58 -0700</bug_when>
    <thetext>Created attachment 317573
Try to fix mac builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336481</commentid>
    <comment_count>7</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-08 08:16:38 -0700</bug_when>
    <thetext>Attachment 317573 did not pass style-queue:


ERROR: Source/WebDriver/Session.h:138:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/Session.h:140:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/Session.cpp:734:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/Session.cpp:1199:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 4 in 15 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>1336499</commentid>
    <comment_count>8</comment_count>
      <attachid>317573</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-08-08 09:26:31 -0700</bug_when>
    <thetext>Comment on attachment 317573
Try to fix mac builds

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

Two main issues we need to resolve:

- move isOptionElement to driver-side JS query
- figure out spec-correctness for DOM events

&gt; Source/WebDriver/ChangeLog:20
&gt; +        (WebDriver::CommandResult::httpStatusCode const): ADd ElementNotSelectable.

Nit: Add

&gt; Source/WebKit/UIProcess/Automation/Automation.json:430
&gt; +                { &quot;name&quot;: &quot;isOptionElement&quot;, &quot;type&quot;: &quot;boolean&quot;, &quot;description&quot;: &quot;If the element is an HTML option element&quot; }

The driver should just use a small JS snippet to do this, unless I&apos;m missing something. Unlike the other out-parameters, this can be easily computed using client JS. There are cases where safaridriver does this, for example to see if an &lt;input&gt; is type=file and whether it has &quot;multiple&quot; attribute or not. I don&apos;t want to extend the protocol every time we need to do a type test on an element. Reducing message traffic by one message is not important since the REST service and browser are using fast message passing (hopefully). On macOS, our async XPC is basically free.

&gt; Source/WebKit/UIProcess/Automation/Automation.json:435
&gt; +            &quot;name&quot;: &quot;selectOptionElement&quot;,

This seems fine, but maybe call it toggleOptionElement?

&gt; Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:866
&gt; +    auto callback = m_selectOptionElementCallbacks.take(callbackID);

(Someday I&apos;m going to write a generic implementation of this callback mechanism, as it&apos;s something we do all over WebKit2.)

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:613
&gt; +    String elementNotInteractableErrorType = Inspector::Protocol::AutomationHelpers::getEnumConstantValue(Inspector::Protocol::Automation::ErrorMessage::ElementNotInteractable);

This seems like the right thing to do, but I can&apos;t find it in the spec. Should I file bug?

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:626
&gt; +    if (selectElement-&gt;isDisabledFormControl() || optionElement.isDisabledFormControl()) {

Ditto.

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:632
&gt; +    selectElement-&gt;optionSelectedByUser(optionElement.index(), true, selectElement-&gt;multiple());

This won&apos;t fire mouseover/move/down/up/click events like the spec wants. We&apos;ll probably have to simulate those events ourselves as the only way to do it natively would be to try and click the native widgets. I think that would be problematic for dropdown menus as the interaction is a bit more subtle than the DOM events would lead you to believe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336878</commentid>
    <comment_count>9</comment_count>
      <attachid>317573</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-08 23:23:39 -0700</bug_when>
    <thetext>Comment on attachment 317573
Try to fix mac builds

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

&gt;&gt; Source/WebKit/UIProcess/Automation/Automation.json:430
&gt;&gt; +                { &quot;name&quot;: &quot;isOptionElement&quot;, &quot;type&quot;: &quot;boolean&quot;, &quot;description&quot;: &quot;If the element is an HTML option element&quot; }
&gt; 
&gt; The driver should just use a small JS snippet to do this, unless I&apos;m missing something. Unlike the other out-parameters, this can be easily computed using client JS. There are cases where safaridriver does this, for example to see if an &lt;input&gt; is type=file and whether it has &quot;multiple&quot; attribute or not. I don&apos;t want to extend the protocol every time we need to do a type test on an element. Reducing message traffic by one message is not important since the REST service and browser are using fast message passing (hopefully). On macOS, our async XPC is basically free.

I didn&apos;t do this for efficiency, but just for convenience :-) the code in the driver side is a lot simpler.

&gt;&gt; Source/WebKit/UIProcess/Automation/Automation.json:435
&gt;&gt; +            &quot;name&quot;: &quot;selectOptionElement&quot;,
&gt; 
&gt; This seems fine, but maybe call it toggleOptionElement?

It only toggles when the select is multiple, otherwise it selects the element (in case of combo element).

&gt;&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:613
&gt;&gt; +    String elementNotInteractableErrorType = Inspector::Protocol::AutomationHelpers::getEnumConstantValue(Inspector::Protocol::Automation::ErrorMessage::ElementNotInteractable);
&gt; 
&gt; This seems like the right thing to do, but I can&apos;t find it in the spec. Should I file bug?

The spec says we should do the select algorithm only for option elements not for optgroup ones, so in theory we should do the normal click for group options, but I don&apos;t think it makes sense. First, it won&apos;t have any effect if we manage to click it, but it&apos;s not easy to clikc it anyway, it could be hidden in the drop down list or off the list box scroll area. So, yes, I think the spec should mention what to do with optgroups.

&gt;&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:626
&gt;&gt; +    if (selectElement-&gt;isDisabledFormControl() || optionElement.isDisabledFormControl()) {
&gt; 
&gt; Ditto.

Same here, the spec doesn&apos;t say anything, element not selectable error is only mentioned in the errors table. I had to add this to fix a couple of selenium test.

&gt;&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:632
&gt;&gt; +    selectElement-&gt;optionSelectedByUser(optionElement.index(), true, selectElement-&gt;multiple());
&gt; 
&gt; This won&apos;t fire mouseover/move/down/up/click events like the spec wants. We&apos;ll probably have to simulate those events ourselves as the only way to do it natively would be to try and click the native widgets. I think that would be problematic for dropdown menus as the interaction is a bit more subtle than the DOM events would lead you to believe.

I know, even when it&apos;s in the spec I don&apos;t think selenium will expect we fire all those events, at least we fire the important ones also mentioned in the spec, the input and change events. I&apos;ll add a FIXME about the other events, but I wouldn&apos;t block this feature on those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336967</commentid>
    <comment_count>10</comment_count>
      <attachid>317573</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-08-09 08:38:34 -0700</bug_when>
    <thetext>Comment on attachment 317573
Try to fix mac builds

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

&gt;&gt;&gt; Source/WebKit/UIProcess/Automation/Automation.json:435
&gt;&gt;&gt; +            &quot;name&quot;: &quot;selectOptionElement&quot;,
&gt;&gt; 
&gt;&gt; This seems fine, but maybe call it toggleOptionElement?
&gt; 
&gt; It only toggles when the select is multiple, otherwise it selects the element (in case of combo element).

Okay, let&apos;s leave it as is.

&gt;&gt;&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:632
&gt;&gt;&gt; +    selectElement-&gt;optionSelectedByUser(optionElement.index(), true, selectElement-&gt;multiple());
&gt;&gt; 
&gt;&gt; This won&apos;t fire mouseover/move/down/up/click events like the spec wants. We&apos;ll probably have to simulate those events ourselves as the only way to do it natively would be to try and click the native widgets. I think that would be problematic for dropdown menus as the interaction is a bit more subtle than the DOM events would lead you to believe.
&gt; 
&gt; I know, even when it&apos;s in the spec I don&apos;t think selenium will expect we fire all those events, at least we fire the important ones also mentioned in the spec, the input and change events. I&apos;ll add a FIXME about the other events, but I wouldn&apos;t block this feature on those.

Agree, it seems kinda pointless and hopefully people don&apos;t depend on these events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338326</commentid>
    <comment_count>11</comment_count>
      <attachid>318034</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-14 05:32:03 -0700</bug_when>
    <thetext>Created attachment 318034
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338327</commentid>
    <comment_count>12</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-14 05:34:45 -0700</bug_when>
    <thetext>Attachment 318034 did not pass style-queue:


ERROR: Source/WebDriver/Session.h:140:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/Session.cpp:1194:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/Session.cpp:1240:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 3 in 16 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>1338384</commentid>
    <comment_count>13</comment_count>
      <attachid>318034</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-08-14 10:20:35 -0700</bug_when>
    <thetext>Comment on attachment 318034
Updated patch

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

enthusiastic r=me!

&gt; Source/WebKit/UIProcess/Automation/Automation.json:437
&gt; +                { &quot;name&quot;: &quot;browsingContextHandle&quot;, &quot;$ref&quot;: &quot;BrowsingContextHandle&quot;, &quot;description&quot;: &quot;The handle for the browsing context.&quot; },

Nit: you can just omit these comments if they don&apos;t add much.

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:509
&gt; +static WebCore::Element* elementContainer(WebCore::Element&amp; element)

Nit: maybe containerElementForElement() to make it read better...

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:559
&gt; +    auto* containerElement = elementContainer(*coreElement);

... down here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338635</commentid>
    <comment_count>14</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-15 00:03:25 -0700</bug_when>
    <thetext>Committed r220740: &lt;http://trac.webkit.org/changeset/220740&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317563</attachid>
            <date>2017-08-08 05:54:33 -0700</date>
            <delta_ts>2017-08-08 06:00:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wd-click-option-elements.diff</filename>
            <type>text/plain</type>
            <size>35748</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkRyaXZl
ci9DaGFuZ2VMb2cKaW5kZXggZDhjNjRhMmU4MTEuLjBlMGY3ODIyZmFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxv
ZwpAQCAtMSw1ICsxLDM1IEBACiAyMDE3LTA4LTA4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAorICAgICAgICBXZWJEcml2ZXI6IGhhbmRsZSBjbGljayBldmVu
dHMgb24gb3B0aW9uIGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzQ3MTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzNDU5MzA1Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE9wdGlvbmFs
IGVsZW1lbnRzIGFyZSBjb25zaWRlcmVkIGFzIGEgc3BlY2lhbCBjYXNlIGJ5IHRoZSBzcGVjaWZp
Y2F0aW9uLiBXaGVuIGNsaWNraW5nIGFuIG9wdGlvbiBlbGVtZW50LCB3ZQorICAgICAgICBzaG91
bGQgZ2V0IGl0cyBjb250YWluZXIgYW5kIHVzZSBpdCB3aGVuIHNjcm9sbGluZyBpbnRvIHZpZXcg
YW5kIGNhbGN1bGF0aW5nIGluLXZpZXcgY2VudGVyIHBvaW50IGluc3RlYWQgb2YgdGhlCisgICAg
ICAgIG9wdGlvbiBlbGVtZW50IGl0c2VsZi4gVGhlbiwgd2Ugc2hvdWxkIG5vdCBlbXVsYXRlIGEg
Y2xpY2ssIGJ1dCBjaGFuZ2UgdGhlIHNlbGVjdGVkIHN0YXR1cyBvZiB0aGUgb3B0aW9uIGVsZW1l
bnQKKyAgICAgICAgbGlrZSBpZiBpdCB3ZXJlIGRvbmUgYnkgYSB1c2VyIGFjdGlvbiwgZmlyaW5n
IHRoZSBjb3JyZXNwb25kaW5nIGV2ZW50cy4gTm93IGNvbXB1dGVFbGVtZW50TGF5b3V0IGFsc28g
cmV0dXJucworICAgICAgICB3aGV0aGVyIHRoZSBlbGVtZW50IGlzIGFuIG9wdGlvbiBlbGVtZW50
IG9yIG5vdCwgYW5kIHdlIHVzZSBpdCBpbiB0aGUgY2xpY2sgaW1wbGVtZW50YXRpb24gdG8gZGVj
aWRlIGlmIGNhbGxpbmcKKyAgICAgICAgc2VsZWN0T3B0aW9uRWxlbWVudCgpIG9yIHBlcmZvcm1N
b3VzZUludGVyYWN0aW9uKCkuCisKKyAgICAgICAgVGhpcyBmaXhlcyBtb3JlIHRoYW4gMjAgc2Vs
ZW5pdW0gdGVzdHMuCisKKyAgICAgICAgKiBDb21tYW5kUmVzdWx0LmNwcDoKKyAgICAgICAgKFdl
YkRyaXZlcjo6Q29tbWFuZFJlc3VsdDo6Q29tbWFuZFJlc3VsdCk6IEhhbmRsZSBFbGVtZW50Tm90
U2VsZWN0YWJsZSBwcm90b2NvbCBlcnJvci4KKyAgICAgICAgKFdlYkRyaXZlcjo6Q29tbWFuZFJl
c3VsdDo6aHR0cFN0YXR1c0NvZGUgY29uc3QpOiBBRGQgRWxlbWVudE5vdFNlbGVjdGFibGUuCisg
ICAgICAgIChXZWJEcml2ZXI6OkNvbW1hbmRSZXN1bHQ6OmVycm9yU3RyaW5nIGNvbnN0KTogRGl0
dG8uCisgICAgICAgICogQ29tbWFuZFJlc3VsdC5oOgorICAgICAgICAqIFNlc3Npb24uY3BwOgor
ICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpjb21wdXRlRWxlbWVudExheW91dCk6IEhhbmRs
ZSBpc09wdGlvbkVsZW1lbnQgb3V0cHV0IHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkRyaXZlcjo6
U2Vzc2lvbjo6Z2V0RWxlbWVudFJlY3QpOiBJZ25vcmUgaXNPcHRpb25FbGVtZW50LgorICAgICAg
ICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpzZWxlY3RPcHRpb25FbGVtZW50KTogQXNrIGF1dG9tYXRp
b24gdG8gc2VsZWN0IHRoZSBnaXZlbiBvcHRpb24gZWxlbWVudC4KKyAgICAgICAgKFdlYkRyaXZl
cjo6U2Vzc2lvbjo6ZWxlbWVudENsaWNrKTogQ2FsbCBzZWxlY3RPcHRpb25FbGVtZW50KCkgb3Ig
cGVyZm9ybU1vdXNlSW50ZXJhY3Rpb24oKSBkZXBlbmRpbmcgb24KKyAgICAgICAgaXNPcHRpb25F
bGVtZW50IHJldHVybmVkIGJ5IGNvbXB1dGVFbGVtZW50TGF5b3V0LgorICAgICAgICAqIFNlc3Np
b24uaDoKKworMjAxNy0wOC0wOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CisKICAgICAgICAgV2ViRHJpdmVyOiB0aW1lb3V0IHdoZW4gSmF2YVNjcmlwdCBhbGVy
dCBpcyBzaG93biBpbiBvbmxvYWQgaGFuZGxlcgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MzE1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2
ZXIvQ29tbWFuZFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3Bw
CmluZGV4IGQ5ZGM5ZjBlYjllLi4zOTJlMmVkYjFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRy
aXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1
bHQuY3BwCkBAIC0xMDgsNiArMTA4LDggQEAgQ29tbWFuZFJlc3VsdDo6Q29tbWFuZFJlc3VsdChS
ZWZQdHI8SW5zcGVjdG9yVmFsdWU+JiYgcmVzdWx0LCBzdGQ6Om9wdGlvbmFsPEVycm8KICAgICAg
ICAgICAgIG1fZXJyb3JDb2RlID0gRXJyb3JDb2RlOjpOb1N1Y2hBbGVydDsKICAgICAgICAgZWxz
ZSBpZiAoZXJyb3JOYW1lID09ICJVbmV4cGVjdGVkQWxlcnRPcGVuIikKICAgICAgICAgICAgIG1f
ZXJyb3JDb2RlID0gRXJyb3JDb2RlOjpVbmV4cGVjdGVkQWxlcnRPcGVuOworICAgICAgICBlbHNl
IGlmIChlcnJvck5hbWUgPT0gIkVsZW1lbnROb3RTZWxlY3RhYmxlIikKKyAgICAgICAgICAgIG1f
ZXJyb3JDb2RlID0gRXJyb3JDb2RlOjpFbGVtZW50Tm90U2VsZWN0YWJsZTsKIAogICAgICAgICBi
cmVhazsKICAgICB9CkBAIC0xMjksNiArMTMxLDcgQEAgdW5zaWduZWQgQ29tbWFuZFJlc3VsdDo6
aHR0cFN0YXR1c0NvZGUoKSBjb25zdAogICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJk
cml2ZXIvI2hhbmRsaW5nLWVycm9ycwogICAgIHN3aXRjaCAobV9lcnJvckNvZGUudmFsdWUoKSkg
ewogICAgIGNhc2UgRXJyb3JDb2RlOjpFbGVtZW50Q2xpY2tJbnRlcmNlcHRlZDoKKyAgICBjYXNl
IEVycm9yQ29kZTo6RWxlbWVudE5vdFNlbGVjdGFibGU6CiAgICAgY2FzZSBFcnJvckNvZGU6OkVs
ZW1lbnROb3RJbnRlcmFjdGFibGU6CiAgICAgY2FzZSBFcnJvckNvZGU6OkludmFsaWRBcmd1bWVu
dDoKICAgICBjYXNlIEVycm9yQ29kZTo6SW52YWxpZEVsZW1lbnRTdGF0ZToKQEAgLTE2NCw2ICsx
NjcsOCBAQCBTdHJpbmcgQ29tbWFuZFJlc3VsdDo6ZXJyb3JTdHJpbmcoKSBjb25zdAogICAgIHN3
aXRjaCAobV9lcnJvckNvZGUudmFsdWUoKSkgewogICAgIGNhc2UgRXJyb3JDb2RlOjpFbGVtZW50
Q2xpY2tJbnRlcmNlcHRlZDoKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiZWxlbWVudCBj
bGljayBpbnRlcmNlcHRlZCIpOworICAgIGNhc2UgRXJyb3JDb2RlOjpFbGVtZW50Tm90U2VsZWN0
YWJsZToKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiZWxlbWVudCBub3Qgc2VsZWN0YWJs
ZSIpOwogICAgIGNhc2UgRXJyb3JDb2RlOjpFbGVtZW50Tm90SW50ZXJhY3RhYmxlOgogICAgICAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsKCJlbGVtZW50IG5vdCBpbnRlcmFjdGFibGUiKTsKICAgICBj
YXNlIEVycm9yQ29kZTo6SW52YWxpZEFyZ3VtZW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRy
aXZlci9Db21tYW5kUmVzdWx0LmggYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuaApp
bmRleCA4YzNmYjg5N2JiMi4uN2Y3ODllNWEzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2
ZXIvQ29tbWFuZFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5o
CkBAIC00MSw2ICs0MSw3IEBAIHB1YmxpYzoKICAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIv
d2ViZHJpdmVyLyNoYW5kbGluZy1lcnJvcnMKICAgICBlbnVtIGNsYXNzIEVycm9yQ29kZSB7CiAg
ICAgICAgIEVsZW1lbnRDbGlja0ludGVyY2VwdGVkLAorICAgICAgICBFbGVtZW50Tm90U2VsZWN0
YWJsZSwKICAgICAgICAgRWxlbWVudE5vdEludGVyYWN0YWJsZSwKICAgICAgICAgSW52YWxpZEFy
Z3VtZW50LAogICAgICAgICBJbnZhbGlkRWxlbWVudFN0YXRlLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkRyaXZlci9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5k
ZXggN2IxYWJkNDAwYTkuLjFlNWUyM2Y3YTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVy
L1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKQEAgLTc0Myw3
ICs3NDMsNyBAQCBTdHJpbmcgU2Vzc2lvbjo6ZXh0cmFjdEVsZW1lbnRJRChJbnNwZWN0b3JWYWx1
ZSYgdmFsdWUpCiAgICAgcmV0dXJuIGVsZW1lbnRJRDsKIH0KIAotdm9pZCBTZXNzaW9uOjpjb21w
dXRlRWxlbWVudExheW91dChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgT3B0aW9uU2V0PEVsZW1l
bnRMYXlvdXRPcHRpb24+IG9wdGlvbnMsIEZ1bmN0aW9uPHZvaWQgKHN0ZDo6b3B0aW9uYWw8UmVj
dD4mJiwgc3RkOjpvcHRpb25hbDxQb2ludD4mJiwgYm9vbCwgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFNlc3Npb246OmNvbXB1dGVFbGVtZW50
TGF5b3V0KGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBPcHRpb25TZXQ8RWxlbWVudExheW91dE9w
dGlvbj4gb3B0aW9ucywgRnVuY3Rpb248dm9pZCAoc3RkOjpvcHRpb25hbDxSZWN0PiYmLCBzdGQ6
Om9wdGlvbmFsPFBvaW50PiYmLCBib29sLCBib29sLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQobV90b3BsZXZlbEJyb3dzaW5n
Q29udGV4dC52YWx1ZSgpKTsKIApAQCAtNzU1LDEyICs3NTUsMTIgQEAgdm9pZCBTZXNzaW9uOjpj
b21wdXRlRWxlbWVudExheW91dChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgT3B0aW9uU2V0PEVs
ZW1lbnRMYXkKICAgICBwYXJhbWV0ZXJzLT5zZXRCb29sZWFuKEFTQ0lJTGl0ZXJhbCgidXNlVmll
d3BvcnRDb29yZGluYXRlcyIpLCBvcHRpb25zLmNvbnRhaW5zKEVsZW1lbnRMYXlvdXRPcHRpb246
OlVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMpKTsKICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNr
ZW5kKEFTQ0lJTGl0ZXJhbCgiY29tcHV0ZUVsZW1lbnRMYXlvdXQiKSwgV1RGTW92ZShwYXJhbWV0
ZXJzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRS
ZXNwb25zZSYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJy
b3IgfHwgIXJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgZmFsc2UsIFdURk1vdmUocmVzcG9u
c2UucmVzcG9uc2VPYmplY3QpKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6
bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBmYWxzZSwgZmFsc2UsIFdURk1vdmUocmVzcG9uc2UucmVz
cG9uc2VPYmplY3QpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZWN0T2JqZWN0OwogICAgICAgICBpZiAoIXJlc3BvbnNl
LnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJyZWN0IiksIHJlY3RPYmpl
Y3QpKSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIHN0ZDo6
bnVsbG9wdCwgZmFsc2UsIG51bGxwdHIpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
c3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIGZhbHNlLCBmYWxzZSwgbnVsbHB0cik7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGVs
ZW1lbnRYOwpAQCAtNzc0LDcgKzc3NCw3IEBAIHZvaWQgU2Vzc2lvbjo6Y29tcHV0ZUVsZW1lbnRM
YXlvdXQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIE9wdGlvblNldDxFbGVtZW50TGF5CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFlbGVtZW50WCB8fCAhZWxlbWVudFkp
IHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0LCBmYWxzZSwgbnVsbHB0cik7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgZmFsc2UsIGZhbHNlLCBudWxscHRyKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gZWxlbWVu
dFdpZHRoOwpAQCAtNzg4LDI5ICs3ODgsMzQgQEAgdm9pZCBTZXNzaW9uOjpjb21wdXRlRWxlbWVu
dExheW91dChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgT3B0aW9uU2V0PEVsZW1lbnRMYXkKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoIWVsZW1lbnRXaWR0aCB8fCAhZWxl
bWVudEhlaWdodCkgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0
LCBzdGQ6Om51bGxvcHQsIGZhbHNlLCBudWxscHRyKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBmYWxzZSwgZmFsc2UsIG51bGxwdHIp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIFJlY3QgcmVjdCA9IHsg
eyBlbGVtZW50WC52YWx1ZSgpLCBlbGVtZW50WS52YWx1ZSgpIH0sIHsgZWxlbWVudFdpZHRoLnZh
bHVlKCksIGVsZW1lbnRIZWlnaHQudmFsdWUoKSB9IH07CiAKICAgICAgICAgYm9vbCBpc09ic2N1
cmVkOwogICAgICAgICBpZiAoIXJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKEFT
Q0lJTGl0ZXJhbCgiaXNPYnNjdXJlZCIpLCBpc09ic2N1cmVkKSkgewotICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIGZhbHNlLCBudWxscHRy
KTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0LCBmYWxzZSwgZmFsc2UsIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIGJvb2wgaXNPcHRpb25FbGVtZW50OworICAgICAgICBpZiAoIXJlc3BvbnNl
LnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKEFTQ0lJTGl0ZXJhbCgiaXNPcHRpb25FbGVtZW50
IiksIGlzT3B0aW9uRWxlbWVudCkpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0
ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBmYWxzZSwgZmFsc2UsIG51bGxwdHIpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IGluVmlld0NlbnRlclBvaW50T2JqZWN0OwogICAgICAgICBpZiAoIXJlc3BvbnNlLnJlc3BvbnNl
T2JqZWN0LT5nZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJpblZpZXdDZW50ZXJQb2ludCIpLCBpblZp
ZXdDZW50ZXJQb2ludE9iamVjdCkpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
Y3QsIHN0ZDo6bnVsbG9wdCwgaXNPYnNjdXJlZCwgbnVsbHB0cik7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihyZWN0LCBzdGQ6Om51bGxvcHQsIGlzT2JzY3VyZWQsIGlzT3B0aW9uRWxl
bWVudCwgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
aW50IGluVmlld0NlbnRlclBvaW50WCwgaW5WaWV3Q2VudGVyUG9pbnRZOwogICAgICAgICBpZiAo
IWluVmlld0NlbnRlclBvaW50T2JqZWN0LT5nZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgieCIpLCBp
blZpZXdDZW50ZXJQb2ludFgpCiAgICAgICAgICAgICB8fCAhaW5WaWV3Q2VudGVyUG9pbnRPYmpl
Y3QtPmdldEludGVnZXIoQVNDSUlMaXRlcmFsKCJ5IiksIGluVmlld0NlbnRlclBvaW50WSkpIHsK
LSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0
LCBpc09ic2N1cmVkLCBudWxscHRyKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0
ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBpc09ic2N1cmVkLCBpc09wdGlvbkVsZW1lbnQsIG51
bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIFBvaW50IGlu
Vmlld0NlbnRlclBvaW50ID0geyBpblZpZXdDZW50ZXJQb2ludFgsIGluVmlld0NlbnRlclBvaW50
WSB9OwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZWN0LCBpblZpZXdDZW50ZXJQb2ludCwg
aXNPYnNjdXJlZCwgbnVsbHB0cik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlY3QsIGlu
Vmlld0NlbnRlclBvaW50LCBpc09ic2N1cmVkLCBpc09wdGlvbkVsZW1lbnQsIG51bGxwdHIpOwog
ICAgIH0pOwogfQogCkBAIC0xMDM0LDcgKzEwMzksNyBAQCB2b2lkIFNlc3Npb246OmdldEVsZW1l
bnRSZWN0KGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVz
dQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBjb21wdXRlRWxlbWVudExheW91dChl
bGVtZW50SUQsIHsgfSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25h
bDxSZWN0PiYmIHJlY3QsIHN0ZDo6b3B0aW9uYWw8UG9pbnQ+JiYsIGJvb2wsIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+JiYgZXJyb3IpIHsKKyAgICAgICAgY29tcHV0ZUVsZW1lbnRMYXlvdXQoZWxl
bWVudElELCB7IH0sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8
UmVjdD4mJiByZWN0LCBzdGQ6Om9wdGlvbmFsPFBvaW50PiYmLCBib29sLCBib29sLCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiYmIGVycm9yKSB7CiAgICAgICAgICAgICBpZiAoIXJlY3QgfHwgZXJy
b3IpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0Ojpm
YWlsKFdURk1vdmUoZXJyb3IpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTIwMyw2
ICsxMjA4LDIxIEBAIHZvaWQgU2Vzc2lvbjo6d2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlKEZ1
bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYgY29tCiAgICAgfSk7CiB9CiAKK3ZvaWQg
U2Vzc2lvbjo6c2VsZWN0T3B0aW9uRWxlbWVudChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVu
Y3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwYXJhbWV0ZXJzID0gSW5zcGVjdG9yT2JqZWN0Ojpj
cmVhdGUoKTsKKyAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJicm93c2lu
Z0NvbnRleHRIYW5kbGUiKSwgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKKyAg
ICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJmcmFtZUhhbmRsZSIpLCBtX2N1
cnJlbnRCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7CisgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5n
KEFTQ0lJTGl0ZXJhbCgibm9kZUhhbmRsZSIpLCBlbGVtZW50SUQpOworICAgIG1faG9zdC0+c2Vu
ZENvbW1hbmRUb0JhY2tlbmQoQVNDSUlMaXRlcmFsKCJzZWxlY3RPcHRpb25FbGVtZW50IiksIFdU
Rk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25I
b3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgeworICAgICAgICBpZiAocmVzcG9uc2Uu
aXNFcnJvcikgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6
ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSkpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6
OnN1Y2Nlc3MoKSk7CisgICAgfSk7Cit9CisKIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudENsaWNrKGNv
bnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4
dCkgewpAQCAtMTIxMiw3ICsxMjMyLDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50Q2xpY2soY29u
c3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQKIAogICAg
IE9wdGlvblNldDxFbGVtZW50TGF5b3V0T3B0aW9uPiBvcHRpb25zID0gRWxlbWVudExheW91dE9w
dGlvbjo6U2Nyb2xsSW50b1ZpZXdJZk5lZWRlZDsKICAgICBvcHRpb25zIHw9IEVsZW1lbnRMYXlv
dXRPcHRpb246OlVzZVZpZXdwb3J0Q29vcmRpbmF0ZXM7Ci0gICAgY29tcHV0ZUVsZW1lbnRMYXlv
dXQoZWxlbWVudElELCBvcHRpb25zLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShzdGQ6
Om9wdGlvbmFsPFJlY3Q+JiYgcmVjdCwgc3RkOjpvcHRpb25hbDxQb2ludD4mJiBpblZpZXdDZW50
ZXIsIGJvb2wgaXNPYnNjdXJlZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBlcnJvcikgbXV0
YWJsZSB7CisgICAgY29tcHV0ZUVsZW1lbnRMYXlvdXQoZWxlbWVudElELCBvcHRpb25zLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBlbGVtZW50SUQsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8UmVjdD4m
JiByZWN0LCBzdGQ6Om9wdGlvbmFsPFBvaW50PiYmIGluVmlld0NlbnRlciwgYm9vbCBpc09ic2N1
cmVkLCBib29sIGlzT3B0aW9uRWxlbWVudCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBlcnJv
cikgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVjdCB8fCBlcnJvcikgewogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKGVycm9yKSkpOwog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTIyNiw3ICsxMjQ2LDEwIEBAIHZvaWQgU2Vzc2lvbjo6
ZWxlbWVudENsaWNrKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21t
YW5kUmVzdWx0CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBwZXJm
b3JtTW91c2VJbnRlcmFjdGlvbihpblZpZXdDZW50ZXIudmFsdWUoKS54LCBpblZpZXdDZW50ZXIu
dmFsdWUoKS55LCBNb3VzZUJ1dHRvbjo6TGVmdCwgTW91c2VJbnRlcmFjdGlvbjo6U2luZ2xlQ2xp
Y2ssIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgaWYgKGlzT3B0aW9uRWxl
bWVudCkKKyAgICAgICAgICAgIHNlbGVjdE9wdGlvbkVsZW1lbnQoZWxlbWVudElELCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBlcmZvcm1N
b3VzZUludGVyYWN0aW9uKGluVmlld0NlbnRlci52YWx1ZSgpLngsIGluVmlld0NlbnRlci52YWx1
ZSgpLnksIE1vdXNlQnV0dG9uOjpMZWZ0LCBNb3VzZUludGVyYWN0aW9uOjpTaW5nbGVDbGljaywg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCiAgICAgICAgIHdhaXRGb3JOYXZpZ2F0aW9u
VG9Db21wbGV0ZShbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgewogICAgICAgICAgICAgaWYgKHJlc3Vs
dC5pc0Vycm9yKCkgJiYgcmVzdWx0LmVycm9yQ29kZSgpICE9IENvbW1hbmRSZXN1bHQ6OkVycm9y
Q29kZTo6VW5leHBlY3RlZEFsZXJ0T3BlbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZl
ci9TZXNzaW9uLmggYi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uaAppbmRleCA3NWI0YWIzMDli
OS4uOTYwNjcwNzcyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5oCkBAIC0xMzUsNyArMTM1LDkgQEAgcHJpdmF0
ZToKICAgICAgICAgU2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCA9IDEgPDwgMCwKICAgICAgICAgVXNl
Vmlld3BvcnRDb29yZGluYXRlcyA9IDEgPDwgMSwKICAgICB9OwotICAgIHZvaWQgY29tcHV0ZUVs
ZW1lbnRMYXlvdXQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIE9wdGlvblNldDxFbGVtZW50TGF5
b3V0T3B0aW9uPiwgRnVuY3Rpb248dm9pZCAoc3RkOjpvcHRpb25hbDxSZWN0PiYmLCBzdGQ6Om9w
dGlvbmFsPFBvaW50PiYmLCBib29sLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
JiYpPiYmKTsKKyAgICB2b2lkIGNvbXB1dGVFbGVtZW50TGF5b3V0KGNvbnN0IFN0cmluZyYgZWxl
bWVudElELCBPcHRpb25TZXQ8RWxlbWVudExheW91dE9wdGlvbj4sIEZ1bmN0aW9uPHZvaWQgKHN0
ZDo6b3B0aW9uYWw8UmVjdD4mJiwgc3RkOjpvcHRpb25hbDxQb2ludD4mJiwgYm9vbCwgYm9vbCwg
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmKT4mJik7CisKKyAgICB2b2lkIHNl
bGVjdE9wdGlvbkVsZW1lbnQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQg
KENvbW1hbmRSZXN1bHQmJik+JiYpOwogCiAgICAgZW51bSBjbGFzcyBNb3VzZUJ1dHRvbiB7IE5v
bmUsIExlZnQsIE1pZGRsZSwgUmlnaHQgfTsKICAgICBlbnVtIGNsYXNzIE1vdXNlSW50ZXJhY3Rp
b24geyBNb3ZlLCBEb3duLCBVcCwgU2luZ2xlQ2xpY2ssIERvdWJsZUNsaWNrIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDZkYTg2MmViZDFjLi41MzU3YTcwNmVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzNSBAQAog
MjAxNy0wOC0wOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAK
KyAgICAgICAgV2ViRHJpdmVyOiBoYW5kbGUgY2xpY2sgZXZlbnRzIG9uIG9wdGlvbiBlbGVtZW50
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NzEw
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMzQ1OTMwNT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc2VsZWN0T3B0aW9uRWxlbWVudCBtZXRo
b2QgdG8gYXV0b21hdGlvbiB0byBzZWxlY3QgYW4gb3B0aW9uIGVsZW1lbnQgYWNjb3JkaW5nIHRv
IHRoZSBXZWJEcml2ZXIKKyAgICAgICAgc3BlY2lmaWNhdGlvbi4KKworICAgICAgICAxNC4xIEVs
ZW1lbnQgQ2xpY2suCisgICAgICAgIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJkcml2ZXIvd2Vi
ZHJpdmVyLXNwZWMuaHRtbCNlbGVtZW50LWNsaWNrCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0
b21hdGlvbi9BdXRvbWF0aW9uLmpzb246IEFkZCBzZWxlY3RPcHRpb25FbGVtZW50IG1ldGhvZCBh
bmQgRWxlbWVudE5vdFNlbGVjdGFibGUgZXJyb3IuCisgICAgICAgICogVUlQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6ZGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQpOiBIYW5kbGUgaXNPcHRpb25F
bGVtZW50IHJldHVybiB2YWx1ZS4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Np
b246OnNlbGVjdE9wdGlvbkVsZW1lbnQpOiBTZW5kIFNlbGVjdE9wdGlvbkVsZW1lbnQgbWVzc2Fn
ZSB0byB0aGUgd2ViIHByb2Nlc3MuCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNz
aW9uOjpkaWRTZWxlY3RPcHRpb25FbGVtZW50KTogTm90aWZ5IHRoZSBkcml2ZXIuCisgICAgICAg
ICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbjog
QWRkIERpZFNlbGVjdE9wdGlvbkVsZW1lbnQgbWVzc2FnZSBhbmQgdXBkYXRlCisgICAgICAgIERp
ZENvbXB1dGVFbGVtZW50TGF5b3V0IHRoYXQgbm93IHJldHVybnMgaXNPcHRpb25FbGVtZW50Lgor
ICAgICAgICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZWxlbWVudENvbnRhaW5lcik6IEhlbHBlciB0byBnZXQg
dGhlIGNvbnRhaW5lciBvZiBhbiBlbGVtZW50IGFjY29yZGluZyB0byB0aGUgc3BlYy4KKyAgICAg
ICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Y29tcHV0ZUVsZW1lbnRMYXlv
dXQpOiBVc2UgdGhlIGNvbnRhaW5lciBlbGVtZW50IHRvIHNjcm9sbCB0aGUgdmlldyBhbmQKKyAg
ICAgICAgY29tcHV0ZSB0aGUgaW4tdmlldyBjZW50ZXIgcG9pbnQuCisgICAgICAgIChXZWJLaXQ6
OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnNlbGVjdE9wdGlvbkVsZW1lbnQpOiBVc2UgSFRN
TFNlbGVjdEVsZW1lbnQ6Om9wdGlvblNlbGVjdGVkQnlVc2VyKCkuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5p
bjogQWRkIFNlbGVjdE9wdGlvbkVsZW1lbnQgbWVzc2FnZS4KKworMjAxNy0wOC0wOCAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKICAgICAgICAgV2ViRHJpdmVy
OiB0aW1lb3V0IHdoZW4gSmF2YVNjcmlwdCBhbGVydCBpcyBzaG93biBpbiBvbmxvYWQgaGFuZGxl
cgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MzE1
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21h
dGlvbi5qc29uIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9u
Lmpzb24KaW5kZXggNTlkODUyNzNkMjAuLjcxZTBmOWY5NjE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbgpAQCAtNjAsNyArNjAs
OCBAQAogICAgICAgICAgICAgICAgICJJbnZhbGlkUGFyYW1ldGVyIiwKICAgICAgICAgICAgICAg
ICAiSW52YWxpZFNlbGVjdG9yIiwKICAgICAgICAgICAgICAgICAiRWxlbWVudE5vdEludGVyYWN0
YWJsZSIsCi0gICAgICAgICAgICAgICAgIlVuZXhwZWN0ZWRBbGVydE9wZW4iCisgICAgICAgICAg
ICAgICAgIlVuZXhwZWN0ZWRBbGVydE9wZW4iLAorICAgICAgICAgICAgICAgICJFbGVtZW50Tm90
U2VsZWN0YWJsZSIKICAgICAgICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewpAQCAtNDI2
LDcgKzQyNywxOCBAQAogICAgICAgICAgICAgInJldHVybnMiOiBbCiAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJyZWN0IiwgIiRyZWYiOiAiUmVjdCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgbGF5
b3V0IHJlY3QgZm9yIHRoZSByZXF1ZXN0ZWQgZWxlbWVudC4gU3BlY2lmaWVkIGluIHBhZ2Ugb3Ig
dmlld3BvcnQgY29vcmRpbmF0ZXMgYmFzZWQgb24gdGhlIHVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMg
cGFyYW1ldGVyLiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImluVmlld0NlbnRlclBv
aW50IiwgIm9wdGlvbmFsIjogdHJ1ZSwgIiRyZWYiOiAiUG9pbnQiLCAiZGVzY3JpcHRpb24iOiAi
VGhlIGluLXZpZXcgY2VudGVyIHBvaW50IGZvciB0aGUgcmVxdWVzdGVkIGVsZW1lbnQuIFNwZWNp
ZmllZCBpbiBwYWdlIG9yIHZpZXdwb3J0IGNvb3JkaW5hdGVzIGJhc2VkIG9uIHRoZSB1c2VWaWV3
cG9ydENvb3JkaW5hdGVzIHBhcmFtZXRlci4iIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJpc09ic2N1cmVkIiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJJZiB0aGUg
aW4tdmlldyBjZW50ZXIgcG9pbnQgb2YgdGhlIHJlcXVlc3RlZCBlbGVtZW50IGlzIG9ic2N1cmVk
IGJ5IGFub3RoZXIgZWxlbWVudC4iIH0KKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlzT2Jz
Y3VyZWQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIklmIHRoZSBpbi12aWV3
IGNlbnRlciBwb2ludCBvZiB0aGUgcmVxdWVzdGVkIGVsZW1lbnQgaXMgb2JzY3VyZWQgYnkgYW5v
dGhlciBlbGVtZW50LiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlzT3B0aW9uRWxl
bWVudCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiSWYgdGhlIGVsZW1lbnQg
aXMgYW4gSFRNTCBvcHRpb24gZWxlbWVudCIgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAg
ICJhc3luYyI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUi
OiAic2VsZWN0T3B0aW9uRWxlbWVudCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2Vs
ZWN0cyB0aGUgZ2l2ZW4gb3B0aW9uIGVsZW1lbnQuIEluIGNhc2Ugb2YgY29udGFpbmVyIHdpdGgg
bXVsdGlwbGUgb3B0aW9ucyBlbmFibGVkLCB0aGUgZWxlbWVudCBzZWxlY3RlZG5lc3MgaXMgdG9n
Z2xlZC4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJicm93c2luZ0NvbnRleHRIYW5kbGUiLCAiJHJlZiI6ICJCcm93c2luZ0NvbnRleHRI
YW5kbGUiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGhhbmRsZSBmb3IgdGhlIGJyb3dzaW5nIGNvbnRl
eHQuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZnJhbWVIYW5kbGUiLCAiJHJlZiI6
ICJGcmFtZUhhbmRsZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgaGFuZGxlIGZvciB0aGUgZnJhbWUg
dGhhdCBjb250YWlucyB0aGUgZWxlbWVudC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJub2RlSGFuZGxlIiwgIiRyZWYiOiAiTm9kZUhhbmRsZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUg
aGFuZGxlIG9mIHRoZSBlbGVtZW50IHRvIHVzZS4iIH0KICAgICAgICAgICAgIF0sCiAgICAgICAg
ICAgICAiYXN5bmMiOiB0cnVlCiAgICAgICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4
IGRmYTgyN2E2ZjY4Li5lOGM3MmM3OGRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTgz
Nyw3ICs4MzcsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpjb21wdXRlRWxlbWVudExh
eW91dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cgogICAgIHBhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpDb21wdXRlRWxlbWVu
dExheW91dChwYWdlLT5wYWdlSUQoKSwgZnJhbWVJRC52YWx1ZSgpLCBub2RlSGFuZGxlLCBzY3Jv
bGxJbnRvVmlld0lmTmVlZGVkLCB1c2VWaWV3cG9ydENvb3JkaW5hdGVzLCBjYWxsYmFja0lEKSwg
MCk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRpZENvbXB1dGVFbGVtZW50TGF5
b3V0KHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYkNvcmU6OkludFJlY3QgcmVjdCwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpJbnRQb2ludD4gaW5WaWV3Q2VudGVyUG9pbnQsIGJvb2wgaXNPYnNjdXJl
ZCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpk
aWRDb21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBjYWxsYmFja0lELCBXZWJDb3JlOjpJbnRS
ZWN0IHJlY3QsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGluVmlld0NlbnRlclBv
aW50LCBib29sIGlzT2JzY3VyZWQsIGJvb2wgaXNPcHRpb25FbGVtZW50LCBjb25zdCBTdHJpbmcm
IGVycm9yVHlwZSkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jb21wdXRlRWxlbWVudExheW91
dENhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spCkBAIC04NjQs
NyArODY0LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlkQ29tcHV0ZUVsZW1lbnRM
YXlvdXQodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZToKICAgICAgICAgLnJlbGVhc2UoKTsK
IAogICAgIGlmICghaW5WaWV3Q2VudGVyUG9pbnQpIHsKLSAgICAgICAgY2FsbGJhY2stPnNlbmRT
dWNjZXNzKFdURk1vdmUocmVjdE9iamVjdCksIG51bGxwdHIsIGlzT2JzY3VyZWQpOworICAgICAg
ICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoV1RGTW92ZShyZWN0T2JqZWN0KSwgbnVsbHB0ciwgaXNP
YnNjdXJlZCwgaXNPcHRpb25FbGVtZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
ODczLDkgKzg3Myw0MCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRDb21wdXRlRWxl
bWVudExheW91dCh1aW50NjRfdCBjYWxsYmFja0lELCBXZWJDb3JlOgogICAgICAgICAuc2V0WShp
blZpZXdDZW50ZXJQb2ludC52YWx1ZSgpLnkoKSkKICAgICAgICAgLnJlbGVhc2UoKTsKIAotICAg
IGNhbGxiYWNrLT5zZW5kU3VjY2VzcyhXVEZNb3ZlKHJlY3RPYmplY3QpLCBXVEZNb3ZlKGluVmll
d0NlbnRlclBvaW50T2JqZWN0KSwgaXNPYnNjdXJlZCk7CisgICAgY2FsbGJhY2stPnNlbmRTdWNj
ZXNzKFdURk1vdmUocmVjdE9iamVjdCksIFdURk1vdmUoaW5WaWV3Q2VudGVyUG9pbnRPYmplY3Qp
LCBpc09ic2N1cmVkLCBpc09wdGlvbkVsZW1lbnQpOwogfQogCit2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjpzZWxlY3RPcHRpb25FbGVtZW50KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5n
JiBmcmFtZUhhbmRsZSwgY29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCBSZWY8U2VsZWN0T3B0aW9u
RWxlbWVudENhbGxiYWNrPiYmIGNhbGxiYWNrKQoreworICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9
IHdlYlBhZ2VQcm94eUZvckhhbmRsZShicm93c2luZ0NvbnRleHRIYW5kbGUpOworICAgIGlmICgh
cGFnZSkKKyAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90Rm91bmQp
OworCisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCA9IHdlYkZyYW1lSURGb3JI
YW5kbGUoZnJhbWVIYW5kbGUpOworICAgIGlmICghZnJhbWVJRCkKKyAgICAgICAgRkFJTF9XSVRI
X1BSRURFRklORURfRVJST1IoRnJhbWVOb3RGb3VuZCk7CisKKyAgICB1aW50NjRfdCBjYWxsYmFj
a0lEID0gbV9uZXh0U2VsZWN0T3B0aW9uRWxlbWVudENhbGxiYWNrSUQrKzsKKyAgICBtX3NlbGVj
dE9wdGlvbkVsZW1lbnRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2sp
KTsKKworICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5OjpTZWxlY3RPcHRpb25FbGVtZW50KHBhZ2UtPnBhZ2VJRCgpLCBmcmFtZUlELnZh
bHVlKCksIG5vZGVIYW5kbGUsIGNhbGxiYWNrSUQpLCAwKTsKK30KKwordm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6ZGlkU2VsZWN0T3B0aW9uRWxlbWVudCh1aW50NjRfdCBjYWxsYmFja0lELCBj
b25zdCBTdHJpbmcmIGVycm9yVHlwZSkKK3sKKyAgICBhdXRvIGNhbGxiYWNrID0gbV9zZWxlY3RP
cHRpb25FbGVtZW50Q2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCk7CisgICAgaWYgKCFjYWxsYmFj
aykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFlcnJvclR5cGUuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1Jf
TUVTU0FHRShlcnJvclR5cGUpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNhbGxi
YWNrLT5zZW5kU3VjY2VzcygpOworfQorCisKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246Omlz
U2hvd2luZ0phdmFTY3JpcHREaWFsb2coSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBib29sKiByZXN1bHQpCiB7
CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaAppbmRleCA2Yzg5OGZhMTY1
OC4uOWQ4Y2RkZTJkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKQEAgLTEzNCw2ICsxMzQsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZShJbnNwZWN0b3I6OkVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmlu
Zyogb3B0aW9uYWxGcmFtZUhhbmRsZSwgY29uc3QgaW50KiBvcHRpb25hbE9yZGluYWwsIGNvbnN0
IFN0cmluZyogb3B0aW9uYWxOYW1lLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsTm9kZUhhbmRsZSwg
UmVmPFJlc29sdmVDaGlsZEZyYW1lSGFuZGxlQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwogICAgIHZv
aWQgcmVzb2x2ZVBhcmVudEZyYW1lSGFuZGxlKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nJiBmcmFtZUhhbmRs
ZSwgUmVmPFJlc29sdmVQYXJlbnRGcmFtZUhhbmRsZUNhbGxiYWNrPiYmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGNvbXB1dGVFbGVtZW50TGF5b3V0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nJiBmcmFtZUhhbmRs
ZSwgY29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCBjb25zdCBib29sKiBvcHRpb25hbFNjcm9sbElu
dG9WaWV3SWZOZWVkZWQsIGNvbnN0IGJvb2wqIHVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMsIFJlZjxJ
bnNwZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkNvbXB1dGVFbGVt
ZW50TGF5b3V0Q2FsbGJhY2s+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2VsZWN0T3B0aW9uRWxl
bWVudChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRl
eHRIYW5kbGUsIGNvbnN0IFN0cmluZyYgZnJhbWVIYW5kbGUsIGNvbnN0IFN0cmluZyYgbm9kZUhh
bmRsZSwgUmVmPEluc3BlY3Rvcjo6QXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6
U2VsZWN0T3B0aW9uRWxlbWVudENhbGxiYWNrPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGlzU2hv
d2luZ0phdmFTY3JpcHREaWFsb2coSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBib29sKiByZXN1bHQpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlzbWlzc0N1cnJlbnRKYXZhU2NyaXB0RGlhbG9nKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBhY2NlcHRDdXJyZW50SmF2YVNjcmlwdERpYWxvZyhJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUpIG92ZXJyaWRlOwpAQCAtMTc2LDcg
KzE3Nyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlv
bih1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBTdHJpbmcmIHJlc3VsdCwgY29uc3QgU3RyaW5n
JiBlcnJvclR5cGUpOwogICAgIHZvaWQgZGlkUmVzb2x2ZUNoaWxkRnJhbWUodWludDY0X3QgY2Fs
bGJhY2tJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpOwogICAg
IHZvaWQgZGlkUmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKTsKLSAgICB2b2lkIGRpZENvbXB1dGVF
bGVtZW50TGF5b3V0KHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYkNvcmU6OkludFJlY3QsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+LCBib29sIGlzT2JzY3VyZWQsIGNvbnN0IFN0cmlu
ZyYgZXJyb3JUeXBlKTsKKyAgICB2b2lkIGRpZENvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90
IGNhbGxiYWNrSUQsIFdlYkNvcmU6OkludFJlY3QsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50
UG9pbnQ+LCBib29sIGlzT2JzY3VyZWQsIGJvb2wgaXNPcHRpb25FbGVtZW50LCBjb25zdCBTdHJp
bmcmIGVycm9yVHlwZSk7CisgICAgdm9pZCBkaWRTZWxlY3RPcHRpb25FbGVtZW50KHVpbnQ2NF90
IGNhbGxiYWNrSUQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKTsKICAgICB2b2lkIGRpZFRha2VT
Y3JlZW5zaG90KHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFu
ZGxlJiwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpOwogICAgIHZvaWQgZGlkR2V0Q29va2llc0Zv
ckZyYW1lKHVpbnQ2NF90IGNhbGxiYWNrSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+LCBjb25z
dCBTdHJpbmcmIGVycm9yVHlwZSk7CiAgICAgdm9pZCBkaWREZWxldGVDb29raWUodWludDY0X3Qg
Y2FsbGJhY2tJRCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpOwpAQCAtMjQyLDYgKzI0NCw5IEBA
IHByaXZhdGU6CiAgICAgdWludDY0X3QgbV9uZXh0RGVsZXRlQ29va2llQ2FsbGJhY2tJRCB7IDEg
fTsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyOjpEZWxldGVTaW5nbGVDb29raWVDYWxsYmFjaz4+IG1fZGVs
ZXRlQ29va2llQ2FsbGJhY2tzOwogCisgICAgdWludDY0X3QgbV9uZXh0U2VsZWN0T3B0aW9uRWxl
bWVudENhbGxiYWNrSUQgeyAxIH07CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3Bl
Y3Rvcjo6QXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6U2VsZWN0T3B0aW9uRWxl
bWVudENhbGxiYWNrPj4gbV9zZWxlY3RPcHRpb25FbGVtZW50Q2FsbGJhY2tzOworCiAgICAgUnVu
TG9vcDo6VGltZXI8V2ViQXV0b21hdGlvblNlc3Npb24+IG1fbG9hZFRpbWVyOwogICAgIFZlY3Rv
cjxTdHJpbmc+IG1fZmlsZXNUb1NlbGVjdEZvckZpbGVVcGxvYWQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24ubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uLm1lc3NhZ2VzLmluCmluZGV4IGYzOGFjOTUzZjYxLi5hZmM3NTNjYmE3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLm1lc3NhZ2VzLmluCkBAIC0yNiw3ICsyNiw5IEBAIG1l
c3NhZ2VzIC0+IFdlYkF1dG9tYXRpb25TZXNzaW9uIHsKICAgICBEaWRSZXNvbHZlQ2hpbGRGcmFt
ZSh1aW50NjRfdCBjYWxsYmFja0lELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgZXJyb3JUeXBl
KQogICAgIERpZFJlc29sdmVQYXJlbnRGcmFtZSh1aW50NjRfdCBjYWxsYmFja0lELCB1aW50NjRf
dCBmcmFtZUlELCBTdHJpbmcgZXJyb3JUeXBlKQogCi0gICAgRGlkQ29tcHV0ZUVsZW1lbnRMYXlv
dXQodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6SW50UmVjdCByZWN0LCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkludFBvaW50PiBpblZpZXdDZW50ZXJQb2ludCwgYm9vbCBpc09ic2N1cmVk
LCBTdHJpbmcgZXJyb3JUeXBlKQorICAgIERpZENvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90
IGNhbGxiYWNrSUQsIFdlYkNvcmU6OkludFJlY3QgcmVjdCwgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpJbnRQb2ludD4gaW5WaWV3Q2VudGVyUG9pbnQsIGJvb2wgaXNPYnNjdXJlZCwgYm9vbCBpc09w
dGlvbkVsZW1lbnQsIFN0cmluZyBlcnJvclR5cGUpCisKKyAgICBEaWRTZWxlY3RPcHRpb25FbGVt
ZW50KHVpbnQ2NF90IGNhbGxiYWNrSUQsIFN0cmluZyBlcnJvclR5cGUpCiAKICAgICBEaWRUYWtl
U2NyZWVuc2hvdCh1aW50NjRfdCBjYWxsYmFja0lELCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlIGltYWdlRGF0YUhhbmRsZSwgU3RyaW5nIGVycm9yVHlwZSkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5LmNwcAppbmRleCA1MmQzNDdkMzdmMC4uYWUyMjE5ODEwMDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCkBAIC00OCw2ICs0OCw5IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9GcmFtZVRyZWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSFRNTEZyYW1lRWxlbWVudEJhc2UuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0hUTUxPcHRHcm91cEVsZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0hUTUxPcHRpb25F
bGVtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9IVE1MU2VsZWN0RWxlbWVudC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvSlNFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NYWluRnJhbWUuaD4K
ICNpbmNsdWRlIDx3dGYvVVVJRC5oPgpAQCAtNTAzLDEyICs1MDYsMzggQEAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4gZWxlbWVudEluVmlld0NsaWVudENlbnRlclBv
aW50KFdlYkNvcmUKICAgICByZXR1cm4gY2xpZW50Q2VudGVyUG9pbnQ7CiB9CiAKK3N0YXRpYyBX
ZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50Q29udGFpbmVyKFdlYkNvcmU6OkVsZW1lbnQmIGVsZW1l
bnQpCit7CisgICAgLy8gwqcxMy4gRWxlbWVudCBTdGF0ZS4KKyAgICAvLyBodHRwczovL3czYy5n
aXRodWIuaW8vd2ViZHJpdmVyL3dlYmRyaXZlci1zcGVjLmh0bWwjZGZuLWNvbnRhaW5lci4KKyAg
ICBpZiAoaXM8V2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpKSB7CisgICAgICAg
IGF1dG8mIG9wdGlvbkVsZW1lbnQgPSBkb3duY2FzdDxXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVu
dD4oZWxlbWVudCk7CisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgICAgIGlmIChh
dXRvKiBwYXJlbnRFbGVtZW50ID0gb3B0aW9uRWxlbWVudC5vd25lckRhdGFMaXN0RWxlbWVudCgp
KQorICAgICAgICAgICAgcmV0dXJuIHBhcmVudEVsZW1lbnQ7CisjZW5kaWYKKyAgICAgICAgaWYg
KGF1dG8qIHBhcmVudEVsZW1lbnQgPSBvcHRpb25FbGVtZW50Lm93bmVyU2VsZWN0RWxlbWVudCgp
KQorICAgICAgICAgICAgcmV0dXJuIHBhcmVudEVsZW1lbnQ7CisKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCisgICAgaWYgKGlzPFdlYkNvcmU6OkhUTUxPcHRHcm91cEVsZW1lbnQ+
KGVsZW1lbnQpKSB7CisgICAgICAgIGlmIChhdXRvKiBwYXJlbnRFbGVtZW50ID0gZG93bmNhc3Q8
V2ViQ29yZTo6SFRNTE9wdEdyb3VwRWxlbWVudD4oZWxlbWVudCkub3duZXJTZWxlY3RFbGVtZW50
KCkpCisgICAgICAgICAgICByZXR1cm4gcGFyZW50RWxlbWVudDsKKworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gJmVsZW1lbnQ7Cit9CisKIHZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eTo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmll
d0lmTmVlZGVkLCBib29sIHVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBh
Z2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKICAgICAgICAgU3RyaW5nIHdpbmRvd05vdEZv
dW5kRXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6Omdl
dEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9y
TWVzc2FnZTo6V2luZG93Tm90Rm91bmQpOwotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6RGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQoY2FsbGJhY2tJRCwgeyB9LCBzdGQ6Om51
bGxvcHQsIGZhbHNlLCB3aW5kb3dOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQoY2FsbGJh
Y2tJRCwgeyB9LCBzdGQ6Om51bGxvcHQsIGZhbHNlLCBmYWxzZSwgd2luZG93Tm90Rm91bmRFcnJv
clR5cGUpLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTE3LDE5ICs1NDYsMjQg
QEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRlRWxlbWVudExheW91dCh1
aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGYKIAogICAgIFdlYkZyYW1lKiBmcmFtZSA9IGZyYW1l
SUQgPyBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKSA6IHBhZ2UtPm1h
aW5XZWJGcmFtZSgpOwogICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5jb3JlRnJhbWUoKSB8fCAh
ZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCkpIHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21h
dGlvblNlc3Npb246OkRpZENvbXB1dGVFbGVtZW50TGF5b3V0KGNhbGxiYWNrSUQsIHsgfSwgc3Rk
OjpudWxsb3B0LCBmYWxzZSwgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQoY2Fs
bGJhY2tJRCwgeyB9LCBzdGQ6Om51bGxvcHQsIGZhbHNlLCBmYWxzZSwgZnJhbWVOb3RGb3VuZEVy
cm9yVHlwZSksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgV2ViQ29yZTo6RWxl
bWVudCogY29yZUVsZW1lbnQgPSBlbGVtZW50Rm9yTm9kZUhhbmRsZSgqZnJhbWUsIG5vZGVIYW5k
bGUpOwogICAgIGlmICghY29yZUVsZW1lbnQpIHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21h
dGlvblNlc3Npb246OkRpZENvbXB1dGVFbGVtZW50TGF5b3V0KGNhbGxiYWNrSUQsIHsgfSwgc3Rk
OjpudWxsb3B0LCBmYWxzZSwgbm9kZU5vdEZvdW5kRXJyb3JUeXBlKSwgMCk7CisgICAgICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRDb21wdXRlRWxlbWVudExheW91dChjYWxs
YmFja0lELCB7IH0sIHN0ZDo6bnVsbG9wdCwgZmFsc2UsIGZhbHNlLCBub2RlTm90Rm91bmRFcnJv
clR5cGUpLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChzY3JvbGxJbnRv
Vmlld0lmTmVlZGVkKSB7CisgICAgYm9vbCBpc09wdGlvbkVsZW1lbnQgPSBpczxXZWJDb3JlOjpI
VE1MT3B0aW9uRWxlbWVudD4oY29yZUVsZW1lbnQpIHx8IGlzPFdlYkNvcmU6OkhUTUxPcHRHcm91
cEVsZW1lbnQ+KGNvcmVFbGVtZW50KTsKKworICAgIGF1dG8qIGNvbnRhaW5lckVsZW1lbnQgPSBl
bGVtZW50Q29udGFpbmVyKCpjb3JlRWxlbWVudCk7CisgICAgaWYgKHNjcm9sbEludG9WaWV3SWZO
ZWVkZWQgJiYgY29udGFpbmVyRWxlbWVudCkgeworICAgICAgICAvLyDCpzE0LjEgRWxlbWVudCBD
bGljay4gU3RlcCA0LiBTY3JvbGwgaW50byB2aWV3IHRoZSBlbGVtZW504oCZcyBjb250YWluZXIu
CisgICAgICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJkcml2ZXIvd2ViZHJpdmVyLXNw
ZWMuaHRtbCNlbGVtZW50LWNsaWNrCisgICAgICAgIGNvbnRhaW5lckVsZW1lbnQtPnNjcm9sbElu
dG9WaWV3SWZOZWVkZWQoZmFsc2UpOwogICAgICAgICAvLyBGSVhNRTogV2FpdCBpbiBhbiBpbXBs
ZW1lbnRhdGlvbi1zcGVjaWZpYyB3YXkgdXAgdG8gdGhlIHNlc3Npb24gaW1wbGljaXQgd2FpdCB0
aW1lb3V0IGZvciB0aGUgZWxlbWVudCB0byBiZWNvbWUgaW4gdmlldy4KLSAgICAgICAgY29yZUVs
ZW1lbnQtPnNjcm9sbEludG9WaWV3SWZOZWVkZWQoZmFsc2UpOwogICAgIH0KIAogICAgIFdlYkNv
cmU6OkludFJlY3QgcmVjdCA9IGNvcmVFbGVtZW50LT5jbGllbnRSZWN0KCk7CkBAIC01NDIsMTMg
KzU3Niw2MSBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmNvbXB1dGVFbGVtZW50
TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZgogCiAgICAgYm9vbCBpc09ic2N1cmVk
ID0gZmFsc2U7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gaW5WaWV3Q2Vu
dGVyOwotICAgIGlmIChhdXRvIGNsaWVudENlbnRlclBvaW50ID0gZWxlbWVudEluVmlld0NsaWVu
dENlbnRlclBvaW50KCpjb3JlRWxlbWVudCwgaXNPYnNjdXJlZCkpIHsKLSAgICAgICAgaW5WaWV3
Q2VudGVyID0gV2ViQ29yZTo6SW50UG9pbnQoY29yZUZyYW1lVmlldy0+Y2xpZW50VG9Eb2N1bWVu
dFBvaW50KGNsaWVudENlbnRlclBvaW50LnZhbHVlKCkpKTsKLSAgICAgICAgaWYgKHVzZVZpZXdw
b3J0Q29vcmRpbmF0ZXMpCi0gICAgICAgICAgICBpblZpZXdDZW50ZXIgPSBjb3JlRnJhbWVWaWV3
LT5jb250ZW50c1RvUm9vdFZpZXcoaW5WaWV3Q2VudGVyLnZhbHVlKCkpOworICAgIGlmIChjb250
YWluZXJFbGVtZW50KSB7CisgICAgICAgIGlmIChhdXRvIGNsaWVudENlbnRlclBvaW50ID0gZWxl
bWVudEluVmlld0NsaWVudENlbnRlclBvaW50KCpjb250YWluZXJFbGVtZW50LCBpc09ic2N1cmVk
KSkgeworICAgICAgICAgICAgaW5WaWV3Q2VudGVyID0gV2ViQ29yZTo6SW50UG9pbnQoY29yZUZy
YW1lVmlldy0+Y2xpZW50VG9Eb2N1bWVudFBvaW50KGNsaWVudENlbnRlclBvaW50LnZhbHVlKCkp
KTsKKyAgICAgICAgICAgIGlmICh1c2VWaWV3cG9ydENvb3JkaW5hdGVzKQorICAgICAgICAgICAg
ICAgIGluVmlld0NlbnRlciA9IGNvcmVGcmFtZVZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhpblZp
ZXdDZW50ZXIudmFsdWUoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6RGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQoY2FsbGJhY2tJRCwgcmVj
dCwgaW5WaWV3Q2VudGVyLCBpc09ic2N1cmVkLCBpc09wdGlvbkVsZW1lbnQsIFN0cmluZygpKSwg
MCk7Cit9CisKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6c2VsZWN0T3B0aW9uRWxl
bWVudCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxl
LCB1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CisgICAgaWYgKCFwYWdlKSB7CisgICAgICAg
IFN0cmluZyB3aW5kb3dOb3RGb3VuZEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OldpbmRvd05vdEZvdW5kKTsKKyAgICAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFNlbGVjdE9wdGlvbkVsZW1lbnQoY2FsbGJh
Y2tJRCwgd2luZG93Tm90Rm91bmRFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIFdlYkZyYW1lKiBmcmFtZSA9IGZyYW1lSUQgPyBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS53ZWJGcmFtZShmcmFtZUlEKSA6IHBhZ2UtPm1haW5XZWJGcmFtZSgpOworICAgIGlmICgh
ZnJhbWUgfHwgIWZyYW1lLT5jb3JlRnJhbWUoKSB8fCAhZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3
KCkpIHsKKyAgICAgICAgU3RyaW5nIGZyYW1lTm90Rm91bmRFcnJvclR5cGUgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpGcmFtZU5vdEZvdW5kKTsK
KyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFNlbGVjdE9wdGlvbkVs
ZW1lbnQoY2FsbGJhY2tJRCwgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgV2ViQ29yZTo6RWxlbWVudCogY29yZUVsZW1lbnQgPSBlbGVt
ZW50Rm9yTm9kZUhhbmRsZSgqZnJhbWUsIG5vZGVIYW5kbGUpOworICAgIGlmICghY29yZUVsZW1l
bnQgfHwgKCFpczxXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudD4oY29yZUVsZW1lbnQpICYmICFp
czxXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50Pihjb3JlRWxlbWVudCkpKSB7CisgICAgICAg
IFN0cmluZyBub2RlTm90Rm91bmRFcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpOb2RlTm90Rm91bmQpOworICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkU2VsZWN0T3B0aW9uRWxlbWVudChjYWxsYmFja0lE
LCBub2RlTm90Rm91bmRFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIFN0cmluZyBlbGVtZW50Tm90SW50ZXJhY3RhYmxlRXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6RWxlbWVudE5vdEludGVyYWN0
YWJsZSk7CisgICAgaWYgKGlzPFdlYkNvcmU6OkhUTUxPcHRHcm91cEVsZW1lbnQ+KGNvcmVFbGVt
ZW50KSkgeworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkU2VsZWN0
T3B0aW9uRWxlbWVudChjYWxsYmFja0lELCBlbGVtZW50Tm90SW50ZXJhY3RhYmxlRXJyb3JUeXBl
KSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvJiBvcHRpb25FbGVtZW50
ID0gZG93bmNhc3Q8V2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ+KCpjb3JlRWxlbWVudCk7Cisg
ICAgYXV0byogc2VsZWN0RWxlbWVudCA9IG9wdGlvbkVsZW1lbnQub3duZXJTZWxlY3RFbGVtZW50
KCk7CisgICAgaWYgKCFzZWxlY3RFbGVtZW50KSB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9t
YXRpb25TZXNzaW9uOjpEaWRTZWxlY3RPcHRpb25FbGVtZW50KGNhbGxiYWNrSUQsIGVsZW1lbnRO
b3RJbnRlcmFjdGFibGVFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmIChzZWxlY3RFbGVtZW50LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSB8fCBvcHRpb25F
bGVtZW50LmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKSB7CisgICAgICAgIFN0cmluZyBlbGVtZW50
Tm90U2VsZWN0YWJsZUVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25I
ZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpFcnJvck1lc3NhZ2U6OkVsZW1lbnROb3RTZWxlY3RhYmxlKTsKKyAgICAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFNlbGVjdE9wdGlvbkVsZW1lbnQoY2FsbGJhY2tJ
RCwgZWxlbWVudE5vdFNlbGVjdGFibGVFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRDb21wdXRlRWxl
bWVudExheW91dChjYWxsYmFja0lELCByZWN0LCBpblZpZXdDZW50ZXIsIGlzT2JzY3VyZWQsIFN0
cmluZygpKSwgMCk7CisgICAgc2VsZWN0RWxlbWVudC0+b3B0aW9uU2VsZWN0ZWRCeVVzZXIob3B0
aW9uRWxlbWVudC5pbmRleCgpLCB0cnVlLCBzZWxlY3RFbGVtZW50LT5tdWx0aXBsZSgpKTsKKyAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkU2VsZWN0T3B0aW9uRWxlbWVudChj
YWxsYmFja0lELCB7IH0pLCAwKTsKIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
Ojp0YWtlU2NyZWVuc2hvdCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgKaW5kZXggNGI5Nzk0NDNhY2UuLjg0NTY3NGJkNDMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oCkBAIC02NSw2ICs2NSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCByZXNvbHZlUGFyZW50RnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGZvY3VzRnJhbWUodWlu
dDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKTsKICAgICB2b2lkIGNvbXB1dGVFbGVtZW50
TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5k
bGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCB1c2VWaWV3cG9ydENvb3JkaW5h
dGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIHNlbGVjdE9wdGlvbkVsZW1lbnQo
dWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgdWlu
dDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCB0YWtlU2NyZWVuc2hvdCh1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZ2V0Q29va2llc0ZvckZyYW1lKHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAg
ICAgdm9pZCBkZWxldGVDb29raWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBT
dHJpbmcgY29va2llTmFtZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgppbmRleCAyZGFmMmE1ZDU2My4uOWQ0MTMx
Yzg1ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5p
bgpAQCAtMzIsNiArMzIsOCBAQCBtZXNzYWdlcyAtPiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
IHsKIAogICAgIENvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwg
Ym9vbCB1c2VWaWV3cG9ydENvb3JkaW5hdGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQogCisgICAg
U2VsZWN0T3B0aW9uRWxlbWVudCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0
cmluZyBub2RlSGFuZGxlLCB1aW50NjRfdCBjYWxsYmFja0lEKQorCiAgICAgVGFrZVNjcmVlbnNo
b3QodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKQogCiAgICAgR2V0Q29va2ll
c0ZvckZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2Fs
bGJhY2tJRCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317564</attachid>
            <date>2017-08-08 06:00:20 -0700</date>
            <delta_ts>2017-08-08 08:14:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wd-click-option-elements.diff</filename>
            <type>text/plain</type>
            <size>35534</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkRyaXZl
ci9DaGFuZ2VMb2cKaW5kZXggZThmYzM0NzJhNjYuLjdhODVhNGZmZjdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMzIEBACisyMDE3LTA4LTA4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBXZWJEcml2ZXI6IGhhbmRsZSBjbGljayBldmVu
dHMgb24gb3B0aW9uIGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzQ3MTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzNDU5MzA1Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE9wdGlvbmFs
IGVsZW1lbnRzIGFyZSBjb25zaWRlcmVkIGFzIGEgc3BlY2lhbCBjYXNlIGJ5IHRoZSBzcGVjaWZp
Y2F0aW9uLiBXaGVuIGNsaWNraW5nIGFuIG9wdGlvbiBlbGVtZW50LCB3ZQorICAgICAgICBzaG91
bGQgZ2V0IGl0cyBjb250YWluZXIgYW5kIHVzZSBpdCB3aGVuIHNjcm9sbGluZyBpbnRvIHZpZXcg
YW5kIGNhbGN1bGF0aW5nIGluLXZpZXcgY2VudGVyIHBvaW50IGluc3RlYWQgb2YgdGhlCisgICAg
ICAgIG9wdGlvbiBlbGVtZW50IGl0c2VsZi4gVGhlbiwgd2Ugc2hvdWxkIG5vdCBlbXVsYXRlIGEg
Y2xpY2ssIGJ1dCBjaGFuZ2UgdGhlIHNlbGVjdGVkIHN0YXR1cyBvZiB0aGUgb3B0aW9uIGVsZW1l
bnQKKyAgICAgICAgbGlrZSBpZiBpdCB3ZXJlIGRvbmUgYnkgYSB1c2VyIGFjdGlvbiwgZmlyaW5n
IHRoZSBjb3JyZXNwb25kaW5nIGV2ZW50cy4gTm93IGNvbXB1dGVFbGVtZW50TGF5b3V0IGFsc28g
cmV0dXJucworICAgICAgICB3aGV0aGVyIHRoZSBlbGVtZW50IGlzIGFuIG9wdGlvbiBlbGVtZW50
IG9yIG5vdCwgYW5kIHdlIHVzZSBpdCBpbiB0aGUgY2xpY2sgaW1wbGVtZW50YXRpb24gdG8gZGVj
aWRlIGlmIGNhbGxpbmcKKyAgICAgICAgc2VsZWN0T3B0aW9uRWxlbWVudCgpIG9yIHBlcmZvcm1N
b3VzZUludGVyYWN0aW9uKCkuCisKKyAgICAgICAgVGhpcyBmaXhlcyBtb3JlIHRoYW4gMjAgc2Vs
ZW5pdW0gdGVzdHMuCisKKyAgICAgICAgKiBDb21tYW5kUmVzdWx0LmNwcDoKKyAgICAgICAgKFdl
YkRyaXZlcjo6Q29tbWFuZFJlc3VsdDo6Q29tbWFuZFJlc3VsdCk6IEhhbmRsZSBFbGVtZW50Tm90
U2VsZWN0YWJsZSBwcm90b2NvbCBlcnJvci4KKyAgICAgICAgKFdlYkRyaXZlcjo6Q29tbWFuZFJl
c3VsdDo6aHR0cFN0YXR1c0NvZGUgY29uc3QpOiBBRGQgRWxlbWVudE5vdFNlbGVjdGFibGUuCisg
ICAgICAgIChXZWJEcml2ZXI6OkNvbW1hbmRSZXN1bHQ6OmVycm9yU3RyaW5nIGNvbnN0KTogRGl0
dG8uCisgICAgICAgICogQ29tbWFuZFJlc3VsdC5oOgorICAgICAgICAqIFNlc3Npb24uY3BwOgor
ICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpjb21wdXRlRWxlbWVudExheW91dCk6IEhhbmRs
ZSBpc09wdGlvbkVsZW1lbnQgb3V0cHV0IHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkRyaXZlcjo6
U2Vzc2lvbjo6Z2V0RWxlbWVudFJlY3QpOiBJZ25vcmUgaXNPcHRpb25FbGVtZW50LgorICAgICAg
ICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpzZWxlY3RPcHRpb25FbGVtZW50KTogQXNrIGF1dG9tYXRp
b24gdG8gc2VsZWN0IHRoZSBnaXZlbiBvcHRpb24gZWxlbWVudC4KKyAgICAgICAgKFdlYkRyaXZl
cjo6U2Vzc2lvbjo6ZWxlbWVudENsaWNrKTogQ2FsbCBzZWxlY3RPcHRpb25FbGVtZW50KCkgb3Ig
cGVyZm9ybU1vdXNlSW50ZXJhY3Rpb24oKSBkZXBlbmRpbmcgb24KKyAgICAgICAgaXNPcHRpb25F
bGVtZW50IHJldHVybmVkIGJ5IGNvbXB1dGVFbGVtZW50TGF5b3V0LgorICAgICAgICAqIFNlc3Np
b24uaDoKKwogMjAxNy0wOC0wNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgV2ViIEF1dG9tYXRpb246IHNldFVzZXJJbnB1dEZvckN1cnJlbnRK
YXZhU2NyaXB0UHJvbXB0IHNob3VsZCBmYWlsIGlmIGN1cnJlbnQgZGlhbG9nIGlzIG5vdCBhIHBy
b21wdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcCBiL1Nv
dXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAKaW5kZXggYmU4YzgxNzZhNjYuLmE1M2Jh
Yzk3OTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAKQEAgLTEwNiw2ICsxMDYsOCBA
QCBDb21tYW5kUmVzdWx0OjpDb21tYW5kUmVzdWx0KFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4mJiBy
ZXN1bHQsIHN0ZDo6b3B0aW9uYWw8RXJybwogICAgICAgICAgICAgbV9lcnJvckNvZGUgPSBFcnJv
ckNvZGU6OlRpbWVvdXQ7CiAgICAgICAgIGVsc2UgaWYgKGVycm9yTmFtZSA9PSAiTm9KYXZhU2Ny
aXB0RGlhbG9nIikKICAgICAgICAgICAgIG1fZXJyb3JDb2RlID0gRXJyb3JDb2RlOjpOb1N1Y2hB
bGVydDsKKyAgICAgICAgZWxzZSBpZiAoZXJyb3JOYW1lID09ICJFbGVtZW50Tm90U2VsZWN0YWJs
ZSIpCisgICAgICAgICAgICBtX2Vycm9yQ29kZSA9IEVycm9yQ29kZTo6RWxlbWVudE5vdFNlbGVj
dGFibGU7CiAKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTI3LDYgKzEyOSw3IEBAIHVuc2ln
bmVkIENvbW1hbmRSZXN1bHQ6Omh0dHBTdGF0dXNDb2RlKCkgY29uc3QKICAgICAvLyBodHRwczov
L3d3dy53My5vcmcvVFIvd2ViZHJpdmVyLyNoYW5kbGluZy1lcnJvcnMKICAgICBzd2l0Y2ggKG1f
ZXJyb3JDb2RlLnZhbHVlKCkpIHsKICAgICBjYXNlIEVycm9yQ29kZTo6RWxlbWVudENsaWNrSW50
ZXJjZXB0ZWQ6CisgICAgY2FzZSBFcnJvckNvZGU6OkVsZW1lbnROb3RTZWxlY3RhYmxlOgogICAg
IGNhc2UgRXJyb3JDb2RlOjpFbGVtZW50Tm90SW50ZXJhY3RhYmxlOgogICAgIGNhc2UgRXJyb3JD
b2RlOjpJbnZhbGlkQXJndW1lbnQ6CiAgICAgY2FzZSBFcnJvckNvZGU6OkludmFsaWRFbGVtZW50
U3RhdGU6CkBAIC0xNjIsNiArMTY1LDggQEAgU3RyaW5nIENvbW1hbmRSZXN1bHQ6OmVycm9yU3Ry
aW5nKCkgY29uc3QKICAgICBzd2l0Y2ggKG1fZXJyb3JDb2RlLnZhbHVlKCkpIHsKICAgICBjYXNl
IEVycm9yQ29kZTo6RWxlbWVudENsaWNrSW50ZXJjZXB0ZWQ6CiAgICAgICAgIHJldHVybiBBU0NJ
SUxpdGVyYWwoImVsZW1lbnQgY2xpY2sgaW50ZXJjZXB0ZWQiKTsKKyAgICBjYXNlIEVycm9yQ29k
ZTo6RWxlbWVudE5vdFNlbGVjdGFibGU6CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImVs
ZW1lbnQgbm90IHNlbGVjdGFibGUiKTsKICAgICBjYXNlIEVycm9yQ29kZTo6RWxlbWVudE5vdElu
dGVyYWN0YWJsZToKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiZWxlbWVudCBub3QgaW50
ZXJhY3RhYmxlIik7CiAgICAgY2FzZSBFcnJvckNvZGU6OkludmFsaWRBcmd1bWVudDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5oIGIvU291cmNlL1dlYkRyaXZl
ci9Db21tYW5kUmVzdWx0LmgKaW5kZXggOGMzZmI4OTdiYjIuLjdmNzg5ZTVhMzlkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViRHJp
dmVyL0NvbW1hbmRSZXN1bHQuaApAQCAtNDEsNiArNDEsNyBAQCBwdWJsaWM6CiAgICAgLy8gaHR0
cHM6Ly93d3cudzMub3JnL1RSL3dlYmRyaXZlci8jaGFuZGxpbmctZXJyb3JzCiAgICAgZW51bSBj
bGFzcyBFcnJvckNvZGUgewogICAgICAgICBFbGVtZW50Q2xpY2tJbnRlcmNlcHRlZCwKKyAgICAg
ICAgRWxlbWVudE5vdFNlbGVjdGFibGUsCiAgICAgICAgIEVsZW1lbnROb3RJbnRlcmFjdGFibGUs
CiAgICAgICAgIEludmFsaWRBcmd1bWVudCwKICAgICAgICAgSW52YWxpZEVsZW1lbnRTdGF0ZSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViRHJp
dmVyL1Nlc3Npb24uY3BwCmluZGV4IDdlZDU2OTYxOTE3Li45NmEzMGJmMzYwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nl
c3Npb24uY3BwCkBAIC03MzEsNyArNzMxLDcgQEAgU3RyaW5nIFNlc3Npb246OmV4dHJhY3RFbGVt
ZW50SUQoSW5zcGVjdG9yVmFsdWUmIHZhbHVlKQogICAgIHJldHVybiBlbGVtZW50SUQ7CiB9CiAK
LXZvaWQgU2Vzc2lvbjo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQoY29uc3QgU3RyaW5nJiBlbGVtZW50
SUQsIE9wdGlvblNldDxFbGVtZW50TGF5b3V0T3B0aW9uPiBvcHRpb25zLCBGdW5jdGlvbjx2b2lk
IChzdGQ6Om9wdGlvbmFsPFJlY3Q+JiYsIHN0ZDo6b3B0aW9uYWw8UG9pbnQ+JiYsIGJvb2wsIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBTZXNz
aW9uOjpjb21wdXRlRWxlbWVudExheW91dChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgT3B0aW9u
U2V0PEVsZW1lbnRMYXlvdXRPcHRpb24+IG9wdGlvbnMsIEZ1bmN0aW9uPHZvaWQgKHN0ZDo6b3B0
aW9uYWw8UmVjdD4mJiwgc3RkOjpvcHRpb25hbDxQb2ludD4mJiwgYm9vbCwgYm9vbCwgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJU
KG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7CiAKQEAgLTc0MywxMiArNzQzLDEy
IEBAIHZvaWQgU2Vzc2lvbjo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQoY29uc3QgU3RyaW5nJiBlbGVt
ZW50SUQsIE9wdGlvblNldDxFbGVtZW50TGF5CiAgICAgcGFyYW1ldGVycy0+c2V0Qm9vbGVhbihB
U0NJSUxpdGVyYWwoInVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMiKSwgb3B0aW9ucy5jb250YWlucyhF
bGVtZW50TGF5b3V0T3B0aW9uOjpVc2VWaWV3cG9ydENvb3JkaW5hdGVzKSk7CiAgICAgbV9ob3N0
LT5zZW5kQ29tbWFuZFRvQmFja2VuZChBU0NJSUxpdGVyYWwoImNvbXB1dGVFbGVtZW50TGF5b3V0
IiksIFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNl
c3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CiAgICAgICAg
IGlmIChyZXNwb25zZS5pc0Vycm9yIHx8ICFyZXNwb25zZS5yZXNwb25zZU9iamVjdCkgewotICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIGZh
bHNlLCBXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSk7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgZmFsc2UsIGZhbHNlLCBX
VEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVjdE9iamVjdDsKICAg
ICAgICAgaWYgKCFyZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0T2JqZWN0KEFTQ0lJTGl0ZXJh
bCgicmVjdCIpLCByZWN0T2JqZWN0KSkgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
c3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIGZhbHNlLCBudWxscHRyKTsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBmYWxzZSwgZmFs
c2UsIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHN0
ZDo6b3B0aW9uYWw8aW50PiBlbGVtZW50WDsKQEAgLTc2Miw3ICs3NjIsNyBAQCB2b2lkIFNlc3Np
b246OmNvbXB1dGVFbGVtZW50TGF5b3V0KGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBPcHRpb25T
ZXQ8RWxlbWVudExheQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmICghZWxl
bWVudFggfHwgIWVsZW1lbnRZKSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgZmFsc2UsIG51bGxwdHIpOworICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIGZhbHNlLCBmYWxzZSwg
bnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgc3RkOjpv
cHRpb25hbDxpbnQ+IGVsZW1lbnRXaWR0aDsKQEAgLTc3NiwyOSArNzc2LDM0IEBAIHZvaWQgU2Vz
c2lvbjo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIE9wdGlv
blNldDxFbGVtZW50TGF5CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFl
bGVtZW50V2lkdGggfHwgIWVsZW1lbnRIZWlnaHQpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBmYWxzZSwgbnVsbHB0cik7CisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgZmFs
c2UsIGZhbHNlLCBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
ICAgICBSZWN0IHJlY3QgPSB7IHsgZWxlbWVudFgudmFsdWUoKSwgZWxlbWVudFkudmFsdWUoKSB9
LCB7IGVsZW1lbnRXaWR0aC52YWx1ZSgpLCBlbGVtZW50SGVpZ2h0LnZhbHVlKCkgfSB9OwogCiAg
ICAgICAgIGJvb2wgaXNPYnNjdXJlZDsKICAgICAgICAgaWYgKCFyZXNwb25zZS5yZXNwb25zZU9i
amVjdC0+Z2V0Qm9vbGVhbihBU0NJSUxpdGVyYWwoImlzT2JzY3VyZWQiKSwgaXNPYnNjdXJlZCkp
IHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0LCBmYWxzZSwgbnVsbHB0cik7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgZmFsc2UsIGZhbHNlLCBudWxscHRyKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBib29sIGlzT3B0aW9uRWxlbWVudDsKKyAg
ICAgICAgaWYgKCFyZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0Qm9vbGVhbihBU0NJSUxpdGVy
YWwoImlzT3B0aW9uRWxlbWVudCIpLCBpc09wdGlvbkVsZW1lbnQpKSB7CisgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgZmFsc2UsIGZhbHNl
LCBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBpblZpZXdDZW50ZXJQb2ludE9iamVjdDsKICAgICAgICAgaWYg
KCFyZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgiaW5WaWV3
Q2VudGVyUG9pbnQiKSwgaW5WaWV3Q2VudGVyUG9pbnRPYmplY3QpKSB7Ci0gICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZWN0LCBzdGQ6Om51bGxvcHQsIGlzT2JzY3VyZWQsIG51bGxwdHIp
OworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVjdCwgc3RkOjpudWxsb3B0LCBpc09i
c2N1cmVkLCBpc09wdGlvbkVsZW1lbnQsIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIGludCBpblZpZXdDZW50ZXJQb2ludFgsIGluVmlld0NlbnRlclBv
aW50WTsKICAgICAgICAgaWYgKCFpblZpZXdDZW50ZXJQb2ludE9iamVjdC0+Z2V0SW50ZWdlcihB
U0NJSUxpdGVyYWwoIngiKSwgaW5WaWV3Q2VudGVyUG9pbnRYKQogICAgICAgICAgICAgfHwgIWlu
Vmlld0NlbnRlclBvaW50T2JqZWN0LT5nZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgieSIpLCBpblZp
ZXdDZW50ZXJQb2ludFkpKSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51
bGxvcHQsIHN0ZDo6bnVsbG9wdCwgaXNPYnNjdXJlZCwgbnVsbHB0cik7CisgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgaXNPYnNjdXJlZCwg
aXNPcHRpb25FbGVtZW50LCBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgICAgICBQb2ludCBpblZpZXdDZW50ZXJQb2ludCA9IHsgaW5WaWV3Q2VudGVyUG9pbnRY
LCBpblZpZXdDZW50ZXJQb2ludFkgfTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVjdCwg
aW5WaWV3Q2VudGVyUG9pbnQsIGlzT2JzY3VyZWQsIG51bGxwdHIpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihyZWN0LCBpblZpZXdDZW50ZXJQb2ludCwgaXNPYnNjdXJlZCwgaXNPcHRpb25F
bGVtZW50LCBudWxscHRyKTsKICAgICB9KTsKIH0KIApAQCAtMTAyMiw3ICsxMDI3LDcgQEAgdm9p
ZCBTZXNzaW9uOjpnZXRFbGVtZW50UmVjdChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rp
b248dm9pZCAoQ29tbWFuZFJlc3UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUocmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgY29t
cHV0ZUVsZW1lbnRMYXlvdXQoZWxlbWVudElELCB7IH0sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKHN0ZDo6b3B0aW9uYWw8UmVjdD4mJiByZWN0LCBzdGQ6Om9wdGlvbmFsPFBvaW50PiYm
LCBib29sLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIGVycm9yKSB7CisgICAgICAgIGNvbXB1
dGVFbGVtZW50TGF5b3V0KGVsZW1lbnRJRCwgeyB9LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShzdGQ6Om9wdGlvbmFsPFJlY3Q+JiYgcmVjdCwgc3RkOjpvcHRpb25hbDxQb2ludD4mJiwg
Ym9vbCwgYm9vbCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBlcnJvcikgewogICAgICAgICAg
ICAgaWYgKCFyZWN0IHx8IGVycm9yKSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKGVycm9yKSkpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKQEAgLTExOTEsNiArMTE5NiwyMSBAQCB2b2lkIFNlc3Npb246OndhaXRGb3JOYXZp
Z2F0aW9uVG9Db21wbGV0ZShGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbQog
ICAgIH0pOwogfQogCit2b2lkIFNlc3Npb246OnNlbGVjdE9wdGlvbkVsZW1lbnQoY29uc3QgU3Ry
aW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcGFyYW1ldGVycyA9
IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKEFT
Q0lJTGl0ZXJhbCgiYnJvd3NpbmdDb250ZXh0SGFuZGxlIiksIG1fdG9wbGV2ZWxCcm93c2luZ0Nv
bnRleHQudmFsdWUoKSk7CisgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgi
ZnJhbWVIYW5kbGUiKSwgbV9jdXJyZW50QnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOworICAgIHBh
cmFtZXRlcnMtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm5vZGVIYW5kbGUiKSwgZWxlbWVudElE
KTsKKyAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKEFTQ0lJTGl0ZXJhbCgic2VsZWN0
T3B0aW9uRWxlbWVudCIpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKKyAg
ICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3IpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihDb21tYW5kUmVzdWx0OjpzdWNjZXNzKCkpOworICAgIH0pOworfQorCiB2b2lkIFNlc3Np
b246OmVsZW1lbnRDbGljayhjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAo
Q29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fdG9w
bGV2ZWxCcm93c2luZ0NvbnRleHQpIHsKQEAgLTEyMDAsNyArMTIyMCw3IEBAIHZvaWQgU2Vzc2lv
bjo6ZWxlbWVudENsaWNrKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChD
b21tYW5kUmVzdWx0CiAKICAgICBPcHRpb25TZXQ8RWxlbWVudExheW91dE9wdGlvbj4gb3B0aW9u
cyA9IEVsZW1lbnRMYXlvdXRPcHRpb246OlNjcm9sbEludG9WaWV3SWZOZWVkZWQ7CiAgICAgb3B0
aW9ucyB8PSBFbGVtZW50TGF5b3V0T3B0aW9uOjpVc2VWaWV3cG9ydENvb3JkaW5hdGVzOwotICAg
IGNvbXB1dGVFbGVtZW50TGF5b3V0KGVsZW1lbnRJRCwgb3B0aW9ucywgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxSZWN0PiYmIHJlY3QsIHN0ZDo6b3B0aW9uYWw8
UG9pbnQ+JiYgaW5WaWV3Q2VudGVyLCBib29sIGlzT2JzY3VyZWQsIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+JiYgZXJyb3IpIG11dGFibGUgeworICAgIGNvbXB1dGVFbGVtZW50TGF5b3V0KGVsZW1l
bnRJRCwgb3B0aW9ucywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZWxl
bWVudElELCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShz
dGQ6Om9wdGlvbmFsPFJlY3Q+JiYgcmVjdCwgc3RkOjpvcHRpb25hbDxQb2ludD4mJiBpblZpZXdD
ZW50ZXIsIGJvb2wgaXNPYnNjdXJlZCwgYm9vbCBpc09wdGlvbkVsZW1lbnQsIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+JiYgZXJyb3IpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlY3QgfHwgZXJy
b3IpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwo
V1RGTW92ZShlcnJvcikpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEyMTQsNyArMTIzNCwx
MCBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRDbGljayhjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwg
RnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgcGVyZm9ybU1vdXNlSW50ZXJhY3Rpb24oaW5WaWV3Q2VudGVyLnZhbHVl
KCkueCwgaW5WaWV3Q2VudGVyLnZhbHVlKCkueSwgTW91c2VCdXR0b246OkxlZnQsIE1vdXNlSW50
ZXJhY3Rpb246OlNpbmdsZUNsaWNrLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAg
ICAgIGlmIChpc09wdGlvbkVsZW1lbnQpCisgICAgICAgICAgICBzZWxlY3RPcHRpb25FbGVtZW50
KGVsZW1lbnRJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBwZXJmb3JtTW91c2VJbnRlcmFjdGlvbihpblZpZXdDZW50ZXIudmFsdWUoKS54
LCBpblZpZXdDZW50ZXIudmFsdWUoKS55LCBNb3VzZUJ1dHRvbjo6TGVmdCwgTW91c2VJbnRlcmFj
dGlvbjo6U2luZ2xlQ2xpY2ssIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAogICAgICAg
ICB3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmggYi9Tb3Vy
Y2UvV2ViRHJpdmVyL1Nlc3Npb24uaAppbmRleCA3NWI0YWIzMDliOS4uOTYwNjcwNzcyNGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJEcml2
ZXIvU2Vzc2lvbi5oCkBAIC0xMzUsNyArMTM1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgU2Nyb2xs
SW50b1ZpZXdJZk5lZWRlZCA9IDEgPDwgMCwKICAgICAgICAgVXNlVmlld3BvcnRDb29yZGluYXRl
cyA9IDEgPDwgMSwKICAgICB9OwotICAgIHZvaWQgY29tcHV0ZUVsZW1lbnRMYXlvdXQoY29uc3Qg
U3RyaW5nJiBlbGVtZW50SUQsIE9wdGlvblNldDxFbGVtZW50TGF5b3V0T3B0aW9uPiwgRnVuY3Rp
b248dm9pZCAoc3RkOjpvcHRpb25hbDxSZWN0PiYmLCBzdGQ6Om9wdGlvbmFsPFBvaW50PiYmLCBi
b29sLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYpPiYmKTsKKyAgICB2b2lk
IGNvbXB1dGVFbGVtZW50TGF5b3V0KGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBPcHRpb25TZXQ8
RWxlbWVudExheW91dE9wdGlvbj4sIEZ1bmN0aW9uPHZvaWQgKHN0ZDo6b3B0aW9uYWw8UmVjdD4m
Jiwgc3RkOjpvcHRpb25hbDxQb2ludD4mJiwgYm9vbCwgYm9vbCwgUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0PiYmKT4mJik7CisKKyAgICB2b2lkIHNlbGVjdE9wdGlvbkVsZW1lbnQo
Y29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+
JiYpOwogCiAgICAgZW51bSBjbGFzcyBNb3VzZUJ1dHRvbiB7IE5vbmUsIExlZnQsIE1pZGRsZSwg
UmlnaHQgfTsKICAgICBlbnVtIGNsYXNzIE1vdXNlSW50ZXJhY3Rpb24geyBNb3ZlLCBEb3duLCBV
cCwgU2luZ2xlQ2xpY2ssIERvdWJsZUNsaWNrIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGZhNmNjODkxZTk0Li5h
YTFjY2RlNmE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxNy0wOC0wOCAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgV2ViRHJpdmVy
OiBoYW5kbGUgY2xpY2sgZXZlbnRzIG9uIG9wdGlvbiBlbGVtZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NzEwCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8zMzQ1OTMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgc2VsZWN0T3B0aW9uRWxlbWVudCBtZXRob2QgdG8gYXV0b21hdGlvbiB0
byBzZWxlY3QgYW4gb3B0aW9uIGVsZW1lbnQgYWNjb3JkaW5nIHRvIHRoZSBXZWJEcml2ZXIKKyAg
ICAgICAgc3BlY2lmaWNhdGlvbi4KKworICAgICAgICAxNC4xIEVsZW1lbnQgQ2xpY2suCisgICAg
ICAgIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJkcml2ZXIvd2ViZHJpdmVyLXNwZWMuaHRtbCNl
bGVtZW50LWNsaWNrCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9u
Lmpzb246IEFkZCBzZWxlY3RPcHRpb25FbGVtZW50IG1ldGhvZCBhbmQgRWxlbWVudE5vdFNlbGVj
dGFibGUgZXJyb3IuCisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlk
Q29tcHV0ZUVsZW1lbnRMYXlvdXQpOiBIYW5kbGUgaXNPcHRpb25FbGVtZW50IHJldHVybiB2YWx1
ZS4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnNlbGVjdE9wdGlvbkVs
ZW1lbnQpOiBTZW5kIFNlbGVjdE9wdGlvbkVsZW1lbnQgbWVzc2FnZSB0byB0aGUgd2ViIHByb2Nl
c3MuCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRTZWxlY3RPcHRp
b25FbGVtZW50KTogTm90aWZ5IHRoZSBkcml2ZXIuCisgICAgICAgICogVUlQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbjogQWRkIERpZFNlbGVjdE9wdGlv
bkVsZW1lbnQgbWVzc2FnZSBhbmQgdXBkYXRlCisgICAgICAgIERpZENvbXB1dGVFbGVtZW50TGF5
b3V0IHRoYXQgbm93IHJldHVybnMgaXNPcHRpb25FbGVtZW50LgorICAgICAgICAqIFdlYlByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6ZWxlbWVudENvbnRhaW5lcik6IEhlbHBlciB0byBnZXQgdGhlIGNvbnRhaW5lciBvZiBh
biBlbGVtZW50IGFjY29yZGluZyB0byB0aGUgc3BlYy4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eTo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQpOiBVc2UgdGhlIGNvbnRh
aW5lciBlbGVtZW50IHRvIHNjcm9sbCB0aGUgdmlldyBhbmQKKyAgICAgICAgY29tcHV0ZSB0aGUg
aW4tdmlldyBjZW50ZXIgcG9pbnQuCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHk6OnNlbGVjdE9wdGlvbkVsZW1lbnQpOiBVc2UgSFRNTFNlbGVjdEVsZW1lbnQ6Om9w
dGlvblNlbGVjdGVkQnlVc2VyKCkuCisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbjogQWRkIFNlbGVjdE9wdGlv
bkVsZW1lbnQgbWVzc2FnZS4KKwogMjAxNy0wOC0wNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgV2ViIEF1dG9tYXRpb246IHNldFVzZXJJbnB1
dEZvckN1cnJlbnRKYXZhU2NyaXB0UHJvbXB0IHNob3VsZCBmYWlsIGlmIGN1cnJlbnQgZGlhbG9n
IGlzIG5vdCBhIHByb21wdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9BdXRvbWF0aW9uLmpzb24gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL0F1dG9tYXRpb24uanNvbgppbmRleCAyMTM2NmMyNGUxZS4uMGRjNWEyOWQxMzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29u
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29u
CkBAIC01OSw3ICs1OSw4IEBACiAgICAgICAgICAgICAgICAgIk1pc3NpbmdQYXJhbWV0ZXIiLAog
ICAgICAgICAgICAgICAgICJJbnZhbGlkUGFyYW1ldGVyIiwKICAgICAgICAgICAgICAgICAiSW52
YWxpZFNlbGVjdG9yIiwKLSAgICAgICAgICAgICAgICAiRWxlbWVudE5vdEludGVyYWN0YWJsZSIK
KyAgICAgICAgICAgICAgICAiRWxlbWVudE5vdEludGVyYWN0YWJsZSIsCisgICAgICAgICAgICAg
ICAgIkVsZW1lbnROb3RTZWxlY3RhYmxlIgogICAgICAgICAgICAgXQogICAgICAgICB9LAogICAg
ICAgICB7CkBAIC00MjUsNyArNDI2LDE4IEBACiAgICAgICAgICAgICAicmV0dXJucyI6IFsKICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInJlY3QiLCAiJHJlZiI6ICJSZWN0IiwgImRlc2NyaXB0
aW9uIjogIlRoZSBsYXlvdXQgcmVjdCBmb3IgdGhlIHJlcXVlc3RlZCBlbGVtZW50LiBTcGVjaWZp
ZWQgaW4gcGFnZSBvciB2aWV3cG9ydCBjb29yZGluYXRlcyBiYXNlZCBvbiB0aGUgdXNlVmlld3Bv
cnRDb29yZGluYXRlcyBwYXJhbWV0ZXIuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
aW5WaWV3Q2VudGVyUG9pbnQiLCAib3B0aW9uYWwiOiB0cnVlLCAiJHJlZiI6ICJQb2ludCIsICJk
ZXNjcmlwdGlvbiI6ICJUaGUgaW4tdmlldyBjZW50ZXIgcG9pbnQgZm9yIHRoZSByZXF1ZXN0ZWQg
ZWxlbWVudC4gU3BlY2lmaWVkIGluIHBhZ2Ugb3Igdmlld3BvcnQgY29vcmRpbmF0ZXMgYmFzZWQg
b24gdGhlIHVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMgcGFyYW1ldGVyLiIgfSwKLSAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImlzT2JzY3VyZWQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0
aW9uIjogIklmIHRoZSBpbi12aWV3IGNlbnRlciBwb2ludCBvZiB0aGUgcmVxdWVzdGVkIGVsZW1l
bnQgaXMgb2JzY3VyZWQgYnkgYW5vdGhlciBlbGVtZW50LiIgfQorICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAiaXNPYnNjdXJlZCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAi
SWYgdGhlIGluLXZpZXcgY2VudGVyIHBvaW50IG9mIHRoZSByZXF1ZXN0ZWQgZWxlbWVudCBpcyBv
YnNjdXJlZCBieSBhbm90aGVyIGVsZW1lbnQuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiaXNPcHRpb25FbGVtZW50IiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJJ
ZiB0aGUgZWxlbWVudCBpcyBhbiBIVE1MIG9wdGlvbiBlbGVtZW50IiB9CisgICAgICAgICAgICBd
LAorICAgICAgICAgICAgImFzeW5jIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICB7CisgICAg
ICAgICAgICAibmFtZSI6ICJzZWxlY3RPcHRpb25FbGVtZW50IiwKKyAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJTZWxlY3RzIHRoZSBnaXZlbiBvcHRpb24gZWxlbWVudC4gSW4gY2FzZSBvZiBj
b250YWluZXIgd2l0aCBtdWx0aXBsZSBvcHRpb25zIGVuYWJsZWQsIHRoZSBlbGVtZW50IHNlbGVj
dGVkbmVzcyBpcyB0b2dnbGVkLiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogImJyb3dzaW5nQ29udGV4dEhhbmRsZSIsICIkcmVmIjogIkJy
b3dzaW5nQ29udGV4dEhhbmRsZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgaGFuZGxlIGZvciB0aGUg
YnJvd3NpbmcgY29udGV4dC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmcmFtZUhh
bmRsZSIsICIkcmVmIjogIkZyYW1lSGFuZGxlIiwgImRlc2NyaXB0aW9uIjogIlRoZSBoYW5kbGUg
Zm9yIHRoZSBmcmFtZSB0aGF0IGNvbnRhaW5zIHRoZSBlbGVtZW50LiIgfSwKKyAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogIm5vZGVIYW5kbGUiLCAiJHJlZiI6ICJOb2RlSGFuZGxlIiwgImRlc2Ny
aXB0aW9uIjogIlRoZSBoYW5kbGUgb2YgdGhlIGVsZW1lbnQgdG8gdXNlLiIgfQogICAgICAgICAg
ICAgXSwKICAgICAgICAgICAgICJhc3luYyI6IHRydWUKICAgICAgICAgfSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24u
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvbi5jcHAKaW5kZXggYzhhZDVhMWY0NGIuLmM1Y2IzMmUwOGI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uLmNwcApAQCAtODA2LDcgKzgwNiw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmNv
bXB1dGVFbGVtZW50TGF5b3V0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yU3RyCiAgICAg
cGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6
OkNvbXB1dGVFbGVtZW50TGF5b3V0KHBhZ2UtPnBhZ2VJRCgpLCBmcmFtZUlELnZhbHVlKCksIG5v
ZGVIYW5kbGUsIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIHVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMs
IGNhbGxiYWNrSUQpLCAwKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlkQ29t
cHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6SW50UmVjdCBy
ZWN0LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBpblZpZXdDZW50ZXJQb2ludCwg
Ym9vbCBpc09ic2N1cmVkLCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSkKK3ZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb246OmRpZENvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IGNhbGxiYWNrSUQs
IFdlYkNvcmU6OkludFJlY3QgcmVjdCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4g
aW5WaWV3Q2VudGVyUG9pbnQsIGJvb2wgaXNPYnNjdXJlZCwgYm9vbCBpc09wdGlvbkVsZW1lbnQs
IGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NvbXB1
dGVFbGVtZW50TGF5b3V0Q2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxs
YmFjaykKQEAgLTgzMyw3ICs4MzMsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRD
b21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBjYWxsYmFja0lELCBXZWJDb3JlOgogICAgICAg
ICAucmVsZWFzZSgpOwogCiAgICAgaWYgKCFpblZpZXdDZW50ZXJQb2ludCkgewotICAgICAgICBj
YWxsYmFjay0+c2VuZFN1Y2Nlc3MoV1RGTW92ZShyZWN0T2JqZWN0KSwgbnVsbHB0ciwgaXNPYnNj
dXJlZCk7CisgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcyhXVEZNb3ZlKHJlY3RPYmplY3Qp
LCBudWxscHRyLCBpc09ic2N1cmVkLCBpc09wdGlvbkVsZW1lbnQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC04NDIsOSArODQyLDQwIEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246
OmRpZENvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYkNvcmU6CiAg
ICAgICAgIC5zZXRZKGluVmlld0NlbnRlclBvaW50LnZhbHVlKCkueSgpKQogICAgICAgICAucmVs
ZWFzZSgpOwogCi0gICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKFdURk1vdmUocmVjdE9iamVjdCks
IFdURk1vdmUoaW5WaWV3Q2VudGVyUG9pbnRPYmplY3QpLCBpc09ic2N1cmVkKTsKKyAgICBjYWxs
YmFjay0+c2VuZFN1Y2Nlc3MoV1RGTW92ZShyZWN0T2JqZWN0KSwgV1RGTW92ZShpblZpZXdDZW50
ZXJQb2ludE9iamVjdCksIGlzT2JzY3VyZWQsIGlzT3B0aW9uRWxlbWVudCk7CiB9CiAKK3ZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb246OnNlbGVjdE9wdGlvbkVsZW1lbnQoSW5zcGVjdG9yOjpFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxl
LCBjb25zdCBTdHJpbmcmIGZyYW1lSGFuZGxlLCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIFJl
ZjxTZWxlY3RPcHRpb25FbGVtZW50Q2FsbGJhY2s+JiYgY2FsbGJhY2spCit7CisgICAgV2ViUGFn
ZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGJyb3dzaW5nQ29udGV4dEhhbmRs
ZSk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihX
aW5kb3dOb3RGb3VuZCk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEID0g
d2ViRnJhbWVJREZvckhhbmRsZShmcmFtZUhhbmRsZSk7CisgICAgaWYgKCFmcmFtZUlEKQorICAg
ICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihGcmFtZU5vdEZvdW5kKTsKKworICAgIHVp
bnQ2NF90IGNhbGxiYWNrSUQgPSBtX25leHRTZWxlY3RPcHRpb25FbGVtZW50Q2FsbGJhY2tJRCsr
OworICAgIG1fc2VsZWN0T3B0aW9uRWxlbWVudENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RG
TW92ZShjYWxsYmFjaykpOworCisgICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OlNlbGVjdE9wdGlvbkVsZW1lbnQocGFnZS0+cGFnZUlE
KCksIGZyYW1lSUQudmFsdWUoKSwgbm9kZUhhbmRsZSwgY2FsbGJhY2tJRCksIDApOworfQorCit2
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRTZWxlY3RPcHRpb25FbGVtZW50KHVpbnQ2NF90
IGNhbGxiYWNrSUQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKQoreworICAgIGF1dG8gY2FsbGJh
Y2sgPSBtX3NlbGVjdE9wdGlvbkVsZW1lbnRDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKTsKKyAg
ICBpZiAoIWNhbGxiYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWVycm9yVHlwZS5p
c0VtcHR5KCkpIHsKKyAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKFNUUklOR19GT1JfUFJF
REVGSU5FRF9FUlJPUl9NRVNTQUdFKGVycm9yVHlwZSkpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKCk7Cit9CisKKwogdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6aXNTaG93aW5nSmF2YVNjcmlwdERpYWxvZyhJbnNwZWN0b3I6OkVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGJv
b2wqIHJlc3VsdCkKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCmlu
ZGV4IDk1Mjc1YzY5NDE4Li5hNzIxMDM4NDYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaApAQCAtMTMz
LDYgKzEzMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lSGFuZGxlKElu
c3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRs
ZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbEZyYW1lSGFuZGxlLCBjb25zdCBpbnQqIG9wdGlvbmFs
T3JkaW5hbCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbE5hbWUsIGNvbnN0IFN0cmluZyogb3B0aW9u
YWxOb2RlSGFuZGxlLCBSZWY8UmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGVDYWxsYmFjaz4mJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCByZXNvbHZlUGFyZW50RnJhbWVIYW5kbGUoSW5zcGVjdG9yOjpFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJp
bmcmIGZyYW1lSGFuZGxlLCBSZWY8UmVzb2x2ZVBhcmVudEZyYW1lSGFuZGxlQ2FsbGJhY2s+JiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgY29tcHV0ZUVsZW1lbnRMYXlvdXQoSW5zcGVjdG9yOjpFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJp
bmcmIGZyYW1lSGFuZGxlLCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIGNvbnN0IGJvb2wqIG9w
dGlvbmFsU2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgY29uc3QgYm9vbCogdXNlVmlld3BvcnRDb29y
ZGluYXRlcywgUmVmPEluc3BlY3Rvcjo6QXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVySGFuZGxl
cjo6Q29tcHV0ZUVsZW1lbnRMYXlvdXRDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZWxlY3RPcHRpb25FbGVtZW50KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nJiBmcmFtZUhhbmRsZSwgY29uc3Qg
U3RyaW5nJiBub2RlSGFuZGxlLCBSZWY8SW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyOjpTZWxlY3RPcHRpb25FbGVtZW50Q2FsbGJhY2s+JiYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgaXNTaG93aW5nSmF2YVNjcmlwdERpYWxvZyhJbnNwZWN0b3I6OkVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGJvb2wqIHJlc3VsdCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaXNtaXNzQ3VycmVudEphdmFTY3JpcHREaWFsb2coSW5zcGVjdG9y
OjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlKSBvdmVy
cmlkZTsKICAgICB2b2lkIGFjY2VwdEN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nKEluc3BlY3Rvcjo6
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSkgb3ZlcnJp
ZGU7CkBAIC0xNzUsNyArMTc2LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEV2YWx1YXRlSmF2
YVNjcmlwdEZ1bmN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0
LCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSk7CiAgICAgdm9pZCBkaWRSZXNvbHZlQ2hpbGRGcmFt
ZSh1aW50NjRfdCBjYWxsYmFja0lELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIGVy
cm9yVHlwZSk7CiAgICAgdm9pZCBkaWRSZXNvbHZlUGFyZW50RnJhbWUodWludDY0X3QgY2FsbGJh
Y2tJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpOwotICAgIHZv
aWQgZGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6
SW50UmVjdCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wgaXNPYnNjdXJl
ZCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpOworICAgIHZvaWQgZGlkQ29tcHV0ZUVsZW1lbnRM
YXlvdXQodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6SW50UmVjdCwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wgaXNPYnNjdXJlZCwgYm9vbCBpc09wdGlvbkVsZW1l
bnQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKTsKKyAgICB2b2lkIGRpZFNlbGVjdE9wdGlvbkVs
ZW1lbnQodWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpOwogICAg
IHZvaWQgZGlkVGFrZVNjcmVlbnNob3QodWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgU2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUmLCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSk7CiAgICAgdm9pZCBk
aWRHZXRDb29raWVzRm9yRnJhbWUodWludDY0X3QgY2FsbGJhY2tJRCwgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4sIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKTsKICAgICB2b2lkIGRpZERlbGV0ZUNv
b2tpZSh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSk7CkBAIC0y
NDEsNiArMjQzLDkgQEAgcHJpdmF0ZToKICAgICB1aW50NjRfdCBtX25leHREZWxldGVDb29raWVD
YWxsYmFja0lEIHsgMSB9OwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6
OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkRlbGV0ZVNpbmdsZUNvb2tpZUNh
bGxiYWNrPj4gbV9kZWxldGVDb29raWVDYWxsYmFja3M7CiAKKyAgICB1aW50NjRfdCBtX25leHRT
ZWxlY3RPcHRpb25FbGVtZW50Q2FsbGJhY2tJRCB7IDEgfTsKKyAgICBIYXNoTWFwPHVpbnQ2NF90
LCBSZWZQdHI8SW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpT
ZWxlY3RPcHRpb25FbGVtZW50Q2FsbGJhY2s+PiBtX3NlbGVjdE9wdGlvbkVsZW1lbnRDYWxsYmFj
a3M7CisKICAgICBSdW5Mb29wOjpUaW1lcjxXZWJBdXRvbWF0aW9uU2Vzc2lvbj4gbV9sb2FkVGlt
ZXI7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9maWxlc1RvU2VsZWN0Rm9yRmlsZVVwbG9hZDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW4KaW5kZXggZjM4YWM5NTNmNjEuLmFm
Yzc1M2NiYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW4KQEAgLTI2
LDcgKzI2LDkgQEAgbWVzc2FnZXMgLT4gV2ViQXV0b21hdGlvblNlc3Npb24gewogICAgIERpZFJl
c29sdmVDaGlsZEZyYW1lKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0
cmluZyBlcnJvclR5cGUpCiAgICAgRGlkUmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90IGNhbGxi
YWNrSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBlcnJvclR5cGUpCiAKLSAgICBEaWRDb21w
dXRlRWxlbWVudExheW91dCh1aW50NjRfdCBjYWxsYmFja0lELCBXZWJDb3JlOjpJbnRSZWN0IHJl
Y3QsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGluVmlld0NlbnRlclBvaW50LCBi
b29sIGlzT2JzY3VyZWQsIFN0cmluZyBlcnJvclR5cGUpCisgICAgRGlkQ29tcHV0ZUVsZW1lbnRM
YXlvdXQodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6SW50UmVjdCByZWN0LCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBpblZpZXdDZW50ZXJQb2ludCwgYm9vbCBpc09ic2N1
cmVkLCBib29sIGlzT3B0aW9uRWxlbWVudCwgU3RyaW5nIGVycm9yVHlwZSkKKworICAgIERpZFNl
bGVjdE9wdGlvbkVsZW1lbnQodWludDY0X3QgY2FsbGJhY2tJRCwgU3RyaW5nIGVycm9yVHlwZSkK
IAogICAgIERpZFRha2VTY3JlZW5zaG90KHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYktpdDo6U2hh
cmVhYmxlQml0bWFwOjpIYW5kbGUgaW1hZ2VEYXRhSGFuZGxlLCBTdHJpbmcgZXJyb3JUeXBlKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCmluZGV4IDUyZDM0N2QzN2YwLi5hZTIy
MTk4MTAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKQEAgLTQ4LDYgKzQ4
LDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVHJlZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RnJhbWVWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MRnJhbWVFbGVtZW50QmFzZS5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvSFRNTE9wdEdyb3VwRWxlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvSFRNTE9wdGlvbkVsZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0hUTUxTZWxlY3RFbGVt
ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9KU0VsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L01haW5GcmFtZS5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+CkBAIC01MDMsMTIgKzUwNiwzOCBA
QCBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PiBlbGVtZW50SW5WaWV3
Q2xpZW50Q2VudGVyUG9pbnQoV2ViQ29yZQogICAgIHJldHVybiBjbGllbnRDZW50ZXJQb2ludDsK
IH0KIAorc3RhdGljIFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnRDb250YWluZXIoV2ViQ29yZTo6
RWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICAvLyDCpzEzLiBFbGVtZW50IFN0YXRlLgorICAgIC8v
IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJkcml2ZXIvd2ViZHJpdmVyLXNwZWMuaHRtbCNkZm4t
Y29udGFpbmVyLgorICAgIGlmIChpczxXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVu
dCkpIHsKKyAgICAgICAgYXV0byYgb3B0aW9uRWxlbWVudCA9IGRvd25jYXN0PFdlYkNvcmU6OkhU
TUxPcHRpb25FbGVtZW50PihlbGVtZW50KTsKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkK
KyAgICAgICAgaWYgKGF1dG8qIHBhcmVudEVsZW1lbnQgPSBvcHRpb25FbGVtZW50Lm93bmVyRGF0
YUxpc3RFbGVtZW50KCkpCisgICAgICAgICAgICByZXR1cm4gcGFyZW50RWxlbWVudDsKKyNlbmRp
ZgorICAgICAgICBpZiAoYXV0byogcGFyZW50RWxlbWVudCA9IG9wdGlvbkVsZW1lbnQub3duZXJT
ZWxlY3RFbGVtZW50KCkpCisgICAgICAgICAgICByZXR1cm4gcGFyZW50RWxlbWVudDsKKworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAoaXM8V2ViQ29yZTo6SFRNTE9w
dEdyb3VwRWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHBhcmVudEVsZW1l
bnQgPSBkb3duY2FzdDxXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50PihlbGVtZW50KS5vd25l
clNlbGVjdEVsZW1lbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBwYXJlbnRFbGVtZW50OworCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiAmZWxlbWVudDsKK30K
Kwogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRlRWxlbWVudExheW91dCh1
aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29s
IHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgdXNlVmlld3BvcnRDb29yZGluYXRlcywgdWlu
dDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewogICAgICAgICBTdHJp
bmcgd2luZG93Tm90Rm91bmRFcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpXaW5kb3dOb3RGb3VuZCk7Ci0gICAgICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRDb21wdXRlRWxlbWVudExheW91dChjYWxsYmFja0lE
LCB7IH0sIHN0ZDo6bnVsbG9wdCwgZmFsc2UsIHdpbmRvd05vdEZvdW5kRXJyb3JUeXBlKSwgMCk7
CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRDb21wdXRlRWxlbWVu
dExheW91dChjYWxsYmFja0lELCB7IH0sIHN0ZDo6bnVsbG9wdCwgZmFsc2UsIGZhbHNlLCB3aW5k
b3dOb3RGb3VuZEVycm9yVHlwZSksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01
MTcsMTkgKzU0NiwyNCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmNvbXB1dGVF
bGVtZW50TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZgogCiAgICAgV2ViRnJhbWUq
IGZyYW1lID0gZnJhbWVJRCA/IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1l
SUQpIDogcGFnZS0+bWFpbldlYkZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmNv
cmVGcmFtZSgpIHx8ICFmcmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKSkgewotICAgICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQoY2FsbGJh
Y2tJRCwgeyB9LCBzdGQ6Om51bGxvcHQsIGZhbHNlLCBmcmFtZU5vdEZvdW5kRXJyb3JUeXBlKSwg
MCk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRDb21wdXRlRWxl
bWVudExheW91dChjYWxsYmFja0lELCB7IH0sIHN0ZDo6bnVsbG9wdCwgZmFsc2UsIGZhbHNlLCBm
cmFtZU5vdEZvdW5kRXJyb3JUeXBlKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBXZWJDb3JlOjpFbGVtZW50KiBjb3JlRWxlbWVudCA9IGVsZW1lbnRGb3JOb2RlSGFuZGxlKCpm
cmFtZSwgbm9kZUhhbmRsZSk7CiAgICAgaWYgKCFjb3JlRWxlbWVudCkgewotICAgICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQoY2FsbGJh
Y2tJRCwgeyB9LCBzdGQ6Om51bGxvcHQsIGZhbHNlLCBub2RlTm90Rm91bmRFcnJvclR5cGUpLCAw
KTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZENvbXB1dGVFbGVt
ZW50TGF5b3V0KGNhbGxiYWNrSUQsIHsgfSwgc3RkOjpudWxsb3B0LCBmYWxzZSwgZmFsc2UsIG5v
ZGVOb3RGb3VuZEVycm9yVHlwZSksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKHNjcm9sbEludG9WaWV3SWZOZWVkZWQpIHsKKyAgICBib29sIGlzT3B0aW9uRWxlbWVudCA9
IGlzPFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50Pihjb3JlRWxlbWVudCkgfHwgaXM8V2ViQ29y
ZTo6SFRNTE9wdEdyb3VwRWxlbWVudD4oY29yZUVsZW1lbnQpOworCisgICAgYXV0byogY29udGFp
bmVyRWxlbWVudCA9IGVsZW1lbnRDb250YWluZXIoKmNvcmVFbGVtZW50KTsKKyAgICBpZiAoc2Ny
b2xsSW50b1ZpZXdJZk5lZWRlZCAmJiBjb250YWluZXJFbGVtZW50KSB7CisgICAgICAgIC8vIMKn
MTQuMSBFbGVtZW50IENsaWNrLiBTdGVwIDQuIFNjcm9sbCBpbnRvIHZpZXcgdGhlIGVsZW1lbnTi
gJlzIGNvbnRhaW5lci4KKyAgICAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmRyaXZl
ci93ZWJkcml2ZXItc3BlYy5odG1sI2VsZW1lbnQtY2xpY2sKKyAgICAgICAgY29udGFpbmVyRWxl
bWVudC0+c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChmYWxzZSk7CiAgICAgICAgIC8vIEZJWE1FOiBX
YWl0IGluIGFuIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIHdheSB1cCB0byB0aGUgc2Vzc2lvbiBp
bXBsaWNpdCB3YWl0IHRpbWVvdXQgZm9yIHRoZSBlbGVtZW50IHRvIGJlY29tZSBpbiB2aWV3Lgot
ICAgICAgICBjb3JlRWxlbWVudC0+c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChmYWxzZSk7CiAgICAg
fQogCiAgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0ID0gY29yZUVsZW1lbnQtPmNsaWVudFJlY3Qo
KTsKQEAgLTU0MiwxMyArNTc2LDYxIEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6
Y29tcHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmCiAKICAgICBi
b29sIGlzT2JzY3VyZWQgPSBmYWxzZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBv
aW50PiBpblZpZXdDZW50ZXI7Ci0gICAgaWYgKGF1dG8gY2xpZW50Q2VudGVyUG9pbnQgPSBlbGVt
ZW50SW5WaWV3Q2xpZW50Q2VudGVyUG9pbnQoKmNvcmVFbGVtZW50LCBpc09ic2N1cmVkKSkgewot
ICAgICAgICBpblZpZXdDZW50ZXIgPSBXZWJDb3JlOjpJbnRQb2ludChjb3JlRnJhbWVWaWV3LT5j
bGllbnRUb0RvY3VtZW50UG9pbnQoY2xpZW50Q2VudGVyUG9pbnQudmFsdWUoKSkpOwotICAgICAg
ICBpZiAodXNlVmlld3BvcnRDb29yZGluYXRlcykKLSAgICAgICAgICAgIGluVmlld0NlbnRlciA9
IGNvcmVGcmFtZVZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhpblZpZXdDZW50ZXIudmFsdWUoKSk7
CisgICAgaWYgKGNvbnRhaW5lckVsZW1lbnQpIHsKKyAgICAgICAgaWYgKGF1dG8gY2xpZW50Q2Vu
dGVyUG9pbnQgPSBlbGVtZW50SW5WaWV3Q2xpZW50Q2VudGVyUG9pbnQoKmNvbnRhaW5lckVsZW1l
bnQsIGlzT2JzY3VyZWQpKSB7CisgICAgICAgICAgICBpblZpZXdDZW50ZXIgPSBXZWJDb3JlOjpJ
bnRQb2ludChjb3JlRnJhbWVWaWV3LT5jbGllbnRUb0RvY3VtZW50UG9pbnQoY2xpZW50Q2VudGVy
UG9pbnQudmFsdWUoKSkpOworICAgICAgICAgICAgaWYgKHVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMp
CisgICAgICAgICAgICAgICAgaW5WaWV3Q2VudGVyID0gY29yZUZyYW1lVmlldy0+Y29udGVudHNU
b1Jvb3RWaWV3KGluVmlld0NlbnRlci52YWx1ZSgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRDb21wdXRlRWxlbWVudExheW91dChj
YWxsYmFja0lELCByZWN0LCBpblZpZXdDZW50ZXIsIGlzT2JzY3VyZWQsIGlzT3B0aW9uRWxlbWVu
dCwgU3RyaW5nKCkpLCAwKTsKK30KKwordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpz
ZWxlY3RPcHRpb25FbGVtZW50KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3Ry
aW5nIG5vZGVIYW5kbGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgV2ViUGFnZSogcGFn
ZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKKyAgICBpZiAoIXBh
Z2UpIHsKKyAgICAgICAgU3RyaW5nIHdpbmRvd05vdEZvdW5kRXJyb3JUeXBlID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6V2luZG93Tm90Rm91bmQp
OworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkU2VsZWN0T3B0aW9u
RWxlbWVudChjYWxsYmFja0lELCB3aW5kb3dOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgV2ViRnJhbWUqIGZyYW1lID0gZnJhbWVJRCA/IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpIDogcGFnZS0+bWFpbldlYkZyYW1l
KCk7CisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmNvcmVGcmFtZSgpIHx8ICFmcmFtZS0+Y29y
ZUZyYW1lKCktPnZpZXcoKSkgeworICAgICAgICBTdHJpbmcgZnJhbWVOb3RGb3VuZEVycm9yVHlw
ZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3Rh
bnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OkZy
YW1lTm90Rm91bmQpOworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlk
U2VsZWN0T3B0aW9uRWxlbWVudChjYWxsYmFja0lELCBmcmFtZU5vdEZvdW5kRXJyb3JUeXBlKSwg
MCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBXZWJDb3JlOjpFbGVtZW50KiBjb3Jl
RWxlbWVudCA9IGVsZW1lbnRGb3JOb2RlSGFuZGxlKCpmcmFtZSwgbm9kZUhhbmRsZSk7CisgICAg
aWYgKCFjb3JlRWxlbWVudCB8fCAoIWlzPFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50Pihjb3Jl
RWxlbWVudCkgJiYgIWlzPFdlYkNvcmU6OkhUTUxPcHRHcm91cEVsZW1lbnQ+KGNvcmVFbGVtZW50
KSkpIHsKKyAgICAgICAgU3RyaW5nIG5vZGVOb3RGb3VuZEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6Ok5vZGVOb3RGb3VuZCk7Cisg
ICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRTZWxlY3RPcHRpb25FbGVt
ZW50KGNhbGxiYWNrSUQsIG5vZGVOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgU3RyaW5nIGVsZW1lbnROb3RJbnRlcmFjdGFibGVFcnJvclR5cGUg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50
VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpFbGVt
ZW50Tm90SW50ZXJhY3RhYmxlKTsKKyAgICBpZiAoaXM8V2ViQ29yZTo6SFRNTE9wdEdyb3VwRWxl
bWVudD4oY29yZUVsZW1lbnQpKSB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNz
aW9uOjpEaWRTZWxlY3RPcHRpb25FbGVtZW50KGNhbGxiYWNrSUQsIGVsZW1lbnROb3RJbnRlcmFj
dGFibGVFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8m
IG9wdGlvbkVsZW1lbnQgPSBkb3duY2FzdDxXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudD4oKmNv
cmVFbGVtZW50KTsKKyAgICBhdXRvKiBzZWxlY3RFbGVtZW50ID0gb3B0aW9uRWxlbWVudC5vd25l
clNlbGVjdEVsZW1lbnQoKTsKKyAgICBpZiAoIXNlbGVjdEVsZW1lbnQpIHsKKyAgICAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFNlbGVjdE9wdGlvbkVsZW1lbnQoY2FsbGJh
Y2tJRCwgZWxlbWVudE5vdEludGVyYWN0YWJsZUVycm9yVHlwZSksIDApOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKHNlbGVjdEVsZW1lbnQtPmlzRGlzYWJsZWRGb3JtQ29udHJv
bCgpIHx8IG9wdGlvbkVsZW1lbnQuaXNEaXNhYmxlZEZvcm1Db250cm9sKCkpIHsKKyAgICAgICAg
U3RyaW5nIGVsZW1lbnROb3RTZWxlY3RhYmxlRXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6RWxlbWVudE5vdFNlbGVjdGFibGUpOwor
ICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkU2VsZWN0T3B0aW9uRWxl
bWVudChjYWxsYmFja0lELCBlbGVtZW50Tm90U2VsZWN0YWJsZUVycm9yVHlwZSksIDApOworICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246
OkRpZENvbXB1dGVFbGVtZW50TGF5b3V0KGNhbGxiYWNrSUQsIHJlY3QsIGluVmlld0NlbnRlciwg
aXNPYnNjdXJlZCwgU3RyaW5nKCkpLCAwKTsKKyAgICBzZWxlY3RFbGVtZW50LT5vcHRpb25TZWxl
Y3RlZEJ5VXNlcihvcHRpb25FbGVtZW50LmluZGV4KCksIHRydWUsIHNlbGVjdEVsZW1lbnQtPm11
bHRpcGxlKCkpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRTZWxlY3RP
cHRpb25FbGVtZW50KGNhbGxiYWNrSUQsIHsgfSksIDApOwogfQogCiB2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OnRha2VTY3JlZW5zaG90KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaAppbmRleCA0Yjk3OTQ0M2Fj
ZS4uODQ1Njc0YmQ0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgKQEAgLTY1LDYg
KzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc29sdmVQYXJlbnRGcmFtZSh1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQg
Zm9jdXNGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpOwogICAgIHZvaWQg
Y29tcHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBT
dHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIHVzZVZp
ZXdwb3J0Q29vcmRpbmF0ZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgc2VsZWN0
T3B0aW9uRWxlbWVudCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBu
b2RlSGFuZGxlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIHRha2VTY3JlZW5zaG90
KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBnZXRDb29r
aWVzRm9yRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBj
YWxsYmFja0lEKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIFN0cmluZyBjb29raWVOYW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDJkYWYy
YTVkNTYzLi45ZDQxMzFjODVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC0zMiw2ICszMiw4IEBAIG1lc3NhZ2VzIC0+IFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHkgewogCiAgICAgQ29tcHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgcGFn
ZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRv
Vmlld0lmTmVlZGVkLCBib29sIHVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCiAKKyAgICBTZWxlY3RPcHRpb25FbGVtZW50KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0
X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisKICAg
ICBUYWtlU2NyZWVuc2hvdCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAK
ICAgICBHZXRDb29raWVzRm9yRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBjYWxsYmFja0lEKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317573</attachid>
            <date>2017-08-08 08:14:58 -0700</date>
            <delta_ts>2017-08-14 05:32:03 -0700</delta_ts>
            <desc>Try to fix mac builds</desc>
            <filename>wd-click-option-elements.diff</filename>
            <type>text/plain</type>
            <size>37013</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmgKaW5kZXggNmFhMTljOWYz
OTUuLmQ0MmRmZWIyMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRH
cm91cEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1l
bnQuaApAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxIVE1MT3B0R3Jv
dXBFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAg
ICBib29sIGlzRGlzYWJsZWRGb3JtQ29udHJvbCgpIGNvbnN0IGZpbmFsOwotICAgIEhUTUxTZWxl
Y3RFbGVtZW50KiBvd25lclNlbGVjdEVsZW1lbnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBIVE1MU2VsZWN0RWxlbWVudCogb3duZXJTZWxlY3RFbGVtZW50KCkgY29uc3Q7CiAgICAgCiAg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGdyb3VwTGFiZWxUZXh0KCkgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaAppbmRleCA3MTJhMzEzMDM0ZS4uMjViZGM4
ZTMzMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmgKQEAgLTQ5LDkg
KzQ5LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2VsZWN0ZWQoYm9v
bCk7CiAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLSAgICBIVE1MRGF0YUxpc3RFbGVt
ZW50KiBvd25lckRhdGFMaXN0RWxlbWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEhU
TUxEYXRhTGlzdEVsZW1lbnQqIG93bmVyRGF0YUxpc3RFbGVtZW50KCkgY29uc3Q7CiAjZW5kaWYK
LSAgICBIVE1MU2VsZWN0RWxlbWVudCogb3duZXJTZWxlY3RFbGVtZW50KCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgSFRNTFNlbGVjdEVsZW1lbnQqIG93bmVyU2VsZWN0RWxlbWVudCgpIGNv
bnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGxhYmVsKCkgY29uc3Q7CiAgICAgU3Ry
aW5nIGRpc3BsYXlMYWJlbCgpIGNvbnN0OwpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAKICAg
ICBib29sIG93bkVsZW1lbnREaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzYWJsZWQ7IH0K
IAotICAgIGJvb2wgaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgY29uc3QgZmluYWw7CisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBpc0Rpc2FibGVkRm9ybUNvbnRyb2woKSBjb25zdCBmaW5hbDsKIAog
ICAgIFN0cmluZyB0ZXh0SW5kZW50ZWRUb1Jlc3BlY3RHcm91cExhYmVsKCkgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkRyaXZlci9D
aGFuZ2VMb2cKaW5kZXggZThmYzM0NzJhNjYuLjdhODVhNGZmZjdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMzIEBACisyMDE3LTA4LTA4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KKworICAgICAgICBXZWJEcml2ZXI6IGhhbmRsZSBjbGljayBldmVudHMg
b24gb3B0aW9uIGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzQ3MTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzNDU5MzA1PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE9wdGlvbmFsIGVs
ZW1lbnRzIGFyZSBjb25zaWRlcmVkIGFzIGEgc3BlY2lhbCBjYXNlIGJ5IHRoZSBzcGVjaWZpY2F0
aW9uLiBXaGVuIGNsaWNraW5nIGFuIG9wdGlvbiBlbGVtZW50LCB3ZQorICAgICAgICBzaG91bGQg
Z2V0IGl0cyBjb250YWluZXIgYW5kIHVzZSBpdCB3aGVuIHNjcm9sbGluZyBpbnRvIHZpZXcgYW5k
IGNhbGN1bGF0aW5nIGluLXZpZXcgY2VudGVyIHBvaW50IGluc3RlYWQgb2YgdGhlCisgICAgICAg
IG9wdGlvbiBlbGVtZW50IGl0c2VsZi4gVGhlbiwgd2Ugc2hvdWxkIG5vdCBlbXVsYXRlIGEgY2xp
Y2ssIGJ1dCBjaGFuZ2UgdGhlIHNlbGVjdGVkIHN0YXR1cyBvZiB0aGUgb3B0aW9uIGVsZW1lbnQK
KyAgICAgICAgbGlrZSBpZiBpdCB3ZXJlIGRvbmUgYnkgYSB1c2VyIGFjdGlvbiwgZmlyaW5nIHRo
ZSBjb3JyZXNwb25kaW5nIGV2ZW50cy4gTm93IGNvbXB1dGVFbGVtZW50TGF5b3V0IGFsc28gcmV0
dXJucworICAgICAgICB3aGV0aGVyIHRoZSBlbGVtZW50IGlzIGFuIG9wdGlvbiBlbGVtZW50IG9y
IG5vdCwgYW5kIHdlIHVzZSBpdCBpbiB0aGUgY2xpY2sgaW1wbGVtZW50YXRpb24gdG8gZGVjaWRl
IGlmIGNhbGxpbmcKKyAgICAgICAgc2VsZWN0T3B0aW9uRWxlbWVudCgpIG9yIHBlcmZvcm1Nb3Vz
ZUludGVyYWN0aW9uKCkuCisKKyAgICAgICAgVGhpcyBmaXhlcyBtb3JlIHRoYW4gMjAgc2VsZW5p
dW0gdGVzdHMuCisKKyAgICAgICAgKiBDb21tYW5kUmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYkRy
aXZlcjo6Q29tbWFuZFJlc3VsdDo6Q29tbWFuZFJlc3VsdCk6IEhhbmRsZSBFbGVtZW50Tm90U2Vs
ZWN0YWJsZSBwcm90b2NvbCBlcnJvci4KKyAgICAgICAgKFdlYkRyaXZlcjo6Q29tbWFuZFJlc3Vs
dDo6aHR0cFN0YXR1c0NvZGUgY29uc3QpOiBBRGQgRWxlbWVudE5vdFNlbGVjdGFibGUuCisgICAg
ICAgIChXZWJEcml2ZXI6OkNvbW1hbmRSZXN1bHQ6OmVycm9yU3RyaW5nIGNvbnN0KTogRGl0dG8u
CisgICAgICAgICogQ29tbWFuZFJlc3VsdC5oOgorICAgICAgICAqIFNlc3Npb24uY3BwOgorICAg
ICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpjb21wdXRlRWxlbWVudExheW91dCk6IEhhbmRsZSBp
c09wdGlvbkVsZW1lbnQgb3V0cHV0IHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vz
c2lvbjo6Z2V0RWxlbWVudFJlY3QpOiBJZ25vcmUgaXNPcHRpb25FbGVtZW50LgorICAgICAgICAo
V2ViRHJpdmVyOjpTZXNzaW9uOjpzZWxlY3RPcHRpb25FbGVtZW50KTogQXNrIGF1dG9tYXRpb24g
dG8gc2VsZWN0IHRoZSBnaXZlbiBvcHRpb24gZWxlbWVudC4KKyAgICAgICAgKFdlYkRyaXZlcjo6
U2Vzc2lvbjo6ZWxlbWVudENsaWNrKTogQ2FsbCBzZWxlY3RPcHRpb25FbGVtZW50KCkgb3IgcGVy
Zm9ybU1vdXNlSW50ZXJhY3Rpb24oKSBkZXBlbmRpbmcgb24KKyAgICAgICAgaXNPcHRpb25FbGVt
ZW50IHJldHVybmVkIGJ5IGNvbXB1dGVFbGVtZW50TGF5b3V0LgorICAgICAgICAqIFNlc3Npb24u
aDoKKwogMjAxNy0wOC0wNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgV2ViIEF1dG9tYXRpb246IHNldFVzZXJJbnB1dEZvckN1cnJlbnRKYXZh
U2NyaXB0UHJvbXB0IHNob3VsZCBmYWlsIGlmIGN1cnJlbnQgZGlhbG9nIGlzIG5vdCBhIHByb21w
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcCBiL1NvdXJj
ZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAKaW5kZXggYmU4YzgxNzZhNjYuLmE1M2JhYzk3
OTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAKQEAgLTEwNiw2ICsxMDYsOCBAQCBD
b21tYW5kUmVzdWx0OjpDb21tYW5kUmVzdWx0KFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4mJiByZXN1
bHQsIHN0ZDo6b3B0aW9uYWw8RXJybwogICAgICAgICAgICAgbV9lcnJvckNvZGUgPSBFcnJvckNv
ZGU6OlRpbWVvdXQ7CiAgICAgICAgIGVsc2UgaWYgKGVycm9yTmFtZSA9PSAiTm9KYXZhU2NyaXB0
RGlhbG9nIikKICAgICAgICAgICAgIG1fZXJyb3JDb2RlID0gRXJyb3JDb2RlOjpOb1N1Y2hBbGVy
dDsKKyAgICAgICAgZWxzZSBpZiAoZXJyb3JOYW1lID09ICJFbGVtZW50Tm90U2VsZWN0YWJsZSIp
CisgICAgICAgICAgICBtX2Vycm9yQ29kZSA9IEVycm9yQ29kZTo6RWxlbWVudE5vdFNlbGVjdGFi
bGU7CiAKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTI3LDYgKzEyOSw3IEBAIHVuc2lnbmVk
IENvbW1hbmRSZXN1bHQ6Omh0dHBTdGF0dXNDb2RlKCkgY29uc3QKICAgICAvLyBodHRwczovL3d3
dy53My5vcmcvVFIvd2ViZHJpdmVyLyNoYW5kbGluZy1lcnJvcnMKICAgICBzd2l0Y2ggKG1fZXJy
b3JDb2RlLnZhbHVlKCkpIHsKICAgICBjYXNlIEVycm9yQ29kZTo6RWxlbWVudENsaWNrSW50ZXJj
ZXB0ZWQ6CisgICAgY2FzZSBFcnJvckNvZGU6OkVsZW1lbnROb3RTZWxlY3RhYmxlOgogICAgIGNh
c2UgRXJyb3JDb2RlOjpFbGVtZW50Tm90SW50ZXJhY3RhYmxlOgogICAgIGNhc2UgRXJyb3JDb2Rl
OjpJbnZhbGlkQXJndW1lbnQ6CiAgICAgY2FzZSBFcnJvckNvZGU6OkludmFsaWRFbGVtZW50U3Rh
dGU6CkBAIC0xNjIsNiArMTY1LDggQEAgU3RyaW5nIENvbW1hbmRSZXN1bHQ6OmVycm9yU3RyaW5n
KCkgY29uc3QKICAgICBzd2l0Y2ggKG1fZXJyb3JDb2RlLnZhbHVlKCkpIHsKICAgICBjYXNlIEVy
cm9yQ29kZTo6RWxlbWVudENsaWNrSW50ZXJjZXB0ZWQ6CiAgICAgICAgIHJldHVybiBBU0NJSUxp
dGVyYWwoImVsZW1lbnQgY2xpY2sgaW50ZXJjZXB0ZWQiKTsKKyAgICBjYXNlIEVycm9yQ29kZTo6
RWxlbWVudE5vdFNlbGVjdGFibGU6CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImVsZW1l
bnQgbm90IHNlbGVjdGFibGUiKTsKICAgICBjYXNlIEVycm9yQ29kZTo6RWxlbWVudE5vdEludGVy
YWN0YWJsZToKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiZWxlbWVudCBub3QgaW50ZXJh
Y3RhYmxlIik7CiAgICAgY2FzZSBFcnJvckNvZGU6OkludmFsaWRBcmd1bWVudDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5oIGIvU291cmNlL1dlYkRyaXZlci9D
b21tYW5kUmVzdWx0LmgKaW5kZXggOGMzZmI4OTdiYjIuLjdmNzg5ZTVhMzlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViRHJpdmVy
L0NvbW1hbmRSZXN1bHQuaApAQCAtNDEsNiArNDEsNyBAQCBwdWJsaWM6CiAgICAgLy8gaHR0cHM6
Ly93d3cudzMub3JnL1RSL3dlYmRyaXZlci8jaGFuZGxpbmctZXJyb3JzCiAgICAgZW51bSBjbGFz
cyBFcnJvckNvZGUgewogICAgICAgICBFbGVtZW50Q2xpY2tJbnRlcmNlcHRlZCwKKyAgICAgICAg
RWxlbWVudE5vdFNlbGVjdGFibGUsCiAgICAgICAgIEVsZW1lbnROb3RJbnRlcmFjdGFibGUsCiAg
ICAgICAgIEludmFsaWRBcmd1bWVudCwKICAgICAgICAgSW52YWxpZEVsZW1lbnRTdGF0ZSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVy
L1Nlc3Npb24uY3BwCmluZGV4IDdlZDU2OTYxOTE3Li45NmEzMGJmMzYwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Np
b24uY3BwCkBAIC03MzEsNyArNzMxLDcgQEAgU3RyaW5nIFNlc3Npb246OmV4dHJhY3RFbGVtZW50
SUQoSW5zcGVjdG9yVmFsdWUmIHZhbHVlKQogICAgIHJldHVybiBlbGVtZW50SUQ7CiB9CiAKLXZv
aWQgU2Vzc2lvbjo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQs
IE9wdGlvblNldDxFbGVtZW50TGF5b3V0T3B0aW9uPiBvcHRpb25zLCBGdW5jdGlvbjx2b2lkIChz
dGQ6Om9wdGlvbmFsPFJlY3Q+JiYsIHN0ZDo6b3B0aW9uYWw8UG9pbnQ+JiYsIGJvb2wsIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBTZXNzaW9u
Ojpjb21wdXRlRWxlbWVudExheW91dChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgT3B0aW9uU2V0
PEVsZW1lbnRMYXlvdXRPcHRpb24+IG9wdGlvbnMsIEZ1bmN0aW9uPHZvaWQgKHN0ZDo6b3B0aW9u
YWw8UmVjdD4mJiwgc3RkOjpvcHRpb25hbDxQb2ludD4mJiwgYm9vbCwgYm9vbCwgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1f
dG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7CiAKQEAgLTc0MywxMiArNzQzLDEyIEBA
IHZvaWQgU2Vzc2lvbjo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQoY29uc3QgU3RyaW5nJiBlbGVtZW50
SUQsIE9wdGlvblNldDxFbGVtZW50TGF5CiAgICAgcGFyYW1ldGVycy0+c2V0Qm9vbGVhbihBU0NJ
SUxpdGVyYWwoInVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMiKSwgb3B0aW9ucy5jb250YWlucyhFbGVt
ZW50TGF5b3V0T3B0aW9uOjpVc2VWaWV3cG9ydENvb3JkaW5hdGVzKSk7CiAgICAgbV9ob3N0LT5z
ZW5kQ29tbWFuZFRvQmFja2VuZChBU0NJSUxpdGVyYWwoImNvbXB1dGVFbGVtZW50TGF5b3V0Iiks
IFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Np
b25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CiAgICAgICAgIGlm
IChyZXNwb25zZS5pc0Vycm9yIHx8ICFyZXNwb25zZS5yZXNwb25zZU9iamVjdCkgewotICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIGZhbHNl
LCBXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSk7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgZmFsc2UsIGZhbHNlLCBXVEZN
b3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVjdE9iamVjdDsKICAgICAg
ICAgaWYgKCFyZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgi
cmVjdCIpLCByZWN0T2JqZWN0KSkgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3Rk
OjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIGZhbHNlLCBudWxscHRyKTsKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBmYWxzZSwgZmFsc2Us
IG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8aW50PiBlbGVtZW50WDsKQEAgLTc2Miw3ICs3NjIsNyBAQCB2b2lkIFNlc3Npb246
OmNvbXB1dGVFbGVtZW50TGF5b3V0KGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBPcHRpb25TZXQ8
RWxlbWVudExheQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmICghZWxlbWVu
dFggfHwgIWVsZW1lbnRZKSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51
bGxvcHQsIHN0ZDo6bnVsbG9wdCwgZmFsc2UsIG51bGxwdHIpOworICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIGZhbHNlLCBmYWxzZSwgbnVs
bHB0cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgc3RkOjpvcHRp
b25hbDxpbnQ+IGVsZW1lbnRXaWR0aDsKQEAgLTc3NiwyOSArNzc2LDM0IEBAIHZvaWQgU2Vzc2lv
bjo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIE9wdGlvblNl
dDxFbGVtZW50TGF5CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFlbGVt
ZW50V2lkdGggfHwgIWVsZW1lbnRIZWlnaHQpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBmYWxzZSwgbnVsbHB0cik7CisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgZmFsc2Us
IGZhbHNlLCBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICBSZWN0IHJlY3QgPSB7IHsgZWxlbWVudFgudmFsdWUoKSwgZWxlbWVudFkudmFsdWUoKSB9LCB7
IGVsZW1lbnRXaWR0aC52YWx1ZSgpLCBlbGVtZW50SGVpZ2h0LnZhbHVlKCkgfSB9OwogCiAgICAg
ICAgIGJvb2wgaXNPYnNjdXJlZDsKICAgICAgICAgaWYgKCFyZXNwb25zZS5yZXNwb25zZU9iamVj
dC0+Z2V0Qm9vbGVhbihBU0NJSUxpdGVyYWwoImlzT2JzY3VyZWQiKSwgaXNPYnNjdXJlZCkpIHsK
LSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0
LCBmYWxzZSwgbnVsbHB0cik7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51
bGxvcHQsIHN0ZDo6bnVsbG9wdCwgZmFsc2UsIGZhbHNlLCBudWxscHRyKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBib29sIGlzT3B0aW9uRWxlbWVudDsKKyAgICAg
ICAgaWYgKCFyZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0Qm9vbGVhbihBU0NJSUxpdGVyYWwo
ImlzT3B0aW9uRWxlbWVudCIpLCBpc09wdGlvbkVsZW1lbnQpKSB7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgZmFsc2UsIGZhbHNlLCBu
dWxscHRyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBpblZpZXdDZW50ZXJQb2ludE9iamVjdDsKICAgICAgICAgaWYgKCFy
ZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgiaW5WaWV3Q2Vu
dGVyUG9pbnQiKSwgaW5WaWV3Q2VudGVyUG9pbnRPYmplY3QpKSB7Ci0gICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihyZWN0LCBzdGQ6Om51bGxvcHQsIGlzT2JzY3VyZWQsIG51bGxwdHIpOwor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVjdCwgc3RkOjpudWxsb3B0LCBpc09ic2N1
cmVkLCBpc09wdGlvbkVsZW1lbnQsIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIGludCBpblZpZXdDZW50ZXJQb2ludFgsIGluVmlld0NlbnRlclBvaW50
WTsKICAgICAgICAgaWYgKCFpblZpZXdDZW50ZXJQb2ludE9iamVjdC0+Z2V0SW50ZWdlcihBU0NJ
SUxpdGVyYWwoIngiKSwgaW5WaWV3Q2VudGVyUG9pbnRYKQogICAgICAgICAgICAgfHwgIWluVmll
d0NlbnRlclBvaW50T2JqZWN0LT5nZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgieSIpLCBpblZpZXdD
ZW50ZXJQb2ludFkpKSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCwgaXNPYnNjdXJlZCwgbnVsbHB0cik7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgaXNPYnNjdXJlZCwgaXNP
cHRpb25FbGVtZW50LCBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICBQb2ludCBpblZpZXdDZW50ZXJQb2ludCA9IHsgaW5WaWV3Q2VudGVyUG9pbnRYLCBp
blZpZXdDZW50ZXJQb2ludFkgfTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVjdCwgaW5W
aWV3Q2VudGVyUG9pbnQsIGlzT2JzY3VyZWQsIG51bGxwdHIpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihyZWN0LCBpblZpZXdDZW50ZXJQb2ludCwgaXNPYnNjdXJlZCwgaXNPcHRpb25FbGVt
ZW50LCBudWxscHRyKTsKICAgICB9KTsKIH0KIApAQCAtMTAyMiw3ICsxMDI3LDcgQEAgdm9pZCBT
ZXNzaW9uOjpnZXRFbGVtZW50UmVjdChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248
dm9pZCAoQ29tbWFuZFJlc3UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgY29tcHV0
ZUVsZW1lbnRMYXlvdXQoZWxlbWVudElELCB7IH0sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKHN0ZDo6b3B0aW9uYWw8UmVjdD4mJiByZWN0LCBzdGQ6Om9wdGlvbmFsPFBvaW50PiYmLCBi
b29sLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIGVycm9yKSB7CisgICAgICAgIGNvbXB1dGVF
bGVtZW50TGF5b3V0KGVsZW1lbnRJRCwgeyB9LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShzdGQ6Om9wdGlvbmFsPFJlY3Q+JiYgcmVjdCwgc3RkOjpvcHRpb25hbDxQb2ludD4mJiwgYm9v
bCwgYm9vbCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBlcnJvcikgewogICAgICAgICAgICAg
aWYgKCFyZWN0IHx8IGVycm9yKSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
Q29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKGVycm9yKSkpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTExOTEsNiArMTE5NiwyMSBAQCB2b2lkIFNlc3Npb246OndhaXRGb3JOYXZpZ2F0
aW9uVG9Db21wbGV0ZShGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbQogICAg
IH0pOwogfQogCit2b2lkIFNlc3Npb246OnNlbGVjdE9wdGlvbkVsZW1lbnQoY29uc3QgU3RyaW5n
JiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcGFyYW1ldGVycyA9IElu
c3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKEFTQ0lJ
TGl0ZXJhbCgiYnJvd3NpbmdDb250ZXh0SGFuZGxlIiksIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRl
eHQudmFsdWUoKSk7CisgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgiZnJh
bWVIYW5kbGUiKSwgbV9jdXJyZW50QnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOworICAgIHBhcmFt
ZXRlcnMtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm5vZGVIYW5kbGUiKSwgZWxlbWVudElEKTsK
KyAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKEFTQ0lJTGl0ZXJhbCgic2VsZWN0T3B0
aW9uRWxlbWVudCIpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKKyAgICAg
ICAgaWYgKHJlc3BvbnNlLmlzRXJyb3IpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkpKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihDb21tYW5kUmVzdWx0OjpzdWNjZXNzKCkpOworICAgIH0pOworfQorCiB2b2lkIFNlc3Npb246
OmVsZW1lbnRDbGljayhjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29t
bWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fdG9wbGV2
ZWxCcm93c2luZ0NvbnRleHQpIHsKQEAgLTEyMDAsNyArMTIyMCw3IEBAIHZvaWQgU2Vzc2lvbjo6
ZWxlbWVudENsaWNrKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21t
YW5kUmVzdWx0CiAKICAgICBPcHRpb25TZXQ8RWxlbWVudExheW91dE9wdGlvbj4gb3B0aW9ucyA9
IEVsZW1lbnRMYXlvdXRPcHRpb246OlNjcm9sbEludG9WaWV3SWZOZWVkZWQ7CiAgICAgb3B0aW9u
cyB8PSBFbGVtZW50TGF5b3V0T3B0aW9uOjpVc2VWaWV3cG9ydENvb3JkaW5hdGVzOwotICAgIGNv
bXB1dGVFbGVtZW50TGF5b3V0KGVsZW1lbnRJRCwgb3B0aW9ucywgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxSZWN0PiYmIHJlY3QsIHN0ZDo6b3B0aW9uYWw8UG9p
bnQ+JiYgaW5WaWV3Q2VudGVyLCBib29sIGlzT2JzY3VyZWQsIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+JiYgZXJyb3IpIG11dGFibGUgeworICAgIGNvbXB1dGVFbGVtZW50TGF5b3V0KGVsZW1lbnRJ
RCwgb3B0aW9ucywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZWxlbWVu
dElELCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShzdGQ6
Om9wdGlvbmFsPFJlY3Q+JiYgcmVjdCwgc3RkOjpvcHRpb25hbDxQb2ludD4mJiBpblZpZXdDZW50
ZXIsIGJvb2wgaXNPYnNjdXJlZCwgYm9vbCBpc09wdGlvbkVsZW1lbnQsIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+JiYgZXJyb3IpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlY3QgfHwgZXJyb3Ip
IHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RG
TW92ZShlcnJvcikpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEyMTQsNyArMTIzNCwxMCBA
QCB2b2lkIFNlc3Npb246OmVsZW1lbnRDbGljayhjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVu
Y3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgcGVyZm9ybU1vdXNlSW50ZXJhY3Rpb24oaW5WaWV3Q2VudGVyLnZhbHVlKCku
eCwgaW5WaWV3Q2VudGVyLnZhbHVlKCkueSwgTW91c2VCdXR0b246OkxlZnQsIE1vdXNlSW50ZXJh
Y3Rpb246OlNpbmdsZUNsaWNrLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAg
IGlmIChpc09wdGlvbkVsZW1lbnQpCisgICAgICAgICAgICBzZWxlY3RPcHRpb25FbGVtZW50KGVs
ZW1lbnRJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBwZXJmb3JtTW91c2VJbnRlcmFjdGlvbihpblZpZXdDZW50ZXIudmFsdWUoKS54LCBp
blZpZXdDZW50ZXIudmFsdWUoKS55LCBNb3VzZUJ1dHRvbjo6TGVmdCwgTW91c2VJbnRlcmFjdGlv
bjo6U2luZ2xlQ2xpY2ssIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAogICAgICAgICB3
YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
ICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmggYi9Tb3VyY2Uv
V2ViRHJpdmVyL1Nlc3Npb24uaAppbmRleCA3NWI0YWIzMDliOS4uOTYwNjcwNzcyNGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIv
U2Vzc2lvbi5oCkBAIC0xMzUsNyArMTM1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgU2Nyb2xsSW50
b1ZpZXdJZk5lZWRlZCA9IDEgPDwgMCwKICAgICAgICAgVXNlVmlld3BvcnRDb29yZGluYXRlcyA9
IDEgPDwgMSwKICAgICB9OwotICAgIHZvaWQgY29tcHV0ZUVsZW1lbnRMYXlvdXQoY29uc3QgU3Ry
aW5nJiBlbGVtZW50SUQsIE9wdGlvblNldDxFbGVtZW50TGF5b3V0T3B0aW9uPiwgRnVuY3Rpb248
dm9pZCAoc3RkOjpvcHRpb25hbDxSZWN0PiYmLCBzdGQ6Om9wdGlvbmFsPFBvaW50PiYmLCBib29s
LCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYpPiYmKTsKKyAgICB2b2lkIGNv
bXB1dGVFbGVtZW50TGF5b3V0KGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBPcHRpb25TZXQ8RWxl
bWVudExheW91dE9wdGlvbj4sIEZ1bmN0aW9uPHZvaWQgKHN0ZDo6b3B0aW9uYWw8UmVjdD4mJiwg
c3RkOjpvcHRpb25hbDxQb2ludD4mJiwgYm9vbCwgYm9vbCwgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiYmKT4mJik7CisKKyAgICB2b2lkIHNlbGVjdE9wdGlvbkVsZW1lbnQoY29u
c3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYp
OwogCiAgICAgZW51bSBjbGFzcyBNb3VzZUJ1dHRvbiB7IE5vbmUsIExlZnQsIE1pZGRsZSwgUmln
aHQgfTsKICAgICBlbnVtIGNsYXNzIE1vdXNlSW50ZXJhY3Rpb24geyBNb3ZlLCBEb3duLCBVcCwg
U2luZ2xlQ2xpY2ssIERvdWJsZUNsaWNrIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGZhNmNjODkxZTk0Li5hYTFj
Y2RlNmE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxNy0wOC0wOCAgQ2FybG9zIEdh
cmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgV2ViRHJpdmVyOiBo
YW5kbGUgY2xpY2sgZXZlbnRzIG9uIG9wdGlvbiBlbGVtZW50cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NzEwCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zMzQ1OTMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgc2VsZWN0T3B0aW9uRWxlbWVudCBtZXRob2QgdG8gYXV0b21hdGlvbiB0byBz
ZWxlY3QgYW4gb3B0aW9uIGVsZW1lbnQgYWNjb3JkaW5nIHRvIHRoZSBXZWJEcml2ZXIKKyAgICAg
ICAgc3BlY2lmaWNhdGlvbi4KKworICAgICAgICAxNC4xIEVsZW1lbnQgQ2xpY2suCisgICAgICAg
IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJkcml2ZXIvd2ViZHJpdmVyLXNwZWMuaHRtbCNlbGVt
ZW50LWNsaWNrCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpz
b246IEFkZCBzZWxlY3RPcHRpb25FbGVtZW50IG1ldGhvZCBhbmQgRWxlbWVudE5vdFNlbGVjdGFi
bGUgZXJyb3IuCisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlkQ29t
cHV0ZUVsZW1lbnRMYXlvdXQpOiBIYW5kbGUgaXNPcHRpb25FbGVtZW50IHJldHVybiB2YWx1ZS4K
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnNlbGVjdE9wdGlvbkVsZW1l
bnQpOiBTZW5kIFNlbGVjdE9wdGlvbkVsZW1lbnQgbWVzc2FnZSB0byB0aGUgd2ViIHByb2Nlc3Mu
CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRTZWxlY3RPcHRpb25F
bGVtZW50KTogTm90aWZ5IHRoZSBkcml2ZXIuCisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbjogQWRkIERpZFNlbGVjdE9wdGlvbkVs
ZW1lbnQgbWVzc2FnZSBhbmQgdXBkYXRlCisgICAgICAgIERpZENvbXB1dGVFbGVtZW50TGF5b3V0
IHRoYXQgbm93IHJldHVybnMgaXNPcHRpb25FbGVtZW50LgorICAgICAgICAqIFdlYlByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6ZWxlbWVudENvbnRhaW5lcik6IEhlbHBlciB0byBnZXQgdGhlIGNvbnRhaW5lciBvZiBhbiBl
bGVtZW50IGFjY29yZGluZyB0byB0aGUgc3BlYy4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQpOiBVc2UgdGhlIGNvbnRhaW5l
ciBlbGVtZW50IHRvIHNjcm9sbCB0aGUgdmlldyBhbmQKKyAgICAgICAgY29tcHV0ZSB0aGUgaW4t
dmlldyBjZW50ZXIgcG9pbnQuCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHk6OnNlbGVjdE9wdGlvbkVsZW1lbnQpOiBVc2UgSFRNTFNlbGVjdEVsZW1lbnQ6Om9wdGlv
blNlbGVjdGVkQnlVc2VyKCkuCisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbjogQWRkIFNlbGVjdE9wdGlvbkVs
ZW1lbnQgbWVzc2FnZS4KKwogMjAxNy0wOC0wNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2Fy
Y2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgV2ViIEF1dG9tYXRpb246IHNldFVzZXJJbnB1dEZv
ckN1cnJlbnRKYXZhU2NyaXB0UHJvbXB0IHNob3VsZCBmYWlsIGlmIGN1cnJlbnQgZGlhbG9nIGlz
IG5vdCBhIHByb21wdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9BdXRvbWF0aW9uLmpzb24gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L0F1dG9tYXRpb24uanNvbgppbmRleCAyMTM2NmMyNGUxZS4uMGRjNWEyOWQxMzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCkBA
IC01OSw3ICs1OSw4IEBACiAgICAgICAgICAgICAgICAgIk1pc3NpbmdQYXJhbWV0ZXIiLAogICAg
ICAgICAgICAgICAgICJJbnZhbGlkUGFyYW1ldGVyIiwKICAgICAgICAgICAgICAgICAiSW52YWxp
ZFNlbGVjdG9yIiwKLSAgICAgICAgICAgICAgICAiRWxlbWVudE5vdEludGVyYWN0YWJsZSIKKyAg
ICAgICAgICAgICAgICAiRWxlbWVudE5vdEludGVyYWN0YWJsZSIsCisgICAgICAgICAgICAgICAg
IkVsZW1lbnROb3RTZWxlY3RhYmxlIgogICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAg
ICB7CkBAIC00MjUsNyArNDI2LDE4IEBACiAgICAgICAgICAgICAicmV0dXJucyI6IFsKICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogInJlY3QiLCAiJHJlZiI6ICJSZWN0IiwgImRlc2NyaXB0aW9u
IjogIlRoZSBsYXlvdXQgcmVjdCBmb3IgdGhlIHJlcXVlc3RlZCBlbGVtZW50LiBTcGVjaWZpZWQg
aW4gcGFnZSBvciB2aWV3cG9ydCBjb29yZGluYXRlcyBiYXNlZCBvbiB0aGUgdXNlVmlld3BvcnRD
b29yZGluYXRlcyBwYXJhbWV0ZXIuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaW5W
aWV3Q2VudGVyUG9pbnQiLCAib3B0aW9uYWwiOiB0cnVlLCAiJHJlZiI6ICJQb2ludCIsICJkZXNj
cmlwdGlvbiI6ICJUaGUgaW4tdmlldyBjZW50ZXIgcG9pbnQgZm9yIHRoZSByZXF1ZXN0ZWQgZWxl
bWVudC4gU3BlY2lmaWVkIGluIHBhZ2Ugb3Igdmlld3BvcnQgY29vcmRpbmF0ZXMgYmFzZWQgb24g
dGhlIHVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMgcGFyYW1ldGVyLiIgfSwKLSAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImlzT2JzY3VyZWQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9u
IjogIklmIHRoZSBpbi12aWV3IGNlbnRlciBwb2ludCBvZiB0aGUgcmVxdWVzdGVkIGVsZW1lbnQg
aXMgb2JzY3VyZWQgYnkgYW5vdGhlciBlbGVtZW50LiIgfQorICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiaXNPYnNjdXJlZCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiSWYg
dGhlIGluLXZpZXcgY2VudGVyIHBvaW50IG9mIHRoZSByZXF1ZXN0ZWQgZWxlbWVudCBpcyBvYnNj
dXJlZCBieSBhbm90aGVyIGVsZW1lbnQuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
aXNPcHRpb25FbGVtZW50IiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJJZiB0
aGUgZWxlbWVudCBpcyBhbiBIVE1MIG9wdGlvbiBlbGVtZW50IiB9CisgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgImFzeW5jIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAg
ICAgICAibmFtZSI6ICJzZWxlY3RPcHRpb25FbGVtZW50IiwKKyAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJTZWxlY3RzIHRoZSBnaXZlbiBvcHRpb24gZWxlbWVudC4gSW4gY2FzZSBvZiBjb250
YWluZXIgd2l0aCBtdWx0aXBsZSBvcHRpb25zIGVuYWJsZWQsIHRoZSBlbGVtZW50IHNlbGVjdGVk
bmVzcyBpcyB0b2dnbGVkLiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImJyb3dzaW5nQ29udGV4dEhhbmRsZSIsICIkcmVmIjogIkJyb3dz
aW5nQ29udGV4dEhhbmRsZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgaGFuZGxlIGZvciB0aGUgYnJv
d3NpbmcgY29udGV4dC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmcmFtZUhhbmRs
ZSIsICIkcmVmIjogIkZyYW1lSGFuZGxlIiwgImRlc2NyaXB0aW9uIjogIlRoZSBoYW5kbGUgZm9y
IHRoZSBmcmFtZSB0aGF0IGNvbnRhaW5zIHRoZSBlbGVtZW50LiIgfSwKKyAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogIm5vZGVIYW5kbGUiLCAiJHJlZiI6ICJOb2RlSGFuZGxlIiwgImRlc2NyaXB0
aW9uIjogIlRoZSBoYW5kbGUgb2YgdGhlIGVsZW1lbnQgdG8gdXNlLiIgfQogICAgICAgICAgICAg
XSwKICAgICAgICAgICAgICJhc3luYyI6IHRydWUKICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAKaW5kZXggYzhhZDVhMWY0NGIuLmM1Y2IzMmUwOGI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
LmNwcApAQCAtODA2LDcgKzgwNiw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmNvbXB1
dGVFbGVtZW50TGF5b3V0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yU3RyCiAgICAgcGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OkNv
bXB1dGVFbGVtZW50TGF5b3V0KHBhZ2UtPnBhZ2VJRCgpLCBmcmFtZUlELnZhbHVlKCksIG5vZGVI
YW5kbGUsIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIHVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMsIGNh
bGxiYWNrSUQpLCAwKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlkQ29tcHV0
ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6SW50UmVjdCByZWN0
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBpblZpZXdDZW50ZXJQb2ludCwgYm9v
bCBpc09ic2N1cmVkLCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSkKK3ZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb246OmRpZENvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdl
YkNvcmU6OkludFJlY3QgcmVjdCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gaW5W
aWV3Q2VudGVyUG9pbnQsIGJvb2wgaXNPYnNjdXJlZCwgYm9vbCBpc09wdGlvbkVsZW1lbnQsIGNv
bnN0IFN0cmluZyYgZXJyb3JUeXBlKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NvbXB1dGVF
bGVtZW50TGF5b3V0Q2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFj
aykKQEAgLTgzMyw3ICs4MzMsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRDb21w
dXRlRWxlbWVudExheW91dCh1aW50NjRfdCBjYWxsYmFja0lELCBXZWJDb3JlOgogICAgICAgICAu
cmVsZWFzZSgpOwogCiAgICAgaWYgKCFpblZpZXdDZW50ZXJQb2ludCkgewotICAgICAgICBjYWxs
YmFjay0+c2VuZFN1Y2Nlc3MoV1RGTW92ZShyZWN0T2JqZWN0KSwgbnVsbHB0ciwgaXNPYnNjdXJl
ZCk7CisgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcyhXVEZNb3ZlKHJlY3RPYmplY3QpLCBu
dWxscHRyLCBpc09ic2N1cmVkLCBpc09wdGlvbkVsZW1lbnQpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC04NDIsOSArODQyLDQwIEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRp
ZENvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYkNvcmU6CiAgICAg
ICAgIC5zZXRZKGluVmlld0NlbnRlclBvaW50LnZhbHVlKCkueSgpKQogICAgICAgICAucmVsZWFz
ZSgpOwogCi0gICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKFdURk1vdmUocmVjdE9iamVjdCksIFdU
Rk1vdmUoaW5WaWV3Q2VudGVyUG9pbnRPYmplY3QpLCBpc09ic2N1cmVkKTsKKyAgICBjYWxsYmFj
ay0+c2VuZFN1Y2Nlc3MoV1RGTW92ZShyZWN0T2JqZWN0KSwgV1RGTW92ZShpblZpZXdDZW50ZXJQ
b2ludE9iamVjdCksIGlzT2JzY3VyZWQsIGlzT3B0aW9uRWxlbWVudCk7CiB9CiAKK3ZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb246OnNlbGVjdE9wdGlvbkVsZW1lbnQoSW5zcGVjdG9yOjpFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBj
b25zdCBTdHJpbmcmIGZyYW1lSGFuZGxlLCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIFJlZjxT
ZWxlY3RPcHRpb25FbGVtZW50Q2FsbGJhY2s+JiYgY2FsbGJhY2spCit7CisgICAgV2ViUGFnZVBy
b3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGJyb3dzaW5nQ29udGV4dEhhbmRsZSk7
CisgICAgaWYgKCFwYWdlKQorICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5k
b3dOb3RGb3VuZCk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEID0gd2Vi
RnJhbWVJREZvckhhbmRsZShmcmFtZUhhbmRsZSk7CisgICAgaWYgKCFmcmFtZUlEKQorICAgICAg
ICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihGcmFtZU5vdEZvdW5kKTsKKworICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSBtX25leHRTZWxlY3RPcHRpb25FbGVtZW50Q2FsbGJhY2tJRCsrOwor
ICAgIG1fc2VsZWN0T3B0aW9uRWxlbWVudENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92
ZShjYWxsYmFjaykpOworCisgICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHk6OlNlbGVjdE9wdGlvbkVsZW1lbnQocGFnZS0+cGFnZUlEKCks
IGZyYW1lSUQudmFsdWUoKSwgbm9kZUhhbmRsZSwgY2FsbGJhY2tJRCksIDApOworfQorCit2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRTZWxlY3RPcHRpb25FbGVtZW50KHVpbnQ2NF90IGNh
bGxiYWNrSUQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKQoreworICAgIGF1dG8gY2FsbGJhY2sg
PSBtX3NlbGVjdE9wdGlvbkVsZW1lbnRDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKTsKKyAgICBp
ZiAoIWNhbGxiYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWVycm9yVHlwZS5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKFNUUklOR19GT1JfUFJFREVG
SU5FRF9FUlJPUl9NRVNTQUdFKGVycm9yVHlwZSkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKCk7Cit9CisKKwogdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6aXNTaG93aW5nSmF2YVNjcmlwdERpYWxvZyhJbnNwZWN0b3I6OkVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGJvb2wq
IHJlc3VsdCkKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCmluZGV4
IDk1Mjc1YzY5NDE4Li5hNzIxMDM4NDYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaApAQCAtMTMzLDYg
KzEzMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lSGFuZGxlKEluc3Bl
Y3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwg
Y29uc3QgU3RyaW5nKiBvcHRpb25hbEZyYW1lSGFuZGxlLCBjb25zdCBpbnQqIG9wdGlvbmFsT3Jk
aW5hbCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbE5hbWUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxO
b2RlSGFuZGxlLCBSZWY8UmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGVDYWxsYmFjaz4mJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCByZXNvbHZlUGFyZW50RnJhbWVIYW5kbGUoSW5zcGVjdG9yOjpFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcm
IGZyYW1lSGFuZGxlLCBSZWY8UmVzb2x2ZVBhcmVudEZyYW1lSGFuZGxlQ2FsbGJhY2s+JiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgY29tcHV0ZUVsZW1lbnRMYXlvdXQoSW5zcGVjdG9yOjpFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcm
IGZyYW1lSGFuZGxlLCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIGNvbnN0IGJvb2wqIG9wdGlv
bmFsU2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgY29uc3QgYm9vbCogdXNlVmlld3BvcnRDb29yZGlu
YXRlcywgUmVmPEluc3BlY3Rvcjo6QXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6
Q29tcHV0ZUVsZW1lbnRMYXlvdXRDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZWxl
Y3RPcHRpb25FbGVtZW50KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJy
b3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nJiBmcmFtZUhhbmRsZSwgY29uc3QgU3Ry
aW5nJiBub2RlSGFuZGxlLCBSZWY8SW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyOjpTZWxlY3RPcHRpb25FbGVtZW50Q2FsbGJhY2s+JiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgaXNTaG93aW5nSmF2YVNjcmlwdERpYWxvZyhJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGJvb2wqIHJlc3VsdCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaXNtaXNzQ3VycmVudEphdmFTY3JpcHREaWFsb2coSW5zcGVjdG9yOjpF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlKSBvdmVycmlk
ZTsKICAgICB2b2lkIGFjY2VwdEN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nKEluc3BlY3Rvcjo6RXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSkgb3ZlcnJpZGU7
CkBAIC0xNzUsNyArMTc2LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEV2YWx1YXRlSmF2YVNj
cmlwdEZ1bmN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0LCBj
b25zdCBTdHJpbmcmIGVycm9yVHlwZSk7CiAgICAgdm9pZCBkaWRSZXNvbHZlQ2hpbGRGcmFtZSh1
aW50NjRfdCBjYWxsYmFja0lELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIGVycm9y
VHlwZSk7CiAgICAgdm9pZCBkaWRSZXNvbHZlUGFyZW50RnJhbWUodWludDY0X3QgY2FsbGJhY2tJ
RCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpOwotICAgIHZvaWQg
ZGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6SW50
UmVjdCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wgaXNPYnNjdXJlZCwg
Y29uc3QgU3RyaW5nJiBlcnJvclR5cGUpOworICAgIHZvaWQgZGlkQ29tcHV0ZUVsZW1lbnRMYXlv
dXQodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6SW50UmVjdCwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wgaXNPYnNjdXJlZCwgYm9vbCBpc09wdGlvbkVsZW1lbnQs
IGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKTsKKyAgICB2b2lkIGRpZFNlbGVjdE9wdGlvbkVsZW1l
bnQodWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpOwogICAgIHZv
aWQgZGlkVGFrZVNjcmVlbnNob3QodWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgU2hhcmVhYmxl
Qml0bWFwOjpIYW5kbGUmLCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSk7CiAgICAgdm9pZCBkaWRH
ZXRDb29raWVzRm9yRnJhbWUodWludDY0X3QgY2FsbGJhY2tJRCwgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4sIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKTsKICAgICB2b2lkIGRpZERlbGV0ZUNvb2tp
ZSh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSk7CkBAIC0yNDEs
NiArMjQzLDkgQEAgcHJpdmF0ZToKICAgICB1aW50NjRfdCBtX25leHREZWxldGVDb29raWVDYWxs
YmFja0lEIHsgMSB9OwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkF1
dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkRlbGV0ZVNpbmdsZUNvb2tpZUNhbGxi
YWNrPj4gbV9kZWxldGVDb29raWVDYWxsYmFja3M7CiAKKyAgICB1aW50NjRfdCBtX25leHRTZWxl
Y3RPcHRpb25FbGVtZW50Q2FsbGJhY2tJRCB7IDEgfTsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWZQdHI8SW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpTZWxl
Y3RPcHRpb25FbGVtZW50Q2FsbGJhY2s+PiBtX3NlbGVjdE9wdGlvbkVsZW1lbnRDYWxsYmFja3M7
CisKICAgICBSdW5Mb29wOjpUaW1lcjxXZWJBdXRvbWF0aW9uU2Vzc2lvbj4gbV9sb2FkVGltZXI7
CiAgICAgVmVjdG9yPFN0cmluZz4gbV9maWxlc1RvU2VsZWN0Rm9yRmlsZVVwbG9hZDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW4KaW5kZXggZjM4YWM5NTNmNjEuLmFmYzc1
M2NiYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW4KQEAgLTI2LDcg
KzI2LDkgQEAgbWVzc2FnZXMgLT4gV2ViQXV0b21hdGlvblNlc3Npb24gewogICAgIERpZFJlc29s
dmVDaGlsZEZyYW1lKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmlu
ZyBlcnJvclR5cGUpCiAgICAgRGlkUmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90IGNhbGxiYWNr
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBlcnJvclR5cGUpCiAKLSAgICBEaWRDb21wdXRl
RWxlbWVudExheW91dCh1aW50NjRfdCBjYWxsYmFja0lELCBXZWJDb3JlOjpJbnRSZWN0IHJlY3Qs
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGluVmlld0NlbnRlclBvaW50LCBib29s
IGlzT2JzY3VyZWQsIFN0cmluZyBlcnJvclR5cGUpCisgICAgRGlkQ29tcHV0ZUVsZW1lbnRMYXlv
dXQodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6SW50UmVjdCByZWN0LCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkludFBvaW50PiBpblZpZXdDZW50ZXJQb2ludCwgYm9vbCBpc09ic2N1cmVk
LCBib29sIGlzT3B0aW9uRWxlbWVudCwgU3RyaW5nIGVycm9yVHlwZSkKKworICAgIERpZFNlbGVj
dE9wdGlvbkVsZW1lbnQodWludDY0X3QgY2FsbGJhY2tJRCwgU3RyaW5nIGVycm9yVHlwZSkKIAog
ICAgIERpZFRha2VTY3JlZW5zaG90KHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUgaW1hZ2VEYXRhSGFuZGxlLCBTdHJpbmcgZXJyb3JUeXBlKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCmluZGV4IDUyZDM0N2QzN2YwLi5hZTIyMTk4
MTAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKQEAgLTQ4LDYgKzQ4LDkg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVHJlZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJh
bWVWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MRnJhbWVFbGVtZW50QmFzZS5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvSFRNTE9wdEdyb3VwRWxlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
SFRNTE9wdGlvbkVsZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0hUTUxTZWxlY3RFbGVtZW50
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9KU0VsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01h
aW5GcmFtZS5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+CkBAIC01MDMsMTIgKzUwNiwzOCBAQCBz
dGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PiBlbGVtZW50SW5WaWV3Q2xp
ZW50Q2VudGVyUG9pbnQoV2ViQ29yZQogICAgIHJldHVybiBjbGllbnRDZW50ZXJQb2ludDsKIH0K
IAorc3RhdGljIFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnRDb250YWluZXIoV2ViQ29yZTo6RWxl
bWVudCYgZWxlbWVudCkKK3sKKyAgICAvLyDCpzEzLiBFbGVtZW50IFN0YXRlLgorICAgIC8vIGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJkcml2ZXIvd2ViZHJpdmVyLXNwZWMuaHRtbCNkZm4tY29u
dGFpbmVyLgorICAgIGlmIChpczxXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkp
IHsKKyAgICAgICAgYXV0byYgb3B0aW9uRWxlbWVudCA9IGRvd25jYXN0PFdlYkNvcmU6OkhUTUxP
cHRpb25FbGVtZW50PihlbGVtZW50KTsKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAg
ICAgICAgaWYgKGF1dG8qIHBhcmVudEVsZW1lbnQgPSBvcHRpb25FbGVtZW50Lm93bmVyRGF0YUxp
c3RFbGVtZW50KCkpCisgICAgICAgICAgICByZXR1cm4gcGFyZW50RWxlbWVudDsKKyNlbmRpZgor
ICAgICAgICBpZiAoYXV0byogcGFyZW50RWxlbWVudCA9IG9wdGlvbkVsZW1lbnQub3duZXJTZWxl
Y3RFbGVtZW50KCkpCisgICAgICAgICAgICByZXR1cm4gcGFyZW50RWxlbWVudDsKKworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAoaXM8V2ViQ29yZTo6SFRNTE9wdEdy
b3VwRWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHBhcmVudEVsZW1lbnQg
PSBkb3duY2FzdDxXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50PihlbGVtZW50KS5vd25lclNl
bGVjdEVsZW1lbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBwYXJlbnRFbGVtZW50OworCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiAmZWxlbWVudDsKK30KKwog
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRlRWxlbWVudExheW91dCh1aW50
NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNj
cm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgdXNlVmlld3BvcnRDb29yZGluYXRlcywgdWludDY0
X3QgY2FsbGJhY2tJRCkKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewogICAgICAgICBTdHJpbmcg
d2luZG93Tm90Rm91bmRFcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
SGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6RXJyb3JNZXNzYWdlOjpXaW5kb3dOb3RGb3VuZCk7Ci0gICAgICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
YkF1dG9tYXRpb25TZXNzaW9uOjpEaWRDb21wdXRlRWxlbWVudExheW91dChjYWxsYmFja0lELCB7
IH0sIHN0ZDo6bnVsbG9wdCwgZmFsc2UsIHdpbmRvd05vdEZvdW5kRXJyb3JUeXBlKSwgMCk7Cisg
ICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRDb21wdXRlRWxlbWVudExh
eW91dChjYWxsYmFja0lELCB7IH0sIHN0ZDo6bnVsbG9wdCwgZmFsc2UsIGZhbHNlLCB3aW5kb3dO
b3RGb3VuZEVycm9yVHlwZSksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01MTcs
MTkgKzU0NiwyNCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmNvbXB1dGVFbGVt
ZW50TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZgogCiAgICAgV2ViRnJhbWUqIGZy
YW1lID0gZnJhbWVJRCA/IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQp
IDogcGFnZS0+bWFpbldlYkZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmNvcmVG
cmFtZSgpIHx8ICFmcmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKSkgewotICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQoY2FsbGJhY2tJ
RCwgeyB9LCBzdGQ6Om51bGxvcHQsIGZhbHNlLCBmcmFtZU5vdEZvdW5kRXJyb3JUeXBlKSwgMCk7
CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRDb21wdXRlRWxlbWVu
dExheW91dChjYWxsYmFja0lELCB7IH0sIHN0ZDo6bnVsbG9wdCwgZmFsc2UsIGZhbHNlLCBmcmFt
ZU5vdEZvdW5kRXJyb3JUeXBlKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBX
ZWJDb3JlOjpFbGVtZW50KiBjb3JlRWxlbWVudCA9IGVsZW1lbnRGb3JOb2RlSGFuZGxlKCpmcmFt
ZSwgbm9kZUhhbmRsZSk7CiAgICAgaWYgKCFjb3JlRWxlbWVudCkgewotICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQoY2FsbGJhY2tJ
RCwgeyB9LCBzdGQ6Om51bGxvcHQsIGZhbHNlLCBub2RlTm90Rm91bmRFcnJvclR5cGUpLCAwKTsK
KyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZENvbXB1dGVFbGVtZW50
TGF5b3V0KGNhbGxiYWNrSUQsIHsgfSwgc3RkOjpudWxsb3B0LCBmYWxzZSwgZmFsc2UsIG5vZGVO
b3RGb3VuZEVycm9yVHlwZSksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYg
KHNjcm9sbEludG9WaWV3SWZOZWVkZWQpIHsKKyAgICBib29sIGlzT3B0aW9uRWxlbWVudCA9IGlz
PFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50Pihjb3JlRWxlbWVudCkgfHwgaXM8V2ViQ29yZTo6
SFRNTE9wdEdyb3VwRWxlbWVudD4oY29yZUVsZW1lbnQpOworCisgICAgYXV0byogY29udGFpbmVy
RWxlbWVudCA9IGVsZW1lbnRDb250YWluZXIoKmNvcmVFbGVtZW50KTsKKyAgICBpZiAoc2Nyb2xs
SW50b1ZpZXdJZk5lZWRlZCAmJiBjb250YWluZXJFbGVtZW50KSB7CisgICAgICAgIC8vIMKnMTQu
MSBFbGVtZW50IENsaWNrLiBTdGVwIDQuIFNjcm9sbCBpbnRvIHZpZXcgdGhlIGVsZW1lbnTigJlz
IGNvbnRhaW5lci4KKyAgICAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmRyaXZlci93
ZWJkcml2ZXItc3BlYy5odG1sI2VsZW1lbnQtY2xpY2sKKyAgICAgICAgY29udGFpbmVyRWxlbWVu
dC0+c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChmYWxzZSk7CiAgICAgICAgIC8vIEZJWE1FOiBXYWl0
IGluIGFuIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIHdheSB1cCB0byB0aGUgc2Vzc2lvbiBpbXBs
aWNpdCB3YWl0IHRpbWVvdXQgZm9yIHRoZSBlbGVtZW50IHRvIGJlY29tZSBpbiB2aWV3LgotICAg
ICAgICBjb3JlRWxlbWVudC0+c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChmYWxzZSk7CiAgICAgfQog
CiAgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0ID0gY29yZUVsZW1lbnQtPmNsaWVudFJlY3QoKTsK
QEAgLTU0MiwxMyArNTc2LDYxIEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Y29t
cHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmCiAKICAgICBib29s
IGlzT2JzY3VyZWQgPSBmYWxzZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50
PiBpblZpZXdDZW50ZXI7Ci0gICAgaWYgKGF1dG8gY2xpZW50Q2VudGVyUG9pbnQgPSBlbGVtZW50
SW5WaWV3Q2xpZW50Q2VudGVyUG9pbnQoKmNvcmVFbGVtZW50LCBpc09ic2N1cmVkKSkgewotICAg
ICAgICBpblZpZXdDZW50ZXIgPSBXZWJDb3JlOjpJbnRQb2ludChjb3JlRnJhbWVWaWV3LT5jbGll
bnRUb0RvY3VtZW50UG9pbnQoY2xpZW50Q2VudGVyUG9pbnQudmFsdWUoKSkpOwotICAgICAgICBp
ZiAodXNlVmlld3BvcnRDb29yZGluYXRlcykKLSAgICAgICAgICAgIGluVmlld0NlbnRlciA9IGNv
cmVGcmFtZVZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhpblZpZXdDZW50ZXIudmFsdWUoKSk7Cisg
ICAgaWYgKGNvbnRhaW5lckVsZW1lbnQpIHsKKyAgICAgICAgaWYgKGF1dG8gY2xpZW50Q2VudGVy
UG9pbnQgPSBlbGVtZW50SW5WaWV3Q2xpZW50Q2VudGVyUG9pbnQoKmNvbnRhaW5lckVsZW1lbnQs
IGlzT2JzY3VyZWQpKSB7CisgICAgICAgICAgICBpblZpZXdDZW50ZXIgPSBXZWJDb3JlOjpJbnRQ
b2ludChjb3JlRnJhbWVWaWV3LT5jbGllbnRUb0RvY3VtZW50UG9pbnQoY2xpZW50Q2VudGVyUG9p
bnQudmFsdWUoKSkpOworICAgICAgICAgICAgaWYgKHVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMpCisg
ICAgICAgICAgICAgICAgaW5WaWV3Q2VudGVyID0gY29yZUZyYW1lVmlldy0+Y29udGVudHNUb1Jv
b3RWaWV3KGluVmlld0NlbnRlci52YWx1ZSgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRDb21wdXRlRWxlbWVudExheW91dChjYWxs
YmFja0lELCByZWN0LCBpblZpZXdDZW50ZXIsIGlzT2JzY3VyZWQsIGlzT3B0aW9uRWxlbWVudCwg
U3RyaW5nKCkpLCAwKTsKK30KKwordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzZWxl
Y3RPcHRpb25FbGVtZW50KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5n
IG5vZGVIYW5kbGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgV2ViUGFnZSogcGFnZSA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKKyAgICBpZiAoIXBhZ2Up
IHsKKyAgICAgICAgU3RyaW5nIHdpbmRvd05vdEZvdW5kRXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6V2luZG93Tm90Rm91bmQpOwor
ICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkU2VsZWN0T3B0aW9uRWxl
bWVudChjYWxsYmFja0lELCB3aW5kb3dOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgV2ViRnJhbWUqIGZyYW1lID0gZnJhbWVJRCA/IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpIDogcGFnZS0+bWFpbldlYkZyYW1lKCk7
CisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmNvcmVGcmFtZSgpIHx8ICFmcmFtZS0+Y29yZUZy
YW1lKCktPnZpZXcoKSkgeworICAgICAgICBTdHJpbmcgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRW
YWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OkZyYW1l
Tm90Rm91bmQpOworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkU2Vs
ZWN0T3B0aW9uRWxlbWVudChjYWxsYmFja0lELCBmcmFtZU5vdEZvdW5kRXJyb3JUeXBlKSwgMCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBXZWJDb3JlOjpFbGVtZW50KiBjb3JlRWxl
bWVudCA9IGVsZW1lbnRGb3JOb2RlSGFuZGxlKCpmcmFtZSwgbm9kZUhhbmRsZSk7CisgICAgaWYg
KCFjb3JlRWxlbWVudCB8fCAoIWlzPFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50Pihjb3JlRWxl
bWVudCkgJiYgIWlzPFdlYkNvcmU6OkhUTUxPcHRHcm91cEVsZW1lbnQ+KGNvcmVFbGVtZW50KSkp
IHsKKyAgICAgICAgU3RyaW5nIG5vZGVOb3RGb3VuZEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6Ok5vZGVOb3RGb3VuZCk7CisgICAg
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRTZWxlY3RPcHRpb25FbGVtZW50
KGNhbGxiYWNrSUQsIG5vZGVOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgU3RyaW5nIGVsZW1lbnROb3RJbnRlcmFjdGFibGVFcnJvclR5cGUgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFs
dWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpFbGVtZW50
Tm90SW50ZXJhY3RhYmxlKTsKKyAgICBpZiAoaXM8V2ViQ29yZTo6SFRNTE9wdEdyb3VwRWxlbWVu
dD4oY29yZUVsZW1lbnQpKSB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9u
OjpEaWRTZWxlY3RPcHRpb25FbGVtZW50KGNhbGxiYWNrSUQsIGVsZW1lbnROb3RJbnRlcmFjdGFi
bGVFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8mIG9w
dGlvbkVsZW1lbnQgPSBkb3duY2FzdDxXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudD4oKmNvcmVF
bGVtZW50KTsKKyAgICBhdXRvKiBzZWxlY3RFbGVtZW50ID0gb3B0aW9uRWxlbWVudC5vd25lclNl
bGVjdEVsZW1lbnQoKTsKKyAgICBpZiAoIXNlbGVjdEVsZW1lbnQpIHsKKyAgICAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFNlbGVjdE9wdGlvbkVsZW1lbnQoY2FsbGJhY2tJ
RCwgZWxlbWVudE5vdEludGVyYWN0YWJsZUVycm9yVHlwZSksIDApOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKHNlbGVjdEVsZW1lbnQtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgp
IHx8IG9wdGlvbkVsZW1lbnQuaXNEaXNhYmxlZEZvcm1Db250cm9sKCkpIHsKKyAgICAgICAgU3Ry
aW5nIGVsZW1lbnROb3RTZWxlY3RhYmxlRXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6RWxlbWVudE5vdFNlbGVjdGFibGUpOworICAg
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkU2VsZWN0T3B0aW9uRWxlbWVu
dChjYWxsYmFja0lELCBlbGVtZW50Tm90U2VsZWN0YWJsZUVycm9yVHlwZSksIDApOworICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRp
ZENvbXB1dGVFbGVtZW50TGF5b3V0KGNhbGxiYWNrSUQsIHJlY3QsIGluVmlld0NlbnRlciwgaXNP
YnNjdXJlZCwgU3RyaW5nKCkpLCAwKTsKKyAgICBzZWxlY3RFbGVtZW50LT5vcHRpb25TZWxlY3Rl
ZEJ5VXNlcihvcHRpb25FbGVtZW50LmluZGV4KCksIHRydWUsIHNlbGVjdEVsZW1lbnQtPm11bHRp
cGxlKCkpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRTZWxlY3RPcHRp
b25FbGVtZW50KGNhbGxiYWNrSUQsIHsgfSksIDApOwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHk6OnRha2VTY3JlZW5zaG90KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaAppbmRleCA0Yjk3OTQ0M2FjZS4u
ODQ1Njc0YmQ0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgKQEAgLTY1LDYgKzY1
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc29sdmVQYXJlbnRGcmFtZSh1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZm9j
dXNGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpOwogICAgIHZvaWQgY29t
cHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJp
bmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIHVzZVZpZXdw
b3J0Q29vcmRpbmF0ZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgc2VsZWN0T3B0
aW9uRWxlbWVudCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2Rl
SGFuZGxlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIHRha2VTY3JlZW5zaG90KHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBnZXRDb29raWVz
Rm9yRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxs
YmFja0lEKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90
IGZyYW1lSUQsIFN0cmluZyBjb29raWVOYW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDJkYWYyYTVk
NTYzLi45ZDQxMzFjODVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
Lm1lc3NhZ2VzLmluCkBAIC0zMiw2ICszMiw4IEBAIG1lc3NhZ2VzIC0+IFdlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHkgewogCiAgICAgQ29tcHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmll
d0lmTmVlZGVkLCBib29sIHVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCiAKKyAgICBTZWxlY3RPcHRpb25FbGVtZW50KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisKICAgICBU
YWtlU2NyZWVuc2hvdCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKICAg
ICBHZXRDb29raWVzRm9yRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBjYWxsYmFja0lEKQo=
</data>
<flag name="review"
          id="338109"
          type_id="1"
          status="-"
          setter="bburg"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318034</attachid>
            <date>2017-08-14 05:32:03 -0700</date>
            <delta_ts>2017-08-14 10:20:35 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>wd-option-click.diff</filename>
            <type>text/plain</type>
            <size>28571</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzZDQxNDE5MzJkYi4uZTc5NzU4YjdlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNy0wOC0xNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgV2ViRHJpdmVyOiBoYW5kbGUgY2xpY2sgZXZlbnRzIG9uIG9w
dGlvbiBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc0NzEwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMzQ1OTMwNT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvcnQgV2ViQ29yZSBz
eW1ib2xzIHJlcXVpcmVkIGJ5IFdlYktpdCBsYXllci4KKworICAgICAgICAqIGh0bWwvSFRNTE9w
dEdyb3VwRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaDoKKwog
MjAxNy0wOC0xNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAg
W1JlbmRlciBUcmVlIE11dGF0aW9uXSBGaXJzdCBsZXR0ZXIgc2hvdWxkIG5vdCBtdXRhdGUgdGhl
IHJlbmRlciB0cmVlIHdoaWxlIGluIGxheW91dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0
R3JvdXBFbGVtZW50LmgKaW5kZXggNmFhMTljOWYzOTUuLmQ0MmRmZWIyMWM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuaApAQCAtMzQsNyArMzQsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxIVE1MT3B0R3JvdXBFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICBib29sIGlzRGlzYWJsZWRGb3JtQ29udHJv
bCgpIGNvbnN0IGZpbmFsOwotICAgIEhUTUxTZWxlY3RFbGVtZW50KiBvd25lclNlbGVjdEVsZW1l
bnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBIVE1MU2VsZWN0RWxlbWVudCogb3duZXJT
ZWxlY3RFbGVtZW50KCkgY29uc3Q7CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGdy
b3VwTGFiZWxUZXh0KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9wdGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1l
bnQuaAppbmRleCA3MTJhMzEzMDM0ZS4uMjViZGM4ZTMzMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPcHRpb25FbGVtZW50LmgKQEAgLTQ5LDkgKzQ5LDkgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCk7CiAKICNpZiBFTkFCTEUoREFUQUxJU1Rf
RUxFTUVOVCkKLSAgICBIVE1MRGF0YUxpc3RFbGVtZW50KiBvd25lckRhdGFMaXN0RWxlbWVudCgp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEhUTUxEYXRhTGlzdEVsZW1lbnQqIG93bmVyRGF0
YUxpc3RFbGVtZW50KCkgY29uc3Q7CiAjZW5kaWYKLSAgICBIVE1MU2VsZWN0RWxlbWVudCogb3du
ZXJTZWxlY3RFbGVtZW50KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgSFRNTFNlbGVjdEVs
ZW1lbnQqIG93bmVyU2VsZWN0RWxlbWVudCgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIGxhYmVsKCkgY29uc3Q7CiAgICAgU3RyaW5nIGRpc3BsYXlMYWJlbCgpIGNvbnN0OwpA
QCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAKICAgICBib29sIG93bkVsZW1lbnREaXNhYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGlzYWJsZWQ7IH0KIAotICAgIGJvb2wgaXNEaXNhYmxlZEZvcm1D
b250cm9sKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0Rpc2FibGVk
Rm9ybUNvbnRyb2woKSBjb25zdCBmaW5hbDsKIAogICAgIFN0cmluZyB0ZXh0SW5kZW50ZWRUb1Jl
c3BlY3RHcm91cExhYmVsKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKaW5kZXggNzQ4NTRkNDcyOTYu
LmMyNTc0NGUwMzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA4LTE0
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBX
ZWJEcml2ZXI6IGhhbmRsZSBjbGljayBldmVudHMgb24gb3B0aW9uIGVsZW1lbnRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ3MTAKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzMzNDU5MzA1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE9wdGlvbiBlbGVtZW50cyBhcmUgY29uc2lkZXJlZCBhcyBhIHNw
ZWNpYWwgY2FzZSBieSB0aGUgc3BlY2lmaWNhdGlvbi4gV2hlbiBjbGlja2luZyBhbiBvcHRpb24g
ZWxlbWVudCwgd2UKKyAgICAgICAgc2hvdWxkIGdldCBpdHMgY29udGFpbmVyIGFuZCB1c2UgaXQg
d2hlbiBzY3JvbGxpbmcgaW50byB2aWV3IGFuZCBjYWxjdWxhdGluZyBpbi12aWV3IGNlbnRlciBw
b2ludCBpbnN0ZWFkIG9mIHRoZQorICAgICAgICBvcHRpb24gZWxlbWVudCBpdHNlbGYuIFRoZW4s
IHdlIHNob3VsZCBub3QgZW11bGF0ZSBhIGNsaWNrLCBidXQgY2hhbmdlIHRoZSBzZWxlY3RlZCBz
dGF0dXMgb2YgdGhlIG9wdGlvbiBlbGVtZW50CisgICAgICAgIGxpa2UgaWYgaXQgd2VyZSBkb25l
IGJ5IGEgdXNlciBhY3Rpb24sIGZpcmluZyB0aGUgY29ycmVzcG9uZGluZyBldmVudHMuIE5vdyB3
ZSBjaGVjayB3aGV0aGVyIHRoZSBlbGVtZW50IGlzIGFuCisgICAgICAgIG9wdGlvbiB0byBjYWxs
IHNlbGVjdE9wdGlvbkVsZW1lbnQoKSBvciBwZXJmb3JtTW91c2VJbnRlcmFjdGlvbigpLgorCisg
ICAgICAgIFRoaXMgZml4ZXMgbW9yZSB0aGFuIDIwIHNlbGVuaXVtIHRlc3RzLgorCisgICAgICAg
ICogQ29tbWFuZFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6OkNvbW1hbmRSZXN1bHQ6
OkNvbW1hbmRSZXN1bHQpOiBIYW5kbGUgRWxlbWVudE5vdFNlbGVjdGFibGUgcHJvdG9jb2wgZXJy
b3IuCisgICAgICAgIChXZWJEcml2ZXI6OkNvbW1hbmRSZXN1bHQ6Omh0dHBTdGF0dXNDb2RlIGNv
bnN0KTogQWRkIEVsZW1lbnROb3RTZWxlY3RhYmxlLgorICAgICAgICAoV2ViRHJpdmVyOjpDb21t
YW5kUmVzdWx0OjplcnJvclN0cmluZyBjb25zdCk6IERpdHRvLgorICAgICAgICAqIENvbW1hbmRS
ZXN1bHQuaDoKKyAgICAgICAgKiBTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vz
c2lvbjo6c2VsZWN0T3B0aW9uRWxlbWVudCk6IEFzayBhdXRvbWF0aW9uIHRvIHNlbGVjdCB0aGUg
Z2l2ZW4gb3B0aW9uIGVsZW1lbnQuCisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmVsZW1l
bnRDbGljayk6IENhbGwgc2VsZWN0T3B0aW9uRWxlbWVudCgpIG9yIHBlcmZvcm1Nb3VzZUludGVy
YWN0aW9uKCkgZGVwZW5kaW5nIG9uIHdoZXRoZXIKKyAgICAgICAgdGhlIGVsZW1lbnQgaXMgYW4g
b3B0aW9uIG9yIG5vdC4KKyAgICAgICAgKiBTZXNzaW9uLmg6CisKIDIwMTctMDgtMTEgIENhcmxv
cyBBbGJlcnRvIExvcGV6IFBlcmV6ICA8Y2xvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgRml4
IGJ1aWxkIHdhcm5pbmcgaW4gV2ViRHJpdmVyU2VydmljZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVz
dWx0LmNwcAppbmRleCBiZThjODE3NmE2Ni4uYTUzYmFjOTc5NjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9Db21t
YW5kUmVzdWx0LmNwcApAQCAtMTA2LDYgKzEwNiw4IEBAIENvbW1hbmRSZXN1bHQ6OkNvbW1hbmRS
ZXN1bHQoUmVmUHRyPEluc3BlY3RvclZhbHVlPiYmIHJlc3VsdCwgc3RkOjpvcHRpb25hbDxFcnJv
CiAgICAgICAgICAgICBtX2Vycm9yQ29kZSA9IEVycm9yQ29kZTo6VGltZW91dDsKICAgICAgICAg
ZWxzZSBpZiAoZXJyb3JOYW1lID09ICJOb0phdmFTY3JpcHREaWFsb2ciKQogICAgICAgICAgICAg
bV9lcnJvckNvZGUgPSBFcnJvckNvZGU6Ok5vU3VjaEFsZXJ0OworICAgICAgICBlbHNlIGlmIChl
cnJvck5hbWUgPT0gIkVsZW1lbnROb3RTZWxlY3RhYmxlIikKKyAgICAgICAgICAgIG1fZXJyb3JD
b2RlID0gRXJyb3JDb2RlOjpFbGVtZW50Tm90U2VsZWN0YWJsZTsKIAogICAgICAgICBicmVhazsK
ICAgICB9CkBAIC0xMjcsNiArMTI5LDcgQEAgdW5zaWduZWQgQ29tbWFuZFJlc3VsdDo6aHR0cFN0
YXR1c0NvZGUoKSBjb25zdAogICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJkcml2ZXIv
I2hhbmRsaW5nLWVycm9ycwogICAgIHN3aXRjaCAobV9lcnJvckNvZGUudmFsdWUoKSkgewogICAg
IGNhc2UgRXJyb3JDb2RlOjpFbGVtZW50Q2xpY2tJbnRlcmNlcHRlZDoKKyAgICBjYXNlIEVycm9y
Q29kZTo6RWxlbWVudE5vdFNlbGVjdGFibGU6CiAgICAgY2FzZSBFcnJvckNvZGU6OkVsZW1lbnRO
b3RJbnRlcmFjdGFibGU6CiAgICAgY2FzZSBFcnJvckNvZGU6OkludmFsaWRBcmd1bWVudDoKICAg
ICBjYXNlIEVycm9yQ29kZTo6SW52YWxpZEVsZW1lbnRTdGF0ZToKQEAgLTE2Miw2ICsxNjUsOCBA
QCBTdHJpbmcgQ29tbWFuZFJlc3VsdDo6ZXJyb3JTdHJpbmcoKSBjb25zdAogICAgIHN3aXRjaCAo
bV9lcnJvckNvZGUudmFsdWUoKSkgewogICAgIGNhc2UgRXJyb3JDb2RlOjpFbGVtZW50Q2xpY2tJ
bnRlcmNlcHRlZDoKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiZWxlbWVudCBjbGljayBp
bnRlcmNlcHRlZCIpOworICAgIGNhc2UgRXJyb3JDb2RlOjpFbGVtZW50Tm90U2VsZWN0YWJsZToK
KyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiZWxlbWVudCBub3Qgc2VsZWN0YWJsZSIpOwog
ICAgIGNhc2UgRXJyb3JDb2RlOjpFbGVtZW50Tm90SW50ZXJhY3RhYmxlOgogICAgICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsKCJlbGVtZW50IG5vdCBpbnRlcmFjdGFibGUiKTsKICAgICBjYXNlIEVy
cm9yQ29kZTo6SW52YWxpZEFyZ3VtZW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9D
b21tYW5kUmVzdWx0LmggYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuaAppbmRleCA4
YzNmYjg5N2JiMi4uN2Y3ODllNWEzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ29t
bWFuZFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5oCkBAIC00
MSw2ICs0MSw3IEBAIHB1YmxpYzoKICAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViZHJp
dmVyLyNoYW5kbGluZy1lcnJvcnMKICAgICBlbnVtIGNsYXNzIEVycm9yQ29kZSB7CiAgICAgICAg
IEVsZW1lbnRDbGlja0ludGVyY2VwdGVkLAorICAgICAgICBFbGVtZW50Tm90U2VsZWN0YWJsZSwK
ICAgICAgICAgRWxlbWVudE5vdEludGVyYWN0YWJsZSwKICAgICAgICAgSW52YWxpZEFyZ3VtZW50
LAogICAgICAgICBJbnZhbGlkRWxlbWVudFN0YXRlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRy
aXZlci9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggN2Vk
NTY5NjE5MTcuLmY3NDcxOGE0N2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Np
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKQEAgLTExOTEsNiArMTE5
MSwyMSBAQCB2b2lkIFNlc3Npb246OndhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZShGdW5jdGlv
bjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbQogICAgIH0pOwogfQogCit2b2lkIFNlc3Np
b246OnNlbGVjdE9wdGlvbkVsZW1lbnQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9u
PHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gcGFyYW1ldGVycyA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRl
KCk7CisgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgiYnJvd3NpbmdDb250
ZXh0SGFuZGxlIiksIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7CisgICAgcGFy
YW1ldGVycy0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgiZnJhbWVIYW5kbGUiKSwgbV9jdXJyZW50
QnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOworICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZyhBU0NJ
SUxpdGVyYWwoIm5vZGVIYW5kbGUiKSwgZWxlbWVudElEKTsKKyAgICBtX2hvc3QtPnNlbmRDb21t
YW5kVG9CYWNrZW5kKEFTQ0lJTGl0ZXJhbCgic2VsZWN0T3B0aW9uRWxlbWVudCIpLCBXVEZNb3Zl
KHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6
Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKKyAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJy
b3IpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwo
V1RGTW92ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkpKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpzdWNj
ZXNzKCkpOworICAgIH0pOworfQorCiB2b2lkIFNlc3Npb246OmVsZW1lbnRDbGljayhjb25zdCBT
dHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQpIHsK
QEAgLTEyMDAsNyArMTIxNSw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudENsaWNrKGNvbnN0IFN0
cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0CiAKICAgICBPcHRp
b25TZXQ8RWxlbWVudExheW91dE9wdGlvbj4gb3B0aW9ucyA9IEVsZW1lbnRMYXlvdXRPcHRpb246
OlNjcm9sbEludG9WaWV3SWZOZWVkZWQ7CiAgICAgb3B0aW9ucyB8PSBFbGVtZW50TGF5b3V0T3B0
aW9uOjpVc2VWaWV3cG9ydENvb3JkaW5hdGVzOwotICAgIGNvbXB1dGVFbGVtZW50TGF5b3V0KGVs
ZW1lbnRJRCwgb3B0aW9ucywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRp
b25hbDxSZWN0PiYmIHJlY3QsIHN0ZDo6b3B0aW9uYWw8UG9pbnQ+JiYgaW5WaWV3Q2VudGVyLCBi
b29sIGlzT2JzY3VyZWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgZXJyb3IpIG11dGFibGUg
eworICAgIGNvbXB1dGVFbGVtZW50TGF5b3V0KGVsZW1lbnRJRCwgb3B0aW9ucywgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZWxlbWVudElELCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShzdGQ6Om9wdGlvbmFsPFJlY3Q+JiYgcmVj
dCwgc3RkOjpvcHRpb25hbDxQb2ludD4mJiBpblZpZXdDZW50ZXIsIGJvb2wgaXNPYnNjdXJlZCwg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGlmICgh
cmVjdCB8fCBlcnJvcikgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJl
c3VsdDo6ZmFpbChXVEZNb3ZlKGVycm9yKSkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTIx
NCw5ICsxMjI5LDI3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudENsaWNrKGNvbnN0IFN0cmluZyYg
ZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICBwZXJmb3JtTW91c2VJbnRlcmFjdGlvbihpblZpZXdD
ZW50ZXIudmFsdWUoKS54LCBpblZpZXdDZW50ZXIudmFsdWUoKS55LCBNb3VzZUJ1dHRvbjo6TGVm
dCwgTW91c2VJbnRlcmFjdGlvbjo6U2luZ2xlQ2xpY2ssIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICAgICAgZ2V0RWxlbWVudFRhZ05hbWUoZWxlbWVudElELCBbdGhpcywgZWxlbWVu
dElELCBpblZpZXdDZW50ZXIgPSBXVEZNb3ZlKGluVmlld0NlbnRlciksIGlzT2JzY3VyZWQsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1
bHQmJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgYm9vbCBpc09wdGlvbkVsZW1lbnQg
PSBmYWxzZTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0LmlzRXJyb3IoKSkgeworICAgICAgICAg
ICAgICAgIFN0cmluZyB0YWdOYW1lOworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQucmVzdWx0
KCktPmFzU3RyaW5nKHRhZ05hbWUpKQorICAgICAgICAgICAgICAgICAgICBpc09wdGlvbkVsZW1l
bnQgPSB0YWdOYW1lID09ICJvcHRpb24iOworICAgICAgICAgICAgfQogCi0gICAgICAgIHdhaXRG
b3JOYXZpZ2F0aW9uVG9Db21wbGV0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAg
ICAgICAgICBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiBjb250aW51ZUFmdGVyQ2xp
Y2tGdW5jdGlvbiA9IFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAg
ICAgICBpZiAocmVzdWx0LmlzRXJyb3IoKSkgeworICAgICAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgd2FpdEZvck5hdmlnYXRpb25U
b0NvbXBsZXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgIH07Cisg
ICAgICAgICAgICBpZiAoaXNPcHRpb25FbGVtZW50KQorICAgICAgICAgICAgICAgIHNlbGVjdE9w
dGlvbkVsZW1lbnQoZWxlbWVudElELCBXVEZNb3ZlKGNvbnRpbnVlQWZ0ZXJDbGlja0Z1bmN0aW9u
KSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcGVyZm9ybU1vdXNlSW50ZXJh
Y3Rpb24oaW5WaWV3Q2VudGVyLnZhbHVlKCkueCwgaW5WaWV3Q2VudGVyLnZhbHVlKCkueSwgTW91
c2VCdXR0b246OkxlZnQsIE1vdXNlSW50ZXJhY3Rpb246OlNpbmdsZUNsaWNrLCBXVEZNb3ZlKGNv
bnRpbnVlQWZ0ZXJDbGlja0Z1bmN0aW9uKSk7CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJEcml2ZXIv
U2Vzc2lvbi5oCmluZGV4IDc1YjRhYjMwOWI5Li5jMzI1NWUyYzAwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkRyaXZlci9TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmgK
QEAgLTEzNyw2ICsxMzcsOCBAQCBwcml2YXRlOgogICAgIH07CiAgICAgdm9pZCBjb21wdXRlRWxl
bWVudExheW91dChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgT3B0aW9uU2V0PEVsZW1lbnRMYXlv
dXRPcHRpb24+LCBGdW5jdGlvbjx2b2lkIChzdGQ6Om9wdGlvbmFsPFJlY3Q+JiYsIHN0ZDo6b3B0
aW9uYWw8UG9pbnQ+JiYsIGJvb2wsIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4m
Jik+JiYpOwogCisgICAgdm9pZCBzZWxlY3RPcHRpb25FbGVtZW50KGNvbnN0IFN0cmluZyYgZWxl
bWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmKTsKKwogICAgIGVudW0g
Y2xhc3MgTW91c2VCdXR0b24geyBOb25lLCBMZWZ0LCBNaWRkbGUsIFJpZ2h0IH07CiAgICAgZW51
bSBjbGFzcyBNb3VzZUludGVyYWN0aW9uIHsgTW92ZSwgRG93biwgVXAsIFNpbmdsZUNsaWNrLCBE
b3VibGVDbGljayB9OwogICAgIHZvaWQgcGVyZm9ybU1vdXNlSW50ZXJhY3Rpb24oaW50IHgsIGlu
dCB5LCBNb3VzZUJ1dHRvbiwgTW91c2VJbnRlcmFjdGlvbiwgRnVuY3Rpb248dm9pZCAoQ29tbWFu
ZFJlc3VsdCYmKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRiZGMyY2JlZWZjLi4yNjZjMTQ2YzhlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxNy0wOC0xNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgV2ViRHJpdmVyOiBoYW5kbGUgY2xpY2sg
ZXZlbnRzIG9uIG9wdGlvbiBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NzEwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMzQ1OTMw
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
c2VsZWN0T3B0aW9uRWxlbWVudCBtZXRob2QgdG8gYXV0b21hdGlvbiB0byBzZWxlY3QgYW4gb3B0
aW9uIGVsZW1lbnQgYWNjb3JkaW5nIHRvIHRoZSBXZWJEcml2ZXIKKyAgICAgICAgc3BlY2lmaWNh
dGlvbi4KKworICAgICAgICAxNC4xIEVsZW1lbnQgQ2xpY2suCisgICAgICAgIGh0dHBzOi8vdzNj
LmdpdGh1Yi5pby93ZWJkcml2ZXIvd2ViZHJpdmVyLXNwZWMuaHRtbCNlbGVtZW50LWNsaWNrCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb246IEFkZCBzZWxl
Y3RPcHRpb25FbGVtZW50IG1ldGhvZCBhbmQgRWxlbWVudE5vdFNlbGVjdGFibGUgZXJyb3IuCisg
ICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2VsZWN0T3B0aW9uRWxlbWVu
dCk6U2VuZCBTZWxlY3RPcHRpb25FbGVtZW50IG1lc3NhZ2UgdG8gdGhlIHdlYiBwcm9jZXNzLgor
ICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlkU2VsZWN0T3B0aW9uRWxl
bWVudCk6IE5vdGlmeSB0aGUgZHJpdmVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW46IEFkZCBEaWRTZWxlY3RPcHRpb25FbGVt
ZW50IG1lc3NhZ2UuCisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjplbGVtZW50Q29udGFpbmVyKTog
SGVscGVyIHRvIGdldCB0aGUgY29udGFpbmVyIG9mIGFuIGVsZW1lbnQgYWNjb3JkaW5nIHRvIHRo
ZSBzcGVjLgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21w
dXRlRWxlbWVudExheW91dCk6IFVzZSB0aGUgY29udGFpbmVyIGVsZW1lbnQgdG8gc2Nyb2xsIHRo
ZSB2aWV3IGFuZAorICAgICAgICBjb21wdXRlIHRoZSBpbi12aWV3IGNlbnRlciBwb2ludC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6c2VsZWN0T3B0aW9uRWxl
bWVudCk6IFVzZSBIVE1MU2VsZWN0RWxlbWVudDo6b3B0aW9uU2VsZWN0ZWRCeVVzZXIoKS4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5Lm1lc3NhZ2VzLmluOiBBZGQgU2VsZWN0T3B0aW9uRWxlbWVudCBtZXNzYWdlLgorCiAyMDE3
LTA4LTE0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1RLXVtXUEVdIENyYXNoIGluIEljb25EYXRhYmFzZTo6SWNvblJlY29yZDo6c2V0SW1h
Z2VEYXRhKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
QXV0b21hdGlvbi5qc29uIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRv
bWF0aW9uLmpzb24KaW5kZXggMjEzNjZjMjRlMWUuLmQyZjkyOTQ1MTEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbgorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbgpAQCAtNTks
NyArNTksOCBAQAogICAgICAgICAgICAgICAgICJNaXNzaW5nUGFyYW1ldGVyIiwKICAgICAgICAg
ICAgICAgICAiSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICAgIkludmFsaWRTZWxl
Y3RvciIsCi0gICAgICAgICAgICAgICAgIkVsZW1lbnROb3RJbnRlcmFjdGFibGUiCisgICAgICAg
ICAgICAgICAgIkVsZW1lbnROb3RJbnRlcmFjdGFibGUiLAorICAgICAgICAgICAgICAgICJFbGVt
ZW50Tm90U2VsZWN0YWJsZSIKICAgICAgICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewpA
QCAtNDI5LDYgKzQzMCwxNiBAQAogICAgICAgICAgICAgXSwKICAgICAgICAgICAgICJhc3luYyI6
IHRydWUKICAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAic2VsZWN0
T3B0aW9uRWxlbWVudCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2VsZWN0cyB0aGUg
Z2l2ZW4gb3B0aW9uIGVsZW1lbnQuIEluIGNhc2Ugb2YgY29udGFpbmVyIHdpdGggbXVsdGlwbGUg
b3B0aW9ucyBlbmFibGVkLCB0aGUgZWxlbWVudCBzZWxlY3RlZG5lc3MgaXMgdG9nZ2xlZC4iLAor
ICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJi
cm93c2luZ0NvbnRleHRIYW5kbGUiLCAiJHJlZiI6ICJCcm93c2luZ0NvbnRleHRIYW5kbGUiLCAi
ZGVzY3JpcHRpb24iOiAiVGhlIGhhbmRsZSBmb3IgdGhlIGJyb3dzaW5nIGNvbnRleHQuIiB9LAor
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZnJhbWVIYW5kbGUiLCAiJHJlZiI6ICJGcmFtZUhh
bmRsZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgaGFuZGxlIGZvciB0aGUgZnJhbWUgdGhhdCBjb250
YWlucyB0aGUgZWxlbWVudC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJub2RlSGFu
ZGxlIiwgIiRyZWYiOiAiTm9kZUhhbmRsZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgaGFuZGxlIG9m
IHRoZSBlbGVtZW50IHRvIHVzZS4iIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiYXN5
bmMiOiB0cnVlCisgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjogImlz
U2hvd2luZ0phdmFTY3JpcHREaWFsb2ciLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNo
ZWNrcyBpZiBhIGJyb3dzaW5nIGNvbnRleHQgaXMgc2hvd2luZyBhIEphdmFTY3JpcHQgYWxlcnQs
IGNvbmZpcm0sIG9yIHByb21wdCBkaWFsb2cuIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXgg
YzhhZDVhMWY0NGIuLjg3ZjAwNGUwZGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtODQ1
LDYgKzg0NSwzNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRDb21wdXRlRWxlbWVu
dExheW91dCh1aW50NjRfdCBjYWxsYmFja0lELCBXZWJDb3JlOgogICAgIGNhbGxiYWNrLT5zZW5k
U3VjY2VzcyhXVEZNb3ZlKHJlY3RPYmplY3QpLCBXVEZNb3ZlKGluVmlld0NlbnRlclBvaW50T2Jq
ZWN0KSwgaXNPYnNjdXJlZCk7CiB9CiAKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnNlbGVj
dE9wdGlvbkVsZW1lbnQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcmIGZyYW1lSGFuZGxl
LCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIFJlZjxTZWxlY3RPcHRpb25FbGVtZW50Q2FsbGJh
Y2s+JiYgY2FsbGJhY2spCit7CisgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5
Rm9ySGFuZGxlKGJyb3dzaW5nQ29udGV4dEhhbmRsZSk7CisgICAgaWYgKCFwYWdlKQorICAgICAg
ICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CisKKyAgICBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEID0gd2ViRnJhbWVJREZvckhhbmRsZShmcmFtZUhh
bmRsZSk7CisgICAgaWYgKCFmcmFtZUlEKQorICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9F
UlJPUihGcmFtZU5vdEZvdW5kKTsKKworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX25leHRT
ZWxlY3RPcHRpb25FbGVtZW50Q2FsbGJhY2tJRCsrOworICAgIG1fc2VsZWN0T3B0aW9uRWxlbWVu
dENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOworCisgICAgcGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OlNl
bGVjdE9wdGlvbkVsZW1lbnQocGFnZS0+cGFnZUlEKCksIGZyYW1lSUQudmFsdWUoKSwgbm9kZUhh
bmRsZSwgY2FsbGJhY2tJRCksIDApOworfQorCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpk
aWRTZWxlY3RPcHRpb25FbGVtZW50KHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFN0cmluZyYg
ZXJyb3JUeXBlKQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBtX3NlbGVjdE9wdGlvbkVsZW1lbnRD
YWxsYmFja3MudGFrZShjYWxsYmFja0lEKTsKKyAgICBpZiAoIWNhbGxiYWNrKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoIWVycm9yVHlwZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgY2FsbGJh
Y2stPnNlbmRGYWlsdXJlKFNUUklOR19GT1JfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKGVycm9y
VHlwZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FsbGJhY2stPnNlbmRTdWNj
ZXNzKCk7Cit9CisKKwogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aXNTaG93aW5nSmF2YVNj
cmlwdERpYWxvZyhJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGJvb2wqIHJlc3VsdCkKIHsKICAgICBBU1NFUlQo
bV9jbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCmluZGV4IDk1Mjc1YzY5NDE4Li4wOTZkNTI1ZWVj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uaApAQCAtMTMzLDYgKzEzMyw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlc29sdmVDaGlsZEZyYW1lSGFuZGxlKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbEZy
YW1lSGFuZGxlLCBjb25zdCBpbnQqIG9wdGlvbmFsT3JkaW5hbCwgY29uc3QgU3RyaW5nKiBvcHRp
b25hbE5hbWUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxOb2RlSGFuZGxlLCBSZWY8UmVzb2x2ZUNo
aWxkRnJhbWVIYW5kbGVDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNvbHZlUGFy
ZW50RnJhbWVIYW5kbGUoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJv
d3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcmIGZyYW1lSGFuZGxlLCBSZWY8UmVzb2x2
ZVBhcmVudEZyYW1lSGFuZGxlQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcHV0
ZUVsZW1lbnRMYXlvdXQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJv
d3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcmIGZyYW1lSGFuZGxlLCBjb25zdCBTdHJp
bmcmIG5vZGVIYW5kbGUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsU2Nyb2xsSW50b1ZpZXdJZk5lZWRl
ZCwgY29uc3QgYm9vbCogdXNlVmlld3BvcnRDb29yZGluYXRlcywgUmVmPEluc3BlY3Rvcjo6QXV0
b21hdGlvbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6Q29tcHV0ZUVsZW1lbnRMYXlvdXRDYWxs
YmFjaz4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZWxlY3RPcHRpb25FbGVtZW50KEluc3BlY3Rv
cjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29u
c3QgU3RyaW5nJiBmcmFtZUhhbmRsZSwgY29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCBSZWY8SW5z
cGVjdG9yOjpBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpTZWxlY3RPcHRpb25F
bGVtZW50Q2FsbGJhY2s+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgaXNTaG93aW5nSmF2YVNjcmlw
dERpYWxvZyhJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBicm93c2luZ0Nv
bnRleHRIYW5kbGUsIGJvb2wqIHJlc3VsdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNtaXNzQ3Vy
cmVudEphdmFTY3JpcHREaWFsb2coSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlKSBvdmVycmlkZTsKICAgICB2b2lkIGFjY2VwdEN1cnJl
bnRKYXZhU2NyaXB0RGlhbG9nKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IGJyb3dzaW5nQ29udGV4dEhhbmRsZSkgb3ZlcnJpZGU7CkBAIC0xNzYsNiArMTc3LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpZFJlc29sdmVDaGlsZEZyYW1lKHVpbnQ2NF90IGNhbGxiYWNrSUQs
IHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKTsKICAgICB2b2lkIGRp
ZFJlc29sdmVQYXJlbnRGcmFtZSh1aW50NjRfdCBjYWxsYmFja0lELCB1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSk7CiAgICAgdm9pZCBkaWRDb21wdXRlRWxlbWVudExh
eW91dCh1aW50NjRfdCBjYWxsYmFja0lELCBXZWJDb3JlOjpJbnRSZWN0LCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkludFBvaW50PiwgYm9vbCBpc09ic2N1cmVkLCBjb25zdCBTdHJpbmcmIGVycm9y
VHlwZSk7CisgICAgdm9pZCBkaWRTZWxlY3RPcHRpb25FbGVtZW50KHVpbnQ2NF90IGNhbGxiYWNr
SUQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKTsKICAgICB2b2lkIGRpZFRha2VTY3JlZW5zaG90
KHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgY29u
c3QgU3RyaW5nJiBlcnJvclR5cGUpOwogICAgIHZvaWQgZGlkR2V0Q29va2llc0ZvckZyYW1lKHVp
bnQ2NF90IGNhbGxiYWNrSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+LCBjb25zdCBTdHJpbmcm
IGVycm9yVHlwZSk7CiAgICAgdm9pZCBkaWREZWxldGVDb29raWUodWludDY0X3QgY2FsbGJhY2tJ
RCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpOwpAQCAtMjQxLDYgKzI0Myw5IEBAIHByaXZhdGU6
CiAgICAgdWludDY0X3QgbV9uZXh0RGVsZXRlQ29va2llQ2FsbGJhY2tJRCB7IDEgfTsKICAgICBI
YXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyOjpEZWxldGVTaW5nbGVDb29raWVDYWxsYmFjaz4+IG1fZGVsZXRlQ29va2ll
Q2FsbGJhY2tzOwogCisgICAgdWludDY0X3QgbV9uZXh0U2VsZWN0T3B0aW9uRWxlbWVudENhbGxi
YWNrSUQgeyAxIH07CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QXV0
b21hdGlvbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6U2VsZWN0T3B0aW9uRWxlbWVudENhbGxi
YWNrPj4gbV9zZWxlY3RPcHRpb25FbGVtZW50Q2FsbGJhY2tzOworCiAgICAgUnVuTG9vcDo6VGlt
ZXI8V2ViQXV0b21hdGlvblNlc3Npb24+IG1fbG9hZFRpbWVyOwogICAgIFZlY3RvcjxTdHJpbmc+
IG1fZmlsZXNUb1NlbGVjdEZvckZpbGVVcGxvYWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
Lm1lc3NhZ2VzLmluCmluZGV4IGYzOGFjOTUzZjYxLi5iYzQ3M2I2ZTAxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uLm1lc3NhZ2VzLmluCkBAIC0yOCw2ICsyOCw4IEBAIG1lc3NhZ2VzIC0+
IFdlYkF1dG9tYXRpb25TZXNzaW9uIHsKIAogICAgIERpZENvbXB1dGVFbGVtZW50TGF5b3V0KHVp
bnQ2NF90IGNhbGxiYWNrSUQsIFdlYkNvcmU6OkludFJlY3QgcmVjdCwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpJbnRQb2ludD4gaW5WaWV3Q2VudGVyUG9pbnQsIGJvb2wgaXNPYnNjdXJlZCwgU3Ry
aW5nIGVycm9yVHlwZSkKIAorICAgIERpZFNlbGVjdE9wdGlvbkVsZW1lbnQodWludDY0X3QgY2Fs
bGJhY2tJRCwgU3RyaW5nIGVycm9yVHlwZSkKKwogICAgIERpZFRha2VTY3JlZW5zaG90KHVpbnQ2
NF90IGNhbGxiYWNrSUQsIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaW1hZ2VEYXRh
SGFuZGxlLCBTdHJpbmcgZXJyb3JUeXBlKQogCiAgICAgRGlkR2V0Q29va2llc0ZvckZyYW1lKHVp
bnQ2NF90IGNhbGxiYWNrSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMsIFN0cmlu
ZyBlcnJvclR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCmluZGV4IDUyZDM0
N2QzN2YwLi42OTU0OTM2MzcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAK
QEAgLTQ4LDYgKzQ4LDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVHJlZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MRnJhbWVFbGVt
ZW50QmFzZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSFRNTE9wdEdyb3VwRWxlbWVudC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvSFRNTE9wdGlvbkVsZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0hU
TUxTZWxlY3RFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9KU0VsZW1lbnQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL01haW5GcmFtZS5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+CkBAIC01MDMs
NiArNTA2LDMyIEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+IGVs
ZW1lbnRJblZpZXdDbGllbnRDZW50ZXJQb2ludChXZWJDb3JlCiAgICAgcmV0dXJuIGNsaWVudENl
bnRlclBvaW50OwogfQogCitzdGF0aWMgV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudENvbnRhaW5l
cihXZWJDb3JlOjpFbGVtZW50JiBlbGVtZW50KQoreworICAgIC8vIMKnMTMuIEVsZW1lbnQgU3Rh
dGUuCisgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmRyaXZlci93ZWJkcml2ZXItc3Bl
Yy5odG1sI2Rmbi1jb250YWluZXIuCisgICAgaWYgKGlzPFdlYkNvcmU6OkhUTUxPcHRpb25FbGVt
ZW50PihlbGVtZW50KSkgeworICAgICAgICBhdXRvJiBvcHRpb25FbGVtZW50ID0gZG93bmNhc3Q8
V2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpOworI2lmIEVOQUJMRShEQVRBTElT
VF9FTEVNRU5UKQorICAgICAgICBpZiAoYXV0byogcGFyZW50RWxlbWVudCA9IG9wdGlvbkVsZW1l
bnQub3duZXJEYXRhTGlzdEVsZW1lbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBwYXJlbnRFbGVt
ZW50OworI2VuZGlmCisgICAgICAgIGlmIChhdXRvKiBwYXJlbnRFbGVtZW50ID0gb3B0aW9uRWxl
bWVudC5vd25lclNlbGVjdEVsZW1lbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBwYXJlbnRFbGVt
ZW50OworCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGlmIChpczxXZWJD
b3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50PihlbGVtZW50KSkgeworICAgICAgICBpZiAoYXV0byog
cGFyZW50RWxlbWVudCA9IGRvd25jYXN0PFdlYkNvcmU6OkhUTUxPcHRHcm91cEVsZW1lbnQ+KGVs
ZW1lbnQpLm93bmVyU2VsZWN0RWxlbWVudCgpKQorICAgICAgICAgICAgcmV0dXJuIHBhcmVudEVs
ZW1lbnQ7CisKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuICZl
bGVtZW50OworfQorCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmNvbXB1dGVFbGVt
ZW50TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVI
YW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCB1c2VWaWV3cG9ydENvb3Jk
aW5hdGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CkBAIC01MjcsOSArNTU2LDEyIEBA
IHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQodWlu
dDY0X3QgcGFnZUlELCB1aW50NjRfdCBmCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBp
ZiAoc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCkgeworICAgIGF1dG8qIGNvbnRhaW5lckVsZW1lbnQg
PSBlbGVtZW50Q29udGFpbmVyKCpjb3JlRWxlbWVudCk7CisgICAgaWYgKHNjcm9sbEludG9WaWV3
SWZOZWVkZWQgJiYgY29udGFpbmVyRWxlbWVudCkgeworICAgICAgICAvLyDCpzE0LjEgRWxlbWVu
dCBDbGljay4gU3RlcCA0LiBTY3JvbGwgaW50byB2aWV3IHRoZSBlbGVtZW504oCZcyBjb250YWlu
ZXIuCisgICAgICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJkcml2ZXIvd2ViZHJpdmVy
LXNwZWMuaHRtbCNlbGVtZW50LWNsaWNrCisgICAgICAgIGNvbnRhaW5lckVsZW1lbnQtPnNjcm9s
bEludG9WaWV3SWZOZWVkZWQoZmFsc2UpOwogICAgICAgICAvLyBGSVhNRTogV2FpdCBpbiBhbiBp
bXBsZW1lbnRhdGlvbi1zcGVjaWZpYyB3YXkgdXAgdG8gdGhlIHNlc3Npb24gaW1wbGljaXQgd2Fp
dCB0aW1lb3V0IGZvciB0aGUgZWxlbWVudCB0byBiZWNvbWUgaW4gdmlldy4KLSAgICAgICAgY29y
ZUVsZW1lbnQtPnNjcm9sbEludG9WaWV3SWZOZWVkZWQoZmFsc2UpOwogICAgIH0KIAogICAgIFdl
YkNvcmU6OkludFJlY3QgcmVjdCA9IGNvcmVFbGVtZW50LT5jbGllbnRSZWN0KCk7CkBAIC01NDIs
MTUgKzU3NCw2NSBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmNvbXB1dGVFbGVt
ZW50TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZgogCiAgICAgYm9vbCBpc09ic2N1
cmVkID0gZmFsc2U7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gaW5WaWV3
Q2VudGVyOwotICAgIGlmIChhdXRvIGNsaWVudENlbnRlclBvaW50ID0gZWxlbWVudEluVmlld0Ns
aWVudENlbnRlclBvaW50KCpjb3JlRWxlbWVudCwgaXNPYnNjdXJlZCkpIHsKLSAgICAgICAgaW5W
aWV3Q2VudGVyID0gV2ViQ29yZTo6SW50UG9pbnQoY29yZUZyYW1lVmlldy0+Y2xpZW50VG9Eb2N1
bWVudFBvaW50KGNsaWVudENlbnRlclBvaW50LnZhbHVlKCkpKTsKLSAgICAgICAgaWYgKHVzZVZp
ZXdwb3J0Q29vcmRpbmF0ZXMpCi0gICAgICAgICAgICBpblZpZXdDZW50ZXIgPSBjb3JlRnJhbWVW
aWV3LT5jb250ZW50c1RvUm9vdFZpZXcoaW5WaWV3Q2VudGVyLnZhbHVlKCkpOworICAgIGlmIChj
b250YWluZXJFbGVtZW50KSB7CisgICAgICAgIGlmIChhdXRvIGNsaWVudENlbnRlclBvaW50ID0g
ZWxlbWVudEluVmlld0NsaWVudENlbnRlclBvaW50KCpjb250YWluZXJFbGVtZW50LCBpc09ic2N1
cmVkKSkgeworICAgICAgICAgICAgaW5WaWV3Q2VudGVyID0gV2ViQ29yZTo6SW50UG9pbnQoY29y
ZUZyYW1lVmlldy0+Y2xpZW50VG9Eb2N1bWVudFBvaW50KGNsaWVudENlbnRlclBvaW50LnZhbHVl
KCkpKTsKKyAgICAgICAgICAgIGlmICh1c2VWaWV3cG9ydENvb3JkaW5hdGVzKQorICAgICAgICAg
ICAgICAgIGluVmlld0NlbnRlciA9IGNvcmVGcmFtZVZpZXctPmNvbnRlbnRzVG9Sb290Vmlldyhp
blZpZXdDZW50ZXIudmFsdWUoKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQoY2FsbGJhY2tJRCwg
cmVjdCwgaW5WaWV3Q2VudGVyLCBpc09ic2N1cmVkLCBTdHJpbmcoKSksIDApOwogfQogCit2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnNlbGVjdE9wdGlvbkVsZW1lbnQodWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKK3sKKyAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViUGFnZShwYWdlSUQpOworICAgIGlmICghcGFnZSkgeworICAgICAgICBTdHJpbmcgd2luZG93
Tm90Rm91bmRFcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVy
czo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
RXJyb3JNZXNzYWdlOjpXaW5kb3dOb3RGb3VuZCk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9t
YXRpb25TZXNzaW9uOjpEaWRTZWxlY3RPcHRpb25FbGVtZW50KGNhbGxiYWNrSUQsIHdpbmRvd05v
dEZvdW5kRXJyb3JUeXBlKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBXZWJG
cmFtZSogZnJhbWUgPSBmcmFtZUlEID8gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUo
ZnJhbWVJRCkgOiBwYWdlLT5tYWluV2ViRnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFt
ZS0+Y29yZUZyYW1lKCkgfHwgIWZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpKSB7CisgICAgICAg
IFN0cmluZyBmcmFtZU5vdEZvdW5kRXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6RnJhbWVOb3RGb3VuZCk7CisgICAgICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRTZWxlY3RPcHRpb25FbGVtZW50KGNhbGxiYWNr
SUQsIGZyYW1lTm90Rm91bmRFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIFdlYkNvcmU6OkVsZW1lbnQqIGNvcmVFbGVtZW50ID0gZWxlbWVudEZvck5vZGVIYW5k
bGUoKmZyYW1lLCBub2RlSGFuZGxlKTsKKyAgICBpZiAoIWNvcmVFbGVtZW50IHx8ICghaXM8V2Vi
Q29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ+KGNvcmVFbGVtZW50KSAmJiAhaXM8V2ViQ29yZTo6SFRN
TE9wdEdyb3VwRWxlbWVudD4oY29yZUVsZW1lbnQpKSkgeworICAgICAgICBTdHJpbmcgbm9kZU5v
dEZvdW5kRXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6
OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVy
cm9yTWVzc2FnZTo6Tm9kZU5vdEZvdW5kKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlv
blNlc3Npb246OkRpZFNlbGVjdE9wdGlvbkVsZW1lbnQoY2FsbGJhY2tJRCwgbm9kZU5vdEZvdW5k
RXJyb3JUeXBlKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTdHJpbmcgZWxl
bWVudE5vdEludGVyYWN0YWJsZUVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OkVsZW1lbnROb3RJbnRlcmFjdGFibGUpOworICAgIGlm
IChpczxXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50Pihjb3JlRWxlbWVudCkpIHsKKyAgICAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFNlbGVjdE9wdGlvbkVsZW1lbnQo
Y2FsbGJhY2tJRCwgZWxlbWVudE5vdEludGVyYWN0YWJsZUVycm9yVHlwZSksIDApOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgYXV0byYgb3B0aW9uRWxlbWVudCA9IGRvd25jYXN0PFdl
YkNvcmU6OkhUTUxPcHRpb25FbGVtZW50PigqY29yZUVsZW1lbnQpOworICAgIGF1dG8qIHNlbGVj
dEVsZW1lbnQgPSBvcHRpb25FbGVtZW50Lm93bmVyU2VsZWN0RWxlbWVudCgpOworICAgIGlmICgh
c2VsZWN0RWxlbWVudCkgeworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
RGlkU2VsZWN0T3B0aW9uRWxlbWVudChjYWxsYmFja0lELCBlbGVtZW50Tm90SW50ZXJhY3RhYmxl
RXJyb3JUeXBlKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc2VsZWN0
RWxlbWVudC0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkgfHwgb3B0aW9uRWxlbWVudC5pc0Rpc2Fi
bGVkRm9ybUNvbnRyb2woKSkgeworICAgICAgICBTdHJpbmcgZWxlbWVudE5vdFNlbGVjdGFibGVF
cnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51
bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNz
YWdlOjpFbGVtZW50Tm90U2VsZWN0YWJsZSk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRp
b25TZXNzaW9uOjpEaWRTZWxlY3RPcHRpb25FbGVtZW50KGNhbGxiYWNrSUQsIGVsZW1lbnROb3RT
ZWxlY3RhYmxlRXJyb3JUeXBlKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAv
LyBGSVhNRTogQWNjb3JkaW5nIHRvIHRoZSBzcGVjIHdlIHNob3VsZCBmaXJlIG1vdXNlIG92ZXIs
IG1vdmUgYW5kIGRvd24gZXZlbnRzLCB0aGVuIGlucHV0IGFuZCBjaGFuZ2UsIGFuZCBmaW5hbGx5
IG1vdXNlIHVwIGFuZCBjbGljay4KKyAgICAvLyBvcHRpb25TZWxlY3RlZEJ5VXNlcigpIHdpbGwg
ZmlyZSBpbnB1dCBhbmQgY2hhbmdlIGV2ZW50cyBpZiBuZWVkZWQsIGJ1dCBhbGwgb3RoZXIgZXZl
bnRzIHNob3VsZCBiZSBmaXJlZCBtYW51YWxseSBoZXJlLgorICAgIHNlbGVjdEVsZW1lbnQtPm9w
dGlvblNlbGVjdGVkQnlVc2VyKG9wdGlvbkVsZW1lbnQuaW5kZXgoKSwgdHJ1ZSwgc2VsZWN0RWxl
bWVudC0+bXVsdGlwbGUoKSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRp
ZFNlbGVjdE9wdGlvbkVsZW1lbnQoY2FsbGJhY2tJRCwgeyB9KSwgMCk7Cit9CisKIHZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eTo6dGFrZVNjcmVlbnNob3QodWludDY0X3QgcGFnZUlELCB1
aW50NjRfdCBjYWxsYmFja0lEKQogewogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRs
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaAppbmRleCA0Yjk3OTQ0M2FjZS4uODQ1Njc0
YmQ0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgKQEAgLTY1LDYgKzY1LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHJlc29sdmVQYXJlbnRGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZm9jdXNGcmFt
ZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpOwogICAgIHZvaWQgY29tcHV0ZUVs
ZW1lbnRMYXlvdXQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9k
ZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIHVzZVZpZXdwb3J0Q29v
cmRpbmF0ZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgc2VsZWN0T3B0aW9uRWxl
bWVudCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxl
LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIHRha2VTY3JlZW5zaG90KHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBnZXRDb29raWVzRm9yRnJh
bWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lE
KTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIFN0cmluZyBjb29raWVOYW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDJkYWYyYTVkNTYzLi45
ZDQxMzFjODVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3Nh
Z2VzLmluCkBAIC0zMiw2ICszMiw4IEBAIG1lc3NhZ2VzIC0+IFdlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHkgewogCiAgICAgQ29tcHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVl
ZGVkLCBib29sIHVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAK
KyAgICBTZWxlY3RPcHRpb25FbGVtZW50KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJ
RCwgU3RyaW5nIG5vZGVIYW5kbGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisKICAgICBUYWtlU2Ny
ZWVuc2hvdCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKICAgICBHZXRD
b29raWVzRm9yRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBjYWxsYmFja0lEKQo=
</data>
<flag name="review"
          id="338499"
          type_id="1"
          status="+"
          setter="bburg"
    />
          </attachment>
      

    </bug>

</bugzilla>