<?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>125737</bug_id>
          
          <creation_ts>2013-12-14 04:14:35 -0800</creation_ts>
          <short_desc>Page::theme() should return a reference.</short_desc>
          <delta_ts>2013-12-14 10:55:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>959821</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-12-14 04:14:35 -0800</bug_when>
    <thetext>Page::theme() should return a reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959822</commentid>
    <comment_count>1</comment_count>
      <attachid>219248</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-12-14 04:21:15 -0800</bug_when>
    <thetext>Created attachment 219248
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959823</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-14 04:22:32 -0800</bug_when>
    <thetext>Attachment 219248 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/accessibility/AccessibilityObject.cpp&apos;, u&apos;Source/WebCore/css/CSSParser.cpp&apos;, u&apos;Source/WebCore/dom/Element.cpp&apos;, u&apos;Source/WebCore/editing/FrameSelection.cpp&apos;, u&apos;Source/WebCore/html/HTMLFormControlElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLInputElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMeterElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLOptionElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLSelectElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLTextFormControlElement.cpp&apos;, u&apos;Source/WebCore/html/InputType.cpp&apos;, u&apos;Source/WebCore/html/TextFieldInputType.cpp&apos;, u&apos;Source/WebCore/html/shadow/MediaControlElements.cpp&apos;, u&apos;Source/WebCore/html/shadow/MediaControls.cpp&apos;, u&apos;Source/WebCore/html/shadow/MediaControlsApple.cpp&apos;, u&apos;Source/WebCore/html/shadow/MediaControlsGtk.cpp&apos;, u&apos;Source/WebCore/html/shadow/MeterShadowElement.cpp&apos;, u&apos;Source/WebCore/html/shadow/SliderThumbElement.cpp&apos;, u&apos;Source/WebCore/page/FrameView.cpp&apos;, u&apos;Source/WebCore/page/Page.h&apos;, u&apos;Source/WebCore/rendering/InlineTextBox.cpp&apos;, u&apos;Source/WebCore/rendering/RenderBlock.cpp&apos;, u&apos;Source/WebCore/rendering/RenderBox.cpp&apos;, u&apos;Source/WebCore/rendering/RenderButton.cpp&apos;, u&apos;Source/WebCore/rendering/RenderFileUploadControl.cpp&apos;, u&apos;Source/WebCore/rendering/RenderFlowThread.cpp&apos;, u&apos;Source/WebCore/rendering/RenderInline.cpp&apos;, u&apos;Source/WebCore/rendering/RenderListBox.cpp&apos;, u&apos;Source/WebCore/rendering/RenderMediaControlElements.cpp&apos;, u&apos;Source/WebCore/rendering/RenderMenuList.cpp&apos;, u&apos;Source/WebCore/rendering/RenderMeter.cpp&apos;, u&apos;Source/WebCore/rendering/RenderObject.cpp&apos;, u&apos;Source/WebCore/rendering/RenderObject.h&apos;, u&apos;Source/WebCore/rendering/RenderProgress.cpp&apos;, u&apos;Source/WebCore/rendering/RenderTextControl.cpp&apos;, u&apos;Source/WebCore/rendering/RenderTextControlSingleLine.cpp&apos;, u&apos;Source/WebKit/efl/ewk/ewk_view.cpp&apos;, u&apos;Source/WebKit/win/WebView.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/efl/WebPageEfl.cpp&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/rendering/InlineTextBox.cpp:1288:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/InlineTextBox.cpp:1289:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/RenderObject.cpp:1480:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/RenderObject.cpp:1481:  Wrong number of spaces before statement. (expected: 20)  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/RenderObject.cpp:1480:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 5 in 40 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>959826</commentid>
    <comment_count>3</comment_count>
      <attachid>219248</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-14 04:37:10 -0800</bug_when>
    <thetext>Comment on attachment 219248
Patch

Attachment 219248 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/49408001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959829</commentid>
    <comment_count>4</comment_count>
      <attachid>219248</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-14 04:43:21 -0800</bug_when>
    <thetext>Comment on attachment 219248
Patch

Attachment 219248 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/46068040</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959830</commentid>
    <comment_count>5</comment_count>
      <attachid>219249</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-12-14 05:46:00 -0800</bug_when>
    <thetext>Created attachment 219249
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959831</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-14 05:48:29 -0800</bug_when>
    <thetext>Attachment 219249 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/accessibility/AccessibilityObject.cpp&apos;, u&apos;Source/WebCore/css/CSSParser.cpp&apos;, u&apos;Source/WebCore/dom/Element.cpp&apos;, u&apos;Source/WebCore/editing/FrameSelection.cpp&apos;, u&apos;Source/WebCore/html/HTMLFormControlElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLInputElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMeterElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLOptionElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLSelectElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLTextFormControlElement.cpp&apos;, u&apos;Source/WebCore/html/InputType.cpp&apos;, u&apos;Source/WebCore/html/TextFieldInputType.cpp&apos;, u&apos;Source/WebCore/html/shadow/MediaControlElements.cpp&apos;, u&apos;Source/WebCore/html/shadow/MediaControls.cpp&apos;, u&apos;Source/WebCore/html/shadow/MediaControlsApple.cpp&apos;, u&apos;Source/WebCore/html/shadow/MediaControlsGtk.cpp&apos;, u&apos;Source/WebCore/html/shadow/MeterShadowElement.cpp&apos;, u&apos;Source/WebCore/html/shadow/SliderThumbElement.cpp&apos;, u&apos;Source/WebCore/page/FrameView.cpp&apos;, u&apos;Source/WebCore/page/Page.h&apos;, u&apos;Source/WebCore/platform/efl/RenderThemeEfl.cpp&apos;, u&apos;Source/WebCore/rendering/InlineTextBox.cpp&apos;, u&apos;Source/WebCore/rendering/RenderBlock.cpp&apos;, u&apos;Source/WebCore/rendering/RenderBox.cpp&apos;, u&apos;Source/WebCore/rendering/RenderButton.cpp&apos;, u&apos;Source/WebCore/rendering/RenderFileUploadControl.cpp&apos;, u&apos;Source/WebCore/rendering/RenderFlowThread.cpp&apos;, u&apos;Source/WebCore/rendering/RenderInline.cpp&apos;, u&apos;Source/WebCore/rendering/RenderListBox.cpp&apos;, u&apos;Source/WebCore/rendering/RenderMediaControlElements.cpp&apos;, u&apos;Source/WebCore/rendering/RenderMenuList.cpp&apos;, u&apos;Source/WebCore/rendering/RenderMeter.cpp&apos;, u&apos;Source/WebCore/rendering/RenderObject.cpp&apos;, u&apos;Source/WebCore/rendering/RenderObject.h&apos;, u&apos;Source/WebCore/rendering/RenderProgress.cpp&apos;, u&apos;Source/WebCore/rendering/RenderTextControl.cpp&apos;, u&apos;Source/WebCore/rendering/RenderTextControlSingleLine.cpp&apos;, u&apos;Source/WebKit/efl/ewk/ewk_view.cpp&apos;, u&apos;Source/WebKit/win/WebView.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/efl/WebPageEfl.cpp&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/rendering/InlineTextBox.cpp:1288:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/InlineTextBox.cpp:1289:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/RenderObject.cpp:1480:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/RenderObject.cpp:1481:  Wrong number of spaces before statement. (expected: 20)  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/RenderObject.cpp:1480:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 5 in 41 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>959832</commentid>
    <comment_count>7</comment_count>
      <attachid>219249</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-12-14 05:49:50 -0800</bug_when>
    <thetext>Comment on attachment 219249
Patch

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

&gt; Source/WebCore/page/Page.h:144
&gt; -    RenderTheme* theme() const { return m_theme.get(); }
&gt; +    RenderTheme&amp; theme() const { return *m_theme; }

We might want to have separate const and non-const versions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959833</commentid>
    <comment_count>8</comment_count>
      <attachid>219250</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-12-14 05:56:15 -0800</bug_when>
    <thetext>Created attachment 219250
Land</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959834</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-14 05:57:29 -0800</bug_when>
    <thetext>Attachment 219250 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/accessibility/AccessibilityObject.cpp&apos;, u&apos;Source/WebCore/css/CSSParser.cpp&apos;, u&apos;Source/WebCore/dom/Element.cpp&apos;, u&apos;Source/WebCore/editing/FrameSelection.cpp&apos;, u&apos;Source/WebCore/html/HTMLFormControlElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLInputElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMeterElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLOptionElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLSelectElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLTextFormControlElement.cpp&apos;, u&apos;Source/WebCore/html/InputType.cpp&apos;, u&apos;Source/WebCore/html/TextFieldInputType.cpp&apos;, u&apos;Source/WebCore/html/shadow/MediaControlElements.cpp&apos;, u&apos;Source/WebCore/html/shadow/MediaControls.cpp&apos;, u&apos;Source/WebCore/html/shadow/MediaControlsApple.cpp&apos;, u&apos;Source/WebCore/html/shadow/MediaControlsGtk.cpp&apos;, u&apos;Source/WebCore/html/shadow/MeterShadowElement.cpp&apos;, u&apos;Source/WebCore/html/shadow/SliderThumbElement.cpp&apos;, u&apos;Source/WebCore/page/FrameView.cpp&apos;, u&apos;Source/WebCore/page/Page.h&apos;, u&apos;Source/WebCore/platform/efl/RenderThemeEfl.cpp&apos;, u&apos;Source/WebCore/rendering/InlineTextBox.cpp&apos;, u&apos;Source/WebCore/rendering/RenderBlock.cpp&apos;, u&apos;Source/WebCore/rendering/RenderBox.cpp&apos;, u&apos;Source/WebCore/rendering/RenderButton.cpp&apos;, u&apos;Source/WebCore/rendering/RenderFileUploadControl.cpp&apos;, u&apos;Source/WebCore/rendering/RenderFlowThread.cpp&apos;, u&apos;Source/WebCore/rendering/RenderInline.cpp&apos;, u&apos;Source/WebCore/rendering/RenderListBox.cpp&apos;, u&apos;Source/WebCore/rendering/RenderMediaControlElements.cpp&apos;, u&apos;Source/WebCore/rendering/RenderMenuList.cpp&apos;, u&apos;Source/WebCore/rendering/RenderMeter.cpp&apos;, u&apos;Source/WebCore/rendering/RenderObject.cpp&apos;, u&apos;Source/WebCore/rendering/RenderObject.h&apos;, u&apos;Source/WebCore/rendering/RenderProgress.cpp&apos;, u&apos;Source/WebCore/rendering/RenderTextControl.cpp&apos;, u&apos;Source/WebCore/rendering/RenderTextControlSingleLine.cpp&apos;, u&apos;Source/WebKit/efl/ewk/ewk_view.cpp&apos;, u&apos;Source/WebKit/win/WebView.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/efl/WebPageEfl.cpp&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/rendering/InlineTextBox.cpp:1289:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/RenderObject.cpp:1481:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
Total errors found: 2 in 41 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>959835</commentid>
    <comment_count>10</comment_count>
      <attachid>219250</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-14 06:10:37 -0800</bug_when>
    <thetext>Comment on attachment 219250
Land

Attachment 219250 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/49398025</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959836</commentid>
    <comment_count>11</comment_count>
      <attachid>219251</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-12-14 06:19:04 -0800</bug_when>
    <thetext>Created attachment 219251
Land pls</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959837</commentid>
    <comment_count>12</comment_count>
      <attachid>219251</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-14 06:44:01 -0800</bug_when>
    <thetext>Comment on attachment 219251
Land pls

Attachment 219251 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/49348024</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959848</commentid>
    <comment_count>13</comment_count>
      <attachid>219251</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-14 10:55:38 -0800</bug_when>
    <thetext>Comment on attachment 219251
Land pls

Clearing flags on attachment: 219251

Committed r160599: &lt;http://trac.webkit.org/changeset/160599&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959849</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-14 10:55:41 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219248</attachid>
            <date>2013-12-14 04:21:15 -0800</date>
            <delta_ts>2013-12-14 05:46:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125737.diff</filename>
            <type>text/plain</type>
            <size>49474</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2MDJmNjQzLi4yZjZjNzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTUg
QEAKIDIwMTMtMTItMTQgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCisgICAg
ICAgIFBhZ2U6OnRoZW1lKCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZS4KKyAgICAgICAgPGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzEyNTczNz4KKworICAgICAgICBUaGVyZSdzIGFsd2F5cyBhIFJl
bmRlclRoZW1lLCBhbmQgbm90IGEgc2luZ2xlIGNhbGwgc2l0ZSB3YXMgY2hlY2tpbmcKKyAgICAg
ICAgZm9yIG51bGwgcG9pbnRlcnMgYW55d2F5LiBVcGRhdGVkIFJlbmRlck9iamVjdDo6dGhlbWUo
KSBhcyB3ZWxsLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisyMDEz
LTEyLTE0ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KKwogICAgICAgICBSZW5k
ZXJFbGVtZW50OjpyZW5kZXJlckZvclJvb3RCYWNrZ3JvdW5kKCkgc2hvdWxkIHJldHVybiBhIHJl
ZmVyZW5jZS4KICAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEyNTczNT4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAK
aW5kZXggODI1ZDA5Ny4uZGQzZWU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC01ODUsNyArNTg1LDcgQEAgSW50
UmVjdCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpib3VuZGluZ0JveEZvclF1YWRzKFJlbmRlck9iamVj
dCogb2JqLCBjb25zdCBWZWN0b3IKICAgICAgICAgSW50UmVjdCByID0gcXVhZHNbaV0uZW5jbG9z
aW5nQm91bmRpbmdCb3goKTsKICAgICAgICAgaWYgKCFyLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgaWYgKG9iai0+c3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAgICAgICAgICAgb2Jq
LT50aGVtZSgpLT5hZGp1c3RSZXBhaW50UmVjdChvYmosIHIpOworICAgICAgICAgICAgICAgIG9i
ai0+dGhlbWUoKS5hZGp1c3RSZXBhaW50UmVjdChvYmosIHIpOwogICAgICAgICAgICAgcmVzdWx0
LnVuaXRlKHIpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRl
eCBhZTU5ZmQxLi4zZTY1MjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMTM4Miw3
ICsxMzgyLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlU3lzdGVtQ29sb3IoUkdCQTMyJiBjb2xv
ciwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIERvY3VtZW50KgogICAgIGlmIChpZCA8PSAwKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBjb2xvciA9IGRvY3VtZW50LT5wYWdlKCktPnRoZW1l
KCktPnN5c3RlbUNvbG9yKGlkKS5yZ2IoKTsKKyAgICBjb2xvciA9IGRvY3VtZW50LT5wYWdlKCkt
PnRoZW1lKCkuc3lzdGVtQ29sb3IoaWQpLnJnYigpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKaW5kZXggN2JkZjNjNi4uNWNmNGEzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcApAQCAtNTE1LDcgKzUxNSw3IEBAIHZvaWQgRWxlbWVudDo6c2V0QWN0aXZlKGJvb2wg
ZmxhZywgYm9vbCBwYXVzZSkKICAgICBpZiAocmVhY3RzVG9QcmVzcykKICAgICAgICAgc2V0TmVl
ZHNTdHlsZVJlY2FsYygpOwogCi0gICAgaWYgKHJlbmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFy
YW5jZSgpICYmIHJlbmRlcmVyKCktPnRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBQ
cmVzc2VkU3RhdGUpKQorICAgIGlmIChyZW5kZXJlcigpLT5zdHlsZSgpLmhhc0FwcGVhcmFuY2Uo
KSAmJiByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBQcmVzc2Vk
U3RhdGUpKQogICAgICAgICByZWFjdHNUb1ByZXNzID0gdHJ1ZTsKIAogICAgIC8vIFRoZSByZXN0
IG9mIHRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyBhIGZlYXR1cmUgdGhhdCBvbmx5IHdvcmtzIGlm
IHRoZQpAQCAtNTgxLDcgKzU4MSw3IEBAIHZvaWQgRWxlbWVudDo6c2V0SG92ZXJlZChib29sIGZs
YWcpCiAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIAogICAgIGlmIChyZW5kZXJlcigp
LT5zdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS0+
c3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIEhvdmVyU3RhdGUpOworICAgICAgICByZW5kZXJlcigp
LT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBIb3ZlclN0YXRlKTsKIH0KIAogdm9p
ZCBFbGVtZW50OjpzY3JvbGxJbnRvVmlldyhib29sIGFsaWduVG9Ub3ApIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCA1MTgxNjI1Li4xZjBlNTA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMTcwNSw3ICsxNzA1
LDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6Zm9jdXNlZE9yQWN0aXZlU3RhdGVDaGFuZ2VkKCkK
ICAgICAgICAgZWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAgICBpZiAoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBp
ZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAg
ICAgICAgICAgIHJlbmRlcmVyLT50aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIsIEZvY3Vz
U3RhdGUpOworICAgICAgICAgICAgICAgIHJlbmRlcmVyLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChy
ZW5kZXJlciwgRm9jdXNTdGF0ZSk7CiAgICAgfQogfQogCkBAIC0xNzU5LDcgKzE3NTksNyBAQCB2
b2lkIEZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBcHBlYXJhbmNlKCkKICAgICAvLyBTdGFydCBibGlu
a2luZyB3aXRoIGEgYmxhY2sgY2FyZXQuIEJlIHN1cmUgbm90IHRvIHJlc3RhcnQgaWYgd2UncmUK
ICAgICAvLyBhbHJlYWR5IGJsaW5raW5nIGluIHRoZSByaWdodCBsb2NhdGlvbi4KICAgICBpZiAo
c2hvdWxkQmxpbmsgJiYgIW1fY2FyZXRCbGlua1RpbWVyLmlzQWN0aXZlKCkpIHsKLSAgICAgICAg
aWYgKGRvdWJsZSBibGlua0ludGVydmFsID0gbV9mcmFtZS0+cGFnZSgpLT50aGVtZSgpLT5jYXJl
dEJsaW5rSW50ZXJ2YWwoKSkKKyAgICAgICAgaWYgKGRvdWJsZSBibGlua0ludGVydmFsID0gbV9m
cmFtZS0+cGFnZSgpLT50aGVtZSgpLmNhcmV0QmxpbmtJbnRlcnZhbCgpKQogICAgICAgICAgICAg
bV9jYXJldEJsaW5rVGltZXIuc3RhcnRSZXBlYXRpbmcoYmxpbmtJbnRlcnZhbCk7CiAKICAgICAg
ICAgaWYgKCFtX2NhcmV0UGFpbnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDVkZWQ5YzMuLjMyOTY2M2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtMTM3LDcgKzEzNyw3
IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvCiAgICAgICAgICAgICBzZXROZWVkc1dpbGxWYWxp
ZGF0ZUNoZWNrKCk7CiAgICAgICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgICAg
ICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLmhhc0FwcGVhcmFuY2Uo
KSkKLSAgICAgICAgICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVu
ZGVyZXIoKSwgUmVhZE9ubHlTdGF0ZSk7CisgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+dGhl
bWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgUmVhZE9ubHlTdGF0ZSk7CiAgICAgICAgIH0K
ICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gcmVxdWlyZWRBdHRyKSB7CiAgICAgICAgIGJvb2wgd2Fz
UmVxdWlyZWQgPSBtX2lzUmVxdWlyZWQ7CkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50OjpkaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQoKQogICAgIHNldE5lZWRz
V2lsbFZhbGlkYXRlQ2hlY2soKTsKICAgICBkaWRBZmZlY3RTZWxlY3RvcihBZmZlY3RlZFNlbGVj
dG9yRGlzYWJsZWQgfCBBZmZlY3RlZFNlbGVjdG9yRW5hYmxlZCk7CiAgICAgaWYgKHJlbmRlcmVy
KCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAgIHJlbmRl
cmVyKCktPnRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBFbmFibGVkU3RhdGUpOwor
ICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBFbmFi
bGVkU3RhdGUpOwogfQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlcXVpcmVkQXR0
cmlidXRlQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApp
bmRleCBiZWRkZmEwLi4zYTRkOTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAKQEAgLTg4Miw3ICs4ODIsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldENo
ZWNrZWQoYm9vbCBub3dDaGVja2VkLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50QgogICAg
IGlmIChDaGVja2VkUmFkaW9CdXR0b25zKiBidXR0b25zID0gY2hlY2tlZFJhZGlvQnV0dG9ucygp
KQogICAgICAgICAgICAgYnV0dG9ucy0+dXBkYXRlQ2hlY2tlZFN0YXRlKHRoaXMpOwogICAgIGlm
IChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQotICAg
ICAgICByZW5kZXJlcigpLT50aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgQ2hlY2tl
ZFN0YXRlKTsKKyAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVy
ZXIoKSwgQ2hlY2tlZFN0YXRlKTsKICAgICBzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKIAogICAg
IC8vIElkZWFsbHkgd2UnZCBkbyB0aGlzIGZyb20gdGhlIHJlbmRlciB0cmVlIChtYXRjaGluZwpA
QCAtOTE2LDcgKzkxNiw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0SW5kZXRlcm1pbmF0
ZShib29sIG5ld1ZhbHVlKQogICAgIGRpZEFmZmVjdFNlbGVjdG9yKEFmZmVjdGVkU2VsZWN0b3JJ
bmRldGVybWluYXRlKTsKIAogICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxl
KCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLT5zdGF0ZUNo
YW5nZWQocmVuZGVyZXIoKSwgQ2hlY2tlZFN0YXRlKTsKKyAgICAgICAgcmVuZGVyZXIoKS0+dGhl
bWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgQ2hlY2tlZFN0YXRlKTsKIH0KIAogaW50IEhU
TUxJbnB1dEVsZW1lbnQ6OnNpemUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVy
RWxlbWVudC5jcHAKaW5kZXggZmM2MWIyOS4uZGEwMWYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZXRlckVsZW1lbnQuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFBhc3NSZWZQdHI8SFRNTE1l
dGVyRWxlbWVudD4gSFRNTE1ldGVyRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hCiAKIFJlbmRlckVsZW1lbnQqIEhUTUxNZXRlckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVy
KFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogewotICAgIGlmIChoYXNBdXRob3JTaGFkb3dS
b290KCkgfHwgIWRvY3VtZW50KCkucGFnZSgpLT50aGVtZSgpLT5zdXBwb3J0c01ldGVyKHN0eWxl
LmdldCgpLmFwcGVhcmFuY2UoKSkpCisgICAgaWYgKGhhc0F1dGhvclNoYWRvd1Jvb3QoKSB8fCAh
ZG9jdW1lbnQoKS5wYWdlKCktPnRoZW1lKCkuc3VwcG9ydHNNZXRlcihzdHlsZS5nZXQoKS5hcHBl
YXJhbmNlKCkpKQogICAgICAgICByZXR1cm4gUmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKCp0aGlz
LCBzdGQ6Om1vdmUoc3R5bGUpKTsKIAogICAgIHJldHVybiBuZXcgUmVuZGVyTWV0ZXIoKnRoaXMs
IHN0ZDo6bW92ZShzdHlsZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T3B0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50
LmNwcAppbmRleCBmMmIzNjI0Li5mNTA0OWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
cHRpb25FbGVtZW50LmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgSFRNTE9wdGlvbkVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21p
Y1N0CiAgICAgICAgIGlmIChvbGREaXNhYmxlZCAhPSBtX2Rpc2FibGVkKSB7CiAgICAgICAgICAg
ICBkaWRBZmZlY3RTZWxlY3RvcihBZmZlY3RlZFNlbGVjdG9yRGlzYWJsZWQgfCBBZmZlY3RlZFNl
bGVjdG9yRW5hYmxlZCk7CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigp
LT5zdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAgICAgICAgICByZW5kZXJlcigpLT50
aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgRW5hYmxlZFN0YXRlKTsKKyAgICAgICAg
ICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBFbmFi
bGVkU3RhdGUpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChuYW1lID09IHNlbGVjdGVkQXR0
cikgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IG1hdGNoIHdoYXQgdGhlIEhUTUwg
c3BlY2lmaWNhdGlvbiBzYXlzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50
LmNwcAppbmRleCAyZjM0ODEwLi5iMDA3MDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
ZWxlY3RFbGVtZW50LmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1l
bnQ6Omxpc3RCb3hTZWxlY3RJdGVtKGludCBsaXN0SW5kZXgsIGJvb2wgYWxsb3dNdWx0aXBseVNl
bGVjCiBib29sIEhUTUxTZWxlY3RFbGVtZW50Ojp1c2VzTWVudUxpc3QoKSBjb25zdAogewogICAg
IGNvbnN0IFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKTsKLSAgICBSZWZQdHI8UmVuZGVy
VGhlbWU+IHJlbmRlclRoZW1lID0gcGFnZSA/IHBhZ2UtPnRoZW1lKCkgOiBSZW5kZXJUaGVtZTo6
ZGVmYXVsdFRoZW1lKCk7CisgICAgUmVmUHRyPFJlbmRlclRoZW1lPiByZW5kZXJUaGVtZSA9IHBh
Z2UgPyAmcGFnZS0+dGhlbWUoKSA6IFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKTsKICAgICBp
ZiAocmVuZGVyVGhlbWUtPmRlbGVnYXRlc01lbnVMaXN0UmVuZGVyaW5nKCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCkBAIC0xMDc4LDcgKzEwNzgsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50
OjpyZXNldCgpCiBib29sIEhUTUxTZWxlY3RFbGVtZW50OjpwbGF0Zm9ybUhhbmRsZUtleWRvd25F
dmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKIHsKICAgICBjb25zdCBQYWdlKiBwYWdlID0gZG9j
dW1lbnQoKS5wYWdlKCk7Ci0gICAgUmVmUHRyPFJlbmRlclRoZW1lPiByZW5kZXJUaGVtZSA9IHBh
Z2UgPyBwYWdlLT50aGVtZSgpIDogUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpOworICAgIFJl
ZlB0cjxSZW5kZXJUaGVtZT4gcmVuZGVyVGhlbWUgPSBwYWdlID8gJnBhZ2UtPnRoZW1lKCkgOiBS
ZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCk7CiAKICAgICBpZiAoIXJlbmRlclRoZW1lLT5wb3Bz
TWVudUJ5QXJyb3dLZXlzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExMTEsNyArMTEx
MSw3IEBAIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OnBsYXRmb3JtSGFuZGxlS2V5ZG93bkV2ZW50
KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6bWVudUxpc3RE
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAgICBjb25zdCBQYWdlKiBwYWdl
ID0gZG9jdW1lbnQoKS5wYWdlKCk7Ci0gICAgUmVmUHRyPFJlbmRlclRoZW1lPiByZW5kZXJUaGVt
ZSA9IHBhZ2UgPyBwYWdlLT50aGVtZSgpIDogUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpOwor
ICAgIFJlZlB0cjxSZW5kZXJUaGVtZT4gcmVuZGVyVGhlbWUgPSBwYWdlID8gJnBhZ2UtPnRoZW1l
KCkgOiBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCk7CiAKICAgICBpZiAoZXZlbnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50KSB7CiAgICAgICAgIGlmICghcmVuZGVyZXIo
KSB8fCAhZXZlbnQtPmlzS2V5Ym9hcmRFdmVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCA3YjRlYmJiLi4wNzBiNzU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50LmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIGJvb2wgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkgY29uc3QKICAgICAgICAgJiYgaXNFbXB0
eVZhbHVlKCkKICAgICAgICAgJiYgaXNFbXB0eVN1Z2dlc3RlZFZhbHVlKCkKICAgICAgICAgJiYg
IWlzUGxhY2Vob2xkZXJFbXB0eSgpCi0gICAgICAgICYmIChkb2N1bWVudCgpLmZvY3VzZWRFbGVt
ZW50KCkgIT0gdGhpcyB8fCAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT50aGVtZSgpLT5zaG91
bGRTaG93UGxhY2Vob2xkZXJXaGVuRm9jdXNlZCgpKSkKKyAgICAgICAgJiYgKGRvY3VtZW50KCku
Zm9jdXNlZEVsZW1lbnQoKSAhPSB0aGlzIHx8IChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnRo
ZW1lKCkuc2hvdWxkU2hvd1BsYWNlaG9sZGVyV2hlbkZvY3VzZWQoKSkpCiAgICAgICAgICYmICgh
cmVuZGVyZXIoKSB8fCByZW5kZXJlcigpLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxF
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDBjMGNlM2YuLjliZDM2NDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCBJbnB1dFR5
cGU6On5JbnB1dFR5cGUoKQogYm9vbCBJbnB1dFR5cGU6OnRoZW1lU3VwcG9ydHNEYXRhTGlzdFVJ
KElucHV0VHlwZSogdHlwZSkKIHsKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSB0eXBlLT5lbGVt
ZW50KCkuZG9jdW1lbnQoKTsKLSAgICBSZWZQdHI8UmVuZGVyVGhlbWU+IHRoZW1lID0gZG9jdW1l
bnQucGFnZSgpID8gZG9jdW1lbnQucGFnZSgpLT50aGVtZSgpIDogUmVuZGVyVGhlbWU6OmRlZmF1
bHRUaGVtZSgpOworICAgIFJlZlB0cjxSZW5kZXJUaGVtZT4gdGhlbWUgPSBkb2N1bWVudC5wYWdl
KCkgPyAmZG9jdW1lbnQucGFnZSgpLT50aGVtZSgpIDogUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVt
ZSgpOwogICAgIHJldHVybiB0aGVtZS0+c3VwcG9ydHNEYXRhTGlzdFVJKHR5cGUtPmZvcm1Db250
cm9sVHlwZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0Rmll
bGRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
Y3BwCmluZGV4IGEzMzVkZDguLjM4OTFmNjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuY3BwCkBAIC0yMTgsNyArMjE4LDcgQEAgYm9vbCBUZXh0RmllbGRJbnB1
dFR5cGU6Om5lZWRzQ29udGFpbmVyKCkgY29uc3QKIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjpz
aG91bGRIYXZlU3BpbkJ1dHRvbigpIGNvbnN0CiB7CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0g
ZWxlbWVudCgpLmRvY3VtZW50KCk7Ci0gICAgUmVmUHRyPFJlbmRlclRoZW1lPiB0aGVtZSA9IGRv
Y3VtZW50LnBhZ2UoKSA/IGRvY3VtZW50LnBhZ2UoKS0+dGhlbWUoKSA6IFJlbmRlclRoZW1lOjpk
ZWZhdWx0VGhlbWUoKTsKKyAgICBSZWZQdHI8UmVuZGVyVGhlbWU+IHRoZW1lID0gZG9jdW1lbnQu
cGFnZSgpID8gJmRvY3VtZW50LnBhZ2UoKS0+dGhlbWUoKSA6IFJlbmRlclRoZW1lOjpkZWZhdWx0
VGhlbWUoKTsKICAgICByZXR1cm4gdGhlbWUtPnNob3VsZEhhdmVTcGluQnV0dG9uKCZlbGVtZW50
KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xFbGVtZW50cy5jcHAKaW5kZXggOTZkZGViNS4uZDBlMjRiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcApAQCAtMTQyLDcg
KzE0Miw3IEBAIHZvaWQgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjpzdGFydFRpbWVyKCkKICAg
ICAvLyBUaGUgdGltZXIgaXMgcmVxdWlyZWQgdG8gc2V0IHRoZSBwcm9wZXJ0eSBkaXNwbGF5Oidu
b25lJyBvbiB0aGUgcGFuZWwsCiAgICAgLy8gc3VjaCB0aGF0IGNhcHRpb25zIGFyZSBjb3JyZWN0
bHkgZGlzcGxheWVkIGF0IHRoZSBib3R0b20gb2YgdGhlIHZpZGVvCiAgICAgLy8gYXQgdGhlIGVu
ZCBvZiB0aGUgZmFkZW91dCB0cmFuc2l0aW9uLgotICAgIGRvdWJsZSBkdXJhdGlvbiA9IGRvY3Vt
ZW50KCkucGFnZSgpID8gZG9jdW1lbnQoKS5wYWdlKCktPnRoZW1lKCktPm1lZGlhQ29udHJvbHNG
YWRlT3V0RHVyYXRpb24oKSA6IDA7CisgICAgZG91YmxlIGR1cmF0aW9uID0gZG9jdW1lbnQoKS5w
YWdlKCkgPyBkb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUoKS5tZWRpYUNvbnRyb2xzRmFkZU91dER1
cmF0aW9uKCkgOiAwOwogICAgIG1fdHJhbnNpdGlvblRpbWVyLnN0YXJ0T25lU2hvdChkdXJhdGlv
bik7CiB9CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVu
dDo6bWFrZU9wYXF1ZSgpCiAgICAgaWYgKG1fb3BhcXVlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBkb3VibGUgZHVyYXRpb24gPSBkb2N1bWVudCgpLnBhZ2UoKSA/IGRvY3VtZW50KCkucGFnZSgp
LT50aGVtZSgpLT5tZWRpYUNvbnRyb2xzRmFkZUluRHVyYXRpb24oKSA6IDA7CisgICAgZG91Ymxl
IGR1cmF0aW9uID0gZG9jdW1lbnQoKS5wYWdlKCkgPyBkb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUo
KS5tZWRpYUNvbnRyb2xzRmFkZUluRHVyYXRpb24oKSA6IDA7CiAKICAgICBzZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5LCBDU1NQcm9wZXJ0
eU9wYWNpdHkpOwogICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2l0aW9uRHVyYXRpb24sIGR1cmF0aW9uLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1MpOwpA
QCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjptYWtlVHJh
bnNwYXJlbnQoKQogICAgIGlmICghbV9vcGFxdWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGRv
dWJsZSBkdXJhdGlvbiA9IGRvY3VtZW50KCkucGFnZSgpID8gZG9jdW1lbnQoKS5wYWdlKCktPnRo
ZW1lKCktPm1lZGlhQ29udHJvbHNGYWRlT3V0RHVyYXRpb24oKSA6IDA7CisgICAgZG91YmxlIGR1
cmF0aW9uID0gZG9jdW1lbnQoKS5wYWdlKCkgPyBkb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUoKS5t
ZWRpYUNvbnRyb2xzRmFkZU91dER1cmF0aW9uKCkgOiAwOwogCiAgICAgc2V0SW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSwgQ1NTUHJvcGVydHlP
cGFjaXR5KTsKICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VHJh
bnNpdGlvbkR1cmF0aW9uLCBkdXJhdGlvbiwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAKaW5kZXggMjJjNGRm
ZS4uNjY4MWUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9scy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
cy5jcHAKQEAgLTkzLDEyICs5MywxMiBAQCB2b2lkIE1lZGlhQ29udHJvbHM6OnJlc2V0KCkKICAg
ICB1cGRhdGVDdXJyZW50VGltZURpc3BsYXkoKTsKIAogICAgIGRvdWJsZSBkdXJhdGlvbiA9IG1f
bWVkaWFDb250cm9sbGVyLT5kdXJhdGlvbigpOwotICAgIGlmIChzdGQ6OmlzZmluaXRlKGR1cmF0
aW9uKSB8fCBwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVk
aWFTbGlkZXJQYXJ0KSkgeworICAgIGlmIChzdGQ6OmlzZmluaXRlKGR1cmF0aW9uKSB8fCBwYWdl
LT50aGVtZSgpLmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVNsaWRlclBhcnQp
KSB7CiAgICAgICAgIG1fdGltZWxpbmUtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKICAgICAgICAg
bV90aW1lbGluZS0+c2V0UG9zaXRpb24obV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCkp
OwogICAgIH0KIAotICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+aGFzQXVkaW8oKSB8fCBwYWdl
LT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFNdXRlQnV0dG9u
UGFydCkpCisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5oYXNBdWRpbygpIHx8IHBhZ2UtPnRo
ZW1lKCkuaGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhTXV0ZUJ1dHRvblBhcnQp
KQogICAgICAgICBtX3BhbmVsTXV0ZUJ1dHRvbi0+c2hvdygpOwogICAgIGVsc2UKICAgICAgICAg
bV9wYW5lbE11dGVCdXR0b24tPmhpZGUoKTsKQEAgLTEzMCwxNSArMTMwLDE1IEBAIHZvaWQgTWVk
aWFDb250cm9sczo6cmVwb3J0ZWRFcnJvcigpCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoIXBhZ2UtPnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGlu
Z0ZvcihNZWRpYU11dGVCdXR0b25QYXJ0KSkgeworICAgIGlmICghcGFnZS0+dGhlbWUoKS5oYXNP
d25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFNdXRlQnV0dG9uUGFydCkpIHsKICAgICAg
ICAgbV9wYW5lbE11dGVCdXR0b24tPmhpZGUoKTsKICAgICAgICAgbV92b2x1bWVTbGlkZXItPmhp
ZGUoKTsKICAgICB9CiAKLSAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbiAmJiAh
cGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhVG9nZ2xl
Q2xvc2VkQ2FwdGlvbnNCdXR0b25QYXJ0KSkKKyAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9u
c0J1dHRvbiAmJiAhcGFnZS0+dGhlbWUoKS5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3Io
TWVkaWFUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvblBhcnQpKQogICAgICAgICBtX3RvZ2dsZUNs
b3NlZENhcHRpb25zQnV0dG9uLT5oaWRlKCk7CiAKLSAgICBpZiAobV9mdWxsU2NyZWVuQnV0dG9u
ICYmICFwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFF
bnRlckZ1bGxzY3JlZW5CdXR0b25QYXJ0KSkKKyAgICBpZiAobV9mdWxsU2NyZWVuQnV0dG9uICYm
ICFwYWdlLT50aGVtZSgpLmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYUVudGVy
RnVsbHNjcmVlbkJ1dHRvblBhcnQpKQogICAgICAgICBtX2Z1bGxTY3JlZW5CdXR0b24tPmhpZGUo
KTsKIH0KIApAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgTWVkaWFDb250cm9sczo6dXBkYXRlQ3Vy
cmVudFRpbWVEaXNwbGF5KCkKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fY3VycmVudFRpbWVEaXNwbGF5LT5zZXRJbm5lclRleHQocGFnZS0+dGhlbWUoKS0+Zm9ybWF0
TWVkaWFDb250cm9sc1RpbWUobm93KSwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgbV9jdXJyZW50
VGltZURpc3BsYXktPnNldElubmVyVGV4dChwYWdlLT50aGVtZSgpLmZvcm1hdE1lZGlhQ29udHJv
bHNUaW1lKG5vdyksIElHTk9SRV9FWENFUFRJT04pOwogICAgIG1fY3VycmVudFRpbWVEaXNwbGF5
LT5zZXRDdXJyZW50VmFsdWUobm93KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKaW5kZXggMzBlYTQ3OC4uYmMzZDI0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3Bw
CkBAIC04OSw3ICs4OSw3IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sc0FwcGxlPiBNZWRpYUNv
bnRyb2xzQXBwbGU6OmNyZWF0ZUNvbnRyb2xzKERvY3VtZW50JiBkb2N1CiAgICAgaWYgKGVjKQog
ICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChkb2N1bWVudC5wYWdlKCktPnRoZW1lKCktPnVz
ZXNNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5KCkpIHsKKyAgICBpZiAoZG9jdW1lbnQucGFnZSgp
LT50aGVtZSgpLnVzZXNNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5KCkpIHsKICAgICAgICAgUmVm
UHRyPE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50PiBzdGF0dXNEaXNwbGF5ID0gTWVk
aWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgICAg
IGNvbnRyb2xzLT5tX3N0YXR1c0Rpc3BsYXkgPSBzdGF0dXNEaXNwbGF5LmdldCgpOwogICAgICAg
ICBwYW5lbC0+YXBwZW5kQ2hpbGQoc3RhdHVzRGlzcGxheS5yZWxlYXNlKCksIGVjLCBBdHRhY2hM
YXppbHkpOwpAQCAtMTM2LDcgKzEzNiw3IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sc0FwcGxl
PiBNZWRpYUNvbnRyb2xzQXBwbGU6OmNyZWF0ZUNvbnRyb2xzKERvY3VtZW50JiBkb2N1CiAgICAg
aWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChkb2N1bWVudC5wYWdlKCktPnRo
ZW1lKCktPnN1cHBvcnRzQ2xvc2VkQ2FwdGlvbmluZygpKSB7CisgICAgaWYgKGRvY3VtZW50LnBh
Z2UoKS0+dGhlbWUoKS5zdXBwb3J0c0Nsb3NlZENhcHRpb25pbmcoKSkgewogICAgICAgICBSZWZQ
dHI8TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWluZXJFbGVtZW50PiBjbG9zZWRDYXB0
aW9uc0NvbnRhaW5lciA9IE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zQ29udGFpbmVyRWxlbWVu
dDo6Y3JlYXRlKGRvY3VtZW50KTsKIAogICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sQ2xvc2Vk
Q2FwdGlvbnNUcmFja0xpc3RFbGVtZW50PiBjbG9zZWRDYXB0aW9uc1RyYWNrTGlzdCA9IE1lZGlh
Q29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBj
b250cm9scy5nZXQoKSk7CkBAIC0xNjUsNyArMTY1LDcgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRy
b2xzQXBwbGU+IE1lZGlhQ29udHJvbHNBcHBsZTo6Y3JlYXRlQ29udHJvbHMoRG9jdW1lbnQmIGRv
Y3UKICAgICAvLyBUaGUgbXV0ZSBidXR0b24gYW5kIHRoZSBzbGlkZXIgZWxlbWVudCBzaG91bGQg
YmUgaW4gdGhlIHNhbWUgZGl2LgogICAgIFJlZlB0cjxIVE1MRGl2RWxlbWVudD4gcGFuZWxWb2x1
bWVDb250cm9sQ29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAK
LSAgICBpZiAoZG9jdW1lbnQucGFnZSgpLT50aGVtZSgpLT51c2VzTWVkaWFDb250cm9sVm9sdW1l
U2xpZGVyKCkpIHsKKyAgICBpZiAoZG9jdW1lbnQucGFnZSgpLT50aGVtZSgpLnVzZXNNZWRpYUNv
bnRyb2xWb2x1bWVTbGlkZXIoKSkgewogICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1l
U2xpZGVyQ29udGFpbmVyRWxlbWVudD4gdm9sdW1lU2xpZGVyQ29udGFpbmVyID0gTWVkaWFDb250
cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKIAogICAg
ICAgICBSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxWb2x1bWVTbGlkZXJFbGVtZW50PiBzbGlkZXIg
PSBNZWRpYUNvbnRyb2xQYW5lbFZvbHVtZVNsaWRlckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7
CkBAIC0zMTMsNyArMzEzLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQXBwbGU6OnJlc2V0KCkKICAg
ICAgICAgbV9mdWxsU2NyZWVuQnV0dG9uLT5oaWRlKCk7CiAKICAgICBkb3VibGUgZHVyYXRpb24g
PSBtX21lZGlhQ29udHJvbGxlci0+ZHVyYXRpb24oKTsKLSAgICBpZiAoc3RkOjppc2Zpbml0ZShk
dXJhdGlvbikgfHwgcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9y
KE1lZGlhU2xpZGVyUGFydCkpIHsKKyAgICBpZiAoc3RkOjppc2Zpbml0ZShkdXJhdGlvbikgfHwg
cGFnZS0+dGhlbWUoKS5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFTbGlkZXJQ
YXJ0KSkgewogICAgICAgICBtX3RpbWVsaW5lLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CiAgICAg
ICAgIG1fdGltZWxpbmVDb250YWluZXItPnNob3coKTsKICAgICAgICAgbV90aW1lbGluZS0+c2V0
UG9zaXRpb24obV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCkpOwpAQCAtMzIxLDcgKzMy
MSw3IEBAIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpyZXNldCgpCiAgICAgfSBlbHNlCiAgICAg
ICAgIG1fdGltZWxpbmVDb250YWluZXItPmhpZGUoKTsKIAotICAgIGlmIChtX21lZGlhQ29udHJv
bGxlci0+aGFzQXVkaW8oKSB8fCBwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFu
ZGxpbmdGb3IoTWVkaWFNdXRlQnV0dG9uUGFydCkpCisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVy
LT5oYXNBdWRpbygpIHx8IHBhZ2UtPnRoZW1lKCkuaGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5n
Rm9yKE1lZGlhTXV0ZUJ1dHRvblBhcnQpKQogICAgICAgICBtX3BhbmVsTXV0ZUJ1dHRvbi0+c2hv
dygpOwogICAgIGVsc2UKICAgICAgICAgbV9wYW5lbE11dGVCdXR0b24tPmhpZGUoKTsKQEAgLTM3
OCw5ICszNzgsOSBAQCB2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6dXBkYXRlQ3VycmVudFRpbWVE
aXNwbGF5KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gQWxsb3cgdGhlIHRoZW1lIHRvIGZv
cm1hdCB0aGUgdGltZS4KLSAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0SW5uZXJUZXh0KHBh
Z2UtPnRoZW1lKCktPmZvcm1hdE1lZGlhQ29udHJvbHNDdXJyZW50VGltZShub3csIGR1cmF0aW9u
KSwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgbV9jdXJyZW50VGltZURpc3BsYXktPnNldElubmVy
VGV4dChwYWdlLT50aGVtZSgpLmZvcm1hdE1lZGlhQ29udHJvbHNDdXJyZW50VGltZShub3csIGR1
cmF0aW9uKSwgSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgbV9jdXJyZW50VGltZURpc3BsYXktPnNl
dEN1cnJlbnRWYWx1ZShub3cpOwotICAgIG1fdGltZVJlbWFpbmluZ0Rpc3BsYXktPnNldElubmVy
VGV4dChwYWdlLT50aGVtZSgpLT5mb3JtYXRNZWRpYUNvbnRyb2xzUmVtYWluaW5nVGltZShub3cs
IGR1cmF0aW9uKSwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgbV90aW1lUmVtYWluaW5nRGlzcGxh
eS0+c2V0SW5uZXJUZXh0KHBhZ2UtPnRoZW1lKCkuZm9ybWF0TWVkaWFDb250cm9sc1JlbWFpbmlu
Z1RpbWUobm93LCBkdXJhdGlvbiksIElHTk9SRV9FWENFUFRJT04pOwogICAgIG1fdGltZVJlbWFp
bmluZ0Rpc3BsYXktPnNldEN1cnJlbnRWYWx1ZShub3cgLSBkdXJhdGlvbik7CiB9CiAKQEAgLTM5
MCwxNyArMzkwLDE3IEBAIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpyZXBvcnRlZEVycm9yKCkK
ICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghcGFnZS0+dGhlbWUo
KS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhU2xpZGVyUGFydCkpCisgICAg
aWYgKCFwYWdlLT50aGVtZSgpLmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVNs
aWRlclBhcnQpKQogICAgICAgICBtX3RpbWVsaW5lQ29udGFpbmVyLT5oaWRlKCk7CiAKLSAgICBp
ZiAoIXBhZ2UtPnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYU11
dGVCdXR0b25QYXJ0KSkKKyAgICBpZiAoIXBhZ2UtPnRoZW1lKCkuaGFzT3duRGlzYWJsZWRTdGF0
ZUhhbmRsaW5nRm9yKE1lZGlhTXV0ZUJ1dHRvblBhcnQpKQogICAgICAgICBtX3BhbmVsTXV0ZUJ1
dHRvbi0+aGlkZSgpOwogCiAgICAgbV9mdWxsU2NyZWVuQnV0dG9uLT5oaWRlKCk7CiAKICAgICBp
ZiAobV92b2x1bWVTbGlkZXJDb250YWluZXIpCiAgICAgICAgIG1fdm9sdW1lU2xpZGVyQ29udGFp
bmVyLT5oaWRlKCk7Ci0gICAgaWYgKG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24gJiYgIXBh
Z2UtPnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVRvZ2dsZUNs
b3NlZENhcHRpb25zQnV0dG9uUGFydCkpCisgICAgaWYgKG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNC
dXR0b24gJiYgIXBhZ2UtPnRoZW1lKCkuaGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1l
ZGlhVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25QYXJ0KSkKICAgICAgICAgbV90b2dnbGVDbG9z
ZWRDYXB0aW9uc0J1dHRvbi0+aGlkZSgpOwogICAgIGlmIChtX2Nsb3NlZENhcHRpb25zQ29udGFp
bmVyKQogICAgICAgICBoaWRlQ2xvc2VkQ2FwdGlvblRyYWNrTGlzdCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0d0ay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzR3RrLmNwcAppbmRleCA1YzFjZDg2Li5k
NjVkMjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xz
R3RrLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIGJvb2wgTWVkaWFDb250cm9sc0d0azo6aW5pdGlh
bGl6ZUNvbnRyb2xzKERvY3VtZW50JiBkb2N1bWVudCkKICAgICBpZiAoZXhjZXB0aW9uQ29kZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGRvY3VtZW50LnBhZ2UoKS0+dGhlbWUo
KS0+c3VwcG9ydHNDbG9zZWRDYXB0aW9uaW5nKCkpIHsKKyAgICBpZiAoZG9jdW1lbnQucGFnZSgp
LT50aGVtZSgpLnN1cHBvcnRzQ2xvc2VkQ2FwdGlvbmluZygpKSB7CiAgICAgICAgIFJlZlB0cjxN
ZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0NvbnRhaW5lckVsZW1lbnQ+IGNsb3NlZENhcHRpb25z
Q29udGFpbmVyID0gTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWluZXJFbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQpOwogCiAgICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xDbG9zZWRDYXB0
aW9uc1RyYWNrTGlzdEVsZW1lbnQ+IGNsb3NlZENhcHRpb25zVHJhY2tMaXN0ID0gTWVkaWFDb250
cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIHRoaXMp
OwpAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgTWVkaWFDb250cm9sc0d0azo6cmVzZXQoKQogICAg
ICAgICByZXR1cm47CiAKICAgICBkb3VibGUgZHVyYXRpb24gPSBtX21lZGlhQ29udHJvbGxlci0+
ZHVyYXRpb24oKTsKLSAgICBtX2R1cmF0aW9uRGlzcGxheS0+c2V0SW5uZXJUZXh0KHBhZ2UtPnRo
ZW1lKCktPmZvcm1hdE1lZGlhQ29udHJvbHNUaW1lKGR1cmF0aW9uKSwgQVNTRVJUX05PX0VYQ0VQ
VElPTik7CisgICAgbV9kdXJhdGlvbkRpc3BsYXktPnNldElubmVyVGV4dChwYWdlLT50aGVtZSgp
LmZvcm1hdE1lZGlhQ29udHJvbHNUaW1lKGR1cmF0aW9uKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7
CiAgICAgbV9kdXJhdGlvbkRpc3BsYXktPnNldEN1cnJlbnRWYWx1ZShkdXJhdGlvbik7CiAKICAg
ICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbikgewpAQCAtMjM4LDcgKzIzOCw3IEBA
IHZvaWQgTWVkaWFDb250cm9sc0d0azo6dXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KCkKIAogICAg
IC8vIEFsbG93IHRoZSB0aGVtZSB0byBmb3JtYXQgdGhlIHRpbWUuCiAgICAgRXhjZXB0aW9uQ29k
ZSBleGNlcHRpb25Db2RlOwotICAgIG1fY3VycmVudFRpbWVEaXNwbGF5LT5zZXRJbm5lclRleHQo
cGFnZS0+dGhlbWUoKS0+Zm9ybWF0TWVkaWFDb250cm9sc0N1cnJlbnRUaW1lKG5vdywgZHVyYXRp
b24pLCBleGNlcHRpb25Db2RlKTsKKyAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0SW5uZXJU
ZXh0KHBhZ2UtPnRoZW1lKCkuZm9ybWF0TWVkaWFDb250cm9sc0N1cnJlbnRUaW1lKG5vdywgZHVy
YXRpb24pLCBleGNlcHRpb25Db2RlKTsKICAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0Q3Vy
cmVudFZhbHVlKG5vdyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZXRlclNoYWRvd0VsZW1lbnQuY3BwCmluZGV4IDJkNzVmYzUuLjBkMGY0MGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcApAQCAtNTcs
NyArNTcsNyBAQCBIVE1MTWV0ZXJFbGVtZW50KiBNZXRlclNoYWRvd0VsZW1lbnQ6Om1ldGVyRWxl
bWVudCgpIGNvbnN0CiBib29sIE1ldGVyU2hhZG93RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7CiAgICAgYXV0byByZW5kZXIgPSBtZXRlckVsZW1l
bnQoKS0+cmVuZGVyZXIoKTsKLSAgICByZXR1cm4gcmVuZGVyICYmICFyZW5kZXItPnRoZW1lKCkt
PnN1cHBvcnRzTWV0ZXIocmVuZGVyLT5zdHlsZSgpLmFwcGVhcmFuY2UoKSkgJiYgSFRNTERpdkVs
ZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgIHJldHVybiByZW5kZXIgJiYgIXJl
bmRlci0+dGhlbWUoKS5zdXBwb3J0c01ldGVyKHJlbmRlci0+c3R5bGUoKS5hcHBlYXJhbmNlKCkp
ICYmIEhUTUxEaXZFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsKIH0KIAogTWV0ZXJJ
bm5lckVsZW1lbnQ6Ok1ldGVySW5uZXJFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTcz
LDcgKzczLDcgQEAgYm9vbCBNZXRlcklubmVyRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgICAgIHJldHVybiBIVE1MRGl2RWxlbWVudDo6cmVu
ZGVyZXJJc05lZWRlZChzdHlsZSk7CiAKICAgICBhdXRvIHJlbmRlciA9IG1ldGVyRWxlbWVudCgp
LT5yZW5kZXJlcigpOwotICAgIHJldHVybiByZW5kZXIgJiYgIXJlbmRlci0+dGhlbWUoKS0+c3Vw
cG9ydHNNZXRlcihyZW5kZXItPnN0eWxlKCkuYXBwZWFyYW5jZSgpKSAmJiBIVE1MRGl2RWxlbWVu
dDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CisgICAgcmV0dXJuIHJlbmRlciAmJiAhcmVuZGVy
LT50aGVtZSgpLnN1cHBvcnRzTWV0ZXIocmVuZGVyLT5zdHlsZSgpLmFwcGVhcmFuY2UoKSkgJiYg
SFRNTERpdkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOwogfQogCiBSZW5kZXJFbGVt
ZW50KiBNZXRlcklubmVyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHls
ZT4gc3R5bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJU
aHVtYkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJF
bGVtZW50LmNwcAppbmRleCBhYWM4OWMyLi5iNmI4Mjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAg
aW5saW5lIHN0YXRpYyBib29sIGhhc1ZlcnRpY2FsQXBwZWFyYW5jZShIVE1MSW5wdXRFbGVtZW50
KiBpbnB1dCkKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc2xpZGVyU3R5bGUgPSBpbnB1dC0+cmVu
ZGVyZXIoKS0+c3R5bGUoKTsKIAogI2lmIEVOQUJMRShWSURFTykKLSAgICBpZiAoc2xpZGVyU3R5
bGUuYXBwZWFyYW5jZSgpID09IE1lZGlhVm9sdW1lU2xpZGVyUGFydCAmJiBpbnB1dC0+cmVuZGVy
ZXIoKS0+dGhlbWUoKS0+dXNlc1ZlcnRpY2FsVm9sdW1lU2xpZGVyKCkpCisgICAgaWYgKHNsaWRl
clN0eWxlLmFwcGVhcmFuY2UoKSA9PSBNZWRpYVZvbHVtZVNsaWRlclBhcnQgJiYgaW5wdXQtPnJl
bmRlcmVyKCktPnRoZW1lKCkudXNlc1ZlcnRpY2FsVm9sdW1lU2xpZGVyKCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogI2VuZGlmCiAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBSZW5kZXJTbGlkZXJU
aHVtYjo6dXBkYXRlQXBwZWFyYW5jZShSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpCiAgICAgZWxz
ZSBpZiAocGFyZW50U3R5bGUtPmFwcGVhcmFuY2UoKSA9PSBNZWRpYUZ1bGxTY3JlZW5Wb2x1bWVT
bGlkZXJQYXJ0KQogICAgICAgICBzdHlsZSgpLnNldEFwcGVhcmFuY2UoTWVkaWFGdWxsU2NyZWVu
Vm9sdW1lU2xpZGVyVGh1bWJQYXJ0KTsKICAgICBpZiAoc3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkp
Ci0gICAgICAgIHRoZW1lKCktPmFkanVzdFNsaWRlclRodW1iU2l6ZSgmc3R5bGUoKSwgZWxlbWVu
dCgpKTsKKyAgICAgICAgdGhlbWUoKS5hZGp1c3RTbGlkZXJUaHVtYlNpemUoJnN0eWxlKCksIGVs
ZW1lbnQoKSk7CiB9CiAKIGJvb2wgUmVuZGVyU2xpZGVyVGh1bWI6OmlzU2xpZGVyVGh1bWIoKSBj
b25zdApAQCAtMTIyLDEyICsxMjIsMTIgQEAgdm9pZCBSZW5kZXJTbGlkZXJDb250YWluZXI6OmNv
bXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3UKIAogI2lm
IEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIGlmIChpbnB1dC0+cmVuZGVyZXIoKS0+aXNT
bGlkZXIoKSAmJiAhaXNWZXJ0aWNhbCAmJiBpbnB1dC0+bGlzdCgpKSB7Ci0gICAgICAgIGludCBv
ZmZzZXRGcm9tQ2VudGVyID0gdGhlbWUoKS0+c2xpZGVyVGlja09mZnNldEZyb21UcmFja0NlbnRl
cigpOworICAgICAgICBpbnQgb2Zmc2V0RnJvbUNlbnRlciA9IHRoZW1lKCkuc2xpZGVyVGlja09m
ZnNldEZyb21UcmFja0NlbnRlcigpOwogICAgICAgICBMYXlvdXRVbml0IHRyYWNrSGVpZ2h0ID0g
MDsKICAgICAgICAgaWYgKG9mZnNldEZyb21DZW50ZXIgPCAwKQogICAgICAgICAgICAgdHJhY2tI
ZWlnaHQgPSAtMiAqIG9mZnNldEZyb21DZW50ZXI7CiAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgaW50IHRpY2tMZW5ndGggPSB0aGVtZSgpLT5zbGlkZXJUaWNrU2l6ZSgpLmhlaWdodCgpOwor
ICAgICAgICAgICAgaW50IHRpY2tMZW5ndGggPSB0aGVtZSgpLnNsaWRlclRpY2tTaXplKCkuaGVp
Z2h0KCk7CiAgICAgICAgICAgICB0cmFja0hlaWdodCA9IDIgKiAob2Zmc2V0RnJvbUNlbnRlciAr
IHRpY2tMZW5ndGgpOwogICAgICAgICB9CiAgICAgICAgIGZsb2F0IHpvb21GYWN0b3IgPSBzdHls
ZSgpLmVmZmVjdGl2ZVpvb20oKTsKQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIFNsaWRlclRodW1i
RWxlbWVudDo6c2V0UG9zaXRpb25Gcm9tUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIGFic29sdXRl
UG9pbnQpCiAgICAgRGVjaW1hbCB2YWx1ZSA9IHN0ZXBSYW5nZS5jbGFtcFZhbHVlKHN0ZXBSYW5n
ZS52YWx1ZUZyb21Qcm9wb3J0aW9uKGZyYWN0aW9uKSk7CiAKICNpZiBFTkFCTEUoREFUQUxJU1Rf
RUxFTUVOVCkKLSAgICBjb25zdCBMYXlvdXRVbml0IHNuYXBwaW5nVGhyZXNob2xkID0gcmVuZGVy
ZXIoKS0+dGhlbWUoKS0+c2xpZGVyVGlja1NuYXBwaW5nVGhyZXNob2xkKCk7CisgICAgY29uc3Qg
TGF5b3V0VW5pdCBzbmFwcGluZ1RocmVzaG9sZCA9IHJlbmRlcmVyKCktPnRoZW1lKCkuc2xpZGVy
VGlja1NuYXBwaW5nVGhyZXNob2xkKCk7CiAgICAgaWYgKHNuYXBwaW5nVGhyZXNob2xkID4gMCkg
ewogICAgICAgICBEZWNpbWFsIGNsb3Nlc3QgPSBpbnB1dC0+ZmluZENsb3Nlc3RUaWNrTWFya1Zh
bHVlKHZhbHVlKTsKICAgICAgICAgaWYgKGNsb3Nlc3QuaXNGaW5pdGUoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCmluZGV4IDQ4MjFlMTAuLmEyODE5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKQEAgLTM0MDQsNyArMzQwNCw3IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVD
b250cm9sVGludHMoKQogICAgICAgICByZXR1cm47CiAKICAgICBSZW5kZXJWaWV3KiByZW5kZXJW
aWV3ID0gdGhpcy0+cmVuZGVyVmlldygpOwotICAgIGlmICgocmVuZGVyVmlldyAmJiByZW5kZXJW
aWV3LT50aGVtZSgpLT5zdXBwb3J0c0NvbnRyb2xUaW50cygpKSB8fCBoYXNDdXN0b21TY3JvbGxi
YXJzKCkpCisgICAgaWYgKChyZW5kZXJWaWV3ICYmIHJlbmRlclZpZXctPnRoZW1lKCkuc3VwcG9y
dHNDb250cm9sVGludHMoKSkgfHwgaGFzQ3VzdG9tU2Nyb2xsYmFycygpKQogICAgICAgICBwYWlu
dENvbnRyb2xUaW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IDVmZjhlMjcuLmU2MDFkMDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oCkBAIC0xNDEsNyArMTQxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBz
ZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMoKTsKIAotICAgIFJlbmRlclRoZW1lKiB0aGVt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGhlbWUuZ2V0KCk7IH0KKyAgICBSZW5kZXJUaGVtZSYgdGhl
bWUoKSBjb25zdCB7IHJldHVybiAqbV90aGVtZTsgfQogCiAgICAgVmlld3BvcnRBcmd1bWVudHMg
dmlld3BvcnRBcmd1bWVudHMoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZVRleHRCb3guY3BwCmluZGV4IGQxMDYwZWIuLmJlZTJjNTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTEyODUsOCArMTI4NSw4IEBAIHZvaWQg
SW5saW5lVGV4dEJveDo6cGFpbnRUZXh0TWF0Y2hNYXJrZXIoR3JhcGhpY3NDb250ZXh0KiBwdCwg
Y29uc3QgRmxvYXRQb2ludCYKICAgICAvLyBPcHRpb25hbGx5IGhpZ2hsaWdodCB0aGUgdGV4dAog
ICAgIGlmIChyZW5kZXJlcigpLmZyYW1lKCkuZWRpdG9yKCkubWFya2VkVGV4dE1hdGNoZXNBcmVI
aWdobGlnaHRlZCgpKSB7CiAgICAgICAgIENvbG9yIGNvbG9yID0gbWFya2VyLT5hY3RpdmVNYXRj
aCgpID8KLSAgICAgICAgICAgIHJlbmRlcmVyKCkudGhlbWUoKS0+cGxhdGZvcm1BY3RpdmVUZXh0
U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKSA6Ci0gICAgICAgICAgICByZW5kZXJlcigpLnRoZW1lKCkt
PnBsYXRmb3JtSW5hY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKTsKKyAgICAgICAgICAg
IHJlbmRlcmVyKCkudGhlbWUoKS5wbGF0Zm9ybUFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xv
cigpIDoKKyAgICAgICAgICAgIHJlbmRlcmVyKCkudGhlbWUoKS5wbGF0Zm9ybUluYWN0aXZlVGV4
dFNlYXJjaEhpZ2hsaWdodENvbG9yKCk7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcigqcHQpOwogICAgICAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQoKnB0LCBU
ZXh0UGFpbnRTdHlsZShjb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKSk7IC8vIERvbid0IGRyYXcg
dGV4dCBhdCBhbGwhCiAgICAgICAgIHB0LT5jbGlwKEZsb2F0UmVjdChib3hPcmlnaW4ueCgpLCBi
b3hPcmlnaW4ueSgpIC0gZGVsdGFZLCBtX2xvZ2ljYWxXaWR0aCwgc2VsSGVpZ2h0KSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCAxZWQ1YzlhLi4wODJiNWEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTE3MTEsNyAr
MTcxMSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFkZFZpc3VhbE92ZXJmbG93RnJvbVRoZW1lKCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50UmVjdCBpbmZsYXRlZFJlY3QgPSBwaXhlbFNuYXBw
ZWRCb3JkZXJCb3hSZWN0KCk7Ci0gICAgdGhlbWUoKS0+YWRqdXN0UmVwYWludFJlY3QodGhpcywg
aW5mbGF0ZWRSZWN0KTsKKyAgICB0aGVtZSgpLmFkanVzdFJlcGFpbnRSZWN0KHRoaXMsIGluZmxh
dGVkUmVjdCk7CiAgICAgYWRkVmlzdWFsT3ZlcmZsb3coaW5mbGF0ZWRSZWN0KTsKIAogICAgIGlm
IChSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1RocmVhZENvbnRhaW5pbmdCbG9j
aygpKQpAQCAtNDcxMiw4ICs0NzEyLDggQEAgaW50IFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0
aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW4KICAgICAg
ICAgLy8gRklYTUU6IE1pZ2h0IGJlIGJldHRlciB0byBoYXZlIGEgY3VzdG9tIENTUyBwcm9wZXJ0
eSBpbnN0ZWFkLCBzbyB0aGF0IGlmIHRoZSB0aGVtZQogICAgICAgICAvLyBpcyB0dXJuZWQgb2Zm
LCBjaGVja2JveGVzL3JhZGlvcyB3aWxsIHN0aWxsIGhhdmUgZGVjZW50IGJhc2VsaW5lcy4KICAg
ICAgICAgLy8gRklYTUU6IE5lZWQgdG8gcGF0Y2ggZm9ybSBjb250cm9scyB0byBkZWFsIHdpdGgg
dmVydGljYWwgbGluZXMuCi0gICAgICAgIGlmIChzdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSAmJiAh
dGhlbWUoKS0+aXNDb250cm9sQ29udGFpbmVyKHN0eWxlKCkuYXBwZWFyYW5jZSgpKSkKLSAgICAg
ICAgICAgIHJldHVybiB0aGVtZSgpLT5iYXNlbGluZVBvc2l0aW9uKHRoaXMpOworICAgICAgICBp
ZiAoc3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkgJiYgIXRoZW1lKCkuaXNDb250cm9sQ29udGFpbmVy
KHN0eWxlKCkuYXBwZWFyYW5jZSgpKSkKKyAgICAgICAgICAgIHJldHVybiB0aGVtZSgpLmJhc2Vs
aW5lUG9zaXRpb24odGhpcyk7CiAgICAgICAgICAgICAKICAgICAgICAgLy8gQ1NTMi4xIHN0YXRl
cyB0aGF0IHRoZSBiYXNlbGluZSBvZiBhbiBpbmxpbmUgYmxvY2sgaXMgdGhlIGJhc2VsaW5lIG9m
IHRoZSBsYXN0IGxpbmUgYm94IGluCiAgICAgICAgIC8vIHRoZSBub3JtYWwgZmxvdy4gIFdlIG1h
a2UgYW4gZXhjZXB0aW9uIGZvciBtYXJxdWVlcywgc2luY2UgdGhlaXIgYmFzZWxpbmVzIGFyZSBt
ZWFuaW5nbGVzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCA4OTQ0
ZDczLi44NDY0MmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAt
MTIwNCw3ICsxMjA0LDcgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWkKICAgICAvLyBJZiB3ZSBo
YXZlIGEgbmF0aXZlIHRoZW1lIGFwcGVhcmFuY2UsIHBhaW50IHRoYXQgYmVmb3JlIHBhaW50aW5n
IG91ciBiYWNrZ3JvdW5kLgogICAgIC8vIFRoZSB0aGVtZSB3aWxsIHRlbGwgdXMgd2hldGhlciBv
ciBub3Qgd2Ugc2hvdWxkIGFsc28gcGFpbnQgdGhlIENTUyBiYWNrZ3JvdW5kLgogICAgIEludFJl
Y3Qgc25hcHBlZFBhaW50UmVjdChwaXhlbFNuYXBwZWRJbnRSZWN0KHBhaW50UmVjdCkpOwotICAg
IGJvb2wgdGhlbWVQYWludGVkID0gc3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkgJiYgIXRoZW1lKCkt
PnBhaW50KHRoaXMsIHBhaW50SW5mbywgc25hcHBlZFBhaW50UmVjdCk7CisgICAgYm9vbCB0aGVt
ZVBhaW50ZWQgPSBzdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSAmJiAhdGhlbWUoKS5wYWludCh0aGlz
LCBwYWludEluZm8sIHNuYXBwZWRQYWludFJlY3QpOwogICAgIGlmICghdGhlbWVQYWludGVkKSB7
CiAgICAgICAgIGlmIChibGVlZEF2b2lkYW5jZSA9PSBCYWNrZ3JvdW5kQmxlZWRCYWNrZ3JvdW5k
T3ZlckJvcmRlcikKICAgICAgICAgICAgIHBhaW50Qm9yZGVyKHBhaW50SW5mbywgcGFpbnRSZWN0
LCAmc3R5bGUoKSwgYmxlZWRBdm9pZGFuY2UpOwpAQCAtMTIxMiwxMiArMTIxMiwxMiBAQCB2b2lk
IFJlbmRlckJveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQmIHBhaQogICAgICAgICBwYWludEJhY2tncm91bmQocGFpbnRJbmZvLCBw
YWludFJlY3QsIGJsZWVkQXZvaWRhbmNlKTsKIAogICAgICAgICBpZiAoc3R5bGUoKS5oYXNBcHBl
YXJhbmNlKCkpCi0gICAgICAgICAgICB0aGVtZSgpLT5wYWludERlY29yYXRpb25zKHRoaXMsIHBh
aW50SW5mbywgc25hcHBlZFBhaW50UmVjdCk7CisgICAgICAgICAgICB0aGVtZSgpLnBhaW50RGVj
b3JhdGlvbnModGhpcywgcGFpbnRJbmZvLCBzbmFwcGVkUGFpbnRSZWN0KTsKICAgICB9CiAgICAg
cGFpbnRCb3hTaGFkb3cocGFpbnRJbmZvLCBwYWludFJlY3QsICZzdHlsZSgpLCBJbnNldCk7CiAK
ICAgICAvLyBUaGUgdGhlbWUgd2lsbCB0ZWxsIHVzIHdoZXRoZXIgb3Igbm90IHdlIHNob3VsZCBh
bHNvIHBhaW50IHRoZSBDU1MgYm9yZGVyLgotICAgIGlmIChibGVlZEF2b2lkYW5jZSAhPSBCYWNr
Z3JvdW5kQmxlZWRCYWNrZ3JvdW5kT3ZlckJvcmRlciAmJiAoIXN0eWxlKCkuaGFzQXBwZWFyYW5j
ZSgpIHx8ICghdGhlbWVQYWludGVkICYmIHRoZW1lKCktPnBhaW50Qm9yZGVyT25seSh0aGlzLCBw
YWludEluZm8sIHNuYXBwZWRQYWludFJlY3QpKSkgJiYgc3R5bGUoKS5oYXNCb3JkZXIoKSkKKyAg
ICBpZiAoYmxlZWRBdm9pZGFuY2UgIT0gQmFja2dyb3VuZEJsZWVkQmFja2dyb3VuZE92ZXJCb3Jk
ZXIgJiYgKCFzdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSB8fCAoIXRoZW1lUGFpbnRlZCAmJiB0aGVt
ZSgpLnBhaW50Qm9yZGVyT25seSh0aGlzLCBwYWludEluZm8sIHNuYXBwZWRQYWludFJlY3QpKSkg
JiYgc3R5bGUoKS5oYXNCb3JkZXIoKSkKICAgICAgICAgcGFpbnRCb3JkZXIocGFpbnRJbmZvLCBw
YWludFJlY3QsICZzdHlsZSgpLCBibGVlZEF2b2lkYW5jZSk7CiAKICAgICBpZiAoYmxlZWRBdm9p
ZGFuY2UgPT0gQmFja2dyb3VuZEJsZWVkVXNlVHJhbnNwYXJlbmN5TGF5ZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCmluZGV4IGRmMzFjMjYuLjhkM2UxYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCkBAIC0xMTIsMTIgKzEx
MiwxMiBAQCB2b2lkIFJlbmRlckJ1dHRvbjo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNl
IGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdAogICAgIGlmIChtX2lubmVyKSAvLyBSZW5k
ZXJCbG9jayBoYW5kbGVkIHVwZGF0aW5nIHRoZSBhbm9ueW1vdXMgYmxvY2sncyBzdHlsZS4KICAg
ICAgICAgc2V0dXBJbm5lclN0eWxlKCZtX2lubmVyLT5zdHlsZSgpKTsKIAotICAgIGlmICghbV9k
ZWZhdWx0ICYmIHRoZW1lKCktPmlzRGVmYXVsdCh0aGlzKSkgeworICAgIGlmICghbV9kZWZhdWx0
ICYmIHRoZW1lKCkuaXNEZWZhdWx0KHRoaXMpKSB7CiAgICAgICAgIGlmICghbV90aW1lcikKICAg
ICAgICAgICAgIG1fdGltZXIgPSBhZG9wdFB0cihuZXcgVGltZXI8UmVuZGVyQnV0dG9uPih0aGlz
LCAmUmVuZGVyQnV0dG9uOjp0aW1lckZpcmVkKSk7CiAgICAgICAgIG1fdGltZXItPnN0YXJ0UmVw
ZWF0aW5nKDAuMDMpOwogICAgICAgICBtX2RlZmF1bHQgPSB0cnVlOwotICAgIH0gZWxzZSBpZiAo
bV9kZWZhdWx0ICYmICF0aGVtZSgpLT5pc0RlZmF1bHQodGhpcykpIHsKKyAgICB9IGVsc2UgaWYg
KG1fZGVmYXVsdCAmJiAhdGhlbWUoKS5pc0RlZmF1bHQodGhpcykpIHsKICAgICAgICAgbV9kZWZh
dWx0ID0gZmFsc2U7CiAgICAgICAgIG1fdGltZXIuY2xlYXIoKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAppbmRl
eCAyMDdkZjI1Li40N2U0NzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIFJl
bmRlckZpbGVVcGxvYWRDb250cm9sOjpjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlv
dXRVbml0JiBtaW5Mb2dpYwogICAgIFJlbmRlckZpbGVVcGxvYWRDb250cm9sKiByZW5kZXJlciA9
IGNvbnN0X2Nhc3Q8UmVuZGVyRmlsZVVwbG9hZENvbnRyb2wqPih0aGlzKTsKICAgICBmbG9hdCBt
aW5EZWZhdWx0TGFiZWxXaWR0aCA9IGRlZmF1bHRXaWR0aE51bUNoYXJzICogZm9udC53aWR0aChj
b25zdHJ1Y3RUZXh0UnVuKHJlbmRlcmVyLCBmb250LCBjaGFyYWN0ZXJBc1N0cmluZywgc3R5bGUo
KSwgVGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbikpOwogCi0gICAgY29uc3QgU3RyaW5n
IGxhYmVsID0gdGhlbWUoKS0+ZmlsZUxpc3REZWZhdWx0TGFiZWwoaW5wdXRFbGVtZW50KCkubXVs
dGlwbGUoKSk7CisgICAgY29uc3QgU3RyaW5nIGxhYmVsID0gdGhlbWUoKS5maWxlTGlzdERlZmF1
bHRMYWJlbChpbnB1dEVsZW1lbnQoKS5tdWx0aXBsZSgpKTsKICAgICBmbG9hdCBkZWZhdWx0TGFi
ZWxXaWR0aCA9IGZvbnQud2lkdGgoY29uc3RydWN0VGV4dFJ1bihyZW5kZXJlciwgZm9udCwgbGFi
ZWwsIHN0eWxlKCksIFRleHRSdW46OkFsbG93VHJhaWxpbmdFeHBhbnNpb24pKTsKICAgICBpZiAo
SFRNTElucHV0RWxlbWVudCogYnV0dG9uID0gdXBsb2FkQnV0dG9uKCkpCiAgICAgICAgIGlmIChS
ZW5kZXJPYmplY3QqIGJ1dHRvblJlbmRlcmVyID0gYnV0dG9uLT5yZW5kZXJlcigpKQpAQCAtMjc4
LDcgKzI3OCw3IEBAIFN0cmluZyBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6ZmlsZVRleHRWYWx1
ZSgpIGNvbnN0CiAgICAgaWYgKGlucHV0RWxlbWVudCgpLmZpbGVzKCktPmxlbmd0aCgpKQogICAg
ICAgICByZXR1cm4gU3RyaW5nVHJ1bmNhdG9yOjpyaWdodFRydW5jYXRlKGlucHV0RWxlbWVudCgp
LmRpc3BsYXlTdHJpbmcoKSwgbWF4RmlsZW5hbWVXaWR0aCgpLCBzdHlsZSgpLmZvbnQoKSwgU3Ry
aW5nVHJ1bmNhdG9yOjpFbmFibGVSb3VuZGluZ0hhY2tzKTsKICNlbmRpZgotICAgIHJldHVybiB0
aGVtZSgpLT5maWxlTGlzdE5hbWVGb3JXaWR0aChpbnB1dEVsZW1lbnQoKS5maWxlcygpLCBzdHls
ZSgpLmZvbnQoKSwgbWF4RmlsZW5hbWVXaWR0aCgpLCBpbnB1dEVsZW1lbnQoKS5tdWx0aXBsZSgp
KTsKKyAgICByZXR1cm4gdGhlbWUoKS5maWxlTGlzdE5hbWVGb3JXaWR0aChpbnB1dEVsZW1lbnQo
KS5maWxlcygpLCBzdHlsZSgpLmZvbnQoKSwgbWF4RmlsZW5hbWVXaWR0aCgpLCBpbnB1dEVsZW1l
bnQoKS5tdWx0aXBsZSgpKTsKIH0KICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAppbmRleCA5MTUxYTY1
Li43MWFlMTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxv
d1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJl
YWQuY3BwCkBAIC0xMzU1LDcgKzEzNTUsNyBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmFkZFJl
Z2lvbnNWaXN1YWxPdmVyZmxvd0Zyb21UaGVtZShjb25zdCBSZW5kZXJCbG9jayogYmxvYwogICAg
ICAgICBib3JkZXJCb3ggPSByZWdpb24tPnJlY3RGbG93UG9ydGlvbkZvckJveChibG9jaywgYm9y
ZGVyQm94KTsKIAogICAgICAgICBJbnRSZWN0IGluZmxhdGVkUmVjdCA9IHBpeGVsU25hcHBlZElu
dFJlY3QoYm9yZGVyQm94KTsKLSAgICAgICAgYmxvY2stPnRoZW1lKCktPmFkanVzdFJlcGFpbnRS
ZWN0KGJsb2NrLCBpbmZsYXRlZFJlY3QpOworICAgICAgICBibG9jay0+dGhlbWUoKS5hZGp1c3RS
ZXBhaW50UmVjdChibG9jaywgaW5mbGF0ZWRSZWN0KTsKIAogICAgICAgICByZWdpb24tPmFkZFZp
c3VhbE92ZXJmbG93Rm9yQm94KGJsb2NrLCBpbmZsYXRlZFJlY3QpOwogICAgICAgICBpZiAocmVn
aW9uID09IGVuZFJlZ2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5j
cHAKaW5kZXggNjY5NTFlNy4uNDY5ODZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5jcHAKQEAgLTE0NjEsNyArMTQ2MSw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpw
YWludE91dGxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWlu
dE9mCiAgICAgCiAgICAgUmVuZGVyU3R5bGUmIHN0eWxlVG9Vc2UgPSBzdHlsZSgpOwogICAgIGlm
IChzdHlsZVRvVXNlLm91dGxpbmVTdHlsZUlzQXV0bygpIHx8IGhhc091dGxpbmVBbm5vdGF0aW9u
KCkpIHsKLSAgICAgICAgaWYgKCF0aGVtZSgpLT5zdXBwb3J0c0ZvY3VzUmluZygmc3R5bGVUb1Vz
ZSkpIHsKKyAgICAgICAgaWYgKCF0aGVtZSgpLnN1cHBvcnRzRm9jdXNSaW5nKCZzdHlsZVRvVXNl
KSkgewogICAgICAgICAgICAgLy8gT25seSBwYWludCB0aGUgZm9jdXMgcmluZyBieSBoYW5kIGlm
IHRoZSB0aGVtZSBpc24ndCBhYmxlIHRvIGRyYXcgdGhlIGZvY3VzIHJpbmcuCiAgICAgICAgICAg
ICBwYWludEZvY3VzUmluZyhwYWludEluZm8sIHBhaW50T2Zmc2V0LCAmc3R5bGVUb1VzZSk7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRl
eCAyZjg5ZDQwLi44NWIwMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RCb3guY3BwCkBAIC0zOTksMTAgKzM5OSwxMCBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50
SXRlbUZvcmVncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50Jgog
ICAgIENvbG9yIHRleHRDb2xvciA9IGxpc3RJdGVtRWxlbWVudC0+cmVuZGVyU3R5bGUoKSA/IGxp
c3RJdGVtRWxlbWVudC0+cmVuZGVyU3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1By
b3BlcnR5Q29sb3IpIDogc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlD
b2xvcik7CiAgICAgaWYgKGlzT3B0aW9uRWxlbWVudCAmJiB0b0hUTUxPcHRpb25FbGVtZW50KGxp
c3RJdGVtRWxlbWVudCktPnNlbGVjdGVkKCkpIHsKICAgICAgICAgaWYgKGZyYW1lKCkuc2VsZWN0
aW9uKCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkgJiYgZG9jdW1lbnQoKS5mb2N1c2VkRWxlbWVudCgp
ID09ICZzZWxlY3RFbGVtZW50KCkpCi0gICAgICAgICAgICB0ZXh0Q29sb3IgPSB0aGVtZSgpLT5h
Y3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCk7CisgICAgICAgICAgICB0ZXh0
Q29sb3IgPSB0aGVtZSgpLmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKTsK
ICAgICAgICAgLy8gSG9ub3IgdGhlIGZvcmVncm91bmQgY29sb3IgZm9yIGRpc2FibGVkIGl0ZW1z
CiAgICAgICAgIGVsc2UgaWYgKCFsaXN0SXRlbUVsZW1lbnQtPmlzRGlzYWJsZWRGb3JtQ29udHJv
bCgpICYmICFzZWxlY3RFbGVtZW50KCkuaXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCi0gICAgICAg
ICAgICB0ZXh0Q29sb3IgPSB0aGVtZSgpLT5pbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3Jv
dW5kQ29sb3IoKTsKKyAgICAgICAgICAgIHRleHRDb2xvciA9IHRoZW1lKCkuaW5hY3RpdmVMaXN0
Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCk7CiAgICAgfQogCiAgICAgQ29sb3JTcGFjZSBj
b2xvclNwYWNlID0gaXRlbVN0eWxlLT5jb2xvclNwYWNlKCk7CkBAIC00MzIsOSArNDMyLDkgQEAg
dm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1CYWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICBDb2xvciBiYWNrQ29sb3I7CiAgICAgaWYgKGlz
SFRNTE9wdGlvbkVsZW1lbnQobGlzdEl0ZW1FbGVtZW50KSAmJiB0b0hUTUxPcHRpb25FbGVtZW50
KGxpc3RJdGVtRWxlbWVudCktPnNlbGVjdGVkKCkpIHsKICAgICAgICAgaWYgKGZyYW1lKCkuc2Vs
ZWN0aW9uKCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkgJiYgZG9jdW1lbnQoKS5mb2N1c2VkRWxlbWVu
dCgpID09ICZzZWxlY3RFbGVtZW50KCkpCi0gICAgICAgICAgICBiYWNrQ29sb3IgPSB0aGVtZSgp
LT5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCk7CisgICAgICAgICAgICBi
YWNrQ29sb3IgPSB0aGVtZSgpLmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3Io
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYmFja0NvbG9yID0gdGhlbWUoKS0+aW5hY3Rp
dmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCk7CisgICAgICAgICAgICBiYWNrQ29s
b3IgPSB0aGVtZSgpLmluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpOwog
ICAgIH0gZWxzZQogICAgICAgICBiYWNrQ29sb3IgPSBsaXN0SXRlbUVsZW1lbnQtPnJlbmRlclN0
eWxlKCkgPyBsaXN0SXRlbUVsZW1lbnQtPnJlbmRlclN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikgOiBzdHlsZSgpLnZpc2l0ZWREZXBlbmRl
bnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAKQEAgLTgwNyw3ICs4MDcsNyBA
QCBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gUmVuZGVyTGlzdEJveDo6Y3JlYXRlU2Nyb2xsYmFyKCkK
ICAgICBpZiAoaGFzQ3VzdG9tU2Nyb2xsYmFyU3R5bGUpCiAgICAgICAgIHdpZGdldCA9IFJlbmRl
clNjcm9sbGJhcjo6Y3JlYXRlQ3VzdG9tU2Nyb2xsYmFyKHRoaXMsIFZlcnRpY2FsU2Nyb2xsYmFy
LCAmc2VsZWN0RWxlbWVudCgpKTsKICAgICBlbHNlIHsKLSAgICAgICAgd2lkZ2V0ID0gU2Nyb2xs
YmFyOjpjcmVhdGVOYXRpdmVTY3JvbGxiYXIodGhpcywgVmVydGljYWxTY3JvbGxiYXIsIHRoZW1l
KCktPnNjcm9sbGJhckNvbnRyb2xTaXplRm9yUGFydChMaXN0Ym94UGFydCkpOworICAgICAgICB3
aWRnZXQgPSBTY3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcih0aGlzLCBWZXJ0aWNhbFNj
cm9sbGJhciwgdGhlbWUoKS5zY3JvbGxiYXJDb250cm9sU2l6ZUZvclBhcnQoTGlzdGJveFBhcnQp
KTsKICAgICAgICAgZGlkQWRkU2Nyb2xsYmFyKHdpZGdldC5nZXQoKSwgVmVydGljYWxTY3JvbGxi
YXIpOwogICAgIH0KICAgICB2aWV3KCkuZnJhbWVWaWV3KCkuYWRkQ2hpbGQod2lkZ2V0LmdldCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRy
b2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwCmluZGV4IDkxNjMwOGEuLjdkZTk4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcApA
QCAtNTQsNyArNTQsNyBAQCB2b2lkIFJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyOjps
YXlvdXQoKQogCiAgICAgLy8gSWYgdGhlIHNsaWRlciB3b3VsZCBiZSByZW5kZXJlZCBvdXRzaWRl
IHRoZSBwYWdlLCBpdCBzaG91bGQgYmUgbW92ZWQgYmVsb3cgdGhlIGNvbnRyb2xzLgogICAgIGlm
IChVTkxJS0VMWShhYnNvbHV0ZU9mZnNldFRvcCA8IDApKQotICAgICAgICBzZXRZKGJ1dHRvbkJv
eC0+b2Zmc2V0VG9wKCkgKyB0aGVtZSgpLT52b2x1bWVTbGlkZXJPZmZzZXRGcm9tTXV0ZUJ1dHRv
bihidXR0b25Cb3gsIHBpeGVsU25hcHBlZFNpemUoKSkueSgpKTsKKyAgICAgICAgc2V0WShidXR0
b25Cb3gtPm9mZnNldFRvcCgpICsgdGhlbWUoKS52b2x1bWVTbGlkZXJPZmZzZXRGcm9tTXV0ZUJ1
dHRvbihidXR0b25Cb3gsIHBpeGVsU25hcHBlZFNpemUoKSkueSgpKTsKIH0KIAogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
ZW51TGlzdC5jcHAKaW5kZXggYjYxMmI1YS4uNmZkNTZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCkBAIC0xMzAsMTAgKzEzMCwxMCBAQCB2b2lkIFJl
bmRlck1lbnVMaXN0OjphZGp1c3RJbm5lclN0eWxlKCkKICAgICAgICAgaW5uZXJTdHlsZS5zZXRB
bGlnblNlbGYoQWxpZ25GbGV4U3RhcnQpOwogICAgIH0KIAotICAgIGlubmVyU3R5bGUuc2V0UGFk
ZGluZ0xlZnQoTGVuZ3RoKHRoZW1lKCktPnBvcHVwSW50ZXJuYWxQYWRkaW5nTGVmdCgmc3R5bGUo
KSksIEZpeGVkKSk7Ci0gICAgaW5uZXJTdHlsZS5zZXRQYWRkaW5nUmlnaHQoTGVuZ3RoKHRoZW1l
KCktPnBvcHVwSW50ZXJuYWxQYWRkaW5nUmlnaHQoJnN0eWxlKCkpLCBGaXhlZCkpOwotICAgIGlu
bmVyU3R5bGUuc2V0UGFkZGluZ1RvcChMZW5ndGgodGhlbWUoKS0+cG9wdXBJbnRlcm5hbFBhZGRp
bmdUb3AoJnN0eWxlKCkpLCBGaXhlZCkpOwotICAgIGlubmVyU3R5bGUuc2V0UGFkZGluZ0JvdHRv
bShMZW5ndGgodGhlbWUoKS0+cG9wdXBJbnRlcm5hbFBhZGRpbmdCb3R0b20oJnN0eWxlKCkpLCBG
aXhlZCkpOworICAgIGlubmVyU3R5bGUuc2V0UGFkZGluZ0xlZnQoTGVuZ3RoKHRoZW1lKCkucG9w
dXBJbnRlcm5hbFBhZGRpbmdMZWZ0KCZzdHlsZSgpKSwgRml4ZWQpKTsKKyAgICBpbm5lclN0eWxl
LnNldFBhZGRpbmdSaWdodChMZW5ndGgodGhlbWUoKS5wb3B1cEludGVybmFsUGFkZGluZ1JpZ2h0
KCZzdHlsZSgpKSwgRml4ZWQpKTsKKyAgICBpbm5lclN0eWxlLnNldFBhZGRpbmdUb3AoTGVuZ3Ro
KHRoZW1lKCkucG9wdXBJbnRlcm5hbFBhZGRpbmdUb3AoJnN0eWxlKCkpLCBGaXhlZCkpOworICAg
IGlubmVyU3R5bGUuc2V0UGFkZGluZ0JvdHRvbShMZW5ndGgodGhlbWUoKS5wb3B1cEludGVybmFs
UGFkZGluZ0JvdHRvbSgmc3R5bGUoKSksIEZpeGVkKSk7CiAKICAgICBpZiAoZG9jdW1lbnQoKS5w
YWdlKCktPmNocm9tZSgpLnNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCkpIHsK
ICAgICAgICAgLy8gSXRlbXMgaW4gdGhlIHBvcHVwIHdpbGwgbm90IHJlc3BlY3QgdGhlIENTUyB0
ZXh0LWFsaWduIGFuZCBkaXJlY3Rpb24gcHJvcGVydGllcywKQEAgLTIyMyw3ICsyMjMsNyBAQCB2
b2lkIFJlbmRlck1lbnVMaXN0Ojp1cGRhdGVPcHRpb25zV2lkdGgoKQogCiAgICAgICAgIFN0cmlu
ZyB0ZXh0ID0gdG9IVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KS0+dGV4dEluZGVudGVkVG9SZXNw
ZWN0R3JvdXBMYWJlbCgpOwogICAgICAgICBhcHBseVRleHRUcmFuc2Zvcm0oc3R5bGUoKSwgdGV4
dCwgJyAnKTsKLSAgICAgICAgaWYgKHRoZW1lKCktPnBvcHVwT3B0aW9uU3VwcG9ydHNUZXh0SW5k
ZW50KCkpIHsKKyAgICAgICAgaWYgKHRoZW1lKCkucG9wdXBPcHRpb25TdXBwb3J0c1RleHRJbmRl
bnQoKSkgewogICAgICAgICAgICAgLy8gQWRkIGluIHRoZSBvcHRpb24ncyB0ZXh0IGluZGVudC4g
IFdlIGNhbid0IGNhbGN1bGF0ZSBwZXJjZW50YWdlIHZhbHVlcyBmb3Igbm93LgogICAgICAgICAg
ICAgZmxvYXQgb3B0aW9uV2lkdGggPSAwOwogICAgICAgICAgICAgaWYgKFJlbmRlclN0eWxlKiBv
cHRpb25TdHlsZSA9IGVsZW1lbnQtPnJlbmRlclN0eWxlKCkpCkBAIC0zMjQsNyArMzI0LDcgQEAg
TGF5b3V0UmVjdCBSZW5kZXJNZW51TGlzdDo6Y29udHJvbENsaXBSZWN0KGNvbnN0IExheW91dFBv
aW50JiBhZGRpdGlvbmFsT2Zmc2V0KQogCiB2b2lkIFJlbmRlck1lbnVMaXN0Ojpjb21wdXRlSW50
cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVu
aXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3QKIHsKLSAgICBtYXhMb2dpY2FsV2lkdGggPSBzdGQ6
Om1heChtX29wdGlvbnNXaWR0aCwgdGhlbWUoKS0+bWluaW11bU1lbnVMaXN0U2l6ZSgmc3R5bGUo
KSkpICsgbV9pbm5lckJsb2NrLT5wYWRkaW5nTGVmdCgpICsgbV9pbm5lckJsb2NrLT5wYWRkaW5n
UmlnaHQoKTsKKyAgICBtYXhMb2dpY2FsV2lkdGggPSBzdGQ6Om1heChtX29wdGlvbnNXaWR0aCwg
dGhlbWUoKS5taW5pbXVtTWVudUxpc3RTaXplKCZzdHlsZSgpKSkgKyBtX2lubmVyQmxvY2stPnBh
ZGRpbmdMZWZ0KCkgKyBtX2lubmVyQmxvY2stPnBhZGRpbmdSaWdodCgpOwogICAgIGlmICghc3R5
bGUoKS53aWR0aCgpLmlzUGVyY2VudCgpKQogICAgICAgICBtaW5Mb2dpY2FsV2lkdGggPSBtYXhM
b2dpY2FsV2lkdGg7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTWV0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNwcApp
bmRleCAwMTA2ZmJkLi43MmViNmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTWV0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
ZXRlci5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBSZW5kZXJNZXRlcjo6dXBkYXRlTG9naWNh
bFdpZHRoKCkKIHsKICAgICBSZW5kZXJCb3g6OnVwZGF0ZUxvZ2ljYWxXaWR0aCgpOwogCi0gICAg
SW50U2l6ZSBmcmFtZVNpemUgPSB0aGVtZSgpLT5tZXRlclNpemVGb3JCb3VuZHModGhpcywgcGl4
ZWxTbmFwcGVkSW50UmVjdChmcmFtZVJlY3QoKSkpOworICAgIEludFNpemUgZnJhbWVTaXplID0g
dGhlbWUoKS5tZXRlclNpemVGb3JCb3VuZHModGhpcywgcGl4ZWxTbmFwcGVkSW50UmVjdChmcmFt
ZVJlY3QoKSkpOwogICAgIHNldExvZ2ljYWxXaWR0aChpc0hvcml6b250YWxXcml0aW5nTW9kZSgp
ID8gZnJhbWVTaXplLndpZHRoKCkgOiBmcmFtZVNpemUuaGVpZ2h0KCkpOwogfQogCkBAIC02Nyw3
ICs2Nyw3IEBAIHZvaWQgUmVuZGVyTWV0ZXI6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVu
aXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpCiAgICAgICAgIGZyYW1lLnNldEhlaWdo
dChjb21wdXRlZFZhbHVlcy5tX2V4dGVudCk7CiAgICAgZWxzZQogICAgICAgICBmcmFtZS5zZXRX
aWR0aChjb21wdXRlZFZhbHVlcy5tX2V4dGVudCk7Ci0gICAgSW50U2l6ZSBmcmFtZVNpemUgPSB0
aGVtZSgpLT5tZXRlclNpemVGb3JCb3VuZHModGhpcywgcGl4ZWxTbmFwcGVkSW50UmVjdChmcmFt
ZSkpOworICAgIEludFNpemUgZnJhbWVTaXplID0gdGhlbWUoKS5tZXRlclNpemVGb3JCb3VuZHMo
dGhpcywgcGl4ZWxTbmFwcGVkSW50UmVjdChmcmFtZSkpOwogICAgIGNvbXB1dGVkVmFsdWVzLm1f
ZXh0ZW50ID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGZyYW1lU2l6ZS5oZWlnaHQoKSA6
IGZyYW1lU2l6ZS53aWR0aCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCmluZGV4IDFkYTRjNTUuLmE0MDJkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xMzAsMTAgKzEzMCw5IEBAIFJlbmRlck9iamVjdDo6
flJlbmRlck9iamVjdCgpCiAgICAgdmlldygpLmRpZERlc3Ryb3lSZW5kZXJlcigpOwogfQogCi1S
ZW5kZXJUaGVtZSogUmVuZGVyT2JqZWN0Ojp0aGVtZSgpIGNvbnN0CitSZW5kZXJUaGVtZSYgUmVu
ZGVyT2JqZWN0Ojp0aGVtZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRvY3VtZW50KCkucGFnZSgp
KTsKLQogICAgIHJldHVybiBkb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUoKTsKIH0KIApAQCAtMTAx
Niw3ICsxMDE1LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnBhaW50T3V0bGluZShQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnRSZWMKICAgICBpbnQgb3V0bGluZU9m
ZnNldCA9IHN0eWxlVG9Vc2Uub3V0bGluZU9mZnNldCgpOwogCiAgICAgaWYgKHN0eWxlVG9Vc2Uu
b3V0bGluZVN0eWxlSXNBdXRvKCkgfHwgaGFzT3V0bGluZUFubm90YXRpb24oKSkgewotICAgICAg
ICBpZiAoIXRoZW1lKCktPnN1cHBvcnRzRm9jdXNSaW5nKCZzdHlsZVRvVXNlKSkgeworICAgICAg
ICBpZiAoIXRoZW1lKCkuc3VwcG9ydHNGb2N1c1JpbmcoJnN0eWxlVG9Vc2UpKSB7CiAgICAgICAg
ICAgICAvLyBPbmx5IHBhaW50IHRoZSBmb2N1cyByaW5nIGJ5IGhhbmQgaWYgdGhlIHRoZW1lIGlz
bid0IGFibGUgdG8gZHJhdyB0aGUgZm9jdXMgcmluZy4KICAgICAgICAgICAgIHBhaW50Rm9jdXNS
aW5nKHBhaW50SW5mbywgcGFpbnRSZWN0LmxvY2F0aW9uKCksICZzdHlsZVRvVXNlKTsKICAgICAg
ICAgfQpAQCAtMTQ1Niw3ICsxNDU1LDcgQEAgQ29sb3IgUmVuZGVyT2JqZWN0OjpzZWxlY3Rpb25C
YWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogICAgICAgICAgICAgaWYgKHBzZXVkb1N0eWxlICYmIHBz
ZXVkb1N0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IpLmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICBjb2xvciA9IHBzZXVkb1N0eWxlLT52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLmJsZW5kV2l0aFdo
aXRlKCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29sb3IgPSBmcmFtZSgp
LnNlbGVjdGlvbigpLmlzRm9jdXNlZEFuZEFjdGl2ZSgpID8gdGhlbWUoKS0+YWN0aXZlU2VsZWN0
aW9uQmFja2dyb3VuZENvbG9yKCkgOiB0aGVtZSgpLT5pbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91
bmRDb2xvcigpOworICAgICAgICAgICAgICAgIGNvbG9yID0gZnJhbWUoKS5zZWxlY3Rpb24oKS5p
c0ZvY3VzZWRBbmRBY3RpdmUoKSA/IHRoZW1lKCkuYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENv
bG9yKCkgOiB0aGVtZSgpLmluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCk7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTE0NzgsOCArMTQ3Nyw4IEBAIENvbG9yIFJlbmRlck9iamVjdDo6
c2VsZWN0aW9uQ29sb3IoaW50IGNvbG9yUHJvcGVydHkpIGNvbnN0CiAgICAgICAgICAgICBjb2xv
ciA9IHBzZXVkb1N0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcik7
CiAgICAgfSBlbHNlCiAgICAgICAgIGNvbG9yID0gZnJhbWUoKS5zZWxlY3Rpb24oKS5pc0ZvY3Vz
ZWRBbmRBY3RpdmUoKSA/Ci0gICAgICAgICAgICAgICAgdGhlbWUoKS0+YWN0aXZlU2VsZWN0aW9u
Rm9yZWdyb3VuZENvbG9yKCkgOgotICAgICAgICAgICAgICAgIHRoZW1lKCktPmluYWN0aXZlU2Vs
ZWN0aW9uRm9yZWdyb3VuZENvbG9yKCk7CisgICAgICAgICAgICAgICAgdGhlbWUoKS5hY3RpdmVT
ZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSA6CisgICAgICAgICAgICAgICAgdGhlbWUoKS5pbmFj
dGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpOwogCiAgICAgcmV0dXJuIGNvbG9yOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDIxMjk4ODIuLjMwMGZm
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTE1OSw3ICsx
NTksNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgUmVuZGVyT2JqZWN0KE5vZGUmKTsKICAgICB2
aXJ0dWFsIH5SZW5kZXJPYmplY3QoKTsKIAotICAgIFJlbmRlclRoZW1lKiB0aGVtZSgpIGNvbnN0
OworICAgIFJlbmRlclRoZW1lJiB0aGVtZSgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBjb25zdCBj
aGFyKiByZW5kZXJOYW1lKCkgY29uc3QgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclByb2dyZXNzLmNwcAppbmRleCAzNzg5ZDc3Li5mMzRlMGE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9p
ZCBSZW5kZXJQcm9ncmVzczo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2Fs
SGVpZ2h0LCBMYXlvdXRVbml0IGwKICAgICAgICAgZnJhbWUuc2V0SGVpZ2h0KGNvbXB1dGVkVmFs
dWVzLm1fZXh0ZW50KTsKICAgICBlbHNlCiAgICAgICAgIGZyYW1lLnNldFdpZHRoKGNvbXB1dGVk
VmFsdWVzLm1fZXh0ZW50KTsKLSAgICBJbnRTaXplIGZyYW1lU2l6ZSA9IHRoZW1lKCktPnByb2dy
ZXNzQmFyUmVjdEZvckJvdW5kcyh0aGlzLCBwaXhlbFNuYXBwZWRJbnRSZWN0KGZyYW1lKSkuc2l6
ZSgpOworICAgIEludFNpemUgZnJhbWVTaXplID0gdGhlbWUoKS5wcm9ncmVzc0JhclJlY3RGb3JC
b3VuZHModGhpcywgcGl4ZWxTbmFwcGVkSW50UmVjdChmcmFtZSkpLnNpemUoKTsKICAgICBjb21w
dXRlZFZhbHVlcy5tX2V4dGVudCA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBmcmFtZVNp
emUuaGVpZ2h0KCkgOiBmcmFtZVNpemUud2lkdGgoKTsKIH0KIApAQCAtOTYsOCArOTYsOCBAQCB2
b2lkIFJlbmRlclByb2dyZXNzOjphbmltYXRpb25UaW1lckZpcmVkKFRpbWVyPFJlbmRlclByb2dy
ZXNzPiopCiAKIHZvaWQgUmVuZGVyUHJvZ3Jlc3M6OnVwZGF0ZUFuaW1hdGlvblN0YXRlKCkKIHsK
LSAgICBtX2FuaW1hdGlvbkR1cmF0aW9uID0gdGhlbWUoKS0+YW5pbWF0aW9uRHVyYXRpb25Gb3JQ
cm9ncmVzc0Jhcih0aGlzKTsKLSAgICBtX2FuaW1hdGlvblJlcGVhdEludGVydmFsID0gdGhlbWUo
KS0+YW5pbWF0aW9uUmVwZWF0SW50ZXJ2YWxGb3JQcm9ncmVzc0Jhcih0aGlzKTsKKyAgICBtX2Fu
aW1hdGlvbkR1cmF0aW9uID0gdGhlbWUoKS5hbmltYXRpb25EdXJhdGlvbkZvclByb2dyZXNzQmFy
KHRoaXMpOworICAgIG1fYW5pbWF0aW9uUmVwZWF0SW50ZXJ2YWwgPSB0aGVtZSgpLmFuaW1hdGlv
blJlcGVhdEludGVydmFsRm9yUHJvZ3Jlc3NCYXIodGhpcyk7CiAKICAgICBib29sIGFuaW1hdGlu
ZyA9IHN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpICYmIG1fYW5pbWF0aW9uRHVyYXRpb24gPiAwOwog
ICAgIGlmIChhbmltYXRpbmcgPT0gbV9hbmltYXRpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAppbmRleCA5NmM1ZDIwLi5hY2U1ZmM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKQEAgLTkx
LDcgKzkxLDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6YWRqdXN0SW5uZXJUZXh0U3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUsIFJlbmQKIAogICAgIGJvb2wgZGlzYWJsZWQg
PSB1cGRhdGVVc2VyTW9kaWZ5UHJvcGVydHkodGV4dEZvcm1Db250cm9sRWxlbWVudCgpLCB0ZXh0
QmxvY2tTdHlsZSk7CiAgICAgaWYgKGRpc2FibGVkKQotICAgICAgICB0ZXh0QmxvY2tTdHlsZS0+
c2V0Q29sb3IodGhlbWUoKS0+ZGlzYWJsZWRUZXh0Q29sb3IodGV4dEJsb2NrU3R5bGUtPnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgc3RhcnRTdHlsZS0+dmlzaXRlZERl
cGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSkpOworICAgICAgICB0ZXh0
QmxvY2tTdHlsZS0+c2V0Q29sb3IodGhlbWUoKS5kaXNhYmxlZFRleHRDb2xvcih0ZXh0QmxvY2tT
dHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdGFydFN0eWxl
LT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpKSk7CiAj
aWYgUExBVEZPUk0oSU9TKQogICAgIGlmICh0ZXh0QmxvY2tTdHlsZS0+dGV4dFNlY3VyaXR5KCkg
IT0gVFNOT05FICYmICF0ZXh0QmxvY2tTdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSB7
CiAgICAgICAgIC8vIFByZXNlcnZlIHRoZSBhbGlnbm1lbnQgYnV0IGZvcmNlIHRoZSBkaXJlY3Rp
b24gdG8gTFRSIHNvIHRoYXQgdGhlIGxhc3QtdHlwZWQsIHVubWFza2VkIGNoYXJhY3RlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lLmNwcAppbmRleCAwM2QyY2U4Li40YjA5YjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcApAQCAt
ODQsNyArODQsNyBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6cGFpbnQoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JgogCiAgICAgICAgIC8vIENvbnZl
cnQgdGhlIHJlY3QgaW50byB0aGUgY29vcmRzIHVzZWQgZm9yIHBhaW50aW5nIHRoZSBjb250ZW50
CiAgICAgICAgIGNvbnRlbnRzUmVjdC5tb3ZlQnkocGFpbnRPZmZzZXQgKyBsb2NhdGlvbigpKTsK
LSAgICAgICAgdGhlbWUoKS0+cGFpbnRDYXBzTG9ja0luZGljYXRvcih0aGlzLCBwYWludEluZm8s
IHBpeGVsU25hcHBlZEludFJlY3QoY29udGVudHNSZWN0KSk7CisgICAgICAgIHRoZW1lKCkucGFp
bnRDYXBzTG9ja0luZGljYXRvcih0aGlzLCBwYWludEluZm8sIHBpeGVsU25hcHBlZEludFJlY3Qo
Y29udGVudHNSZWN0KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApp
bmRleCBiZTJiYzRmLi5jMzljY2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAg
LTEzNjYsOCArMTM2Niw4IEBAIHZvaWQgZXdrX3ZpZXdfdGhlbWVfc2V0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBjb25zdCBjaGFyKiBwYXRoKQogICAgIGlmICghZWluYV9zdHJpbmdzaGFyZV9yZXBs
YWNlKCZwcml2LT5zZXR0aW5ncy50aGVtZSwgcGF0aCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsKiB0aGVtZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlJl
bmRlclRoZW1lRWZsKj4ocHJpdi0+cGFnZS0+dGhlbWUoKSk7Ci0gICAgdGhlbWUtPnNldFRoZW1l
UGF0aChwYXRoKTsKKyAgICBXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbCYgdGhlbWUgPSBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbCY+KHByaXYtPnBhZ2UtPnRoZW1lKCkpOworICAg
IHRoZW1lLnNldFRoZW1lUGF0aChwYXRoKTsKIH0KIAogY29uc3QgY2hhciogZXdrX3ZpZXdfdGhl
bWVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAppbmRl
eCAwODM4NDc5Li5kYmUxNTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcApAQCAtMjM4MCw3ICsyMzgw
LDcgQEAgTFJFU1VMVCBDQUxMQkFDSyBXZWJWaWV3OjpXZWJWaWV3V25kUHJvYyhIV05EIGhXbmQs
IFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwKICAgICAgICAgY2FzZSBXTV9YUF9USEVNRUNI
QU5HRUQ6CiAgICAgICAgICAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUobWFpbkZyYW1l
SW1wbCkpIHsKICAgICAgICAgICAgICAgICB3ZWJWaWV3LT5kZWxldGVCYWNraW5nU3RvcmUoKTsK
LSAgICAgICAgICAgICAgICBjb3JlRnJhbWUtPnBhZ2UoKS0+dGhlbWUoKS0+dGhlbWVDaGFuZ2Vk
KCk7CisgICAgICAgICAgICAgICAgY29yZUZyYW1lLT5wYWdlKCktPnRoZW1lKCkudGhlbWVDaGFu
Z2VkKCk7CiAgICAgICAgICAgICAgICAgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnRoZW1lQ2hh
bmdlZCgpOwogICAgICAgICAgICAgICAgIFJFQ1Qgd2luZG93UmVjdDsKICAgICAgICAgICAgICAg
ICA6OkdldENsaWVudFJlY3QoaFduZCwgJndpbmRvd1JlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAKaW5kZXggYzllNGRj
NS4uNTU3OWRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2VmbC9XZWJQYWdlRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvZWZsL1dlYlBhZ2VFZmwuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgY29uc3QgY2hhciogV2Vi
UGFnZTo6aW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAKIHZv
aWQgV2ViUGFnZTo6c2V0VGhlbWVQYXRoKGNvbnN0IFN0cmluZyYgdGhlbWVQYXRoKQogewotICAg
IFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsKiB0aGVtZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlJl
bmRlclRoZW1lRWZsKj4obV9wYWdlLT50aGVtZSgpKTsKKyAgICBXZWJDb3JlOjpSZW5kZXJUaGVt
ZUVmbCYgdGhlbWUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbCY+KG1fcGFn
ZS0+dGhlbWUoKSk7CiAgICAgdGhlbWUtPnNldFRoZW1lUGF0aCh0aGVtZVBhdGgpOwogfQogCg==
</data>
<flag name="commit-queue"
          id="242846"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219249</attachid>
            <date>2013-12-14 05:46:00 -0800</date>
            <delta_ts>2013-12-14 05:56:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125737-2.diff</filename>
            <type>text/plain</type>
            <size>56546</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2MDJmNjQzLi4yZjZjNzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTUg
QEAKIDIwMTMtMTItMTQgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCisgICAg
ICAgIFBhZ2U6OnRoZW1lKCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZS4KKyAgICAgICAgPGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzEyNTczNz4KKworICAgICAgICBUaGVyZSdzIGFsd2F5cyBhIFJl
bmRlclRoZW1lLCBhbmQgbm90IGEgc2luZ2xlIGNhbGwgc2l0ZSB3YXMgY2hlY2tpbmcKKyAgICAg
ICAgZm9yIG51bGwgcG9pbnRlcnMgYW55d2F5LiBVcGRhdGVkIFJlbmRlck9iamVjdDo6dGhlbWUo
KSBhcyB3ZWxsLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisyMDEz
LTEyLTE0ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KKwogICAgICAgICBSZW5k
ZXJFbGVtZW50OjpyZW5kZXJlckZvclJvb3RCYWNrZ3JvdW5kKCkgc2hvdWxkIHJldHVybiBhIHJl
ZmVyZW5jZS4KICAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEyNTczNT4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAK
aW5kZXggODI1ZDA5Ny4uZGQzZWU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC01ODUsNyArNTg1LDcgQEAgSW50
UmVjdCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpib3VuZGluZ0JveEZvclF1YWRzKFJlbmRlck9iamVj
dCogb2JqLCBjb25zdCBWZWN0b3IKICAgICAgICAgSW50UmVjdCByID0gcXVhZHNbaV0uZW5jbG9z
aW5nQm91bmRpbmdCb3goKTsKICAgICAgICAgaWYgKCFyLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgaWYgKG9iai0+c3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAgICAgICAgICAgb2Jq
LT50aGVtZSgpLT5hZGp1c3RSZXBhaW50UmVjdChvYmosIHIpOworICAgICAgICAgICAgICAgIG9i
ai0+dGhlbWUoKS5hZGp1c3RSZXBhaW50UmVjdChvYmosIHIpOwogICAgICAgICAgICAgcmVzdWx0
LnVuaXRlKHIpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRl
eCBhZTU5ZmQxLi4zZTY1MjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMTM4Miw3
ICsxMzgyLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlU3lzdGVtQ29sb3IoUkdCQTMyJiBjb2xv
ciwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIERvY3VtZW50KgogICAgIGlmIChpZCA8PSAwKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBjb2xvciA9IGRvY3VtZW50LT5wYWdlKCktPnRoZW1l
KCktPnN5c3RlbUNvbG9yKGlkKS5yZ2IoKTsKKyAgICBjb2xvciA9IGRvY3VtZW50LT5wYWdlKCkt
PnRoZW1lKCkuc3lzdGVtQ29sb3IoaWQpLnJnYigpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKaW5kZXggN2JkZjNjNi4uNWNmNGEzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcApAQCAtNTE1LDcgKzUxNSw3IEBAIHZvaWQgRWxlbWVudDo6c2V0QWN0aXZlKGJvb2wg
ZmxhZywgYm9vbCBwYXVzZSkKICAgICBpZiAocmVhY3RzVG9QcmVzcykKICAgICAgICAgc2V0TmVl
ZHNTdHlsZVJlY2FsYygpOwogCi0gICAgaWYgKHJlbmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFy
YW5jZSgpICYmIHJlbmRlcmVyKCktPnRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBQ
cmVzc2VkU3RhdGUpKQorICAgIGlmIChyZW5kZXJlcigpLT5zdHlsZSgpLmhhc0FwcGVhcmFuY2Uo
KSAmJiByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBQcmVzc2Vk
U3RhdGUpKQogICAgICAgICByZWFjdHNUb1ByZXNzID0gdHJ1ZTsKIAogICAgIC8vIFRoZSByZXN0
IG9mIHRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyBhIGZlYXR1cmUgdGhhdCBvbmx5IHdvcmtzIGlm
IHRoZQpAQCAtNTgxLDcgKzU4MSw3IEBAIHZvaWQgRWxlbWVudDo6c2V0SG92ZXJlZChib29sIGZs
YWcpCiAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIAogICAgIGlmIChyZW5kZXJlcigp
LT5zdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS0+
c3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIEhvdmVyU3RhdGUpOworICAgICAgICByZW5kZXJlcigp
LT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBIb3ZlclN0YXRlKTsKIH0KIAogdm9p
ZCBFbGVtZW50OjpzY3JvbGxJbnRvVmlldyhib29sIGFsaWduVG9Ub3ApIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCA1MTgxNjI1Li4xZjBlNTA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMTcwNSw3ICsxNzA1
LDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6Zm9jdXNlZE9yQWN0aXZlU3RhdGVDaGFuZ2VkKCkK
ICAgICAgICAgZWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAgICBpZiAoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBp
ZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAg
ICAgICAgICAgIHJlbmRlcmVyLT50aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIsIEZvY3Vz
U3RhdGUpOworICAgICAgICAgICAgICAgIHJlbmRlcmVyLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChy
ZW5kZXJlciwgRm9jdXNTdGF0ZSk7CiAgICAgfQogfQogCkBAIC0xNzU5LDcgKzE3NTksNyBAQCB2
b2lkIEZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBcHBlYXJhbmNlKCkKICAgICAvLyBTdGFydCBibGlu
a2luZyB3aXRoIGEgYmxhY2sgY2FyZXQuIEJlIHN1cmUgbm90IHRvIHJlc3RhcnQgaWYgd2UncmUK
ICAgICAvLyBhbHJlYWR5IGJsaW5raW5nIGluIHRoZSByaWdodCBsb2NhdGlvbi4KICAgICBpZiAo
c2hvdWxkQmxpbmsgJiYgIW1fY2FyZXRCbGlua1RpbWVyLmlzQWN0aXZlKCkpIHsKLSAgICAgICAg
aWYgKGRvdWJsZSBibGlua0ludGVydmFsID0gbV9mcmFtZS0+cGFnZSgpLT50aGVtZSgpLT5jYXJl
dEJsaW5rSW50ZXJ2YWwoKSkKKyAgICAgICAgaWYgKGRvdWJsZSBibGlua0ludGVydmFsID0gbV9m
cmFtZS0+cGFnZSgpLT50aGVtZSgpLmNhcmV0QmxpbmtJbnRlcnZhbCgpKQogICAgICAgICAgICAg
bV9jYXJldEJsaW5rVGltZXIuc3RhcnRSZXBlYXRpbmcoYmxpbmtJbnRlcnZhbCk7CiAKICAgICAg
ICAgaWYgKCFtX2NhcmV0UGFpbnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDVkZWQ5YzMuLjMyOTY2M2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtMTM3LDcgKzEzNyw3
IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvCiAgICAgICAgICAgICBzZXROZWVkc1dpbGxWYWxp
ZGF0ZUNoZWNrKCk7CiAgICAgICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgICAg
ICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLmhhc0FwcGVhcmFuY2Uo
KSkKLSAgICAgICAgICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVu
ZGVyZXIoKSwgUmVhZE9ubHlTdGF0ZSk7CisgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+dGhl
bWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgUmVhZE9ubHlTdGF0ZSk7CiAgICAgICAgIH0K
ICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gcmVxdWlyZWRBdHRyKSB7CiAgICAgICAgIGJvb2wgd2Fz
UmVxdWlyZWQgPSBtX2lzUmVxdWlyZWQ7CkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50OjpkaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQoKQogICAgIHNldE5lZWRz
V2lsbFZhbGlkYXRlQ2hlY2soKTsKICAgICBkaWRBZmZlY3RTZWxlY3RvcihBZmZlY3RlZFNlbGVj
dG9yRGlzYWJsZWQgfCBBZmZlY3RlZFNlbGVjdG9yRW5hYmxlZCk7CiAgICAgaWYgKHJlbmRlcmVy
KCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAgIHJlbmRl
cmVyKCktPnRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBFbmFibGVkU3RhdGUpOwor
ICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBFbmFi
bGVkU3RhdGUpOwogfQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlcXVpcmVkQXR0
cmlidXRlQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApp
bmRleCBiZWRkZmEwLi4zYTRkOTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAKQEAgLTg4Miw3ICs4ODIsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldENo
ZWNrZWQoYm9vbCBub3dDaGVja2VkLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50QgogICAg
IGlmIChDaGVja2VkUmFkaW9CdXR0b25zKiBidXR0b25zID0gY2hlY2tlZFJhZGlvQnV0dG9ucygp
KQogICAgICAgICAgICAgYnV0dG9ucy0+dXBkYXRlQ2hlY2tlZFN0YXRlKHRoaXMpOwogICAgIGlm
IChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQotICAg
ICAgICByZW5kZXJlcigpLT50aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgQ2hlY2tl
ZFN0YXRlKTsKKyAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVy
ZXIoKSwgQ2hlY2tlZFN0YXRlKTsKICAgICBzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKIAogICAg
IC8vIElkZWFsbHkgd2UnZCBkbyB0aGlzIGZyb20gdGhlIHJlbmRlciB0cmVlIChtYXRjaGluZwpA
QCAtOTE2LDcgKzkxNiw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0SW5kZXRlcm1pbmF0
ZShib29sIG5ld1ZhbHVlKQogICAgIGRpZEFmZmVjdFNlbGVjdG9yKEFmZmVjdGVkU2VsZWN0b3JJ
bmRldGVybWluYXRlKTsKIAogICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxl
KCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLT5zdGF0ZUNo
YW5nZWQocmVuZGVyZXIoKSwgQ2hlY2tlZFN0YXRlKTsKKyAgICAgICAgcmVuZGVyZXIoKS0+dGhl
bWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgQ2hlY2tlZFN0YXRlKTsKIH0KIAogaW50IEhU
TUxJbnB1dEVsZW1lbnQ6OnNpemUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVy
RWxlbWVudC5jcHAKaW5kZXggZmM2MWIyOS4uZGEwMWYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZXRlckVsZW1lbnQuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFBhc3NSZWZQdHI8SFRNTE1l
dGVyRWxlbWVudD4gSFRNTE1ldGVyRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hCiAKIFJlbmRlckVsZW1lbnQqIEhUTUxNZXRlckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVy
KFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogewotICAgIGlmIChoYXNBdXRob3JTaGFkb3dS
b290KCkgfHwgIWRvY3VtZW50KCkucGFnZSgpLT50aGVtZSgpLT5zdXBwb3J0c01ldGVyKHN0eWxl
LmdldCgpLmFwcGVhcmFuY2UoKSkpCisgICAgaWYgKGhhc0F1dGhvclNoYWRvd1Jvb3QoKSB8fCAh
ZG9jdW1lbnQoKS5wYWdlKCktPnRoZW1lKCkuc3VwcG9ydHNNZXRlcihzdHlsZS5nZXQoKS5hcHBl
YXJhbmNlKCkpKQogICAgICAgICByZXR1cm4gUmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKCp0aGlz
LCBzdGQ6Om1vdmUoc3R5bGUpKTsKIAogICAgIHJldHVybiBuZXcgUmVuZGVyTWV0ZXIoKnRoaXMs
IHN0ZDo6bW92ZShzdHlsZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T3B0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50
LmNwcAppbmRleCBmMmIzNjI0Li5mNTA0OWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
cHRpb25FbGVtZW50LmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgSFRNTE9wdGlvbkVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21p
Y1N0CiAgICAgICAgIGlmIChvbGREaXNhYmxlZCAhPSBtX2Rpc2FibGVkKSB7CiAgICAgICAgICAg
ICBkaWRBZmZlY3RTZWxlY3RvcihBZmZlY3RlZFNlbGVjdG9yRGlzYWJsZWQgfCBBZmZlY3RlZFNl
bGVjdG9yRW5hYmxlZCk7CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigp
LT5zdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAgICAgICAgICByZW5kZXJlcigpLT50
aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgRW5hYmxlZFN0YXRlKTsKKyAgICAgICAg
ICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBFbmFi
bGVkU3RhdGUpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChuYW1lID09IHNlbGVjdGVkQXR0
cikgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IG1hdGNoIHdoYXQgdGhlIEhUTUwg
c3BlY2lmaWNhdGlvbiBzYXlzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50
LmNwcAppbmRleCAyZjM0ODEwLi5iMDA3MDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
ZWxlY3RFbGVtZW50LmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1l
bnQ6Omxpc3RCb3hTZWxlY3RJdGVtKGludCBsaXN0SW5kZXgsIGJvb2wgYWxsb3dNdWx0aXBseVNl
bGVjCiBib29sIEhUTUxTZWxlY3RFbGVtZW50Ojp1c2VzTWVudUxpc3QoKSBjb25zdAogewogICAg
IGNvbnN0IFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKTsKLSAgICBSZWZQdHI8UmVuZGVy
VGhlbWU+IHJlbmRlclRoZW1lID0gcGFnZSA/IHBhZ2UtPnRoZW1lKCkgOiBSZW5kZXJUaGVtZTo6
ZGVmYXVsdFRoZW1lKCk7CisgICAgUmVmUHRyPFJlbmRlclRoZW1lPiByZW5kZXJUaGVtZSA9IHBh
Z2UgPyAmcGFnZS0+dGhlbWUoKSA6IFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKTsKICAgICBp
ZiAocmVuZGVyVGhlbWUtPmRlbGVnYXRlc01lbnVMaXN0UmVuZGVyaW5nKCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCkBAIC0xMDc4LDcgKzEwNzgsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50
OjpyZXNldCgpCiBib29sIEhUTUxTZWxlY3RFbGVtZW50OjpwbGF0Zm9ybUhhbmRsZUtleWRvd25F
dmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKIHsKICAgICBjb25zdCBQYWdlKiBwYWdlID0gZG9j
dW1lbnQoKS5wYWdlKCk7Ci0gICAgUmVmUHRyPFJlbmRlclRoZW1lPiByZW5kZXJUaGVtZSA9IHBh
Z2UgPyBwYWdlLT50aGVtZSgpIDogUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpOworICAgIFJl
ZlB0cjxSZW5kZXJUaGVtZT4gcmVuZGVyVGhlbWUgPSBwYWdlID8gJnBhZ2UtPnRoZW1lKCkgOiBS
ZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCk7CiAKICAgICBpZiAoIXJlbmRlclRoZW1lLT5wb3Bz
TWVudUJ5QXJyb3dLZXlzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExMTEsNyArMTEx
MSw3IEBAIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OnBsYXRmb3JtSGFuZGxlS2V5ZG93bkV2ZW50
KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6bWVudUxpc3RE
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAgICBjb25zdCBQYWdlKiBwYWdl
ID0gZG9jdW1lbnQoKS5wYWdlKCk7Ci0gICAgUmVmUHRyPFJlbmRlclRoZW1lPiByZW5kZXJUaGVt
ZSA9IHBhZ2UgPyBwYWdlLT50aGVtZSgpIDogUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpOwor
ICAgIFJlZlB0cjxSZW5kZXJUaGVtZT4gcmVuZGVyVGhlbWUgPSBwYWdlID8gJnBhZ2UtPnRoZW1l
KCkgOiBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCk7CiAKICAgICBpZiAoZXZlbnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50KSB7CiAgICAgICAgIGlmICghcmVuZGVyZXIo
KSB8fCAhZXZlbnQtPmlzS2V5Ym9hcmRFdmVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCA3YjRlYmJiLi4wNzBiNzU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50LmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIGJvb2wgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkgY29uc3QKICAgICAgICAgJiYgaXNFbXB0
eVZhbHVlKCkKICAgICAgICAgJiYgaXNFbXB0eVN1Z2dlc3RlZFZhbHVlKCkKICAgICAgICAgJiYg
IWlzUGxhY2Vob2xkZXJFbXB0eSgpCi0gICAgICAgICYmIChkb2N1bWVudCgpLmZvY3VzZWRFbGVt
ZW50KCkgIT0gdGhpcyB8fCAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT50aGVtZSgpLT5zaG91
bGRTaG93UGxhY2Vob2xkZXJXaGVuRm9jdXNlZCgpKSkKKyAgICAgICAgJiYgKGRvY3VtZW50KCku
Zm9jdXNlZEVsZW1lbnQoKSAhPSB0aGlzIHx8IChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnRo
ZW1lKCkuc2hvdWxkU2hvd1BsYWNlaG9sZGVyV2hlbkZvY3VzZWQoKSkpCiAgICAgICAgICYmICgh
cmVuZGVyZXIoKSB8fCByZW5kZXJlcigpLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxF
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDBjMGNlM2YuLjliZDM2NDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCBJbnB1dFR5
cGU6On5JbnB1dFR5cGUoKQogYm9vbCBJbnB1dFR5cGU6OnRoZW1lU3VwcG9ydHNEYXRhTGlzdFVJ
KElucHV0VHlwZSogdHlwZSkKIHsKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSB0eXBlLT5lbGVt
ZW50KCkuZG9jdW1lbnQoKTsKLSAgICBSZWZQdHI8UmVuZGVyVGhlbWU+IHRoZW1lID0gZG9jdW1l
bnQucGFnZSgpID8gZG9jdW1lbnQucGFnZSgpLT50aGVtZSgpIDogUmVuZGVyVGhlbWU6OmRlZmF1
bHRUaGVtZSgpOworICAgIFJlZlB0cjxSZW5kZXJUaGVtZT4gdGhlbWUgPSBkb2N1bWVudC5wYWdl
KCkgPyAmZG9jdW1lbnQucGFnZSgpLT50aGVtZSgpIDogUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVt
ZSgpOwogICAgIHJldHVybiB0aGVtZS0+c3VwcG9ydHNEYXRhTGlzdFVJKHR5cGUtPmZvcm1Db250
cm9sVHlwZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0Rmll
bGRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
Y3BwCmluZGV4IGEzMzVkZDguLjM4OTFmNjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuY3BwCkBAIC0yMTgsNyArMjE4LDcgQEAgYm9vbCBUZXh0RmllbGRJbnB1
dFR5cGU6Om5lZWRzQ29udGFpbmVyKCkgY29uc3QKIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjpz
aG91bGRIYXZlU3BpbkJ1dHRvbigpIGNvbnN0CiB7CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0g
ZWxlbWVudCgpLmRvY3VtZW50KCk7Ci0gICAgUmVmUHRyPFJlbmRlclRoZW1lPiB0aGVtZSA9IGRv
Y3VtZW50LnBhZ2UoKSA/IGRvY3VtZW50LnBhZ2UoKS0+dGhlbWUoKSA6IFJlbmRlclRoZW1lOjpk
ZWZhdWx0VGhlbWUoKTsKKyAgICBSZWZQdHI8UmVuZGVyVGhlbWU+IHRoZW1lID0gZG9jdW1lbnQu
cGFnZSgpID8gJmRvY3VtZW50LnBhZ2UoKS0+dGhlbWUoKSA6IFJlbmRlclRoZW1lOjpkZWZhdWx0
VGhlbWUoKTsKICAgICByZXR1cm4gdGhlbWUtPnNob3VsZEhhdmVTcGluQnV0dG9uKCZlbGVtZW50
KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xFbGVtZW50cy5jcHAKaW5kZXggOTZkZGViNS4uZDBlMjRiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcApAQCAtMTQyLDcg
KzE0Miw3IEBAIHZvaWQgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjpzdGFydFRpbWVyKCkKICAg
ICAvLyBUaGUgdGltZXIgaXMgcmVxdWlyZWQgdG8gc2V0IHRoZSBwcm9wZXJ0eSBkaXNwbGF5Oidu
b25lJyBvbiB0aGUgcGFuZWwsCiAgICAgLy8gc3VjaCB0aGF0IGNhcHRpb25zIGFyZSBjb3JyZWN0
bHkgZGlzcGxheWVkIGF0IHRoZSBib3R0b20gb2YgdGhlIHZpZGVvCiAgICAgLy8gYXQgdGhlIGVu
ZCBvZiB0aGUgZmFkZW91dCB0cmFuc2l0aW9uLgotICAgIGRvdWJsZSBkdXJhdGlvbiA9IGRvY3Vt
ZW50KCkucGFnZSgpID8gZG9jdW1lbnQoKS5wYWdlKCktPnRoZW1lKCktPm1lZGlhQ29udHJvbHNG
YWRlT3V0RHVyYXRpb24oKSA6IDA7CisgICAgZG91YmxlIGR1cmF0aW9uID0gZG9jdW1lbnQoKS5w
YWdlKCkgPyBkb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUoKS5tZWRpYUNvbnRyb2xzRmFkZU91dER1
cmF0aW9uKCkgOiAwOwogICAgIG1fdHJhbnNpdGlvblRpbWVyLnN0YXJ0T25lU2hvdChkdXJhdGlv
bik7CiB9CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVu
dDo6bWFrZU9wYXF1ZSgpCiAgICAgaWYgKG1fb3BhcXVlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBkb3VibGUgZHVyYXRpb24gPSBkb2N1bWVudCgpLnBhZ2UoKSA/IGRvY3VtZW50KCkucGFnZSgp
LT50aGVtZSgpLT5tZWRpYUNvbnRyb2xzRmFkZUluRHVyYXRpb24oKSA6IDA7CisgICAgZG91Ymxl
IGR1cmF0aW9uID0gZG9jdW1lbnQoKS5wYWdlKCkgPyBkb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUo
KS5tZWRpYUNvbnRyb2xzRmFkZUluRHVyYXRpb24oKSA6IDA7CiAKICAgICBzZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5LCBDU1NQcm9wZXJ0
eU9wYWNpdHkpOwogICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2l0aW9uRHVyYXRpb24sIGR1cmF0aW9uLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1MpOwpA
QCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjptYWtlVHJh
bnNwYXJlbnQoKQogICAgIGlmICghbV9vcGFxdWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGRv
dWJsZSBkdXJhdGlvbiA9IGRvY3VtZW50KCkucGFnZSgpID8gZG9jdW1lbnQoKS5wYWdlKCktPnRo
ZW1lKCktPm1lZGlhQ29udHJvbHNGYWRlT3V0RHVyYXRpb24oKSA6IDA7CisgICAgZG91YmxlIGR1
cmF0aW9uID0gZG9jdW1lbnQoKS5wYWdlKCkgPyBkb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUoKS5t
ZWRpYUNvbnRyb2xzRmFkZU91dER1cmF0aW9uKCkgOiAwOwogCiAgICAgc2V0SW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSwgQ1NTUHJvcGVydHlP
cGFjaXR5KTsKICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VHJh
bnNpdGlvbkR1cmF0aW9uLCBkdXJhdGlvbiwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAKaW5kZXggMjJjNGRm
ZS4uNjY4MWUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9scy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
cy5jcHAKQEAgLTkzLDEyICs5MywxMiBAQCB2b2lkIE1lZGlhQ29udHJvbHM6OnJlc2V0KCkKICAg
ICB1cGRhdGVDdXJyZW50VGltZURpc3BsYXkoKTsKIAogICAgIGRvdWJsZSBkdXJhdGlvbiA9IG1f
bWVkaWFDb250cm9sbGVyLT5kdXJhdGlvbigpOwotICAgIGlmIChzdGQ6OmlzZmluaXRlKGR1cmF0
aW9uKSB8fCBwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVk
aWFTbGlkZXJQYXJ0KSkgeworICAgIGlmIChzdGQ6OmlzZmluaXRlKGR1cmF0aW9uKSB8fCBwYWdl
LT50aGVtZSgpLmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVNsaWRlclBhcnQp
KSB7CiAgICAgICAgIG1fdGltZWxpbmUtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKICAgICAgICAg
bV90aW1lbGluZS0+c2V0UG9zaXRpb24obV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCkp
OwogICAgIH0KIAotICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+aGFzQXVkaW8oKSB8fCBwYWdl
LT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFNdXRlQnV0dG9u
UGFydCkpCisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5oYXNBdWRpbygpIHx8IHBhZ2UtPnRo
ZW1lKCkuaGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhTXV0ZUJ1dHRvblBhcnQp
KQogICAgICAgICBtX3BhbmVsTXV0ZUJ1dHRvbi0+c2hvdygpOwogICAgIGVsc2UKICAgICAgICAg
bV9wYW5lbE11dGVCdXR0b24tPmhpZGUoKTsKQEAgLTEzMCwxNSArMTMwLDE1IEBAIHZvaWQgTWVk
aWFDb250cm9sczo6cmVwb3J0ZWRFcnJvcigpCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoIXBhZ2UtPnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGlu
Z0ZvcihNZWRpYU11dGVCdXR0b25QYXJ0KSkgeworICAgIGlmICghcGFnZS0+dGhlbWUoKS5oYXNP
d25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFNdXRlQnV0dG9uUGFydCkpIHsKICAgICAg
ICAgbV9wYW5lbE11dGVCdXR0b24tPmhpZGUoKTsKICAgICAgICAgbV92b2x1bWVTbGlkZXItPmhp
ZGUoKTsKICAgICB9CiAKLSAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbiAmJiAh
cGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhVG9nZ2xl
Q2xvc2VkQ2FwdGlvbnNCdXR0b25QYXJ0KSkKKyAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9u
c0J1dHRvbiAmJiAhcGFnZS0+dGhlbWUoKS5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3Io
TWVkaWFUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvblBhcnQpKQogICAgICAgICBtX3RvZ2dsZUNs
b3NlZENhcHRpb25zQnV0dG9uLT5oaWRlKCk7CiAKLSAgICBpZiAobV9mdWxsU2NyZWVuQnV0dG9u
ICYmICFwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFF
bnRlckZ1bGxzY3JlZW5CdXR0b25QYXJ0KSkKKyAgICBpZiAobV9mdWxsU2NyZWVuQnV0dG9uICYm
ICFwYWdlLT50aGVtZSgpLmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYUVudGVy
RnVsbHNjcmVlbkJ1dHRvblBhcnQpKQogICAgICAgICBtX2Z1bGxTY3JlZW5CdXR0b24tPmhpZGUo
KTsKIH0KIApAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgTWVkaWFDb250cm9sczo6dXBkYXRlQ3Vy
cmVudFRpbWVEaXNwbGF5KCkKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fY3VycmVudFRpbWVEaXNwbGF5LT5zZXRJbm5lclRleHQocGFnZS0+dGhlbWUoKS0+Zm9ybWF0
TWVkaWFDb250cm9sc1RpbWUobm93KSwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgbV9jdXJyZW50
VGltZURpc3BsYXktPnNldElubmVyVGV4dChwYWdlLT50aGVtZSgpLmZvcm1hdE1lZGlhQ29udHJv
bHNUaW1lKG5vdyksIElHTk9SRV9FWENFUFRJT04pOwogICAgIG1fY3VycmVudFRpbWVEaXNwbGF5
LT5zZXRDdXJyZW50VmFsdWUobm93KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKaW5kZXggMzBlYTQ3OC4uYmMzZDI0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3Bw
CkBAIC04OSw3ICs4OSw3IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sc0FwcGxlPiBNZWRpYUNv
bnRyb2xzQXBwbGU6OmNyZWF0ZUNvbnRyb2xzKERvY3VtZW50JiBkb2N1CiAgICAgaWYgKGVjKQog
ICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChkb2N1bWVudC5wYWdlKCktPnRoZW1lKCktPnVz
ZXNNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5KCkpIHsKKyAgICBpZiAoZG9jdW1lbnQucGFnZSgp
LT50aGVtZSgpLnVzZXNNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5KCkpIHsKICAgICAgICAgUmVm
UHRyPE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50PiBzdGF0dXNEaXNwbGF5ID0gTWVk
aWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgICAg
IGNvbnRyb2xzLT5tX3N0YXR1c0Rpc3BsYXkgPSBzdGF0dXNEaXNwbGF5LmdldCgpOwogICAgICAg
ICBwYW5lbC0+YXBwZW5kQ2hpbGQoc3RhdHVzRGlzcGxheS5yZWxlYXNlKCksIGVjLCBBdHRhY2hM
YXppbHkpOwpAQCAtMTM2LDcgKzEzNiw3IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sc0FwcGxl
PiBNZWRpYUNvbnRyb2xzQXBwbGU6OmNyZWF0ZUNvbnRyb2xzKERvY3VtZW50JiBkb2N1CiAgICAg
aWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChkb2N1bWVudC5wYWdlKCktPnRo
ZW1lKCktPnN1cHBvcnRzQ2xvc2VkQ2FwdGlvbmluZygpKSB7CisgICAgaWYgKGRvY3VtZW50LnBh
Z2UoKS0+dGhlbWUoKS5zdXBwb3J0c0Nsb3NlZENhcHRpb25pbmcoKSkgewogICAgICAgICBSZWZQ
dHI8TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWluZXJFbGVtZW50PiBjbG9zZWRDYXB0
aW9uc0NvbnRhaW5lciA9IE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zQ29udGFpbmVyRWxlbWVu
dDo6Y3JlYXRlKGRvY3VtZW50KTsKIAogICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sQ2xvc2Vk
Q2FwdGlvbnNUcmFja0xpc3RFbGVtZW50PiBjbG9zZWRDYXB0aW9uc1RyYWNrTGlzdCA9IE1lZGlh
Q29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBj
b250cm9scy5nZXQoKSk7CkBAIC0xNjUsNyArMTY1LDcgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRy
b2xzQXBwbGU+IE1lZGlhQ29udHJvbHNBcHBsZTo6Y3JlYXRlQ29udHJvbHMoRG9jdW1lbnQmIGRv
Y3UKICAgICAvLyBUaGUgbXV0ZSBidXR0b24gYW5kIHRoZSBzbGlkZXIgZWxlbWVudCBzaG91bGQg
YmUgaW4gdGhlIHNhbWUgZGl2LgogICAgIFJlZlB0cjxIVE1MRGl2RWxlbWVudD4gcGFuZWxWb2x1
bWVDb250cm9sQ29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAK
LSAgICBpZiAoZG9jdW1lbnQucGFnZSgpLT50aGVtZSgpLT51c2VzTWVkaWFDb250cm9sVm9sdW1l
U2xpZGVyKCkpIHsKKyAgICBpZiAoZG9jdW1lbnQucGFnZSgpLT50aGVtZSgpLnVzZXNNZWRpYUNv
bnRyb2xWb2x1bWVTbGlkZXIoKSkgewogICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1l
U2xpZGVyQ29udGFpbmVyRWxlbWVudD4gdm9sdW1lU2xpZGVyQ29udGFpbmVyID0gTWVkaWFDb250
cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKIAogICAg
ICAgICBSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxWb2x1bWVTbGlkZXJFbGVtZW50PiBzbGlkZXIg
PSBNZWRpYUNvbnRyb2xQYW5lbFZvbHVtZVNsaWRlckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7
CkBAIC0zMTMsNyArMzEzLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQXBwbGU6OnJlc2V0KCkKICAg
ICAgICAgbV9mdWxsU2NyZWVuQnV0dG9uLT5oaWRlKCk7CiAKICAgICBkb3VibGUgZHVyYXRpb24g
PSBtX21lZGlhQ29udHJvbGxlci0+ZHVyYXRpb24oKTsKLSAgICBpZiAoc3RkOjppc2Zpbml0ZShk
dXJhdGlvbikgfHwgcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9y
KE1lZGlhU2xpZGVyUGFydCkpIHsKKyAgICBpZiAoc3RkOjppc2Zpbml0ZShkdXJhdGlvbikgfHwg
cGFnZS0+dGhlbWUoKS5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFTbGlkZXJQ
YXJ0KSkgewogICAgICAgICBtX3RpbWVsaW5lLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CiAgICAg
ICAgIG1fdGltZWxpbmVDb250YWluZXItPnNob3coKTsKICAgICAgICAgbV90aW1lbGluZS0+c2V0
UG9zaXRpb24obV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCkpOwpAQCAtMzIxLDcgKzMy
MSw3IEBAIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpyZXNldCgpCiAgICAgfSBlbHNlCiAgICAg
ICAgIG1fdGltZWxpbmVDb250YWluZXItPmhpZGUoKTsKIAotICAgIGlmIChtX21lZGlhQ29udHJv
bGxlci0+aGFzQXVkaW8oKSB8fCBwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFu
ZGxpbmdGb3IoTWVkaWFNdXRlQnV0dG9uUGFydCkpCisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVy
LT5oYXNBdWRpbygpIHx8IHBhZ2UtPnRoZW1lKCkuaGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5n
Rm9yKE1lZGlhTXV0ZUJ1dHRvblBhcnQpKQogICAgICAgICBtX3BhbmVsTXV0ZUJ1dHRvbi0+c2hv
dygpOwogICAgIGVsc2UKICAgICAgICAgbV9wYW5lbE11dGVCdXR0b24tPmhpZGUoKTsKQEAgLTM3
OCw5ICszNzgsOSBAQCB2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6dXBkYXRlQ3VycmVudFRpbWVE
aXNwbGF5KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gQWxsb3cgdGhlIHRoZW1lIHRvIGZv
cm1hdCB0aGUgdGltZS4KLSAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0SW5uZXJUZXh0KHBh
Z2UtPnRoZW1lKCktPmZvcm1hdE1lZGlhQ29udHJvbHNDdXJyZW50VGltZShub3csIGR1cmF0aW9u
KSwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgbV9jdXJyZW50VGltZURpc3BsYXktPnNldElubmVy
VGV4dChwYWdlLT50aGVtZSgpLmZvcm1hdE1lZGlhQ29udHJvbHNDdXJyZW50VGltZShub3csIGR1
cmF0aW9uKSwgSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgbV9jdXJyZW50VGltZURpc3BsYXktPnNl
dEN1cnJlbnRWYWx1ZShub3cpOwotICAgIG1fdGltZVJlbWFpbmluZ0Rpc3BsYXktPnNldElubmVy
VGV4dChwYWdlLT50aGVtZSgpLT5mb3JtYXRNZWRpYUNvbnRyb2xzUmVtYWluaW5nVGltZShub3cs
IGR1cmF0aW9uKSwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgbV90aW1lUmVtYWluaW5nRGlzcGxh
eS0+c2V0SW5uZXJUZXh0KHBhZ2UtPnRoZW1lKCkuZm9ybWF0TWVkaWFDb250cm9sc1JlbWFpbmlu
Z1RpbWUobm93LCBkdXJhdGlvbiksIElHTk9SRV9FWENFUFRJT04pOwogICAgIG1fdGltZVJlbWFp
bmluZ0Rpc3BsYXktPnNldEN1cnJlbnRWYWx1ZShub3cgLSBkdXJhdGlvbik7CiB9CiAKQEAgLTM5
MCwxNyArMzkwLDE3IEBAIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpyZXBvcnRlZEVycm9yKCkK
ICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghcGFnZS0+dGhlbWUo
KS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhU2xpZGVyUGFydCkpCisgICAg
aWYgKCFwYWdlLT50aGVtZSgpLmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVNs
aWRlclBhcnQpKQogICAgICAgICBtX3RpbWVsaW5lQ29udGFpbmVyLT5oaWRlKCk7CiAKLSAgICBp
ZiAoIXBhZ2UtPnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYU11
dGVCdXR0b25QYXJ0KSkKKyAgICBpZiAoIXBhZ2UtPnRoZW1lKCkuaGFzT3duRGlzYWJsZWRTdGF0
ZUhhbmRsaW5nRm9yKE1lZGlhTXV0ZUJ1dHRvblBhcnQpKQogICAgICAgICBtX3BhbmVsTXV0ZUJ1
dHRvbi0+aGlkZSgpOwogCiAgICAgbV9mdWxsU2NyZWVuQnV0dG9uLT5oaWRlKCk7CiAKICAgICBp
ZiAobV92b2x1bWVTbGlkZXJDb250YWluZXIpCiAgICAgICAgIG1fdm9sdW1lU2xpZGVyQ29udGFp
bmVyLT5oaWRlKCk7Ci0gICAgaWYgKG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24gJiYgIXBh
Z2UtPnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVRvZ2dsZUNs
b3NlZENhcHRpb25zQnV0dG9uUGFydCkpCisgICAgaWYgKG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNC
dXR0b24gJiYgIXBhZ2UtPnRoZW1lKCkuaGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1l
ZGlhVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25QYXJ0KSkKICAgICAgICAgbV90b2dnbGVDbG9z
ZWRDYXB0aW9uc0J1dHRvbi0+aGlkZSgpOwogICAgIGlmIChtX2Nsb3NlZENhcHRpb25zQ29udGFp
bmVyKQogICAgICAgICBoaWRlQ2xvc2VkQ2FwdGlvblRyYWNrTGlzdCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0d0ay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzR3RrLmNwcAppbmRleCA1YzFjZDg2Li5k
NjVkMjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xz
R3RrLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIGJvb2wgTWVkaWFDb250cm9sc0d0azo6aW5pdGlh
bGl6ZUNvbnRyb2xzKERvY3VtZW50JiBkb2N1bWVudCkKICAgICBpZiAoZXhjZXB0aW9uQ29kZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGRvY3VtZW50LnBhZ2UoKS0+dGhlbWUo
KS0+c3VwcG9ydHNDbG9zZWRDYXB0aW9uaW5nKCkpIHsKKyAgICBpZiAoZG9jdW1lbnQucGFnZSgp
LT50aGVtZSgpLnN1cHBvcnRzQ2xvc2VkQ2FwdGlvbmluZygpKSB7CiAgICAgICAgIFJlZlB0cjxN
ZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0NvbnRhaW5lckVsZW1lbnQ+IGNsb3NlZENhcHRpb25z
Q29udGFpbmVyID0gTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWluZXJFbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQpOwogCiAgICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xDbG9zZWRDYXB0
aW9uc1RyYWNrTGlzdEVsZW1lbnQ+IGNsb3NlZENhcHRpb25zVHJhY2tMaXN0ID0gTWVkaWFDb250
cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIHRoaXMp
OwpAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgTWVkaWFDb250cm9sc0d0azo6cmVzZXQoKQogICAg
ICAgICByZXR1cm47CiAKICAgICBkb3VibGUgZHVyYXRpb24gPSBtX21lZGlhQ29udHJvbGxlci0+
ZHVyYXRpb24oKTsKLSAgICBtX2R1cmF0aW9uRGlzcGxheS0+c2V0SW5uZXJUZXh0KHBhZ2UtPnRo
ZW1lKCktPmZvcm1hdE1lZGlhQ29udHJvbHNUaW1lKGR1cmF0aW9uKSwgQVNTRVJUX05PX0VYQ0VQ
VElPTik7CisgICAgbV9kdXJhdGlvbkRpc3BsYXktPnNldElubmVyVGV4dChwYWdlLT50aGVtZSgp
LmZvcm1hdE1lZGlhQ29udHJvbHNUaW1lKGR1cmF0aW9uKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7
CiAgICAgbV9kdXJhdGlvbkRpc3BsYXktPnNldEN1cnJlbnRWYWx1ZShkdXJhdGlvbik7CiAKICAg
ICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbikgewpAQCAtMjM4LDcgKzIzOCw3IEBA
IHZvaWQgTWVkaWFDb250cm9sc0d0azo6dXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KCkKIAogICAg
IC8vIEFsbG93IHRoZSB0aGVtZSB0byBmb3JtYXQgdGhlIHRpbWUuCiAgICAgRXhjZXB0aW9uQ29k
ZSBleGNlcHRpb25Db2RlOwotICAgIG1fY3VycmVudFRpbWVEaXNwbGF5LT5zZXRJbm5lclRleHQo
cGFnZS0+dGhlbWUoKS0+Zm9ybWF0TWVkaWFDb250cm9sc0N1cnJlbnRUaW1lKG5vdywgZHVyYXRp
b24pLCBleGNlcHRpb25Db2RlKTsKKyAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0SW5uZXJU
ZXh0KHBhZ2UtPnRoZW1lKCkuZm9ybWF0TWVkaWFDb250cm9sc0N1cnJlbnRUaW1lKG5vdywgZHVy
YXRpb24pLCBleGNlcHRpb25Db2RlKTsKICAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0Q3Vy
cmVudFZhbHVlKG5vdyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZXRlclNoYWRvd0VsZW1lbnQuY3BwCmluZGV4IDJkNzVmYzUuLjBkMGY0MGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcApAQCAtNTcs
NyArNTcsNyBAQCBIVE1MTWV0ZXJFbGVtZW50KiBNZXRlclNoYWRvd0VsZW1lbnQ6Om1ldGVyRWxl
bWVudCgpIGNvbnN0CiBib29sIE1ldGVyU2hhZG93RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7CiAgICAgYXV0byByZW5kZXIgPSBtZXRlckVsZW1l
bnQoKS0+cmVuZGVyZXIoKTsKLSAgICByZXR1cm4gcmVuZGVyICYmICFyZW5kZXItPnRoZW1lKCkt
PnN1cHBvcnRzTWV0ZXIocmVuZGVyLT5zdHlsZSgpLmFwcGVhcmFuY2UoKSkgJiYgSFRNTERpdkVs
ZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgIHJldHVybiByZW5kZXIgJiYgIXJl
bmRlci0+dGhlbWUoKS5zdXBwb3J0c01ldGVyKHJlbmRlci0+c3R5bGUoKS5hcHBlYXJhbmNlKCkp
ICYmIEhUTUxEaXZFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsKIH0KIAogTWV0ZXJJ
bm5lckVsZW1lbnQ6Ok1ldGVySW5uZXJFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTcz
LDcgKzczLDcgQEAgYm9vbCBNZXRlcklubmVyRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgICAgIHJldHVybiBIVE1MRGl2RWxlbWVudDo6cmVu
ZGVyZXJJc05lZWRlZChzdHlsZSk7CiAKICAgICBhdXRvIHJlbmRlciA9IG1ldGVyRWxlbWVudCgp
LT5yZW5kZXJlcigpOwotICAgIHJldHVybiByZW5kZXIgJiYgIXJlbmRlci0+dGhlbWUoKS0+c3Vw
cG9ydHNNZXRlcihyZW5kZXItPnN0eWxlKCkuYXBwZWFyYW5jZSgpKSAmJiBIVE1MRGl2RWxlbWVu
dDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CisgICAgcmV0dXJuIHJlbmRlciAmJiAhcmVuZGVy
LT50aGVtZSgpLnN1cHBvcnRzTWV0ZXIocmVuZGVyLT5zdHlsZSgpLmFwcGVhcmFuY2UoKSkgJiYg
SFRNTERpdkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOwogfQogCiBSZW5kZXJFbGVt
ZW50KiBNZXRlcklubmVyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHls
ZT4gc3R5bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJU
aHVtYkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJF
bGVtZW50LmNwcAppbmRleCBhYWM4OWMyLi5iNmI4Mjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAg
aW5saW5lIHN0YXRpYyBib29sIGhhc1ZlcnRpY2FsQXBwZWFyYW5jZShIVE1MSW5wdXRFbGVtZW50
KiBpbnB1dCkKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc2xpZGVyU3R5bGUgPSBpbnB1dC0+cmVu
ZGVyZXIoKS0+c3R5bGUoKTsKIAogI2lmIEVOQUJMRShWSURFTykKLSAgICBpZiAoc2xpZGVyU3R5
bGUuYXBwZWFyYW5jZSgpID09IE1lZGlhVm9sdW1lU2xpZGVyUGFydCAmJiBpbnB1dC0+cmVuZGVy
ZXIoKS0+dGhlbWUoKS0+dXNlc1ZlcnRpY2FsVm9sdW1lU2xpZGVyKCkpCisgICAgaWYgKHNsaWRl
clN0eWxlLmFwcGVhcmFuY2UoKSA9PSBNZWRpYVZvbHVtZVNsaWRlclBhcnQgJiYgaW5wdXQtPnJl
bmRlcmVyKCktPnRoZW1lKCkudXNlc1ZlcnRpY2FsVm9sdW1lU2xpZGVyKCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogI2VuZGlmCiAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBSZW5kZXJTbGlkZXJU
aHVtYjo6dXBkYXRlQXBwZWFyYW5jZShSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpCiAgICAgZWxz
ZSBpZiAocGFyZW50U3R5bGUtPmFwcGVhcmFuY2UoKSA9PSBNZWRpYUZ1bGxTY3JlZW5Wb2x1bWVT
bGlkZXJQYXJ0KQogICAgICAgICBzdHlsZSgpLnNldEFwcGVhcmFuY2UoTWVkaWFGdWxsU2NyZWVu
Vm9sdW1lU2xpZGVyVGh1bWJQYXJ0KTsKICAgICBpZiAoc3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkp
Ci0gICAgICAgIHRoZW1lKCktPmFkanVzdFNsaWRlclRodW1iU2l6ZSgmc3R5bGUoKSwgZWxlbWVu
dCgpKTsKKyAgICAgICAgdGhlbWUoKS5hZGp1c3RTbGlkZXJUaHVtYlNpemUoJnN0eWxlKCksIGVs
ZW1lbnQoKSk7CiB9CiAKIGJvb2wgUmVuZGVyU2xpZGVyVGh1bWI6OmlzU2xpZGVyVGh1bWIoKSBj
b25zdApAQCAtMTIyLDEyICsxMjIsMTIgQEAgdm9pZCBSZW5kZXJTbGlkZXJDb250YWluZXI6OmNv
bXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3UKIAogI2lm
IEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIGlmIChpbnB1dC0+cmVuZGVyZXIoKS0+aXNT
bGlkZXIoKSAmJiAhaXNWZXJ0aWNhbCAmJiBpbnB1dC0+bGlzdCgpKSB7Ci0gICAgICAgIGludCBv
ZmZzZXRGcm9tQ2VudGVyID0gdGhlbWUoKS0+c2xpZGVyVGlja09mZnNldEZyb21UcmFja0NlbnRl
cigpOworICAgICAgICBpbnQgb2Zmc2V0RnJvbUNlbnRlciA9IHRoZW1lKCkuc2xpZGVyVGlja09m
ZnNldEZyb21UcmFja0NlbnRlcigpOwogICAgICAgICBMYXlvdXRVbml0IHRyYWNrSGVpZ2h0ID0g
MDsKICAgICAgICAgaWYgKG9mZnNldEZyb21DZW50ZXIgPCAwKQogICAgICAgICAgICAgdHJhY2tI
ZWlnaHQgPSAtMiAqIG9mZnNldEZyb21DZW50ZXI7CiAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgaW50IHRpY2tMZW5ndGggPSB0aGVtZSgpLT5zbGlkZXJUaWNrU2l6ZSgpLmhlaWdodCgpOwor
ICAgICAgICAgICAgaW50IHRpY2tMZW5ndGggPSB0aGVtZSgpLnNsaWRlclRpY2tTaXplKCkuaGVp
Z2h0KCk7CiAgICAgICAgICAgICB0cmFja0hlaWdodCA9IDIgKiAob2Zmc2V0RnJvbUNlbnRlciAr
IHRpY2tMZW5ndGgpOwogICAgICAgICB9CiAgICAgICAgIGZsb2F0IHpvb21GYWN0b3IgPSBzdHls
ZSgpLmVmZmVjdGl2ZVpvb20oKTsKQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIFNsaWRlclRodW1i
RWxlbWVudDo6c2V0UG9zaXRpb25Gcm9tUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIGFic29sdXRl
UG9pbnQpCiAgICAgRGVjaW1hbCB2YWx1ZSA9IHN0ZXBSYW5nZS5jbGFtcFZhbHVlKHN0ZXBSYW5n
ZS52YWx1ZUZyb21Qcm9wb3J0aW9uKGZyYWN0aW9uKSk7CiAKICNpZiBFTkFCTEUoREFUQUxJU1Rf
RUxFTUVOVCkKLSAgICBjb25zdCBMYXlvdXRVbml0IHNuYXBwaW5nVGhyZXNob2xkID0gcmVuZGVy
ZXIoKS0+dGhlbWUoKS0+c2xpZGVyVGlja1NuYXBwaW5nVGhyZXNob2xkKCk7CisgICAgY29uc3Qg
TGF5b3V0VW5pdCBzbmFwcGluZ1RocmVzaG9sZCA9IHJlbmRlcmVyKCktPnRoZW1lKCkuc2xpZGVy
VGlja1NuYXBwaW5nVGhyZXNob2xkKCk7CiAgICAgaWYgKHNuYXBwaW5nVGhyZXNob2xkID4gMCkg
ewogICAgICAgICBEZWNpbWFsIGNsb3Nlc3QgPSBpbnB1dC0+ZmluZENsb3Nlc3RUaWNrTWFya1Zh
bHVlKHZhbHVlKTsKICAgICAgICAgaWYgKGNsb3Nlc3QuaXNGaW5pdGUoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCmluZGV4IDQ4MjFlMTAuLmEyODE5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKQEAgLTM0MDQsNyArMzQwNCw3IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVD
b250cm9sVGludHMoKQogICAgICAgICByZXR1cm47CiAKICAgICBSZW5kZXJWaWV3KiByZW5kZXJW
aWV3ID0gdGhpcy0+cmVuZGVyVmlldygpOwotICAgIGlmICgocmVuZGVyVmlldyAmJiByZW5kZXJW
aWV3LT50aGVtZSgpLT5zdXBwb3J0c0NvbnRyb2xUaW50cygpKSB8fCBoYXNDdXN0b21TY3JvbGxi
YXJzKCkpCisgICAgaWYgKChyZW5kZXJWaWV3ICYmIHJlbmRlclZpZXctPnRoZW1lKCkuc3VwcG9y
dHNDb250cm9sVGludHMoKSkgfHwgaGFzQ3VzdG9tU2Nyb2xsYmFycygpKQogICAgICAgICBwYWlu
dENvbnRyb2xUaW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IDVmZjhlMjcuLmU2MDFkMDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oCkBAIC0xNDEsNyArMTQxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBz
ZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMoKTsKIAotICAgIFJlbmRlclRoZW1lKiB0aGVt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGhlbWUuZ2V0KCk7IH0KKyAgICBSZW5kZXJUaGVtZSYgdGhl
bWUoKSBjb25zdCB7IHJldHVybiAqbV90aGVtZTsgfQogCiAgICAgVmlld3BvcnRBcmd1bWVudHMg
dmlld3BvcnRBcmd1bWVudHMoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKaW5kZXggMGQ4MDQxNy4uYzFiNTE0YSAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCkBAIC00MTcsOSAr
NDE3LDkgQEAgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFn
ZShQYWdlKiBwYWdlKQogCiBzdGF0aWMgdm9pZCBhcHBseUNvbG9yQ2FsbGJhY2sodm9pZCogZGF0
YSwgRXZhc19PYmplY3QqLCBjb25zdCBjaGFyKiAvKiBzaWduYWwgKi8sIGNvbnN0IGNoYXIqIGNv
bG9yQ2xhc3MpCiB7Ci0gICAgUmVuZGVyVGhlbWVFZmwqIHRoYXQgPSBzdGF0aWNfY2FzdDxSZW5k
ZXJUaGVtZUVmbCo+KGRhdGEpOwotICAgIHRoYXQtPnNldENvbG9yRnJvbVRoZW1lQ2xhc3MoY29s
b3JDbGFzcyk7Ci0gICAgdGhhdC0+cGxhdGZvcm1Db2xvcnNEaWRDaGFuZ2UoKTsgLy8gVHJpZ2dl
cnMgcmVsYXlvdXQuCisgICAgUmVuZGVyVGhlbWVFZmwmIHRoYXQgPSBzdGF0aWNfY2FzdDxSZW5k
ZXJUaGVtZUVmbCY+KGRhdGEpOworICAgIHRoYXQuc2V0Q29sb3JGcm9tVGhlbWVDbGFzcyhjb2xv
ckNsYXNzKTsKKyAgICB0aGF0LnBsYXRmb3JtQ29sb3JzRGlkQ2hhbmdlKCk7IC8vIFRyaWdnZXJz
IHJlbGF5b3V0LgogfQogCiBzdGF0aWMgYm9vbCBmaWxsQ29sb3JzRnJvbUVkamVDbGFzcyhFdmFz
X09iamVjdCogbywgY29uc3QgY2hhciogY29sb3JDbGFzcywgQ29sb3IqIGNvbG9yMSwgQ29sb3Iq
IGNvbG9yMiA9IDAsIENvbG9yKiBjb2xvcjMgPSAwKQpAQCAtNzk4LDcgKzc5OCw3IEBAIGJvb2wg
UmVuZGVyVGhlbWVFZmw6OnBhaW50U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNv
bnN0IFBhaW50SW5mbyYgaW5mCiB2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RDaGVja2JveFN0
eWxlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxl
bWVudCogZWxlbWVudCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFnZSAmJiBlbGVtZW50ICYmIGVs
ZW1lbnQtPmRvY3VtZW50KCkucGFnZSgpKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRo
ZW1lRWZsKj4oZWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RDaGVj
a2JveFN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlbGVtZW50KTsKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8UmVuZGVyVGhlbWVFZmwmPihlbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUo
KSkuYWRqdXN0Q2hlY2tib3hTdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZWxlbWVudCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTgyMSw3ICs4MjEsNyBAQCBib29sIFJlbmRlclRo
ZW1lRWZsOjpwYWludENoZWNrYm94KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludElu
Zm8mIGluZm8sCiB2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RSYWRpb1N0eWxlKFN0eWxlUmVz
b2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVu
dCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFnZSAmJiBlbGVtZW50ICYmIGVsZW1lbnQtPmRvY3Vt
ZW50KCkucGFnZSgpKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsKj4oZWxl
bWVudC0+ZG9jdW1lbnQoKS5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RSYWRpb1N0eWxlKHN0eWxl
UmVzb2x2ZXIsIHN0eWxlLCBlbGVtZW50KTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhl
bWVFZmwmPihlbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUoKSkuYWRqdXN0UmFkaW9T
dHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZWxlbWVudCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTg0NCw3ICs4NDQsNyBAQCBib29sIFJlbmRlclRoZW1lRWZsOjpwYWludFJhZGlv
KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbgogdm9pZCBS
ZW5kZXJUaGVtZUVmbDo6YWRqdXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNv
bHZlciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewogICAg
IGlmICghbV9wYWdlICYmIGVsZW1lbnQgJiYgZWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdlKCkpIHsK
LSAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihlbGVtZW50LT5kb2N1bWVudCgp
LnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdEJ1dHRvblN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxl
LCBlbGVtZW50KTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwmPihlbGVtZW50
LT5kb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUoKSkuYWRqdXN0QnV0dG9uU3R5bGUoc3R5bGVSZXNv
bHZlciwgc3R5bGUsIGVsZW1lbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04NjEs
NyArODYxLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0
KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY28KIHZvaWQgUmVuZGVyVGhlbWVFZmw6
OmFkanVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVy
U3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewogICAgIGlmICghbV9wYWdl
ICYmIGVsZW1lbnQgJiYgZWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdlKCkpIHsKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihlbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKS0+dGhl
bWUoKSktPmFkanVzdE1lbnVMaXN0U3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGVsZW1lbnQp
OworICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCY+KGVsZW1lbnQtPmRvY3VtZW50
KCkucGFnZSgpLT50aGVtZSgpKS5hZGp1c3RNZW51TGlzdFN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0
eWxlLCBlbGVtZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhZGp1c3RTaXplQ29u
c3RyYWludHMoc3R5bGUsIENvbWJvQm94KTsKQEAgLTkwMCw3ICs5MDAsNyBAQCBib29sIFJlbmRl
clRoZW1lRWZsOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoUmVuZGVyT2JqZWN0KiBv
YmplY3QsIGNvbnN0CiB2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RUZXh0RmllbGRTdHlsZShT
dHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQq
IGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3BhZ2UgJiYgZWxlbWVudCAmJiBlbGVtZW50
LT5kb2N1bWVudCgpLnBhZ2UoKSkgewotICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVm
bCo+KGVsZW1lbnQtPmRvY3VtZW50KCkucGFnZSgpLT50aGVtZSgpKS0+YWRqdXN0VGV4dEZpZWxk
U3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGVsZW1lbnQpOworICAgICAgICBzdGF0aWNfY2Fz
dDxSZW5kZXJUaGVtZUVmbCY+KGVsZW1lbnQtPmRvY3VtZW50KCkucGFnZSgpLT50aGVtZSgpKS5h
ZGp1c3RUZXh0RmllbGRTdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZWxlbWVudCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgYWRqdXN0U2l6ZUNvbnN0cmFpbnRzKHN0eWxlLCBUZXh0
RmllbGQpOwpAQCAtOTI0LDcgKzkyNCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50VGV4
dEFyZWEoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywKIHZvaWQg
UmVuZGVyVGhlbWVFZmw6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKFN0eWxl
UmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxl
bWVudCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFnZSAmJiBlbGVtZW50ICYmIGVsZW1lbnQtPmRv
Y3VtZW50KCkucGFnZSgpKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsKj4o
ZWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RTZWFyY2hGaWVsZFJl
c3VsdHNCdXR0b25TdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZWxlbWVudCk7CisgICAgICAg
IHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsJj4oZWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdlKCkt
PnRoZW1lKCkpLmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKHN0eWxlUmVzb2x2
ZXIsIHN0eWxlLCBlbGVtZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhZGp1c3RT
aXplQ29uc3RyYWludHMoc3R5bGUsIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbik7CkBAIC05NDYs
NyArOTQ2LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNC
dXR0b24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFAKIHZvaWQgUmVuZGVyVGhlbWVFZmw6
OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0U3R5bGUoU3R5bGVSZXNvbHZl
ciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBj
b25zdAogewogICAgIGlmICghbV9wYWdlICYmIGVsZW1lbnQgJiYgZWxlbWVudC0+ZG9jdW1lbnQo
KS5wYWdlKCkpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihlbGVtZW50
LT5kb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0Rl
Y29yYXRpb25QYXJ0U3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGVsZW1lbnQpOworICAgICAg
ICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCY+KGVsZW1lbnQtPmRvY3VtZW50KCkucGFnZSgp
LT50aGVtZSgpKS5hZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydFN0eWxlKHN0
eWxlUmVzb2x2ZXIsIHN0eWxlLCBlbGVtZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBhZGp1c3RTaXplQ29uc3RyYWludHMoc3R5bGUsIFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRp
b24pOwpAQCAtOTY4LDcgKzk2OCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50U2VhcmNo
RmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQoUmVuZGVyT2JqZWN0KiBvYmplY3QsCiB2b2lkIFJl
bmRlclRoZW1lRWZsOjphZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKFN0eWxlUmVz
b2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVu
dCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFnZSAmJiBlbGVtZW50ICYmIGVsZW1lbnQtPmRvY3Vt
ZW50KCkucGFnZSgpKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsKj4oZWxl
bWVudC0+ZG9jdW1lbnQoKS5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RTZWFyY2hGaWVsZENhbmNl
bEJ1dHRvblN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlbGVtZW50KTsKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwmPihlbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKS0+dGhl
bWUoKSkuYWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShzdHlsZVJlc29sdmVyLCBz
dHlsZSwgZWxlbWVudCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYWRqdXN0U2l6ZUNv
bnN0cmFpbnRzKHN0eWxlLCBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbik7CkBAIC05OTIsNyArOTky
LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihS
ZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGEKIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVz
dFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5
bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewogICAgIGlmICghbV9wYWdlICYm
IGVsZW1lbnQgJiYgZWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdlKCkpIHsKLSAgICAgICAgc3RhdGlj
X2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihlbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUo
KSktPmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGVsZW1lbnQp
OworICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCY+KGVsZW1lbnQtPmRvY3VtZW50
KCkucGFnZSgpLT50aGVtZSgpKS5hZGp1c3RTZWFyY2hGaWVsZFN0eWxlKHN0eWxlUmVzb2x2ZXIs
IHN0eWxlLCBlbGVtZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhZGp1c3RTaXpl
Q29uc3RyYWludHMoc3R5bGUsIFNlYXJjaEZpZWxkKTsKQEAgLTEwMDgsNyArMTAwOCw3IEBAIGJv
b2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50U2VhcmNoRmllbGQoUmVuZGVyT2JqZWN0KiBvYmplY3Qs
IGNvbnN0IFBhaW50SW5mbyYgaW5mCiB2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RJbm5lclNw
aW5CdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSog
c3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3BhZ2UgJiYgZWxl
bWVudCAmJiBlbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKSkgewotICAgICAgICBzdGF0aWNfY2Fz
dDxSZW5kZXJUaGVtZUVmbCo+KGVsZW1lbnQtPmRvY3VtZW50KCkucGFnZSgpLT50aGVtZSgpKS0+
YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGVsZW1lbnQp
OworICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCY+KGVsZW1lbnQtPmRvY3VtZW50
KCkucGFnZSgpLT50aGVtZSgpKS5hZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZShzdHlsZVJlc29s
dmVyLCBzdHlsZSwgZWxlbWVudCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYWRqdXN0
U2l6ZUNvbnN0cmFpbnRzKHN0eWxlLCBTcGlubmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCBkMTA2MGViLi5iZWUyYzU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0xMjg1LDggKzEyODUsOCBAQCB2
b2lkIElubGluZVRleHRCb3g6OnBhaW50VGV4dE1hdGNoTWFya2VyKEdyYXBoaWNzQ29udGV4dCog
cHQsIGNvbnN0IEZsb2F0UG9pbnQmCiAgICAgLy8gT3B0aW9uYWxseSBoaWdobGlnaHQgdGhlIHRl
eHQKICAgICBpZiAocmVuZGVyZXIoKS5mcmFtZSgpLmVkaXRvcigpLm1hcmtlZFRleHRNYXRjaGVz
QXJlSGlnaGxpZ2h0ZWQoKSkgewogICAgICAgICBDb2xvciBjb2xvciA9IG1hcmtlci0+YWN0aXZl
TWF0Y2goKSA/Ci0gICAgICAgICAgICByZW5kZXJlcigpLnRoZW1lKCktPnBsYXRmb3JtQWN0aXZl
VGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCkgOgotICAgICAgICAgICAgcmVuZGVyZXIoKS50aGVt
ZSgpLT5wbGF0Zm9ybUluYWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCk7CisgICAgICAg
ICAgICByZW5kZXJlcigpLnRoZW1lKCkucGxhdGZvcm1BY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0
Q29sb3IoKSA6CisgICAgICAgICAgICByZW5kZXJlcigpLnRoZW1lKCkucGxhdGZvcm1JbmFjdGl2
ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpOwogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoKnB0KTsKICAgICAgICAgdXBkYXRlR3JhcGhpY3NDb250ZXh0KCpw
dCwgVGV4dFBhaW50U3R5bGUoY29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSkpOyAvLyBEb24ndCBk
cmF3IHRleHQgYXQgYWxsIQogICAgICAgICBwdC0+Y2xpcChGbG9hdFJlY3QoYm94T3JpZ2luLngo
KSwgYm94T3JpZ2luLnkoKSAtIGRlbHRhWSwgbV9sb2dpY2FsV2lkdGgsIHNlbEhlaWdodCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggMWVkNWM5YS4uMDgy
YjVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0xNzEx
LDcgKzE3MTEsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjphZGRWaXN1YWxPdmVyZmxvd0Zyb21UaGVt
ZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIEludFJlY3QgaW5mbGF0ZWRSZWN0ID0gcGl4ZWxT
bmFwcGVkQm9yZGVyQm94UmVjdCgpOwotICAgIHRoZW1lKCktPmFkanVzdFJlcGFpbnRSZWN0KHRo
aXMsIGluZmxhdGVkUmVjdCk7CisgICAgdGhlbWUoKS5hZGp1c3RSZXBhaW50UmVjdCh0aGlzLCBp
bmZsYXRlZFJlY3QpOwogICAgIGFkZFZpc3VhbE92ZXJmbG93KGluZmxhdGVkUmVjdCk7CiAKICAg
ICBpZiAoUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IGZsb3dUaHJlYWRDb250YWluaW5n
QmxvY2soKSkKQEAgLTQ3MTIsOCArNDcxMiw4IEBAIGludCBSZW5kZXJCbG9jazo6YmFzZWxpbmVQ
b3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGluZSwgTGluCiAg
ICAgICAgIC8vIEZJWE1FOiBNaWdodCBiZSBiZXR0ZXIgdG8gaGF2ZSBhIGN1c3RvbSBDU1MgcHJv
cGVydHkgaW5zdGVhZCwgc28gdGhhdCBpZiB0aGUgdGhlbWUKICAgICAgICAgLy8gaXMgdHVybmVk
IG9mZiwgY2hlY2tib3hlcy9yYWRpb3Mgd2lsbCBzdGlsbCBoYXZlIGRlY2VudCBiYXNlbGluZXMu
CiAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIHBhdGNoIGZvcm0gY29udHJvbHMgdG8gZGVhbCB3
aXRoIHZlcnRpY2FsIGxpbmVzLgotICAgICAgICBpZiAoc3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkg
JiYgIXRoZW1lKCktPmlzQ29udHJvbENvbnRhaW5lcihzdHlsZSgpLmFwcGVhcmFuY2UoKSkpCi0g
ICAgICAgICAgICByZXR1cm4gdGhlbWUoKS0+YmFzZWxpbmVQb3NpdGlvbih0aGlzKTsKKyAgICAg
ICAgaWYgKHN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpICYmICF0aGVtZSgpLmlzQ29udHJvbENvbnRh
aW5lcihzdHlsZSgpLmFwcGVhcmFuY2UoKSkpCisgICAgICAgICAgICByZXR1cm4gdGhlbWUoKS5i
YXNlbGluZVBvc2l0aW9uKHRoaXMpOwogICAgICAgICAgICAgCiAgICAgICAgIC8vIENTUzIuMSBz
dGF0ZXMgdGhhdCB0aGUgYmFzZWxpbmUgb2YgYW4gaW5saW5lIGJsb2NrIGlzIHRoZSBiYXNlbGlu
ZSBvZiB0aGUgbGFzdCBsaW5lIGJveCBpbgogICAgICAgICAvLyB0aGUgbm9ybWFsIGZsb3cuICBX
ZSBtYWtlIGFuIGV4Y2VwdGlvbiBmb3IgbWFycXVlZXMsIHNpbmNlIHRoZWlyIGJhc2VsaW5lcyBh
cmUgbWVhbmluZ2xlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXgg
ODk0NGQ3My4uODQ2NDJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAK
QEAgLTEyMDQsNyArMTIwNCw3IEBAIHZvaWQgUmVuZGVyQm94OjpwYWludEJveERlY29yYXRpb25z
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpCiAgICAgLy8gSWYg
d2UgaGF2ZSBhIG5hdGl2ZSB0aGVtZSBhcHBlYXJhbmNlLCBwYWludCB0aGF0IGJlZm9yZSBwYWlu
dGluZyBvdXIgYmFja2dyb3VuZC4KICAgICAvLyBUaGUgdGhlbWUgd2lsbCB0ZWxsIHVzIHdoZXRo
ZXIgb3Igbm90IHdlIHNob3VsZCBhbHNvIHBhaW50IHRoZSBDU1MgYmFja2dyb3VuZC4KICAgICBJ
bnRSZWN0IHNuYXBwZWRQYWludFJlY3QocGl4ZWxTbmFwcGVkSW50UmVjdChwYWludFJlY3QpKTsK
LSAgICBib29sIHRoZW1lUGFpbnRlZCA9IHN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpICYmICF0aGVt
ZSgpLT5wYWludCh0aGlzLCBwYWludEluZm8sIHNuYXBwZWRQYWludFJlY3QpOworICAgIGJvb2wg
dGhlbWVQYWludGVkID0gc3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkgJiYgIXRoZW1lKCkucGFpbnQo
dGhpcywgcGFpbnRJbmZvLCBzbmFwcGVkUGFpbnRSZWN0KTsKICAgICBpZiAoIXRoZW1lUGFpbnRl
ZCkgewogICAgICAgICBpZiAoYmxlZWRBdm9pZGFuY2UgPT0gQmFja2dyb3VuZEJsZWVkQmFja2dy
b3VuZE92ZXJCb3JkZXIpCiAgICAgICAgICAgICBwYWludEJvcmRlcihwYWludEluZm8sIHBhaW50
UmVjdCwgJnN0eWxlKCksIGJsZWVkQXZvaWRhbmNlKTsKQEAgLTEyMTIsMTIgKzEyMTIsMTIgQEAg
dm9pZCBSZW5kZXJCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWkKICAgICAgICAgcGFpbnRCYWNrZ3JvdW5kKHBhaW50SW5m
bywgcGFpbnRSZWN0LCBibGVlZEF2b2lkYW5jZSk7CiAKICAgICAgICAgaWYgKHN0eWxlKCkuaGFz
QXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgdGhlbWUoKS0+cGFpbnREZWNvcmF0aW9ucyh0aGlz
LCBwYWludEluZm8sIHNuYXBwZWRQYWludFJlY3QpOworICAgICAgICAgICAgdGhlbWUoKS5wYWlu
dERlY29yYXRpb25zKHRoaXMsIHBhaW50SW5mbywgc25hcHBlZFBhaW50UmVjdCk7CiAgICAgfQog
ICAgIHBhaW50Qm94U2hhZG93KHBhaW50SW5mbywgcGFpbnRSZWN0LCAmc3R5bGUoKSwgSW5zZXQp
OwogCiAgICAgLy8gVGhlIHRoZW1lIHdpbGwgdGVsbCB1cyB3aGV0aGVyIG9yIG5vdCB3ZSBzaG91
bGQgYWxzbyBwYWludCB0aGUgQ1NTIGJvcmRlci4KLSAgICBpZiAoYmxlZWRBdm9pZGFuY2UgIT0g
QmFja2dyb3VuZEJsZWVkQmFja2dyb3VuZE92ZXJCb3JkZXIgJiYgKCFzdHlsZSgpLmhhc0FwcGVh
cmFuY2UoKSB8fCAoIXRoZW1lUGFpbnRlZCAmJiB0aGVtZSgpLT5wYWludEJvcmRlck9ubHkodGhp
cywgcGFpbnRJbmZvLCBzbmFwcGVkUGFpbnRSZWN0KSkpICYmIHN0eWxlKCkuaGFzQm9yZGVyKCkp
CisgICAgaWYgKGJsZWVkQXZvaWRhbmNlICE9IEJhY2tncm91bmRCbGVlZEJhY2tncm91bmRPdmVy
Qm9yZGVyICYmICghc3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkgfHwgKCF0aGVtZVBhaW50ZWQgJiYg
dGhlbWUoKS5wYWludEJvcmRlck9ubHkodGhpcywgcGFpbnRJbmZvLCBzbmFwcGVkUGFpbnRSZWN0
KSkpICYmIHN0eWxlKCkuaGFzQm9yZGVyKCkpCiAgICAgICAgIHBhaW50Qm9yZGVyKHBhaW50SW5m
bywgcGFpbnRSZWN0LCAmc3R5bGUoKSwgYmxlZWRBdm9pZGFuY2UpOwogCiAgICAgaWYgKGJsZWVk
QXZvaWRhbmNlID09IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcAppbmRleCBkZjMxYzI2Li44ZDNlMWMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcApAQCAtMTEyLDEy
ICsxMTIsMTIgQEAgdm9pZCBSZW5kZXJCdXR0b246OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVy
ZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3QKICAgICBpZiAobV9pbm5lcikgLy8g
UmVuZGVyQmxvY2sgaGFuZGxlZCB1cGRhdGluZyB0aGUgYW5vbnltb3VzIGJsb2NrJ3Mgc3R5bGUu
CiAgICAgICAgIHNldHVwSW5uZXJTdHlsZSgmbV9pbm5lci0+c3R5bGUoKSk7CiAKLSAgICBpZiAo
IW1fZGVmYXVsdCAmJiB0aGVtZSgpLT5pc0RlZmF1bHQodGhpcykpIHsKKyAgICBpZiAoIW1fZGVm
YXVsdCAmJiB0aGVtZSgpLmlzRGVmYXVsdCh0aGlzKSkgewogICAgICAgICBpZiAoIW1fdGltZXIp
CiAgICAgICAgICAgICBtX3RpbWVyID0gYWRvcHRQdHIobmV3IFRpbWVyPFJlbmRlckJ1dHRvbj4o
dGhpcywgJlJlbmRlckJ1dHRvbjo6dGltZXJGaXJlZCkpOwogICAgICAgICBtX3RpbWVyLT5zdGFy
dFJlcGVhdGluZygwLjAzKTsKICAgICAgICAgbV9kZWZhdWx0ID0gdHJ1ZTsKLSAgICB9IGVsc2Ug
aWYgKG1fZGVmYXVsdCAmJiAhdGhlbWUoKS0+aXNEZWZhdWx0KHRoaXMpKSB7CisgICAgfSBlbHNl
IGlmIChtX2RlZmF1bHQgJiYgIXRoZW1lKCkuaXNEZWZhdWx0KHRoaXMpKSB7CiAgICAgICAgIG1f
ZGVmYXVsdCA9IGZhbHNlOwogICAgICAgICBtX3RpbWVyLmNsZWFyKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAK
aW5kZXggMjA3ZGYyNS4uNDdlNDcwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgdm9p
ZCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMo
TGF5b3V0VW5pdCYgbWluTG9naWMKICAgICBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbCogcmVuZGVy
ZXIgPSBjb25zdF9jYXN0PFJlbmRlckZpbGVVcGxvYWRDb250cm9sKj4odGhpcyk7CiAgICAgZmxv
YXQgbWluRGVmYXVsdExhYmVsV2lkdGggPSBkZWZhdWx0V2lkdGhOdW1DaGFycyAqIGZvbnQud2lk
dGgoY29uc3RydWN0VGV4dFJ1bihyZW5kZXJlciwgZm9udCwgY2hhcmFjdGVyQXNTdHJpbmcsIHN0
eWxlKCksIFRleHRSdW46OkFsbG93VHJhaWxpbmdFeHBhbnNpb24pKTsKIAotICAgIGNvbnN0IFN0
cmluZyBsYWJlbCA9IHRoZW1lKCktPmZpbGVMaXN0RGVmYXVsdExhYmVsKGlucHV0RWxlbWVudCgp
Lm11bHRpcGxlKCkpOworICAgIGNvbnN0IFN0cmluZyBsYWJlbCA9IHRoZW1lKCkuZmlsZUxpc3RE
ZWZhdWx0TGFiZWwoaW5wdXRFbGVtZW50KCkubXVsdGlwbGUoKSk7CiAgICAgZmxvYXQgZGVmYXVs
dExhYmVsV2lkdGggPSBmb250LndpZHRoKGNvbnN0cnVjdFRleHRSdW4ocmVuZGVyZXIsIGZvbnQs
IGxhYmVsLCBzdHlsZSgpLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uKSk7CiAgICAg
aWYgKEhUTUxJbnB1dEVsZW1lbnQqIGJ1dHRvbiA9IHVwbG9hZEJ1dHRvbigpKQogICAgICAgICBp
ZiAoUmVuZGVyT2JqZWN0KiBidXR0b25SZW5kZXJlciA9IGJ1dHRvbi0+cmVuZGVyZXIoKSkKQEAg
LTI3OCw3ICsyNzgsNyBAQCBTdHJpbmcgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OmZpbGVUZXh0
VmFsdWUoKSBjb25zdAogICAgIGlmIChpbnB1dEVsZW1lbnQoKS5maWxlcygpLT5sZW5ndGgoKSkK
ICAgICAgICAgcmV0dXJuIFN0cmluZ1RydW5jYXRvcjo6cmlnaHRUcnVuY2F0ZShpbnB1dEVsZW1l
bnQoKS5kaXNwbGF5U3RyaW5nKCksIG1heEZpbGVuYW1lV2lkdGgoKSwgc3R5bGUoKS5mb250KCks
IFN0cmluZ1RydW5jYXRvcjo6RW5hYmxlUm91bmRpbmdIYWNrcyk7CiAjZW5kaWYKLSAgICByZXR1
cm4gdGhlbWUoKS0+ZmlsZUxpc3ROYW1lRm9yV2lkdGgoaW5wdXRFbGVtZW50KCkuZmlsZXMoKSwg
c3R5bGUoKS5mb250KCksIG1heEZpbGVuYW1lV2lkdGgoKSwgaW5wdXRFbGVtZW50KCkubXVsdGlw
bGUoKSk7CisgICAgcmV0dXJuIHRoZW1lKCkuZmlsZUxpc3ROYW1lRm9yV2lkdGgoaW5wdXRFbGVt
ZW50KCkuZmlsZXMoKSwgc3R5bGUoKS5mb250KCksIG1heEZpbGVuYW1lV2lkdGgoKSwgaW5wdXRF
bGVtZW50KCkubXVsdGlwbGUoKSk7CiB9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKaW5kZXggOTE1
MWE2NS4uNzFhZTE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsb3dUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93
VGhyZWFkLmNwcApAQCAtMTM1NSw3ICsxMzU1LDcgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjph
ZGRSZWdpb25zVmlzdWFsT3ZlcmZsb3dGcm9tVGhlbWUoY29uc3QgUmVuZGVyQmxvY2sqIGJsb2MK
ICAgICAgICAgYm9yZGVyQm94ID0gcmVnaW9uLT5yZWN0Rmxvd1BvcnRpb25Gb3JCb3goYmxvY2ss
IGJvcmRlckJveCk7CiAKICAgICAgICAgSW50UmVjdCBpbmZsYXRlZFJlY3QgPSBwaXhlbFNuYXBw
ZWRJbnRSZWN0KGJvcmRlckJveCk7Ci0gICAgICAgIGJsb2NrLT50aGVtZSgpLT5hZGp1c3RSZXBh
aW50UmVjdChibG9jaywgaW5mbGF0ZWRSZWN0KTsKKyAgICAgICAgYmxvY2stPnRoZW1lKCkuYWRq
dXN0UmVwYWludFJlY3QoYmxvY2ssIGluZmxhdGVkUmVjdCk7CiAKICAgICAgICAgcmVnaW9uLT5h
ZGRWaXN1YWxPdmVyZmxvd0ZvckJveChibG9jaywgaW5mbGF0ZWRSZWN0KTsKICAgICAgICAgaWYg
KHJlZ2lvbiA9PSBlbmRSZWdpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxp
bmUuY3BwCmluZGV4IDY2OTUxZTcuLjQ2OTg2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuY3BwCkBAIC0xNDYxLDcgKzE0NjEsNyBAQCB2b2lkIFJlbmRlcklubGlu
ZTo6cGFpbnRPdXRsaW5lKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPZgogICAgIAogICAgIFJlbmRlclN0eWxlJiBzdHlsZVRvVXNlID0gc3R5bGUoKTsKICAg
ICBpZiAoc3R5bGVUb1VzZS5vdXRsaW5lU3R5bGVJc0F1dG8oKSB8fCBoYXNPdXRsaW5lQW5ub3Rh
dGlvbigpKSB7Ci0gICAgICAgIGlmICghdGhlbWUoKS0+c3VwcG9ydHNGb2N1c1JpbmcoJnN0eWxl
VG9Vc2UpKSB7CisgICAgICAgIGlmICghdGhlbWUoKS5zdXBwb3J0c0ZvY3VzUmluZygmc3R5bGVU
b1VzZSkpIHsKICAgICAgICAgICAgIC8vIE9ubHkgcGFpbnQgdGhlIGZvY3VzIHJpbmcgYnkgaGFu
ZCBpZiB0aGUgdGhlbWUgaXNuJ3QgYWJsZSB0byBkcmF3IHRoZSBmb2N1cyByaW5nLgogICAgICAg
ICAgICAgcGFpbnRGb2N1c1JpbmcocGFpbnRJbmZvLCBwYWludE9mZnNldCwgJnN0eWxlVG9Vc2Up
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAK
aW5kZXggMmY4OWQ0MC4uODViMDA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0Qm94LmNwcApAQCAtMzk5LDEwICszOTksMTAgQEAgdm9pZCBSZW5kZXJMaXN0Qm94Ojpw
YWludEl0ZW1Gb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYKICAgICBDb2xvciB0ZXh0Q29sb3IgPSBsaXN0SXRlbUVsZW1lbnQtPnJlbmRlclN0eWxlKCkg
PyBsaXN0SXRlbUVsZW1lbnQtPnJlbmRlclN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihD
U1NQcm9wZXJ0eUNvbG9yKSA6IHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3Bl
cnR5Q29sb3IpOwogICAgIGlmIChpc09wdGlvbkVsZW1lbnQgJiYgdG9IVE1MT3B0aW9uRWxlbWVu
dChsaXN0SXRlbUVsZW1lbnQpLT5zZWxlY3RlZCgpKSB7CiAgICAgICAgIGlmIChmcmFtZSgpLnNl
bGVjdGlvbigpLmlzRm9jdXNlZEFuZEFjdGl2ZSgpICYmIGRvY3VtZW50KCkuZm9jdXNlZEVsZW1l
bnQoKSA9PSAmc2VsZWN0RWxlbWVudCgpKQotICAgICAgICAgICAgdGV4dENvbG9yID0gdGhlbWUo
KS0+YWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpOworICAgICAgICAgICAg
dGV4dENvbG9yID0gdGhlbWUoKS5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9y
KCk7CiAgICAgICAgIC8vIEhvbm9yIHRoZSBmb3JlZ3JvdW5kIGNvbG9yIGZvciBkaXNhYmxlZCBp
dGVtcwogICAgICAgICBlbHNlIGlmICghbGlzdEl0ZW1FbGVtZW50LT5pc0Rpc2FibGVkRm9ybUNv
bnRyb2woKSAmJiAhc2VsZWN0RWxlbWVudCgpLmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQotICAg
ICAgICAgICAgdGV4dENvbG9yID0gdGhlbWUoKS0+aW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9y
ZWdyb3VuZENvbG9yKCk7CisgICAgICAgICAgICB0ZXh0Q29sb3IgPSB0aGVtZSgpLmluYWN0aXZl
TGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpOwogICAgIH0KIAogICAgIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSA9IGl0ZW1TdHlsZS0+Y29sb3JTcGFjZSgpOwpAQCAtNDMyLDkgKzQzMiw5
IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtQmFja2dyb3VuZChQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgQ29sb3IgYmFja0NvbG9yOwogICAgIGlm
IChpc0hUTUxPcHRpb25FbGVtZW50KGxpc3RJdGVtRWxlbWVudCkgJiYgdG9IVE1MT3B0aW9uRWxl
bWVudChsaXN0SXRlbUVsZW1lbnQpLT5zZWxlY3RlZCgpKSB7CiAgICAgICAgIGlmIChmcmFtZSgp
LnNlbGVjdGlvbigpLmlzRm9jdXNlZEFuZEFjdGl2ZSgpICYmIGRvY3VtZW50KCkuZm9jdXNlZEVs
ZW1lbnQoKSA9PSAmc2VsZWN0RWxlbWVudCgpKQotICAgICAgICAgICAgYmFja0NvbG9yID0gdGhl
bWUoKS0+YWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpOworICAgICAgICAg
ICAgYmFja0NvbG9yID0gdGhlbWUoKS5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENv
bG9yKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJhY2tDb2xvciA9IHRoZW1lKCktPmlu
YWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpOworICAgICAgICAgICAgYmFj
a0NvbG9yID0gdGhlbWUoKS5pbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3Io
KTsKICAgICB9IGVsc2UKICAgICAgICAgYmFja0NvbG9yID0gbGlzdEl0ZW1FbGVtZW50LT5yZW5k
ZXJTdHlsZSgpID8gbGlzdEl0ZW1FbGVtZW50LT5yZW5kZXJTdHlsZSgpLT52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpIDogc3R5bGUoKS52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwogCkBAIC04MDcsNyArODA3
LDcgQEAgUGFzc1JlZlB0cjxTY3JvbGxiYXI+IFJlbmRlckxpc3RCb3g6OmNyZWF0ZVNjcm9sbGJh
cigpCiAgICAgaWYgKGhhc0N1c3RvbVNjcm9sbGJhclN0eWxlKQogICAgICAgICB3aWRnZXQgPSBS
ZW5kZXJTY3JvbGxiYXI6OmNyZWF0ZUN1c3RvbVNjcm9sbGJhcih0aGlzLCBWZXJ0aWNhbFNjcm9s
bGJhciwgJnNlbGVjdEVsZW1lbnQoKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHdpZGdldCA9IFNj
cm9sbGJhcjo6Y3JlYXRlTmF0aXZlU2Nyb2xsYmFyKHRoaXMsIFZlcnRpY2FsU2Nyb2xsYmFyLCB0
aGVtZSgpLT5zY3JvbGxiYXJDb250cm9sU2l6ZUZvclBhcnQoTGlzdGJveFBhcnQpKTsKKyAgICAg
ICAgd2lkZ2V0ID0gU2Nyb2xsYmFyOjpjcmVhdGVOYXRpdmVTY3JvbGxiYXIodGhpcywgVmVydGlj
YWxTY3JvbGxiYXIsIHRoZW1lKCkuc2Nyb2xsYmFyQ29udHJvbFNpemVGb3JQYXJ0KExpc3Rib3hQ
YXJ0KSk7CiAgICAgICAgIGRpZEFkZFNjcm9sbGJhcih3aWRnZXQuZ2V0KCksIFZlcnRpY2FsU2Ny
b2xsYmFyKTsKICAgICB9CiAgICAgdmlldygpLmZyYW1lVmlldygpLmFkZENoaWxkKHdpZGdldC5n
ZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlh
Q29udHJvbEVsZW1lbnRzLmNwcAppbmRleCA5MTYzMDhhLi43ZGU5ODJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5j
cHAKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5l
cjo6bGF5b3V0KCkKIAogICAgIC8vIElmIHRoZSBzbGlkZXIgd291bGQgYmUgcmVuZGVyZWQgb3V0
c2lkZSB0aGUgcGFnZSwgaXQgc2hvdWxkIGJlIG1vdmVkIGJlbG93IHRoZSBjb250cm9scy4KICAg
ICBpZiAoVU5MSUtFTFkoYWJzb2x1dGVPZmZzZXRUb3AgPCAwKSkKLSAgICAgICAgc2V0WShidXR0
b25Cb3gtPm9mZnNldFRvcCgpICsgdGhlbWUoKS0+dm9sdW1lU2xpZGVyT2Zmc2V0RnJvbU11dGVC
dXR0b24oYnV0dG9uQm94LCBwaXhlbFNuYXBwZWRTaXplKCkpLnkoKSk7CisgICAgICAgIHNldFko
YnV0dG9uQm94LT5vZmZzZXRUb3AoKSArIHRoZW1lKCkudm9sdW1lU2xpZGVyT2Zmc2V0RnJvbU11
dGVCdXR0b24oYnV0dG9uQm94LCBwaXhlbFNuYXBwZWRTaXplKCkpLnkoKSk7CiB9CiAKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTWVudUxpc3QuY3BwCmluZGV4IGI2MTJiNWEuLjZmZDU2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAtMTMwLDEwICsxMzAsMTAgQEAgdm9p
ZCBSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5uZXJTdHlsZSgpCiAgICAgICAgIGlubmVyU3R5bGUu
c2V0QWxpZ25TZWxmKEFsaWduRmxleFN0YXJ0KTsKICAgICB9CiAKLSAgICBpbm5lclN0eWxlLnNl
dFBhZGRpbmdMZWZ0KExlbmd0aCh0aGVtZSgpLT5wb3B1cEludGVybmFsUGFkZGluZ0xlZnQoJnN0
eWxlKCkpLCBGaXhlZCkpOwotICAgIGlubmVyU3R5bGUuc2V0UGFkZGluZ1JpZ2h0KExlbmd0aCh0
aGVtZSgpLT5wb3B1cEludGVybmFsUGFkZGluZ1JpZ2h0KCZzdHlsZSgpKSwgRml4ZWQpKTsKLSAg
ICBpbm5lclN0eWxlLnNldFBhZGRpbmdUb3AoTGVuZ3RoKHRoZW1lKCktPnBvcHVwSW50ZXJuYWxQ
YWRkaW5nVG9wKCZzdHlsZSgpKSwgRml4ZWQpKTsKLSAgICBpbm5lclN0eWxlLnNldFBhZGRpbmdC
b3R0b20oTGVuZ3RoKHRoZW1lKCktPnBvcHVwSW50ZXJuYWxQYWRkaW5nQm90dG9tKCZzdHlsZSgp
KSwgRml4ZWQpKTsKKyAgICBpbm5lclN0eWxlLnNldFBhZGRpbmdMZWZ0KExlbmd0aCh0aGVtZSgp
LnBvcHVwSW50ZXJuYWxQYWRkaW5nTGVmdCgmc3R5bGUoKSksIEZpeGVkKSk7CisgICAgaW5uZXJT
dHlsZS5zZXRQYWRkaW5nUmlnaHQoTGVuZ3RoKHRoZW1lKCkucG9wdXBJbnRlcm5hbFBhZGRpbmdS
aWdodCgmc3R5bGUoKSksIEZpeGVkKSk7CisgICAgaW5uZXJTdHlsZS5zZXRQYWRkaW5nVG9wKExl
bmd0aCh0aGVtZSgpLnBvcHVwSW50ZXJuYWxQYWRkaW5nVG9wKCZzdHlsZSgpKSwgRml4ZWQpKTsK
KyAgICBpbm5lclN0eWxlLnNldFBhZGRpbmdCb3R0b20oTGVuZ3RoKHRoZW1lKCkucG9wdXBJbnRl
cm5hbFBhZGRpbmdCb3R0b20oJnN0eWxlKCkpLCBGaXhlZCkpOwogCiAgICAgaWYgKGRvY3VtZW50
KCkucGFnZSgpLT5jaHJvbWUoKS5zZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgp
KSB7CiAgICAgICAgIC8vIEl0ZW1zIGluIHRoZSBwb3B1cCB3aWxsIG5vdCByZXNwZWN0IHRoZSBD
U1MgdGV4dC1hbGlnbiBhbmQgZGlyZWN0aW9uIHByb3BlcnRpZXMsCkBAIC0yMjMsNyArMjIzLDcg
QEAgdm9pZCBSZW5kZXJNZW51TGlzdDo6dXBkYXRlT3B0aW9uc1dpZHRoKCkKIAogICAgICAgICBT
dHJpbmcgdGV4dCA9IHRvSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCktPnRleHRJbmRlbnRlZFRv
UmVzcGVjdEdyb3VwTGFiZWwoKTsKICAgICAgICAgYXBwbHlUZXh0VHJhbnNmb3JtKHN0eWxlKCks
IHRleHQsICcgJyk7Ci0gICAgICAgIGlmICh0aGVtZSgpLT5wb3B1cE9wdGlvblN1cHBvcnRzVGV4
dEluZGVudCgpKSB7CisgICAgICAgIGlmICh0aGVtZSgpLnBvcHVwT3B0aW9uU3VwcG9ydHNUZXh0
SW5kZW50KCkpIHsKICAgICAgICAgICAgIC8vIEFkZCBpbiB0aGUgb3B0aW9uJ3MgdGV4dCBpbmRl
bnQuICBXZSBjYW4ndCBjYWxjdWxhdGUgcGVyY2VudGFnZSB2YWx1ZXMgZm9yIG5vdy4KICAgICAg
ICAgICAgIGZsb2F0IG9wdGlvbldpZHRoID0gMDsKICAgICAgICAgICAgIGlmIChSZW5kZXJTdHls
ZSogb3B0aW9uU3R5bGUgPSBlbGVtZW50LT5yZW5kZXJTdHlsZSgpKQpAQCAtMzI0LDcgKzMyNCw3
IEBAIExheW91dFJlY3QgUmVuZGVyTWVudUxpc3Q6OmNvbnRyb2xDbGlwUmVjdChjb25zdCBMYXlv
dXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCkKIAogdm9pZCBSZW5kZXJNZW51TGlzdDo6Y29tcHV0
ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlv
dXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0CiB7Ci0gICAgbWF4TG9naWNhbFdpZHRoID0g
c3RkOjptYXgobV9vcHRpb25zV2lkdGgsIHRoZW1lKCktPm1pbmltdW1NZW51TGlzdFNpemUoJnN0
eWxlKCkpKSArIG1faW5uZXJCbG9jay0+cGFkZGluZ0xlZnQoKSArIG1faW5uZXJCbG9jay0+cGFk
ZGluZ1JpZ2h0KCk7CisgICAgbWF4TG9naWNhbFdpZHRoID0gc3RkOjptYXgobV9vcHRpb25zV2lk
dGgsIHRoZW1lKCkubWluaW11bU1lbnVMaXN0U2l6ZSgmc3R5bGUoKSkpICsgbV9pbm5lckJsb2Nr
LT5wYWRkaW5nTGVmdCgpICsgbV9pbm5lckJsb2NrLT5wYWRkaW5nUmlnaHQoKTsKICAgICBpZiAo
IXN0eWxlKCkud2lkdGgoKS5pc1BlcmNlbnQoKSkKICAgICAgICAgbWluTG9naWNhbFdpZHRoID0g
bWF4TG9naWNhbFdpZHRoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck1ldGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5j
cHAKaW5kZXggMDEwNmZiZC4uNzJlYjZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck1ldGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTWV0ZXIuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgUmVuZGVyTWV0ZXI6OnVwZGF0ZUxv
Z2ljYWxXaWR0aCgpCiB7CiAgICAgUmVuZGVyQm94Ojp1cGRhdGVMb2dpY2FsV2lkdGgoKTsKIAot
ICAgIEludFNpemUgZnJhbWVTaXplID0gdGhlbWUoKS0+bWV0ZXJTaXplRm9yQm91bmRzKHRoaXMs
IHBpeGVsU25hcHBlZEludFJlY3QoZnJhbWVSZWN0KCkpKTsKKyAgICBJbnRTaXplIGZyYW1lU2l6
ZSA9IHRoZW1lKCkubWV0ZXJTaXplRm9yQm91bmRzKHRoaXMsIHBpeGVsU25hcHBlZEludFJlY3Qo
ZnJhbWVSZWN0KCkpKTsKICAgICBzZXRMb2dpY2FsV2lkdGgoaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSA/IGZyYW1lU2l6ZS53aWR0aCgpIDogZnJhbWVTaXplLmhlaWdodCgpKTsKIH0KIApAQCAt
NjcsNyArNjcsNyBAQCB2b2lkIFJlbmRlck1ldGVyOjpjb21wdXRlTG9naWNhbEhlaWdodChMYXlv
dXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naQogICAgICAgICBmcmFtZS5zZXRI
ZWlnaHQoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQpOwogICAgIGVsc2UKICAgICAgICAgZnJhbWUu
c2V0V2lkdGgoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQpOwotICAgIEludFNpemUgZnJhbWVTaXpl
ID0gdGhlbWUoKS0+bWV0ZXJTaXplRm9yQm91bmRzKHRoaXMsIHBpeGVsU25hcHBlZEludFJlY3Qo
ZnJhbWUpKTsKKyAgICBJbnRTaXplIGZyYW1lU2l6ZSA9IHRoZW1lKCkubWV0ZXJTaXplRm9yQm91
bmRzKHRoaXMsIHBpeGVsU25hcHBlZEludFJlY3QoZnJhbWUpKTsKICAgICBjb21wdXRlZFZhbHVl
cy5tX2V4dGVudCA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBmcmFtZVNpemUuaGVpZ2h0
KCkgOiBmcmFtZVNpemUud2lkdGgoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcAppbmRleCAxZGE0YzU1Li5hNDAyZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTMwLDEwICsxMzAsOSBAQCBSZW5kZXJPYmpl
Y3Q6On5SZW5kZXJPYmplY3QoKQogICAgIHZpZXcoKS5kaWREZXN0cm95UmVuZGVyZXIoKTsKIH0K
IAotUmVuZGVyVGhlbWUqIFJlbmRlck9iamVjdDo6dGhlbWUoKSBjb25zdAorUmVuZGVyVGhlbWUm
IFJlbmRlck9iamVjdDo6dGhlbWUoKSBjb25zdAogewogICAgIEFTU0VSVChkb2N1bWVudCgpLnBh
Z2UoKSk7Ci0KICAgICByZXR1cm4gZG9jdW1lbnQoKS5wYWdlKCktPnRoZW1lKCk7CiB9CiAKQEAg
LTEwMTYsNyArMTAxNSw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpwYWludE91dGxpbmUoUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFJlY3QmIHBhaW50UmVjCiAgICAgaW50IG91dGxp
bmVPZmZzZXQgPSBzdHlsZVRvVXNlLm91dGxpbmVPZmZzZXQoKTsKIAogICAgIGlmIChzdHlsZVRv
VXNlLm91dGxpbmVTdHlsZUlzQXV0bygpIHx8IGhhc091dGxpbmVBbm5vdGF0aW9uKCkpIHsKLSAg
ICAgICAgaWYgKCF0aGVtZSgpLT5zdXBwb3J0c0ZvY3VzUmluZygmc3R5bGVUb1VzZSkpIHsKKyAg
ICAgICAgaWYgKCF0aGVtZSgpLnN1cHBvcnRzRm9jdXNSaW5nKCZzdHlsZVRvVXNlKSkgewogICAg
ICAgICAgICAgLy8gT25seSBwYWludCB0aGUgZm9jdXMgcmluZyBieSBoYW5kIGlmIHRoZSB0aGVt
ZSBpc24ndCBhYmxlIHRvIGRyYXcgdGhlIGZvY3VzIHJpbmcuCiAgICAgICAgICAgICBwYWludEZv
Y3VzUmluZyhwYWludEluZm8sIHBhaW50UmVjdC5sb2NhdGlvbigpLCAmc3R5bGVUb1VzZSk7CiAg
ICAgICAgIH0KQEAgLTE0NTYsNyArMTQ1NSw3IEBAIENvbG9yIFJlbmRlck9iamVjdDo6c2VsZWN0
aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKICAgICAgICAgICAgIGlmIChwc2V1ZG9TdHlsZSAm
JiBwc2V1ZG9TdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yKS5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgY29sb3IgPSBwc2V1ZG9TdHlsZS0+
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKS5ibGVuZFdp
dGhXaGl0ZSgpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNvbG9yID0gZnJh
bWUoKS5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRBbmRBY3RpdmUoKSA/IHRoZW1lKCktPmFjdGl2ZVNl
bGVjdGlvbkJhY2tncm91bmRDb2xvcigpIDogdGhlbWUoKS0+aW5hY3RpdmVTZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IoKTsKKyAgICAgICAgICAgICAgICBjb2xvciA9IGZyYW1lKCkuc2VsZWN0aW9u
KCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkgPyB0aGVtZSgpLmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91
bmRDb2xvcigpIDogdGhlbWUoKS5pbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpOwog
ICAgICAgICB9CiAgICAgfQogCkBAIC0xNDc4LDggKzE0NzcsOCBAQCBDb2xvciBSZW5kZXJPYmpl
Y3Q6OnNlbGVjdGlvbkNvbG9yKGludCBjb2xvclByb3BlcnR5KSBjb25zdAogICAgICAgICAgICAg
Y29sb3IgPSBwc2V1ZG9TdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29s
b3IpOwogICAgIH0gZWxzZQogICAgICAgICBjb2xvciA9IGZyYW1lKCkuc2VsZWN0aW9uKCkuaXNG
b2N1c2VkQW5kQWN0aXZlKCkgPwotICAgICAgICAgICAgICAgIHRoZW1lKCktPmFjdGl2ZVNlbGVj
dGlvbkZvcmVncm91bmRDb2xvcigpIDoKLSAgICAgICAgICAgICAgICB0aGVtZSgpLT5pbmFjdGl2
ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpOworICAgICAgICAgICAgICAgIHRoZW1lKCkuYWN0
aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgOgorICAgICAgICAgICAgICAgIHRoZW1lKCku
aW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKTsKIAogICAgIHJldHVybiBjb2xvcjsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCAyMTI5ODgyLi4z
MDBmZmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC0xNTks
NyArMTU5LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFJlbmRlck9iamVjdChOb2RlJik7CiAg
ICAgdmlydHVhbCB+UmVuZGVyT2JqZWN0KCk7CiAKLSAgICBSZW5kZXJUaGVtZSogdGhlbWUoKSBj
b25zdDsKKyAgICBSZW5kZXJUaGVtZSYgdGhlbWUoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgY29u
c3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJQcm9ncmVzcy5jcHAKaW5kZXggMzc4OWQ3Ny4uZjM0ZTBhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3BwCkBAIC02Nyw3ICs2Nyw3IEBA
IHZvaWQgUmVuZGVyUHJvZ3Jlc3M6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9n
aWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsCiAgICAgICAgIGZyYW1lLnNldEhlaWdodChjb21wdXRl
ZFZhbHVlcy5tX2V4dGVudCk7CiAgICAgZWxzZQogICAgICAgICBmcmFtZS5zZXRXaWR0aChjb21w
dXRlZFZhbHVlcy5tX2V4dGVudCk7Ci0gICAgSW50U2l6ZSBmcmFtZVNpemUgPSB0aGVtZSgpLT5w
cm9ncmVzc0JhclJlY3RGb3JCb3VuZHModGhpcywgcGl4ZWxTbmFwcGVkSW50UmVjdChmcmFtZSkp
LnNpemUoKTsKKyAgICBJbnRTaXplIGZyYW1lU2l6ZSA9IHRoZW1lKCkucHJvZ3Jlc3NCYXJSZWN0
Rm9yQm91bmRzKHRoaXMsIHBpeGVsU25hcHBlZEludFJlY3QoZnJhbWUpKS5zaXplKCk7CiAgICAg
Y29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gZnJh
bWVTaXplLmhlaWdodCgpIDogZnJhbWVTaXplLndpZHRoKCk7CiB9CiAKQEAgLTk2LDggKzk2LDgg
QEAgdm9pZCBSZW5kZXJQcm9ncmVzczo6YW5pbWF0aW9uVGltZXJGaXJlZChUaW1lcjxSZW5kZXJQ
cm9ncmVzcz4qKQogCiB2b2lkIFJlbmRlclByb2dyZXNzOjp1cGRhdGVBbmltYXRpb25TdGF0ZSgp
CiB7Ci0gICAgbV9hbmltYXRpb25EdXJhdGlvbiA9IHRoZW1lKCktPmFuaW1hdGlvbkR1cmF0aW9u
Rm9yUHJvZ3Jlc3NCYXIodGhpcyk7Ci0gICAgbV9hbmltYXRpb25SZXBlYXRJbnRlcnZhbCA9IHRo
ZW1lKCktPmFuaW1hdGlvblJlcGVhdEludGVydmFsRm9yUHJvZ3Jlc3NCYXIodGhpcyk7CisgICAg
bV9hbmltYXRpb25EdXJhdGlvbiA9IHRoZW1lKCkuYW5pbWF0aW9uRHVyYXRpb25Gb3JQcm9ncmVz
c0Jhcih0aGlzKTsKKyAgICBtX2FuaW1hdGlvblJlcGVhdEludGVydmFsID0gdGhlbWUoKS5hbmlt
YXRpb25SZXBlYXRJbnRlcnZhbEZvclByb2dyZXNzQmFyKHRoaXMpOwogCiAgICAgYm9vbCBhbmlt
YXRpbmcgPSBzdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSAmJiBtX2FuaW1hdGlvbkR1cmF0aW9uID4g
MDsKICAgICBpZiAoYW5pbWF0aW5nID09IG1fYW5pbWF0aW5nKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKaW5kZXggOTZjNWQyMC4uYWNlNWZjNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCkBA
IC05MSw3ICs5MSw3IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2w6OmFkanVzdElubmVyVGV4dFN0
eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxlLCBSZW5kCiAKICAgICBib29sIGRpc2Fi
bGVkID0gdXBkYXRlVXNlck1vZGlmeVByb3BlcnR5KHRleHRGb3JtQ29udHJvbEVsZW1lbnQoKSwg
dGV4dEJsb2NrU3R5bGUpOwogICAgIGlmIChkaXNhYmxlZCkKLSAgICAgICAgdGV4dEJsb2NrU3R5
bGUtPnNldENvbG9yKHRoZW1lKCktPmRpc2FibGVkVGV4dENvbG9yKHRleHRCbG9ja1N0eWxlLT52
aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0YXJ0U3R5bGUtPnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikpKTsKKyAgICAgICAg
dGV4dEJsb2NrU3R5bGUtPnNldENvbG9yKHRoZW1lKCkuZGlzYWJsZWRUZXh0Q29sb3IodGV4dEJs
b2NrU3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgc3RhcnRT
dHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSkp
OwogI2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAodGV4dEJsb2NrU3R5bGUtPnRleHRTZWN1cml0
eSgpICE9IFRTTk9ORSAmJiAhdGV4dEJsb2NrU3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24o
KSkgewogICAgICAgICAvLyBQcmVzZXJ2ZSB0aGUgYWxpZ25tZW50IGJ1dCBmb3JjZSB0aGUgZGly
ZWN0aW9uIHRvIExUUiBzbyB0aGF0IHRoZSBsYXN0LXR5cGVkLCB1bm1hc2tlZCBjaGFyYWN0ZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZS5jcHAKaW5kZXggMDNkMmNlOC4uNGIwOWI1NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAK
QEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnBhaW50
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYKIAogICAgICAgICAvLyBD
b252ZXJ0IHRoZSByZWN0IGludG8gdGhlIGNvb3JkcyB1c2VkIGZvciBwYWludGluZyB0aGUgY29u
dGVudAogICAgICAgICBjb250ZW50c1JlY3QubW92ZUJ5KHBhaW50T2Zmc2V0ICsgbG9jYXRpb24o
KSk7Ci0gICAgICAgIHRoZW1lKCktPnBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IodGhpcywgcGFpbnRJ
bmZvLCBwaXhlbFNuYXBwZWRJbnRSZWN0KGNvbnRlbnRzUmVjdCkpOworICAgICAgICB0aGVtZSgp
LnBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IodGhpcywgcGFpbnRJbmZvLCBwaXhlbFNuYXBwZWRJbnRS
ZWN0KGNvbnRlbnRzUmVjdCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5j
cHAKaW5kZXggYmUyYmM0Zi4uYzM5Y2NlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3Bw
CkBAIC0xMzY2LDggKzEzNjYsOCBAQCB2b2lkIGV3a192aWV3X3RoZW1lX3NldChFdmFzX09iamVj
dCogZXdrVmlldywgY29uc3QgY2hhciogcGF0aCkKICAgICBpZiAoIWVpbmFfc3RyaW5nc2hhcmVf
cmVwbGFjZSgmcHJpdi0+c2V0dGluZ3MudGhlbWUsIHBhdGgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbCogdGhlbWUgPSBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpSZW5kZXJUaGVtZUVmbCo+KHByaXYtPnBhZ2UtPnRoZW1lKCkpOwotICAgIHRoZW1lLT5zZXRU
aGVtZVBhdGgocGF0aCk7CisgICAgV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmwmIHRoZW1lID0gc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6UmVuZGVyVGhlbWVFZmwmPihwcml2LT5wYWdlLT50aGVtZSgpKTsK
KyAgICB0aGVtZS5zZXRUaGVtZVBhdGgocGF0aCk7CiB9CiAKIGNvbnN0IGNoYXIqIGV3a192aWV3
X3RoZW1lX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAK
aW5kZXggMDgzODQ3OS4uZGJlMTUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2Vi
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTIzODAsNyAr
MjM4MCw3IEBAIExSRVNVTFQgQ0FMTEJBQ0sgV2ViVmlldzo6V2ViVmlld1duZFByb2MoSFdORCBo
V25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sCiAgICAgICAgIGNhc2UgV01fWFBfVEhF
TUVDSEFOR0VEOgogICAgICAgICAgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1haW5G
cmFtZUltcGwpKSB7CiAgICAgICAgICAgICAgICAgd2ViVmlldy0+ZGVsZXRlQmFja2luZ1N0b3Jl
KCk7Ci0gICAgICAgICAgICAgICAgY29yZUZyYW1lLT5wYWdlKCktPnRoZW1lKCktPnRoZW1lQ2hh
bmdlZCgpOworICAgICAgICAgICAgICAgIGNvcmVGcmFtZS0+cGFnZSgpLT50aGVtZSgpLnRoZW1l
Q2hhbmdlZCgpOwogICAgICAgICAgICAgICAgIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT50aGVt
ZUNoYW5nZWQoKTsKICAgICAgICAgICAgICAgICBSRUNUIHdpbmRvd1JlY3Q7CiAgICAgICAgICAg
ICAgICAgOjpHZXRDbGllbnRSZWN0KGhXbmQsICZ3aW5kb3dSZWN0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3BwCmluZGV4IGM5
ZTRkYzUuLjU1NzlkYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIGNvbnN0IGNoYXIq
IFdlYlBhZ2U6OmludGVycHJldEtleUV2ZW50KGNvbnN0IEtleWJvYXJkRXZlbnQqIGV2ZW50KQog
CiB2b2lkIFdlYlBhZ2U6OnNldFRoZW1lUGF0aChjb25zdCBTdHJpbmcmIHRoZW1lUGF0aCkKIHsK
LSAgICBXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbCogdGhlbWUgPSBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpSZW5kZXJUaGVtZUVmbCo+KG1fcGFnZS0+dGhlbWUoKSk7CisgICAgV2ViQ29yZTo6UmVuZGVy
VGhlbWVFZmwmIHRoZW1lID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UmVuZGVyVGhlbWVFZmwmPiht
X3BhZ2UtPnRoZW1lKCkpOwogICAgIHRoZW1lLT5zZXRUaGVtZVBhdGgodGhlbWVQYXRoKTsKIH0K
IAo=
</data>
<flag name="review"
          id="242847"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219250</attachid>
            <date>2013-12-14 05:56:15 -0800</date>
            <delta_ts>2013-12-14 06:19:04 -0800</delta_ts>
            <desc>Land</desc>
            <filename>land-125737.diff</filename>
            <type>text/plain</type>
            <size>56770</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2MDJmNjQzLi4xMDMyMTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTUg
QEAKIDIwMTMtMTItMTQgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCisgICAg
ICAgIFBhZ2U6OnRoZW1lKCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZS4KKyAgICAgICAgPGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzEyNTczNz4KKworICAgICAgICBUaGVyZSdzIGFsd2F5cyBhIFJl
bmRlclRoZW1lLCBhbmQgbm90IGEgc2luZ2xlIGNhbGwgc2l0ZSB3YXMgY2hlY2tpbmcKKyAgICAg
ICAgZm9yIG51bGwgcG9pbnRlcnMgYW55d2F5LiBVcGRhdGVkIFJlbmRlck9iamVjdDo6dGhlbWUo
KSBhcyB3ZWxsLgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisyMDEz
LTEyLTE0ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KKwogICAgICAgICBSZW5k
ZXJFbGVtZW50OjpyZW5kZXJlckZvclJvb3RCYWNrZ3JvdW5kKCkgc2hvdWxkIHJldHVybiBhIHJl
ZmVyZW5jZS4KICAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEyNTczNT4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAK
aW5kZXggODI1ZDA5Ny4uZGQzZWU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC01ODUsNyArNTg1LDcgQEAgSW50
UmVjdCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpib3VuZGluZ0JveEZvclF1YWRzKFJlbmRlck9iamVj
dCogb2JqLCBjb25zdCBWZWN0b3IKICAgICAgICAgSW50UmVjdCByID0gcXVhZHNbaV0uZW5jbG9z
aW5nQm91bmRpbmdCb3goKTsKICAgICAgICAgaWYgKCFyLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgaWYgKG9iai0+c3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAgICAgICAgICAgb2Jq
LT50aGVtZSgpLT5hZGp1c3RSZXBhaW50UmVjdChvYmosIHIpOworICAgICAgICAgICAgICAgIG9i
ai0+dGhlbWUoKS5hZGp1c3RSZXBhaW50UmVjdChvYmosIHIpOwogICAgICAgICAgICAgcmVzdWx0
LnVuaXRlKHIpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRl
eCBhZTU5ZmQxLi4zZTY1MjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMTM4Miw3
ICsxMzgyLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlU3lzdGVtQ29sb3IoUkdCQTMyJiBjb2xv
ciwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIERvY3VtZW50KgogICAgIGlmIChpZCA8PSAwKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBjb2xvciA9IGRvY3VtZW50LT5wYWdlKCktPnRoZW1l
KCktPnN5c3RlbUNvbG9yKGlkKS5yZ2IoKTsKKyAgICBjb2xvciA9IGRvY3VtZW50LT5wYWdlKCkt
PnRoZW1lKCkuc3lzdGVtQ29sb3IoaWQpLnJnYigpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKaW5kZXggN2JkZjNjNi4uNWNmNGEzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcApAQCAtNTE1LDcgKzUxNSw3IEBAIHZvaWQgRWxlbWVudDo6c2V0QWN0aXZlKGJvb2wg
ZmxhZywgYm9vbCBwYXVzZSkKICAgICBpZiAocmVhY3RzVG9QcmVzcykKICAgICAgICAgc2V0TmVl
ZHNTdHlsZVJlY2FsYygpOwogCi0gICAgaWYgKHJlbmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFy
YW5jZSgpICYmIHJlbmRlcmVyKCktPnRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBQ
cmVzc2VkU3RhdGUpKQorICAgIGlmIChyZW5kZXJlcigpLT5zdHlsZSgpLmhhc0FwcGVhcmFuY2Uo
KSAmJiByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBQcmVzc2Vk
U3RhdGUpKQogICAgICAgICByZWFjdHNUb1ByZXNzID0gdHJ1ZTsKIAogICAgIC8vIFRoZSByZXN0
IG9mIHRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyBhIGZlYXR1cmUgdGhhdCBvbmx5IHdvcmtzIGlm
IHRoZQpAQCAtNTgxLDcgKzU4MSw3IEBAIHZvaWQgRWxlbWVudDo6c2V0SG92ZXJlZChib29sIGZs
YWcpCiAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIAogICAgIGlmIChyZW5kZXJlcigp
LT5zdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS0+
c3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIEhvdmVyU3RhdGUpOworICAgICAgICByZW5kZXJlcigp
LT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBIb3ZlclN0YXRlKTsKIH0KIAogdm9p
ZCBFbGVtZW50OjpzY3JvbGxJbnRvVmlldyhib29sIGFsaWduVG9Ub3ApIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCA1MTgxNjI1Li4xZjBlNTA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMTcwNSw3ICsxNzA1
LDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6Zm9jdXNlZE9yQWN0aXZlU3RhdGVDaGFuZ2VkKCkK
ICAgICAgICAgZWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAgICBpZiAoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBp
ZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAg
ICAgICAgICAgIHJlbmRlcmVyLT50aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIsIEZvY3Vz
U3RhdGUpOworICAgICAgICAgICAgICAgIHJlbmRlcmVyLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChy
ZW5kZXJlciwgRm9jdXNTdGF0ZSk7CiAgICAgfQogfQogCkBAIC0xNzU5LDcgKzE3NTksNyBAQCB2
b2lkIEZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBcHBlYXJhbmNlKCkKICAgICAvLyBTdGFydCBibGlu
a2luZyB3aXRoIGEgYmxhY2sgY2FyZXQuIEJlIHN1cmUgbm90IHRvIHJlc3RhcnQgaWYgd2UncmUK
ICAgICAvLyBhbHJlYWR5IGJsaW5raW5nIGluIHRoZSByaWdodCBsb2NhdGlvbi4KICAgICBpZiAo
c2hvdWxkQmxpbmsgJiYgIW1fY2FyZXRCbGlua1RpbWVyLmlzQWN0aXZlKCkpIHsKLSAgICAgICAg
aWYgKGRvdWJsZSBibGlua0ludGVydmFsID0gbV9mcmFtZS0+cGFnZSgpLT50aGVtZSgpLT5jYXJl
dEJsaW5rSW50ZXJ2YWwoKSkKKyAgICAgICAgaWYgKGRvdWJsZSBibGlua0ludGVydmFsID0gbV9m
cmFtZS0+cGFnZSgpLT50aGVtZSgpLmNhcmV0QmxpbmtJbnRlcnZhbCgpKQogICAgICAgICAgICAg
bV9jYXJldEJsaW5rVGltZXIuc3RhcnRSZXBlYXRpbmcoYmxpbmtJbnRlcnZhbCk7CiAKICAgICAg
ICAgaWYgKCFtX2NhcmV0UGFpbnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDVkZWQ5YzMuLjMyOTY2M2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtMTM3LDcgKzEzNyw3
IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvCiAgICAgICAgICAgICBzZXROZWVkc1dpbGxWYWxp
ZGF0ZUNoZWNrKCk7CiAgICAgICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgICAg
ICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLmhhc0FwcGVhcmFuY2Uo
KSkKLSAgICAgICAgICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVu
ZGVyZXIoKSwgUmVhZE9ubHlTdGF0ZSk7CisgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+dGhl
bWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgUmVhZE9ubHlTdGF0ZSk7CiAgICAgICAgIH0K
ICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gcmVxdWlyZWRBdHRyKSB7CiAgICAgICAgIGJvb2wgd2Fz
UmVxdWlyZWQgPSBtX2lzUmVxdWlyZWQ7CkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50OjpkaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQoKQogICAgIHNldE5lZWRz
V2lsbFZhbGlkYXRlQ2hlY2soKTsKICAgICBkaWRBZmZlY3RTZWxlY3RvcihBZmZlY3RlZFNlbGVj
dG9yRGlzYWJsZWQgfCBBZmZlY3RlZFNlbGVjdG9yRW5hYmxlZCk7CiAgICAgaWYgKHJlbmRlcmVy
KCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAgIHJlbmRl
cmVyKCktPnRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBFbmFibGVkU3RhdGUpOwor
ICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBFbmFi
bGVkU3RhdGUpOwogfQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlcXVpcmVkQXR0
cmlidXRlQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApp
bmRleCBiZWRkZmEwLi4zYTRkOTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAKQEAgLTg4Miw3ICs4ODIsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldENo
ZWNrZWQoYm9vbCBub3dDaGVja2VkLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50QgogICAg
IGlmIChDaGVja2VkUmFkaW9CdXR0b25zKiBidXR0b25zID0gY2hlY2tlZFJhZGlvQnV0dG9ucygp
KQogICAgICAgICAgICAgYnV0dG9ucy0+dXBkYXRlQ2hlY2tlZFN0YXRlKHRoaXMpOwogICAgIGlm
IChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQotICAg
ICAgICByZW5kZXJlcigpLT50aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgQ2hlY2tl
ZFN0YXRlKTsKKyAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVy
ZXIoKSwgQ2hlY2tlZFN0YXRlKTsKICAgICBzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKIAogICAg
IC8vIElkZWFsbHkgd2UnZCBkbyB0aGlzIGZyb20gdGhlIHJlbmRlciB0cmVlIChtYXRjaGluZwpA
QCAtOTE2LDcgKzkxNiw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0SW5kZXRlcm1pbmF0
ZShib29sIG5ld1ZhbHVlKQogICAgIGRpZEFmZmVjdFNlbGVjdG9yKEFmZmVjdGVkU2VsZWN0b3JJ
bmRldGVybWluYXRlKTsKIAogICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxl
KCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLT5zdGF0ZUNo
YW5nZWQocmVuZGVyZXIoKSwgQ2hlY2tlZFN0YXRlKTsKKyAgICAgICAgcmVuZGVyZXIoKS0+dGhl
bWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgQ2hlY2tlZFN0YXRlKTsKIH0KIAogaW50IEhU
TUxJbnB1dEVsZW1lbnQ6OnNpemUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVy
RWxlbWVudC5jcHAKaW5kZXggZmM2MWIyOS4uZGEwMWYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZXRlckVsZW1lbnQuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFBhc3NSZWZQdHI8SFRNTE1l
dGVyRWxlbWVudD4gSFRNTE1ldGVyRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hCiAKIFJlbmRlckVsZW1lbnQqIEhUTUxNZXRlckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVy
KFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogewotICAgIGlmIChoYXNBdXRob3JTaGFkb3dS
b290KCkgfHwgIWRvY3VtZW50KCkucGFnZSgpLT50aGVtZSgpLT5zdXBwb3J0c01ldGVyKHN0eWxl
LmdldCgpLmFwcGVhcmFuY2UoKSkpCisgICAgaWYgKGhhc0F1dGhvclNoYWRvd1Jvb3QoKSB8fCAh
ZG9jdW1lbnQoKS5wYWdlKCktPnRoZW1lKCkuc3VwcG9ydHNNZXRlcihzdHlsZS5nZXQoKS5hcHBl
YXJhbmNlKCkpKQogICAgICAgICByZXR1cm4gUmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKCp0aGlz
LCBzdGQ6Om1vdmUoc3R5bGUpKTsKIAogICAgIHJldHVybiBuZXcgUmVuZGVyTWV0ZXIoKnRoaXMs
IHN0ZDo6bW92ZShzdHlsZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T3B0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50
LmNwcAppbmRleCBmMmIzNjI0Li5mNTA0OWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
cHRpb25FbGVtZW50LmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgSFRNTE9wdGlvbkVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21p
Y1N0CiAgICAgICAgIGlmIChvbGREaXNhYmxlZCAhPSBtX2Rpc2FibGVkKSB7CiAgICAgICAgICAg
ICBkaWRBZmZlY3RTZWxlY3RvcihBZmZlY3RlZFNlbGVjdG9yRGlzYWJsZWQgfCBBZmZlY3RlZFNl
bGVjdG9yRW5hYmxlZCk7CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigp
LT5zdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAgICAgICAgICByZW5kZXJlcigpLT50
aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgRW5hYmxlZFN0YXRlKTsKKyAgICAgICAg
ICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBFbmFi
bGVkU3RhdGUpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChuYW1lID09IHNlbGVjdGVkQXR0
cikgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IG1hdGNoIHdoYXQgdGhlIEhUTUwg
c3BlY2lmaWNhdGlvbiBzYXlzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50
LmNwcAppbmRleCAyZjM0ODEwLi5iMDA3MDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
ZWxlY3RFbGVtZW50LmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1l
bnQ6Omxpc3RCb3hTZWxlY3RJdGVtKGludCBsaXN0SW5kZXgsIGJvb2wgYWxsb3dNdWx0aXBseVNl
bGVjCiBib29sIEhUTUxTZWxlY3RFbGVtZW50Ojp1c2VzTWVudUxpc3QoKSBjb25zdAogewogICAg
IGNvbnN0IFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKTsKLSAgICBSZWZQdHI8UmVuZGVy
VGhlbWU+IHJlbmRlclRoZW1lID0gcGFnZSA/IHBhZ2UtPnRoZW1lKCkgOiBSZW5kZXJUaGVtZTo6
ZGVmYXVsdFRoZW1lKCk7CisgICAgUmVmUHRyPFJlbmRlclRoZW1lPiByZW5kZXJUaGVtZSA9IHBh
Z2UgPyAmcGFnZS0+dGhlbWUoKSA6IFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKTsKICAgICBp
ZiAocmVuZGVyVGhlbWUtPmRlbGVnYXRlc01lbnVMaXN0UmVuZGVyaW5nKCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCkBAIC0xMDc4LDcgKzEwNzgsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50
OjpyZXNldCgpCiBib29sIEhUTUxTZWxlY3RFbGVtZW50OjpwbGF0Zm9ybUhhbmRsZUtleWRvd25F
dmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKIHsKICAgICBjb25zdCBQYWdlKiBwYWdlID0gZG9j
dW1lbnQoKS5wYWdlKCk7Ci0gICAgUmVmUHRyPFJlbmRlclRoZW1lPiByZW5kZXJUaGVtZSA9IHBh
Z2UgPyBwYWdlLT50aGVtZSgpIDogUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpOworICAgIFJl
ZlB0cjxSZW5kZXJUaGVtZT4gcmVuZGVyVGhlbWUgPSBwYWdlID8gJnBhZ2UtPnRoZW1lKCkgOiBS
ZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCk7CiAKICAgICBpZiAoIXJlbmRlclRoZW1lLT5wb3Bz
TWVudUJ5QXJyb3dLZXlzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExMTEsNyArMTEx
MSw3IEBAIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OnBsYXRmb3JtSGFuZGxlS2V5ZG93bkV2ZW50
KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6bWVudUxpc3RE
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAgICBjb25zdCBQYWdlKiBwYWdl
ID0gZG9jdW1lbnQoKS5wYWdlKCk7Ci0gICAgUmVmUHRyPFJlbmRlclRoZW1lPiByZW5kZXJUaGVt
ZSA9IHBhZ2UgPyBwYWdlLT50aGVtZSgpIDogUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpOwor
ICAgIFJlZlB0cjxSZW5kZXJUaGVtZT4gcmVuZGVyVGhlbWUgPSBwYWdlID8gJnBhZ2UtPnRoZW1l
KCkgOiBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCk7CiAKICAgICBpZiAoZXZlbnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50KSB7CiAgICAgICAgIGlmICghcmVuZGVyZXIo
KSB8fCAhZXZlbnQtPmlzS2V5Ym9hcmRFdmVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCA3YjRlYmJiLi4wNzBiNzU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50LmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIGJvb2wgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkgY29uc3QKICAgICAgICAgJiYgaXNFbXB0
eVZhbHVlKCkKICAgICAgICAgJiYgaXNFbXB0eVN1Z2dlc3RlZFZhbHVlKCkKICAgICAgICAgJiYg
IWlzUGxhY2Vob2xkZXJFbXB0eSgpCi0gICAgICAgICYmIChkb2N1bWVudCgpLmZvY3VzZWRFbGVt
ZW50KCkgIT0gdGhpcyB8fCAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT50aGVtZSgpLT5zaG91
bGRTaG93UGxhY2Vob2xkZXJXaGVuRm9jdXNlZCgpKSkKKyAgICAgICAgJiYgKGRvY3VtZW50KCku
Zm9jdXNlZEVsZW1lbnQoKSAhPSB0aGlzIHx8IChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnRo
ZW1lKCkuc2hvdWxkU2hvd1BsYWNlaG9sZGVyV2hlbkZvY3VzZWQoKSkpCiAgICAgICAgICYmICgh
cmVuZGVyZXIoKSB8fCByZW5kZXJlcigpLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxF
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDBjMGNlM2YuLjliZDM2NDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCBJbnB1dFR5
cGU6On5JbnB1dFR5cGUoKQogYm9vbCBJbnB1dFR5cGU6OnRoZW1lU3VwcG9ydHNEYXRhTGlzdFVJ
KElucHV0VHlwZSogdHlwZSkKIHsKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSB0eXBlLT5lbGVt
ZW50KCkuZG9jdW1lbnQoKTsKLSAgICBSZWZQdHI8UmVuZGVyVGhlbWU+IHRoZW1lID0gZG9jdW1l
bnQucGFnZSgpID8gZG9jdW1lbnQucGFnZSgpLT50aGVtZSgpIDogUmVuZGVyVGhlbWU6OmRlZmF1
bHRUaGVtZSgpOworICAgIFJlZlB0cjxSZW5kZXJUaGVtZT4gdGhlbWUgPSBkb2N1bWVudC5wYWdl
KCkgPyAmZG9jdW1lbnQucGFnZSgpLT50aGVtZSgpIDogUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVt
ZSgpOwogICAgIHJldHVybiB0aGVtZS0+c3VwcG9ydHNEYXRhTGlzdFVJKHR5cGUtPmZvcm1Db250
cm9sVHlwZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0Rmll
bGRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
Y3BwCmluZGV4IGEzMzVkZDguLjM4OTFmNjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuY3BwCkBAIC0yMTgsNyArMjE4LDcgQEAgYm9vbCBUZXh0RmllbGRJbnB1
dFR5cGU6Om5lZWRzQ29udGFpbmVyKCkgY29uc3QKIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjpz
aG91bGRIYXZlU3BpbkJ1dHRvbigpIGNvbnN0CiB7CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0g
ZWxlbWVudCgpLmRvY3VtZW50KCk7Ci0gICAgUmVmUHRyPFJlbmRlclRoZW1lPiB0aGVtZSA9IGRv
Y3VtZW50LnBhZ2UoKSA/IGRvY3VtZW50LnBhZ2UoKS0+dGhlbWUoKSA6IFJlbmRlclRoZW1lOjpk
ZWZhdWx0VGhlbWUoKTsKKyAgICBSZWZQdHI8UmVuZGVyVGhlbWU+IHRoZW1lID0gZG9jdW1lbnQu
cGFnZSgpID8gJmRvY3VtZW50LnBhZ2UoKS0+dGhlbWUoKSA6IFJlbmRlclRoZW1lOjpkZWZhdWx0
VGhlbWUoKTsKICAgICByZXR1cm4gdGhlbWUtPnNob3VsZEhhdmVTcGluQnV0dG9uKCZlbGVtZW50
KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xFbGVtZW50cy5jcHAKaW5kZXggOTZkZGViNS4uZDBlMjRiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcApAQCAtMTQyLDcg
KzE0Miw3IEBAIHZvaWQgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjpzdGFydFRpbWVyKCkKICAg
ICAvLyBUaGUgdGltZXIgaXMgcmVxdWlyZWQgdG8gc2V0IHRoZSBwcm9wZXJ0eSBkaXNwbGF5Oidu
b25lJyBvbiB0aGUgcGFuZWwsCiAgICAgLy8gc3VjaCB0aGF0IGNhcHRpb25zIGFyZSBjb3JyZWN0
bHkgZGlzcGxheWVkIGF0IHRoZSBib3R0b20gb2YgdGhlIHZpZGVvCiAgICAgLy8gYXQgdGhlIGVu
ZCBvZiB0aGUgZmFkZW91dCB0cmFuc2l0aW9uLgotICAgIGRvdWJsZSBkdXJhdGlvbiA9IGRvY3Vt
ZW50KCkucGFnZSgpID8gZG9jdW1lbnQoKS5wYWdlKCktPnRoZW1lKCktPm1lZGlhQ29udHJvbHNG
YWRlT3V0RHVyYXRpb24oKSA6IDA7CisgICAgZG91YmxlIGR1cmF0aW9uID0gZG9jdW1lbnQoKS5w
YWdlKCkgPyBkb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUoKS5tZWRpYUNvbnRyb2xzRmFkZU91dER1
cmF0aW9uKCkgOiAwOwogICAgIG1fdHJhbnNpdGlvblRpbWVyLnN0YXJ0T25lU2hvdChkdXJhdGlv
bik7CiB9CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVu
dDo6bWFrZU9wYXF1ZSgpCiAgICAgaWYgKG1fb3BhcXVlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBkb3VibGUgZHVyYXRpb24gPSBkb2N1bWVudCgpLnBhZ2UoKSA/IGRvY3VtZW50KCkucGFnZSgp
LT50aGVtZSgpLT5tZWRpYUNvbnRyb2xzRmFkZUluRHVyYXRpb24oKSA6IDA7CisgICAgZG91Ymxl
IGR1cmF0aW9uID0gZG9jdW1lbnQoKS5wYWdlKCkgPyBkb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUo
KS5tZWRpYUNvbnRyb2xzRmFkZUluRHVyYXRpb24oKSA6IDA7CiAKICAgICBzZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5LCBDU1NQcm9wZXJ0
eU9wYWNpdHkpOwogICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2l0aW9uRHVyYXRpb24sIGR1cmF0aW9uLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1MpOwpA
QCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjptYWtlVHJh
bnNwYXJlbnQoKQogICAgIGlmICghbV9vcGFxdWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGRv
dWJsZSBkdXJhdGlvbiA9IGRvY3VtZW50KCkucGFnZSgpID8gZG9jdW1lbnQoKS5wYWdlKCktPnRo
ZW1lKCktPm1lZGlhQ29udHJvbHNGYWRlT3V0RHVyYXRpb24oKSA6IDA7CisgICAgZG91YmxlIGR1
cmF0aW9uID0gZG9jdW1lbnQoKS5wYWdlKCkgPyBkb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUoKS5t
ZWRpYUNvbnRyb2xzRmFkZU91dER1cmF0aW9uKCkgOiAwOwogCiAgICAgc2V0SW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSwgQ1NTUHJvcGVydHlP
cGFjaXR5KTsKICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VHJh
bnNpdGlvbkR1cmF0aW9uLCBkdXJhdGlvbiwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAKaW5kZXggMjJjNGRm
ZS4uNjY4MWUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9scy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
cy5jcHAKQEAgLTkzLDEyICs5MywxMiBAQCB2b2lkIE1lZGlhQ29udHJvbHM6OnJlc2V0KCkKICAg
ICB1cGRhdGVDdXJyZW50VGltZURpc3BsYXkoKTsKIAogICAgIGRvdWJsZSBkdXJhdGlvbiA9IG1f
bWVkaWFDb250cm9sbGVyLT5kdXJhdGlvbigpOwotICAgIGlmIChzdGQ6OmlzZmluaXRlKGR1cmF0
aW9uKSB8fCBwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVk
aWFTbGlkZXJQYXJ0KSkgeworICAgIGlmIChzdGQ6OmlzZmluaXRlKGR1cmF0aW9uKSB8fCBwYWdl
LT50aGVtZSgpLmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVNsaWRlclBhcnQp
KSB7CiAgICAgICAgIG1fdGltZWxpbmUtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKICAgICAgICAg
bV90aW1lbGluZS0+c2V0UG9zaXRpb24obV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCkp
OwogICAgIH0KIAotICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+aGFzQXVkaW8oKSB8fCBwYWdl
LT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFNdXRlQnV0dG9u
UGFydCkpCisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5oYXNBdWRpbygpIHx8IHBhZ2UtPnRo
ZW1lKCkuaGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhTXV0ZUJ1dHRvblBhcnQp
KQogICAgICAgICBtX3BhbmVsTXV0ZUJ1dHRvbi0+c2hvdygpOwogICAgIGVsc2UKICAgICAgICAg
bV9wYW5lbE11dGVCdXR0b24tPmhpZGUoKTsKQEAgLTEzMCwxNSArMTMwLDE1IEBAIHZvaWQgTWVk
aWFDb250cm9sczo6cmVwb3J0ZWRFcnJvcigpCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoIXBhZ2UtPnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGlu
Z0ZvcihNZWRpYU11dGVCdXR0b25QYXJ0KSkgeworICAgIGlmICghcGFnZS0+dGhlbWUoKS5oYXNP
d25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFNdXRlQnV0dG9uUGFydCkpIHsKICAgICAg
ICAgbV9wYW5lbE11dGVCdXR0b24tPmhpZGUoKTsKICAgICAgICAgbV92b2x1bWVTbGlkZXItPmhp
ZGUoKTsKICAgICB9CiAKLSAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbiAmJiAh
cGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhVG9nZ2xl
Q2xvc2VkQ2FwdGlvbnNCdXR0b25QYXJ0KSkKKyAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9u
c0J1dHRvbiAmJiAhcGFnZS0+dGhlbWUoKS5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3Io
TWVkaWFUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvblBhcnQpKQogICAgICAgICBtX3RvZ2dsZUNs
b3NlZENhcHRpb25zQnV0dG9uLT5oaWRlKCk7CiAKLSAgICBpZiAobV9mdWxsU2NyZWVuQnV0dG9u
ICYmICFwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFF
bnRlckZ1bGxzY3JlZW5CdXR0b25QYXJ0KSkKKyAgICBpZiAobV9mdWxsU2NyZWVuQnV0dG9uICYm
ICFwYWdlLT50aGVtZSgpLmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYUVudGVy
RnVsbHNjcmVlbkJ1dHRvblBhcnQpKQogICAgICAgICBtX2Z1bGxTY3JlZW5CdXR0b24tPmhpZGUo
KTsKIH0KIApAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgTWVkaWFDb250cm9sczo6dXBkYXRlQ3Vy
cmVudFRpbWVEaXNwbGF5KCkKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fY3VycmVudFRpbWVEaXNwbGF5LT5zZXRJbm5lclRleHQocGFnZS0+dGhlbWUoKS0+Zm9ybWF0
TWVkaWFDb250cm9sc1RpbWUobm93KSwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgbV9jdXJyZW50
VGltZURpc3BsYXktPnNldElubmVyVGV4dChwYWdlLT50aGVtZSgpLmZvcm1hdE1lZGlhQ29udHJv
bHNUaW1lKG5vdyksIElHTk9SRV9FWENFUFRJT04pOwogICAgIG1fY3VycmVudFRpbWVEaXNwbGF5
LT5zZXRDdXJyZW50VmFsdWUobm93KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKaW5kZXggMzBlYTQ3OC4uYmMzZDI0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3Bw
CkBAIC04OSw3ICs4OSw3IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sc0FwcGxlPiBNZWRpYUNv
bnRyb2xzQXBwbGU6OmNyZWF0ZUNvbnRyb2xzKERvY3VtZW50JiBkb2N1CiAgICAgaWYgKGVjKQog
ICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChkb2N1bWVudC5wYWdlKCktPnRoZW1lKCktPnVz
ZXNNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5KCkpIHsKKyAgICBpZiAoZG9jdW1lbnQucGFnZSgp
LT50aGVtZSgpLnVzZXNNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5KCkpIHsKICAgICAgICAgUmVm
UHRyPE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50PiBzdGF0dXNEaXNwbGF5ID0gTWVk
aWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgICAg
IGNvbnRyb2xzLT5tX3N0YXR1c0Rpc3BsYXkgPSBzdGF0dXNEaXNwbGF5LmdldCgpOwogICAgICAg
ICBwYW5lbC0+YXBwZW5kQ2hpbGQoc3RhdHVzRGlzcGxheS5yZWxlYXNlKCksIGVjLCBBdHRhY2hM
YXppbHkpOwpAQCAtMTM2LDcgKzEzNiw3IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sc0FwcGxl
PiBNZWRpYUNvbnRyb2xzQXBwbGU6OmNyZWF0ZUNvbnRyb2xzKERvY3VtZW50JiBkb2N1CiAgICAg
aWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChkb2N1bWVudC5wYWdlKCktPnRo
ZW1lKCktPnN1cHBvcnRzQ2xvc2VkQ2FwdGlvbmluZygpKSB7CisgICAgaWYgKGRvY3VtZW50LnBh
Z2UoKS0+dGhlbWUoKS5zdXBwb3J0c0Nsb3NlZENhcHRpb25pbmcoKSkgewogICAgICAgICBSZWZQ
dHI8TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWluZXJFbGVtZW50PiBjbG9zZWRDYXB0
aW9uc0NvbnRhaW5lciA9IE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zQ29udGFpbmVyRWxlbWVu
dDo6Y3JlYXRlKGRvY3VtZW50KTsKIAogICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sQ2xvc2Vk
Q2FwdGlvbnNUcmFja0xpc3RFbGVtZW50PiBjbG9zZWRDYXB0aW9uc1RyYWNrTGlzdCA9IE1lZGlh
Q29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBj
b250cm9scy5nZXQoKSk7CkBAIC0xNjUsNyArMTY1LDcgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRy
b2xzQXBwbGU+IE1lZGlhQ29udHJvbHNBcHBsZTo6Y3JlYXRlQ29udHJvbHMoRG9jdW1lbnQmIGRv
Y3UKICAgICAvLyBUaGUgbXV0ZSBidXR0b24gYW5kIHRoZSBzbGlkZXIgZWxlbWVudCBzaG91bGQg
YmUgaW4gdGhlIHNhbWUgZGl2LgogICAgIFJlZlB0cjxIVE1MRGl2RWxlbWVudD4gcGFuZWxWb2x1
bWVDb250cm9sQ29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAK
LSAgICBpZiAoZG9jdW1lbnQucGFnZSgpLT50aGVtZSgpLT51c2VzTWVkaWFDb250cm9sVm9sdW1l
U2xpZGVyKCkpIHsKKyAgICBpZiAoZG9jdW1lbnQucGFnZSgpLT50aGVtZSgpLnVzZXNNZWRpYUNv
bnRyb2xWb2x1bWVTbGlkZXIoKSkgewogICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1l
U2xpZGVyQ29udGFpbmVyRWxlbWVudD4gdm9sdW1lU2xpZGVyQ29udGFpbmVyID0gTWVkaWFDb250
cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKIAogICAg
ICAgICBSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxWb2x1bWVTbGlkZXJFbGVtZW50PiBzbGlkZXIg
PSBNZWRpYUNvbnRyb2xQYW5lbFZvbHVtZVNsaWRlckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7
CkBAIC0zMTMsNyArMzEzLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQXBwbGU6OnJlc2V0KCkKICAg
ICAgICAgbV9mdWxsU2NyZWVuQnV0dG9uLT5oaWRlKCk7CiAKICAgICBkb3VibGUgZHVyYXRpb24g
PSBtX21lZGlhQ29udHJvbGxlci0+ZHVyYXRpb24oKTsKLSAgICBpZiAoc3RkOjppc2Zpbml0ZShk
dXJhdGlvbikgfHwgcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9y
KE1lZGlhU2xpZGVyUGFydCkpIHsKKyAgICBpZiAoc3RkOjppc2Zpbml0ZShkdXJhdGlvbikgfHwg
cGFnZS0+dGhlbWUoKS5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFTbGlkZXJQ
YXJ0KSkgewogICAgICAgICBtX3RpbWVsaW5lLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CiAgICAg
ICAgIG1fdGltZWxpbmVDb250YWluZXItPnNob3coKTsKICAgICAgICAgbV90aW1lbGluZS0+c2V0
UG9zaXRpb24obV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCkpOwpAQCAtMzIxLDcgKzMy
MSw3IEBAIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpyZXNldCgpCiAgICAgfSBlbHNlCiAgICAg
ICAgIG1fdGltZWxpbmVDb250YWluZXItPmhpZGUoKTsKIAotICAgIGlmIChtX21lZGlhQ29udHJv
bGxlci0+aGFzQXVkaW8oKSB8fCBwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFu
ZGxpbmdGb3IoTWVkaWFNdXRlQnV0dG9uUGFydCkpCisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVy
LT5oYXNBdWRpbygpIHx8IHBhZ2UtPnRoZW1lKCkuaGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5n
Rm9yKE1lZGlhTXV0ZUJ1dHRvblBhcnQpKQogICAgICAgICBtX3BhbmVsTXV0ZUJ1dHRvbi0+c2hv
dygpOwogICAgIGVsc2UKICAgICAgICAgbV9wYW5lbE11dGVCdXR0b24tPmhpZGUoKTsKQEAgLTM3
OCw5ICszNzgsOSBAQCB2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6dXBkYXRlQ3VycmVudFRpbWVE
aXNwbGF5KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gQWxsb3cgdGhlIHRoZW1lIHRvIGZv
cm1hdCB0aGUgdGltZS4KLSAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0SW5uZXJUZXh0KHBh
Z2UtPnRoZW1lKCktPmZvcm1hdE1lZGlhQ29udHJvbHNDdXJyZW50VGltZShub3csIGR1cmF0aW9u
KSwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgbV9jdXJyZW50VGltZURpc3BsYXktPnNldElubmVy
VGV4dChwYWdlLT50aGVtZSgpLmZvcm1hdE1lZGlhQ29udHJvbHNDdXJyZW50VGltZShub3csIGR1
cmF0aW9uKSwgSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgbV9jdXJyZW50VGltZURpc3BsYXktPnNl
dEN1cnJlbnRWYWx1ZShub3cpOwotICAgIG1fdGltZVJlbWFpbmluZ0Rpc3BsYXktPnNldElubmVy
VGV4dChwYWdlLT50aGVtZSgpLT5mb3JtYXRNZWRpYUNvbnRyb2xzUmVtYWluaW5nVGltZShub3cs
IGR1cmF0aW9uKSwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgbV90aW1lUmVtYWluaW5nRGlzcGxh
eS0+c2V0SW5uZXJUZXh0KHBhZ2UtPnRoZW1lKCkuZm9ybWF0TWVkaWFDb250cm9sc1JlbWFpbmlu
Z1RpbWUobm93LCBkdXJhdGlvbiksIElHTk9SRV9FWENFUFRJT04pOwogICAgIG1fdGltZVJlbWFp
bmluZ0Rpc3BsYXktPnNldEN1cnJlbnRWYWx1ZShub3cgLSBkdXJhdGlvbik7CiB9CiAKQEAgLTM5
MCwxNyArMzkwLDE3IEBAIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpyZXBvcnRlZEVycm9yKCkK
ICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghcGFnZS0+dGhlbWUo
KS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhU2xpZGVyUGFydCkpCisgICAg
aWYgKCFwYWdlLT50aGVtZSgpLmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVNs
aWRlclBhcnQpKQogICAgICAgICBtX3RpbWVsaW5lQ29udGFpbmVyLT5oaWRlKCk7CiAKLSAgICBp
ZiAoIXBhZ2UtPnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYU11
dGVCdXR0b25QYXJ0KSkKKyAgICBpZiAoIXBhZ2UtPnRoZW1lKCkuaGFzT3duRGlzYWJsZWRTdGF0
ZUhhbmRsaW5nRm9yKE1lZGlhTXV0ZUJ1dHRvblBhcnQpKQogICAgICAgICBtX3BhbmVsTXV0ZUJ1
dHRvbi0+aGlkZSgpOwogCiAgICAgbV9mdWxsU2NyZWVuQnV0dG9uLT5oaWRlKCk7CiAKICAgICBp
ZiAobV92b2x1bWVTbGlkZXJDb250YWluZXIpCiAgICAgICAgIG1fdm9sdW1lU2xpZGVyQ29udGFp
bmVyLT5oaWRlKCk7Ci0gICAgaWYgKG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24gJiYgIXBh
Z2UtPnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVRvZ2dsZUNs
b3NlZENhcHRpb25zQnV0dG9uUGFydCkpCisgICAgaWYgKG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNC
dXR0b24gJiYgIXBhZ2UtPnRoZW1lKCkuaGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1l
ZGlhVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25QYXJ0KSkKICAgICAgICAgbV90b2dnbGVDbG9z
ZWRDYXB0aW9uc0J1dHRvbi0+aGlkZSgpOwogICAgIGlmIChtX2Nsb3NlZENhcHRpb25zQ29udGFp
bmVyKQogICAgICAgICBoaWRlQ2xvc2VkQ2FwdGlvblRyYWNrTGlzdCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0d0ay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzR3RrLmNwcAppbmRleCA1YzFjZDg2Li5k
NjVkMjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xz
R3RrLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIGJvb2wgTWVkaWFDb250cm9sc0d0azo6aW5pdGlh
bGl6ZUNvbnRyb2xzKERvY3VtZW50JiBkb2N1bWVudCkKICAgICBpZiAoZXhjZXB0aW9uQ29kZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGRvY3VtZW50LnBhZ2UoKS0+dGhlbWUo
KS0+c3VwcG9ydHNDbG9zZWRDYXB0aW9uaW5nKCkpIHsKKyAgICBpZiAoZG9jdW1lbnQucGFnZSgp
LT50aGVtZSgpLnN1cHBvcnRzQ2xvc2VkQ2FwdGlvbmluZygpKSB7CiAgICAgICAgIFJlZlB0cjxN
ZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0NvbnRhaW5lckVsZW1lbnQ+IGNsb3NlZENhcHRpb25z
Q29udGFpbmVyID0gTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWluZXJFbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQpOwogCiAgICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xDbG9zZWRDYXB0
aW9uc1RyYWNrTGlzdEVsZW1lbnQ+IGNsb3NlZENhcHRpb25zVHJhY2tMaXN0ID0gTWVkaWFDb250
cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIHRoaXMp
OwpAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgTWVkaWFDb250cm9sc0d0azo6cmVzZXQoKQogICAg
ICAgICByZXR1cm47CiAKICAgICBkb3VibGUgZHVyYXRpb24gPSBtX21lZGlhQ29udHJvbGxlci0+
ZHVyYXRpb24oKTsKLSAgICBtX2R1cmF0aW9uRGlzcGxheS0+c2V0SW5uZXJUZXh0KHBhZ2UtPnRo
ZW1lKCktPmZvcm1hdE1lZGlhQ29udHJvbHNUaW1lKGR1cmF0aW9uKSwgQVNTRVJUX05PX0VYQ0VQ
VElPTik7CisgICAgbV9kdXJhdGlvbkRpc3BsYXktPnNldElubmVyVGV4dChwYWdlLT50aGVtZSgp
LmZvcm1hdE1lZGlhQ29udHJvbHNUaW1lKGR1cmF0aW9uKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7
CiAgICAgbV9kdXJhdGlvbkRpc3BsYXktPnNldEN1cnJlbnRWYWx1ZShkdXJhdGlvbik7CiAKICAg
ICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbikgewpAQCAtMjM4LDcgKzIzOCw3IEBA
IHZvaWQgTWVkaWFDb250cm9sc0d0azo6dXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KCkKIAogICAg
IC8vIEFsbG93IHRoZSB0aGVtZSB0byBmb3JtYXQgdGhlIHRpbWUuCiAgICAgRXhjZXB0aW9uQ29k
ZSBleGNlcHRpb25Db2RlOwotICAgIG1fY3VycmVudFRpbWVEaXNwbGF5LT5zZXRJbm5lclRleHQo
cGFnZS0+dGhlbWUoKS0+Zm9ybWF0TWVkaWFDb250cm9sc0N1cnJlbnRUaW1lKG5vdywgZHVyYXRp
b24pLCBleGNlcHRpb25Db2RlKTsKKyAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0SW5uZXJU
ZXh0KHBhZ2UtPnRoZW1lKCkuZm9ybWF0TWVkaWFDb250cm9sc0N1cnJlbnRUaW1lKG5vdywgZHVy
YXRpb24pLCBleGNlcHRpb25Db2RlKTsKICAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0Q3Vy
cmVudFZhbHVlKG5vdyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZXRlclNoYWRvd0VsZW1lbnQuY3BwCmluZGV4IDJkNzVmYzUuLjBkMGY0MGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcApAQCAtNTcs
NyArNTcsNyBAQCBIVE1MTWV0ZXJFbGVtZW50KiBNZXRlclNoYWRvd0VsZW1lbnQ6Om1ldGVyRWxl
bWVudCgpIGNvbnN0CiBib29sIE1ldGVyU2hhZG93RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7CiAgICAgYXV0byByZW5kZXIgPSBtZXRlckVsZW1l
bnQoKS0+cmVuZGVyZXIoKTsKLSAgICByZXR1cm4gcmVuZGVyICYmICFyZW5kZXItPnRoZW1lKCkt
PnN1cHBvcnRzTWV0ZXIocmVuZGVyLT5zdHlsZSgpLmFwcGVhcmFuY2UoKSkgJiYgSFRNTERpdkVs
ZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgIHJldHVybiByZW5kZXIgJiYgIXJl
bmRlci0+dGhlbWUoKS5zdXBwb3J0c01ldGVyKHJlbmRlci0+c3R5bGUoKS5hcHBlYXJhbmNlKCkp
ICYmIEhUTUxEaXZFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsKIH0KIAogTWV0ZXJJ
bm5lckVsZW1lbnQ6Ok1ldGVySW5uZXJFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTcz
LDcgKzczLDcgQEAgYm9vbCBNZXRlcklubmVyRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgICAgIHJldHVybiBIVE1MRGl2RWxlbWVudDo6cmVu
ZGVyZXJJc05lZWRlZChzdHlsZSk7CiAKICAgICBhdXRvIHJlbmRlciA9IG1ldGVyRWxlbWVudCgp
LT5yZW5kZXJlcigpOwotICAgIHJldHVybiByZW5kZXIgJiYgIXJlbmRlci0+dGhlbWUoKS0+c3Vw
cG9ydHNNZXRlcihyZW5kZXItPnN0eWxlKCkuYXBwZWFyYW5jZSgpKSAmJiBIVE1MRGl2RWxlbWVu
dDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CisgICAgcmV0dXJuIHJlbmRlciAmJiAhcmVuZGVy
LT50aGVtZSgpLnN1cHBvcnRzTWV0ZXIocmVuZGVyLT5zdHlsZSgpLmFwcGVhcmFuY2UoKSkgJiYg
SFRNTERpdkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOwogfQogCiBSZW5kZXJFbGVt
ZW50KiBNZXRlcklubmVyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHls
ZT4gc3R5bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJU
aHVtYkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJF
bGVtZW50LmNwcAppbmRleCBhYWM4OWMyLi5iNmI4Mjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAg
aW5saW5lIHN0YXRpYyBib29sIGhhc1ZlcnRpY2FsQXBwZWFyYW5jZShIVE1MSW5wdXRFbGVtZW50
KiBpbnB1dCkKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc2xpZGVyU3R5bGUgPSBpbnB1dC0+cmVu
ZGVyZXIoKS0+c3R5bGUoKTsKIAogI2lmIEVOQUJMRShWSURFTykKLSAgICBpZiAoc2xpZGVyU3R5
bGUuYXBwZWFyYW5jZSgpID09IE1lZGlhVm9sdW1lU2xpZGVyUGFydCAmJiBpbnB1dC0+cmVuZGVy
ZXIoKS0+dGhlbWUoKS0+dXNlc1ZlcnRpY2FsVm9sdW1lU2xpZGVyKCkpCisgICAgaWYgKHNsaWRl
clN0eWxlLmFwcGVhcmFuY2UoKSA9PSBNZWRpYVZvbHVtZVNsaWRlclBhcnQgJiYgaW5wdXQtPnJl
bmRlcmVyKCktPnRoZW1lKCkudXNlc1ZlcnRpY2FsVm9sdW1lU2xpZGVyKCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogI2VuZGlmCiAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBSZW5kZXJTbGlkZXJU
aHVtYjo6dXBkYXRlQXBwZWFyYW5jZShSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpCiAgICAgZWxz
ZSBpZiAocGFyZW50U3R5bGUtPmFwcGVhcmFuY2UoKSA9PSBNZWRpYUZ1bGxTY3JlZW5Wb2x1bWVT
bGlkZXJQYXJ0KQogICAgICAgICBzdHlsZSgpLnNldEFwcGVhcmFuY2UoTWVkaWFGdWxsU2NyZWVu
Vm9sdW1lU2xpZGVyVGh1bWJQYXJ0KTsKICAgICBpZiAoc3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkp
Ci0gICAgICAgIHRoZW1lKCktPmFkanVzdFNsaWRlclRodW1iU2l6ZSgmc3R5bGUoKSwgZWxlbWVu
dCgpKTsKKyAgICAgICAgdGhlbWUoKS5hZGp1c3RTbGlkZXJUaHVtYlNpemUoJnN0eWxlKCksIGVs
ZW1lbnQoKSk7CiB9CiAKIGJvb2wgUmVuZGVyU2xpZGVyVGh1bWI6OmlzU2xpZGVyVGh1bWIoKSBj
b25zdApAQCAtMTIyLDEyICsxMjIsMTIgQEAgdm9pZCBSZW5kZXJTbGlkZXJDb250YWluZXI6OmNv
bXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3UKIAogI2lm
IEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIGlmIChpbnB1dC0+cmVuZGVyZXIoKS0+aXNT
bGlkZXIoKSAmJiAhaXNWZXJ0aWNhbCAmJiBpbnB1dC0+bGlzdCgpKSB7Ci0gICAgICAgIGludCBv
ZmZzZXRGcm9tQ2VudGVyID0gdGhlbWUoKS0+c2xpZGVyVGlja09mZnNldEZyb21UcmFja0NlbnRl
cigpOworICAgICAgICBpbnQgb2Zmc2V0RnJvbUNlbnRlciA9IHRoZW1lKCkuc2xpZGVyVGlja09m
ZnNldEZyb21UcmFja0NlbnRlcigpOwogICAgICAgICBMYXlvdXRVbml0IHRyYWNrSGVpZ2h0ID0g
MDsKICAgICAgICAgaWYgKG9mZnNldEZyb21DZW50ZXIgPCAwKQogICAgICAgICAgICAgdHJhY2tI
ZWlnaHQgPSAtMiAqIG9mZnNldEZyb21DZW50ZXI7CiAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgaW50IHRpY2tMZW5ndGggPSB0aGVtZSgpLT5zbGlkZXJUaWNrU2l6ZSgpLmhlaWdodCgpOwor
ICAgICAgICAgICAgaW50IHRpY2tMZW5ndGggPSB0aGVtZSgpLnNsaWRlclRpY2tTaXplKCkuaGVp
Z2h0KCk7CiAgICAgICAgICAgICB0cmFja0hlaWdodCA9IDIgKiAob2Zmc2V0RnJvbUNlbnRlciAr
IHRpY2tMZW5ndGgpOwogICAgICAgICB9CiAgICAgICAgIGZsb2F0IHpvb21GYWN0b3IgPSBzdHls
ZSgpLmVmZmVjdGl2ZVpvb20oKTsKQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIFNsaWRlclRodW1i
RWxlbWVudDo6c2V0UG9zaXRpb25Gcm9tUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIGFic29sdXRl
UG9pbnQpCiAgICAgRGVjaW1hbCB2YWx1ZSA9IHN0ZXBSYW5nZS5jbGFtcFZhbHVlKHN0ZXBSYW5n
ZS52YWx1ZUZyb21Qcm9wb3J0aW9uKGZyYWN0aW9uKSk7CiAKICNpZiBFTkFCTEUoREFUQUxJU1Rf
RUxFTUVOVCkKLSAgICBjb25zdCBMYXlvdXRVbml0IHNuYXBwaW5nVGhyZXNob2xkID0gcmVuZGVy
ZXIoKS0+dGhlbWUoKS0+c2xpZGVyVGlja1NuYXBwaW5nVGhyZXNob2xkKCk7CisgICAgY29uc3Qg
TGF5b3V0VW5pdCBzbmFwcGluZ1RocmVzaG9sZCA9IHJlbmRlcmVyKCktPnRoZW1lKCkuc2xpZGVy
VGlja1NuYXBwaW5nVGhyZXNob2xkKCk7CiAgICAgaWYgKHNuYXBwaW5nVGhyZXNob2xkID4gMCkg
ewogICAgICAgICBEZWNpbWFsIGNsb3Nlc3QgPSBpbnB1dC0+ZmluZENsb3Nlc3RUaWNrTWFya1Zh
bHVlKHZhbHVlKTsKICAgICAgICAgaWYgKGNsb3Nlc3QuaXNGaW5pdGUoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCmluZGV4IDQ4MjFlMTAuLmEyODE5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKQEAgLTM0MDQsNyArMzQwNCw3IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVD
b250cm9sVGludHMoKQogICAgICAgICByZXR1cm47CiAKICAgICBSZW5kZXJWaWV3KiByZW5kZXJW
aWV3ID0gdGhpcy0+cmVuZGVyVmlldygpOwotICAgIGlmICgocmVuZGVyVmlldyAmJiByZW5kZXJW
aWV3LT50aGVtZSgpLT5zdXBwb3J0c0NvbnRyb2xUaW50cygpKSB8fCBoYXNDdXN0b21TY3JvbGxi
YXJzKCkpCisgICAgaWYgKChyZW5kZXJWaWV3ICYmIHJlbmRlclZpZXctPnRoZW1lKCkuc3VwcG9y
dHNDb250cm9sVGludHMoKSkgfHwgaGFzQ3VzdG9tU2Nyb2xsYmFycygpKQogICAgICAgICBwYWlu
dENvbnRyb2xUaW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IDVmZjhlMjcuLmU2MDFkMDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oCkBAIC0xNDEsNyArMTQxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBz
ZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMoKTsKIAotICAgIFJlbmRlclRoZW1lKiB0aGVt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGhlbWUuZ2V0KCk7IH0KKyAgICBSZW5kZXJUaGVtZSYgdGhl
bWUoKSBjb25zdCB7IHJldHVybiAqbV90aGVtZTsgfQogCiAgICAgVmlld3BvcnRBcmd1bWVudHMg
dmlld3BvcnRBcmd1bWVudHMoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKaW5kZXggMGQ4MDQxNy4uYzFiNTE0YSAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCkBAIC00MTcsOSAr
NDE3LDkgQEAgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFn
ZShQYWdlKiBwYWdlKQogCiBzdGF0aWMgdm9pZCBhcHBseUNvbG9yQ2FsbGJhY2sodm9pZCogZGF0
YSwgRXZhc19PYmplY3QqLCBjb25zdCBjaGFyKiAvKiBzaWduYWwgKi8sIGNvbnN0IGNoYXIqIGNv
bG9yQ2xhc3MpCiB7Ci0gICAgUmVuZGVyVGhlbWVFZmwqIHRoYXQgPSBzdGF0aWNfY2FzdDxSZW5k
ZXJUaGVtZUVmbCo+KGRhdGEpOwotICAgIHRoYXQtPnNldENvbG9yRnJvbVRoZW1lQ2xhc3MoY29s
b3JDbGFzcyk7Ci0gICAgdGhhdC0+cGxhdGZvcm1Db2xvcnNEaWRDaGFuZ2UoKTsgLy8gVHJpZ2dl
cnMgcmVsYXlvdXQuCisgICAgUmVuZGVyVGhlbWVFZmwmIHRoYXQgPSBzdGF0aWNfY2FzdDxSZW5k
ZXJUaGVtZUVmbCY+KGRhdGEpOworICAgIHRoYXQuc2V0Q29sb3JGcm9tVGhlbWVDbGFzcyhjb2xv
ckNsYXNzKTsKKyAgICB0aGF0LnBsYXRmb3JtQ29sb3JzRGlkQ2hhbmdlKCk7IC8vIFRyaWdnZXJz
IHJlbGF5b3V0LgogfQogCiBzdGF0aWMgYm9vbCBmaWxsQ29sb3JzRnJvbUVkamVDbGFzcyhFdmFz
X09iamVjdCogbywgY29uc3QgY2hhciogY29sb3JDbGFzcywgQ29sb3IqIGNvbG9yMSwgQ29sb3Iq
IGNvbG9yMiA9IDAsIENvbG9yKiBjb2xvcjMgPSAwKQpAQCAtNzk4LDcgKzc5OCw3IEBAIGJvb2wg
UmVuZGVyVGhlbWVFZmw6OnBhaW50U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNv
bnN0IFBhaW50SW5mbyYgaW5mCiB2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RDaGVja2JveFN0
eWxlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxl
bWVudCogZWxlbWVudCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFnZSAmJiBlbGVtZW50ICYmIGVs
ZW1lbnQtPmRvY3VtZW50KCkucGFnZSgpKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRo
ZW1lRWZsKj4oZWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RDaGVj
a2JveFN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlbGVtZW50KTsKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8UmVuZGVyVGhlbWVFZmwmPihlbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUo
KSkuYWRqdXN0Q2hlY2tib3hTdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZWxlbWVudCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTgyMSw3ICs4MjEsNyBAQCBib29sIFJlbmRlclRo
ZW1lRWZsOjpwYWludENoZWNrYm94KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludElu
Zm8mIGluZm8sCiB2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RSYWRpb1N0eWxlKFN0eWxlUmVz
b2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVu
dCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFnZSAmJiBlbGVtZW50ICYmIGVsZW1lbnQtPmRvY3Vt
ZW50KCkucGFnZSgpKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsKj4oZWxl
bWVudC0+ZG9jdW1lbnQoKS5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RSYWRpb1N0eWxlKHN0eWxl
UmVzb2x2ZXIsIHN0eWxlLCBlbGVtZW50KTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhl
bWVFZmwmPihlbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUoKSkuYWRqdXN0UmFkaW9T
dHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZWxlbWVudCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTg0NCw3ICs4NDQsNyBAQCBib29sIFJlbmRlclRoZW1lRWZsOjpwYWludFJhZGlv
KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbgogdm9pZCBS
ZW5kZXJUaGVtZUVmbDo6YWRqdXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNv
bHZlciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewogICAg
IGlmICghbV9wYWdlICYmIGVsZW1lbnQgJiYgZWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdlKCkpIHsK
LSAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihlbGVtZW50LT5kb2N1bWVudCgp
LnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdEJ1dHRvblN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxl
LCBlbGVtZW50KTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwmPihlbGVtZW50
LT5kb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUoKSkuYWRqdXN0QnV0dG9uU3R5bGUoc3R5bGVSZXNv
bHZlciwgc3R5bGUsIGVsZW1lbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04NjEs
NyArODYxLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0
KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY28KIHZvaWQgUmVuZGVyVGhlbWVFZmw6
OmFkanVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVy
U3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewogICAgIGlmICghbV9wYWdl
ICYmIGVsZW1lbnQgJiYgZWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdlKCkpIHsKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihlbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKS0+dGhl
bWUoKSktPmFkanVzdE1lbnVMaXN0U3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGVsZW1lbnQp
OworICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCY+KGVsZW1lbnQtPmRvY3VtZW50
KCkucGFnZSgpLT50aGVtZSgpKS5hZGp1c3RNZW51TGlzdFN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0
eWxlLCBlbGVtZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhZGp1c3RTaXplQ29u
c3RyYWludHMoc3R5bGUsIENvbWJvQm94KTsKQEAgLTkwMCw3ICs5MDAsNyBAQCBib29sIFJlbmRl
clRoZW1lRWZsOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoUmVuZGVyT2JqZWN0KiBv
YmplY3QsIGNvbnN0CiB2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RUZXh0RmllbGRTdHlsZShT
dHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQq
IGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3BhZ2UgJiYgZWxlbWVudCAmJiBlbGVtZW50
LT5kb2N1bWVudCgpLnBhZ2UoKSkgewotICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVm
bCo+KGVsZW1lbnQtPmRvY3VtZW50KCkucGFnZSgpLT50aGVtZSgpKS0+YWRqdXN0VGV4dEZpZWxk
U3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGVsZW1lbnQpOworICAgICAgICBzdGF0aWNfY2Fz
dDxSZW5kZXJUaGVtZUVmbCY+KGVsZW1lbnQtPmRvY3VtZW50KCkucGFnZSgpLT50aGVtZSgpKS5h
ZGp1c3RUZXh0RmllbGRTdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZWxlbWVudCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgYWRqdXN0U2l6ZUNvbnN0cmFpbnRzKHN0eWxlLCBUZXh0
RmllbGQpOwpAQCAtOTI0LDcgKzkyNCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50VGV4
dEFyZWEoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywKIHZvaWQg
UmVuZGVyVGhlbWVFZmw6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKFN0eWxl
UmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxl
bWVudCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFnZSAmJiBlbGVtZW50ICYmIGVsZW1lbnQtPmRv
Y3VtZW50KCkucGFnZSgpKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsKj4o
ZWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RTZWFyY2hGaWVsZFJl
c3VsdHNCdXR0b25TdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZWxlbWVudCk7CisgICAgICAg
IHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsJj4oZWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdlKCkt
PnRoZW1lKCkpLmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKHN0eWxlUmVzb2x2
ZXIsIHN0eWxlLCBlbGVtZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhZGp1c3RT
aXplQ29uc3RyYWludHMoc3R5bGUsIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbik7CkBAIC05NDYs
NyArOTQ2LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNC
dXR0b24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFAKIHZvaWQgUmVuZGVyVGhlbWVFZmw6
OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0U3R5bGUoU3R5bGVSZXNvbHZl
ciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBj
b25zdAogewogICAgIGlmICghbV9wYWdlICYmIGVsZW1lbnQgJiYgZWxlbWVudC0+ZG9jdW1lbnQo
KS5wYWdlKCkpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihlbGVtZW50
LT5kb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0Rl
Y29yYXRpb25QYXJ0U3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGVsZW1lbnQpOworICAgICAg
ICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCY+KGVsZW1lbnQtPmRvY3VtZW50KCkucGFnZSgp
LT50aGVtZSgpKS5hZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydFN0eWxlKHN0
eWxlUmVzb2x2ZXIsIHN0eWxlLCBlbGVtZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBhZGp1c3RTaXplQ29uc3RyYWludHMoc3R5bGUsIFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRp
b24pOwpAQCAtOTY4LDcgKzk2OCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50U2VhcmNo
RmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQoUmVuZGVyT2JqZWN0KiBvYmplY3QsCiB2b2lkIFJl
bmRlclRoZW1lRWZsOjphZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKFN0eWxlUmVz
b2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVu
dCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFnZSAmJiBlbGVtZW50ICYmIGVsZW1lbnQtPmRvY3Vt
ZW50KCkucGFnZSgpKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsKj4oZWxl
bWVudC0+ZG9jdW1lbnQoKS5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RTZWFyY2hGaWVsZENhbmNl
bEJ1dHRvblN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlbGVtZW50KTsKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwmPihlbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKS0+dGhl
bWUoKSkuYWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShzdHlsZVJlc29sdmVyLCBz
dHlsZSwgZWxlbWVudCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYWRqdXN0U2l6ZUNv
bnN0cmFpbnRzKHN0eWxlLCBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbik7CkBAIC05OTIsNyArOTky
LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihS
ZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGEKIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVz
dFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5
bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewogICAgIGlmICghbV9wYWdlICYm
IGVsZW1lbnQgJiYgZWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdlKCkpIHsKLSAgICAgICAgc3RhdGlj
X2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihlbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUo
KSktPmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGVsZW1lbnQp
OworICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCY+KGVsZW1lbnQtPmRvY3VtZW50
KCkucGFnZSgpLT50aGVtZSgpKS5hZGp1c3RTZWFyY2hGaWVsZFN0eWxlKHN0eWxlUmVzb2x2ZXIs
IHN0eWxlLCBlbGVtZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhZGp1c3RTaXpl
Q29uc3RyYWludHMoc3R5bGUsIFNlYXJjaEZpZWxkKTsKQEAgLTEwMDgsNyArMTAwOCw3IEBAIGJv
b2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50U2VhcmNoRmllbGQoUmVuZGVyT2JqZWN0KiBvYmplY3Qs
IGNvbnN0IFBhaW50SW5mbyYgaW5mCiB2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RJbm5lclNw
aW5CdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSog
c3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3BhZ2UgJiYgZWxl
bWVudCAmJiBlbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKSkgewotICAgICAgICBzdGF0aWNfY2Fz
dDxSZW5kZXJUaGVtZUVmbCo+KGVsZW1lbnQtPmRvY3VtZW50KCkucGFnZSgpLT50aGVtZSgpKS0+
YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGVsZW1lbnQp
OworICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCY+KGVsZW1lbnQtPmRvY3VtZW50
KCkucGFnZSgpLT50aGVtZSgpKS5hZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZShzdHlsZVJlc29s
dmVyLCBzdHlsZSwgZWxlbWVudCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYWRqdXN0
U2l6ZUNvbnN0cmFpbnRzKHN0eWxlLCBTcGlubmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCBkMTA2MGViLi4wZTI5N2FiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0xMjg0LDkgKzEyODQsOSBAQCB2
b2lkIElubGluZVRleHRCb3g6OnBhaW50VGV4dE1hdGNoTWFya2VyKEdyYXBoaWNzQ29udGV4dCog
cHQsIGNvbnN0IEZsb2F0UG9pbnQmCiAgICAgCiAgICAgLy8gT3B0aW9uYWxseSBoaWdobGlnaHQg
dGhlIHRleHQKICAgICBpZiAocmVuZGVyZXIoKS5mcmFtZSgpLmVkaXRvcigpLm1hcmtlZFRleHRN
YXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKSkgewotICAgICAgICBDb2xvciBjb2xvciA9IG1hcmtlci0+
YWN0aXZlTWF0Y2goKSA/Ci0gICAgICAgICAgICByZW5kZXJlcigpLnRoZW1lKCktPnBsYXRmb3Jt
QWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCkgOgotICAgICAgICAgICAgcmVuZGVyZXIo
KS50aGVtZSgpLT5wbGF0Zm9ybUluYWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCk7Cisg
ICAgICAgIENvbG9yIGNvbG9yID0gbWFya2VyLT5hY3RpdmVNYXRjaCgpCisgICAgICAgICAgICA/
IHJlbmRlcmVyKCkudGhlbWUoKS5wbGF0Zm9ybUFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xv
cigpCisgICAgICAgICAgICA6IHJlbmRlcmVyKCkudGhlbWUoKS5wbGF0Zm9ybUluYWN0aXZlVGV4
dFNlYXJjaEhpZ2hsaWdodENvbG9yKCk7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcigqcHQpOwogICAgICAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQoKnB0LCBU
ZXh0UGFpbnRTdHlsZShjb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKSk7IC8vIERvbid0IGRyYXcg
dGV4dCBhdCBhbGwhCiAgICAgICAgIHB0LT5jbGlwKEZsb2F0UmVjdChib3hPcmlnaW4ueCgpLCBi
b3hPcmlnaW4ueSgpIC0gZGVsdGFZLCBtX2xvZ2ljYWxXaWR0aCwgc2VsSGVpZ2h0KSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCAxZWQ1YzlhLi4wODJiNWEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTE3MTEsNyAr
MTcxMSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFkZFZpc3VhbE92ZXJmbG93RnJvbVRoZW1lKCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50UmVjdCBpbmZsYXRlZFJlY3QgPSBwaXhlbFNuYXBw
ZWRCb3JkZXJCb3hSZWN0KCk7Ci0gICAgdGhlbWUoKS0+YWRqdXN0UmVwYWludFJlY3QodGhpcywg
aW5mbGF0ZWRSZWN0KTsKKyAgICB0aGVtZSgpLmFkanVzdFJlcGFpbnRSZWN0KHRoaXMsIGluZmxh
dGVkUmVjdCk7CiAgICAgYWRkVmlzdWFsT3ZlcmZsb3coaW5mbGF0ZWRSZWN0KTsKIAogICAgIGlm
IChSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1RocmVhZENvbnRhaW5pbmdCbG9j
aygpKQpAQCAtNDcxMiw4ICs0NzEyLDggQEAgaW50IFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0
aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW4KICAgICAg
ICAgLy8gRklYTUU6IE1pZ2h0IGJlIGJldHRlciB0byBoYXZlIGEgY3VzdG9tIENTUyBwcm9wZXJ0
eSBpbnN0ZWFkLCBzbyB0aGF0IGlmIHRoZSB0aGVtZQogICAgICAgICAvLyBpcyB0dXJuZWQgb2Zm
LCBjaGVja2JveGVzL3JhZGlvcyB3aWxsIHN0aWxsIGhhdmUgZGVjZW50IGJhc2VsaW5lcy4KICAg
ICAgICAgLy8gRklYTUU6IE5lZWQgdG8gcGF0Y2ggZm9ybSBjb250cm9scyB0byBkZWFsIHdpdGgg
dmVydGljYWwgbGluZXMuCi0gICAgICAgIGlmIChzdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSAmJiAh
dGhlbWUoKS0+aXNDb250cm9sQ29udGFpbmVyKHN0eWxlKCkuYXBwZWFyYW5jZSgpKSkKLSAgICAg
ICAgICAgIHJldHVybiB0aGVtZSgpLT5iYXNlbGluZVBvc2l0aW9uKHRoaXMpOworICAgICAgICBp
ZiAoc3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkgJiYgIXRoZW1lKCkuaXNDb250cm9sQ29udGFpbmVy
KHN0eWxlKCkuYXBwZWFyYW5jZSgpKSkKKyAgICAgICAgICAgIHJldHVybiB0aGVtZSgpLmJhc2Vs
aW5lUG9zaXRpb24odGhpcyk7CiAgICAgICAgICAgICAKICAgICAgICAgLy8gQ1NTMi4xIHN0YXRl
cyB0aGF0IHRoZSBiYXNlbGluZSBvZiBhbiBpbmxpbmUgYmxvY2sgaXMgdGhlIGJhc2VsaW5lIG9m
IHRoZSBsYXN0IGxpbmUgYm94IGluCiAgICAgICAgIC8vIHRoZSBub3JtYWwgZmxvdy4gIFdlIG1h
a2UgYW4gZXhjZXB0aW9uIGZvciBtYXJxdWVlcywgc2luY2UgdGhlaXIgYmFzZWxpbmVzIGFyZSBt
ZWFuaW5nbGVzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCA4OTQ0
ZDczLi44NDY0MmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAt
MTIwNCw3ICsxMjA0LDcgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWkKICAgICAvLyBJZiB3ZSBo
YXZlIGEgbmF0aXZlIHRoZW1lIGFwcGVhcmFuY2UsIHBhaW50IHRoYXQgYmVmb3JlIHBhaW50aW5n
IG91ciBiYWNrZ3JvdW5kLgogICAgIC8vIFRoZSB0aGVtZSB3aWxsIHRlbGwgdXMgd2hldGhlciBv
ciBub3Qgd2Ugc2hvdWxkIGFsc28gcGFpbnQgdGhlIENTUyBiYWNrZ3JvdW5kLgogICAgIEludFJl
Y3Qgc25hcHBlZFBhaW50UmVjdChwaXhlbFNuYXBwZWRJbnRSZWN0KHBhaW50UmVjdCkpOwotICAg
IGJvb2wgdGhlbWVQYWludGVkID0gc3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkgJiYgIXRoZW1lKCkt
PnBhaW50KHRoaXMsIHBhaW50SW5mbywgc25hcHBlZFBhaW50UmVjdCk7CisgICAgYm9vbCB0aGVt
ZVBhaW50ZWQgPSBzdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSAmJiAhdGhlbWUoKS5wYWludCh0aGlz
LCBwYWludEluZm8sIHNuYXBwZWRQYWludFJlY3QpOwogICAgIGlmICghdGhlbWVQYWludGVkKSB7
CiAgICAgICAgIGlmIChibGVlZEF2b2lkYW5jZSA9PSBCYWNrZ3JvdW5kQmxlZWRCYWNrZ3JvdW5k
T3ZlckJvcmRlcikKICAgICAgICAgICAgIHBhaW50Qm9yZGVyKHBhaW50SW5mbywgcGFpbnRSZWN0
LCAmc3R5bGUoKSwgYmxlZWRBdm9pZGFuY2UpOwpAQCAtMTIxMiwxMiArMTIxMiwxMiBAQCB2b2lk
IFJlbmRlckJveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQmIHBhaQogICAgICAgICBwYWludEJhY2tncm91bmQocGFpbnRJbmZvLCBw
YWludFJlY3QsIGJsZWVkQXZvaWRhbmNlKTsKIAogICAgICAgICBpZiAoc3R5bGUoKS5oYXNBcHBl
YXJhbmNlKCkpCi0gICAgICAgICAgICB0aGVtZSgpLT5wYWludERlY29yYXRpb25zKHRoaXMsIHBh
aW50SW5mbywgc25hcHBlZFBhaW50UmVjdCk7CisgICAgICAgICAgICB0aGVtZSgpLnBhaW50RGVj
b3JhdGlvbnModGhpcywgcGFpbnRJbmZvLCBzbmFwcGVkUGFpbnRSZWN0KTsKICAgICB9CiAgICAg
cGFpbnRCb3hTaGFkb3cocGFpbnRJbmZvLCBwYWludFJlY3QsICZzdHlsZSgpLCBJbnNldCk7CiAK
ICAgICAvLyBUaGUgdGhlbWUgd2lsbCB0ZWxsIHVzIHdoZXRoZXIgb3Igbm90IHdlIHNob3VsZCBh
bHNvIHBhaW50IHRoZSBDU1MgYm9yZGVyLgotICAgIGlmIChibGVlZEF2b2lkYW5jZSAhPSBCYWNr
Z3JvdW5kQmxlZWRCYWNrZ3JvdW5kT3ZlckJvcmRlciAmJiAoIXN0eWxlKCkuaGFzQXBwZWFyYW5j
ZSgpIHx8ICghdGhlbWVQYWludGVkICYmIHRoZW1lKCktPnBhaW50Qm9yZGVyT25seSh0aGlzLCBw
YWludEluZm8sIHNuYXBwZWRQYWludFJlY3QpKSkgJiYgc3R5bGUoKS5oYXNCb3JkZXIoKSkKKyAg
ICBpZiAoYmxlZWRBdm9pZGFuY2UgIT0gQmFja2dyb3VuZEJsZWVkQmFja2dyb3VuZE92ZXJCb3Jk
ZXIgJiYgKCFzdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSB8fCAoIXRoZW1lUGFpbnRlZCAmJiB0aGVt
ZSgpLnBhaW50Qm9yZGVyT25seSh0aGlzLCBwYWludEluZm8sIHNuYXBwZWRQYWludFJlY3QpKSkg
JiYgc3R5bGUoKS5oYXNCb3JkZXIoKSkKICAgICAgICAgcGFpbnRCb3JkZXIocGFpbnRJbmZvLCBw
YWludFJlY3QsICZzdHlsZSgpLCBibGVlZEF2b2lkYW5jZSk7CiAKICAgICBpZiAoYmxlZWRBdm9p
ZGFuY2UgPT0gQmFja2dyb3VuZEJsZWVkVXNlVHJhbnNwYXJlbmN5TGF5ZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCmluZGV4IGRmMzFjMjYuLjhkM2UxYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCkBAIC0xMTIsMTIgKzEx
MiwxMiBAQCB2b2lkIFJlbmRlckJ1dHRvbjo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNl
IGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdAogICAgIGlmIChtX2lubmVyKSAvLyBSZW5k
ZXJCbG9jayBoYW5kbGVkIHVwZGF0aW5nIHRoZSBhbm9ueW1vdXMgYmxvY2sncyBzdHlsZS4KICAg
ICAgICAgc2V0dXBJbm5lclN0eWxlKCZtX2lubmVyLT5zdHlsZSgpKTsKIAotICAgIGlmICghbV9k
ZWZhdWx0ICYmIHRoZW1lKCktPmlzRGVmYXVsdCh0aGlzKSkgeworICAgIGlmICghbV9kZWZhdWx0
ICYmIHRoZW1lKCkuaXNEZWZhdWx0KHRoaXMpKSB7CiAgICAgICAgIGlmICghbV90aW1lcikKICAg
ICAgICAgICAgIG1fdGltZXIgPSBhZG9wdFB0cihuZXcgVGltZXI8UmVuZGVyQnV0dG9uPih0aGlz
LCAmUmVuZGVyQnV0dG9uOjp0aW1lckZpcmVkKSk7CiAgICAgICAgIG1fdGltZXItPnN0YXJ0UmVw
ZWF0aW5nKDAuMDMpOwogICAgICAgICBtX2RlZmF1bHQgPSB0cnVlOwotICAgIH0gZWxzZSBpZiAo
bV9kZWZhdWx0ICYmICF0aGVtZSgpLT5pc0RlZmF1bHQodGhpcykpIHsKKyAgICB9IGVsc2UgaWYg
KG1fZGVmYXVsdCAmJiAhdGhlbWUoKS5pc0RlZmF1bHQodGhpcykpIHsKICAgICAgICAgbV9kZWZh
dWx0ID0gZmFsc2U7CiAgICAgICAgIG1fdGltZXIuY2xlYXIoKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAppbmRl
eCAyMDdkZjI1Li40N2U0NzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIFJl
bmRlckZpbGVVcGxvYWRDb250cm9sOjpjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlv
dXRVbml0JiBtaW5Mb2dpYwogICAgIFJlbmRlckZpbGVVcGxvYWRDb250cm9sKiByZW5kZXJlciA9
IGNvbnN0X2Nhc3Q8UmVuZGVyRmlsZVVwbG9hZENvbnRyb2wqPih0aGlzKTsKICAgICBmbG9hdCBt
aW5EZWZhdWx0TGFiZWxXaWR0aCA9IGRlZmF1bHRXaWR0aE51bUNoYXJzICogZm9udC53aWR0aChj
b25zdHJ1Y3RUZXh0UnVuKHJlbmRlcmVyLCBmb250LCBjaGFyYWN0ZXJBc1N0cmluZywgc3R5bGUo
KSwgVGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbikpOwogCi0gICAgY29uc3QgU3RyaW5n
IGxhYmVsID0gdGhlbWUoKS0+ZmlsZUxpc3REZWZhdWx0TGFiZWwoaW5wdXRFbGVtZW50KCkubXVs
dGlwbGUoKSk7CisgICAgY29uc3QgU3RyaW5nIGxhYmVsID0gdGhlbWUoKS5maWxlTGlzdERlZmF1
bHRMYWJlbChpbnB1dEVsZW1lbnQoKS5tdWx0aXBsZSgpKTsKICAgICBmbG9hdCBkZWZhdWx0TGFi
ZWxXaWR0aCA9IGZvbnQud2lkdGgoY29uc3RydWN0VGV4dFJ1bihyZW5kZXJlciwgZm9udCwgbGFi
ZWwsIHN0eWxlKCksIFRleHRSdW46OkFsbG93VHJhaWxpbmdFeHBhbnNpb24pKTsKICAgICBpZiAo
SFRNTElucHV0RWxlbWVudCogYnV0dG9uID0gdXBsb2FkQnV0dG9uKCkpCiAgICAgICAgIGlmIChS
ZW5kZXJPYmplY3QqIGJ1dHRvblJlbmRlcmVyID0gYnV0dG9uLT5yZW5kZXJlcigpKQpAQCAtMjc4
LDcgKzI3OCw3IEBAIFN0cmluZyBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6ZmlsZVRleHRWYWx1
ZSgpIGNvbnN0CiAgICAgaWYgKGlucHV0RWxlbWVudCgpLmZpbGVzKCktPmxlbmd0aCgpKQogICAg
ICAgICByZXR1cm4gU3RyaW5nVHJ1bmNhdG9yOjpyaWdodFRydW5jYXRlKGlucHV0RWxlbWVudCgp
LmRpc3BsYXlTdHJpbmcoKSwgbWF4RmlsZW5hbWVXaWR0aCgpLCBzdHlsZSgpLmZvbnQoKSwgU3Ry
aW5nVHJ1bmNhdG9yOjpFbmFibGVSb3VuZGluZ0hhY2tzKTsKICNlbmRpZgotICAgIHJldHVybiB0
aGVtZSgpLT5maWxlTGlzdE5hbWVGb3JXaWR0aChpbnB1dEVsZW1lbnQoKS5maWxlcygpLCBzdHls
ZSgpLmZvbnQoKSwgbWF4RmlsZW5hbWVXaWR0aCgpLCBpbnB1dEVsZW1lbnQoKS5tdWx0aXBsZSgp
KTsKKyAgICByZXR1cm4gdGhlbWUoKS5maWxlTGlzdE5hbWVGb3JXaWR0aChpbnB1dEVsZW1lbnQo
KS5maWxlcygpLCBzdHlsZSgpLmZvbnQoKSwgbWF4RmlsZW5hbWVXaWR0aCgpLCBpbnB1dEVsZW1l
bnQoKS5tdWx0aXBsZSgpKTsKIH0KICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAppbmRleCA5MTUxYTY1
Li43MWFlMTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxv
d1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJl
YWQuY3BwCkBAIC0xMzU1LDcgKzEzNTUsNyBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmFkZFJl
Z2lvbnNWaXN1YWxPdmVyZmxvd0Zyb21UaGVtZShjb25zdCBSZW5kZXJCbG9jayogYmxvYwogICAg
ICAgICBib3JkZXJCb3ggPSByZWdpb24tPnJlY3RGbG93UG9ydGlvbkZvckJveChibG9jaywgYm9y
ZGVyQm94KTsKIAogICAgICAgICBJbnRSZWN0IGluZmxhdGVkUmVjdCA9IHBpeGVsU25hcHBlZElu
dFJlY3QoYm9yZGVyQm94KTsKLSAgICAgICAgYmxvY2stPnRoZW1lKCktPmFkanVzdFJlcGFpbnRS
ZWN0KGJsb2NrLCBpbmZsYXRlZFJlY3QpOworICAgICAgICBibG9jay0+dGhlbWUoKS5hZGp1c3RS
ZXBhaW50UmVjdChibG9jaywgaW5mbGF0ZWRSZWN0KTsKIAogICAgICAgICByZWdpb24tPmFkZFZp
c3VhbE92ZXJmbG93Rm9yQm94KGJsb2NrLCBpbmZsYXRlZFJlY3QpOwogICAgICAgICBpZiAocmVn
aW9uID09IGVuZFJlZ2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5j
cHAKaW5kZXggNjY5NTFlNy4uNDY5ODZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5jcHAKQEAgLTE0NjEsNyArMTQ2MSw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpw
YWludE91dGxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWlu
dE9mCiAgICAgCiAgICAgUmVuZGVyU3R5bGUmIHN0eWxlVG9Vc2UgPSBzdHlsZSgpOwogICAgIGlm
IChzdHlsZVRvVXNlLm91dGxpbmVTdHlsZUlzQXV0bygpIHx8IGhhc091dGxpbmVBbm5vdGF0aW9u
KCkpIHsKLSAgICAgICAgaWYgKCF0aGVtZSgpLT5zdXBwb3J0c0ZvY3VzUmluZygmc3R5bGVUb1Vz
ZSkpIHsKKyAgICAgICAgaWYgKCF0aGVtZSgpLnN1cHBvcnRzRm9jdXNSaW5nKCZzdHlsZVRvVXNl
KSkgewogICAgICAgICAgICAgLy8gT25seSBwYWludCB0aGUgZm9jdXMgcmluZyBieSBoYW5kIGlm
IHRoZSB0aGVtZSBpc24ndCBhYmxlIHRvIGRyYXcgdGhlIGZvY3VzIHJpbmcuCiAgICAgICAgICAg
ICBwYWludEZvY3VzUmluZyhwYWludEluZm8sIHBhaW50T2Zmc2V0LCAmc3R5bGVUb1VzZSk7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRl
eCAyZjg5ZDQwLi44NWIwMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RCb3guY3BwCkBAIC0zOTksMTAgKzM5OSwxMCBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50
SXRlbUZvcmVncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50Jgog
ICAgIENvbG9yIHRleHRDb2xvciA9IGxpc3RJdGVtRWxlbWVudC0+cmVuZGVyU3R5bGUoKSA/IGxp
c3RJdGVtRWxlbWVudC0+cmVuZGVyU3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1By
b3BlcnR5Q29sb3IpIDogc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlD
b2xvcik7CiAgICAgaWYgKGlzT3B0aW9uRWxlbWVudCAmJiB0b0hUTUxPcHRpb25FbGVtZW50KGxp
c3RJdGVtRWxlbWVudCktPnNlbGVjdGVkKCkpIHsKICAgICAgICAgaWYgKGZyYW1lKCkuc2VsZWN0
aW9uKCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkgJiYgZG9jdW1lbnQoKS5mb2N1c2VkRWxlbWVudCgp
ID09ICZzZWxlY3RFbGVtZW50KCkpCi0gICAgICAgICAgICB0ZXh0Q29sb3IgPSB0aGVtZSgpLT5h
Y3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCk7CisgICAgICAgICAgICB0ZXh0
Q29sb3IgPSB0aGVtZSgpLmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKTsK
ICAgICAgICAgLy8gSG9ub3IgdGhlIGZvcmVncm91bmQgY29sb3IgZm9yIGRpc2FibGVkIGl0ZW1z
CiAgICAgICAgIGVsc2UgaWYgKCFsaXN0SXRlbUVsZW1lbnQtPmlzRGlzYWJsZWRGb3JtQ29udHJv
bCgpICYmICFzZWxlY3RFbGVtZW50KCkuaXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCi0gICAgICAg
ICAgICB0ZXh0Q29sb3IgPSB0aGVtZSgpLT5pbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3Jv
dW5kQ29sb3IoKTsKKyAgICAgICAgICAgIHRleHRDb2xvciA9IHRoZW1lKCkuaW5hY3RpdmVMaXN0
Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCk7CiAgICAgfQogCiAgICAgQ29sb3JTcGFjZSBj
b2xvclNwYWNlID0gaXRlbVN0eWxlLT5jb2xvclNwYWNlKCk7CkBAIC00MzIsOSArNDMyLDkgQEAg
dm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1CYWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICBDb2xvciBiYWNrQ29sb3I7CiAgICAgaWYgKGlz
SFRNTE9wdGlvbkVsZW1lbnQobGlzdEl0ZW1FbGVtZW50KSAmJiB0b0hUTUxPcHRpb25FbGVtZW50
KGxpc3RJdGVtRWxlbWVudCktPnNlbGVjdGVkKCkpIHsKICAgICAgICAgaWYgKGZyYW1lKCkuc2Vs
ZWN0aW9uKCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkgJiYgZG9jdW1lbnQoKS5mb2N1c2VkRWxlbWVu
dCgpID09ICZzZWxlY3RFbGVtZW50KCkpCi0gICAgICAgICAgICBiYWNrQ29sb3IgPSB0aGVtZSgp
LT5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCk7CisgICAgICAgICAgICBi
YWNrQ29sb3IgPSB0aGVtZSgpLmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3Io
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYmFja0NvbG9yID0gdGhlbWUoKS0+aW5hY3Rp
dmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCk7CisgICAgICAgICAgICBiYWNrQ29s
b3IgPSB0aGVtZSgpLmluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpOwog
ICAgIH0gZWxzZQogICAgICAgICBiYWNrQ29sb3IgPSBsaXN0SXRlbUVsZW1lbnQtPnJlbmRlclN0
eWxlKCkgPyBsaXN0SXRlbUVsZW1lbnQtPnJlbmRlclN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikgOiBzdHlsZSgpLnZpc2l0ZWREZXBlbmRl
bnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAKQEAgLTgwNyw3ICs4MDcsNyBA
QCBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gUmVuZGVyTGlzdEJveDo6Y3JlYXRlU2Nyb2xsYmFyKCkK
ICAgICBpZiAoaGFzQ3VzdG9tU2Nyb2xsYmFyU3R5bGUpCiAgICAgICAgIHdpZGdldCA9IFJlbmRl
clNjcm9sbGJhcjo6Y3JlYXRlQ3VzdG9tU2Nyb2xsYmFyKHRoaXMsIFZlcnRpY2FsU2Nyb2xsYmFy
LCAmc2VsZWN0RWxlbWVudCgpKTsKICAgICBlbHNlIHsKLSAgICAgICAgd2lkZ2V0ID0gU2Nyb2xs
YmFyOjpjcmVhdGVOYXRpdmVTY3JvbGxiYXIodGhpcywgVmVydGljYWxTY3JvbGxiYXIsIHRoZW1l
KCktPnNjcm9sbGJhckNvbnRyb2xTaXplRm9yUGFydChMaXN0Ym94UGFydCkpOworICAgICAgICB3
aWRnZXQgPSBTY3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcih0aGlzLCBWZXJ0aWNhbFNj
cm9sbGJhciwgdGhlbWUoKS5zY3JvbGxiYXJDb250cm9sU2l6ZUZvclBhcnQoTGlzdGJveFBhcnQp
KTsKICAgICAgICAgZGlkQWRkU2Nyb2xsYmFyKHdpZGdldC5nZXQoKSwgVmVydGljYWxTY3JvbGxi
YXIpOwogICAgIH0KICAgICB2aWV3KCkuZnJhbWVWaWV3KCkuYWRkQ2hpbGQod2lkZ2V0LmdldCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRy
b2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwCmluZGV4IDkxNjMwOGEuLjdkZTk4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcApA
QCAtNTQsNyArNTQsNyBAQCB2b2lkIFJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyOjps
YXlvdXQoKQogCiAgICAgLy8gSWYgdGhlIHNsaWRlciB3b3VsZCBiZSByZW5kZXJlZCBvdXRzaWRl
IHRoZSBwYWdlLCBpdCBzaG91bGQgYmUgbW92ZWQgYmVsb3cgdGhlIGNvbnRyb2xzLgogICAgIGlm
IChVTkxJS0VMWShhYnNvbHV0ZU9mZnNldFRvcCA8IDApKQotICAgICAgICBzZXRZKGJ1dHRvbkJv
eC0+b2Zmc2V0VG9wKCkgKyB0aGVtZSgpLT52b2x1bWVTbGlkZXJPZmZzZXRGcm9tTXV0ZUJ1dHRv
bihidXR0b25Cb3gsIHBpeGVsU25hcHBlZFNpemUoKSkueSgpKTsKKyAgICAgICAgc2V0WShidXR0
b25Cb3gtPm9mZnNldFRvcCgpICsgdGhlbWUoKS52b2x1bWVTbGlkZXJPZmZzZXRGcm9tTXV0ZUJ1
dHRvbihidXR0b25Cb3gsIHBpeGVsU25hcHBlZFNpemUoKSkueSgpKTsKIH0KIAogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
ZW51TGlzdC5jcHAKaW5kZXggYjYxMmI1YS4uNmZkNTZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCkBAIC0xMzAsMTAgKzEzMCwxMCBAQCB2b2lkIFJl
bmRlck1lbnVMaXN0OjphZGp1c3RJbm5lclN0eWxlKCkKICAgICAgICAgaW5uZXJTdHlsZS5zZXRB
bGlnblNlbGYoQWxpZ25GbGV4U3RhcnQpOwogICAgIH0KIAotICAgIGlubmVyU3R5bGUuc2V0UGFk
ZGluZ0xlZnQoTGVuZ3RoKHRoZW1lKCktPnBvcHVwSW50ZXJuYWxQYWRkaW5nTGVmdCgmc3R5bGUo
KSksIEZpeGVkKSk7Ci0gICAgaW5uZXJTdHlsZS5zZXRQYWRkaW5nUmlnaHQoTGVuZ3RoKHRoZW1l
KCktPnBvcHVwSW50ZXJuYWxQYWRkaW5nUmlnaHQoJnN0eWxlKCkpLCBGaXhlZCkpOwotICAgIGlu
bmVyU3R5bGUuc2V0UGFkZGluZ1RvcChMZW5ndGgodGhlbWUoKS0+cG9wdXBJbnRlcm5hbFBhZGRp
bmdUb3AoJnN0eWxlKCkpLCBGaXhlZCkpOwotICAgIGlubmVyU3R5bGUuc2V0UGFkZGluZ0JvdHRv
bShMZW5ndGgodGhlbWUoKS0+cG9wdXBJbnRlcm5hbFBhZGRpbmdCb3R0b20oJnN0eWxlKCkpLCBG
aXhlZCkpOworICAgIGlubmVyU3R5bGUuc2V0UGFkZGluZ0xlZnQoTGVuZ3RoKHRoZW1lKCkucG9w
dXBJbnRlcm5hbFBhZGRpbmdMZWZ0KCZzdHlsZSgpKSwgRml4ZWQpKTsKKyAgICBpbm5lclN0eWxl
LnNldFBhZGRpbmdSaWdodChMZW5ndGgodGhlbWUoKS5wb3B1cEludGVybmFsUGFkZGluZ1JpZ2h0
KCZzdHlsZSgpKSwgRml4ZWQpKTsKKyAgICBpbm5lclN0eWxlLnNldFBhZGRpbmdUb3AoTGVuZ3Ro
KHRoZW1lKCkucG9wdXBJbnRlcm5hbFBhZGRpbmdUb3AoJnN0eWxlKCkpLCBGaXhlZCkpOworICAg
IGlubmVyU3R5bGUuc2V0UGFkZGluZ0JvdHRvbShMZW5ndGgodGhlbWUoKS5wb3B1cEludGVybmFs
UGFkZGluZ0JvdHRvbSgmc3R5bGUoKSksIEZpeGVkKSk7CiAKICAgICBpZiAoZG9jdW1lbnQoKS5w
YWdlKCktPmNocm9tZSgpLnNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCkpIHsK
ICAgICAgICAgLy8gSXRlbXMgaW4gdGhlIHBvcHVwIHdpbGwgbm90IHJlc3BlY3QgdGhlIENTUyB0
ZXh0LWFsaWduIGFuZCBkaXJlY3Rpb24gcHJvcGVydGllcywKQEAgLTIyMyw3ICsyMjMsNyBAQCB2
b2lkIFJlbmRlck1lbnVMaXN0Ojp1cGRhdGVPcHRpb25zV2lkdGgoKQogCiAgICAgICAgIFN0cmlu
ZyB0ZXh0ID0gdG9IVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KS0+dGV4dEluZGVudGVkVG9SZXNw
ZWN0R3JvdXBMYWJlbCgpOwogICAgICAgICBhcHBseVRleHRUcmFuc2Zvcm0oc3R5bGUoKSwgdGV4
dCwgJyAnKTsKLSAgICAgICAgaWYgKHRoZW1lKCktPnBvcHVwT3B0aW9uU3VwcG9ydHNUZXh0SW5k
ZW50KCkpIHsKKyAgICAgICAgaWYgKHRoZW1lKCkucG9wdXBPcHRpb25TdXBwb3J0c1RleHRJbmRl
bnQoKSkgewogICAgICAgICAgICAgLy8gQWRkIGluIHRoZSBvcHRpb24ncyB0ZXh0IGluZGVudC4g
IFdlIGNhbid0IGNhbGN1bGF0ZSBwZXJjZW50YWdlIHZhbHVlcyBmb3Igbm93LgogICAgICAgICAg
ICAgZmxvYXQgb3B0aW9uV2lkdGggPSAwOwogICAgICAgICAgICAgaWYgKFJlbmRlclN0eWxlKiBv
cHRpb25TdHlsZSA9IGVsZW1lbnQtPnJlbmRlclN0eWxlKCkpCkBAIC0zMjQsNyArMzI0LDcgQEAg
TGF5b3V0UmVjdCBSZW5kZXJNZW51TGlzdDo6Y29udHJvbENsaXBSZWN0KGNvbnN0IExheW91dFBv
aW50JiBhZGRpdGlvbmFsT2Zmc2V0KQogCiB2b2lkIFJlbmRlck1lbnVMaXN0Ojpjb21wdXRlSW50
cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVu
aXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3QKIHsKLSAgICBtYXhMb2dpY2FsV2lkdGggPSBzdGQ6
Om1heChtX29wdGlvbnNXaWR0aCwgdGhlbWUoKS0+bWluaW11bU1lbnVMaXN0U2l6ZSgmc3R5bGUo
KSkpICsgbV9pbm5lckJsb2NrLT5wYWRkaW5nTGVmdCgpICsgbV9pbm5lckJsb2NrLT5wYWRkaW5n
UmlnaHQoKTsKKyAgICBtYXhMb2dpY2FsV2lkdGggPSBzdGQ6Om1heChtX29wdGlvbnNXaWR0aCwg
dGhlbWUoKS5taW5pbXVtTWVudUxpc3RTaXplKCZzdHlsZSgpKSkgKyBtX2lubmVyQmxvY2stPnBh
ZGRpbmdMZWZ0KCkgKyBtX2lubmVyQmxvY2stPnBhZGRpbmdSaWdodCgpOwogICAgIGlmICghc3R5
bGUoKS53aWR0aCgpLmlzUGVyY2VudCgpKQogICAgICAgICBtaW5Mb2dpY2FsV2lkdGggPSBtYXhM
b2dpY2FsV2lkdGg7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTWV0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNwcApp
bmRleCAwMTA2ZmJkLi43MmViNmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTWV0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
ZXRlci5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBSZW5kZXJNZXRlcjo6dXBkYXRlTG9naWNh
bFdpZHRoKCkKIHsKICAgICBSZW5kZXJCb3g6OnVwZGF0ZUxvZ2ljYWxXaWR0aCgpOwogCi0gICAg
SW50U2l6ZSBmcmFtZVNpemUgPSB0aGVtZSgpLT5tZXRlclNpemVGb3JCb3VuZHModGhpcywgcGl4
ZWxTbmFwcGVkSW50UmVjdChmcmFtZVJlY3QoKSkpOworICAgIEludFNpemUgZnJhbWVTaXplID0g
dGhlbWUoKS5tZXRlclNpemVGb3JCb3VuZHModGhpcywgcGl4ZWxTbmFwcGVkSW50UmVjdChmcmFt
ZVJlY3QoKSkpOwogICAgIHNldExvZ2ljYWxXaWR0aChpc0hvcml6b250YWxXcml0aW5nTW9kZSgp
ID8gZnJhbWVTaXplLndpZHRoKCkgOiBmcmFtZVNpemUuaGVpZ2h0KCkpOwogfQogCkBAIC02Nyw3
ICs2Nyw3IEBAIHZvaWQgUmVuZGVyTWV0ZXI6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVu
aXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpCiAgICAgICAgIGZyYW1lLnNldEhlaWdo
dChjb21wdXRlZFZhbHVlcy5tX2V4dGVudCk7CiAgICAgZWxzZQogICAgICAgICBmcmFtZS5zZXRX
aWR0aChjb21wdXRlZFZhbHVlcy5tX2V4dGVudCk7Ci0gICAgSW50U2l6ZSBmcmFtZVNpemUgPSB0
aGVtZSgpLT5tZXRlclNpemVGb3JCb3VuZHModGhpcywgcGl4ZWxTbmFwcGVkSW50UmVjdChmcmFt
ZSkpOworICAgIEludFNpemUgZnJhbWVTaXplID0gdGhlbWUoKS5tZXRlclNpemVGb3JCb3VuZHMo
dGhpcywgcGl4ZWxTbmFwcGVkSW50UmVjdChmcmFtZSkpOwogICAgIGNvbXB1dGVkVmFsdWVzLm1f
ZXh0ZW50ID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGZyYW1lU2l6ZS5oZWlnaHQoKSA6
IGZyYW1lU2l6ZS53aWR0aCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCmluZGV4IDFkYTRjNTUuLmJlZjExMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xMzAsMTAgKzEzMCw5IEBAIFJlbmRlck9iamVjdDo6
flJlbmRlck9iamVjdCgpCiAgICAgdmlldygpLmRpZERlc3Ryb3lSZW5kZXJlcigpOwogfQogCi1S
ZW5kZXJUaGVtZSogUmVuZGVyT2JqZWN0Ojp0aGVtZSgpIGNvbnN0CitSZW5kZXJUaGVtZSYgUmVu
ZGVyT2JqZWN0Ojp0aGVtZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRvY3VtZW50KCkucGFnZSgp
KTsKLQogICAgIHJldHVybiBkb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUoKTsKIH0KIApAQCAtMTAx
Niw3ICsxMDE1LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnBhaW50T3V0bGluZShQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnRSZWMKICAgICBpbnQgb3V0bGluZU9m
ZnNldCA9IHN0eWxlVG9Vc2Uub3V0bGluZU9mZnNldCgpOwogCiAgICAgaWYgKHN0eWxlVG9Vc2Uu
b3V0bGluZVN0eWxlSXNBdXRvKCkgfHwgaGFzT3V0bGluZUFubm90YXRpb24oKSkgewotICAgICAg
ICBpZiAoIXRoZW1lKCktPnN1cHBvcnRzRm9jdXNSaW5nKCZzdHlsZVRvVXNlKSkgeworICAgICAg
ICBpZiAoIXRoZW1lKCkuc3VwcG9ydHNGb2N1c1JpbmcoJnN0eWxlVG9Vc2UpKSB7CiAgICAgICAg
ICAgICAvLyBPbmx5IHBhaW50IHRoZSBmb2N1cyByaW5nIGJ5IGhhbmQgaWYgdGhlIHRoZW1lIGlz
bid0IGFibGUgdG8gZHJhdyB0aGUgZm9jdXMgcmluZy4KICAgICAgICAgICAgIHBhaW50Rm9jdXNS
aW5nKHBhaW50SW5mbywgcGFpbnRSZWN0LmxvY2F0aW9uKCksICZzdHlsZVRvVXNlKTsKICAgICAg
ICAgfQpAQCAtMTQ1Niw3ICsxNDU1LDcgQEAgQ29sb3IgUmVuZGVyT2JqZWN0OjpzZWxlY3Rpb25C
YWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogICAgICAgICAgICAgaWYgKHBzZXVkb1N0eWxlICYmIHBz
ZXVkb1N0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IpLmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICBjb2xvciA9IHBzZXVkb1N0eWxlLT52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLmJsZW5kV2l0aFdo
aXRlKCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29sb3IgPSBmcmFtZSgp
LnNlbGVjdGlvbigpLmlzRm9jdXNlZEFuZEFjdGl2ZSgpID8gdGhlbWUoKS0+YWN0aXZlU2VsZWN0
aW9uQmFja2dyb3VuZENvbG9yKCkgOiB0aGVtZSgpLT5pbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91
bmRDb2xvcigpOworICAgICAgICAgICAgICAgIGNvbG9yID0gZnJhbWUoKS5zZWxlY3Rpb24oKS5p
c0ZvY3VzZWRBbmRBY3RpdmUoKSA/IHRoZW1lKCkuYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENv
bG9yKCkgOiB0aGVtZSgpLmluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCk7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTE0NzcsOSArMTQ3Niw5IEBAIENvbG9yIFJlbmRlck9iamVjdDo6
c2VsZWN0aW9uQ29sb3IoaW50IGNvbG9yUHJvcGVydHkpIGNvbnN0CiAgICAgICAgIGlmICghY29s
b3IuaXNWYWxpZCgpKQogICAgICAgICAgICAgY29sb3IgPSBwc2V1ZG9TdHlsZS0+dmlzaXRlZERl
cGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpOwogICAgIH0gZWxzZQotICAgICAgICBjb2xv
ciA9IGZyYW1lKCkuc2VsZWN0aW9uKCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkgPwotICAgICAgICAg
ICAgICAgIHRoZW1lKCktPmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIDoKLSAgICAg
ICAgICAgICAgICB0aGVtZSgpLT5pbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpOwor
ICAgICAgICBjb2xvciA9IGZyYW1lKCkuc2VsZWN0aW9uKCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkK
KyAgICAgICAgICAgID8gdGhlbWUoKS5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKQor
ICAgICAgICAgICAgOiB0aGVtZSgpLmluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCk7
CiAKICAgICByZXR1cm4gY29sb3I7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmgKaW5kZXggMjEyOTg4Mi4uMzAwZmZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaApAQCAtMTU5LDcgKzE1OSw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBS
ZW5kZXJPYmplY3QoTm9kZSYpOwogICAgIHZpcnR1YWwgflJlbmRlck9iamVjdCgpOwogCi0gICAg
UmVuZGVyVGhlbWUqIHRoZW1lKCkgY29uc3Q7CisgICAgUmVuZGVyVGhlbWUmIHRoZW1lKCkgY29u
c3Q7CiAKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCA9IDA7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3BwCmluZGV4IDM3ODlk
NzcuLmYzNGUwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQ
cm9ncmVzcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNz
LmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFJlbmRlclByb2dyZXNzOjpjb21wdXRlTG9naWNh
bEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbAogICAgICAgICBm
cmFtZS5zZXRIZWlnaHQoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQpOwogICAgIGVsc2UKICAgICAg
ICAgZnJhbWUuc2V0V2lkdGgoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQpOwotICAgIEludFNpemUg
ZnJhbWVTaXplID0gdGhlbWUoKS0+cHJvZ3Jlc3NCYXJSZWN0Rm9yQm91bmRzKHRoaXMsIHBpeGVs
U25hcHBlZEludFJlY3QoZnJhbWUpKS5zaXplKCk7CisgICAgSW50U2l6ZSBmcmFtZVNpemUgPSB0
aGVtZSgpLnByb2dyZXNzQmFyUmVjdEZvckJvdW5kcyh0aGlzLCBwaXhlbFNuYXBwZWRJbnRSZWN0
KGZyYW1lKSkuc2l6ZSgpOwogICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0gaXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSA/IGZyYW1lU2l6ZS5oZWlnaHQoKSA6IGZyYW1lU2l6ZS53aWR0aCgp
OwogfQogCkBAIC05Niw4ICs5Niw4IEBAIHZvaWQgUmVuZGVyUHJvZ3Jlc3M6OmFuaW1hdGlvblRp
bWVyRmlyZWQoVGltZXI8UmVuZGVyUHJvZ3Jlc3M+KikKIAogdm9pZCBSZW5kZXJQcm9ncmVzczo6
dXBkYXRlQW5pbWF0aW9uU3RhdGUoKQogewotICAgIG1fYW5pbWF0aW9uRHVyYXRpb24gPSB0aGVt
ZSgpLT5hbmltYXRpb25EdXJhdGlvbkZvclByb2dyZXNzQmFyKHRoaXMpOwotICAgIG1fYW5pbWF0
aW9uUmVwZWF0SW50ZXJ2YWwgPSB0aGVtZSgpLT5hbmltYXRpb25SZXBlYXRJbnRlcnZhbEZvclBy
b2dyZXNzQmFyKHRoaXMpOworICAgIG1fYW5pbWF0aW9uRHVyYXRpb24gPSB0aGVtZSgpLmFuaW1h
dGlvbkR1cmF0aW9uRm9yUHJvZ3Jlc3NCYXIodGhpcyk7CisgICAgbV9hbmltYXRpb25SZXBlYXRJ
bnRlcnZhbCA9IHRoZW1lKCkuYW5pbWF0aW9uUmVwZWF0SW50ZXJ2YWxGb3JQcm9ncmVzc0Jhcih0
aGlzKTsKIAogICAgIGJvb2wgYW5pbWF0aW5nID0gc3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkgJiYg
bV9hbmltYXRpb25EdXJhdGlvbiA+IDA7CiAgICAgaWYgKGFuaW1hdGluZyA9PSBtX2FuaW1hdGlu
ZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCmlu
ZGV4IDk2YzVkMjAuLmFjZTVmYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFJlbmRlclRleHRDb250
cm9sOjphZGp1c3RJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSwg
UmVuZAogCiAgICAgYm9vbCBkaXNhYmxlZCA9IHVwZGF0ZVVzZXJNb2RpZnlQcm9wZXJ0eSh0ZXh0
Rm9ybUNvbnRyb2xFbGVtZW50KCksIHRleHRCbG9ja1N0eWxlKTsKICAgICBpZiAoZGlzYWJsZWQp
Ci0gICAgICAgIHRleHRCbG9ja1N0eWxlLT5zZXRDb2xvcih0aGVtZSgpLT5kaXNhYmxlZFRleHRD
b2xvcih0ZXh0QmxvY2tTdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29s
b3IpLCBzdGFydFN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kQ29sb3IpKSk7CisgICAgICAgIHRleHRCbG9ja1N0eWxlLT5zZXRDb2xvcih0aGVtZSgpLmRp
c2FibGVkVGV4dENvbG9yKHRleHRCbG9ja1N0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlDb2xvciksIHN0YXJ0U3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDb2xvcikpKTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgaWYgKHRleHRC
bG9ja1N0eWxlLT50ZXh0U2VjdXJpdHkoKSAhPSBUU05PTkUgJiYgIXRleHRCbG9ja1N0eWxlLT5p
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpIHsKICAgICAgICAgLy8gUHJlc2VydmUgdGhlIGFsaWdu
bWVudCBidXQgZm9yY2UgdGhlIGRpcmVjdGlvbiB0byBMVFIgc28gdGhhdCB0aGUgbGFzdC10eXBl
ZCwgdW5tYXNrZWQgY2hhcmFjdGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCmluZGV4IDAzZDJjZTguLjRiMDli
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgUmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmCiAKICAgICAgICAgLy8gQ29udmVydCB0aGUgcmVjdCBpbnRvIHRoZSBjb29yZHMgdXNl
ZCBmb3IgcGFpbnRpbmcgdGhlIGNvbnRlbnQKICAgICAgICAgY29udGVudHNSZWN0Lm1vdmVCeShw
YWludE9mZnNldCArIGxvY2F0aW9uKCkpOwotICAgICAgICB0aGVtZSgpLT5wYWludENhcHNMb2Nr
SW5kaWNhdG9yKHRoaXMsIHBhaW50SW5mbywgcGl4ZWxTbmFwcGVkSW50UmVjdChjb250ZW50c1Jl
Y3QpKTsKKyAgICAgICAgdGhlbWUoKS5wYWludENhcHNMb2NrSW5kaWNhdG9yKHRoaXMsIHBhaW50
SW5mbywgcGl4ZWxTbmFwcGVkSW50UmVjdChjb250ZW50c1JlY3QpKTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCmluZGV4IGJlMmJjNGYuLmMzOWNjZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a192aWV3LmNwcApAQCAtMTM2Niw4ICsxMzY2LDggQEAgdm9pZCBld2tfdmll
d190aGVtZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHBhdGgpCiAgICAg
aWYgKCFlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnNldHRpbmdzLnRoZW1lLCBwYXRo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmwqIHRoZW1l
ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UmVuZGVyVGhlbWVFZmwqPihwcml2LT5wYWdlLT50aGVt
ZSgpKTsKLSAgICB0aGVtZS0+c2V0VGhlbWVQYXRoKHBhdGgpOworICAgIFdlYkNvcmU6OlJlbmRl
clRoZW1lRWZsJiB0aGVtZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsJj4o
cHJpdi0+cGFnZS0+dGhlbWUoKSk7CisgICAgdGhlbWUuc2V0VGhlbWVQYXRoKHBhdGgpOwogfQog
CiBjb25zdCBjaGFyKiBld2tfdmlld190aGVtZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1Zp
ZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IDA4Mzg0NzkuLmRiZTE1MjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YlZpZXcuY3BwCkBAIC0yMzgwLDcgKzIzODAsNyBAQCBMUkVTVUxUIENBTExCQUNLIFdlYlZpZXc6
OldlYlZpZXdXbmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLAog
ICAgICAgICBjYXNlIFdNX1hQX1RIRU1FQ0hBTkdFRDoKICAgICAgICAgICAgIGlmIChGcmFtZSog
Y29yZUZyYW1lID0gY29yZShtYWluRnJhbWVJbXBsKSkgewogICAgICAgICAgICAgICAgIHdlYlZp
ZXctPmRlbGV0ZUJhY2tpbmdTdG9yZSgpOwotICAgICAgICAgICAgICAgIGNvcmVGcmFtZS0+cGFn
ZSgpLT50aGVtZSgpLT50aGVtZUNoYW5nZWQoKTsKKyAgICAgICAgICAgICAgICBjb3JlRnJhbWUt
PnBhZ2UoKS0+dGhlbWUoKS50aGVtZUNoYW5nZWQoKTsKICAgICAgICAgICAgICAgICBTY3JvbGxi
YXJUaGVtZTo6dGhlbWUoKS0+dGhlbWVDaGFuZ2VkKCk7CiAgICAgICAgICAgICAgICAgUkVDVCB3
aW5kb3dSZWN0OwogICAgICAgICAgICAgICAgIDo6R2V0Q2xpZW50UmVjdChoV25kLCAmd2luZG93
UmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZs
L1dlYlBhZ2VFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9X
ZWJQYWdlRWZsLmNwcAppbmRleCBjOWU0ZGM1Li42NGJjZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAKQEAgLTE2OCw4
ICsxNjgsOCBAQCBjb25zdCBjaGFyKiBXZWJQYWdlOjppbnRlcnByZXRLZXlFdmVudChjb25zdCBL
ZXlib2FyZEV2ZW50KiBldmVudCkKIAogdm9pZCBXZWJQYWdlOjpzZXRUaGVtZVBhdGgoY29uc3Qg
U3RyaW5nJiB0aGVtZVBhdGgpCiB7Ci0gICAgV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmwqIHRoZW1l
ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UmVuZGVyVGhlbWVFZmwqPihtX3BhZ2UtPnRoZW1lKCkp
OwotICAgIHRoZW1lLT5zZXRUaGVtZVBhdGgodGhlbWVQYXRoKTsKKyAgICBXZWJDb3JlOjpSZW5k
ZXJUaGVtZUVmbCYgdGhlbWUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbCY+
KG1fcGFnZS0+dGhlbWUoKSk7CisgICAgdGhlbWUuc2V0VGhlbWVQYXRoKHRoZW1lUGF0aCk7CiB9
CiAKIHN0YXRpYyBGcmFtZSogdGFyZ2V0RnJhbWVGb3JFZGl0aW5nKFdlYlBhZ2UqIHBhZ2UpCg==
</data>
<flag name="commit-queue"
          id="242849"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219251</attachid>
            <date>2013-12-14 06:19:04 -0800</date>
            <delta_ts>2013-12-14 10:55:38 -0800</delta_ts>
            <desc>Land pls</desc>
            <filename>land-125737-2.diff</filename>
            <type>text/plain</type>
            <size>56709</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2MDJmNjQzLi4xMDMyMTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTUg
QEAKIDIwMTMtMTItMTQgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCisgICAg
ICAgIFBhZ2U6OnRoZW1lKCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZS4KKyAgICAgICAgPGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzEyNTczNz4KKworICAgICAgICBUaGVyZSdzIGFsd2F5cyBhIFJl
bmRlclRoZW1lLCBhbmQgbm90IGEgc2luZ2xlIGNhbGwgc2l0ZSB3YXMgY2hlY2tpbmcKKyAgICAg
ICAgZm9yIG51bGwgcG9pbnRlcnMgYW55d2F5LiBVcGRhdGVkIFJlbmRlck9iamVjdDo6dGhlbWUo
KSBhcyB3ZWxsLgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisyMDEz
LTEyLTE0ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KKwogICAgICAgICBSZW5k
ZXJFbGVtZW50OjpyZW5kZXJlckZvclJvb3RCYWNrZ3JvdW5kKCkgc2hvdWxkIHJldHVybiBhIHJl
ZmVyZW5jZS4KICAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEyNTczNT4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAK
aW5kZXggODI1ZDA5Ny4uZGQzZWU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC01ODUsNyArNTg1LDcgQEAgSW50
UmVjdCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpib3VuZGluZ0JveEZvclF1YWRzKFJlbmRlck9iamVj
dCogb2JqLCBjb25zdCBWZWN0b3IKICAgICAgICAgSW50UmVjdCByID0gcXVhZHNbaV0uZW5jbG9z
aW5nQm91bmRpbmdCb3goKTsKICAgICAgICAgaWYgKCFyLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgaWYgKG9iai0+c3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAgICAgICAgICAgb2Jq
LT50aGVtZSgpLT5hZGp1c3RSZXBhaW50UmVjdChvYmosIHIpOworICAgICAgICAgICAgICAgIG9i
ai0+dGhlbWUoKS5hZGp1c3RSZXBhaW50UmVjdChvYmosIHIpOwogICAgICAgICAgICAgcmVzdWx0
LnVuaXRlKHIpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRl
eCBhZTU5ZmQxLi4zZTY1MjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMTM4Miw3
ICsxMzgyLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlU3lzdGVtQ29sb3IoUkdCQTMyJiBjb2xv
ciwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIERvY3VtZW50KgogICAgIGlmIChpZCA8PSAwKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBjb2xvciA9IGRvY3VtZW50LT5wYWdlKCktPnRoZW1l
KCktPnN5c3RlbUNvbG9yKGlkKS5yZ2IoKTsKKyAgICBjb2xvciA9IGRvY3VtZW50LT5wYWdlKCkt
PnRoZW1lKCkuc3lzdGVtQ29sb3IoaWQpLnJnYigpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKaW5kZXggN2JkZjNjNi4uNWNmNGEzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcApAQCAtNTE1LDcgKzUxNSw3IEBAIHZvaWQgRWxlbWVudDo6c2V0QWN0aXZlKGJvb2wg
ZmxhZywgYm9vbCBwYXVzZSkKICAgICBpZiAocmVhY3RzVG9QcmVzcykKICAgICAgICAgc2V0TmVl
ZHNTdHlsZVJlY2FsYygpOwogCi0gICAgaWYgKHJlbmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFy
YW5jZSgpICYmIHJlbmRlcmVyKCktPnRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBQ
cmVzc2VkU3RhdGUpKQorICAgIGlmIChyZW5kZXJlcigpLT5zdHlsZSgpLmhhc0FwcGVhcmFuY2Uo
KSAmJiByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBQcmVzc2Vk
U3RhdGUpKQogICAgICAgICByZWFjdHNUb1ByZXNzID0gdHJ1ZTsKIAogICAgIC8vIFRoZSByZXN0
IG9mIHRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyBhIGZlYXR1cmUgdGhhdCBvbmx5IHdvcmtzIGlm
IHRoZQpAQCAtNTgxLDcgKzU4MSw3IEBAIHZvaWQgRWxlbWVudDo6c2V0SG92ZXJlZChib29sIGZs
YWcpCiAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIAogICAgIGlmIChyZW5kZXJlcigp
LT5zdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS0+
c3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIEhvdmVyU3RhdGUpOworICAgICAgICByZW5kZXJlcigp
LT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBIb3ZlclN0YXRlKTsKIH0KIAogdm9p
ZCBFbGVtZW50OjpzY3JvbGxJbnRvVmlldyhib29sIGFsaWduVG9Ub3ApIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCA1MTgxNjI1Li4xZjBlNTA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMTcwNSw3ICsxNzA1
LDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6Zm9jdXNlZE9yQWN0aXZlU3RhdGVDaGFuZ2VkKCkK
ICAgICAgICAgZWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAgICBpZiAoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBp
ZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAg
ICAgICAgICAgIHJlbmRlcmVyLT50aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIsIEZvY3Vz
U3RhdGUpOworICAgICAgICAgICAgICAgIHJlbmRlcmVyLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChy
ZW5kZXJlciwgRm9jdXNTdGF0ZSk7CiAgICAgfQogfQogCkBAIC0xNzU5LDcgKzE3NTksNyBAQCB2
b2lkIEZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBcHBlYXJhbmNlKCkKICAgICAvLyBTdGFydCBibGlu
a2luZyB3aXRoIGEgYmxhY2sgY2FyZXQuIEJlIHN1cmUgbm90IHRvIHJlc3RhcnQgaWYgd2UncmUK
ICAgICAvLyBhbHJlYWR5IGJsaW5raW5nIGluIHRoZSByaWdodCBsb2NhdGlvbi4KICAgICBpZiAo
c2hvdWxkQmxpbmsgJiYgIW1fY2FyZXRCbGlua1RpbWVyLmlzQWN0aXZlKCkpIHsKLSAgICAgICAg
aWYgKGRvdWJsZSBibGlua0ludGVydmFsID0gbV9mcmFtZS0+cGFnZSgpLT50aGVtZSgpLT5jYXJl
dEJsaW5rSW50ZXJ2YWwoKSkKKyAgICAgICAgaWYgKGRvdWJsZSBibGlua0ludGVydmFsID0gbV9m
cmFtZS0+cGFnZSgpLT50aGVtZSgpLmNhcmV0QmxpbmtJbnRlcnZhbCgpKQogICAgICAgICAgICAg
bV9jYXJldEJsaW5rVGltZXIuc3RhcnRSZXBlYXRpbmcoYmxpbmtJbnRlcnZhbCk7CiAKICAgICAg
ICAgaWYgKCFtX2NhcmV0UGFpbnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDVkZWQ5YzMuLjMyOTY2M2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtMTM3LDcgKzEzNyw3
IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvCiAgICAgICAgICAgICBzZXROZWVkc1dpbGxWYWxp
ZGF0ZUNoZWNrKCk7CiAgICAgICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgICAg
ICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLmhhc0FwcGVhcmFuY2Uo
KSkKLSAgICAgICAgICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVu
ZGVyZXIoKSwgUmVhZE9ubHlTdGF0ZSk7CisgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+dGhl
bWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgUmVhZE9ubHlTdGF0ZSk7CiAgICAgICAgIH0K
ICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gcmVxdWlyZWRBdHRyKSB7CiAgICAgICAgIGJvb2wgd2Fz
UmVxdWlyZWQgPSBtX2lzUmVxdWlyZWQ7CkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50OjpkaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQoKQogICAgIHNldE5lZWRz
V2lsbFZhbGlkYXRlQ2hlY2soKTsKICAgICBkaWRBZmZlY3RTZWxlY3RvcihBZmZlY3RlZFNlbGVj
dG9yRGlzYWJsZWQgfCBBZmZlY3RlZFNlbGVjdG9yRW5hYmxlZCk7CiAgICAgaWYgKHJlbmRlcmVy
KCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAgIHJlbmRl
cmVyKCktPnRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBFbmFibGVkU3RhdGUpOwor
ICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBFbmFi
bGVkU3RhdGUpOwogfQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlcXVpcmVkQXR0
cmlidXRlQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApp
bmRleCBiZWRkZmEwLi4zYTRkOTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAKQEAgLTg4Miw3ICs4ODIsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldENo
ZWNrZWQoYm9vbCBub3dDaGVja2VkLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50QgogICAg
IGlmIChDaGVja2VkUmFkaW9CdXR0b25zKiBidXR0b25zID0gY2hlY2tlZFJhZGlvQnV0dG9ucygp
KQogICAgICAgICAgICAgYnV0dG9ucy0+dXBkYXRlQ2hlY2tlZFN0YXRlKHRoaXMpOwogICAgIGlm
IChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQotICAg
ICAgICByZW5kZXJlcigpLT50aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgQ2hlY2tl
ZFN0YXRlKTsKKyAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVy
ZXIoKSwgQ2hlY2tlZFN0YXRlKTsKICAgICBzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKIAogICAg
IC8vIElkZWFsbHkgd2UnZCBkbyB0aGlzIGZyb20gdGhlIHJlbmRlciB0cmVlIChtYXRjaGluZwpA
QCAtOTE2LDcgKzkxNiw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0SW5kZXRlcm1pbmF0
ZShib29sIG5ld1ZhbHVlKQogICAgIGRpZEFmZmVjdFNlbGVjdG9yKEFmZmVjdGVkU2VsZWN0b3JJ
bmRldGVybWluYXRlKTsKIAogICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxl
KCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLT5zdGF0ZUNo
YW5nZWQocmVuZGVyZXIoKSwgQ2hlY2tlZFN0YXRlKTsKKyAgICAgICAgcmVuZGVyZXIoKS0+dGhl
bWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgQ2hlY2tlZFN0YXRlKTsKIH0KIAogaW50IEhU
TUxJbnB1dEVsZW1lbnQ6OnNpemUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVy
RWxlbWVudC5jcHAKaW5kZXggZmM2MWIyOS4uZGEwMWYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZXRlckVsZW1lbnQuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFBhc3NSZWZQdHI8SFRNTE1l
dGVyRWxlbWVudD4gSFRNTE1ldGVyRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hCiAKIFJlbmRlckVsZW1lbnQqIEhUTUxNZXRlckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVy
KFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogewotICAgIGlmIChoYXNBdXRob3JTaGFkb3dS
b290KCkgfHwgIWRvY3VtZW50KCkucGFnZSgpLT50aGVtZSgpLT5zdXBwb3J0c01ldGVyKHN0eWxl
LmdldCgpLmFwcGVhcmFuY2UoKSkpCisgICAgaWYgKGhhc0F1dGhvclNoYWRvd1Jvb3QoKSB8fCAh
ZG9jdW1lbnQoKS5wYWdlKCktPnRoZW1lKCkuc3VwcG9ydHNNZXRlcihzdHlsZS5nZXQoKS5hcHBl
YXJhbmNlKCkpKQogICAgICAgICByZXR1cm4gUmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKCp0aGlz
LCBzdGQ6Om1vdmUoc3R5bGUpKTsKIAogICAgIHJldHVybiBuZXcgUmVuZGVyTWV0ZXIoKnRoaXMs
IHN0ZDo6bW92ZShzdHlsZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T3B0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50
LmNwcAppbmRleCBmMmIzNjI0Li5mNTA0OWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
cHRpb25FbGVtZW50LmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgSFRNTE9wdGlvbkVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21p
Y1N0CiAgICAgICAgIGlmIChvbGREaXNhYmxlZCAhPSBtX2Rpc2FibGVkKSB7CiAgICAgICAgICAg
ICBkaWRBZmZlY3RTZWxlY3RvcihBZmZlY3RlZFNlbGVjdG9yRGlzYWJsZWQgfCBBZmZlY3RlZFNl
bGVjdG9yRW5hYmxlZCk7CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigp
LT5zdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAgICAgICAgICByZW5kZXJlcigpLT50
aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgRW5hYmxlZFN0YXRlKTsKKyAgICAgICAg
ICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBFbmFi
bGVkU3RhdGUpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChuYW1lID09IHNlbGVjdGVkQXR0
cikgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IG1hdGNoIHdoYXQgdGhlIEhUTUwg
c3BlY2lmaWNhdGlvbiBzYXlzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50
LmNwcAppbmRleCAyZjM0ODEwLi5iMDA3MDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
ZWxlY3RFbGVtZW50LmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1l
bnQ6Omxpc3RCb3hTZWxlY3RJdGVtKGludCBsaXN0SW5kZXgsIGJvb2wgYWxsb3dNdWx0aXBseVNl
bGVjCiBib29sIEhUTUxTZWxlY3RFbGVtZW50Ojp1c2VzTWVudUxpc3QoKSBjb25zdAogewogICAg
IGNvbnN0IFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKTsKLSAgICBSZWZQdHI8UmVuZGVy
VGhlbWU+IHJlbmRlclRoZW1lID0gcGFnZSA/IHBhZ2UtPnRoZW1lKCkgOiBSZW5kZXJUaGVtZTo6
ZGVmYXVsdFRoZW1lKCk7CisgICAgUmVmUHRyPFJlbmRlclRoZW1lPiByZW5kZXJUaGVtZSA9IHBh
Z2UgPyAmcGFnZS0+dGhlbWUoKSA6IFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKTsKICAgICBp
ZiAocmVuZGVyVGhlbWUtPmRlbGVnYXRlc01lbnVMaXN0UmVuZGVyaW5nKCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCkBAIC0xMDc4LDcgKzEwNzgsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50
OjpyZXNldCgpCiBib29sIEhUTUxTZWxlY3RFbGVtZW50OjpwbGF0Zm9ybUhhbmRsZUtleWRvd25F
dmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKIHsKICAgICBjb25zdCBQYWdlKiBwYWdlID0gZG9j
dW1lbnQoKS5wYWdlKCk7Ci0gICAgUmVmUHRyPFJlbmRlclRoZW1lPiByZW5kZXJUaGVtZSA9IHBh
Z2UgPyBwYWdlLT50aGVtZSgpIDogUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpOworICAgIFJl
ZlB0cjxSZW5kZXJUaGVtZT4gcmVuZGVyVGhlbWUgPSBwYWdlID8gJnBhZ2UtPnRoZW1lKCkgOiBS
ZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCk7CiAKICAgICBpZiAoIXJlbmRlclRoZW1lLT5wb3Bz
TWVudUJ5QXJyb3dLZXlzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExMTEsNyArMTEx
MSw3IEBAIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OnBsYXRmb3JtSGFuZGxlS2V5ZG93bkV2ZW50
KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6bWVudUxpc3RE
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAgICBjb25zdCBQYWdlKiBwYWdl
ID0gZG9jdW1lbnQoKS5wYWdlKCk7Ci0gICAgUmVmUHRyPFJlbmRlclRoZW1lPiByZW5kZXJUaGVt
ZSA9IHBhZ2UgPyBwYWdlLT50aGVtZSgpIDogUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpOwor
ICAgIFJlZlB0cjxSZW5kZXJUaGVtZT4gcmVuZGVyVGhlbWUgPSBwYWdlID8gJnBhZ2UtPnRoZW1l
KCkgOiBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCk7CiAKICAgICBpZiAoZXZlbnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50KSB7CiAgICAgICAgIGlmICghcmVuZGVyZXIo
KSB8fCAhZXZlbnQtPmlzS2V5Ym9hcmRFdmVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCA3YjRlYmJiLi4wNzBiNzU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50LmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIGJvb2wgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkgY29uc3QKICAgICAgICAgJiYgaXNFbXB0
eVZhbHVlKCkKICAgICAgICAgJiYgaXNFbXB0eVN1Z2dlc3RlZFZhbHVlKCkKICAgICAgICAgJiYg
IWlzUGxhY2Vob2xkZXJFbXB0eSgpCi0gICAgICAgICYmIChkb2N1bWVudCgpLmZvY3VzZWRFbGVt
ZW50KCkgIT0gdGhpcyB8fCAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT50aGVtZSgpLT5zaG91
bGRTaG93UGxhY2Vob2xkZXJXaGVuRm9jdXNlZCgpKSkKKyAgICAgICAgJiYgKGRvY3VtZW50KCku
Zm9jdXNlZEVsZW1lbnQoKSAhPSB0aGlzIHx8IChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnRo
ZW1lKCkuc2hvdWxkU2hvd1BsYWNlaG9sZGVyV2hlbkZvY3VzZWQoKSkpCiAgICAgICAgICYmICgh
cmVuZGVyZXIoKSB8fCByZW5kZXJlcigpLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxF
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDBjMGNlM2YuLjliZDM2NDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCBJbnB1dFR5
cGU6On5JbnB1dFR5cGUoKQogYm9vbCBJbnB1dFR5cGU6OnRoZW1lU3VwcG9ydHNEYXRhTGlzdFVJ
KElucHV0VHlwZSogdHlwZSkKIHsKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSB0eXBlLT5lbGVt
ZW50KCkuZG9jdW1lbnQoKTsKLSAgICBSZWZQdHI8UmVuZGVyVGhlbWU+IHRoZW1lID0gZG9jdW1l
bnQucGFnZSgpID8gZG9jdW1lbnQucGFnZSgpLT50aGVtZSgpIDogUmVuZGVyVGhlbWU6OmRlZmF1
bHRUaGVtZSgpOworICAgIFJlZlB0cjxSZW5kZXJUaGVtZT4gdGhlbWUgPSBkb2N1bWVudC5wYWdl
KCkgPyAmZG9jdW1lbnQucGFnZSgpLT50aGVtZSgpIDogUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVt
ZSgpOwogICAgIHJldHVybiB0aGVtZS0+c3VwcG9ydHNEYXRhTGlzdFVJKHR5cGUtPmZvcm1Db250
cm9sVHlwZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0Rmll
bGRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
Y3BwCmluZGV4IGEzMzVkZDguLjM4OTFmNjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuY3BwCkBAIC0yMTgsNyArMjE4LDcgQEAgYm9vbCBUZXh0RmllbGRJbnB1
dFR5cGU6Om5lZWRzQ29udGFpbmVyKCkgY29uc3QKIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjpz
aG91bGRIYXZlU3BpbkJ1dHRvbigpIGNvbnN0CiB7CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0g
ZWxlbWVudCgpLmRvY3VtZW50KCk7Ci0gICAgUmVmUHRyPFJlbmRlclRoZW1lPiB0aGVtZSA9IGRv
Y3VtZW50LnBhZ2UoKSA/IGRvY3VtZW50LnBhZ2UoKS0+dGhlbWUoKSA6IFJlbmRlclRoZW1lOjpk
ZWZhdWx0VGhlbWUoKTsKKyAgICBSZWZQdHI8UmVuZGVyVGhlbWU+IHRoZW1lID0gZG9jdW1lbnQu
cGFnZSgpID8gJmRvY3VtZW50LnBhZ2UoKS0+dGhlbWUoKSA6IFJlbmRlclRoZW1lOjpkZWZhdWx0
VGhlbWUoKTsKICAgICByZXR1cm4gdGhlbWUtPnNob3VsZEhhdmVTcGluQnV0dG9uKCZlbGVtZW50
KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xFbGVtZW50cy5jcHAKaW5kZXggOTZkZGViNS4uZDBlMjRiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcApAQCAtMTQyLDcg
KzE0Miw3IEBAIHZvaWQgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjpzdGFydFRpbWVyKCkKICAg
ICAvLyBUaGUgdGltZXIgaXMgcmVxdWlyZWQgdG8gc2V0IHRoZSBwcm9wZXJ0eSBkaXNwbGF5Oidu
b25lJyBvbiB0aGUgcGFuZWwsCiAgICAgLy8gc3VjaCB0aGF0IGNhcHRpb25zIGFyZSBjb3JyZWN0
bHkgZGlzcGxheWVkIGF0IHRoZSBib3R0b20gb2YgdGhlIHZpZGVvCiAgICAgLy8gYXQgdGhlIGVu
ZCBvZiB0aGUgZmFkZW91dCB0cmFuc2l0aW9uLgotICAgIGRvdWJsZSBkdXJhdGlvbiA9IGRvY3Vt
ZW50KCkucGFnZSgpID8gZG9jdW1lbnQoKS5wYWdlKCktPnRoZW1lKCktPm1lZGlhQ29udHJvbHNG
YWRlT3V0RHVyYXRpb24oKSA6IDA7CisgICAgZG91YmxlIGR1cmF0aW9uID0gZG9jdW1lbnQoKS5w
YWdlKCkgPyBkb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUoKS5tZWRpYUNvbnRyb2xzRmFkZU91dER1
cmF0aW9uKCkgOiAwOwogICAgIG1fdHJhbnNpdGlvblRpbWVyLnN0YXJ0T25lU2hvdChkdXJhdGlv
bik7CiB9CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVu
dDo6bWFrZU9wYXF1ZSgpCiAgICAgaWYgKG1fb3BhcXVlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBkb3VibGUgZHVyYXRpb24gPSBkb2N1bWVudCgpLnBhZ2UoKSA/IGRvY3VtZW50KCkucGFnZSgp
LT50aGVtZSgpLT5tZWRpYUNvbnRyb2xzRmFkZUluRHVyYXRpb24oKSA6IDA7CisgICAgZG91Ymxl
IGR1cmF0aW9uID0gZG9jdW1lbnQoKS5wYWdlKCkgPyBkb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUo
KS5tZWRpYUNvbnRyb2xzRmFkZUluRHVyYXRpb24oKSA6IDA7CiAKICAgICBzZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5LCBDU1NQcm9wZXJ0
eU9wYWNpdHkpOwogICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2l0aW9uRHVyYXRpb24sIGR1cmF0aW9uLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1MpOwpA
QCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjptYWtlVHJh
bnNwYXJlbnQoKQogICAgIGlmICghbV9vcGFxdWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGRv
dWJsZSBkdXJhdGlvbiA9IGRvY3VtZW50KCkucGFnZSgpID8gZG9jdW1lbnQoKS5wYWdlKCktPnRo
ZW1lKCktPm1lZGlhQ29udHJvbHNGYWRlT3V0RHVyYXRpb24oKSA6IDA7CisgICAgZG91YmxlIGR1
cmF0aW9uID0gZG9jdW1lbnQoKS5wYWdlKCkgPyBkb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUoKS5t
ZWRpYUNvbnRyb2xzRmFkZU91dER1cmF0aW9uKCkgOiAwOwogCiAgICAgc2V0SW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSwgQ1NTUHJvcGVydHlP
cGFjaXR5KTsKICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VHJh
bnNpdGlvbkR1cmF0aW9uLCBkdXJhdGlvbiwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAKaW5kZXggMjJjNGRm
ZS4uNjY4MWUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9scy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
cy5jcHAKQEAgLTkzLDEyICs5MywxMiBAQCB2b2lkIE1lZGlhQ29udHJvbHM6OnJlc2V0KCkKICAg
ICB1cGRhdGVDdXJyZW50VGltZURpc3BsYXkoKTsKIAogICAgIGRvdWJsZSBkdXJhdGlvbiA9IG1f
bWVkaWFDb250cm9sbGVyLT5kdXJhdGlvbigpOwotICAgIGlmIChzdGQ6OmlzZmluaXRlKGR1cmF0
aW9uKSB8fCBwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVk
aWFTbGlkZXJQYXJ0KSkgeworICAgIGlmIChzdGQ6OmlzZmluaXRlKGR1cmF0aW9uKSB8fCBwYWdl
LT50aGVtZSgpLmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVNsaWRlclBhcnQp
KSB7CiAgICAgICAgIG1fdGltZWxpbmUtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKICAgICAgICAg
bV90aW1lbGluZS0+c2V0UG9zaXRpb24obV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCkp
OwogICAgIH0KIAotICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+aGFzQXVkaW8oKSB8fCBwYWdl
LT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFNdXRlQnV0dG9u
UGFydCkpCisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5oYXNBdWRpbygpIHx8IHBhZ2UtPnRo
ZW1lKCkuaGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhTXV0ZUJ1dHRvblBhcnQp
KQogICAgICAgICBtX3BhbmVsTXV0ZUJ1dHRvbi0+c2hvdygpOwogICAgIGVsc2UKICAgICAgICAg
bV9wYW5lbE11dGVCdXR0b24tPmhpZGUoKTsKQEAgLTEzMCwxNSArMTMwLDE1IEBAIHZvaWQgTWVk
aWFDb250cm9sczo6cmVwb3J0ZWRFcnJvcigpCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoIXBhZ2UtPnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGlu
Z0ZvcihNZWRpYU11dGVCdXR0b25QYXJ0KSkgeworICAgIGlmICghcGFnZS0+dGhlbWUoKS5oYXNP
d25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFNdXRlQnV0dG9uUGFydCkpIHsKICAgICAg
ICAgbV9wYW5lbE11dGVCdXR0b24tPmhpZGUoKTsKICAgICAgICAgbV92b2x1bWVTbGlkZXItPmhp
ZGUoKTsKICAgICB9CiAKLSAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbiAmJiAh
cGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhVG9nZ2xl
Q2xvc2VkQ2FwdGlvbnNCdXR0b25QYXJ0KSkKKyAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9u
c0J1dHRvbiAmJiAhcGFnZS0+dGhlbWUoKS5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3Io
TWVkaWFUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvblBhcnQpKQogICAgICAgICBtX3RvZ2dsZUNs
b3NlZENhcHRpb25zQnV0dG9uLT5oaWRlKCk7CiAKLSAgICBpZiAobV9mdWxsU2NyZWVuQnV0dG9u
ICYmICFwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFF
bnRlckZ1bGxzY3JlZW5CdXR0b25QYXJ0KSkKKyAgICBpZiAobV9mdWxsU2NyZWVuQnV0dG9uICYm
ICFwYWdlLT50aGVtZSgpLmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYUVudGVy
RnVsbHNjcmVlbkJ1dHRvblBhcnQpKQogICAgICAgICBtX2Z1bGxTY3JlZW5CdXR0b24tPmhpZGUo
KTsKIH0KIApAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgTWVkaWFDb250cm9sczo6dXBkYXRlQ3Vy
cmVudFRpbWVEaXNwbGF5KCkKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fY3VycmVudFRpbWVEaXNwbGF5LT5zZXRJbm5lclRleHQocGFnZS0+dGhlbWUoKS0+Zm9ybWF0
TWVkaWFDb250cm9sc1RpbWUobm93KSwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgbV9jdXJyZW50
VGltZURpc3BsYXktPnNldElubmVyVGV4dChwYWdlLT50aGVtZSgpLmZvcm1hdE1lZGlhQ29udHJv
bHNUaW1lKG5vdyksIElHTk9SRV9FWENFUFRJT04pOwogICAgIG1fY3VycmVudFRpbWVEaXNwbGF5
LT5zZXRDdXJyZW50VmFsdWUobm93KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKaW5kZXggMzBlYTQ3OC4uYmMzZDI0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3Bw
CkBAIC04OSw3ICs4OSw3IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sc0FwcGxlPiBNZWRpYUNv
bnRyb2xzQXBwbGU6OmNyZWF0ZUNvbnRyb2xzKERvY3VtZW50JiBkb2N1CiAgICAgaWYgKGVjKQog
ICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChkb2N1bWVudC5wYWdlKCktPnRoZW1lKCktPnVz
ZXNNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5KCkpIHsKKyAgICBpZiAoZG9jdW1lbnQucGFnZSgp
LT50aGVtZSgpLnVzZXNNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5KCkpIHsKICAgICAgICAgUmVm
UHRyPE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50PiBzdGF0dXNEaXNwbGF5ID0gTWVk
aWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgICAg
IGNvbnRyb2xzLT5tX3N0YXR1c0Rpc3BsYXkgPSBzdGF0dXNEaXNwbGF5LmdldCgpOwogICAgICAg
ICBwYW5lbC0+YXBwZW5kQ2hpbGQoc3RhdHVzRGlzcGxheS5yZWxlYXNlKCksIGVjLCBBdHRhY2hM
YXppbHkpOwpAQCAtMTM2LDcgKzEzNiw3IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sc0FwcGxl
PiBNZWRpYUNvbnRyb2xzQXBwbGU6OmNyZWF0ZUNvbnRyb2xzKERvY3VtZW50JiBkb2N1CiAgICAg
aWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChkb2N1bWVudC5wYWdlKCktPnRo
ZW1lKCktPnN1cHBvcnRzQ2xvc2VkQ2FwdGlvbmluZygpKSB7CisgICAgaWYgKGRvY3VtZW50LnBh
Z2UoKS0+dGhlbWUoKS5zdXBwb3J0c0Nsb3NlZENhcHRpb25pbmcoKSkgewogICAgICAgICBSZWZQ
dHI8TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWluZXJFbGVtZW50PiBjbG9zZWRDYXB0
aW9uc0NvbnRhaW5lciA9IE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zQ29udGFpbmVyRWxlbWVu
dDo6Y3JlYXRlKGRvY3VtZW50KTsKIAogICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sQ2xvc2Vk
Q2FwdGlvbnNUcmFja0xpc3RFbGVtZW50PiBjbG9zZWRDYXB0aW9uc1RyYWNrTGlzdCA9IE1lZGlh
Q29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBj
b250cm9scy5nZXQoKSk7CkBAIC0xNjUsNyArMTY1LDcgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRy
b2xzQXBwbGU+IE1lZGlhQ29udHJvbHNBcHBsZTo6Y3JlYXRlQ29udHJvbHMoRG9jdW1lbnQmIGRv
Y3UKICAgICAvLyBUaGUgbXV0ZSBidXR0b24gYW5kIHRoZSBzbGlkZXIgZWxlbWVudCBzaG91bGQg
YmUgaW4gdGhlIHNhbWUgZGl2LgogICAgIFJlZlB0cjxIVE1MRGl2RWxlbWVudD4gcGFuZWxWb2x1
bWVDb250cm9sQ29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAK
LSAgICBpZiAoZG9jdW1lbnQucGFnZSgpLT50aGVtZSgpLT51c2VzTWVkaWFDb250cm9sVm9sdW1l
U2xpZGVyKCkpIHsKKyAgICBpZiAoZG9jdW1lbnQucGFnZSgpLT50aGVtZSgpLnVzZXNNZWRpYUNv
bnRyb2xWb2x1bWVTbGlkZXIoKSkgewogICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1l
U2xpZGVyQ29udGFpbmVyRWxlbWVudD4gdm9sdW1lU2xpZGVyQ29udGFpbmVyID0gTWVkaWFDb250
cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKIAogICAg
ICAgICBSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxWb2x1bWVTbGlkZXJFbGVtZW50PiBzbGlkZXIg
PSBNZWRpYUNvbnRyb2xQYW5lbFZvbHVtZVNsaWRlckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7
CkBAIC0zMTMsNyArMzEzLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQXBwbGU6OnJlc2V0KCkKICAg
ICAgICAgbV9mdWxsU2NyZWVuQnV0dG9uLT5oaWRlKCk7CiAKICAgICBkb3VibGUgZHVyYXRpb24g
PSBtX21lZGlhQ29udHJvbGxlci0+ZHVyYXRpb24oKTsKLSAgICBpZiAoc3RkOjppc2Zpbml0ZShk
dXJhdGlvbikgfHwgcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9y
KE1lZGlhU2xpZGVyUGFydCkpIHsKKyAgICBpZiAoc3RkOjppc2Zpbml0ZShkdXJhdGlvbikgfHwg
cGFnZS0+dGhlbWUoKS5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFTbGlkZXJQ
YXJ0KSkgewogICAgICAgICBtX3RpbWVsaW5lLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CiAgICAg
ICAgIG1fdGltZWxpbmVDb250YWluZXItPnNob3coKTsKICAgICAgICAgbV90aW1lbGluZS0+c2V0
UG9zaXRpb24obV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCkpOwpAQCAtMzIxLDcgKzMy
MSw3IEBAIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpyZXNldCgpCiAgICAgfSBlbHNlCiAgICAg
ICAgIG1fdGltZWxpbmVDb250YWluZXItPmhpZGUoKTsKIAotICAgIGlmIChtX21lZGlhQ29udHJv
bGxlci0+aGFzQXVkaW8oKSB8fCBwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFu
ZGxpbmdGb3IoTWVkaWFNdXRlQnV0dG9uUGFydCkpCisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVy
LT5oYXNBdWRpbygpIHx8IHBhZ2UtPnRoZW1lKCkuaGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5n
Rm9yKE1lZGlhTXV0ZUJ1dHRvblBhcnQpKQogICAgICAgICBtX3BhbmVsTXV0ZUJ1dHRvbi0+c2hv
dygpOwogICAgIGVsc2UKICAgICAgICAgbV9wYW5lbE11dGVCdXR0b24tPmhpZGUoKTsKQEAgLTM3
OCw5ICszNzgsOSBAQCB2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6dXBkYXRlQ3VycmVudFRpbWVE
aXNwbGF5KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gQWxsb3cgdGhlIHRoZW1lIHRvIGZv
cm1hdCB0aGUgdGltZS4KLSAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0SW5uZXJUZXh0KHBh
Z2UtPnRoZW1lKCktPmZvcm1hdE1lZGlhQ29udHJvbHNDdXJyZW50VGltZShub3csIGR1cmF0aW9u
KSwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgbV9jdXJyZW50VGltZURpc3BsYXktPnNldElubmVy
VGV4dChwYWdlLT50aGVtZSgpLmZvcm1hdE1lZGlhQ29udHJvbHNDdXJyZW50VGltZShub3csIGR1
cmF0aW9uKSwgSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgbV9jdXJyZW50VGltZURpc3BsYXktPnNl
dEN1cnJlbnRWYWx1ZShub3cpOwotICAgIG1fdGltZVJlbWFpbmluZ0Rpc3BsYXktPnNldElubmVy
VGV4dChwYWdlLT50aGVtZSgpLT5mb3JtYXRNZWRpYUNvbnRyb2xzUmVtYWluaW5nVGltZShub3cs
IGR1cmF0aW9uKSwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgbV90aW1lUmVtYWluaW5nRGlzcGxh
eS0+c2V0SW5uZXJUZXh0KHBhZ2UtPnRoZW1lKCkuZm9ybWF0TWVkaWFDb250cm9sc1JlbWFpbmlu
Z1RpbWUobm93LCBkdXJhdGlvbiksIElHTk9SRV9FWENFUFRJT04pOwogICAgIG1fdGltZVJlbWFp
bmluZ0Rpc3BsYXktPnNldEN1cnJlbnRWYWx1ZShub3cgLSBkdXJhdGlvbik7CiB9CiAKQEAgLTM5
MCwxNyArMzkwLDE3IEBAIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpyZXBvcnRlZEVycm9yKCkK
ICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghcGFnZS0+dGhlbWUo
KS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhU2xpZGVyUGFydCkpCisgICAg
aWYgKCFwYWdlLT50aGVtZSgpLmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVNs
aWRlclBhcnQpKQogICAgICAgICBtX3RpbWVsaW5lQ29udGFpbmVyLT5oaWRlKCk7CiAKLSAgICBp
ZiAoIXBhZ2UtPnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYU11
dGVCdXR0b25QYXJ0KSkKKyAgICBpZiAoIXBhZ2UtPnRoZW1lKCkuaGFzT3duRGlzYWJsZWRTdGF0
ZUhhbmRsaW5nRm9yKE1lZGlhTXV0ZUJ1dHRvblBhcnQpKQogICAgICAgICBtX3BhbmVsTXV0ZUJ1
dHRvbi0+aGlkZSgpOwogCiAgICAgbV9mdWxsU2NyZWVuQnV0dG9uLT5oaWRlKCk7CiAKICAgICBp
ZiAobV92b2x1bWVTbGlkZXJDb250YWluZXIpCiAgICAgICAgIG1fdm9sdW1lU2xpZGVyQ29udGFp
bmVyLT5oaWRlKCk7Ci0gICAgaWYgKG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24gJiYgIXBh
Z2UtPnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVRvZ2dsZUNs
b3NlZENhcHRpb25zQnV0dG9uUGFydCkpCisgICAgaWYgKG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNC
dXR0b24gJiYgIXBhZ2UtPnRoZW1lKCkuaGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1l
ZGlhVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25QYXJ0KSkKICAgICAgICAgbV90b2dnbGVDbG9z
ZWRDYXB0aW9uc0J1dHRvbi0+aGlkZSgpOwogICAgIGlmIChtX2Nsb3NlZENhcHRpb25zQ29udGFp
bmVyKQogICAgICAgICBoaWRlQ2xvc2VkQ2FwdGlvblRyYWNrTGlzdCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0d0ay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzR3RrLmNwcAppbmRleCA1YzFjZDg2Li5k
NjVkMjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xz
R3RrLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIGJvb2wgTWVkaWFDb250cm9sc0d0azo6aW5pdGlh
bGl6ZUNvbnRyb2xzKERvY3VtZW50JiBkb2N1bWVudCkKICAgICBpZiAoZXhjZXB0aW9uQ29kZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGRvY3VtZW50LnBhZ2UoKS0+dGhlbWUo
KS0+c3VwcG9ydHNDbG9zZWRDYXB0aW9uaW5nKCkpIHsKKyAgICBpZiAoZG9jdW1lbnQucGFnZSgp
LT50aGVtZSgpLnN1cHBvcnRzQ2xvc2VkQ2FwdGlvbmluZygpKSB7CiAgICAgICAgIFJlZlB0cjxN
ZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0NvbnRhaW5lckVsZW1lbnQ+IGNsb3NlZENhcHRpb25z
Q29udGFpbmVyID0gTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWluZXJFbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQpOwogCiAgICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xDbG9zZWRDYXB0
aW9uc1RyYWNrTGlzdEVsZW1lbnQ+IGNsb3NlZENhcHRpb25zVHJhY2tMaXN0ID0gTWVkaWFDb250
cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIHRoaXMp
OwpAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgTWVkaWFDb250cm9sc0d0azo6cmVzZXQoKQogICAg
ICAgICByZXR1cm47CiAKICAgICBkb3VibGUgZHVyYXRpb24gPSBtX21lZGlhQ29udHJvbGxlci0+
ZHVyYXRpb24oKTsKLSAgICBtX2R1cmF0aW9uRGlzcGxheS0+c2V0SW5uZXJUZXh0KHBhZ2UtPnRo
ZW1lKCktPmZvcm1hdE1lZGlhQ29udHJvbHNUaW1lKGR1cmF0aW9uKSwgQVNTRVJUX05PX0VYQ0VQ
VElPTik7CisgICAgbV9kdXJhdGlvbkRpc3BsYXktPnNldElubmVyVGV4dChwYWdlLT50aGVtZSgp
LmZvcm1hdE1lZGlhQ29udHJvbHNUaW1lKGR1cmF0aW9uKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7
CiAgICAgbV9kdXJhdGlvbkRpc3BsYXktPnNldEN1cnJlbnRWYWx1ZShkdXJhdGlvbik7CiAKICAg
ICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbikgewpAQCAtMjM4LDcgKzIzOCw3IEBA
IHZvaWQgTWVkaWFDb250cm9sc0d0azo6dXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KCkKIAogICAg
IC8vIEFsbG93IHRoZSB0aGVtZSB0byBmb3JtYXQgdGhlIHRpbWUuCiAgICAgRXhjZXB0aW9uQ29k
ZSBleGNlcHRpb25Db2RlOwotICAgIG1fY3VycmVudFRpbWVEaXNwbGF5LT5zZXRJbm5lclRleHQo
cGFnZS0+dGhlbWUoKS0+Zm9ybWF0TWVkaWFDb250cm9sc0N1cnJlbnRUaW1lKG5vdywgZHVyYXRp
b24pLCBleGNlcHRpb25Db2RlKTsKKyAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0SW5uZXJU
ZXh0KHBhZ2UtPnRoZW1lKCkuZm9ybWF0TWVkaWFDb250cm9sc0N1cnJlbnRUaW1lKG5vdywgZHVy
YXRpb24pLCBleGNlcHRpb25Db2RlKTsKICAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0Q3Vy
cmVudFZhbHVlKG5vdyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZXRlclNoYWRvd0VsZW1lbnQuY3BwCmluZGV4IDJkNzVmYzUuLjBkMGY0MGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcApAQCAtNTcs
NyArNTcsNyBAQCBIVE1MTWV0ZXJFbGVtZW50KiBNZXRlclNoYWRvd0VsZW1lbnQ6Om1ldGVyRWxl
bWVudCgpIGNvbnN0CiBib29sIE1ldGVyU2hhZG93RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7CiAgICAgYXV0byByZW5kZXIgPSBtZXRlckVsZW1l
bnQoKS0+cmVuZGVyZXIoKTsKLSAgICByZXR1cm4gcmVuZGVyICYmICFyZW5kZXItPnRoZW1lKCkt
PnN1cHBvcnRzTWV0ZXIocmVuZGVyLT5zdHlsZSgpLmFwcGVhcmFuY2UoKSkgJiYgSFRNTERpdkVs
ZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgIHJldHVybiByZW5kZXIgJiYgIXJl
bmRlci0+dGhlbWUoKS5zdXBwb3J0c01ldGVyKHJlbmRlci0+c3R5bGUoKS5hcHBlYXJhbmNlKCkp
ICYmIEhUTUxEaXZFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsKIH0KIAogTWV0ZXJJ
bm5lckVsZW1lbnQ6Ok1ldGVySW5uZXJFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTcz
LDcgKzczLDcgQEAgYm9vbCBNZXRlcklubmVyRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgICAgIHJldHVybiBIVE1MRGl2RWxlbWVudDo6cmVu
ZGVyZXJJc05lZWRlZChzdHlsZSk7CiAKICAgICBhdXRvIHJlbmRlciA9IG1ldGVyRWxlbWVudCgp
LT5yZW5kZXJlcigpOwotICAgIHJldHVybiByZW5kZXIgJiYgIXJlbmRlci0+dGhlbWUoKS0+c3Vw
cG9ydHNNZXRlcihyZW5kZXItPnN0eWxlKCkuYXBwZWFyYW5jZSgpKSAmJiBIVE1MRGl2RWxlbWVu
dDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CisgICAgcmV0dXJuIHJlbmRlciAmJiAhcmVuZGVy
LT50aGVtZSgpLnN1cHBvcnRzTWV0ZXIocmVuZGVyLT5zdHlsZSgpLmFwcGVhcmFuY2UoKSkgJiYg
SFRNTERpdkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOwogfQogCiBSZW5kZXJFbGVt
ZW50KiBNZXRlcklubmVyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHls
ZT4gc3R5bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJU
aHVtYkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJF
bGVtZW50LmNwcAppbmRleCBhYWM4OWMyLi5iNmI4Mjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAg
aW5saW5lIHN0YXRpYyBib29sIGhhc1ZlcnRpY2FsQXBwZWFyYW5jZShIVE1MSW5wdXRFbGVtZW50
KiBpbnB1dCkKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc2xpZGVyU3R5bGUgPSBpbnB1dC0+cmVu
ZGVyZXIoKS0+c3R5bGUoKTsKIAogI2lmIEVOQUJMRShWSURFTykKLSAgICBpZiAoc2xpZGVyU3R5
bGUuYXBwZWFyYW5jZSgpID09IE1lZGlhVm9sdW1lU2xpZGVyUGFydCAmJiBpbnB1dC0+cmVuZGVy
ZXIoKS0+dGhlbWUoKS0+dXNlc1ZlcnRpY2FsVm9sdW1lU2xpZGVyKCkpCisgICAgaWYgKHNsaWRl
clN0eWxlLmFwcGVhcmFuY2UoKSA9PSBNZWRpYVZvbHVtZVNsaWRlclBhcnQgJiYgaW5wdXQtPnJl
bmRlcmVyKCktPnRoZW1lKCkudXNlc1ZlcnRpY2FsVm9sdW1lU2xpZGVyKCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogI2VuZGlmCiAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBSZW5kZXJTbGlkZXJU
aHVtYjo6dXBkYXRlQXBwZWFyYW5jZShSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpCiAgICAgZWxz
ZSBpZiAocGFyZW50U3R5bGUtPmFwcGVhcmFuY2UoKSA9PSBNZWRpYUZ1bGxTY3JlZW5Wb2x1bWVT
bGlkZXJQYXJ0KQogICAgICAgICBzdHlsZSgpLnNldEFwcGVhcmFuY2UoTWVkaWFGdWxsU2NyZWVu
Vm9sdW1lU2xpZGVyVGh1bWJQYXJ0KTsKICAgICBpZiAoc3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkp
Ci0gICAgICAgIHRoZW1lKCktPmFkanVzdFNsaWRlclRodW1iU2l6ZSgmc3R5bGUoKSwgZWxlbWVu
dCgpKTsKKyAgICAgICAgdGhlbWUoKS5hZGp1c3RTbGlkZXJUaHVtYlNpemUoJnN0eWxlKCksIGVs
ZW1lbnQoKSk7CiB9CiAKIGJvb2wgUmVuZGVyU2xpZGVyVGh1bWI6OmlzU2xpZGVyVGh1bWIoKSBj
b25zdApAQCAtMTIyLDEyICsxMjIsMTIgQEAgdm9pZCBSZW5kZXJTbGlkZXJDb250YWluZXI6OmNv
bXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3UKIAogI2lm
IEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIGlmIChpbnB1dC0+cmVuZGVyZXIoKS0+aXNT
bGlkZXIoKSAmJiAhaXNWZXJ0aWNhbCAmJiBpbnB1dC0+bGlzdCgpKSB7Ci0gICAgICAgIGludCBv
ZmZzZXRGcm9tQ2VudGVyID0gdGhlbWUoKS0+c2xpZGVyVGlja09mZnNldEZyb21UcmFja0NlbnRl
cigpOworICAgICAgICBpbnQgb2Zmc2V0RnJvbUNlbnRlciA9IHRoZW1lKCkuc2xpZGVyVGlja09m
ZnNldEZyb21UcmFja0NlbnRlcigpOwogICAgICAgICBMYXlvdXRVbml0IHRyYWNrSGVpZ2h0ID0g
MDsKICAgICAgICAgaWYgKG9mZnNldEZyb21DZW50ZXIgPCAwKQogICAgICAgICAgICAgdHJhY2tI
ZWlnaHQgPSAtMiAqIG9mZnNldEZyb21DZW50ZXI7CiAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgaW50IHRpY2tMZW5ndGggPSB0aGVtZSgpLT5zbGlkZXJUaWNrU2l6ZSgpLmhlaWdodCgpOwor
ICAgICAgICAgICAgaW50IHRpY2tMZW5ndGggPSB0aGVtZSgpLnNsaWRlclRpY2tTaXplKCkuaGVp
Z2h0KCk7CiAgICAgICAgICAgICB0cmFja0hlaWdodCA9IDIgKiAob2Zmc2V0RnJvbUNlbnRlciAr
IHRpY2tMZW5ndGgpOwogICAgICAgICB9CiAgICAgICAgIGZsb2F0IHpvb21GYWN0b3IgPSBzdHls
ZSgpLmVmZmVjdGl2ZVpvb20oKTsKQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIFNsaWRlclRodW1i
RWxlbWVudDo6c2V0UG9zaXRpb25Gcm9tUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIGFic29sdXRl
UG9pbnQpCiAgICAgRGVjaW1hbCB2YWx1ZSA9IHN0ZXBSYW5nZS5jbGFtcFZhbHVlKHN0ZXBSYW5n
ZS52YWx1ZUZyb21Qcm9wb3J0aW9uKGZyYWN0aW9uKSk7CiAKICNpZiBFTkFCTEUoREFUQUxJU1Rf
RUxFTUVOVCkKLSAgICBjb25zdCBMYXlvdXRVbml0IHNuYXBwaW5nVGhyZXNob2xkID0gcmVuZGVy
ZXIoKS0+dGhlbWUoKS0+c2xpZGVyVGlja1NuYXBwaW5nVGhyZXNob2xkKCk7CisgICAgY29uc3Qg
TGF5b3V0VW5pdCBzbmFwcGluZ1RocmVzaG9sZCA9IHJlbmRlcmVyKCktPnRoZW1lKCkuc2xpZGVy
VGlja1NuYXBwaW5nVGhyZXNob2xkKCk7CiAgICAgaWYgKHNuYXBwaW5nVGhyZXNob2xkID4gMCkg
ewogICAgICAgICBEZWNpbWFsIGNsb3Nlc3QgPSBpbnB1dC0+ZmluZENsb3Nlc3RUaWNrTWFya1Zh
bHVlKHZhbHVlKTsKICAgICAgICAgaWYgKGNsb3Nlc3QuaXNGaW5pdGUoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCmluZGV4IDQ4MjFlMTAuLmEyODE5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKQEAgLTM0MDQsNyArMzQwNCw3IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVD
b250cm9sVGludHMoKQogICAgICAgICByZXR1cm47CiAKICAgICBSZW5kZXJWaWV3KiByZW5kZXJW
aWV3ID0gdGhpcy0+cmVuZGVyVmlldygpOwotICAgIGlmICgocmVuZGVyVmlldyAmJiByZW5kZXJW
aWV3LT50aGVtZSgpLT5zdXBwb3J0c0NvbnRyb2xUaW50cygpKSB8fCBoYXNDdXN0b21TY3JvbGxi
YXJzKCkpCisgICAgaWYgKChyZW5kZXJWaWV3ICYmIHJlbmRlclZpZXctPnRoZW1lKCkuc3VwcG9y
dHNDb250cm9sVGludHMoKSkgfHwgaGFzQ3VzdG9tU2Nyb2xsYmFycygpKQogICAgICAgICBwYWlu
dENvbnRyb2xUaW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IDVmZjhlMjcuLmU2MDFkMDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oCkBAIC0xNDEsNyArMTQxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBz
ZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMoKTsKIAotICAgIFJlbmRlclRoZW1lKiB0aGVt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGhlbWUuZ2V0KCk7IH0KKyAgICBSZW5kZXJUaGVtZSYgdGhl
bWUoKSBjb25zdCB7IHJldHVybiAqbV90aGVtZTsgfQogCiAgICAgVmlld3BvcnRBcmd1bWVudHMg
dmlld3BvcnRBcmd1bWVudHMoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKaW5kZXggMGQ4MDQxNy4uNTA5M2M1MyAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCkBAIC03OTgsNyAr
Nzk4LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmpl
Y3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpbmYKIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFk
anVzdENoZWNrYm94U3R5bGUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5
bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewogICAgIGlmICghbV9wYWdlICYm
IGVsZW1lbnQgJiYgZWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdlKCkpIHsKLSAgICAgICAgc3RhdGlj
X2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihlbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUo
KSktPmFkanVzdENoZWNrYm94U3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGVsZW1lbnQpOwor
ICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCY+KGVsZW1lbnQtPmRvY3VtZW50KCku
cGFnZSgpLT50aGVtZSgpKS5hZGp1c3RDaGVja2JveFN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxl
LCBlbGVtZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODIxLDcgKzgyMSw3IEBA
IGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50Q2hlY2tib3goUmVuZGVyT2JqZWN0KiBvYmplY3Qs
IGNvbnN0IFBhaW50SW5mbyYgaW5mbywKIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFJhZGlv
U3R5bGUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBF
bGVtZW50KiBlbGVtZW50KSBjb25zdAogewogICAgIGlmICghbV9wYWdlICYmIGVsZW1lbnQgJiYg
ZWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdlKCkpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVy
VGhlbWVFZmwqPihlbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdFJh
ZGlvU3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGVsZW1lbnQpOworICAgICAgICBzdGF0aWNf
Y2FzdDxSZW5kZXJUaGVtZUVmbCY+KGVsZW1lbnQtPmRvY3VtZW50KCkucGFnZSgpLT50aGVtZSgp
KS5hZGp1c3RSYWRpb1N0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlbGVtZW50KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtODQ0LDcgKzg0NCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVF
Zmw6OnBhaW50UmFkaW8oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5m
bywgY29uCiB2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RCdXR0b25TdHlsZShTdHlsZVJlc29s
dmVyKiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX3BhZ2UgJiYgZWxlbWVudCAmJiBlbGVtZW50LT5kb2N1bWVu
dCgpLnBhZ2UoKSkgewotICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGVsZW1l
bnQtPmRvY3VtZW50KCkucGFnZSgpLT50aGVtZSgpKS0+YWRqdXN0QnV0dG9uU3R5bGUoc3R5bGVS
ZXNvbHZlciwgc3R5bGUsIGVsZW1lbnQpOworICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVt
ZUVmbCY+KGVsZW1lbnQtPmRvY3VtZW50KCkucGFnZSgpLT50aGVtZSgpKS5hZGp1c3RCdXR0b25T
dHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZWxlbWVudCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTg2MSw3ICs4NjEsNyBAQCBib29sIFJlbmRlclRoZW1lRWZsOjpwYWludEJ1dHRv
bihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjbwogdm9pZCBS
ZW5kZXJUaGVtZUVmbDo6YWRqdXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVyKiBzdHlsZVJl
c29sdmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX3BhZ2UgJiYgZWxlbWVudCAmJiBlbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKSkg
ewotICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGVsZW1lbnQtPmRvY3VtZW50
KCkucGFnZSgpLT50aGVtZSgpKS0+YWRqdXN0TWVudUxpc3RTdHlsZShzdHlsZVJlc29sdmVyLCBz
dHlsZSwgZWxlbWVudCk7CisgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsJj4oZWxl
bWVudC0+ZG9jdW1lbnQoKS5wYWdlKCktPnRoZW1lKCkpLmFkanVzdE1lbnVMaXN0U3R5bGUoc3R5
bGVSZXNvbHZlciwgc3R5bGUsIGVsZW1lbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IGFkanVzdFNpemVDb25zdHJhaW50cyhzdHlsZSwgQ29tYm9Cb3gpOwpAQCAtOTAwLDcgKzkwMCw3
IEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhS
ZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QKIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFRl
eHRGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBz
dHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFnZSAmJiBlbGVt
ZW50ICYmIGVsZW1lbnQtPmRvY3VtZW50KCkucGFnZSgpKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0
PFJlbmRlclRoZW1lRWZsKj4oZWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdlKCktPnRoZW1lKCkpLT5h
ZGp1c3RUZXh0RmllbGRTdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZWxlbWVudCk7CisgICAg
ICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsJj4oZWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdl
KCktPnRoZW1lKCkpLmFkanVzdFRleHRGaWVsZFN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBl
bGVtZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhZGp1c3RTaXplQ29uc3RyYWlu
dHMoc3R5bGUsIFRleHRGaWVsZCk7CkBAIC05MjQsNyArOTI0LDcgQEAgYm9vbCBSZW5kZXJUaGVt
ZUVmbDo6cGFpbnRUZXh0QXJlYShSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZv
JiBpbmZvLAogdm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0
dG9uU3R5bGUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUqIHN0eWxl
LCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewogICAgIGlmICghbV9wYWdlICYmIGVsZW1lbnQg
JiYgZWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdlKCkpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8UmVu
ZGVyVGhlbWVFZmwqPihlbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUoKSktPmFkanVz
dFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlbGVt
ZW50KTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwmPihlbGVtZW50LT5kb2N1
bWVudCgpLnBhZ2UoKS0+dGhlbWUoKSkuYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5
bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGVsZW1lbnQpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIGFkanVzdFNpemVDb25zdHJhaW50cyhzdHlsZSwgU2VhcmNoRmllbGRSZXN1bHRzQnV0
dG9uKTsKQEAgLTk0Niw3ICs5NDYsNyBAQCBib29sIFJlbmRlclRoZW1lRWZsOjpwYWludFNlYXJj
aEZpZWxkUmVzdWx0c0J1dHRvbihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUAogdm9pZCBS
ZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnRTdHls
ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1l
bnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3BhZ2UgJiYgZWxlbWVudCAmJiBlbGVt
ZW50LT5kb2N1bWVudCgpLnBhZ2UoKSkgewotICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVt
ZUVmbCo+KGVsZW1lbnQtPmRvY3VtZW50KCkucGFnZSgpLT50aGVtZSgpKS0+YWRqdXN0U2VhcmNo
RmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnRTdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZWxl
bWVudCk7CisgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsJj4oZWxlbWVudC0+ZG9j
dW1lbnQoKS5wYWdlKCktPnRoZW1lKCkpLmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRp
b25QYXJ0U3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGVsZW1lbnQpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIGFkanVzdFNpemVDb25zdHJhaW50cyhzdHlsZSwgU2VhcmNoRmllbGRS
ZXN1bHRzRGVjb3JhdGlvbik7CkBAIC05NjgsNyArOTY4LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUVm
bDo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydChSZW5kZXJPYmplY3QqIG9i
amVjdCwKIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9u
U3R5bGUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBF
bGVtZW50KiBlbGVtZW50KSBjb25zdAogewogICAgIGlmICghbV9wYWdlICYmIGVsZW1lbnQgJiYg
ZWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdlKCkpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVy
VGhlbWVFZmwqPihlbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdFNl
YXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGVsZW1lbnQp
OworICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCY+KGVsZW1lbnQtPmRvY3VtZW50
KCkucGFnZSgpLT50aGVtZSgpKS5hZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKHN0
eWxlUmVzb2x2ZXIsIHN0eWxlLCBlbGVtZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBhZGp1c3RTaXplQ29uc3RyYWludHMoc3R5bGUsIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKTsK
QEAgLTk5Miw3ICs5OTIsNyBAQCBib29sIFJlbmRlclRoZW1lRWZsOjpwYWludFNlYXJjaEZpZWxk
Q2FuY2VsQnV0dG9uKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYQogdm9pZCBSZW5kZXJU
aGVtZUVmbDo6YWRqdXN0U2VhcmNoRmllbGRTdHlsZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29s
dmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX3BhZ2UgJiYgZWxlbWVudCAmJiBlbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKSkgewot
ICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGVsZW1lbnQtPmRvY3VtZW50KCku
cGFnZSgpLT50aGVtZSgpKS0+YWRqdXN0U2VhcmNoRmllbGRTdHlsZShzdHlsZVJlc29sdmVyLCBz
dHlsZSwgZWxlbWVudCk7CisgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsJj4oZWxl
bWVudC0+ZG9jdW1lbnQoKS5wYWdlKCktPnRoZW1lKCkpLmFkanVzdFNlYXJjaEZpZWxkU3R5bGUo
c3R5bGVSZXNvbHZlciwgc3R5bGUsIGVsZW1lbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIGFkanVzdFNpemVDb25zdHJhaW50cyhzdHlsZSwgU2VhcmNoRmllbGQpOwpAQCAtMTAwOCw3
ICsxMDA4LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRTZWFyY2hGaWVsZChSZW5kZXJP
YmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpbmYKIHZvaWQgUmVuZGVyVGhlbWVFZmw6
OmFkanVzdElubmVyU3BpbkJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIs
IFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKICAgICBpZiAo
IW1fcGFnZSAmJiBlbGVtZW50ICYmIGVsZW1lbnQtPmRvY3VtZW50KCkucGFnZSgpKSB7Ci0gICAg
ICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsKj4oZWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdl
KCktPnRoZW1lKCkpLT5hZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZShzdHlsZVJlc29sdmVyLCBz
dHlsZSwgZWxlbWVudCk7CisgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsJj4oZWxl
bWVudC0+ZG9jdW1lbnQoKS5wYWdlKCktPnRoZW1lKCkpLmFkanVzdElubmVyU3BpbkJ1dHRvblN0
eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlbGVtZW50KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBhZGp1c3RTaXplQ29uc3RyYWludHMoc3R5bGUsIFNwaW5uZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJhckVmbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyRWZsLmNwcAppbmRleCBkODMzNjcyLi4xZmE4
MjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyRWZs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyRWZsLmNwcApA
QCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgU2Nyb2xsYmFyRWZsOjpzZXRQYXJlbnQoU2Nyb2xsVmll
dyogdmlldykKICAgICBpZiAoIWZyYW1lLnBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
U3RyaW5nIHRoZW1lID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihmcmFtZS5wYWdlKCkt
PnRoZW1lKCkpLT50aGVtZVBhdGgoKTsKKyAgICBTdHJpbmcgdGhlbWUgPSBzdGF0aWNfY2FzdDxS
ZW5kZXJUaGVtZUVmbCY+KGZyYW1lLnBhZ2UoKS0+dGhlbWUoKSkudGhlbWVQYXRoKCk7CiAKICAg
ICBjb25zdCBjaGFyKiBncm91cCA9IChvcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxi
YXIpID8gInNjcm9sbGJhci5ob3Jpem9udGFsIiA6ICJzY3JvbGxiYXIudmVydGljYWwiOwogICAg
IGlmICh0aGVtZS5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmNwcAppbmRleCBkMTA2MGViLi4yMjUxMjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0xMjg0LDkgKzEyODQsNyBAQCB2b2lkIElubGlu
ZVRleHRCb3g6OnBhaW50VGV4dE1hdGNoTWFya2VyKEdyYXBoaWNzQ29udGV4dCogcHQsIGNvbnN0
IEZsb2F0UG9pbnQmCiAgICAgCiAgICAgLy8gT3B0aW9uYWxseSBoaWdobGlnaHQgdGhlIHRleHQK
ICAgICBpZiAocmVuZGVyZXIoKS5mcmFtZSgpLmVkaXRvcigpLm1hcmtlZFRleHRNYXRjaGVzQXJl
SGlnaGxpZ2h0ZWQoKSkgewotICAgICAgICBDb2xvciBjb2xvciA9IG1hcmtlci0+YWN0aXZlTWF0
Y2goKSA/Ci0gICAgICAgICAgICByZW5kZXJlcigpLnRoZW1lKCktPnBsYXRmb3JtQWN0aXZlVGV4
dFNlYXJjaEhpZ2hsaWdodENvbG9yKCkgOgotICAgICAgICAgICAgcmVuZGVyZXIoKS50aGVtZSgp
LT5wbGF0Zm9ybUluYWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCk7CisgICAgICAgIENv
bG9yIGNvbG9yID0gbWFya2VyLT5hY3RpdmVNYXRjaCgpID8gcmVuZGVyZXIoKS50aGVtZSgpLnBs
YXRmb3JtQWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCkgOiByZW5kZXJlcigpLnRoZW1l
KCkucGxhdGZvcm1JbmFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpOwogICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnB0KTsKICAgICAgICAgdXBkYXRl
R3JhcGhpY3NDb250ZXh0KCpwdCwgVGV4dFBhaW50U3R5bGUoY29sb3IsIHN0eWxlLmNvbG9yU3Bh
Y2UoKSkpOyAvLyBEb24ndCBkcmF3IHRleHQgYXQgYWxsIQogICAgICAgICBwdC0+Y2xpcChGbG9h
dFJlY3QoYm94T3JpZ2luLngoKSwgYm94T3JpZ2luLnkoKSAtIGRlbHRhWSwgbV9sb2dpY2FsV2lk
dGgsIHNlbEhlaWdodCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAK
aW5kZXggMWVkNWM5YS4uMDgyYjVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwCkBAIC0xNzExLDcgKzE3MTEsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjphZGRWaXN1
YWxPdmVyZmxvd0Zyb21UaGVtZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIEludFJlY3QgaW5m
bGF0ZWRSZWN0ID0gcGl4ZWxTbmFwcGVkQm9yZGVyQm94UmVjdCgpOwotICAgIHRoZW1lKCktPmFk
anVzdFJlcGFpbnRSZWN0KHRoaXMsIGluZmxhdGVkUmVjdCk7CisgICAgdGhlbWUoKS5hZGp1c3RS
ZXBhaW50UmVjdCh0aGlzLCBpbmZsYXRlZFJlY3QpOwogICAgIGFkZFZpc3VhbE92ZXJmbG93KGlu
ZmxhdGVkUmVjdCk7CiAKICAgICBpZiAoUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IGZs
b3dUaHJlYWRDb250YWluaW5nQmxvY2soKSkKQEAgLTQ3MTIsOCArNDcxMiw4IEBAIGludCBSZW5k
ZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29s
IGZpcnN0TGluZSwgTGluCiAgICAgICAgIC8vIEZJWE1FOiBNaWdodCBiZSBiZXR0ZXIgdG8gaGF2
ZSBhIGN1c3RvbSBDU1MgcHJvcGVydHkgaW5zdGVhZCwgc28gdGhhdCBpZiB0aGUgdGhlbWUKICAg
ICAgICAgLy8gaXMgdHVybmVkIG9mZiwgY2hlY2tib3hlcy9yYWRpb3Mgd2lsbCBzdGlsbCBoYXZl
IGRlY2VudCBiYXNlbGluZXMuCiAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIHBhdGNoIGZvcm0g
Y29udHJvbHMgdG8gZGVhbCB3aXRoIHZlcnRpY2FsIGxpbmVzLgotICAgICAgICBpZiAoc3R5bGUo
KS5oYXNBcHBlYXJhbmNlKCkgJiYgIXRoZW1lKCktPmlzQ29udHJvbENvbnRhaW5lcihzdHlsZSgp
LmFwcGVhcmFuY2UoKSkpCi0gICAgICAgICAgICByZXR1cm4gdGhlbWUoKS0+YmFzZWxpbmVQb3Np
dGlvbih0aGlzKTsKKyAgICAgICAgaWYgKHN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpICYmICF0aGVt
ZSgpLmlzQ29udHJvbENvbnRhaW5lcihzdHlsZSgpLmFwcGVhcmFuY2UoKSkpCisgICAgICAgICAg
ICByZXR1cm4gdGhlbWUoKS5iYXNlbGluZVBvc2l0aW9uKHRoaXMpOwogICAgICAgICAgICAgCiAg
ICAgICAgIC8vIENTUzIuMSBzdGF0ZXMgdGhhdCB0aGUgYmFzZWxpbmUgb2YgYW4gaW5saW5lIGJs
b2NrIGlzIHRoZSBiYXNlbGluZSBvZiB0aGUgbGFzdCBsaW5lIGJveCBpbgogICAgICAgICAvLyB0
aGUgbm9ybWFsIGZsb3cuICBXZSBtYWtlIGFuIGV4Y2VwdGlvbiBmb3IgbWFycXVlZXMsIHNpbmNl
IHRoZWlyIGJhc2VsaW5lcyBhcmUgbWVhbmluZ2xlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAKaW5kZXggODk0NGQ3My4uODQ2NDJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAKQEAgLTEyMDQsNyArMTIwNCw3IEBAIHZvaWQgUmVuZGVyQm94Ojpw
YWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpCiAgICAgLy8gSWYgd2UgaGF2ZSBhIG5hdGl2ZSB0aGVtZSBhcHBlYXJhbmNlLCBwYWlu
dCB0aGF0IGJlZm9yZSBwYWludGluZyBvdXIgYmFja2dyb3VuZC4KICAgICAvLyBUaGUgdGhlbWUg
d2lsbCB0ZWxsIHVzIHdoZXRoZXIgb3Igbm90IHdlIHNob3VsZCBhbHNvIHBhaW50IHRoZSBDU1Mg
YmFja2dyb3VuZC4KICAgICBJbnRSZWN0IHNuYXBwZWRQYWludFJlY3QocGl4ZWxTbmFwcGVkSW50
UmVjdChwYWludFJlY3QpKTsKLSAgICBib29sIHRoZW1lUGFpbnRlZCA9IHN0eWxlKCkuaGFzQXBw
ZWFyYW5jZSgpICYmICF0aGVtZSgpLT5wYWludCh0aGlzLCBwYWludEluZm8sIHNuYXBwZWRQYWlu
dFJlY3QpOworICAgIGJvb2wgdGhlbWVQYWludGVkID0gc3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkg
JiYgIXRoZW1lKCkucGFpbnQodGhpcywgcGFpbnRJbmZvLCBzbmFwcGVkUGFpbnRSZWN0KTsKICAg
ICBpZiAoIXRoZW1lUGFpbnRlZCkgewogICAgICAgICBpZiAoYmxlZWRBdm9pZGFuY2UgPT0gQmFj
a2dyb3VuZEJsZWVkQmFja2dyb3VuZE92ZXJCb3JkZXIpCiAgICAgICAgICAgICBwYWludEJvcmRl
cihwYWludEluZm8sIHBhaW50UmVjdCwgJnN0eWxlKCksIGJsZWVkQXZvaWRhbmNlKTsKQEAgLTEy
MTIsMTIgKzEyMTIsMTIgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWkKICAgICAgICAgcGFpbnRC
YWNrZ3JvdW5kKHBhaW50SW5mbywgcGFpbnRSZWN0LCBibGVlZEF2b2lkYW5jZSk7CiAKICAgICAg
ICAgaWYgKHN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgdGhlbWUoKS0+cGFp
bnREZWNvcmF0aW9ucyh0aGlzLCBwYWludEluZm8sIHNuYXBwZWRQYWludFJlY3QpOworICAgICAg
ICAgICAgdGhlbWUoKS5wYWludERlY29yYXRpb25zKHRoaXMsIHBhaW50SW5mbywgc25hcHBlZFBh
aW50UmVjdCk7CiAgICAgfQogICAgIHBhaW50Qm94U2hhZG93KHBhaW50SW5mbywgcGFpbnRSZWN0
LCAmc3R5bGUoKSwgSW5zZXQpOwogCiAgICAgLy8gVGhlIHRoZW1lIHdpbGwgdGVsbCB1cyB3aGV0
aGVyIG9yIG5vdCB3ZSBzaG91bGQgYWxzbyBwYWludCB0aGUgQ1NTIGJvcmRlci4KLSAgICBpZiAo
YmxlZWRBdm9pZGFuY2UgIT0gQmFja2dyb3VuZEJsZWVkQmFja2dyb3VuZE92ZXJCb3JkZXIgJiYg
KCFzdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSB8fCAoIXRoZW1lUGFpbnRlZCAmJiB0aGVtZSgpLT5w
YWludEJvcmRlck9ubHkodGhpcywgcGFpbnRJbmZvLCBzbmFwcGVkUGFpbnRSZWN0KSkpICYmIHN0
eWxlKCkuaGFzQm9yZGVyKCkpCisgICAgaWYgKGJsZWVkQXZvaWRhbmNlICE9IEJhY2tncm91bmRC
bGVlZEJhY2tncm91bmRPdmVyQm9yZGVyICYmICghc3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkgfHwg
KCF0aGVtZVBhaW50ZWQgJiYgdGhlbWUoKS5wYWludEJvcmRlck9ubHkodGhpcywgcGFpbnRJbmZv
LCBzbmFwcGVkUGFpbnRSZWN0KSkpICYmIHN0eWxlKCkuaGFzQm9yZGVyKCkpCiAgICAgICAgIHBh
aW50Qm9yZGVyKHBhaW50SW5mbywgcGFpbnRSZWN0LCAmc3R5bGUoKSwgYmxlZWRBdm9pZGFuY2Up
OwogCiAgICAgaWYgKGJsZWVkQXZvaWRhbmNlID09IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFy
ZW5jeUxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1
dHRvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcAppbmRl
eCBkZjMxYzI2Li44ZDNlMWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQnV0dG9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0
dG9uLmNwcApAQCAtMTEyLDEyICsxMTIsMTIgQEAgdm9pZCBSZW5kZXJCdXR0b246OnN0eWxlRGlk
Q2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3QKICAg
ICBpZiAobV9pbm5lcikgLy8gUmVuZGVyQmxvY2sgaGFuZGxlZCB1cGRhdGluZyB0aGUgYW5vbnlt
b3VzIGJsb2NrJ3Mgc3R5bGUuCiAgICAgICAgIHNldHVwSW5uZXJTdHlsZSgmbV9pbm5lci0+c3R5
bGUoKSk7CiAKLSAgICBpZiAoIW1fZGVmYXVsdCAmJiB0aGVtZSgpLT5pc0RlZmF1bHQodGhpcykp
IHsKKyAgICBpZiAoIW1fZGVmYXVsdCAmJiB0aGVtZSgpLmlzRGVmYXVsdCh0aGlzKSkgewogICAg
ICAgICBpZiAoIW1fdGltZXIpCiAgICAgICAgICAgICBtX3RpbWVyID0gYWRvcHRQdHIobmV3IFRp
bWVyPFJlbmRlckJ1dHRvbj4odGhpcywgJlJlbmRlckJ1dHRvbjo6dGltZXJGaXJlZCkpOwogICAg
ICAgICBtX3RpbWVyLT5zdGFydFJlcGVhdGluZygwLjAzKTsKICAgICAgICAgbV9kZWZhdWx0ID0g
dHJ1ZTsKLSAgICB9IGVsc2UgaWYgKG1fZGVmYXVsdCAmJiAhdGhlbWUoKS0+aXNEZWZhdWx0KHRo
aXMpKSB7CisgICAgfSBlbHNlIGlmIChtX2RlZmF1bHQgJiYgIXRoZW1lKCkuaXNEZWZhdWx0KHRo
aXMpKSB7CiAgICAgICAgIG1fZGVmYXVsdCA9IGZhbHNlOwogICAgICAgICBtX3RpbWVyLmNsZWFy
KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZp
bGVVcGxvYWRDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxl
VXBsb2FkQ29udHJvbC5jcHAKaW5kZXggMjA3ZGYyNS4uNDdlNDcwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCkBAIC0y
MTEsNyArMjExLDcgQEAgdm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6Y29tcHV0ZUludHJp
bnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWMKICAgICBSZW5kZXJGaWxlVXBs
b2FkQ29udHJvbCogcmVuZGVyZXIgPSBjb25zdF9jYXN0PFJlbmRlckZpbGVVcGxvYWRDb250cm9s
Kj4odGhpcyk7CiAgICAgZmxvYXQgbWluRGVmYXVsdExhYmVsV2lkdGggPSBkZWZhdWx0V2lkdGhO
dW1DaGFycyAqIGZvbnQud2lkdGgoY29uc3RydWN0VGV4dFJ1bihyZW5kZXJlciwgZm9udCwgY2hh
cmFjdGVyQXNTdHJpbmcsIHN0eWxlKCksIFRleHRSdW46OkFsbG93VHJhaWxpbmdFeHBhbnNpb24p
KTsKIAotICAgIGNvbnN0IFN0cmluZyBsYWJlbCA9IHRoZW1lKCktPmZpbGVMaXN0RGVmYXVsdExh
YmVsKGlucHV0RWxlbWVudCgpLm11bHRpcGxlKCkpOworICAgIGNvbnN0IFN0cmluZyBsYWJlbCA9
IHRoZW1lKCkuZmlsZUxpc3REZWZhdWx0TGFiZWwoaW5wdXRFbGVtZW50KCkubXVsdGlwbGUoKSk7
CiAgICAgZmxvYXQgZGVmYXVsdExhYmVsV2lkdGggPSBmb250LndpZHRoKGNvbnN0cnVjdFRleHRS
dW4ocmVuZGVyZXIsIGZvbnQsIGxhYmVsLCBzdHlsZSgpLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5n
RXhwYW5zaW9uKSk7CiAgICAgaWYgKEhUTUxJbnB1dEVsZW1lbnQqIGJ1dHRvbiA9IHVwbG9hZEJ1
dHRvbigpKQogICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBidXR0b25SZW5kZXJlciA9IGJ1dHRv
bi0+cmVuZGVyZXIoKSkKQEAgLTI3OCw3ICsyNzgsNyBAQCBTdHJpbmcgUmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2w6OmZpbGVUZXh0VmFsdWUoKSBjb25zdAogICAgIGlmIChpbnB1dEVsZW1lbnQoKS5m
aWxlcygpLT5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZ1RydW5jYXRvcjo6cmlnaHRU
cnVuY2F0ZShpbnB1dEVsZW1lbnQoKS5kaXNwbGF5U3RyaW5nKCksIG1heEZpbGVuYW1lV2lkdGgo
KSwgc3R5bGUoKS5mb250KCksIFN0cmluZ1RydW5jYXRvcjo6RW5hYmxlUm91bmRpbmdIYWNrcyk7
CiAjZW5kaWYKLSAgICByZXR1cm4gdGhlbWUoKS0+ZmlsZUxpc3ROYW1lRm9yV2lkdGgoaW5wdXRF
bGVtZW50KCkuZmlsZXMoKSwgc3R5bGUoKS5mb250KCksIG1heEZpbGVuYW1lV2lkdGgoKSwgaW5w
dXRFbGVtZW50KCkubXVsdGlwbGUoKSk7CisgICAgcmV0dXJuIHRoZW1lKCkuZmlsZUxpc3ROYW1l
Rm9yV2lkdGgoaW5wdXRFbGVtZW50KCkuZmlsZXMoKSwgc3R5bGUoKS5mb250KCksIG1heEZpbGVu
YW1lV2lkdGgoKSwgaW5wdXRFbGVtZW50KCkubXVsdGlwbGUoKSk7CiB9CiAgICAgCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1Ro
cmVhZC5jcHAKaW5kZXggOTE1MWE2NS4uNzFhZTE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcApAQCAtMTM1NSw3ICsxMzU1LDcgQEAgdm9pZCBS
ZW5kZXJGbG93VGhyZWFkOjphZGRSZWdpb25zVmlzdWFsT3ZlcmZsb3dGcm9tVGhlbWUoY29uc3Qg
UmVuZGVyQmxvY2sqIGJsb2MKICAgICAgICAgYm9yZGVyQm94ID0gcmVnaW9uLT5yZWN0Rmxvd1Bv
cnRpb25Gb3JCb3goYmxvY2ssIGJvcmRlckJveCk7CiAKICAgICAgICAgSW50UmVjdCBpbmZsYXRl
ZFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGJvcmRlckJveCk7Ci0gICAgICAgIGJsb2NrLT50
aGVtZSgpLT5hZGp1c3RSZXBhaW50UmVjdChibG9jaywgaW5mbGF0ZWRSZWN0KTsKKyAgICAgICAg
YmxvY2stPnRoZW1lKCkuYWRqdXN0UmVwYWludFJlY3QoYmxvY2ssIGluZmxhdGVkUmVjdCk7CiAK
ICAgICAgICAgcmVnaW9uLT5hZGRWaXN1YWxPdmVyZmxvd0ZvckJveChibG9jaywgaW5mbGF0ZWRS
ZWN0KTsKICAgICAgICAgaWYgKHJlZ2lvbiA9PSBlbmRSZWdpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IDY2OTUxZTcuLjQ2OTg2Y2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC0xNDYxLDcgKzE0NjEsNyBA
QCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogICAgIAogICAgIFJlbmRlclN0eWxlJiBzdHlsZVRv
VXNlID0gc3R5bGUoKTsKICAgICBpZiAoc3R5bGVUb1VzZS5vdXRsaW5lU3R5bGVJc0F1dG8oKSB8
fCBoYXNPdXRsaW5lQW5ub3RhdGlvbigpKSB7Ci0gICAgICAgIGlmICghdGhlbWUoKS0+c3VwcG9y
dHNGb2N1c1JpbmcoJnN0eWxlVG9Vc2UpKSB7CisgICAgICAgIGlmICghdGhlbWUoKS5zdXBwb3J0
c0ZvY3VzUmluZygmc3R5bGVUb1VzZSkpIHsKICAgICAgICAgICAgIC8vIE9ubHkgcGFpbnQgdGhl
IGZvY3VzIHJpbmcgYnkgaGFuZCBpZiB0aGUgdGhlbWUgaXNuJ3QgYWJsZSB0byBkcmF3IHRoZSBm
b2N1cyByaW5nLgogICAgICAgICAgICAgcGFpbnRGb2N1c1JpbmcocGFpbnRJbmZvLCBwYWludE9m
ZnNldCwgJnN0eWxlVG9Vc2UpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5jcHAKaW5kZXggMmY4OWQ0MC4uODViMDA1OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtMzk5LDEwICszOTksMTAgQEAgdm9p
ZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYKICAgICBDb2xvciB0ZXh0Q29sb3IgPSBsaXN0SXRlbUVsZW1l
bnQtPnJlbmRlclN0eWxlKCkgPyBsaXN0SXRlbUVsZW1lbnQtPnJlbmRlclN0eWxlKCktPnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSA6IHN0eWxlKCkudmlzaXRlZERlcGVu
ZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpOwogICAgIGlmIChpc09wdGlvbkVsZW1lbnQgJiYg
dG9IVE1MT3B0aW9uRWxlbWVudChsaXN0SXRlbUVsZW1lbnQpLT5zZWxlY3RlZCgpKSB7CiAgICAg
ICAgIGlmIChmcmFtZSgpLnNlbGVjdGlvbigpLmlzRm9jdXNlZEFuZEFjdGl2ZSgpICYmIGRvY3Vt
ZW50KCkuZm9jdXNlZEVsZW1lbnQoKSA9PSAmc2VsZWN0RWxlbWVudCgpKQotICAgICAgICAgICAg
dGV4dENvbG9yID0gdGhlbWUoKS0+YWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xv
cigpOworICAgICAgICAgICAgdGV4dENvbG9yID0gdGhlbWUoKS5hY3RpdmVMaXN0Qm94U2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yKCk7CiAgICAgICAgIC8vIEhvbm9yIHRoZSBmb3JlZ3JvdW5kIGNv
bG9yIGZvciBkaXNhYmxlZCBpdGVtcwogICAgICAgICBlbHNlIGlmICghbGlzdEl0ZW1FbGVtZW50
LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSAmJiAhc2VsZWN0RWxlbWVudCgpLmlzRGlzYWJsZWRG
b3JtQ29udHJvbCgpKQotICAgICAgICAgICAgdGV4dENvbG9yID0gdGhlbWUoKS0+aW5hY3RpdmVM
aXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCk7CisgICAgICAgICAgICB0ZXh0Q29sb3Ig
PSB0aGVtZSgpLmluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpOwogICAg
IH0KIAogICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IGl0ZW1TdHlsZS0+Y29sb3JTcGFjZSgp
OwpAQCAtNDMyLDkgKzQzMiw5IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtQmFja2dy
b3VuZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgQ29sb3Ig
YmFja0NvbG9yOwogICAgIGlmIChpc0hUTUxPcHRpb25FbGVtZW50KGxpc3RJdGVtRWxlbWVudCkg
JiYgdG9IVE1MT3B0aW9uRWxlbWVudChsaXN0SXRlbUVsZW1lbnQpLT5zZWxlY3RlZCgpKSB7CiAg
ICAgICAgIGlmIChmcmFtZSgpLnNlbGVjdGlvbigpLmlzRm9jdXNlZEFuZEFjdGl2ZSgpICYmIGRv
Y3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKSA9PSAmc2VsZWN0RWxlbWVudCgpKQotICAgICAgICAg
ICAgYmFja0NvbG9yID0gdGhlbWUoKS0+YWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRD
b2xvcigpOworICAgICAgICAgICAgYmFja0NvbG9yID0gdGhlbWUoKS5hY3RpdmVMaXN0Qm94U2Vs
ZWN0aW9uQmFja2dyb3VuZENvbG9yKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJhY2tD
b2xvciA9IHRoZW1lKCktPmluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigp
OworICAgICAgICAgICAgYmFja0NvbG9yID0gdGhlbWUoKS5pbmFjdGl2ZUxpc3RCb3hTZWxlY3Rp
b25CYWNrZ3JvdW5kQ29sb3IoKTsKICAgICB9IGVsc2UKICAgICAgICAgYmFja0NvbG9yID0gbGlz
dEl0ZW1FbGVtZW50LT5yZW5kZXJTdHlsZSgpID8gbGlzdEl0ZW1FbGVtZW50LT5yZW5kZXJTdHls
ZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpIDog
c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3Ip
OwogCkBAIC04MDcsNyArODA3LDcgQEAgUGFzc1JlZlB0cjxTY3JvbGxiYXI+IFJlbmRlckxpc3RC
b3g6OmNyZWF0ZVNjcm9sbGJhcigpCiAgICAgaWYgKGhhc0N1c3RvbVNjcm9sbGJhclN0eWxlKQog
ICAgICAgICB3aWRnZXQgPSBSZW5kZXJTY3JvbGxiYXI6OmNyZWF0ZUN1c3RvbVNjcm9sbGJhcih0
aGlzLCBWZXJ0aWNhbFNjcm9sbGJhciwgJnNlbGVjdEVsZW1lbnQoKSk7CiAgICAgZWxzZSB7Ci0g
ICAgICAgIHdpZGdldCA9IFNjcm9sbGJhcjo6Y3JlYXRlTmF0aXZlU2Nyb2xsYmFyKHRoaXMsIFZl
cnRpY2FsU2Nyb2xsYmFyLCB0aGVtZSgpLT5zY3JvbGxiYXJDb250cm9sU2l6ZUZvclBhcnQoTGlz
dGJveFBhcnQpKTsKKyAgICAgICAgd2lkZ2V0ID0gU2Nyb2xsYmFyOjpjcmVhdGVOYXRpdmVTY3Jv
bGxiYXIodGhpcywgVmVydGljYWxTY3JvbGxiYXIsIHRoZW1lKCkuc2Nyb2xsYmFyQ29udHJvbFNp
emVGb3JQYXJ0KExpc3Rib3hQYXJ0KSk7CiAgICAgICAgIGRpZEFkZFNjcm9sbGJhcih3aWRnZXQu
Z2V0KCksIFZlcnRpY2FsU2Nyb2xsYmFyKTsKICAgICB9CiAgICAgdmlldygpLmZyYW1lVmlldygp
LmFkZENoaWxkKHdpZGdldC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAppbmRleCA5MTYzMDhhLi43ZGU5
ODJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRp
YUNvbnRyb2xFbGVtZW50cy5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBSZW5kZXJNZWRpYVZv
bHVtZVNsaWRlckNvbnRhaW5lcjo6bGF5b3V0KCkKIAogICAgIC8vIElmIHRoZSBzbGlkZXIgd291
bGQgYmUgcmVuZGVyZWQgb3V0c2lkZSB0aGUgcGFnZSwgaXQgc2hvdWxkIGJlIG1vdmVkIGJlbG93
IHRoZSBjb250cm9scy4KICAgICBpZiAoVU5MSUtFTFkoYWJzb2x1dGVPZmZzZXRUb3AgPCAwKSkK
LSAgICAgICAgc2V0WShidXR0b25Cb3gtPm9mZnNldFRvcCgpICsgdGhlbWUoKS0+dm9sdW1lU2xp
ZGVyT2Zmc2V0RnJvbU11dGVCdXR0b24oYnV0dG9uQm94LCBwaXhlbFNuYXBwZWRTaXplKCkpLnko
KSk7CisgICAgICAgIHNldFkoYnV0dG9uQm94LT5vZmZzZXRUb3AoKSArIHRoZW1lKCkudm9sdW1l
U2xpZGVyT2Zmc2V0RnJvbU11dGVCdXR0b24oYnV0dG9uQm94LCBwaXhlbFNuYXBwZWRTaXplKCkp
LnkoKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCmluZGV4IGI2MTJiNWEuLjZmZDU2Y2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAtMTMw
LDEwICsxMzAsMTAgQEAgdm9pZCBSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5uZXJTdHlsZSgpCiAg
ICAgICAgIGlubmVyU3R5bGUuc2V0QWxpZ25TZWxmKEFsaWduRmxleFN0YXJ0KTsKICAgICB9CiAK
LSAgICBpbm5lclN0eWxlLnNldFBhZGRpbmdMZWZ0KExlbmd0aCh0aGVtZSgpLT5wb3B1cEludGVy
bmFsUGFkZGluZ0xlZnQoJnN0eWxlKCkpLCBGaXhlZCkpOwotICAgIGlubmVyU3R5bGUuc2V0UGFk
ZGluZ1JpZ2h0KExlbmd0aCh0aGVtZSgpLT5wb3B1cEludGVybmFsUGFkZGluZ1JpZ2h0KCZzdHls
ZSgpKSwgRml4ZWQpKTsKLSAgICBpbm5lclN0eWxlLnNldFBhZGRpbmdUb3AoTGVuZ3RoKHRoZW1l
KCktPnBvcHVwSW50ZXJuYWxQYWRkaW5nVG9wKCZzdHlsZSgpKSwgRml4ZWQpKTsKLSAgICBpbm5l
clN0eWxlLnNldFBhZGRpbmdCb3R0b20oTGVuZ3RoKHRoZW1lKCktPnBvcHVwSW50ZXJuYWxQYWRk
aW5nQm90dG9tKCZzdHlsZSgpKSwgRml4ZWQpKTsKKyAgICBpbm5lclN0eWxlLnNldFBhZGRpbmdM
ZWZ0KExlbmd0aCh0aGVtZSgpLnBvcHVwSW50ZXJuYWxQYWRkaW5nTGVmdCgmc3R5bGUoKSksIEZp
eGVkKSk7CisgICAgaW5uZXJTdHlsZS5zZXRQYWRkaW5nUmlnaHQoTGVuZ3RoKHRoZW1lKCkucG9w
dXBJbnRlcm5hbFBhZGRpbmdSaWdodCgmc3R5bGUoKSksIEZpeGVkKSk7CisgICAgaW5uZXJTdHls
ZS5zZXRQYWRkaW5nVG9wKExlbmd0aCh0aGVtZSgpLnBvcHVwSW50ZXJuYWxQYWRkaW5nVG9wKCZz
dHlsZSgpKSwgRml4ZWQpKTsKKyAgICBpbm5lclN0eWxlLnNldFBhZGRpbmdCb3R0b20oTGVuZ3Ro
KHRoZW1lKCkucG9wdXBJbnRlcm5hbFBhZGRpbmdCb3R0b20oJnN0eWxlKCkpLCBGaXhlZCkpOwog
CiAgICAgaWYgKGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5zZWxlY3RJdGVtV3JpdGluZ0Rp
cmVjdGlvbklzTmF0dXJhbCgpKSB7CiAgICAgICAgIC8vIEl0ZW1zIGluIHRoZSBwb3B1cCB3aWxs
IG5vdCByZXNwZWN0IHRoZSBDU1MgdGV4dC1hbGlnbiBhbmQgZGlyZWN0aW9uIHByb3BlcnRpZXMs
CkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBSZW5kZXJNZW51TGlzdDo6dXBkYXRlT3B0aW9uc1dp
ZHRoKCkKIAogICAgICAgICBTdHJpbmcgdGV4dCA9IHRvSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVu
dCktPnRleHRJbmRlbnRlZFRvUmVzcGVjdEdyb3VwTGFiZWwoKTsKICAgICAgICAgYXBwbHlUZXh0
VHJhbnNmb3JtKHN0eWxlKCksIHRleHQsICcgJyk7Ci0gICAgICAgIGlmICh0aGVtZSgpLT5wb3B1
cE9wdGlvblN1cHBvcnRzVGV4dEluZGVudCgpKSB7CisgICAgICAgIGlmICh0aGVtZSgpLnBvcHVw
T3B0aW9uU3VwcG9ydHNUZXh0SW5kZW50KCkpIHsKICAgICAgICAgICAgIC8vIEFkZCBpbiB0aGUg
b3B0aW9uJ3MgdGV4dCBpbmRlbnQuICBXZSBjYW4ndCBjYWxjdWxhdGUgcGVyY2VudGFnZSB2YWx1
ZXMgZm9yIG5vdy4KICAgICAgICAgICAgIGZsb2F0IG9wdGlvbldpZHRoID0gMDsKICAgICAgICAg
ICAgIGlmIChSZW5kZXJTdHlsZSogb3B0aW9uU3R5bGUgPSBlbGVtZW50LT5yZW5kZXJTdHlsZSgp
KQpAQCAtMzI0LDcgKzMyNCw3IEBAIExheW91dFJlY3QgUmVuZGVyTWVudUxpc3Q6OmNvbnRyb2xD
bGlwUmVjdChjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCkKIAogdm9pZCBSZW5k
ZXJNZW51TGlzdDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWlu
TG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0CiB7Ci0gICAg
bWF4TG9naWNhbFdpZHRoID0gc3RkOjptYXgobV9vcHRpb25zV2lkdGgsIHRoZW1lKCktPm1pbmlt
dW1NZW51TGlzdFNpemUoJnN0eWxlKCkpKSArIG1faW5uZXJCbG9jay0+cGFkZGluZ0xlZnQoKSAr
IG1faW5uZXJCbG9jay0+cGFkZGluZ1JpZ2h0KCk7CisgICAgbWF4TG9naWNhbFdpZHRoID0gc3Rk
OjptYXgobV9vcHRpb25zV2lkdGgsIHRoZW1lKCkubWluaW11bU1lbnVMaXN0U2l6ZSgmc3R5bGUo
KSkpICsgbV9pbm5lckJsb2NrLT5wYWRkaW5nTGVmdCgpICsgbV9pbm5lckJsb2NrLT5wYWRkaW5n
UmlnaHQoKTsKICAgICBpZiAoIXN0eWxlKCkud2lkdGgoKS5pc1BlcmNlbnQoKSkKICAgICAgICAg
bWluTG9naWNhbFdpZHRoID0gbWF4TG9naWNhbFdpZHRoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNZXRlci5jcHAKaW5kZXggMDEwNmZiZC4uNzJlYjZmNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgUmVu
ZGVyTWV0ZXI6OnVwZGF0ZUxvZ2ljYWxXaWR0aCgpCiB7CiAgICAgUmVuZGVyQm94Ojp1cGRhdGVM
b2dpY2FsV2lkdGgoKTsKIAotICAgIEludFNpemUgZnJhbWVTaXplID0gdGhlbWUoKS0+bWV0ZXJT
aXplRm9yQm91bmRzKHRoaXMsIHBpeGVsU25hcHBlZEludFJlY3QoZnJhbWVSZWN0KCkpKTsKKyAg
ICBJbnRTaXplIGZyYW1lU2l6ZSA9IHRoZW1lKCkubWV0ZXJTaXplRm9yQm91bmRzKHRoaXMsIHBp
eGVsU25hcHBlZEludFJlY3QoZnJhbWVSZWN0KCkpKTsKICAgICBzZXRMb2dpY2FsV2lkdGgoaXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGZyYW1lU2l6ZS53aWR0aCgpIDogZnJhbWVTaXplLmhl
aWdodCgpKTsKIH0KIApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFJlbmRlck1ldGVyOjpjb21wdXRl
TG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naQog
ICAgICAgICBmcmFtZS5zZXRIZWlnaHQoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQpOwogICAgIGVs
c2UKICAgICAgICAgZnJhbWUuc2V0V2lkdGgoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQpOwotICAg
IEludFNpemUgZnJhbWVTaXplID0gdGhlbWUoKS0+bWV0ZXJTaXplRm9yQm91bmRzKHRoaXMsIHBp
eGVsU25hcHBlZEludFJlY3QoZnJhbWUpKTsKKyAgICBJbnRTaXplIGZyYW1lU2l6ZSA9IHRoZW1l
KCkubWV0ZXJTaXplRm9yQm91bmRzKHRoaXMsIHBpeGVsU25hcHBlZEludFJlY3QoZnJhbWUpKTsK
ICAgICBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
PyBmcmFtZVNpemUuaGVpZ2h0KCkgOiBmcmFtZVNpemUud2lkdGgoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCAxZGE0YzU1Li42YjY5NjY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTMwLDEwICsx
MzAsOSBAQCBSZW5kZXJPYmplY3Q6On5SZW5kZXJPYmplY3QoKQogICAgIHZpZXcoKS5kaWREZXN0
cm95UmVuZGVyZXIoKTsKIH0KIAotUmVuZGVyVGhlbWUqIFJlbmRlck9iamVjdDo6dGhlbWUoKSBj
b25zdAorUmVuZGVyVGhlbWUmIFJlbmRlck9iamVjdDo6dGhlbWUoKSBjb25zdAogewogICAgIEFT
U0VSVChkb2N1bWVudCgpLnBhZ2UoKSk7Ci0KICAgICByZXR1cm4gZG9jdW1lbnQoKS5wYWdlKCkt
PnRoZW1lKCk7CiB9CiAKQEAgLTEwMTYsNyArMTAxNSw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojpw
YWludE91dGxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFJlY3QmIHBhaW50
UmVjCiAgICAgaW50IG91dGxpbmVPZmZzZXQgPSBzdHlsZVRvVXNlLm91dGxpbmVPZmZzZXQoKTsK
IAogICAgIGlmIChzdHlsZVRvVXNlLm91dGxpbmVTdHlsZUlzQXV0bygpIHx8IGhhc091dGxpbmVB
bm5vdGF0aW9uKCkpIHsKLSAgICAgICAgaWYgKCF0aGVtZSgpLT5zdXBwb3J0c0ZvY3VzUmluZygm
c3R5bGVUb1VzZSkpIHsKKyAgICAgICAgaWYgKCF0aGVtZSgpLnN1cHBvcnRzRm9jdXNSaW5nKCZz
dHlsZVRvVXNlKSkgewogICAgICAgICAgICAgLy8gT25seSBwYWludCB0aGUgZm9jdXMgcmluZyBi
eSBoYW5kIGlmIHRoZSB0aGVtZSBpc24ndCBhYmxlIHRvIGRyYXcgdGhlIGZvY3VzIHJpbmcuCiAg
ICAgICAgICAgICBwYWludEZvY3VzUmluZyhwYWludEluZm8sIHBhaW50UmVjdC5sb2NhdGlvbigp
LCAmc3R5bGVUb1VzZSk7CiAgICAgICAgIH0KQEAgLTE0NTYsNyArMTQ1NSw3IEBAIENvbG9yIFJl
bmRlck9iamVjdDo6c2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKICAgICAgICAgICAg
IGlmIChwc2V1ZG9TdHlsZSAmJiBwc2V1ZG9TdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENT
U1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKS5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgY29s
b3IgPSBwc2V1ZG9TdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yKS5ibGVuZFdpdGhXaGl0ZSgpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIGNvbG9yID0gZnJhbWUoKS5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRBbmRBY3RpdmUoKSA/
IHRoZW1lKCktPmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIDogdGhlbWUoKS0+aW5h
Y3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICAgICAgICAgICAgICBjb2xvciA9
IGZyYW1lKCkuc2VsZWN0aW9uKCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkgPyB0aGVtZSgpLmFjdGl2
ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIDogdGhlbWUoKS5pbmFjdGl2ZVNlbGVjdGlvbkJh
Y2tncm91bmRDb2xvcigpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNDc3LDkgKzE0NzYsNyBA
QCBDb2xvciBSZW5kZXJPYmplY3Q6OnNlbGVjdGlvbkNvbG9yKGludCBjb2xvclByb3BlcnR5KSBj
b25zdAogICAgICAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgICAgIGNvbG9yID0g
cHNldWRvU3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKICAg
ICB9IGVsc2UKLSAgICAgICAgY29sb3IgPSBmcmFtZSgpLnNlbGVjdGlvbigpLmlzRm9jdXNlZEFu
ZEFjdGl2ZSgpID8KLSAgICAgICAgICAgICAgICB0aGVtZSgpLT5hY3RpdmVTZWxlY3Rpb25Gb3Jl
Z3JvdW5kQ29sb3IoKSA6Ci0gICAgICAgICAgICAgICAgdGhlbWUoKS0+aW5hY3RpdmVTZWxlY3Rp
b25Gb3JlZ3JvdW5kQ29sb3IoKTsKKyAgICAgICAgY29sb3IgPSBmcmFtZSgpLnNlbGVjdGlvbigp
LmlzRm9jdXNlZEFuZEFjdGl2ZSgpID8gdGhlbWUoKS5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5k
Q29sb3IoKSA6IHRoZW1lKCkuaW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKTsKIAog
ICAgIHJldHVybiBjb2xvcjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aAppbmRleCAyMTI5ODgyLi4zMDBmZmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oCkBAIC0xNTksNyArMTU5LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFJlbmRl
ck9iamVjdChOb2RlJik7CiAgICAgdmlydHVhbCB+UmVuZGVyT2JqZWN0KCk7CiAKLSAgICBSZW5k
ZXJUaGVtZSogdGhlbWUoKSBjb25zdDsKKyAgICBSZW5kZXJUaGVtZSYgdGhlbWUoKSBjb25zdDsK
IAogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0ID0gMDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5jcHAKaW5kZXggMzc4OWQ3Ny4u
ZjM0ZTBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dy
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3Bw
CkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgUmVuZGVyUHJvZ3Jlc3M6OmNvbXB1dGVMb2dpY2FsSGVp
Z2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsCiAgICAgICAgIGZyYW1l
LnNldEhlaWdodChjb21wdXRlZFZhbHVlcy5tX2V4dGVudCk7CiAgICAgZWxzZQogICAgICAgICBm
cmFtZS5zZXRXaWR0aChjb21wdXRlZFZhbHVlcy5tX2V4dGVudCk7Ci0gICAgSW50U2l6ZSBmcmFt
ZVNpemUgPSB0aGVtZSgpLT5wcm9ncmVzc0JhclJlY3RGb3JCb3VuZHModGhpcywgcGl4ZWxTbmFw
cGVkSW50UmVjdChmcmFtZSkpLnNpemUoKTsKKyAgICBJbnRTaXplIGZyYW1lU2l6ZSA9IHRoZW1l
KCkucHJvZ3Jlc3NCYXJSZWN0Rm9yQm91bmRzKHRoaXMsIHBpeGVsU25hcHBlZEludFJlY3QoZnJh
bWUpKS5zaXplKCk7CiAgICAgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSBpc0hvcml6b250YWxX
cml0aW5nTW9kZSgpID8gZnJhbWVTaXplLmhlaWdodCgpIDogZnJhbWVTaXplLndpZHRoKCk7CiB9
CiAKQEAgLTk2LDggKzk2LDggQEAgdm9pZCBSZW5kZXJQcm9ncmVzczo6YW5pbWF0aW9uVGltZXJG
aXJlZChUaW1lcjxSZW5kZXJQcm9ncmVzcz4qKQogCiB2b2lkIFJlbmRlclByb2dyZXNzOjp1cGRh
dGVBbmltYXRpb25TdGF0ZSgpCiB7Ci0gICAgbV9hbmltYXRpb25EdXJhdGlvbiA9IHRoZW1lKCkt
PmFuaW1hdGlvbkR1cmF0aW9uRm9yUHJvZ3Jlc3NCYXIodGhpcyk7Ci0gICAgbV9hbmltYXRpb25S
ZXBlYXRJbnRlcnZhbCA9IHRoZW1lKCktPmFuaW1hdGlvblJlcGVhdEludGVydmFsRm9yUHJvZ3Jl
c3NCYXIodGhpcyk7CisgICAgbV9hbmltYXRpb25EdXJhdGlvbiA9IHRoZW1lKCkuYW5pbWF0aW9u
RHVyYXRpb25Gb3JQcm9ncmVzc0Jhcih0aGlzKTsKKyAgICBtX2FuaW1hdGlvblJlcGVhdEludGVy
dmFsID0gdGhlbWUoKS5hbmltYXRpb25SZXBlYXRJbnRlcnZhbEZvclByb2dyZXNzQmFyKHRoaXMp
OwogCiAgICAgYm9vbCBhbmltYXRpbmcgPSBzdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSAmJiBtX2Fu
aW1hdGlvbkR1cmF0aW9uID4gMDsKICAgICBpZiAoYW5pbWF0aW5nID09IG1fYW5pbWF0aW5nKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKaW5kZXgg
OTZjNWQyMC4uYWNlNWZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dENvbnRyb2wuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2w6
OmFkanVzdElubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxlLCBSZW5k
CiAKICAgICBib29sIGRpc2FibGVkID0gdXBkYXRlVXNlck1vZGlmeVByb3BlcnR5KHRleHRGb3Jt
Q29udHJvbEVsZW1lbnQoKSwgdGV4dEJsb2NrU3R5bGUpOwogICAgIGlmIChkaXNhYmxlZCkKLSAg
ICAgICAgdGV4dEJsb2NrU3R5bGUtPnNldENvbG9yKHRoZW1lKCktPmRpc2FibGVkVGV4dENvbG9y
KHRleHRCbG9ja1N0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciks
IHN0YXJ0U3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvcikpKTsKKyAgICAgICAgdGV4dEJsb2NrU3R5bGUtPnNldENvbG9yKHRoZW1lKCkuZGlzYWJs
ZWRUZXh0Q29sb3IodGV4dEJsb2NrU3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9w
ZXJ0eUNvbG9yKSwgc3RhcnRTdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5
QmFja2dyb3VuZENvbG9yKSkpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAodGV4dEJsb2Nr
U3R5bGUtPnRleHRTZWN1cml0eSgpICE9IFRTTk9ORSAmJiAhdGV4dEJsb2NrU3R5bGUtPmlzTGVm
dFRvUmlnaHREaXJlY3Rpb24oKSkgewogICAgICAgICAvLyBQcmVzZXJ2ZSB0aGUgYWxpZ25tZW50
IGJ1dCBmb3JjZSB0aGUgZGlyZWN0aW9uIHRvIExUUiBzbyB0aGF0IHRoZSBsYXN0LXR5cGVkLCB1
bm1hc2tlZCBjaGFyYWN0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKaW5kZXggMDNkMmNlOC4uNGIwOWI1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sU2luZ2xlTGluZS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmU6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYKIAogICAgICAgICAvLyBDb252ZXJ0IHRoZSByZWN0IGludG8gdGhlIGNvb3JkcyB1c2VkIGZv
ciBwYWludGluZyB0aGUgY29udGVudAogICAgICAgICBjb250ZW50c1JlY3QubW92ZUJ5KHBhaW50
T2Zmc2V0ICsgbG9jYXRpb24oKSk7Ci0gICAgICAgIHRoZW1lKCktPnBhaW50Q2Fwc0xvY2tJbmRp
Y2F0b3IodGhpcywgcGFpbnRJbmZvLCBwaXhlbFNuYXBwZWRJbnRSZWN0KGNvbnRlbnRzUmVjdCkp
OworICAgICAgICB0aGVtZSgpLnBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IodGhpcywgcGFpbnRJbmZv
LCBwaXhlbFNuYXBwZWRJbnRSZWN0KGNvbnRlbnRzUmVjdCkpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXggYmUyYmM0Zi4uYzM5Y2NlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3ZpZXcuY3BwCkBAIC0xMzY2LDggKzEzNjYsOCBAQCB2b2lkIGV3a192aWV3X3Ro
ZW1lX3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogcGF0aCkKICAgICBpZiAo
IWVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJpdi0+c2V0dGluZ3MudGhlbWUsIHBhdGgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbCogdGhlbWUgPSBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbCo+KHByaXYtPnBhZ2UtPnRoZW1lKCkp
OwotICAgIHRoZW1lLT5zZXRUaGVtZVBhdGgocGF0aCk7CisgICAgV2ViQ29yZTo6UmVuZGVyVGhl
bWVFZmwmIHRoZW1lID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UmVuZGVyVGhlbWVFZmwmPihwcml2
LT5wYWdlLT50aGVtZSgpKTsKKyAgICB0aGVtZS5zZXRUaGVtZVBhdGgocGF0aCk7CiB9CiAKIGNv
bnN0IGNoYXIqIGV3a192aWV3X3RoZW1lX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktp
dC93aW4vV2ViVmlldy5jcHAKaW5kZXggMDgzODQ3OS4uZGJlMTUyNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmll
dy5jcHAKQEAgLTIzODAsNyArMjM4MCw3IEBAIExSRVNVTFQgQ0FMTEJBQ0sgV2ViVmlldzo6V2Vi
Vmlld1duZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sCiAgICAg
ICAgIGNhc2UgV01fWFBfVEhFTUVDSEFOR0VEOgogICAgICAgICAgICAgaWYgKEZyYW1lKiBjb3Jl
RnJhbWUgPSBjb3JlKG1haW5GcmFtZUltcGwpKSB7CiAgICAgICAgICAgICAgICAgd2ViVmlldy0+
ZGVsZXRlQmFja2luZ1N0b3JlKCk7Ci0gICAgICAgICAgICAgICAgY29yZUZyYW1lLT5wYWdlKCkt
PnRoZW1lKCktPnRoZW1lQ2hhbmdlZCgpOworICAgICAgICAgICAgICAgIGNvcmVGcmFtZS0+cGFn
ZSgpLT50aGVtZSgpLnRoZW1lQ2hhbmdlZCgpOwogICAgICAgICAgICAgICAgIFNjcm9sbGJhclRo
ZW1lOjp0aGVtZSgpLT50aGVtZUNoYW5nZWQoKTsKICAgICAgICAgICAgICAgICBSRUNUIHdpbmRv
d1JlY3Q7CiAgICAgICAgICAgICAgICAgOjpHZXRDbGllbnRSZWN0KGhXbmQsICZ3aW5kb3dSZWN0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2Vi
UGFnZUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBh
Z2VFZmwuY3BwCmluZGV4IGM5ZTRkYzUuLjY0YmNlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNwcApAQCAtMTY4LDggKzE2
OCw4IEBAIGNvbnN0IGNoYXIqIFdlYlBhZ2U6OmludGVycHJldEtleUV2ZW50KGNvbnN0IEtleWJv
YXJkRXZlbnQqIGV2ZW50KQogCiB2b2lkIFdlYlBhZ2U6OnNldFRoZW1lUGF0aChjb25zdCBTdHJp
bmcmIHRoZW1lUGF0aCkKIHsKLSAgICBXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbCogdGhlbWUgPSBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbCo+KG1fcGFnZS0+dGhlbWUoKSk7Ci0g
ICAgdGhlbWUtPnNldFRoZW1lUGF0aCh0aGVtZVBhdGgpOworICAgIFdlYkNvcmU6OlJlbmRlclRo
ZW1lRWZsJiB0aGVtZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsJj4obV9w
YWdlLT50aGVtZSgpKTsKKyAgICB0aGVtZS5zZXRUaGVtZVBhdGgodGhlbWVQYXRoKTsKIH0KIAog
c3RhdGljIEZyYW1lKiB0YXJnZXRGcmFtZUZvckVkaXRpbmcoV2ViUGFnZSogcGFnZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>