<?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>149071</bug_id>
          
          <creation_ts>2015-09-11 13:37:20 -0700</creation_ts>
          <short_desc>Web Inspector: disambiguate inspected/frontend controllers and pages in backend code</short_desc>
          <delta_ts>2022-03-01 02:45:35 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>DoNotImportToRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>149006</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1125239</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-09-11 13:37:20 -0700</bug_when>
    <thetext>Splitting this from other changes to make easy diffing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125247</commentid>
    <comment_count>1</comment_count>
      <attachid>261014</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-09-11 14:25:05 -0700</bug_when>
    <thetext>Created attachment 261014
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125250</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-11 14:26:35 -0700</bug_when>
    <thetext>Attachment 261014 did not pass style-queue:


ERROR: Source/WebKit/win/WebInspector.cpp:108:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/WebInspector.cpp:130:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 2 in 27 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>1125271</commentid>
    <comment_count>3</comment_count>
      <attachid>261020</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-09-11 15:01:43 -0700</bug_when>
    <thetext>Created attachment 261020
Proposed Fix (fix ios)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125272</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-11 15:04:57 -0700</bug_when>
    <thetext>Attachment 261020 did not pass style-queue:


ERROR: Source/WebKit/win/WebInspector.cpp:108:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/WebInspector.cpp:130:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 2 in 27 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>1125294</commentid>
    <comment_count>5</comment_count>
      <attachid>261028</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-09-11 16:37:45 -0700</bug_when>
    <thetext>Created attachment 261028
Proposed Fix (EWS)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125295</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-11 16:39:52 -0700</bug_when>
    <thetext>Attachment 261028 did not pass style-queue:


ERROR: Source/WebKit/win/WebInspector.cpp:108:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/WebInspector.cpp:130:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 2 in 27 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>1125321</commentid>
    <comment_count>7</comment_count>
      <attachid>261028</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-09-11 17:31:09 -0700</bug_when>
    <thetext>Comment on attachment 261028
Proposed Fix (EWS)

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

r=me

&gt; Source/WebCore/WebCore.order:17081
&gt; -__ZN7WebCore20EmptyInspectorClient18inspectorDestroyedEv
&gt; +__ZN7WebCore20EmptyInspectorClient22inspectedPageDestroyedEv

We typically do not change order files. This seems harmless, but you may want to just not touch this at all.

&gt; Source/WebCore/inspector/InspectorFrontendClientLocal.cpp:131
&gt;  InspectorFrontendClientLocal::InspectorFrontendClientLocal(InspectorController* inspectedPageController, Page* frontendPage, std::unique_ptr&lt;Settings&gt; settings)
&gt; -    : m_inspectorController(inspectedPageController)
&gt; +    : m_inspectedPageController(inspectedPageController)

Hmm, I&apos;m not sure about this one. It reads a bit funny.

Was there ever a case where &quot;inspectorController&quot; did not mean the WebCore::InspectorController for the inspected page?

&gt; Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm:73
&gt; +    WebInspectorFrontendClient *_frontendClient;
&gt; +    WebInspectorClient *_inspectorClient;

Style: These types are not-ObjC so the * should be on the left (on the type).

&gt; Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm:88
&gt; +- (void)setFrontendClient:(WebInspectorFrontendClient *)frontendClient;
&gt; +- (void)setInspectorClient:(WebInspectorClient *)inspectorClient;
&gt; +- (WebInspectorClient *)inspectorClient;

Same with all of these.

&gt; Source/WebKit/mac/WebInspector/WebInspector.mm:179
&gt; +    // FIXME: this is a really roundabout way to evaluate in the frontend.
&gt; +    // We could directly use the frontend instead of going through the inspected page.
&gt; +    if (Page* inspectedPage = core(_inspectedWebView))
&gt; +        inspectedPage-&gt;inspectorController().evaluateForTestInFrontend(script);

Hmm, I think sending to InspectorController is appropriate. Currently it does InspectorController -&gt; InspectorAgent -&gt; event. If there are multiple frontends, this would ensure it goes to all frontends.

&gt; Source/WebKit/mac/WebKit.order:1024
&gt; +__ZN18WebInspectorClient22inspectedPageDestroyedEv
&gt; +__ZN18WebInspectorClient18closeLocalFrontendEv

Ditto: Order files.

&gt; Source/WebKit2/mac/WebKit2.order:4328
&gt; +__ZN6WebKit18WebInspectorClient22inspectedPageDestroyedEv
&gt; +__ZN6WebKit18WebInspectorClient18closeLocalFrontendEv

Ditto: Order files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125384</commentid>
    <comment_count>8</comment_count>
      <attachid>261028</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-09-12 10:12:57 -0700</bug_when>
    <thetext>Comment on attachment 261028
Proposed Fix (EWS)

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

&gt;&gt; Source/WebCore/inspector/InspectorFrontendClientLocal.cpp:131
&gt;&gt; +    : m_inspectedPageController(inspectedPageController)
&gt; 
&gt; Hmm, I&apos;m not sure about this one. It reads a bit funny.
&gt; 
&gt; Was there ever a case where &quot;inspectorController&quot; did not mean the WebCore::InspectorController for the inspected page?

In the stub frontend, the frontendClient is hooked to the frontend page&apos;s inspector controller, and the FrontendChannel is connected to the inspected page&apos;s inspector controller.

&gt;&gt; Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm:73
&gt;&gt; +    WebInspectorClient *_inspectorClient;
&gt; 
&gt; Style: These types are not-ObjC so the * should be on the left (on the type).

Oops, ok. Will double-check style guide and update if necessary.

&gt;&gt; Source/WebKit/mac/WebInspector/WebInspector.mm:179
&gt;&gt; +        inspectedPage-&gt;inspectorController().evaluateForTestInFrontend(script);
&gt; 
&gt; Hmm, I think sending to InspectorController is appropriate. Currently it does InspectorController -&gt; InspectorAgent -&gt; event. If there are multiple frontends, this would ensure it goes to all frontends.

Hmm, I suppose that would make sense to ensure it&apos;s actually sent over a FrontendChannel. Other code paths for WK2, win, etc do the same thing. I&apos;ll remove the comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125389</commentid>
    <comment_count>9</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-09-12 10:44:51 -0700</bug_when>
    <thetext>Committed r189654: &lt;http://trac.webkit.org/changeset/189654&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261014</attachid>
            <date>2015-09-11 14:25:05 -0700</date>
            <delta_ts>2015-09-11 15:01:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149071-20150911142457.patch</filename>
            <type>text/plain</type>
            <size>57018</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5NjI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDM2N2M5Y2NkYTY0Y2Vh
ZTBiN2QxOTY4ODViZTM3MjE0ZWU0YmM3NS4uODk5NWY1M2U3OWIxMTU2OTA4YWE0OTE2NmEwZTc0
ODAxZmQ0NThlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE1LTA5LTExICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGRpc2Ft
YmlndWF0ZSBpbnNwZWN0ZWQvZnJvbnRlbmQgY29udHJvbGxlcnMgYW5kIHBhZ2VzIGluIGJhY2tl
bmQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ5MDcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QmUgY29uc2lzdGVudCBhYm91dCBwcmVmaXhpbmcgcGFnZXMsIGluc3BlY3RvciBjb250cm9sbGVy
cywgYW5kIHdpbmRvdyBjb250cm9sbGVycworICAgICAgICB3aXRoIGVpdGhlciAiZnJvbnRlbmQi
IG9yICJpbnNwZWN0ZWQiLCBhcyBhcHByb3ByaWF0ZS4gVGhpcyBjaGFuZ2UgbWFrZXMgb2J2aW91
cyBzb21lIGJ1Z3MKKyAgICAgICAgaW4gdGhlIGZyb250ZW5kIGNvbm5lY3Rpb24gY29kZSwgd2hp
Y2ggYXJlIHRyYWNrZWQgYnkgaHR0cHM6Ly93ZWJraXQub3JnL2IvMTQ5MDA2LgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogV2ViQ29yZS5v
cmRlcjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6OmNsb3NlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6On5JbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWw6OmNhbkF0dGFjaFdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsOjpjaGFuZ2VBdHRhY2hlZFdpbmRvd0hlaWdodCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpjaGFuZ2VBdHRhY2hlZFdpbmRvd1dp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Om9w
ZW5Jbk5ld1RhYik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsOjpyZXN0b3JlQXR0YWNoZWRXaW5kb3dIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6c2hvd01haW5SZXNvdXJjZUZvckZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmlzVW5kZXJUZXN0
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvck92ZXJsYXk6OmZyZWVQYWdlKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlD
bGllbnRzLmg6CisKIDIwMTUtMDktMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBFbGVtZW50LnRhZ05hbWUgc2hvdWxkIGJlIHVwcGVyLWNhc2UgZm9yIEhUTUwg
ZWxlbWVudHMgaW4gSFRNTCBkb2N1bWVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9z
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwppbmRleCBkNGE0NjgzYzhk
Nzc0OTNhZmQwZDcxYjAxYTg1MjYzZGJkYWNhMDBlLi5iYzcxYTk5MDQwOGQ2ZGQ1MDVhNTE0ZmQ0
NThkYTU3ZDgwOWRlMDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTUt
MDktMTEgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogZGlzYW1iaWd1YXRlIGluc3BlY3RlZC9mcm9udGVuZCBjb250cm9sbGVycyBhbmQgcGFn
ZXMgaW4gYmFja2VuZCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDkwNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbToKKyAg
ICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCk6IFJlbmFt
ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5Mb2NhbEZyb250ZW5kKTogUmVu
YW1lZC4KKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6Y2xvc2VMb2NhbEZyb250ZW5kKTog
UmVuYW1lZC4KKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJveWVk
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZy
b250ZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6Y2xvc2VJbnNw
ZWN0b3JGcm9udGVuZCk6IERlbGV0ZWQuCisKIDIwMTUtMDgtMTcgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIGFsbCByZW1haW5pbmcgdXNlcyBvZiBX
VEY6Ok11dGV4IHdpdGggV1RGOjpMb2NrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMDNhOTNkYWUwMTdl
MmFiNDFlNmRlNjI4NzQwYmYwZDI4ZjhkOTc3My4uMTRhZTQ2YTQwYzU3YTk2NzY2ODQ4NjlkODFl
MjVmN2VmMjhjZThlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE1LTA5
LTExICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGRpc2FtYmlndWF0ZSBpbnNwZWN0ZWQvZnJvbnRlbmQgY29udHJvbGxlcnMgYW5kIHBhZ2Vz
IGluIGJhY2tlbmQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQ5MDcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQmUgY29uc2lzdGVudCBhYm91dCBwcmVmaXhpbmcgcGFnZXMsIGluc3BlY3RvciBj
b250cm9sbGVycywgYW5kIHdpbmRvdyBjb250cm9sbGVycworICAgICAgICB3aXRoIGVpdGhlciAi
ZnJvbnRlbmQiIG9yICJpbnNwZWN0ZWQiLCBhcyBhcHByb3ByaWF0ZS4gVGhpcyBjaGFuZ2UgbWFr
ZXMgb2J2aW91cyBzb21lIGJ1Z3MKKyAgICAgICAgaW4gdGhlIGZyb250ZW5kIGNvbm5lY3Rpb24g
Y29kZSwgd2hpY2ggYXJlIHRyYWNrZWQgYnkgaHR0cHM6Ly93ZWJraXQub3JnL2IvMTQ5MDA2Lgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViSW5z
cGVjdG9yQ2xpZW50OjpXZWJJbnNwZWN0b3JDbGllbnQpOiBSZW5hbWVkLgorICAgICAgICAoV2Vi
SW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0ZWRQYWdlRGVzdHJveWVkKTogUmVuYW1lZC4KKyAgICAg
ICAgKFdlYkluc3BlY3RvckNsaWVudDo6b3BlbkxvY2FsRnJvbnRlbmQpOiBSZW5hbWVkLgorICAg
ICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpjbG9zZUxvY2FsRnJvbnRlbmQpOiBSZW5hbWVkLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpkaWRTZXRTZWFyY2hpbmdGb3JOb2RlKToKKyAg
ICAgICAgKFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXR0YWNoQXZhaWxh
YmlsaXR5Q2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6Y2Fu
QXR0YWNoKToKKyAgICAgICAgKFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojpmcm9udGVuZExv
YWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c3RhcnRXaW5kb3dE
cmFnKToKKyAgICAgICAgKFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpicmluZ1RvRnJvbnQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNsb3NlV2luZG93KToKKyAg
ICAgICAgKFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpkaXNjb25uZWN0RnJvbUJhY2tlbmQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmF0dGFjaFdpbmRvdyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZGV0YWNoV2luZG93KToKKyAgICAg
ICAgKFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2V0VG9vbGJhckhlaWdodCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6dXBkYXRlV2luZG93VGl0bGUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZCk6CisgICAgICAgICgtW1dlYkluc3Bl
Y3RvcldpbmRvd0NvbnRyb2xsZXIgaW5pdF0pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JXaW5k
b3dDb250cm9sbGVyIGluaXRXaXRoSW5zcGVjdGVkV2ViVmlldzppc1VuZGVyVGVzdDpdKToKKyAg
ICAgICAgKC1bV2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlciBkZWFsbG9jXSk6CisgICAgICAg
ICgtW1dlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIgZnJvbnRlbmRXZWJWaWV3XSk6CisgICAg
ICAgICgtW1dlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIgY2xvc2VdKToKKyAgICAgICAgKC1b
V2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlciBzaG93V2luZG93Ol0pOgorICAgICAgICAoLVtX
ZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyIHNldEF0dGFjaGVkV2luZG93SGVpZ2h0Ol0pOgor
ICAgICAgICAoLVtXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyIGRlc3Ryb3lJbnNwZWN0b3JW
aWV3XSk6CisgICAgICAgICgtW1dlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIgd2ViVmlldzpy
dW5PcGVuUGFuZWxGb3JGaWxlQnV0dG9uV2l0aFJlc3VsdExpc3RlbmVyOmFsbG93TXVsdGlwbGVG
aWxlczpdKToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJveWVk
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZy
b250ZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6Y2xvc2VJbnNw
ZWN0b3JGcm9udGVuZCk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkluc3BlY3RvcldpbmRvd0Nv
bnRyb2xsZXIgd2ViVmlld10pOiBEZWxldGVkLgorICAgICAgICAqIFdlYkluc3BlY3Rvci9XZWJJ
bnNwZWN0b3IuaDoKKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yLm1tOgorICAg
ICAgICAoLVtXZWJJbnNwZWN0b3IgaW5pdFdpdGhJbnNwZWN0ZWRXZWJWaWV3Ol0pOiBSZW5hbWVk
LgorICAgICAgICAoLVtXZWJJbnNwZWN0b3IgaW5zcGVjdGVkV2ViVmlld0Nsb3NlZF0pOiBSZW5h
bWVkLgorICAgICAgICAoLVtXZWJJbnNwZWN0b3Igc2hvd1dpbmRvd10pOgorICAgICAgICAoLVtX
ZWJJbnNwZWN0b3IgY2xvc2U6XSk6CisgICAgICAgICgtW1dlYkluc3BlY3RvciBldmFsdWF0ZUlu
RnJvbnRlbmQ6c2NyaXB0Ol0pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3IgcmVsZWFzZUZyb250
ZW5kXSk6CisgICAgICAgICgtW1dlYkluc3BlY3RvciBpbml0V2l0aFdlYlZpZXc6XSk6IERlbGV0
ZWQuCisgICAgICAgICgtW1dlYkluc3BlY3RvciB3ZWJWaWV3Q2xvc2VkXSk6IERlbGV0ZWQuCisg
ICAgICAgICogV2ViS2l0Lm9yZGVyOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV2ViVmlldyBfY2xvc2VdKToKKyAgICAgICAgKC1bV2ViVmlldyBpbnNwZWN0b3Jd
KToKKwogMjAxNS0wOS0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIE5vZGUuYXBwZW5kQ2hpbGQobnVsbCkgLyByZXBsYWNlQ2hpbGQobnVsbCwgbnVsbCkgLyBy
ZW1vdmVDaGlsZChudWxsKSAvIGluc2VydEJlZm9yZShudWxsLCByZWYpIHNob3VsZCB0aHJvdyBh
IFR5cGVFcnJvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDIyNWRmZWVmMzkzNTJiMjBhNDgzNzhjZWNm
ZGFhN2FmN2FkZWMwZGMuLjY0MmFjOWYzODcyMWFjMzIzYWQ0OWI2Y2NjMWYzYjVkZjFmZTc4MWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxNS0wOS0xMSAgQnJpYW4gQnVy
ZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBkaXNhbWJpZ3Vh
dGUgaW5zcGVjdGVkL2Zyb250ZW5kIGNvbnRyb2xsZXJzIGFuZCBwYWdlcyBpbiBiYWNrZW5kIGNv
ZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTA3
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJlIGNv
bnNpc3RlbnQgYWJvdXQgcHJlZml4aW5nIHBhZ2VzLCBpbnNwZWN0b3IgY29udHJvbGxlcnMsIGFu
ZCB3aW5kb3cgY29udHJvbGxlcnMKKyAgICAgICAgd2l0aCBlaXRoZXIgImZyb250ZW5kIiBvciAi
aW5zcGVjdGVkIiwgYXMgYXBwcm9wcmlhdGUuIFRoaXMgY2hhbmdlIG1ha2VzIG9idmlvdXMgc29t
ZSBidWdzCisgICAgICAgIGluIHRoZSBmcm9udGVuZCBjb25uZWN0aW9uIGNvZGUsIHdoaWNoIGFy
ZSB0cmFja2VkIGJ5IGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE0OTAwNi4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0
b3JDbGllbnQ6Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQpOiBSZW5hbWVkLgorICAgICAgICAoV2Vi
SW5zcGVjdG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9udGVuZCk6IFJlbmFtZWQuCisgICAgICAgIChX
ZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlTG9jYWxGcm9udGVuZCk6IFJlbmFtZWQuCisgICAgICAg
IChXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgor
ICAgICAgICAqIFdlYkluc3BlY3Rvci5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3I6OmNyZWF0
ZUluc3RhbmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvcjo6aW5zcGVjdGVkV2ViVmlld0Nsb3NlZCk6IFJlbmFtZWQuCisgICAg
ICAgIChXZWJJbnNwZWN0b3I6OnNob3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yOjpjbG9zZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3I6OmlzSmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yOjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3I6OmV2YWx1YXRlSW5Gcm9udGVuZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3I6OndlYlZpZXdDbG9zZWQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYkluc3BlY3Rv
ci5oOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6Y2xvc2UpOgor
CiAyMDE1LTA5LTA4ICBQZXIgQXJuZSBWb2xsYW4gIDxwZWF2b0BvdXRsb29rLmNvbT4KIAogICAg
ICAgICBbV2luXSBJbXBsZW1lbnQgRE9NTm9kZTo6YXR0cmlidXRlcy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAw
MzExODY1OTQ5NTVkODdhYjNhNThmODUyMmU2YjRkYWY3MzM2YTAxLi44NDEyZWJkY2Y3ZWIwMWMy
NTUwMDliOGUwN2Q1YzEyYWE0MjAyNTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIw
MTUtMDktMTEgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogZGlzYW1iaWd1YXRlIGluc3BlY3RlZC9mcm9udGVuZCBjb250cm9sbGVycyBhbmQg
cGFnZXMgaW4gYmFja2VuZCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDkwNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0ZWRQ
YWdlRGVzdHJveWVkKTogUmVuYW1lZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yQ2xp
ZW50OjpvcGVuTG9jYWxGcm9udGVuZCk6IFJlbmFtZWQuCisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvckNsaWVudDo6Y2xvc2VMb2NhbEZyb250ZW5kKTogUmVuYW1lZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JEZXN0cm95ZWQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVu
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvckNsaWVudDo6Y2xvc2VJ
bnNwZWN0b3JGcm9udGVuZCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKiBtYWMvV2ViS2l0Mi5vcmRl
cjoKKwogMjAxNS0wOS0xMSAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgW0pTQ10gV2VhayBzaG91bGQgb25seSBhY2NlcHQgY2VsbCBwb2ludGVlcy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLm9yZGVyCmluZGV4IDE5YTE4MGQ1NGIyMzE0MGFiNTdhOTM0MDNjN2VhZjFkM2I3NDgzYzMu
LjE5ZTNiZDkzNmM5OGVkOTE1NGU4MzYwZGQwNjA2OTkzYzk1ZmI2YjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5v
cmRlcgpAQCAtMTcwNzgsNyArMTcwNzgsNyBAQCBfX1pON1dlYkNvcmU3RWxlbWVudDIyc2V0SGFz
UGVuZGluZ1Jlc291cmNlc0V2CiBfX1pOSzdXZWJDb3JlMTJTVkdSZXNvdXJjZXMyMXJlbW92ZUNs
aWVudEZyb21DYWNoZUVQTlNfMTJSZW5kZXJPYmplY3RFYgogX19aTjdXZWJDb3JlMTdFbXB0eUVk
aXRvckNsaWVudDE5ZnJhbWVXaWxsRGV0YWNoUGFnZUVQTlNfNUZyYW1lRQogX19aTjdXZWJDb3Jl
MTdFbXB0eUVkaXRvckNsaWVudDEzcGFnZURlc3Ryb3llZEV2Ci1fX1pON1dlYkNvcmUyMEVtcHR5
SW5zcGVjdG9yQ2xpZW50MThpbnNwZWN0b3JEZXN0cm95ZWRFdgorX19aTjdXZWJDb3JlMjBFbXB0
eUluc3BlY3RvckNsaWVudDIyaW5zcGVjdGVkUGFnZURlc3Ryb3llZEV2CiBfX1pON1dlYkNvcmUx
OUJhY2tGb3J3YXJkTGlzdEltcGw1Y2xvc2VFdgogX19aTjdXZWJDb3JlOVBhZ2VHcm91cEQxRXYK
IF9fWk43V2ViQ29yZTlQYWdlR3JvdXBEMkV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ2xpZW50LmgKaW5kZXggNmQzOWE0YzkyYWRjZjUyODZmMjQ4MTUyZWMxYzUyNjkzYmFk
ZGQ4OC4uMGVkY2QwODU0ODhlYmRjYWMxNDhjMzZmMmVmNDMzMWU2NGFhMzJlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaApAQCAtNDYsMTAgKzQ2LDEwIEBA
IGNsYXNzIEluc3BlY3RvckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5zcGVjdG9y
Q2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0ZWRQYWdlRGVzdHJveWVkKCkgPSAwOwogCi0gICAg
dmlydHVhbCBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5k
KEluc3BlY3RvckNvbnRyb2xsZXIqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlSW5zcGVj
dG9yRnJvbnRlbmQoKSA9IDA7CisgICAgdmlydHVhbCBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5l
bCogb3BlbkxvY2FsRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgY2xvc2VMb2NhbEZyb250ZW5kKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBicmlu
Z0Zyb250ZW5kVG9Gcm9udCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzaXplTWFpbkZy
YW1lKEZyYW1lKikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcAppbmRleCBjZjhjYjAyOGI1ZTg1YTA1ZTI2YWI0NmQ1ZTE5YjBhMDc5
ZmRmMWUwLi45OWZmZDhlYzAzYjVkZjVhMmUzYjNlZDQyZGJlMjhiMzdjOTcyY2ZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0x
OTksNyArMTk5LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0ZWRQYWdlRGVz
dHJveWVkKCkKICAgICBkaXNjb25uZWN0QWxsRnJvbnRlbmRzKCk7CiAKICAgICBtX2luamVjdGVk
U2NyaXB0TWFuYWdlci0+ZGlzY29ubmVjdCgpOwotICAgIG1faW5zcGVjdG9yQ2xpZW50LT5pbnNw
ZWN0b3JEZXN0cm95ZWQoKTsKKyAgICBtX2luc3BlY3RvckNsaWVudC0+aW5zcGVjdGVkUGFnZURl
c3Ryb3llZCgpOwogICAgIG1faW5zcGVjdG9yQ2xpZW50ID0gbnVsbHB0cjsKIH0KIApAQCAtMzE5
LDE0ICszMTksMTQgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzaG93KCkKIAogICAgIGlm
IChtX2Zyb250ZW5kUm91dGVyLT5oYXNMb2NhbEZyb250ZW5kKCkpCiAgICAgICAgIG1faW5zcGVj
dG9yQ2xpZW50LT5icmluZ0Zyb250ZW5kVG9Gcm9udCgpOwotICAgIGVsc2UgaWYgKEluc3BlY3Rv
cjo6RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBtX2luc3BlY3RvckNsaWVudC0+
b3Blbkluc3BlY3RvckZyb250ZW5kKHRoaXMpKQorICAgIGVsc2UgaWYgKEluc3BlY3Rvcjo6RnJv
bnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBtX2luc3BlY3RvckNsaWVudC0+b3Blbkxv
Y2FsRnJvbnRlbmQodGhpcykpCiAgICAgICAgIGNvbm5lY3RGcm9udGVuZChmcm9udGVuZENoYW5u
ZWwpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNsb3NlKCkKIHsKICAgICBpZiAo
bV9mcm9udGVuZFJvdXRlci0+aGFzTG9jYWxGcm9udGVuZCgpKQotICAgICAgICBtX2luc3BlY3Rv
ckNsaWVudC0+Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpOworICAgICAgICBtX2luc3BlY3RvckNs
aWVudC0+Y2xvc2VMb2NhbEZyb250ZW5kKCk7CiAKICAgICBBU1NFUlQoIW1fZnJvbnRlbmRSb3V0
ZXItPmhhc0xvY2FsRnJvbnRlbmQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKaW5kZXggYjgyOTc3
Yjk5YzkzMGM0MGMzMzgxMjZlNWY3MTZhYjE1NDY3ZGRkMS4uNGY2Yjc3ZDc5NTk5ZDkwNWI2YmMx
MmE1YWExMGI0NWM2ZDZkNjI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcApAQCAtMTI4LDcgKzEyOCw3
IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0dGluZ3M6OnNldFByb3Bl
cnR5KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0CiB9CiAKIEluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWw6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdGVkUGFnZUNvbnRyb2xsZXIsIFBhZ2UqIGZyb250ZW5kUGFnZSwgc3RkOjp1bmlxdWVf
cHRyPFNldHRpbmdzPiBzZXR0aW5ncykKLSAgICA6IG1faW5zcGVjdG9yQ29udHJvbGxlcihpbnNw
ZWN0ZWRQYWdlQ29udHJvbGxlcikKKyAgICA6IG1faW5zcGVjdGVkUGFnZUNvbnRyb2xsZXIoaW5z
cGVjdGVkUGFnZUNvbnRyb2xsZXIpCiAgICAgLCBtX2Zyb250ZW5kUGFnZShmcm9udGVuZFBhZ2Up
CiAgICAgLCBtX3NldHRpbmdzKFdURjo6bW92ZShzZXR0aW5ncykpCiAgICAgLCBtX2RvY2tTaWRl
KERvY2tTaWRlOjpVbmRvY2tlZCkKQEAgLTE0Miw3ICsxNDIsNyBAQCBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsOjp+SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCgpCiAgICAgaWYgKG1f
ZnJvbnRlbmRIb3N0KQogICAgICAgICBtX2Zyb250ZW5kSG9zdC0+ZGlzY29ubmVjdENsaWVudCgp
OwogICAgIG1fZnJvbnRlbmRQYWdlID0gbnVsbHB0cjsKLSAgICBtX2luc3BlY3RvckNvbnRyb2xs
ZXIgPSBudWxscHRyOworICAgIG1faW5zcGVjdGVkUGFnZUNvbnRyb2xsZXIgPSBudWxscHRyOwog
ICAgIG1fZGlzcGF0Y2hUYXNrLT5yZXNldCgpOwogfQogCkBAIC0xODQsNyArMTg0LDcgQEAgdm9p
ZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpyZXF1ZXN0U2V0RG9ja1NpZGUoRG9ja1Np
ZGUgZG9ja1NpZGUpCiBib29sIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmNhbkF0dGFj
aFdpbmRvdygpCiB7CiAgICAgLy8gRG9uJ3QgYWxsb3cgYXR0YWNoaW5nIHRvIGFub3RoZXIgaW5z
cGVjdG9yIC0tIHR3byBpbnNwZWN0b3JzIGluIG9uZSB3aW5kb3cgaXMgdG9vIG11Y2ghCi0gICAg
Ym9vbCBpc0luc3BlY3RvclBhZ2UgPSBtX2luc3BlY3RvckNvbnRyb2xsZXItPmhhc0luc3BlY3Rv
ckZyb250ZW5kQ2xpZW50KCk7CisgICAgYm9vbCBpc0luc3BlY3RvclBhZ2UgPSBtX2luc3BlY3Rl
ZFBhZ2VDb250cm9sbGVyLT5oYXNJbnNwZWN0b3JGcm9udGVuZENsaWVudCgpOwogICAgIGlmIChp
c0luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTkzLDggKzE5Myw4
IEBAIGJvb2wgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y2FuQXR0YWNoV2luZG93KCkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBEb24ndCBhbGxvdyB0aGUgYXR0YWNoIGlm
IHRoZSB3aW5kb3cgd291bGQgYmUgdG9vIHNtYWxsIHRvIGFjY29tbW9kYXRlIHRoZSBtaW5pbXVt
IGluc3BlY3RvciBzaXplLgotICAgIHVuc2lnbmVkIGluc3BlY3RlZFBhZ2VIZWlnaHQgPSBtX2lu
c3BlY3RvckNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2UoKS5tYWluRnJhbWUoKS52aWV3KCktPnZp
c2libGVIZWlnaHQoKTsKLSAgICB1bnNpZ25lZCBpbnNwZWN0ZWRQYWdlV2lkdGggPSBtX2luc3Bl
Y3RvckNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2UoKS5tYWluRnJhbWUoKS52aWV3KCktPnZpc2li
bGVXaWR0aCgpOworICAgIHVuc2lnbmVkIGluc3BlY3RlZFBhZ2VIZWlnaHQgPSBtX2luc3BlY3Rl
ZFBhZ2VDb250cm9sbGVyLT5pbnNwZWN0ZWRQYWdlKCkubWFpbkZyYW1lKCkudmlldygpLT52aXNp
YmxlSGVpZ2h0KCk7CisgICAgdW5zaWduZWQgaW5zcGVjdGVkUGFnZVdpZHRoID0gbV9pbnNwZWN0
ZWRQYWdlQ29udHJvbGxlci0+aW5zcGVjdGVkUGFnZSgpLm1haW5GcmFtZSgpLnZpZXcoKS0+dmlz
aWJsZVdpZHRoKCk7CiAgICAgdW5zaWduZWQgbWF4aW11bUF0dGFjaGVkSGVpZ2h0ID0gaW5zcGVj
dGVkUGFnZUhlaWdodCAqIG1heGltdW1BdHRhY2hlZEhlaWdodFJhdGlvOwogICAgIHJldHVybiBt
aW5pbXVtQXR0YWNoZWRIZWlnaHQgPD0gbWF4aW11bUF0dGFjaGVkSGVpZ2h0ICYmIG1pbmltdW1B
dHRhY2hlZFdpZHRoIDw9IGluc3BlY3RlZFBhZ2VXaWR0aDsKIH0KQEAgLTIwNiw3ICsyMDYsNyBA
QCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OnNldERvY2tpbmdVbmF2YWlsYWJs
ZShib29sIHVuYXZhaWxhYmxlKQogCiB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6
OmNoYW5nZUF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKIHsKLSAgICB1bnNp
Z25lZCB0b3RhbEhlaWdodCA9IG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS52aWV3KCktPnZp
c2libGVIZWlnaHQoKSArIG1faW5zcGVjdG9yQ29udHJvbGxlci0+aW5zcGVjdGVkUGFnZSgpLm1h
aW5GcmFtZSgpLnZpZXcoKS0+dmlzaWJsZUhlaWdodCgpOworICAgIHVuc2lnbmVkIHRvdGFsSGVp
Z2h0ID0gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKS0+dmlzaWJsZUhlaWdodCgp
ICsgbV9pbnNwZWN0ZWRQYWdlQ29udHJvbGxlci0+aW5zcGVjdGVkUGFnZSgpLm1haW5GcmFtZSgp
LnZpZXcoKS0+dmlzaWJsZUhlaWdodCgpOwogICAgIHVuc2lnbmVkIGF0dGFjaGVkSGVpZ2h0ID0g
Y29uc3RyYWluZWRBdHRhY2hlZFdpbmRvd0hlaWdodChoZWlnaHQsIHRvdGFsSGVpZ2h0KTsKICAg
ICBtX3NldHRpbmdzLT5zZXRQcm9wZXJ0eShpbnNwZWN0b3JBdHRhY2hlZEhlaWdodFNldHRpbmcs
IFN0cmluZzo6bnVtYmVyKGF0dGFjaGVkSGVpZ2h0KSk7CiAgICAgc2V0QXR0YWNoZWRXaW5kb3dI
ZWlnaHQoYXR0YWNoZWRIZWlnaHQpOwpAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbDo6Y2hhbmdlQXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQg
aGVpZ2h0KQogCiB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmNoYW5nZUF0dGFj
aGVkV2luZG93V2lkdGgodW5zaWduZWQgd2lkdGgpCiB7Ci0gICAgdW5zaWduZWQgdG90YWxXaWR0
aCA9IG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS52aWV3KCktPnZpc2libGVXaWR0aCgpICsg
bV9pbnNwZWN0b3JDb250cm9sbGVyLT5pbnNwZWN0ZWRQYWdlKCkubWFpbkZyYW1lKCkudmlldygp
LT52aXNpYmxlV2lkdGgoKTsKKyAgICB1bnNpZ25lZCB0b3RhbFdpZHRoID0gbV9mcm9udGVuZFBh
Z2UtPm1haW5GcmFtZSgpLnZpZXcoKS0+dmlzaWJsZVdpZHRoKCkgKyBtX2luc3BlY3RlZFBhZ2VD
b250cm9sbGVyLT5pbnNwZWN0ZWRQYWdlKCkubWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlV2lk
dGgoKTsKICAgICB1bnNpZ25lZCBhdHRhY2hlZFdpZHRoID0gY29uc3RyYWluZWRBdHRhY2hlZFdp
bmRvd1dpZHRoKHdpZHRoLCB0b3RhbFdpZHRoKTsKICAgICBzZXRBdHRhY2hlZFdpbmRvd1dpZHRo
KGF0dGFjaGVkV2lkdGgpOwogfQpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbDo6Y2hhbmdlQXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCB3aWR0
aCkKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6b3BlbkluTmV3VGFiKGNvbnN0
IFN0cmluZyYgdXJsKQogewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvcihEZWZp
bml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKLSAgICBGcmFtZSYgbWFpbkZyYW1lID0gbV9p
bnNwZWN0b3JDb250cm9sbGVyLT5pbnNwZWN0ZWRQYWdlKCkubWFpbkZyYW1lKCk7CisgICAgRnJh
bWUmIG1haW5GcmFtZSA9IG1faW5zcGVjdGVkUGFnZUNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2Uo
KS5tYWluRnJhbWUoKTsKICAgICBGcmFtZUxvYWRSZXF1ZXN0IHJlcXVlc3QobWFpbkZyYW1lLmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIFJlc291cmNlUmVxdWVzdCgpLCAiX2JsYW5rIiwg
TG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJy
ZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGlj
eTo6QWxsb3csIFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCwgU2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOwogCiAgICAgYm9vbCBjcmVhdGVkOwpAQCAt
MjY5LDcgKzI2OSw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6c2V0QXR0
YWNoZWRXaW5kb3coRG9ja1NpZGUgZG9ja1NpZGUpCiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbDo6cmVzdG9yZUF0dGFjaGVkV2luZG93SGVpZ2h0KCkKIHsKLSAgICB1bnNpZ25l
ZCBpbnNwZWN0ZWRQYWdlSGVpZ2h0ID0gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5pbnNwZWN0ZWRQ
YWdlKCkubWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlSGVpZ2h0KCk7CisgICAgdW5zaWduZWQg
aW5zcGVjdGVkUGFnZUhlaWdodCA9IG1faW5zcGVjdGVkUGFnZUNvbnRyb2xsZXItPmluc3BlY3Rl
ZFBhZ2UoKS5tYWluRnJhbWUoKS52aWV3KCktPnZpc2libGVIZWlnaHQoKTsKICAgICBTdHJpbmcg
dmFsdWUgPSBtX3NldHRpbmdzLT5nZXRQcm9wZXJ0eShpbnNwZWN0b3JBdHRhY2hlZEhlaWdodFNl
dHRpbmcpOwogICAgIHVuc2lnbmVkIHByZWZlcnJlZEhlaWdodCA9IHZhbHVlLmlzRW1wdHkoKSA/
IGRlZmF1bHRBdHRhY2hlZEhlaWdodCA6IHZhbHVlLnRvVUludCgpOwogICAgIApAQCAtMzMyLDcg
KzMzMiw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6c2hvd1Jlc291cmNl
cygpCiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6c2hvd01haW5SZXNvdXJj
ZUZvckZyYW1lKEZyYW1lKiBmcmFtZSkKIHsKLSAgICBTdHJpbmcgZnJhbWVJZCA9IG1faW5zcGVj
dG9yQ29udHJvbGxlci0+cGFnZUFnZW50KCktPmZyYW1lSWQoZnJhbWUpOworICAgIFN0cmluZyBm
cmFtZUlkID0gbV9pbnNwZWN0ZWRQYWdlQ29udHJvbGxlci0+cGFnZUFnZW50KCktPmZyYW1lSWQo
ZnJhbWUpOwogICAgIGV2YWx1YXRlT25Mb2FkKFN0cmluZzo6Zm9ybWF0KCJbXCJzaG93TWFpblJl
c291cmNlRm9yRnJhbWVcIiwgXCIlc1wiXSIsIGZyYW1lSWQuYXNjaWkoKS5kYXRhKCkpKTsKIH0K
IApAQCAtMzUzLDcgKzM1Myw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6
c2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogCiBib29sIEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmlzVW5kZXJUZXN0KCkKIHsKLSAgICByZXR1cm4gbV9p
bnNwZWN0b3JDb250cm9sbGVyLT5pc1VuZGVyVGVzdCgpOworICAgIHJldHVybiBtX2luc3BlY3Rl
ZFBhZ2VDb250cm9sbGVyLT5pc1VuZGVyVGVzdCgpOwogfQogCiBib29sIEluc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWw6OmV2YWx1YXRlQXNCb29sZWFuKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lv
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbC5oCmluZGV4IDEzNTFlMDZlZmJiNTNhMmI3NDY2NjViNWI2YjIwN2IzNDdi
ZjFjMGMuLjg4YjgzYjM0NzQ0NDQwNDlhYTdiOTJkZmU1NzUyNjA1MzBiZWY3MGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBz
ZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogICAg
IH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKElu
c3BlY3RvckNvbnRyb2xsZXIqLCBQYWdlKiwgc3RkOjp1bmlxdWVfcHRyPFNldHRpbmdzPik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbChJbnNwZWN0b3JD
b250cm9sbGVyKiBpbnNwZWN0ZWRQYWdlQ29udHJvbGxlciwgUGFnZSogZnJvbnRlbmRQYWdlLCBz
dGQ6OnVuaXF1ZV9wdHI8U2V0dGluZ3M+KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5J
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgd2luZG93T2JqZWN0Q2xlYXJlZCgpIG92ZXJyaWRlIGZpbmFsOwpAQCAtMTE0LDcg
KzExNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBldmFsdWF0ZU9uTG9hZChjb25zdCBTdHJpbmcm
IGV4cHJlc3Npb24pOwogCiAgICAgZnJpZW5kIGNsYXNzIEZyb250ZW5kTWVudVByb3ZpZGVyOwot
ICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIG1faW5zcGVjdG9yQ29udHJvbGxlciB7IG51bGxwdHIg
fTsKKyAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBtX2luc3BlY3RlZFBhZ2VDb250cm9sbGVyIHsg
bnVsbHB0ciB9OwogICAgIFBhZ2UqIG1fZnJvbnRlbmRQYWdlIHsgbnVsbHB0ciB9OwogICAgIC8v
IFRPRE8oeXVyeXMpOiB0aGlzIHJlZiBzaG91bGRuJ3QgYmUgbmVlZGVkLgogICAgIFJlZlB0cjxJ
bnNwZWN0b3JGcm9udGVuZEhvc3Q+IG1fZnJvbnRlbmRIb3N0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCmluZGV4IGRkYjg2OGZmYzA2N2JhZmQ0NDYw
ZjI1ZTViMjc5NDk5NzQzOWVjNzQuLmEzMWRhNzkyNzc1Mzc2MDEwNjI2ZjAxNGQyZTkwMjJiOWIw
MDc4NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVy
bGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5j
cHAKQEAgLTk0Nyw3ICs5NDcsNyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmV2YWx1YXRlSW5P
dmVybGF5KGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWZQdHI8SW5zcGVjdG9yVgogCiB2b2lkIElu
c3BlY3Rvck92ZXJsYXk6OmZyZWVQYWdlKCkKIHsKLSAgICBtX292ZXJsYXlQYWdlLnJlc2V0KCk7
CisgICAgbV9vdmVybGF5UGFnZSA9IG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCA4YzU3ZDZlNGRhZTZiZTY0
MDYxNzlmYWVhZjQyNGZjMTVkYjg0NWVkLi4wZjAwZDdiNmNlMTU3MTJhNGRhNGFmZGZjOGMzYzQx
MzYyN2Q0NDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC01OTMsMTAg
KzU5MywxMCBAQCBwdWJsaWM6CiAgICAgRW1wdHlJbnNwZWN0b3JDbGllbnQoKSB7IH0KICAgICB2
aXJ0dWFsIH5FbXB0eUluc3BlY3RvckNsaWVudCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGlu
c3BlY3RvckRlc3Ryb3llZCgpIG92ZXJyaWRlIHsgfQorICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0
ZWRQYWdlRGVzdHJveWVkKCkgb3ZlcnJpZGUgeyB9CiAgICAgCi0gICAgdmlydHVhbCBJbnNwZWN0
b3I6OkZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRy
b2xsZXIqKSBvdmVycmlkZSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlSW5z
cGVjdG9yRnJvbnRlbmQoKSBvdmVycmlkZSB7IH0KKyAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6RnJv
bnRlbmRDaGFubmVsKiBvcGVuTG9jYWxGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikgb3Zl
cnJpZGUgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgdm9pZCBjbG9zZUxvY2FsRnJvbnRlbmQo
KSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQoKSBv
dmVycmlkZSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHQoKSBvdmVycmlkZSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudElPUy5tbQppbmRleCA4MWIwNmVhYWVkNzQxNDI2ZWVjYWY3Zjg3OWRiMzU1NWE5
NDEyNjljLi4xMDY1MWQ4ZGMxZTBjOWJiMDY2MzE0YmU4MTg2NzExM2FjNmYxNGNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50SU9TLm1tCkBAIC00OSwxMiArNDksMTIgQEAgV2ViSW5zcGVjdG9yQ2xpZW50OjpXZWJJ
bnNwZWN0b3JDbGllbnQoV2ViVmlldyAqd2ViVmlldykKIHsKIH0KIAotdm9pZCBXZWJJbnNwZWN0
b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCgpCit2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6
aW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpCiB7CiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLUluc3Bl
Y3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JG
cm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikKK0luc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVs
KiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5Mb2NhbEZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xs
ZXIqKQogewogICAgIC8vIGlPUyBkb2VzIG5vdCBoYXZlIGEgbG9jYWwgaW5zcGVjdG9yLCB0aGlz
IHNob3VsZCBub3QgYmUgcmVhY2hlZC4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTY2
LDcgKzY2LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmJyaW5nRnJvbnRlbmRUb0Zyb250
KCkKICAgICAvLyBpT1MgZG9lcyBub3QgaGF2ZSBhIGxvY2FsIGluc3BlY3Rvciwgbm90aGluZyB0
byBkbyBoZXJlLgogfQogCi12b2lkIFdlYkluc3BlY3RvckNsaWVudDo6Y2xvc2VJbnNwZWN0b3JG
cm9udGVuZCgpCit2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6Y2xvc2VMb2NhbEZyb250ZW5kKCkK
IHsKICAgICAvLyBpT1MgZG9lcyBub3QgaGF2ZSBhIGxvY2FsIGluc3BlY3Rvciwgbm90aGluZyB0
byBkbyBoZXJlLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCBkMGQ0NGE2YWQxMWEzOGJkNWE5NGQyOTBjNjJk
ZWM3YmRhNGQ4MTcxLi43MzM3MDI0NDlkYmJhZTg3MzJlODQ2NjllN2E3MzQ2YzUyYWVmZDU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuaApAQCAtNTEsMTIgKzUxLDEyIEBAIGNsYXNzIFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50OwogCiBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5z
cGVjdG9yQ2xpZW50LCBwdWJsaWMgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwgewogcHVibGlj
OgotICAgIGV4cGxpY2l0IFdlYkluc3BlY3RvckNsaWVudChXZWJWaWV3ICopOworICAgIGV4cGxp
Y2l0IFdlYkluc3BlY3RvckNsaWVudChXZWJWaWV3KiBpbnNwZWN0ZWRXZWJWaWV3KTsKIAotICAg
IHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgaW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBJ
bnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6
Okluc3BlY3RvckNvbnRyb2xsZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJ
bnNwZWN0b3JGcm9udGVuZCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpGcm9u
dGVuZENoYW5uZWwqIG9wZW5Mb2NhbEZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2VMb2NhbEZyb250ZW5kKCkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCkgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlc2l6ZU1haW5GcmFtZShXZWJDb3JlOjpGcmFtZSopIG92
ZXJyaWRlOwogCkBAIC05Miw5ICs5Miw5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OlNldHRpbmdz
PiBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCk7CiAKLSAgICBXZWJWaWV3ICptX3dlYlZpZXc7Cisg
ICAgV2ViVmlldyAqbV9pbnNwZWN0ZWRXZWJWaWV3IHsgbnVsbHB0ciB9OwogICAgIFJldGFpblB0
cjxXZWJOb2RlSGlnaGxpZ2h0ZXI+IG1faGlnaGxpZ2h0ZXI7Ci0gICAgV2ViQ29yZTo6UGFnZSog
bV9mcm9udGVuZFBhZ2U7CisgICAgV2ViQ29yZTo6UGFnZSogbV9mcm9udGVuZFBhZ2UgeyBudWxs
cHRyIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PiBt
X2Zyb250ZW5kQ2xpZW50OwogfTsKIApAQCAtMTM0LDcgKzEzNCw3IEBAIHByaXZhdGU6CiAKICNp
ZiAhUExBVEZPUk0oSU9TKQogICAgIFdlYlZpZXcqIG1faW5zcGVjdGVkV2ViVmlldzsKLSAgICBS
ZXRhaW5QdHI8V2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlcj4gbV93aW5kb3dDb250cm9sbGVy
OworICAgIFJldGFpblB0cjxXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyPiBtX2Zyb250ZW5k
V2luZG93Q29udHJvbGxlcjsKICAgICBTdHJpbmcgbV9pbnNwZWN0ZWRVUkw7CiAgICAgSGFzaE1h
cDxTdHJpbmcsIFJldGFpblB0cjxOU1VSTD4+IG1fc3VnZ2VzdGVkVG9BY3R1YWxVUkxNYXA7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5tbQppbmRleCA0ZGU4YzQwZTc0OTcyYjU2OGM2Y2YzZWI4M2M1MGI2ZjU1
ODA4N2IxLi5jOGMxZDhiMDU5MWEyM2FhYzFlYjQzMjVhNjlkZTc0NjQ4OGI3YWE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lm1tCkBAIC02OCwyNCArNjgsMjQgQEAgc3RhdGljIGNvbnN0IENHRmxvYXQgaW5pdGlhbFdp
bmRvd0hlaWdodCA9IDY1MDsKIEBpbnRlcmZhY2UgV2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxl
ciA6IE5TV2luZG93Q29udHJvbGxlciA8TlNXaW5kb3dEZWxlZ2F0ZSwgV2ViUG9saWN5RGVsZWdh
dGUsIFdlYlVJRGVsZWdhdGU+IHsKIEBwcml2YXRlCiAgICAgUmV0YWluUHRyPFdlYlZpZXc+IF9p
bnNwZWN0ZWRXZWJWaWV3OwotICAgIFdlYlZpZXcgKl93ZWJWaWV3OwotICAgIFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50KiBfZnJvbnRlbmRDbGllbnQ7Ci0gICAgV2ViSW5zcGVjdG9yQ2xpZW50
KiBfaW5zcGVjdG9yQ2xpZW50OworICAgIFdlYlZpZXcgKl9mcm9udGVuZFdlYlZpZXc7CisgICAg
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgKl9mcm9udGVuZENsaWVudDsKKyAgICBXZWJJbnNw
ZWN0b3JDbGllbnQgKl9pbnNwZWN0b3JDbGllbnQ7CiAgICAgQk9PTCBfYXR0YWNoZWRUb0luc3Bl
Y3RlZFdlYlZpZXc7CiAgICAgQk9PTCBfc2hvdWxkQXR0YWNoOwogICAgIEJPT0wgX3Zpc2libGU7
CiAgICAgQk9PTCBfZGVzdHJveWluZ0luc3BlY3RvclZpZXc7CiB9Ci0tIChpZClpbml0V2l0aElu
c3BlY3RlZFdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGlzVW5kZXJUZXN0OihCT09MKWlzVW5k
ZXJUZXN0OworLSAoaWQpaW5pdFdpdGhJbnNwZWN0ZWRXZWJWaWV3OihXZWJWaWV3ICopaW5zcGVj
dGVkV2ViVmlldyBpc1VuZGVyVGVzdDooQk9PTClpc1VuZGVyVGVzdDsKIC0gKE5TU3RyaW5nICop
aW5zcGVjdG9yUGFnZVBhdGg7CiAtIChOU1N0cmluZyAqKWluc3BlY3RvclRlc3RQYWdlUGF0aDsK
LS0gKFdlYlZpZXcgKil3ZWJWaWV3OworLSAoV2ViVmlldyAqKWZyb250ZW5kV2ViVmlldzsKIC0g
KHZvaWQpYXR0YWNoOwogLSAodm9pZClkZXRhY2g7CiAtIChCT09MKWF0dGFjaGVkOwotLSAodm9p
ZClzZXRGcm9udGVuZENsaWVudDooV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqKWZyb250ZW5k
Q2xpZW50OwotLSAodm9pZClzZXRJbnNwZWN0b3JDbGllbnQ6KFdlYkluc3BlY3RvckNsaWVudCop
aW5zcGVjdG9yQ2xpZW50OwotLSAoV2ViSW5zcGVjdG9yQ2xpZW50KilpbnNwZWN0b3JDbGllbnQ7
CistICh2b2lkKXNldEZyb250ZW5kQ2xpZW50OihXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCAq
KWZyb250ZW5kQ2xpZW50OworLSAodm9pZClzZXRJbnNwZWN0b3JDbGllbnQ6KFdlYkluc3BlY3Rv
ckNsaWVudCAqKWluc3BlY3RvckNsaWVudDsKKy0gKFdlYkluc3BlY3RvckNsaWVudCAqKWluc3Bl
Y3RvckNsaWVudDsKIC0gKHZvaWQpc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQ6KHVuc2lnbmVkKWhl
aWdodDsKIC0gKHZvaWQpc2V0RG9ja2luZ1VuYXZhaWxhYmxlOihCT09MKXVuYXZhaWxhYmxlOwog
LSAodm9pZClkZXN0cm95SW5zcGVjdG9yVmlldzsKQEAgLTk0LDM2ICs5NCwzNSBAQCBAZW5kCiAK
IC8vIE1BUks6IC0KIAotV2ViSW5zcGVjdG9yQ2xpZW50OjpXZWJJbnNwZWN0b3JDbGllbnQoV2Vi
VmlldyAqd2ViVmlldykKLSAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQotICAgICwgbV9oaWdobGln
aHRlcihhZG9wdE5TKFtbV2ViTm9kZUhpZ2hsaWdodGVyIGFsbG9jXSBpbml0V2l0aEluc3BlY3Rl
ZFdlYlZpZXc6d2ViVmlld10pKQotICAgICwgbV9mcm9udGVuZFBhZ2UobnVsbHB0cikKK1dlYklu
c3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcqIGluc3BlY3RlZFdlYlZp
ZXcpCisgICAgOiBtX2luc3BlY3RlZFdlYlZpZXcoaW5zcGVjdGVkV2ViVmlldykKKyAgICAsIG1f
aGlnaGxpZ2h0ZXIoYWRvcHROUyhbW1dlYk5vZGVIaWdobGlnaHRlciBhbGxvY10gaW5pdFdpdGhJ
bnNwZWN0ZWRXZWJWaWV3Omluc3BlY3RlZFdlYlZpZXddKSkKIHsKIH0KIAotdm9pZCBXZWJJbnNw
ZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCgpCit2b2lkIFdlYkluc3BlY3RvckNsaWVu
dDo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpCiB7Ci0gICAgY2xvc2VJbnNwZWN0b3JGcm9udGVu
ZCgpOworICAgIGNsb3NlTG9jYWxGcm9udGVuZCgpOwogICAgIGRlbGV0ZSB0aGlzOwogfQogCi1G
cm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5k
KEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIpCitGcm9udGVuZENoYW5u
ZWwqIFdlYkluc3BlY3RvckNsaWVudDo6b3BlbkxvY2FsRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJv
bGxlciogaW5zcGVjdGVkUGFnZUNvbnRyb2xsZXIpCiB7Ci0gICAgUmV0YWluUHRyPFdlYkluc3Bl
Y3RvcldpbmRvd0NvbnRyb2xsZXI+IHdpbmRvd0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV2ViSW5z
cGVjdG9yV2luZG93Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0ZWRXZWJWaWV3Om1f
d2ViVmlldyBpc1VuZGVyVGVzdDppbnNwZWN0b3JDb250cm9sbGVyLT5pc1VuZGVyVGVzdCgpXSk7
CisgICAgUmV0YWluUHRyPFdlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXI+IHdpbmRvd0NvbnRy
b2xsZXIgPSBhZG9wdE5TKFtbV2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlciBhbGxvY10gaW5p
dFdpdGhJbnNwZWN0ZWRXZWJWaWV3Om1faW5zcGVjdGVkV2ViVmlldyBpc1VuZGVyVGVzdDppbnNw
ZWN0ZWRQYWdlQ29udHJvbGxlci0+aXNVbmRlclRlc3QoKV0pOwogICAgIFt3aW5kb3dDb250cm9s
bGVyLmdldCgpIHNldEluc3BlY3RvckNsaWVudDp0aGlzXTsKIAotICAgIG1fZnJvbnRlbmRQYWdl
ID0gY29yZShbd2luZG93Q29udHJvbGxlci5nZXQoKSB3ZWJWaWV3XSk7Ci0gICAgbV9mcm9udGVu
ZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1f
d2ViVmlldywgd2luZG93Q29udHJvbGxlci5nZXQoKSwgaW5zcGVjdG9yQ29udHJvbGxlciwgbV9m
cm9udGVuZFBhZ2UsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7CisgICAgbV9mcm9udGVuZFBh
Z2UgPSBjb3JlKFt3aW5kb3dDb250cm9sbGVyLmdldCgpIGZyb250ZW5kV2ViVmlld10pOworICAg
IG1fZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50PihtX2luc3BlY3RlZFdlYlZpZXcsIHdpbmRvd0NvbnRyb2xsZXIuZ2V0KCksIGluc3Bl
Y3RlZFBhZ2VDb250cm9sbGVyLCBtX2Zyb250ZW5kUGFnZSwgY3JlYXRlRnJvbnRlbmRTZXR0aW5n
cygpKTsKIAogICAgIFJldGFpblB0cjxXZWJJbnNwZWN0b3JGcm9udGVuZD4gd2ViSW5zcGVjdG9y
RnJvbnRlbmQgPSBhZG9wdE5TKFtbV2ViSW5zcGVjdG9yRnJvbnRlbmQgYWxsb2NdIGluaXRXaXRo
RnJvbnRlbmRDbGllbnQ6bV9mcm9udGVuZENsaWVudC5nZXQoKV0pOwotICAgIFtbbV93ZWJWaWV3
IGluc3BlY3Rvcl0gc2V0RnJvbnRlbmQ6d2ViSW5zcGVjdG9yRnJvbnRlbmQuZ2V0KCldOworICAg
IFtbbV9pbnNwZWN0ZWRXZWJWaWV3IGluc3BlY3Rvcl0gc2V0RnJvbnRlbmQ6d2ViSW5zcGVjdG9y
RnJvbnRlbmQuZ2V0KCldOwogCiAgICAgbV9mcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChtX2Zyb250ZW5kQ2xpZW50LmdldCgpKTsK
IAogICAgIHJldHVybiB0aGlzOwogfQogCi12b2lkIFdlYkluc3BlY3RvckNsaWVudDo6Y2xvc2VJ
bnNwZWN0b3JGcm9udGVuZCgpCit2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6Y2xvc2VMb2NhbEZy
b250ZW5kKCkKIHsKICAgICBpZiAobV9mcm9udGVuZENsaWVudCkKICAgICAgICAgbV9mcm9udGVu
ZENsaWVudC0+ZGlzY29ubmVjdEZyb21CYWNrZW5kKCk7CkBAIC0xNjQsNyArMTYzLDcgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmhpZGVIaWdobGlnaHQoKQogCiB2b2lkIFdlYkluc3BlY3Rv
ckNsaWVudDo6ZGlkU2V0U2VhcmNoaW5nRm9yTm9kZShib29sIGVuYWJsZWQpCiB7Ci0gICAgV2Vi
SW5zcGVjdG9yICppbnNwZWN0b3IgPSBbbV93ZWJWaWV3IGluc3BlY3Rvcl07CisgICAgV2ViSW5z
cGVjdG9yICppbnNwZWN0b3IgPSBbbV9pbnNwZWN0ZWRXZWJWaWV3IGluc3BlY3Rvcl07CiAKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCkBAIC0xODEsMjMgKzE4MCwyMyBAQCB2b2lkIFdl
Ykluc3BlY3RvckNsaWVudDo6cmVsZWFzZUZyb250ZW5kKCkKIH0KIAogCi1XZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV2ViVmlldyogaW5zcGVj
dGVkV2ViVmlldywgV2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlciogd2luZG93Q29udHJvbGxl
ciwgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgUGFnZSogZnJvbnRl
bmRQYWdlLCBzdGQ6OnVuaXF1ZV9wdHI8U2V0dGluZ3M+IHNldHRpbmdzKQotICAgIDogSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbChpbnNwZWN0b3JDb250cm9sbGVyLCAgZnJvbnRlbmRQYWdl
LCBXVEY6Om1vdmUoc2V0dGluZ3MpKQorV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OldlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcsIFdlYkluc3Bl
Y3RvcldpbmRvd0NvbnRyb2xsZXIqIGZyb250ZW5kV2luZG93Q29udHJvbGxlciwgSW5zcGVjdG9y
Q29udHJvbGxlciogaW5zcGVjdGVkUGFnZUNvbnRyb2xsZXIsIFBhZ2UqIGZyb250ZW5kUGFnZSwg
c3RkOjp1bmlxdWVfcHRyPFNldHRpbmdzPiBzZXR0aW5ncykKKyAgICA6IEluc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWwoaW5zcGVjdGVkUGFnZUNvbnRyb2xsZXIsIGZyb250ZW5kUGFnZSwgV1RG
Ojptb3ZlKHNldHRpbmdzKSkKICAgICAsIG1faW5zcGVjdGVkV2ViVmlldyhpbnNwZWN0ZWRXZWJW
aWV3KQotICAgICwgbV93aW5kb3dDb250cm9sbGVyKHdpbmRvd0NvbnRyb2xsZXIpCisgICAgLCBt
X2Zyb250ZW5kV2luZG93Q29udHJvbGxlcihmcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIpCiB7Ci0g
ICAgW3dpbmRvd0NvbnRyb2xsZXIgc2V0RnJvbnRlbmRDbGllbnQ6dGhpc107CisgICAgW2Zyb250
ZW5kV2luZG93Q29udHJvbGxlciBzZXRGcm9udGVuZENsaWVudDp0aGlzXTsKIH0KIAogdm9pZCBX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXR0YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChib29s
IGF2YWlsYWJsZSkKIHsKICAgICBzZXREb2NraW5nVW5hdmFpbGFibGUoIWF2YWlsYWJsZSk7Ci0g
ICAgW21fd2luZG93Q29udHJvbGxlci5nZXQoKSBzZXREb2NraW5nVW5hdmFpbGFibGU6IWF2YWls
YWJsZV07CisgICAgW21fZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyLmdldCgpIHNldERvY2tpbmdV
bmF2YWlsYWJsZTohYXZhaWxhYmxlXTsKIH0KIAogYm9vbCBXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudDo6Y2FuQXR0YWNoKCkKIHsKLSAgICBpZiAoW1ttX3dpbmRvd0NvbnRyb2xsZXIgd2luZG93
XSBzdHlsZU1hc2tdICYgTlNGdWxsU2NyZWVuV2luZG93TWFzaykKKyAgICBpZiAoW1ttX2Zyb250
ZW5kV2luZG93Q29udHJvbGxlciB3aW5kb3ddIHN0eWxlTWFza10gJiBOU0Z1bGxTY3JlZW5XaW5k
b3dNYXNrKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gY2FuQXR0YWNoV2lu
ZG93KCk7CkBAIC0yMDUsOCArMjA0LDggQEAgYm9vbCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dDo6Y2FuQXR0YWNoKCkKIAogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZnJvbnRl
bmRMb2FkZWQoKQogewotICAgIFttX3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgc2hvd1dpbmRvdzpu
aWxdOwotICAgIGlmIChbbV93aW5kb3dDb250cm9sbGVyLmdldCgpIGF0dGFjaGVkXSkKKyAgICBb
bV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgc2hvd1dpbmRvdzpuaWxdOworICAgIGlm
IChbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgYXR0YWNoZWRdKQogICAgICAgICBy
ZXN0b3JlQXR0YWNoZWRXaW5kb3dIZWlnaHQoKTsKIAogICAgIEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWw6OmZyb250ZW5kTG9hZGVkKCk7CkBAIC0yMTgsMTQgKzIxNywxNCBAQCB2b2lkIFdl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojpmcm9udGVuZExvYWRlZCgpCiAgICAgICAgIENhbGxG
cmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRpZENsZWFySW5zcGVjdG9yV2luZG93
T2JqZWN0Rm9yRnJhbWVGdW5jLCBtX2luc3BlY3RlZFdlYlZpZXcsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBAc2VsZWN0b3Iod2ViVmlldzpkaWRDbGVhckluc3BlY3RvcldpbmRvd09i
amVjdDpmb3JGcmFtZTopLCBbZnJhbWUgd2luZG93T2JqZWN0XSwgZnJhbWUpOwogCi0gICAgYm9v
bCBhdHRhY2hlZCA9IFttX3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgYXR0YWNoZWRdOworICAgIGJv
b2wgYXR0YWNoZWQgPSBbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgYXR0YWNoZWRd
OwogICAgIHNldEF0dGFjaGVkV2luZG93KGF0dGFjaGVkID8gRG9ja1NpZGU6OkJvdHRvbSA6IERv
Y2tTaWRlOjpVbmRvY2tlZCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6
OnN0YXJ0V2luZG93RHJhZygpCiB7CiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDExMDAKLSAgICBbW21fd2luZG93Q29udHJvbGxlciB3aW5kb3ddIHBlcmZvcm1XaW5k
b3dEcmFnV2l0aEV2ZW50OltOU0FwcCBjdXJyZW50RXZlbnRdXTsKKyAgICBbW21fZnJvbnRlbmRX
aW5kb3dDb250cm9sbGVyIHdpbmRvd10gcGVyZm9ybVdpbmRvd0RyYWdXaXRoRXZlbnQ6W05TQXBw
IGN1cnJlbnRFdmVudF1dOwogI2VuZGlmCiB9CiAKQEAgLTI0NCw0MCArMjQzLDQwIEBAIHZvaWQg
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmJyaW5nVG9Gcm9udCgpCiB7CiAgICAgdXBkYXRl
V2luZG93VGl0bGUoKTsKIAotICAgIFttX3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgc2hvd1dpbmRv
dzpuaWxdOworICAgIFttX2Zyb250ZW5kV2luZG93Q29udHJvbGxlci5nZXQoKSBzaG93V2luZG93
Om5pbF07CiAKLSAgICAvLyBVc2UgdGhlIHdpbmRvdyBmcm9tIHRoZSBXZWJWaWV3IHNpbmNlIG1f
d2luZG93Q29udHJvbGxlcidzIHdpbmRvdworICAgIC8vIFVzZSB0aGUgd2luZG93IGZyb20gdGhl
IFdlYlZpZXcgc2luY2UgbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIncyB3aW5kb3cKICAgICAv
LyBpcyBub3QgdGhlIHNhbWUgd2hlbiB0aGUgSW5zcGVjdG9yIGlzIGRvY2tlZC4KLSAgICBXZWJW
aWV3ICp3ZWJWaWV3ID0gW21fd2luZG93Q29udHJvbGxlci5nZXQoKSB3ZWJWaWV3XTsKLSAgICBb
W3dlYlZpZXcgd2luZG93XSBtYWtlRmlyc3RSZXNwb25kZXI6d2ViVmlld107CisgICAgV2ViVmll
dyAqZnJvbnRlbmRXZWJWaWV3ID0gW21fZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyLmdldCgpIGZy
b250ZW5kV2ViVmlld107CisgICAgW1tmcm9udGVuZFdlYlZpZXcgd2luZG93XSBtYWtlRmlyc3RS
ZXNwb25kZXI6ZnJvbnRlbmRXZWJWaWV3XTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudDo6Y2xvc2VXaW5kb3coKQogewotICAgIFttX3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkg
ZGVzdHJveUluc3BlY3RvclZpZXddOworICAgIFttX2Zyb250ZW5kV2luZG93Q29udHJvbGxlci5n
ZXQoKSBkZXN0cm95SW5zcGVjdG9yVmlld107CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6OmRpc2Nvbm5lY3RGcm9tQmFja2VuZCgpCiB7Ci0gICAgW21fd2luZG93Q29udHJv
bGxlci5nZXQoKSBkZXN0cm95SW5zcGVjdG9yVmlld107CisgICAgW21fZnJvbnRlbmRXaW5kb3dD
b250cm9sbGVyLmdldCgpIGRlc3Ryb3lJbnNwZWN0b3JWaWV3XTsKIH0KIAogdm9pZCBXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6YXR0YWNoV2luZG93KERvY2tTaWRlKQogewotICAgIGlmIChb
bV93aW5kb3dDb250cm9sbGVyLmdldCgpIGF0dGFjaGVkXSkKKyAgICBpZiAoW21fZnJvbnRlbmRX
aW5kb3dDb250cm9sbGVyLmdldCgpIGF0dGFjaGVkXSkKICAgICAgICAgcmV0dXJuOwotICAgIFtt
X3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgYXR0YWNoXTsKKyAgICBbbV9mcm9udGVuZFdpbmRvd0Nv
bnRyb2xsZXIuZ2V0KCkgYXR0YWNoXTsKICAgICByZXN0b3JlQXR0YWNoZWRXaW5kb3dIZWlnaHQo
KTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZGV0YWNoV2luZG93KCkK
IHsKLSAgICBbbV93aW5kb3dDb250cm9sbGVyLmdldCgpIGRldGFjaF07CisgICAgW21fZnJvbnRl
bmRXaW5kb3dDb250cm9sbGVyLmdldCgpIGRldGFjaF07CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQ6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkK
IHsKLSAgICBbbV93aW5kb3dDb250cm9sbGVyLmdldCgpIHNldEF0dGFjaGVkV2luZG93SGVpZ2h0
OmhlaWdodF07CisgICAgW21fZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyLmdldCgpIHNldEF0dGFj
aGVkV2luZG93SGVpZ2h0OmhlaWdodF07CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ6OnNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQpCkBAIC0yODgsNyArMjg3LDcg
QEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2V0QXR0YWNoZWRXaW5kb3dXaWR0
aCh1bnNpZ25lZCkKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNldFRvb2xiYXJI
ZWlnaHQodW5zaWduZWQgaGVpZ2h0KQogewogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPD0gMTA5MAotICAgIFtbbV93aW5kb3dDb250cm9sbGVyIHdpbmRvd10gc2V0Q29udGVu
dEJvcmRlclRoaWNrbmVzczpoZWlnaHQgZm9yRWRnZTpOU01heFlFZGdlXTsKKyAgICBbW21fZnJv
bnRlbmRXaW5kb3dDb250cm9sbGVyIHdpbmRvd10gc2V0Q29udGVudEJvcmRlclRoaWNrbmVzczpo
ZWlnaHQgZm9yRWRnZTpOU01heFlFZGdlXTsKICNlbmRpZgogfQogCkBAIC0zMDEsNyArMzAwLDcg
QEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6aW5zcGVjdGVkVVJMQ2hhbmdlZChj
b25zdCBTdHJpbmcmIG5ld1VSTCkKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnVw
ZGF0ZVdpbmRvd1RpdGxlKCkgY29uc3QKIHsKICAgICBOU1N0cmluZyAqdGl0bGUgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpVSV9TVFJJTkdfSU5URVJOQUwoIldlYiBJbnNwZWN0b3Ig4oCU
ICVAIiwgIldlYiBJbnNwZWN0b3Igd2luZG93IHRpdGxlIiksIChOU1N0cmluZyAqKW1faW5zcGVj
dGVkVVJMXTsKLSAgICBbW21fd2luZG93Q29udHJvbGxlci5nZXQoKSB3aW5kb3ddIHNldFRpdGxl
OnRpdGxlXTsKKyAgICBbW21fZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyLmdldCgpIHdpbmRvd10g
c2V0VGl0bGU6dGl0bGVdOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojpz
YXZlKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJv
b2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVEaWFsb2cpCkBAIC0zMzcsNyArMzM2LDcg
QEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2F2ZShjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJgogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIFtj
b250ZW50Q29weSB3cml0ZVRvVVJMOmFjdHVhbFVSTCBhdG9taWNhbGx5OllFUyBlbmNvZGluZzpO
U1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjpOVUxMXTsKIAotICAgICAgICBjb3JlKFttX3dpbmRv
d0NvbnRyb2xsZXIgd2ViVmlld10pLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0
KFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2F2ZWRV
UkwoXCIlQFwiKSIsIGFjdHVhbFVSTC5hYnNvbHV0ZVN0cmluZ10pOworICAgICAgICBjb3JlKFtt
X2Zyb250ZW5kV2luZG93Q29udHJvbGxlciBmcm9udGVuZFdlYlZpZXddKS0+bWFpbkZyYW1lKCku
c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3Bl
Y3RvckZyb250ZW5kQVBJLnNhdmVkVVJMKFwiJUBcIikiLCBhY3R1YWxVUkwuYWJzb2x1dGVTdHJp
bmddKTsKICAgICB9OwogCiAgICAgaWYgKCFmb3JjZVNhdmVEaWFsb2cpIHsKQEAgLTM1Niw5ICsz
NTUsOSBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKGNvbnN0IFN0cmlu
ZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcmCiAgICAgICAgIHNhdmVUb1VSTChwYW5lbC5V
UkwpOwogICAgIH07CiAKLSAgICBOU1dpbmRvdyAqd2luZG93ID0gW1ttX3dpbmRvd0NvbnRyb2xs
ZXIgd2ViVmlld10gd2luZG93XTsKLSAgICBpZiAod2luZG93KQotICAgICAgICBbcGFuZWwgYmVn
aW5TaGVldE1vZGFsRm9yV2luZG93OndpbmRvdyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9u
SGFuZGxlcl07CisgICAgTlNXaW5kb3cgKmZyb250ZW5kV2luZG93ID0gW1ttX2Zyb250ZW5kV2lu
ZG93Q29udHJvbGxlciBmcm9udGVuZFdlYlZpZXddIHdpbmRvd107CisgICAgaWYgKGZyb250ZW5k
V2luZG93KQorICAgICAgICBbcGFuZWwgYmVnaW5TaGVldE1vZGFsRm9yV2luZG93OmZyb250ZW5k
V2luZG93IGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKICAgICBlbHNlCiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtwYW5lbCBydW5Nb2RhbF0pOwogfQpAQCAtMzc3LDcg
KzM3Niw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZChjb25zdCBT
dHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nCiAgICAgW2hhbmRsZSB3cml0ZURhdGE6
W2NvbnRlbnQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKICAgICBb
aGFuZGxlIGNsb3NlRmlsZV07CiAKLSAgICBjb3JlKFttX3dpbmRvd0NvbnRyb2xsZXIgd2ViVmll
d10pLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuYXBwZW5kZWRUb1VSTChcIiVAXCIpIiwg
W2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ11dKTsKKyAgICBjb3JlKFttX2Zyb250ZW5kV2luZG93
Q29udHJvbGxlciBmcm9udGVuZFdlYlZpZXddKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0
ZVNjcmlwdChbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3RvckZyb250ZW5kQVBJ
LmFwcGVuZGVkVG9VUkwoXCIlQFwiKSIsIFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddXSk7CiB9
CiAKIC8vIE1BUks6IC0KQEAgLTQwNSwxNCArNDA0LDE0IEBAIC0gKGlkKWluaXQKICAgICBbcHJl
ZmVyZW5jZXMgc2V0VGFic1RvTGlua3M6Tk9dOwogICAgIFtwcmVmZXJlbmNlcyBzZXRVc2VyU3R5
bGVTaGVldEVuYWJsZWQ6Tk9dOwogCi0gICAgX3dlYlZpZXcgPSBbW1dlYlZpZXcgYWxsb2NdIGlu
aXRdOwotICAgIFtfd2ViVmlldyBzZXRQcmVmZXJlbmNlczpwcmVmZXJlbmNlc107Ci0gICAgW193
ZWJWaWV3IHNldFByb2hpYml0c01haW5GcmFtZVNjcm9sbGluZzpZRVNdOwotICAgIFtfd2ViVmll
dyBzZXRVSURlbGVnYXRlOnNlbGZdOwotICAgIFtfd2ViVmlldyBzZXRQb2xpY3lEZWxlZ2F0ZTpz
ZWxmXTsKKyAgICBfZnJvbnRlbmRXZWJWaWV3ID0gW1tXZWJWaWV3IGFsbG9jXSBpbml0XTsKKyAg
ICBbX2Zyb250ZW5kV2ViVmlldyBzZXRQcmVmZXJlbmNlczpwcmVmZXJlbmNlc107CisgICAgW19m
cm9udGVuZFdlYlZpZXcgc2V0UHJvaGliaXRzTWFpbkZyYW1lU2Nyb2xsaW5nOllFU107CisgICAg
W19mcm9udGVuZFdlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpzZWxmXTsKKyAgICBbX2Zyb250ZW5kV2Vi
VmlldyBzZXRQb2xpY3lEZWxlZ2F0ZTpzZWxmXTsKIAogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPD0gMTA5MAotICAgIFtfd2ViVmlldyBzZXREcmF3c0JhY2tncm91bmQ6Tk9d
OworICAgIFtfZnJvbnRlbmRXZWJWaWV3IHNldERyYXdzQmFja2dyb3VuZDpOT107CiAjZW5kaWYK
IAogICAgIFtwcmVmZXJlbmNlcyByZWxlYXNlXTsKQEAgLTQzMCw3ICs0MjksNyBAQCAtIChpZClp
bml0V2l0aEluc3BlY3RlZFdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGlzVW5kZXJUZXN0OihC
T09MKWlzVW5kZXJUZXN0CiAKICAgICBOU1N0cmluZyAqcGFnZVBhdGggPSBpc1VuZGVyVGVzdCA/
IFtzZWxmIGluc3BlY3RvclRlc3RQYWdlUGF0aF0gOiBbc2VsZiBpbnNwZWN0b3JQYWdlUGF0aF07
CiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW1tOU1VSTFJlcXVlc3QgYWxsb2NdIGluaXRX
aXRoVVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6IHBhZ2VQYXRoXV07Ci0gICAgW1tfd2ViVmll
dyBtYWluRnJhbWVdIGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIFtbX2Zyb250ZW5kV2ViVmll
dyBtYWluRnJhbWVdIGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwogICAgIFtyZXF1ZXN0IHJlbGVhc2Vd
OwogCiAgICAgcmV0dXJuIHNlbGY7CkBAIC00MzgsNyArNDM3LDcgQEAgLSAoaWQpaW5pdFdpdGhJ
bnNwZWN0ZWRXZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBpc1VuZGVyVGVzdDooQk9PTClpc1Vu
ZGVyVGVzdAogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBbX3dlYlZpZXcgcmVsZWFzZV07Cisg
ICAgW19mcm9udGVuZFdlYlZpZXcgcmVsZWFzZV07CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQog
CkBAIC00NzAsOSArNDY5LDkgQEAgLSAoTlNTdHJpbmcgKilpbnNwZWN0b3JUZXN0UGFnZVBhdGgK
IAogLy8gTUFSSzogLQogCi0tIChXZWJWaWV3ICopd2ViVmlldworLSAoV2ViVmlldyAqKWZyb250
ZW5kV2ViVmlldwogewotICAgIHJldHVybiBfd2ViVmlldzsKKyAgICByZXR1cm4gX2Zyb250ZW5k
V2ViVmlldzsKIH0KIAogLSAoTlNXaW5kb3cgKil3aW5kb3cKQEAgLTU1MCw3ICs1NDksNyBAQCAt
ICh2b2lkKWNsb3NlCiAgICAgICAgIGlmIChbX2luc3BlY3RlZFdlYlZpZXcuZ2V0KCkgX2lzQ2xv
c2VkXSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBbX3dlYlZpZXcgcmVtb3ZlRnJv
bVN1cGVydmlld107CisgICAgICAgIFtfZnJvbnRlbmRXZWJWaWV3IHJlbW92ZUZyb21TdXBlcnZp
ZXddOwogCiAgICAgICAgIFdlYkZyYW1lVmlldyAqZnJhbWVWaWV3ID0gW1tfaW5zcGVjdGVkV2Vi
Vmlldy5nZXQoKSBtYWluRnJhbWVdIGZyYW1lVmlld107CiAgICAgICAgIE5TUmVjdCBmcmFtZVZp
ZXdSZWN0ID0gW2ZyYW1lVmlldyBmcmFtZV07CkBAIC01ODgsMTEgKzU4NywxMSBAQCAtIChJQkFj
dGlvbilzaG93V2luZG93OihpZClzZW5kZXIKICAgICBpZiAoX3Nob3VsZEF0dGFjaCkgewogICAg
ICAgICBXZWJGcmFtZVZpZXcgKmZyYW1lVmlldyA9IFtbX2luc3BlY3RlZFdlYlZpZXcuZ2V0KCkg
bWFpbkZyYW1lXSBmcmFtZVZpZXddOwogCi0gICAgICAgIFtfd2ViVmlldyByZW1vdmVGcm9tU3Vw
ZXJ2aWV3XTsKLSAgICAgICAgW19pbnNwZWN0ZWRXZWJWaWV3LmdldCgpIGFkZFN1YnZpZXc6X3dl
YlZpZXcgcG9zaXRpb25lZDpOU1dpbmRvd0JlbG93IHJlbGF0aXZlVG86KE5TVmlldyAqKWZyYW1l
Vmlld107Ci0gICAgICAgIFtbX2luc3BlY3RlZFdlYlZpZXcuZ2V0KCkgd2luZG93XSBtYWtlRmly
c3RSZXNwb25kZXI6X3dlYlZpZXddOworICAgICAgICBbX2Zyb250ZW5kV2ViVmlldyByZW1vdmVG
cm9tU3VwZXJ2aWV3XTsKKyAgICAgICAgW19pbnNwZWN0ZWRXZWJWaWV3LmdldCgpIGFkZFN1YnZp
ZXc6X2Zyb250ZW5kV2ViVmlldyBwb3NpdGlvbmVkOk5TV2luZG93QmVsb3cgcmVsYXRpdmVUbzoo
TlNWaWV3ICopZnJhbWVWaWV3XTsKKyAgICAgICAgW1tfaW5zcGVjdGVkV2ViVmlldy5nZXQoKSB3
aW5kb3ddIG1ha2VGaXJzdFJlc3BvbmRlcjpfZnJvbnRlbmRXZWJWaWV3XTsKIAotICAgICAgICBb
X3dlYlZpZXcgc2V0QXV0b3Jlc2l6aW5nTWFzazooTlNWaWV3V2lkdGhTaXphYmxlIHwgTlNWaWV3
SGVpZ2h0U2l6YWJsZSB8IE5TVmlld01heFlNYXJnaW4pXTsKKyAgICAgICAgW19mcm9udGVuZFdl
YlZpZXcgc2V0QXV0b3Jlc2l6aW5nTWFzazooTlNWaWV3V2lkdGhTaXphYmxlIHwgTlNWaWV3SGVp
Z2h0U2l6YWJsZSB8IE5TVmlld01heFlNYXJnaW4pXTsKICAgICAgICAgW2ZyYW1lVmlldyBzZXRB
dXRvcmVzaXppbmdNYXNrOihOU1ZpZXdXaWR0aFNpemFibGUgfCBOU1ZpZXdIZWlnaHRTaXphYmxl
IHwgTlNWaWV3TWluWU1hcmdpbildOwogCiAgICAgICAgIF9hdHRhY2hlZFRvSW5zcGVjdGVkV2Vi
VmlldyA9IFlFUzsKQEAgLTYwMCwxMCArNTk5LDEwIEBAIC0gKElCQWN0aW9uKXNob3dXaW5kb3c6
KGlkKXNlbmRlcgogICAgICAgICBfYXR0YWNoZWRUb0luc3BlY3RlZFdlYlZpZXcgPSBOTzsKIAog
ICAgICAgICBOU1ZpZXcgKmNvbnRlbnRWaWV3ID0gW1tzZWxmIHdpbmRvd10gY29udGVudFZpZXdd
OwotICAgICAgICBbX3dlYlZpZXcgc2V0RnJhbWU6W2NvbnRlbnRWaWV3IGZyYW1lXV07Ci0gICAg
ICAgIFtfd2ViVmlldyBzZXRBdXRvcmVzaXppbmdNYXNrOihOU1ZpZXdXaWR0aFNpemFibGUgfCBO
U1ZpZXdIZWlnaHRTaXphYmxlKV07Ci0gICAgICAgIFtfd2ViVmlldyByZW1vdmVGcm9tU3VwZXJ2
aWV3XTsKLSAgICAgICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6X3dlYlZpZXddOworICAgICAg
ICBbX2Zyb250ZW5kV2ViVmlldyBzZXRGcmFtZTpbY29udGVudFZpZXcgZnJhbWVdXTsKKyAgICAg
ICAgW19mcm9udGVuZFdlYlZpZXcgc2V0QXV0b3Jlc2l6aW5nTWFzazooTlNWaWV3V2lkdGhTaXph
YmxlIHwgTlNWaWV3SGVpZ2h0U2l6YWJsZSldOworICAgICAgICBbX2Zyb250ZW5kV2ViVmlldyBy
ZW1vdmVGcm9tU3VwZXJ2aWV3XTsKKyAgICAgICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6X2Zy
b250ZW5kV2ViVmlld107CiAKICAgICAgICAgW3N1cGVyIHNob3dXaW5kb3c6bmlsXTsKICAgICB9
CkBAIC02NjksNyArNjY4LDcgQEAgLSAodm9pZClzZXRBdHRhY2hlZFdpbmRvd0hlaWdodDoodW5z
aWduZWQpaGVpZ2h0CiAgICAgZnJhbWVWaWV3UmVjdC5zaXplLmhlaWdodCArPSBoZWlnaHREaWZm
ZXJlbmNlOwogICAgIGZyYW1lVmlld1JlY3Qub3JpZ2luLnkgPSBoZWlnaHQ7CiAKLSAgICBbX3dl
YlZpZXcgc2V0RnJhbWU6TlNNYWtlUmVjdCgwLjAsIDAuMCwgTlNXaWR0aChmcmFtZVZpZXdSZWN0
KSwgaGVpZ2h0KV07CisgICAgW19mcm9udGVuZFdlYlZpZXcgc2V0RnJhbWU6TlNNYWtlUmVjdCgw
LjAsIDAuMCwgTlNXaWR0aChmcmFtZVZpZXdSZWN0KSwgaGVpZ2h0KV07CiAgICAgW2ZyYW1lVmll
dyBzZXRGcmFtZTpmcmFtZVZpZXdSZWN0XTsKIH0KIApAQCAtNjk5LDcgKzY5OCw3IEBAIC0gKHZv
aWQpZGVzdHJveUluc3BlY3RvclZpZXcKICAgICAgICAgaW5zcGVjdGVkUGFnZS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChfaW5zcGVjdG9yQ2xpZW50KTsKICAgICB9
CiAKLSAgICBbX3dlYlZpZXcgY2xvc2VdOworICAgIFtfZnJvbnRlbmRXZWJWaWV3IGNsb3NlXTsK
IH0KIAogLy8gTUFSSzogLQpAQCAtNzI3LDggKzcyNiw4IEBAIC0gKHZvaWQpd2ViVmlldzooV2Vi
VmlldyAqKXNlbmRlciBydW5PcGVuUGFuZWxGb3JGaWxlQnV0dG9uV2l0aFJlc3VsdExpc3RlbmVy
OihpCiAgICAgICAgIFtyZXN1bHRMaXN0ZW5lciBjaG9vc2VGaWxlbmFtZXM6ZmlsZW5hbWVzXTsK
ICAgICB9OwogCi0gICAgaWYgKF93ZWJWaWV3LndpbmRvdykKLSAgICAgICAgW3BhbmVsIGJlZ2lu
U2hlZXRNb2RhbEZvcldpbmRvdzpfd2ViVmlldy53aW5kb3cgY29tcGxldGlvbkhhbmRsZXI6Y29t
cGxldGlvbkhhbmRsZXJdOworICAgIGlmIChfZnJvbnRlbmRXZWJWaWV3LndpbmRvdykKKyAgICAg
ICAgW3BhbmVsIGJlZ2luU2hlZXRNb2RhbEZvcldpbmRvdzpfZnJvbnRlbmRXZWJWaWV3LndpbmRv
dyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiAgICAgZWxzZQogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihbcGFuZWwgcnVuTW9kYWxdKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9XZWJJbnNwZWN0b3IuaCBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkluc3BlY3Rvci9XZWJJbnNwZWN0b3IuaAppbmRleCBiNjE4NmExNGJhNTkzZjY0
MjdlNzgzN2E0MmY2NmFlNjUwNDg5N2Q2Li5lMWIyNGE5Y2MyZDY5ZTFmY2JkYTY4NDQ4ZWZiMjM1
MDZkMDQ2MGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL1dlYkluc3Bl
Y3Rvci5oCkBAIC0zNiwxMSArMzYsMTEgQEAgZXh0ZXJuIE5TU3RyaW5nICpXZWJJbnNwZWN0b3JE
aWRTdG9wU2VhcmNoaW5nRm9yTm9kZTsKIAogQGludGVyZmFjZSBXZWJJbnNwZWN0b3IgOiBOU09i
amVjdAogewotICAgIFdlYlZpZXcgKl93ZWJWaWV3OworICAgIFdlYlZpZXcgKl9pbnNwZWN0ZWRX
ZWJWaWV3OwogICAgIFdlYkluc3BlY3RvckZyb250ZW5kICpfZnJvbnRlbmQ7CiB9Ci0tIChpZClp
bml0V2l0aFdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3OwotLSAodm9pZCl3ZWJWaWV3Q2xvc2Vk
OworLSAoaWQpaW5pdFdpdGhJbnNwZWN0ZWRXZWJWaWV3OihXZWJWaWV3ICopaW5zcGVjdGVkV2Vi
VmlldzsKKy0gKHZvaWQpaW5zcGVjdGVkV2ViVmlld0Nsb3NlZDsKIC0gKHZvaWQpc2hvdzooaWQp
c2VuZGVyOwogLSAodm9pZClzaG93Q29uc29sZTooaWQpc2VuZGVyOwogLSAodm9pZCljbG9zZToo
aWQpc2VuZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL1dl
Ykluc3BlY3Rvci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9XZWJJbnNwZWN0
b3IubW0KaW5kZXggMjZkYWVmZGY5ZTVmYmI0NGM3OTFjNDQwYzdjNWE0YWVjMWIzYmE4My4uY2Jh
OGM2ZGI1OWExNzM3OTg3NmRjYzU4YzgwNWYzYjlkYzVhMmUzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yLm1tCkBAIC00MywxMSArNDMsMTEgQEAg
TlNTdHJpbmcgKldlYkluc3BlY3RvckRpZFN0YXJ0U2VhcmNoaW5nRm9yTm9kZSA9IEAiV2ViSW5z
cGVjdG9yRGlkU3RhcnRTZWFyY2hpbmcKIE5TU3RyaW5nICpXZWJJbnNwZWN0b3JEaWRTdG9wU2Vh
cmNoaW5nRm9yTm9kZSA9IEAiV2ViSW5zcGVjdG9yRGlkU3RvcFNlYXJjaGluZ0Zvck5vZGUiOwog
CiBAaW1wbGVtZW50YXRpb24gV2ViSW5zcGVjdG9yCi0tIChpZClpbml0V2l0aFdlYlZpZXc6KFdl
YlZpZXcgKil3ZWJWaWV3CistIChpZClpbml0V2l0aEluc3BlY3RlZFdlYlZpZXc6KFdlYlZpZXcg
KilpbnNwZWN0ZWRXZWJWaWV3CiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAg
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgX3dlYlZpZXcgPSB3ZWJWaWV3OyAvLyBub3QgcmV0YWlu
ZWQgdG8gcHJldmVudCBhIGN5Y2xlCisgICAgX2luc3BlY3RlZFdlYlZpZXcgPSBpbnNwZWN0ZWRX
ZWJWaWV3OyAvLyBub3QgcmV0YWluZWQgdG8gcHJldmVudCBhIGN5Y2xlCiAKICAgICByZXR1cm4g
c2VsZjsKIH0KQEAgLTU4LDE1ICs1OCwxNSBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBbc3VwZXIg
ZGVhbGxvY107CiB9CiAKLS0gKHZvaWQpd2ViVmlld0Nsb3NlZAorLSAodm9pZClpbnNwZWN0ZWRX
ZWJWaWV3Q2xvc2VkCiB7Ci0gICAgX3dlYlZpZXcgPSBuaWw7CisgICAgX2luc3BlY3RlZFdlYlZp
ZXcgPSBuaWw7CiB9CiAKIC0gKHZvaWQpc2hvd1dpbmRvdwogewotICAgIGlmIChQYWdlKiBwYWdl
ID0gY29yZShfd2ViVmlldykpCi0gICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5z
aG93KCk7CisgICAgaWYgKFBhZ2UqIGluc3BlY3RlZFBhZ2UgPSBjb3JlKF9pbnNwZWN0ZWRXZWJW
aWV3KSkKKyAgICAgICAgaW5zcGVjdGVkUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3co
KTsKIH0KIAogLSAodm9pZClzaG93OihpZClzZW5kZXIKQEAgLTE1Nyw4ICsxNTcsOCBAQCAtIChC
T09MKWlzT3BlbgogCiAtICh2b2lkKWNsb3NlOihpZClzZW5kZXIgCiB7Ci0gICAgaWYgKFBhZ2Uq
IHBhZ2UgPSBjb3JlKF93ZWJWaWV3KSkKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLmNsb3NlKCk7CisgICAgaWYgKFBhZ2UqIGluc3BlY3RlZFBhZ2UgPSBjb3JlKF9pbnNwZWN0
ZWRXZWJWaWV3KSkKKyAgICAgICAgaW5zcGVjdGVkUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LmNsb3NlKCk7CiB9CiAKIC0gKHZvaWQpYXR0YWNoOihpZClzZW5kZXIKQEAgLTE3Myw4ICsxNzMs
MTAgQEAgLSAodm9pZClkZXRhY2g6KGlkKXNlbmRlcgogCiAtICh2b2lkKWV2YWx1YXRlSW5Gcm9u
dGVuZDooaWQpc2VuZGVyIHNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHQKIHsKLSAgICBpZiAoUGFn
ZSogcGFnZSA9IGNvcmUoX3dlYlZpZXcpKQotICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9s
bGVyKCkuZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChzY3JpcHQpOworICAgIC8vIEZJWE1FOiB0
aGlzIGlzIGEgcmVhbGx5IHJvdW5kYWJvdXQgd2F5IHRvIGV2YWx1YXRlIGluIHRoZSBmcm9udGVu
ZC4KKyAgICAvLyBXZSBjb3VsZCBkaXJlY3RseSB1c2UgdGhlIGZyb250ZW5kIGluc3RlYWQgb2Yg
Z29pbmcgdGhyb3VnaCB0aGUgaW5zcGVjdGVkIHBhZ2UuCisgICAgaWYgKFBhZ2UqIGluc3BlY3Rl
ZFBhZ2UgPSBjb3JlKF9pbnNwZWN0ZWRXZWJWaWV3KSkKKyAgICAgICAgaW5zcGVjdGVkUGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoc2NyaXB0KTsK
IH0KIAogLSAodm9pZClzZXRGcm9udGVuZDooV2ViSW5zcGVjdG9yRnJvbnRlbmQgKilmcm9udGVu
ZApAQCAtMTg1LDYgKzE4Nyw2IEBAIC0gKHZvaWQpc2V0RnJvbnRlbmQ6KFdlYkluc3BlY3RvckZy
b250ZW5kICopZnJvbnRlbmQKIC0gKHZvaWQpcmVsZWFzZUZyb250ZW5kCiB7CiAgICAgW19mcm9u
dGVuZCByZWxlYXNlXTsKLSAgICBfZnJvbnRlbmQgPSAwOworICAgIF9mcm9udGVuZCA9IG5pbDsK
IH0KIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYktpdC5vcmRlciBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYktpdC5vcmRlcgppbmRleCA3MTYyMTcyY2Q2MTA3NGQ3NTkwOGQz
YmE0NTFkM2U1NmYzZWY1NWZlLi4wOTE5YmUwOGQ1ODQ0MjVjNmUwNjhmNDQxYzA1M2U2NzA4YmUx
MTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQub3JkZXIKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViS2l0Lm9yZGVyCkBAIC0xMDIwLDggKzEwMjAsOCBAQCBfX1pOMjRX
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnREMEV2CiBfX1pOMTVDb3JyZWN0aW9uUGFuZWw3ZGlzbWlz
c0VON1dlYkNvcmUzNFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHRFCiBfX1pOMTVD
b3JyZWN0aW9uUGFuZWxEMUV2CiBfX1pOMTVDb3JyZWN0aW9uUGFuZWxEMkV2Ci1fX1pOMThXZWJJ
bnNwZWN0b3JDbGllbnQxOGluc3BlY3RvckRlc3Ryb3llZEV2Ci1fX1pOMThXZWJJbnNwZWN0b3JD
bGllbnQyMmNsb3NlSW5zcGVjdG9yRnJvbnRlbmRFdgorX19aTjE4V2ViSW5zcGVjdG9yQ2xpZW50
MjJpbnNwZWN0ZWRQYWdlRGVzdHJveWVkRXYKK19fWk4xOFdlYkluc3BlY3RvckNsaWVudDE4Y2xv
c2VMb2NhbEZyb250ZW5kRXYKIF9fWk4xOFdlYkluc3BlY3RvckNsaWVudEQwRXYKIC1bV2ViTm9k
ZUhpZ2hsaWdodGVyIGRlYWxsb2NdCiBfX1pOMjBXZWJGcmFtZUxvYWRlckNsaWVudDIwZnJhbWVM
b2FkZXJEZXN0cm95ZWRFdgpAQCAtMTUyNyw3ICsxNTI3LDcgQEAgX19aNGNvcmVQMTRXZWJIaXN0
b3J5SXRlbQogLVtXZWJCYWNrRm9yd2FyZExpc3QgZ29Ub0l0ZW06XQogLVtXZWJJbnNwZWN0b3Ig
c2hvdzpdCiAtW1dlYkluc3BlY3RvciBzaG93V2luZG93XQotX19aTjE4V2ViSW5zcGVjdG9yQ2xp
ZW50MjFvcGVuSW5zcGVjdG9yRnJvbnRlbmRFUE43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxl
ckUKK19fWk4xOFdlYkluc3BlY3RvckNsaWVudDE3b3BlbkxvY2FsRnJvbnRlbmRFUE43V2ViQ29y
ZTE5SW5zcGVjdG9yQ29udHJvbGxlckUKIC1bV2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlciAu
Y3h4X2NvbnN0cnVjdF0KIC1bV2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlciBpbml0V2l0aElu
c3BlY3RlZFdlYlZpZXc6XQogLVtXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyIGluaXRdCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggMGE5ODJkNmNiMmFjZWVjMGFiNDdj
NDUyY2M0OTQ1N2Y2YTdiNzc2My4uOGY3OWUyNmNlNzhmZDFlYmRhZjRmN2IwMWUyYjk5MGNiYjU3
MzRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTc1Niw3ICsxNzU2
LDcgQEAgLSAodm9pZClfY2xvc2UKICAgICBbc2VsZiBzZXRTY3JpcHREZWJ1Z0RlbGVnYXRlOm5p
bF07CiAgICAgW3NlbGYgc2V0VUlEZWxlZ2F0ZTpuaWxdOwogCi0gICAgW19wcml2YXRlLT5pbnNw
ZWN0b3Igd2ViVmlld0Nsb3NlZF07CisgICAgW19wcml2YXRlLT5pbnNwZWN0b3IgaW5zcGVjdGVk
V2ViVmlld0Nsb3NlZF07CiAjZW5kaWYKICNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwCiAgICAgW19wcml2YXRlLT5pbW1lZGlhdGVB
Y3Rpb25Db250cm9sbGVyIHdlYlZpZXdDbG9zZWRdOwpAQCAtMTg5MCw3ICsxODkwLDcgQEAgLSAo
V2ViVmlldyAqKV9vcGVuTmV3V2luZG93V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVl
c3QKIC0gKFdlYkluc3BlY3RvciAqKWluc3BlY3RvcgogewogICAgIGlmICghX3ByaXZhdGUtPmlu
c3BlY3RvcikKLSAgICAgICAgX3ByaXZhdGUtPmluc3BlY3RvciA9IFtbV2ViSW5zcGVjdG9yIGFs
bG9jXSBpbml0V2l0aFdlYlZpZXc6c2VsZl07CisgICAgICAgIF9wcml2YXRlLT5pbnNwZWN0b3Ig
PSBbW1dlYkluc3BlY3RvciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0ZWRXZWJWaWV3OnNlbGZdOwog
ICAgIHJldHVybiBfcHJpdmF0ZS0+aW5zcGVjdG9yOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCAz
NzE3NzQwODFmMmFhMGQzOGRiMGNjOGFlM2QwMDkxMWRjYjk4Y2IxLi44MjMwNWM4ODE5Y2RiZDIz
ODc2ZWMzNjI3NTVjZDhhNjJlZGE4NzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTcyLDEzICs3Miwx
MyBAQCBXZWJJbnNwZWN0b3JDbGllbnQ6On5XZWJJbnNwZWN0b3JDbGllbnQoKQogewogfQogCi12
b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJveWVkKCkKK3ZvaWQgV2ViSW5z
cGVjdG9yQ2xpZW50OjppbnNwZWN0ZWRQYWdlRGVzdHJveWVkKCkKIHsKLSAgICBjbG9zZUluc3Bl
Y3RvckZyb250ZW5kKCk7CisgICAgY2xvc2VMb2NhbEZyb250ZW5kKCk7CiAgICAgZGVsZXRlIHRo
aXM7CiB9CiAKLUluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6
Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250
cm9sbGVyKQorSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3RvckNsaWVudDo6
b3BlbkxvY2FsRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxl
cikKIHsKICAgICByZWdpc3RlcldpbmRvd0NsYXNzKCk7CiAKQEAgLTE3MSw3ICsxNzEsNyBAQCBJ
bnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVj
dG9yRnJvbnRlbmQoSW5zcGVjdG9yQwogICAgIHJldHVybiB0aGlzOwogfQogCi12b2lkIFdlYklu
c3BlY3RvckNsaWVudDo6Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpCit2b2lkIFdlYkluc3BlY3Rv
ckNsaWVudDo6Y2xvc2VMb2NhbEZyb250ZW5kKCkKIHsKICAgICBpZiAobV9mcm9udGVuZENsaWVu
dCkKICAgICAgICAgbV9mcm9udGVuZENsaWVudC0+ZGVzdHJveUluc3BlY3RvclZpZXcoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmgKaW5kZXggNDM1MTVhMGRlZTI5NTViZjA1ODY5Zjc5OWQ2ZDZlZTU2ZWVhNzc5My4uMjRl
OGI3YjdmMGVlNjUyZjNkZWVjZmNhMGRhOWE5NjE1MGFhMTg1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTUz
LDEwICs1MywxMCBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yQ2xpZW50KFdl
YlZpZXcqKTsKIAogICAgIC8vIEluc3BlY3RvckNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBpbnNw
ZWN0b3JEZXN0cm95ZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdGVkUGFnZURlc3Ryb3ll
ZCgpOwogCi0gICAgdmlydHVhbCBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3Bl
Y3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKTsKLSAgICB2aXJ0dWFs
IHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpOworICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpG
cm9udGVuZENoYW5uZWwqIG9wZW5Mb2NhbEZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2VMb2NhbEZyb250ZW5kKCk7CiAgICAgdmly
dHVhbCB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgaGln
aGxpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJJbnNwZWN0b3IuY3Bw
IGIvU291cmNlL1dlYktpdC93aW4vV2ViSW5zcGVjdG9yLmNwcAppbmRleCAxYWVkYjdhMjI3Mzli
NmRhNmU2YzY4OWY1ZDgyYTljNmU0Yjg1OGM0Li5jMDI4NTBlZjE1OWFiYTVmYjI0NTk3NDA3YzYx
ZDFhMjU2YjM0ZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJJbnNwZWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkluc3BlY3Rvci5jcHAKQEAgLTM3LDE4ICsz
NywxOCBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotV2ViSW5zcGVjdG9yKiBXZWJJ
bnNwZWN0b3I6OmNyZWF0ZUluc3RhbmNlKFdlYlZpZXcqIHdlYlZpZXcsIFdlYkluc3BlY3RvckNs
aWVudCogaW5zcGVjdG9yQ2xpZW50KQorV2ViSW5zcGVjdG9yKiBXZWJJbnNwZWN0b3I6OmNyZWF0
ZUluc3RhbmNlKFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcsIFdlYkluc3BlY3RvckNsaWVudCog
aW5zcGVjdG9yQ2xpZW50KQogewotICAgIFdlYkluc3BlY3RvciogaW5zcGVjdG9yID0gbmV3IFdl
Ykluc3BlY3Rvcih3ZWJWaWV3LCBpbnNwZWN0b3JDbGllbnQpOworICAgIFdlYkluc3BlY3Rvciog
aW5zcGVjdG9yID0gbmV3IFdlYkluc3BlY3RvcihpbnNwZWN0ZWRXZWJWaWV3LCBpbnNwZWN0b3JD
bGllbnQpOwogICAgIGluc3BlY3Rvci0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIGluc3BlY3RvcjsK
IH0KIAotV2ViSW5zcGVjdG9yOjpXZWJJbnNwZWN0b3IoV2ViVmlldyogd2ViVmlldywgV2ViSW5z
cGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQpCi0gICAgOiBtX3dlYlZpZXcod2ViVmlldykK
K1dlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcsIFdl
Ykluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50KQorICAgIDogbV9pbnNwZWN0ZWRXZWJW
aWV3KGluc3BlY3RlZFdlYlZpZXcpCiAgICAgLCBtX2luc3BlY3RvckNsaWVudChpbnNwZWN0b3JD
bGllbnQpCiB7Ci0gICAgQVNTRVJUX0FSRyh3ZWJWaWV3LCB3ZWJWaWV3KTsKKyAgICBBU1NFUlRf
QVJHKGluc3BlY3RlZFdlYlZpZXcsIGluc3BlY3RlZFdlYlZpZXcpOwogCiAgICAgZ0NsYXNzQ291
bnQrKzsKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkluc3BlY3RvciIpOwpAQCAtNjUs
OSArNjUsOSBAQCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCogV2ViSW5zcGVjdG9yOjpmcm9u
dGVuZENsaWVudCgpCiAgICAgcmV0dXJuIG1faW5zcGVjdG9yQ2xpZW50ID8gbV9pbnNwZWN0b3JD
bGllbnQtPmZyb250ZW5kQ2xpZW50KCkgOiBudWxscHRyOwogfQogCi12b2lkIFdlYkluc3BlY3Rv
cjo6d2ViVmlld0Nsb3NlZCgpCit2b2lkIFdlYkluc3BlY3Rvcjo6aW5zcGVjdGVkV2ViVmlld0Ns
b3NlZCgpCiB7Ci0gICAgbV93ZWJWaWV3ID0gbnVsbHB0cjsKKyAgICBtX2luc3BlY3RlZFdlYlZp
ZXcgPSBudWxscHRyOwogICAgIG1faW5zcGVjdG9yQ2xpZW50ID0gbnVsbHB0cjsKIH0KIApAQCAt
MTA1LDggKzEwNSw4IEBAIFVMT05HIFdlYkluc3BlY3Rvcjo6UmVsZWFzZSgpCiAKIEhSRVNVTFQg
V2ViSW5zcGVjdG9yOjpzaG93KCkKIHsKLSAgICBpZiAobV93ZWJWaWV3KQotICAgICAgICBpZiAo
UGFnZSogcGFnZSA9IG1fd2ViVmlldy0+cGFnZSgpKQorICAgIGlmIChtX2luc3BlY3RlZFdlYlZp
ZXcpCisgICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV9pbnNwZWN0ZWRXZWJWaWV3LT5wYWdlKCkp
CiAgICAgICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwogCiAgICAg
cmV0dXJuIFNfT0s7CkBAIC0xMjcsOCArMTI3LDggQEAgSFJFU1VMVCBXZWJJbnNwZWN0b3I6OnVu
dXNlZDEoKQogCiBIUkVTVUxUIFdlYkluc3BlY3Rvcjo6Y2xvc2UoKQogewotICAgIGlmIChtX3dl
YlZpZXcpCi0gICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV93ZWJWaWV3LT5wYWdlKCkpCisgICAg
aWYgKG1faW5zcGVjdGVkV2ViVmlldykKKyAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2luc3Bl
Y3RlZFdlYlZpZXctPnBhZ2UoKSkKICAgICAgICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS5jbG9zZSgpOwogCiAgICAgcmV0dXJuIFNfT0s7CkBAIC0yMTAsNDIgKzIxMCw0MiBAQCBI
UkVTVUxUIFdlYkluc3BlY3Rvcjo6aXNKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChfT3V0XyBC
T09MKiBpc1Byb2ZpbGluZ0VuYWJsZQogCiAgICAgKmlzUHJvZmlsaW5nRW5hYmxlZCA9IEZBTFNF
OwogCi0gICAgaWYgKCFtX3dlYlZpZXcpCisgICAgaWYgKCFtX2luc3BlY3RlZFdlYlZpZXcpCiAg
ICAgICAgIHJldHVybiBTX09LOwogCi0gICAgUGFnZSogcGFnZSA9IG1fd2ViVmlldy0+cGFnZSgp
OwotICAgIGlmICghcGFnZSkKKyAgICBQYWdlKiBpbnNwZWN0ZWRQYWdlID0gbV9pbnNwZWN0ZWRX
ZWJWaWV3LT5wYWdlKCk7CisgICAgaWYgKCFpbnNwZWN0ZWRQYWdlKQogICAgICAgICByZXR1cm4g
U19PSzsKIAotICAgICppc1Byb2ZpbGluZ0VuYWJsZWQgPSBwYWdlLT5pbnNwZWN0b3JDb250cm9s
bGVyKCkucHJvZmlsZXJFbmFibGVkKCk7CisgICAgKmlzUHJvZmlsaW5nRW5hYmxlZCA9IGluc3Bl
Y3RlZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5wcm9maWxlckVuYWJsZWQoKTsKICAgICBy
ZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBXZWJJbnNwZWN0b3I6OnNldEphdmFTY3JpcHRQcm9m
aWxpbmdFbmFibGVkKEJPT0wgZW5hYmxlZCkKIHsKLSAgICBpZiAoIW1fd2ViVmlldykKKyAgICBp
ZiAoIW1faW5zcGVjdGVkV2ViVmlldykKICAgICAgICAgcmV0dXJuIFNfT0s7CiAKLSAgICBQYWdl
KiBwYWdlID0gbV93ZWJWaWV3LT5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQorICAgIFBhZ2UqIGlu
c3BlY3RlZFBhZ2UgPSBtX2luc3BlY3RlZFdlYlZpZXctPnBhZ2UoKTsKKyAgICBpZiAoIWluc3Bl
Y3RlZFBhZ2UpCiAgICAgICAgIHJldHVybiBTX09LOwogCi0gICAgcGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLnNldFByb2ZpbGVyRW5hYmxlZChlbmFibGVkKTsKKyAgICBpbnNwZWN0ZWRQYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0UHJvZmlsZXJFbmFibGVkKGVuYWJsZWQpOwogCiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgV2ViSW5zcGVjdG9yOjpldmFsdWF0ZUluRnJv
bnRlbmQoX0luXyBCU1RSIGJTY3JpcHQpCiB7Ci0gICAgaWYgKCFtX3dlYlZpZXcpCisgICAgaWYg
KCFtX2luc3BlY3RlZFdlYlZpZXcpCiAgICAgICAgIHJldHVybiBTX09LOwogCi0gICAgUGFnZSog
cGFnZSA9IG1fd2ViVmlldy0+cGFnZSgpOwotICAgIGlmICghcGFnZSkKKyAgICBQYWdlKiBpbnNw
ZWN0ZWRQYWdlID0gbV9pbnNwZWN0ZWRXZWJWaWV3LT5wYWdlKCk7CisgICAgaWYgKCFpbnNwZWN0
ZWRQYWdlKQogICAgICAgICByZXR1cm4gU19PSzsKIAogICAgIFN0cmluZyBzY3JpcHQoYlNjcmlw
dCwgU3lzU3RyaW5nTGVuKGJTY3JpcHQpKTsKLSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVy
KCkuZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChzY3JpcHQpOworICAgIGluc3BlY3RlZFBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS5ldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKHNjcmlwdCk7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
Ykluc3BlY3Rvci5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViSW5zcGVjdG9yLmgKaW5kZXggOTRh
OTU1OGEzYjcxOTIyNTNjOWMwMDljYmFlOTc2MGFkOWRkMzE1ZC4uMTU1NGJlNTcwMmRlZDI0ZjYy
YjcyNWI2NzBhNDdkYTk3MThhMzFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2Vi
SW5zcGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViSW5zcGVjdG9yLmgKQEAgLTM5
LDkgKzM5LDkgQEAgY2xhc3MgV2ViVmlldzsKIGNsYXNzIFdlYkluc3BlY3RvciA6IHB1YmxpYyBJ
V2ViSW5zcGVjdG9yLCBwdWJsaWMgSVdlYkluc3BlY3RvclByaXZhdGUgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFdlYkluc3BlY3Rvcik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYkluc3Bl
Y3RvciogY3JlYXRlSW5zdGFuY2UoV2ViVmlldyosIFdlYkluc3BlY3RvckNsaWVudCopOworICAg
IHN0YXRpYyBXZWJJbnNwZWN0b3IqIGNyZWF0ZUluc3RhbmNlKFdlYlZpZXcqIGluc3BlY3RlZFdl
YlZpZXcsIFdlYkluc3BlY3RvckNsaWVudCopOwogCi0gICAgdm9pZCB3ZWJWaWV3Q2xvc2VkKCk7
CisgICAgdm9pZCBpbnNwZWN0ZWRXZWJWaWV3Q2xvc2VkKCk7CiAKICAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQsIF9DT01fT3V0
cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKICAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExU
WVBFIEFkZFJlZigpOwpAQCAtNjksMTQgKzY5LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKEJPT0wp
OwogCiBwcml2YXRlOgotICAgIFdlYkluc3BlY3RvcihXZWJWaWV3KiwgV2ViSW5zcGVjdG9yQ2xp
ZW50Kik7CisgICAgV2ViSW5zcGVjdG9yKFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcsIFdlYklu
c3BlY3RvckNsaWVudCopOwogICAgIH5XZWJJbnNwZWN0b3IoKTsKIAogICAgIFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50KiBmcm9udGVuZENsaWVudCgpOwogCiAgICAgVUxPTkcgbV9yZWZDb3Vu
dCB7IDAgfTsKLSAgICBXZWJWaWV3KiBtX3dlYlZpZXc7Ci0gICAgV2ViSW5zcGVjdG9yQ2xpZW50
KiBtX2luc3BlY3RvckNsaWVudDsKKyAgICBXZWJWaWV3KiBtX3dlYlZpZXcgeyBudWxscHRyIH07
CisgICAgV2ViSW5zcGVjdG9yQ2xpZW50KiBtX2luc3BlY3RvckNsaWVudCB7IG51bGxwdHIgfTsK
IH07CiAKICNlbmRpZiAvLyAhZGVmaW5lZChXZWJJbnNwZWN0b3JfaCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5j
cHAKaW5kZXggYjdhZjJjYjdiYzYyYzQ5MWY5YWU1MzA5NTk4MmI5NTNiNmFjMTdjMy4uMjIxMjQ0
MTFiOTc4NzdhMGM2ZGE0OTJkYjc3MTYzZjFlMDdkOTA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAK
QEAgLTc2Miw5ICs3NjIsOSBAQCBIUkVTVUxUIFdlYlZpZXc6OmNsb3NlKCkKICAgICBzZXRVSURl
bGVnYXRlKDApOwogICAgIHNldEZvcm1EZWxlZ2F0ZSgwKTsKIAotICAgIG1faW5zcGVjdG9yQ2xp
ZW50ID0gMDsKKyAgICBtX2luc3BlY3RvckNsaWVudCA9IG51bGxwdHI7CiAgICAgaWYgKG1fd2Vi
SW5zcGVjdG9yKQotICAgICAgICBtX3dlYkluc3BlY3Rvci0+d2ViVmlld0Nsb3NlZCgpOworICAg
ICAgICBtX3dlYkluc3BlY3Rvci0+aW5zcGVjdGVkV2ViVmlld0Nsb3NlZCgpOwogCiAgICAgZGVs
ZXRlIG1fcGFnZTsKICAgICBtX3BhZ2UgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3Bw
CmluZGV4IDY2ZTliYzcwZGFjMDQ0ODc2OTQzZmI1ZGQzOWNkYjJhNzRkMjM2ZmEuLjU4ODBjZTAz
NTBhZTQ3NzQ4NTQ0NzkwOWU4MjQ2YjExZjdhNWZhN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5jcHAKQEAgLTc2LDIwICs3NiwyMCBAQCBXZWJJbnNwZWN0b3JDbGllbnQ6On5XZWJJbnNw
ZWN0b3JDbGllbnQoKQogICAgICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5wYWdlT3ZlcmxheUNv
bnRyb2xsZXIoKS51bmluc3RhbGxQYWdlT3ZlcmxheShtX3BhaW50UmVjdE92ZXJsYXkuZ2V0KCks
IFBhZ2VPdmVybGF5OjpGYWRlTW9kZTo6RmFkZSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yQ2xp
ZW50OjppbnNwZWN0b3JEZXN0cm95ZWQoKQordm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3Bl
Y3RlZFBhZ2VEZXN0cm95ZWQoKQogewotICAgIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKTsKKyAg
ICBjbG9zZUxvY2FsRnJvbnRlbmQoKTsKICAgICBkZWxldGUgdGhpczsKIH0KIAotSW5zcGVjdG9y
OjpGcm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250
ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCitJbnNwZWN0b3I6OkZyb250ZW5k
Q2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9udGVuZChJbnNwZWN0b3JD
b250cm9sbGVyKiBjb250cm9sbGVyKQogewogICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPm9wZW5G
cm9udGVuZENvbm5lY3Rpb24oY29udHJvbGxlci0+aXNVbmRlclRlc3QoKSk7CiAKICAgICByZXR1
cm4gbV9wYWdlLT5pbnNwZWN0b3IoKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmNs
b3NlSW5zcGVjdG9yRnJvbnRlbmQoKQordm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlTG9j
YWxGcm9udGVuZCgpCiB7CiAgICAgaWYgKG1fcGFnZS0+aW5zcGVjdG9yKCkpIHsKICAgICAgICAg
bV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250
ZW5kKG1fcGFnZS0+aW5zcGVjdG9yKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXgg
YjgzODBiMWI4OGIxNzYxNDFmZmM0YTg0NTczODg0MGQ3YmQ5OGQ4Yy4uYjEwZjQ0MDkxOWFmNDEw
OWRiODRlYjYwNDliMTdhNTg3NzQ0MjI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBA
IC01MCwxMCArNTAsMTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6Oklu
c3BlY3RvckNsaWVudAotICAgIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBpbnNwZWN0ZWRQYWdlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKLSAgICBJbnNwZWN0
b3I6OkZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXIqKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRl
bmQoKSBvdmVycmlkZTsKKyAgICBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogb3BlbkxvY2Fs
RnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopIG92ZXJyaWRlOworICAgIHZv
aWQgY2xvc2VMb2NhbEZyb250ZW5kKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBicmluZ0Zyb250ZW5k
VG9Gcm9udCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVzaXplTWFpbkZyYW1lKFdlYkNvcmU6
OkZyYW1lKikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL21hYy9XZWJL
aXQyLm9yZGVyIGIvU291cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIKaW5kZXggOGEwMzgz
ODkyN2Y1ZTkyZTM4ZDUzNjJmYWMzOWQ3ZGEwNmY2MzZmOC4uN2RkYjk3MWQ0N2QyYTZhZTQxOGU2
ZDlmNDE1MjYwYjk0NGRlZTVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvbWFjL1dlYktp
dDIub3JkZXIKKysrIGIvU291cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIKQEAgLTQzMjQs
OCArNDMyNCw4IEBAIF9fWk42V2ViS2l0MTVXZWJQbHVnSW5DbGllbnQxM3BhZ2VEZXN0cm95ZWRF
dgogX19aTjZXZWJLaXQxNVdlYlBsdWdJbkNsaWVudEQwRXYKIF9fWk42V2ViS2l0MjRXZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQxM3BhZ2VEZXN0cm95ZWRFdgogX19aTjZXZWJLaXQyNFdlYkFsdGVy
bmF0aXZlVGV4dENsaWVudEQwRXYKLV9fWk42V2ViS2l0MThXZWJJbnNwZWN0b3JDbGllbnQxOGlu
c3BlY3RvckRlc3Ryb3llZEV2Ci1fX1pONldlYktpdDE4V2ViSW5zcGVjdG9yQ2xpZW50MjJjbG9z
ZUluc3BlY3RvckZyb250ZW5kRXYKK19fWk42V2ViS2l0MThXZWJJbnNwZWN0b3JDbGllbnQyMmlu
c3BlY3RlZFBhZ2VEZXN0cm95ZWRFdgorX19aTjZXZWJLaXQxOFdlYkluc3BlY3RvckNsaWVudDE4
Y2xvc2VMb2NhbEZyb250ZW5kRXYKIF9fWk42V2ViS2l0MThXZWJJbnNwZWN0b3JDbGllbnREMEV2
CiBfX1pONldlYktpdDIzV2ViQmFja0ZvcndhcmRMaXN0UHJveHk1Y2xvc2VFdgogX19aTjZXZWJL
aXQyM1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5OWl0ZW1Gb3JJREV5CkBAIC04NDY2LDcgKzg0NjYs
NyBAQCBfX1pONldlYktpdDE4V2ViQmFja0ZvcndhcmRMaXN0NWNsZWFyRXYKIF9XS0J1bmRsZVBh
Z2VHZXRJbnNwZWN0b3IKIF9XS0J1bmRsZUluc3BlY3RvclNob3cKIF9fWk42V2ViS2l0MTJXZWJJ
bnNwZWN0b3I0c2hvd0V2Ci1fX1pONldlYktpdDE4V2ViSW5zcGVjdG9yQ2xpZW50MjFvcGVuSW5z
cGVjdG9yRnJvbnRlbmRFUE43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlckUKK19fWk42V2Vi
S2l0MThXZWJJbnNwZWN0b3JDbGllbnQxN29wZW5Mb2NhbEZyb250ZW5kRVBON1dlYkNvcmUxOUlu
c3BlY3RvckNvbnRyb2xsZXJFCiBfX1pONldlYktpdDEyV2ViSW5zcGVjdG9yMTljcmVhdGVJbnNw
ZWN0b3JQYWdlRXYKIF9fWk43Q29yZUlQQzEwQ29ubmVjdGlvbjhzZW5kU3luY0lOOE1lc3NhZ2Vz
MTdXZWJJbnNwZWN0b3JQcm94eTE5Q3JlYXRlSW5zcGVjdG9yUGFnZUVFRWJSS1RfUktOUzVfNVJl
cGx5RXlkagogX19aTjZXZWJLaXQxNURyYXdpbmdBcmVhSW1wbDMzcGFnZUJhY2tncm91bmRUcmFu
c3BhcmVuY3lDaGFuZ2VkRXYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261020</attachid>
            <date>2015-09-11 15:01:43 -0700</date>
            <delta_ts>2015-09-11 16:37:42 -0700</delta_ts>
            <desc>Proposed Fix (fix ios)</desc>
            <filename>bug-149071-20150911150135.patch</filename>
            <type>text/plain</type>
            <size>59545</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5NjM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQyNGY5YjM2N2E3NGI4
OGUyMGYxZTM1ZGQ2MGU1MGVjZDViNTIxYi4uNTg2NTc4MWZjYzQzZDFjMmY3MzBkODEzYzEwZGYy
YTVhOGFmOGUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE1LTA5LTExICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGRpc2Ft
YmlndWF0ZSBpbnNwZWN0ZWQvZnJvbnRlbmQgY29udHJvbGxlcnMgYW5kIHBhZ2VzIGluIGJhY2tl
bmQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ5MDcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QmUgY29uc2lzdGVudCBhYm91dCBwcmVmaXhpbmcgcGFnZXMsIGluc3BlY3RvciBjb250cm9sbGVy
cywgYW5kIHdpbmRvdyBjb250cm9sbGVycworICAgICAgICB3aXRoIGVpdGhlciAiZnJvbnRlbmQi
IG9yICJpbnNwZWN0ZWQiLCBhcyBhcHByb3ByaWF0ZS4gVGhpcyBjaGFuZ2UgbWFrZXMgb2J2aW91
cyBzb21lIGJ1Z3MKKyAgICAgICAgaW4gdGhlIGZyb250ZW5kIGNvbm5lY3Rpb24gY29kZSwgd2hp
Y2ggYXJlIHRyYWNrZWQgYnkgaHR0cHM6Ly93ZWJraXQub3JnL2IvMTQ5MDA2LgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogV2ViQ29yZS5v
cmRlcjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6OmNsb3NlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6On5JbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWw6OmNhbkF0dGFjaFdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsOjpjaGFuZ2VBdHRhY2hlZFdpbmRvd0hlaWdodCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpjaGFuZ2VBdHRhY2hlZFdpbmRvd1dp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Om9w
ZW5Jbk5ld1RhYik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsOjpyZXN0b3JlQXR0YWNoZWRXaW5kb3dIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6c2hvd01haW5SZXNvdXJjZUZvckZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmlzVW5kZXJUZXN0
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvck92ZXJsYXk6OmZyZWVQYWdlKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlD
bGllbnRzLmg6CisKIDIwMTUtMDktMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBET01Ub2tlbkxpc3QgdXBkYXRlIHN0ZXBzIGZvciBjbGFzc0xpc3QgZG9uJ3Qg
Zm9sbG93IHRoZSBzcGVjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKaW5kZXggZDRhNDY4M2M4ZDc3NDkzYWZkMGQ3
MWIwMWE4NTI2M2RiZGFjYTAwZS4uODgyNzc0MDdhMzQ4NDhiYTAzZmI4YzA0MzBkYzdiZmJkY2U5
N2U4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE1LTA5LTExICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGRpc2Ft
YmlndWF0ZSBpbnNwZWN0ZWQvZnJvbnRlbmQgY29udHJvbGxlcnMgYW5kIHBhZ2VzIGluIGJhY2tl
bmQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ5MDcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW06CisgICAgICAgIChXZWJJ
bnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3RvckNsaWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3JDbGllbnQ6Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQpOiBSZW5hbWVkLgorICAgICAgICAoV2Vi
SW5zcGVjdG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9udGVuZCk6IFJlbmFtZWQuCisgICAgICAgIChX
ZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlTG9jYWxGcm9udGVuZCk6IFJlbmFtZWQuCisgICAgICAg
IChXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpzaG93SW5zcGVjdG9ySW5kaWNh
dGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmhpZGVJbnNwZWN0b3JJbmRpY2F0
aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6ZGlkU2V0U2VhcmNoaW5nRm9yTm9k
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6V2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQpOgorCiAyMDE1LTA4LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CiAKICAgICAgICAgUmVwbGFjZSBhbGwgcmVtYWluaW5nIHVzZXMgb2YgV1RGOjpNdXRleCB3
aXRoIFdURjo6TG9jawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDAzYTkzZGFlMDE3ZTJhYjQxZTZkZTYy
ODc0MGJmMGQyOGY4ZDk3NzMuLjE0YWU0NmE0MGM1N2E5Njc2Njg0ODY5ZDgxZTI1ZjdlZjI4Y2U4
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NCBAQAorMjAxNS0wOS0xMSAgQnJpYW4g
QnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBkaXNhbWJp
Z3VhdGUgaW5zcGVjdGVkL2Zyb250ZW5kIGNvbnRyb2xsZXJzIGFuZCBwYWdlcyBpbiBiYWNrZW5k
IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
OTA3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJl
IGNvbnNpc3RlbnQgYWJvdXQgcHJlZml4aW5nIHBhZ2VzLCBpbnNwZWN0b3IgY29udHJvbGxlcnMs
IGFuZCB3aW5kb3cgY29udHJvbGxlcnMKKyAgICAgICAgd2l0aCBlaXRoZXIgImZyb250ZW5kIiBv
ciAiaW5zcGVjdGVkIiwgYXMgYXBwcm9wcmlhdGUuIFRoaXMgY2hhbmdlIG1ha2VzIG9idmlvdXMg
c29tZSBidWdzCisgICAgICAgIGluIHRoZSBmcm9udGVuZCBjb25uZWN0aW9uIGNvZGUsIHdoaWNo
IGFyZSB0cmFja2VkIGJ5IGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE0OTAwNi4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVu
dDo6V2ViSW5zcGVjdG9yQ2xpZW50KTogUmVuYW1lZC4KKyAgICAgICAgKFdlYkluc3BlY3RvckNs
aWVudDo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCk6IFJlbmFtZWQuCisgICAgICAgIChXZWJJbnNw
ZWN0b3JDbGllbnQ6Om9wZW5Mb2NhbEZyb250ZW5kKTogUmVuYW1lZC4KKyAgICAgICAgKFdlYklu
c3BlY3RvckNsaWVudDo6Y2xvc2VMb2NhbEZyb250ZW5kKTogUmVuYW1lZC4KKyAgICAgICAgKFdl
Ykluc3BlY3RvckNsaWVudDo6ZGlkU2V0U2VhcmNoaW5nRm9yTm9kZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmF0dGFjaEF2YWlsYWJpbGl0eUNoYW5n
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNhbkF0dGFjaCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZnJvbnRlbmRMb2FkZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnN0YXJ0V2luZG93RHJhZyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YnJpbmdUb0Zyb250KToKKyAgICAgICAg
KFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpjbG9zZVdpbmRvdyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZGlzY29ubmVjdEZyb21CYWNrZW5kKToKKyAgICAgICAg
KFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphdHRhY2hXaW5kb3cpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmRldGFjaFdpbmRvdyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6c2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNldFRvb2xiYXJIZWlnaHQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnVwZGF0ZVdpbmRvd1RpdGxlKToKKyAgICAgICAg
KFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50OjphcHBlbmQpOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JXaW5kb3dD
b250cm9sbGVyIGluaXRdKToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxl
ciBpbml0V2l0aEluc3BlY3RlZFdlYlZpZXc6aXNVbmRlclRlc3Q6XSk6CisgICAgICAgICgtW1dl
Ykluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJJbnNw
ZWN0b3JXaW5kb3dDb250cm9sbGVyIGZyb250ZW5kV2ViVmlld10pOgorICAgICAgICAoLVtXZWJJ
bnNwZWN0b3JXaW5kb3dDb250cm9sbGVyIGNsb3NlXSk6CisgICAgICAgICgtW1dlYkluc3BlY3Rv
cldpbmRvd0NvbnRyb2xsZXIgc2hvd1dpbmRvdzpdKToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9y
V2luZG93Q29udHJvbGxlciBzZXRBdHRhY2hlZFdpbmRvd0hlaWdodDpdKToKKyAgICAgICAgKC1b
V2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlciBkZXN0cm95SW5zcGVjdG9yVmlld10pOgorICAg
ICAgICAoLVtXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyIHdlYlZpZXc6cnVuT3BlblBhbmVs
Rm9yRmlsZUJ1dHRvbldpdGhSZXN1bHRMaXN0ZW5lcjphbGxvd011bHRpcGxlRmlsZXM6XSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRl
bmQpOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyIHdl
YlZpZXddKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yLmg6
CisgICAgICAgICogV2ViSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5tbToKKyAgICAgICAgKC1bV2Vi
SW5zcGVjdG9yIGluaXRXaXRoSW5zcGVjdGVkV2ViVmlldzpdKTogUmVuYW1lZC4KKyAgICAgICAg
KC1bV2ViSW5zcGVjdG9yIGluc3BlY3RlZFdlYlZpZXdDbG9zZWRdKTogUmVuYW1lZC4KKyAgICAg
ICAgKC1bV2ViSW5zcGVjdG9yIHNob3dXaW5kb3ddKToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9y
IGNsb3NlOl0pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3IgZXZhbHVhdGVJbkZyb250ZW5kOnNj
cmlwdDpdKToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yIHJlbGVhc2VGcm9udGVuZF0pOgorICAg
ICAgICAoLVtXZWJJbnNwZWN0b3IgaW5pdFdpdGhXZWJWaWV3Ol0pOiBEZWxldGVkLgorICAgICAg
ICAoLVtXZWJJbnNwZWN0b3Igd2ViVmlld0Nsb3NlZF0pOiBEZWxldGVkLgorICAgICAgICAqIFdl
YktpdC5vcmRlcjoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dl
YlZpZXcgX2Nsb3NlXSk6CisgICAgICAgICgtW1dlYlZpZXcgaW5zcGVjdG9yXSk6CisKIDIwMTUt
MDktMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBOb2RlLmFw
cGVuZENoaWxkKG51bGwpIC8gcmVwbGFjZUNoaWxkKG51bGwsIG51bGwpIC8gcmVtb3ZlQ2hpbGQo
bnVsbCkgLyBpbnNlcnRCZWZvcmUobnVsbCwgcmVmKSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwppbmRleCAyMjVkZmVlZjM5MzUyYjIwYTQ4Mzc4Y2VjZmRhYTdhZjdhZGVj
MGRjLi42NDJhYzlmMzg3MjFhYzMyM2FkNDliNmNjYzFmM2I1ZGYxZmU3ODFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTUtMDktMTEgIEJyaWFuIEJ1cmcgIDxiYnVyZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZGlzYW1iaWd1YXRlIGluc3BlY3Rl
ZC9mcm9udGVuZCBjb250cm9sbGVycyBhbmQgcGFnZXMgaW4gYmFja2VuZCBjb2RlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDkwNzEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCZSBjb25zaXN0ZW50IGFi
b3V0IHByZWZpeGluZyBwYWdlcywgaW5zcGVjdG9yIGNvbnRyb2xsZXJzLCBhbmQgd2luZG93IGNv
bnRyb2xsZXJzCisgICAgICAgIHdpdGggZWl0aGVyICJmcm9udGVuZCIgb3IgImluc3BlY3RlZCIs
IGFzIGFwcHJvcHJpYXRlLiBUaGlzIGNoYW5nZSBtYWtlcyBvYnZpb3VzIHNvbWUgYnVncworICAg
ICAgICBpbiB0aGUgZnJvbnRlbmQgY29ubmVjdGlvbiBjb2RlLCB3aGljaCBhcmUgdHJhY2tlZCBi
eSBodHRwczovL3dlYmtpdC5vcmcvYi8xNDkwMDYuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50Ojpp
bnNwZWN0ZWRQYWdlRGVzdHJveWVkKTogUmVuYW1lZC4KKyAgICAgICAgKFdlYkluc3BlY3RvckNs
aWVudDo6b3BlbkxvY2FsRnJvbnRlbmQpOiBSZW5hbWVkLgorICAgICAgICAoV2ViSW5zcGVjdG9y
Q2xpZW50OjpjbG9zZUxvY2FsRnJvbnRlbmQpOiBSZW5hbWVkLgorICAgICAgICAoV2ViSW5zcGVj
dG9yQ2xpZW50OjppbnNwZWN0b3JEZXN0cm95ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5z
cGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViSW5zcGVjdG9yQ2xpZW50OjpjbG9zZUluc3BlY3RvckZyb250ZW5kKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJJbnNwZWN0b3IuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yOjpjcmVhdGVJbnN0YW5jZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3I6OldlYkluc3BlY3Rvcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3I6Omluc3BlY3RlZFdlYlZpZXdDbG9zZWQpOiBSZW5hbWVkLgorICAgICAgICAoV2ViSW5z
cGVjdG9yOjpzaG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvcjo6Y2xvc2UpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yOjppc0phdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvcjo6c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yOjpldmFsdWF0ZUluRnJvbnRlbmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yOjp3
ZWJWaWV3Q2xvc2VkKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3IuaDoKKyAgICAg
ICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OmNsb3NlKToKKwogMjAxNS0wOS0w
OCAgUGVyIEFybmUgVm9sbGFuICA8cGVhdm9Ab3V0bG9vay5jb20+CiAKICAgICAgICAgW1dpbl0g
SW1wbGVtZW50IERPTU5vZGU6OmF0dHJpYnV0ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTE4OTFhODcwZjM0
YTMyNThhMTBlOTc2MGI2NzA0NGZjNTY1MzdkOS4uNTRlZjQ1MjZiODY4MGQwYjhiNzU3OGZmYWNm
Njc2ZTg2NGJiYjIzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE1LTA5LTExICBC
cmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGRp
c2FtYmlndWF0ZSBpbnNwZWN0ZWQvZnJvbnRlbmQgY29udHJvbGxlcnMgYW5kIHBhZ2VzIGluIGJh
Y2tlbmQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ5MDcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdGVkUGFnZURlc3Ryb3ll
ZCk6IFJlbmFtZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvckNsaWVudDo6b3Blbkxv
Y2FsRnJvbnRlbmQpOiBSZW5hbWVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGll
bnQ6OmNsb3NlTG9jYWxGcm9udGVuZCk6IFJlbmFtZWQuCisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJveWVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJv
bnRlbmQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogbWFjL1dlYktpdDIub3JkZXI6CisKIDIwMTUt
MDktMTEgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIEJ1aWxkIGZp
eApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUub3JkZXIKaW5kZXggMTlhMTgwZDU0YjIzMTQwYWI1N2E5MzQwM2M3ZWFmMWQz
Yjc0ODNjMy4uMTllM2JkOTM2Yzk4ZWQ5MTU0ZTgzNjBkZDA2MDY5OTNjOTVmYjZiNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLm9yZGVyCkBAIC0xNzA3OCw3ICsxNzA3OCw3IEBAIF9fWk43V2ViQ29yZTdFbGVtZW50
MjJzZXRIYXNQZW5kaW5nUmVzb3VyY2VzRXYKIF9fWk5LN1dlYkNvcmUxMlNWR1Jlc291cmNlczIx
cmVtb3ZlQ2xpZW50RnJvbUNhY2hlRVBOU18xMlJlbmRlck9iamVjdEViCiBfX1pON1dlYkNvcmUx
N0VtcHR5RWRpdG9yQ2xpZW50MTlmcmFtZVdpbGxEZXRhY2hQYWdlRVBOU181RnJhbWVFCiBfX1pO
N1dlYkNvcmUxN0VtcHR5RWRpdG9yQ2xpZW50MTNwYWdlRGVzdHJveWVkRXYKLV9fWk43V2ViQ29y
ZTIwRW1wdHlJbnNwZWN0b3JDbGllbnQxOGluc3BlY3RvckRlc3Ryb3llZEV2CitfX1pON1dlYkNv
cmUyMEVtcHR5SW5zcGVjdG9yQ2xpZW50MjJpbnNwZWN0ZWRQYWdlRGVzdHJveWVkRXYKIF9fWk43
V2ViQ29yZTE5QmFja0ZvcndhcmRMaXN0SW1wbDVjbG9zZUV2CiBfX1pON1dlYkNvcmU5UGFnZUdy
b3VwRDFFdgogX19aTjdXZWJDb3JlOVBhZ2VHcm91cEQyRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDbGllbnQuaAppbmRleCA2ZDM5YTRjOTJhZGNmNTI4NmYyNDgxNTJlYzFj
NTI2OTNiYWRkZDg4Li4wZWRjZDA4NTQ4OGViZGNhYzE0OGMzNmYyZWY0MzMxZTY0YWEzMmU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oCkBAIC00NiwxMCAr
NDYsMTAgQEAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5J
bnNwZWN0b3JDbGllbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95
ZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGluc3BlY3RlZFBhZ2VEZXN0cm95ZWQoKSA9IDA7
CiAKLSAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9y
RnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xv
c2VJbnNwZWN0b3JGcm9udGVuZCgpID0gMDsKKyAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6RnJvbnRl
bmRDaGFubmVsKiBvcGVuTG9jYWxGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBjbG9zZUxvY2FsRnJvbnRlbmQoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZXNp
emVNYWluRnJhbWUoRnJhbWUqKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGNmOGNiMDI4YjVlODVhMDVlMjZhYjQ2ZDVl
MTliMGEwNzlmZGYxZTAuLjk5ZmZkOGVjMDNiNWRmNWEyZTNiM2VkNDJkYmUyOGIzN2M5NzJjZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3Rl
ZFBhZ2VEZXN0cm95ZWQoKQogICAgIGRpc2Nvbm5lY3RBbGxGcm9udGVuZHMoKTsKIAogICAgIG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5kaXNjb25uZWN0KCk7Ci0gICAgbV9pbnNwZWN0b3JDbGll
bnQtPmluc3BlY3RvckRlc3Ryb3llZCgpOworICAgIG1faW5zcGVjdG9yQ2xpZW50LT5pbnNwZWN0
ZWRQYWdlRGVzdHJveWVkKCk7CiAgICAgbV9pbnNwZWN0b3JDbGllbnQgPSBudWxscHRyOwogfQog
CkBAIC0zMTksMTQgKzMxOSwxNCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNob3coKQog
CiAgICAgaWYgKG1fZnJvbnRlbmRSb3V0ZXItPmhhc0xvY2FsRnJvbnRlbmQoKSkKICAgICAgICAg
bV9pbnNwZWN0b3JDbGllbnQtPmJyaW5nRnJvbnRlbmRUb0Zyb250KCk7Ci0gICAgZWxzZSBpZiAo
SW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCA9IG1faW5zcGVjdG9y
Q2xpZW50LT5vcGVuSW5zcGVjdG9yRnJvbnRlbmQodGhpcykpCisgICAgZWxzZSBpZiAoSW5zcGVj
dG9yOjpGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCA9IG1faW5zcGVjdG9yQ2xpZW50
LT5vcGVuTG9jYWxGcm9udGVuZCh0aGlzKSkKICAgICAgICAgY29ubmVjdEZyb250ZW5kKGZyb250
ZW5kQ2hhbm5lbCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2xvc2UoKQogewog
ICAgIGlmIChtX2Zyb250ZW5kUm91dGVyLT5oYXNMb2NhbEZyb250ZW5kKCkpCi0gICAgICAgIG1f
aW5zcGVjdG9yQ2xpZW50LT5jbG9zZUluc3BlY3RvckZyb250ZW5kKCk7CisgICAgICAgIG1faW5z
cGVjdG9yQ2xpZW50LT5jbG9zZUxvY2FsRnJvbnRlbmQoKTsKIAogICAgIEFTU0VSVCghbV9mcm9u
dGVuZFJvdXRlci0+aGFzTG9jYWxGcm9udGVuZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAppbmRl
eCBiODI5NzdiOTljOTMwYzQwYzMzODEyNmU1ZjcxNmFiMTU0NjdkZGQxLi40ZjZiNzdkNzk1OTlk
OTA1YjZiYzEyYTVhYTEwYjQ1YzZkNmQ2MjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC0xMjgs
NyArMTI4LDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5nczo6
c2V0UHJvcGVydHkoY29uc3QgU3RyaW5nJiwgY29uc3QgU3QKIH0KIAogSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbDo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbChJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0ZWRQYWdlQ29udHJvbGxlciwgUGFnZSogZnJvbnRlbmRQYWdlLCBzdGQ6
OnVuaXF1ZV9wdHI8U2V0dGluZ3M+IHNldHRpbmdzKQotICAgIDogbV9pbnNwZWN0b3JDb250cm9s
bGVyKGluc3BlY3RlZFBhZ2VDb250cm9sbGVyKQorICAgIDogbV9pbnNwZWN0ZWRQYWdlQ29udHJv
bGxlcihpbnNwZWN0ZWRQYWdlQ29udHJvbGxlcikKICAgICAsIG1fZnJvbnRlbmRQYWdlKGZyb250
ZW5kUGFnZSkKICAgICAsIG1fc2V0dGluZ3MoV1RGOjptb3ZlKHNldHRpbmdzKSkKICAgICAsIG1f
ZG9ja1NpZGUoRG9ja1NpZGU6OlVuZG9ja2VkKQpAQCAtMTQyLDcgKzE0Miw3IEBAIEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWw6On5JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCkKICAg
ICBpZiAobV9mcm9udGVuZEhvc3QpCiAgICAgICAgIG1fZnJvbnRlbmRIb3N0LT5kaXNjb25uZWN0
Q2xpZW50KCk7CiAgICAgbV9mcm9udGVuZFBhZ2UgPSBudWxscHRyOwotICAgIG1faW5zcGVjdG9y
Q29udHJvbGxlciA9IG51bGxwdHI7CisgICAgbV9pbnNwZWN0ZWRQYWdlQ29udHJvbGxlciA9IG51
bGxwdHI7CiAgICAgbV9kaXNwYXRjaFRhc2stPnJlc2V0KCk7CiB9CiAKQEAgLTE4NCw3ICsxODQs
NyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OnJlcXVlc3RTZXREb2NrU2lk
ZShEb2NrU2lkZSBkb2NrU2lkZSkKIGJvb2wgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6
Y2FuQXR0YWNoV2luZG93KCkKIHsKICAgICAvLyBEb24ndCBhbGxvdyBhdHRhY2hpbmcgdG8gYW5v
dGhlciBpbnNwZWN0b3IgLS0gdHdvIGluc3BlY3RvcnMgaW4gb25lIHdpbmRvdyBpcyB0b28gbXVj
aCEKLSAgICBib29sIGlzSW5zcGVjdG9yUGFnZSA9IG1faW5zcGVjdG9yQ29udHJvbGxlci0+aGFz
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKTsKKyAgICBib29sIGlzSW5zcGVjdG9yUGFnZSA9IG1f
aW5zcGVjdGVkUGFnZUNvbnRyb2xsZXItPmhhc0luc3BlY3RvckZyb250ZW5kQ2xpZW50KCk7CiAg
ICAgaWYgKGlzSW5zcGVjdG9yUGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xOTMs
OCArMTkzLDggQEAgYm9vbCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpjYW5BdHRhY2hX
aW5kb3coKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIERvbid0IGFsbG93IHRoZSBh
dHRhY2ggaWYgdGhlIHdpbmRvdyB3b3VsZCBiZSB0b28gc21hbGwgdG8gYWNjb21tb2RhdGUgdGhl
IG1pbmltdW0gaW5zcGVjdG9yIHNpemUuCi0gICAgdW5zaWduZWQgaW5zcGVjdGVkUGFnZUhlaWdo
dCA9IG1faW5zcGVjdG9yQ29udHJvbGxlci0+aW5zcGVjdGVkUGFnZSgpLm1haW5GcmFtZSgpLnZp
ZXcoKS0+dmlzaWJsZUhlaWdodCgpOwotICAgIHVuc2lnbmVkIGluc3BlY3RlZFBhZ2VXaWR0aCA9
IG1faW5zcGVjdG9yQ29udHJvbGxlci0+aW5zcGVjdGVkUGFnZSgpLm1haW5GcmFtZSgpLnZpZXco
KS0+dmlzaWJsZVdpZHRoKCk7CisgICAgdW5zaWduZWQgaW5zcGVjdGVkUGFnZUhlaWdodCA9IG1f
aW5zcGVjdGVkUGFnZUNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2UoKS5tYWluRnJhbWUoKS52aWV3
KCktPnZpc2libGVIZWlnaHQoKTsKKyAgICB1bnNpZ25lZCBpbnNwZWN0ZWRQYWdlV2lkdGggPSBt
X2luc3BlY3RlZFBhZ2VDb250cm9sbGVyLT5pbnNwZWN0ZWRQYWdlKCkubWFpbkZyYW1lKCkudmll
dygpLT52aXNpYmxlV2lkdGgoKTsKICAgICB1bnNpZ25lZCBtYXhpbXVtQXR0YWNoZWRIZWlnaHQg
PSBpbnNwZWN0ZWRQYWdlSGVpZ2h0ICogbWF4aW11bUF0dGFjaGVkSGVpZ2h0UmF0aW87CiAgICAg
cmV0dXJuIG1pbmltdW1BdHRhY2hlZEhlaWdodCA8PSBtYXhpbXVtQXR0YWNoZWRIZWlnaHQgJiYg
bWluaW11bUF0dGFjaGVkV2lkdGggPD0gaW5zcGVjdGVkUGFnZVdpZHRoOwogfQpAQCAtMjA2LDcg
KzIwNiw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6c2V0RG9ja2luZ1Vu
YXZhaWxhYmxlKGJvb2wgdW5hdmFpbGFibGUpCiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbDo6Y2hhbmdlQXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQogewot
ICAgIHVuc2lnbmVkIHRvdGFsSGVpZ2h0ID0gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnZp
ZXcoKS0+dmlzaWJsZUhlaWdodCgpICsgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5pbnNwZWN0ZWRQ
YWdlKCkubWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlSGVpZ2h0KCk7CisgICAgdW5zaWduZWQg
dG90YWxIZWlnaHQgPSBtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxl
SGVpZ2h0KCkgKyBtX2luc3BlY3RlZFBhZ2VDb250cm9sbGVyLT5pbnNwZWN0ZWRQYWdlKCkubWFp
bkZyYW1lKCkudmlldygpLT52aXNpYmxlSGVpZ2h0KCk7CiAgICAgdW5zaWduZWQgYXR0YWNoZWRI
ZWlnaHQgPSBjb25zdHJhaW5lZEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdodCwgdG90YWxIZWln
aHQpOwogICAgIG1fc2V0dGluZ3MtPnNldFByb3BlcnR5KGluc3BlY3RvckF0dGFjaGVkSGVpZ2h0
U2V0dGluZywgU3RyaW5nOjpudW1iZXIoYXR0YWNoZWRIZWlnaHQpKTsKICAgICBzZXRBdHRhY2hl
ZFdpbmRvd0hlaWdodChhdHRhY2hlZEhlaWdodCk7CkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpjaGFuZ2VBdHRhY2hlZFdpbmRvd0hlaWdodCh1
bnNpZ25lZCBoZWlnaHQpCiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y2hh
bmdlQXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCB3aWR0aCkKIHsKLSAgICB1bnNpZ25lZCB0
b3RhbFdpZHRoID0gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKS0+dmlzaWJsZVdp
ZHRoKCkgKyBtX2luc3BlY3RvckNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2UoKS5tYWluRnJhbWUo
KS52aWV3KCktPnZpc2libGVXaWR0aCgpOworICAgIHVuc2lnbmVkIHRvdGFsV2lkdGggPSBtX2Zy
b250ZW5kUGFnZS0+bWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlV2lkdGgoKSArIG1faW5zcGVj
dGVkUGFnZUNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2UoKS5tYWluRnJhbWUoKS52aWV3KCktPnZp
c2libGVXaWR0aCgpOwogICAgIHVuc2lnbmVkIGF0dGFjaGVkV2lkdGggPSBjb25zdHJhaW5lZEF0
dGFjaGVkV2luZG93V2lkdGgod2lkdGgsIHRvdGFsV2lkdGgpOwogICAgIHNldEF0dGFjaGVkV2lu
ZG93V2lkdGgoYXR0YWNoZWRXaWR0aCk7CiB9CkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpjaGFuZ2VBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2ln
bmVkIHdpZHRoKQogdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpvcGVuSW5OZXdU
YWIoY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgaW5kaWNh
dG9yKERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwotICAgIEZyYW1lJiBtYWluRnJh
bWUgPSBtX2luc3BlY3RvckNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2UoKS5tYWluRnJhbWUoKTsK
KyAgICBGcmFtZSYgbWFpbkZyYW1lID0gbV9pbnNwZWN0ZWRQYWdlQ29udHJvbGxlci0+aW5zcGVj
dGVkUGFnZSgpLm1haW5GcmFtZSgpOwogICAgIEZyYW1lTG9hZFJlcXVlc3QgcmVxdWVzdChtYWlu
RnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgUmVzb3VyY2VSZXF1ZXN0KCksICJf
YmxhbmsiLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBNYXliZVNl
bmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3Bl
bmVyUG9saWN5OjpBbGxvdywgUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMLCBTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CiAKICAgICBib29sIGNyZWF0
ZWQ7CkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
OjpzZXRBdHRhY2hlZFdpbmRvdyhEb2NrU2lkZSBkb2NrU2lkZSkKIAogdm9pZCBJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsOjpyZXN0b3JlQXR0YWNoZWRXaW5kb3dIZWlnaHQoKQogewotICAg
IHVuc2lnbmVkIGluc3BlY3RlZFBhZ2VIZWlnaHQgPSBtX2luc3BlY3RvckNvbnRyb2xsZXItPmlu
c3BlY3RlZFBhZ2UoKS5tYWluRnJhbWUoKS52aWV3KCktPnZpc2libGVIZWlnaHQoKTsKKyAgICB1
bnNpZ25lZCBpbnNwZWN0ZWRQYWdlSGVpZ2h0ID0gbV9pbnNwZWN0ZWRQYWdlQ29udHJvbGxlci0+
aW5zcGVjdGVkUGFnZSgpLm1haW5GcmFtZSgpLnZpZXcoKS0+dmlzaWJsZUhlaWdodCgpOwogICAg
IFN0cmluZyB2YWx1ZSA9IG1fc2V0dGluZ3MtPmdldFByb3BlcnR5KGluc3BlY3RvckF0dGFjaGVk
SGVpZ2h0U2V0dGluZyk7CiAgICAgdW5zaWduZWQgcHJlZmVycmVkSGVpZ2h0ID0gdmFsdWUuaXNF
bXB0eSgpID8gZGVmYXVsdEF0dGFjaGVkSGVpZ2h0IDogdmFsdWUudG9VSW50KCk7CiAgICAgCkBA
IC0zMzIsNyArMzMyLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpzaG93
UmVzb3VyY2VzKCkKIAogdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpzaG93TWFp
blJlc291cmNlRm9yRnJhbWUoRnJhbWUqIGZyYW1lKQogewotICAgIFN0cmluZyBmcmFtZUlkID0g
bV9pbnNwZWN0b3JDb250cm9sbGVyLT5wYWdlQWdlbnQoKS0+ZnJhbWVJZChmcmFtZSk7CisgICAg
U3RyaW5nIGZyYW1lSWQgPSBtX2luc3BlY3RlZFBhZ2VDb250cm9sbGVyLT5wYWdlQWdlbnQoKS0+
ZnJhbWVJZChmcmFtZSk7CiAgICAgZXZhbHVhdGVPbkxvYWQoU3RyaW5nOjpmb3JtYXQoIltcInNo
b3dNYWluUmVzb3VyY2VGb3JGcmFtZVwiLCBcIiVzXCJdIiwgZnJhbWVJZC5hc2NpaSgpLmRhdGEo
KSkpOwogfQogCkBAIC0zNTMsNyArMzUzLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsOjpzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAKIGJv
b2wgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6aXNVbmRlclRlc3QoKQogewotICAgIHJl
dHVybiBtX2luc3BlY3RvckNvbnRyb2xsZXItPmlzVW5kZXJUZXN0KCk7CisgICAgcmV0dXJuIG1f
aW5zcGVjdGVkUGFnZUNvbnRyb2xsZXItPmlzVW5kZXJUZXN0KCk7CiB9CiAKIGJvb2wgSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVhdGVBc0Jvb2xlYW4oY29uc3QgU3RyaW5nJiBl
eHByZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZENsaWVudExvY2FsLmgKaW5kZXggMTM1MWUwNmVmYmI1M2EyYjc0NjY2NWI1YjZi
MjA3YjM0N2JmMWMwYy4uODhiODNiMzQ3NDQ0NDA0OWFhN2I5MmRmZTU3NTI2MDUzMGJlZjcwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbC5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVh
bCB2b2lkIHNldFByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSk7CiAgICAgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIEluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwoSW5zcGVjdG9yQ29udHJvbGxlciosIFBhZ2UqLCBzdGQ6OnVuaXF1ZV9wdHI8U2V0dGlu
Z3M+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKElu
c3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RlZFBhZ2VDb250cm9sbGVyLCBQYWdlKiBmcm9udGVu
ZFBhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxTZXR0aW5ncz4pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgfkluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCB3aW5kb3dPYmplY3RDbGVhcmVkKCkgb3ZlcnJpZGUgZmluYWw7CkBA
IC0xMTQsNyArMTE0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGV2YWx1YXRlT25Mb2FkKGNvbnN0
IFN0cmluZyYgZXhwcmVzc2lvbik7CiAKICAgICBmcmllbmQgY2xhc3MgRnJvbnRlbmRNZW51UHJv
dmlkZXI7Ci0gICAgSW5zcGVjdG9yQ29udHJvbGxlciogbV9pbnNwZWN0b3JDb250cm9sbGVyIHsg
bnVsbHB0ciB9OworICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIG1faW5zcGVjdGVkUGFnZUNvbnRy
b2xsZXIgeyBudWxscHRyIH07CiAgICAgUGFnZSogbV9mcm9udGVuZFBhZ2UgeyBudWxscHRyIH07
CiAgICAgLy8gVE9ETyh5dXJ5cyk6IHRoaXMgcmVmIHNob3VsZG4ndCBiZSBuZWVkZWQuCiAgICAg
UmVmUHRyPEluc3BlY3RvckZyb250ZW5kSG9zdD4gbV9mcm9udGVuZEhvc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKaW5kZXggZGRiODY4ZmZjMDY3
YmFmZDQ0NjBmMjVlNWIyNzk0OTk3NDM5ZWM3NC4uYTMxZGE3OTI3NzUzNzYwMTA2MjZmMDE0ZDJl
OTAyMmI5YjAwNzg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JP
dmVybGF5LmNwcApAQCAtOTQ3LDcgKzk0Nyw3IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZXZh
bHVhdGVJbk92ZXJsYXkoY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZlB0cjxJbnNwZWN0b3JWCiAK
IHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZnJlZVBhZ2UoKQogewotICAgIG1fb3ZlcmxheVBhZ2Uu
cmVzZXQoKTsKKyAgICBtX292ZXJsYXlQYWdlID0gbnVsbHB0cjsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IDhjNTdkNmU0
ZGFlNmJlNjQwNjE3OWZhZWFmNDI0ZmMxNWRiODQ1ZWQuLjBmMDBkN2I2Y2UxNTcxMmE0ZGE0YWZk
ZmM4YzNjNDEzNjI3ZDQ0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAg
LTU5MywxMCArNTkzLDEwIEBAIHB1YmxpYzoKICAgICBFbXB0eUluc3BlY3RvckNsaWVudCgpIHsg
fQogICAgIHZpcnR1YWwgfkVtcHR5SW5zcGVjdG9yQ2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgb3ZlcnJpZGUgeyB9CisgICAgdmlydHVhbCB2b2lk
IGluc3BlY3RlZFBhZ2VEZXN0cm95ZWQoKSBvdmVycmlkZSB7IH0KICAgICAKLSAgICB2aXJ0dWFs
IEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVj
dG9yQ29udHJvbGxlciopIG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpIG92ZXJyaWRlIHsgfQorICAgIHZpcnR1YWwgSW5zcGVj
dG9yOjpGcm9udGVuZENoYW5uZWwqIG9wZW5Mb2NhbEZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xs
ZXIqKSBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCB2b2lkIGNsb3NlTG9jYWxG
cm9udGVuZCgpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBicmluZ0Zyb250ZW5kVG9G
cm9udCgpIG92ZXJyaWRlIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodCgpIG92ZXJy
aWRlIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50SU9TLm1tIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1tCmluZGV4IDgxYjA2ZWFhZWQ3NDE0MjZlZWNhZjdmODc5
ZGIzNTU1YTk0MTI2OWMuLmM0MmNlMjRmOGNhOWQ0MzY0ZWIxOTZhNWUxMjM2MDZlZGZjMTU3OTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnRJT1MubW0KQEAgLTQyLDE5ICs0MiwxOCBAQAogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAotV2ViSW5zcGVjdG9yQ2xpZW50OjpXZWJJbnNwZWN0b3JDbGllbnQoV2Vi
VmlldyAqd2ViVmlldykKLSAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQotICAgICwgbV9oaWdobGln
aHRlcihhZG9wdE5TKFtbV2ViTm9kZUhpZ2hsaWdodGVyIGFsbG9jXSBpbml0V2l0aEluc3BlY3Rl
ZFdlYlZpZXc6d2ViVmlld10pKQotICAgICwgbV9mcm9udGVuZFBhZ2UoMCkKK1dlYkluc3BlY3Rv
ckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcqIGlucGVjdGVkV2ViVmlldykKKyAg
ICA6IG1faW5wZWN0ZWRXZWJWaWV3KGlucGVjdGVkV2ViVmlldykKKyAgICAsIG1faGlnaGxpZ2h0
ZXIoYWRvcHROUyhbW1dlYk5vZGVIaWdobGlnaHRlciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0ZWRX
ZWJWaWV3OmlucGVjdGVkV2ViVmlld10pKQogewogfQogCi12b2lkIFdlYkluc3BlY3RvckNsaWVu
dDo6aW5zcGVjdG9yRGVzdHJveWVkKCkKK3ZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0
ZWRQYWdlRGVzdHJveWVkKCkKIHsKICAgICBkZWxldGUgdGhpczsKIH0KIAotSW5zcGVjdG9yOjpG
cm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5k
KEluc3BlY3RvckNvbnRyb2xsZXIqKQorSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIFdlYklu
c3BlY3RvckNsaWVudDo6b3BlbkxvY2FsRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopCiB7
CiAgICAgLy8gaU9TIGRvZXMgbm90IGhhdmUgYSBsb2NhbCBpbnNwZWN0b3IsIHRoaXMgc2hvdWxk
IG5vdCBiZSByZWFjaGVkLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNjYsNyArNjUs
NyBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6YnJpbmdGcm9udGVuZFRvRnJvbnQoKQogICAg
IC8vIGlPUyBkb2VzIG5vdCBoYXZlIGEgbG9jYWwgaW5zcGVjdG9yLCBub3RoaW5nIHRvIGRvIGhl
cmUuCiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpjbG9zZUluc3BlY3RvckZyb250ZW5k
KCkKK3ZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpjbG9zZUxvY2FsRnJvbnRlbmQoKQogewogICAg
IC8vIGlPUyBkb2VzIG5vdCBoYXZlIGEgbG9jYWwgaW5zcGVjdG9yLCBub3RoaW5nIHRvIGRvIGhl
cmUuCiB9CkBAIC04OCwxMiArODcsMTIgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmhpZGVI
aWdobGlnaHQoKQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6c2hvd0luc3BlY3RvckluZGlj
YXRpb24oKQogewotICAgIFttX3dlYlZpZXcgc2V0U2hvd2luZ0luc3BlY3RvckluZGljYXRpb246
WUVTXTsKKyAgICBbbV9pbnNwZWN0ZWRXZWJWaWV3IHNldFNob3dpbmdJbnNwZWN0b3JJbmRpY2F0
aW9uOllFU107CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpoaWRlSW5zcGVjdG9ySW5k
aWNhdGlvbigpCiB7Ci0gICAgW21fd2ViVmlldyBzZXRTaG93aW5nSW5zcGVjdG9ySW5kaWNhdGlv
bjpOT107CisgICAgW21faW5zcGVjdGVkV2ViVmlldyBzZXRTaG93aW5nSW5zcGVjdG9ySW5kaWNh
dGlvbjpOT107CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZXRTaG93UGFpbnRSZWN0
cyhib29sKQpAQCAtMTA4LDcgKzEwNyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpzaG93
UGFpbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYpCiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50Ojpk
aWRTZXRTZWFyY2hpbmdGb3JOb2RlKGJvb2wgZW5hYmxlZCkKIHsKLSAgICBXZWJJbnNwZWN0b3Ig
Kmluc3BlY3RvciA9IFttX3dlYlZpZXcgaW5zcGVjdG9yXTsKKyAgICBXZWJJbnNwZWN0b3IgKmlu
c3BlY3RvciA9IFttX2luc3BlY3RlZFdlYlZpZXcgaW5zcGVjdG9yXTsKICAgICBOU1N0cmluZyAq
bm90aWZpY2F0aW9uTmFtZSA9IGVuYWJsZWQgPyBXZWJJbnNwZWN0b3JEaWRTdGFydFNlYXJjaGlu
Z0Zvck5vZGUgOiBXZWJJbnNwZWN0b3JEaWRTdG9wU2VhcmNoaW5nRm9yTm9kZTsKICAgICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewogICAgICAgICBbW05TTm90
aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOm5vdGlm
aWNhdGlvbk5hbWUgb2JqZWN0Omluc3BlY3Rvcl07CkBAIC0xMTgsOCArMTE3LDggQEAgdm9pZCBX
ZWJJbnNwZWN0b3JDbGllbnQ6OmRpZFNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkKQog
I3ByYWdtYSBtYXJrIC0KICNwcmFnbWEgbWFyayBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCBJ
bXBsZW1lbnRhdGlvbgogCi1XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6V2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQoV2ViVmlldyogaW5zcGVjdGVkV2ViVmlldywgV2ViSW5zcGVjdG9yV2lu
ZG93Q29udHJvbGxlciogd2luZG93Q29udHJvbGxlciwgSW5zcGVjdG9yQ29udHJvbGxlciogaW5z
cGVjdG9yQ29udHJvbGxlciwgUGFnZSogZnJvbnRlbmRQYWdlLCBzdGQ6OnVuaXF1ZV9wdHI8U2V0
dGluZ3M+IHNldHRpbmdzKQotICAgIDogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbChpbnNw
ZWN0b3JDb250cm9sbGVyLCAgZnJvbnRlbmRQYWdlLCBXVEY6Om1vdmUoc2V0dGluZ3MpKQorV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlZp
ZXcqIGluc3BlY3RlZFdlYlZpZXcsIFdlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIqIGZyb250
ZW5kV2luZG93Q29udHJvbGxlciwgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdGVkUGFnZUNv
bnRyb2xsZXIsIFBhZ2UqIGZyb250ZW5kUGFnZSwgc3RkOjp1bmlxdWVfcHRyPFNldHRpbmdzPiBz
ZXR0aW5ncykKKyAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoaW5zcGVjdGVkUGFn
ZUNvbnRyb2xsZXIsIGZyb250ZW5kUGFnZSwgV1RGOjptb3ZlKHNldHRpbmdzKSkKIHsKICAgICAv
LyBpT1MgZG9lcyBub3QgaGF2ZSBhIGxvY2FsIGluc3BlY3RvciwgdGhpcyBzaG91bGQgbm90IGJl
IHJlYWNoZWQuCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggZDBkNDRhNmFk
MTFhMzhiZDVhOTRkMjkwYzYyZGVjN2JkYTRkODE3MS4uNzMzNzAyNDQ5ZGJiYWU4NzMyZTg0NjY5
ZTdhNzM0NmM1MmFlZmQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTUxLDEyICs1MSwxMiBAQCBjbGFzcyBX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDsKIAogY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50IDog
cHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwgcHVibGljIEluc3BlY3Rvcjo6RnJvbnRl
bmRDaGFubmVsIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3JDbGllbnQoV2Vi
VmlldyAqKTsKKyAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3JDbGllbnQoV2ViVmlldyogaW5zcGVj
dGVkV2ViVmlldyk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGluc3BlY3RlZFBhZ2VEZXN0cm95ZWQoKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0
b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBvcGVuTG9jYWxGcm9udGVuZChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNsb3Nl
TG9jYWxGcm9udGVuZCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBicmluZ0Zyb250ZW5k
VG9Gcm9udCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZXNpemVNYWluRnJhbWUo
V2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKIApAQCAtOTIsOSArOTIsOSBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsOjpTZXR0aW5ncz4gY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpOwogCi0gICAgV2Vi
VmlldyAqbV93ZWJWaWV3OworICAgIFdlYlZpZXcgKm1faW5zcGVjdGVkV2ViVmlldyB7IG51bGxw
dHIgfTsKICAgICBSZXRhaW5QdHI8V2ViTm9kZUhpZ2hsaWdodGVyPiBtX2hpZ2hsaWdodGVyOwot
ICAgIFdlYkNvcmU6OlBhZ2UqIG1fZnJvbnRlbmRQYWdlOworICAgIFdlYkNvcmU6OlBhZ2UqIG1f
ZnJvbnRlbmRQYWdlIHsgbnVsbHB0ciB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudD4gbV9mcm9udGVuZENsaWVudDsKIH07CiAKQEAgLTEzNCw3ICsxMzQs
NyBAQCBwcml2YXRlOgogCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBXZWJWaWV3KiBtX2luc3Bl
Y3RlZFdlYlZpZXc7Ci0gICAgUmV0YWluUHRyPFdlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXI+
IG1fd2luZG93Q29udHJvbGxlcjsKKyAgICBSZXRhaW5QdHI8V2ViSW5zcGVjdG9yV2luZG93Q29u
dHJvbGxlcj4gbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXI7CiAgICAgU3RyaW5nIG1faW5zcGVj
dGVkVVJMOwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8TlNVUkw+PiBtX3N1Z2dlc3Rl
ZFRvQWN0dWFsVVJMTWFwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KaW5kZXggNGRlOGM0MGU3NDk3MmI1
NjhjNmNmM2ViODNjNTBiNmY1NTgwODdiMS4uYzhjMWQ4YjA1OTFhMjNhYWMxZWI0MzI1YTY5ZGU3
NDY0ODhiN2FhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpAQCAtNjgsMjQgKzY4LDI0IEBAIHN0YXRpYyBjb25z
dCBDR0Zsb2F0IGluaXRpYWxXaW5kb3dIZWlnaHQgPSA2NTA7CiBAaW50ZXJmYWNlIFdlYkluc3Bl
Y3RvcldpbmRvd0NvbnRyb2xsZXIgOiBOU1dpbmRvd0NvbnRyb2xsZXIgPE5TV2luZG93RGVsZWdh
dGUsIFdlYlBvbGljeURlbGVnYXRlLCBXZWJVSURlbGVnYXRlPiB7CiBAcHJpdmF0ZQogICAgIFJl
dGFpblB0cjxXZWJWaWV3PiBfaW5zcGVjdGVkV2ViVmlldzsKLSAgICBXZWJWaWV3ICpfd2ViVmll
dzsKLSAgICBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCogX2Zyb250ZW5kQ2xpZW50OwotICAg
IFdlYkluc3BlY3RvckNsaWVudCogX2luc3BlY3RvckNsaWVudDsKKyAgICBXZWJWaWV3ICpfZnJv
bnRlbmRXZWJWaWV3OworICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50ICpfZnJvbnRlbmRD
bGllbnQ7CisgICAgV2ViSW5zcGVjdG9yQ2xpZW50ICpfaW5zcGVjdG9yQ2xpZW50OwogICAgIEJP
T0wgX2F0dGFjaGVkVG9JbnNwZWN0ZWRXZWJWaWV3OwogICAgIEJPT0wgX3Nob3VsZEF0dGFjaDsK
ICAgICBCT09MIF92aXNpYmxlOwogICAgIEJPT0wgX2Rlc3Ryb3lpbmdJbnNwZWN0b3JWaWV3Owog
fQotLSAoaWQpaW5pdFdpdGhJbnNwZWN0ZWRXZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBpc1Vu
ZGVyVGVzdDooQk9PTClpc1VuZGVyVGVzdDsKKy0gKGlkKWluaXRXaXRoSW5zcGVjdGVkV2ViVmll
dzooV2ViVmlldyAqKWluc3BlY3RlZFdlYlZpZXcgaXNVbmRlclRlc3Q6KEJPT0wpaXNVbmRlclRl
c3Q7CiAtIChOU1N0cmluZyAqKWluc3BlY3RvclBhZ2VQYXRoOwogLSAoTlNTdHJpbmcgKilpbnNw
ZWN0b3JUZXN0UGFnZVBhdGg7Ci0tIChXZWJWaWV3ICopd2ViVmlldzsKKy0gKFdlYlZpZXcgKilm
cm9udGVuZFdlYlZpZXc7CiAtICh2b2lkKWF0dGFjaDsKIC0gKHZvaWQpZGV0YWNoOwogLSAoQk9P
TClhdHRhY2hlZDsKLS0gKHZvaWQpc2V0RnJvbnRlbmRDbGllbnQ6KFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50Kilmcm9udGVuZENsaWVudDsKLS0gKHZvaWQpc2V0SW5zcGVjdG9yQ2xpZW50OihX
ZWJJbnNwZWN0b3JDbGllbnQqKWluc3BlY3RvckNsaWVudDsKLS0gKFdlYkluc3BlY3RvckNsaWVu
dCopaW5zcGVjdG9yQ2xpZW50OworLSAodm9pZClzZXRGcm9udGVuZENsaWVudDooV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQgKilmcm9udGVuZENsaWVudDsKKy0gKHZvaWQpc2V0SW5zcGVjdG9y
Q2xpZW50OihXZWJJbnNwZWN0b3JDbGllbnQgKilpbnNwZWN0b3JDbGllbnQ7CistIChXZWJJbnNw
ZWN0b3JDbGllbnQgKilpbnNwZWN0b3JDbGllbnQ7CiAtICh2b2lkKXNldEF0dGFjaGVkV2luZG93
SGVpZ2h0Oih1bnNpZ25lZCloZWlnaHQ7CiAtICh2b2lkKXNldERvY2tpbmdVbmF2YWlsYWJsZToo
Qk9PTCl1bmF2YWlsYWJsZTsKIC0gKHZvaWQpZGVzdHJveUluc3BlY3RvclZpZXc7CkBAIC05NCwz
NiArOTQsMzUgQEAgQGVuZAogCiAvLyBNQVJLOiAtCiAKLVdlYkluc3BlY3RvckNsaWVudDo6V2Vi
SW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcgKndlYlZpZXcpCi0gICAgOiBtX3dlYlZpZXcod2ViVmll
dykKLSAgICAsIG1faGlnaGxpZ2h0ZXIoYWRvcHROUyhbW1dlYk5vZGVIaWdobGlnaHRlciBhbGxv
Y10gaW5pdFdpdGhJbnNwZWN0ZWRXZWJWaWV3OndlYlZpZXddKSkKLSAgICAsIG1fZnJvbnRlbmRQ
YWdlKG51bGxwdHIpCitXZWJJbnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3RvckNsaWVudChXZWJW
aWV3KiBpbnNwZWN0ZWRXZWJWaWV3KQorICAgIDogbV9pbnNwZWN0ZWRXZWJWaWV3KGluc3BlY3Rl
ZFdlYlZpZXcpCisgICAgLCBtX2hpZ2hsaWdodGVyKGFkb3B0TlMoW1tXZWJOb2RlSGlnaGxpZ2h0
ZXIgYWxsb2NdIGluaXRXaXRoSW5zcGVjdGVkV2ViVmlldzppbnNwZWN0ZWRXZWJWaWV3XSkpCiB7
CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JEZXN0cm95ZWQoKQordm9p
ZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQoKQogewotICAgIGNs
b3NlSW5zcGVjdG9yRnJvbnRlbmQoKTsKKyAgICBjbG9zZUxvY2FsRnJvbnRlbmQoKTsKICAgICBk
ZWxldGUgdGhpczsKIH0KIAotRnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9w
ZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9s
bGVyKQorRnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5Mb2NhbEZyb250
ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RlZFBhZ2VDb250cm9sbGVyKQogewotICAg
IFJldGFpblB0cjxXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyPiB3aW5kb3dDb250cm9sbGVy
ID0gYWRvcHROUyhbW1dlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRo
SW5zcGVjdGVkV2ViVmlldzptX3dlYlZpZXcgaXNVbmRlclRlc3Q6aW5zcGVjdG9yQ29udHJvbGxl
ci0+aXNVbmRlclRlc3QoKV0pOworICAgIFJldGFpblB0cjxXZWJJbnNwZWN0b3JXaW5kb3dDb250
cm9sbGVyPiB3aW5kb3dDb250cm9sbGVyID0gYWRvcHROUyhbW1dlYkluc3BlY3RvcldpbmRvd0Nv
bnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoSW5zcGVjdGVkV2ViVmlldzptX2luc3BlY3RlZFdlYlZp
ZXcgaXNVbmRlclRlc3Q6aW5zcGVjdGVkUGFnZUNvbnRyb2xsZXItPmlzVW5kZXJUZXN0KCldKTsK
ICAgICBbd2luZG93Q29udHJvbGxlci5nZXQoKSBzZXRJbnNwZWN0b3JDbGllbnQ6dGhpc107CiAK
LSAgICBtX2Zyb250ZW5kUGFnZSA9IGNvcmUoW3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgd2ViVmll
d10pOwotICAgIG1fZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50PihtX3dlYlZpZXcsIHdpbmRvd0NvbnRyb2xsZXIuZ2V0KCksIGluc3Bl
Y3RvckNvbnRyb2xsZXIsIG1fZnJvbnRlbmRQYWdlLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkp
OworICAgIG1fZnJvbnRlbmRQYWdlID0gY29yZShbd2luZG93Q29udHJvbGxlci5nZXQoKSBmcm9u
dGVuZFdlYlZpZXddKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9pbnNwZWN0ZWRXZWJWaWV3LCB3aW5kb3dDb250
cm9sbGVyLmdldCgpLCBpbnNwZWN0ZWRQYWdlQ29udHJvbGxlciwgbV9mcm9udGVuZFBhZ2UsIGNy
ZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7CiAKICAgICBSZXRhaW5QdHI8V2ViSW5zcGVjdG9yRnJv
bnRlbmQ+IHdlYkluc3BlY3RvckZyb250ZW5kID0gYWRvcHROUyhbW1dlYkluc3BlY3RvckZyb250
ZW5kIGFsbG9jXSBpbml0V2l0aEZyb250ZW5kQ2xpZW50Om1fZnJvbnRlbmRDbGllbnQuZ2V0KCld
KTsKLSAgICBbW21fd2ViVmlldyBpbnNwZWN0b3JdIHNldEZyb250ZW5kOndlYkluc3BlY3RvckZy
b250ZW5kLmdldCgpXTsKKyAgICBbW21faW5zcGVjdGVkV2ViVmlldyBpbnNwZWN0b3JdIHNldEZy
b250ZW5kOndlYkluc3BlY3RvckZyb250ZW5kLmdldCgpXTsKIAogICAgIG1fZnJvbnRlbmRQYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobV9mcm9u
dGVuZENsaWVudC5nZXQoKSk7CiAKICAgICByZXR1cm4gdGhpczsKIH0KIAotdm9pZCBXZWJJbnNw
ZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKQordm9pZCBXZWJJbnNwZWN0b3JD
bGllbnQ6OmNsb3NlTG9jYWxGcm9udGVuZCgpCiB7CiAgICAgaWYgKG1fZnJvbnRlbmRDbGllbnQp
CiAgICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPmRpc2Nvbm5lY3RGcm9tQmFja2VuZCgpOwpAQCAt
MTY0LDcgKzE2Myw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpoaWRlSGlnaGxpZ2h0KCkK
IAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmRpZFNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBl
bmFibGVkKQogewotICAgIFdlYkluc3BlY3RvciAqaW5zcGVjdG9yID0gW21fd2ViVmlldyBpbnNw
ZWN0b3JdOworICAgIFdlYkluc3BlY3RvciAqaW5zcGVjdG9yID0gW21faW5zcGVjdGVkV2ViVmll
dyBpbnNwZWN0b3JdOwogCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtMTgxLDIz
ICsxODAsMjMgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnJlbGVhc2VGcm9udGVuZCgpCiB9
CiAKIAotV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OldlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50KFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcsIFdlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xs
ZXIqIHdpbmRvd0NvbnRyb2xsZXIsIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRy
b2xsZXIsIFBhZ2UqIGZyb250ZW5kUGFnZSwgc3RkOjp1bmlxdWVfcHRyPFNldHRpbmdzPiBzZXR0
aW5ncykKLSAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoaW5zcGVjdG9yQ29udHJv
bGxlciwgIGZyb250ZW5kUGFnZSwgV1RGOjptb3ZlKHNldHRpbmdzKSkKK1dlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50OjpXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudChXZWJWaWV3KiBpbnNwZWN0
ZWRXZWJWaWV3LCBXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyKiBmcm9udGVuZFdpbmRvd0Nv
bnRyb2xsZXIsIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RlZFBhZ2VDb250cm9sbGVyLCBQ
YWdlKiBmcm9udGVuZFBhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxTZXR0aW5ncz4gc2V0dGluZ3MpCisg
ICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKGluc3BlY3RlZFBhZ2VDb250cm9sbGVy
LCBmcm9udGVuZFBhZ2UsIFdURjo6bW92ZShzZXR0aW5ncykpCiAgICAgLCBtX2luc3BlY3RlZFdl
YlZpZXcoaW5zcGVjdGVkV2ViVmlldykKLSAgICAsIG1fd2luZG93Q29udHJvbGxlcih3aW5kb3dD
b250cm9sbGVyKQorICAgICwgbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIoZnJvbnRlbmRXaW5k
b3dDb250cm9sbGVyKQogewotICAgIFt3aW5kb3dDb250cm9sbGVyIHNldEZyb250ZW5kQ2xpZW50
OnRoaXNdOworICAgIFtmcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgc2V0RnJvbnRlbmRDbGllbnQ6
dGhpc107CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmF0dGFjaEF2YWls
YWJpbGl0eUNoYW5nZWQoYm9vbCBhdmFpbGFibGUpCiB7CiAgICAgc2V0RG9ja2luZ1VuYXZhaWxh
YmxlKCFhdmFpbGFibGUpOwotICAgIFttX3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgc2V0RG9ja2lu
Z1VuYXZhaWxhYmxlOiFhdmFpbGFibGVdOworICAgIFttX2Zyb250ZW5kV2luZG93Q29udHJvbGxl
ci5nZXQoKSBzZXREb2NraW5nVW5hdmFpbGFibGU6IWF2YWlsYWJsZV07CiB9CiAKIGJvb2wgV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNhbkF0dGFjaCgpCiB7Ci0gICAgaWYgKFtbbV93aW5k
b3dDb250cm9sbGVyIHdpbmRvd10gc3R5bGVNYXNrXSAmIE5TRnVsbFNjcmVlbldpbmRvd01hc2sp
CisgICAgaWYgKFtbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgd2luZG93XSBzdHlsZU1hc2td
ICYgTlNGdWxsU2NyZWVuV2luZG93TWFzaykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
cmV0dXJuIGNhbkF0dGFjaFdpbmRvdygpOwpAQCAtMjA1LDggKzIwNCw4IEBAIGJvb2wgV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNhbkF0dGFjaCgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ6OmZyb250ZW5kTG9hZGVkKCkKIHsKLSAgICBbbV93aW5kb3dDb250cm9sbGVy
LmdldCgpIHNob3dXaW5kb3c6bmlsXTsKLSAgICBpZiAoW21fd2luZG93Q29udHJvbGxlci5nZXQo
KSBhdHRhY2hlZF0pCisgICAgW21fZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyLmdldCgpIHNob3dX
aW5kb3c6bmlsXTsKKyAgICBpZiAoW21fZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyLmdldCgpIGF0
dGFjaGVkXSkKICAgICAgICAgcmVzdG9yZUF0dGFjaGVkV2luZG93SGVpZ2h0KCk7CiAKICAgICBJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpmcm9udGVuZExvYWRlZCgpOwpAQCAtMjE4LDE0
ICsyMTcsMTQgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZnJvbnRlbmRMb2Fk
ZWQoKQogICAgICAgICBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRD
bGVhckluc3BlY3RvcldpbmRvd09iamVjdEZvckZyYW1lRnVuYywgbV9pbnNwZWN0ZWRXZWJWaWV3
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkQ2xl
YXJJbnNwZWN0b3JXaW5kb3dPYmplY3Q6Zm9yRnJhbWU6KSwgW2ZyYW1lIHdpbmRvd09iamVjdF0s
IGZyYW1lKTsKIAotICAgIGJvb2wgYXR0YWNoZWQgPSBbbV93aW5kb3dDb250cm9sbGVyLmdldCgp
IGF0dGFjaGVkXTsKKyAgICBib29sIGF0dGFjaGVkID0gW21fZnJvbnRlbmRXaW5kb3dDb250cm9s
bGVyLmdldCgpIGF0dGFjaGVkXTsKICAgICBzZXRBdHRhY2hlZFdpbmRvdyhhdHRhY2hlZCA/IERv
Y2tTaWRlOjpCb3R0b20gOiBEb2NrU2lkZTo6VW5kb2NrZWQpOwogfQogCiB2b2lkIFdlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjpzdGFydFdpbmRvd0RyYWcoKQogewogI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwCi0gICAgW1ttX3dpbmRvd0NvbnRyb2xsZXIg
d2luZG93XSBwZXJmb3JtV2luZG93RHJhZ1dpdGhFdmVudDpbTlNBcHAgY3VycmVudEV2ZW50XV07
CisgICAgW1ttX2Zyb250ZW5kV2luZG93Q29udHJvbGxlciB3aW5kb3ddIHBlcmZvcm1XaW5kb3dE
cmFnV2l0aEV2ZW50OltOU0FwcCBjdXJyZW50RXZlbnRdXTsKICNlbmRpZgogfQogCkBAIC0yNDQs
NDAgKzI0Myw0MCBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpicmluZ1RvRnJv
bnQoKQogewogICAgIHVwZGF0ZVdpbmRvd1RpdGxlKCk7CiAKLSAgICBbbV93aW5kb3dDb250cm9s
bGVyLmdldCgpIHNob3dXaW5kb3c6bmlsXTsKKyAgICBbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xs
ZXIuZ2V0KCkgc2hvd1dpbmRvdzpuaWxdOwogCi0gICAgLy8gVXNlIHRoZSB3aW5kb3cgZnJvbSB0
aGUgV2ViVmlldyBzaW5jZSBtX3dpbmRvd0NvbnRyb2xsZXIncyB3aW5kb3cKKyAgICAvLyBVc2Ug
dGhlIHdpbmRvdyBmcm9tIHRoZSBXZWJWaWV3IHNpbmNlIG1fZnJvbnRlbmRXaW5kb3dDb250cm9s
bGVyJ3Mgd2luZG93CiAgICAgLy8gaXMgbm90IHRoZSBzYW1lIHdoZW4gdGhlIEluc3BlY3RvciBp
cyBkb2NrZWQuCi0gICAgV2ViVmlldyAqd2ViVmlldyA9IFttX3dpbmRvd0NvbnRyb2xsZXIuZ2V0
KCkgd2ViVmlld107Ci0gICAgW1t3ZWJWaWV3IHdpbmRvd10gbWFrZUZpcnN0UmVzcG9uZGVyOndl
YlZpZXddOworICAgIFdlYlZpZXcgKmZyb250ZW5kV2ViVmlldyA9IFttX2Zyb250ZW5kV2luZG93
Q29udHJvbGxlci5nZXQoKSBmcm9udGVuZFdlYlZpZXddOworICAgIFtbZnJvbnRlbmRXZWJWaWV3
IHdpbmRvd10gbWFrZUZpcnN0UmVzcG9uZGVyOmZyb250ZW5kV2ViVmlld107CiB9CiAKIHZvaWQg
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNsb3NlV2luZG93KCkKIHsKLSAgICBbbV93aW5k
b3dDb250cm9sbGVyLmdldCgpIGRlc3Ryb3lJbnNwZWN0b3JWaWV3XTsKKyAgICBbbV9mcm9udGVu
ZFdpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgZGVzdHJveUluc3BlY3RvclZpZXddOwogfQogCiB2b2lk
IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpkaXNjb25uZWN0RnJvbUJhY2tlbmQoKQogewot
ICAgIFttX3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgZGVzdHJveUluc3BlY3RvclZpZXddOworICAg
IFttX2Zyb250ZW5kV2luZG93Q29udHJvbGxlci5nZXQoKSBkZXN0cm95SW5zcGVjdG9yVmlld107
CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmF0dGFjaFdpbmRvdyhEb2Nr
U2lkZSkKIHsKLSAgICBpZiAoW21fd2luZG93Q29udHJvbGxlci5nZXQoKSBhdHRhY2hlZF0pCisg
ICAgaWYgKFttX2Zyb250ZW5kV2luZG93Q29udHJvbGxlci5nZXQoKSBhdHRhY2hlZF0pCiAgICAg
ICAgIHJldHVybjsKLSAgICBbbV93aW5kb3dDb250cm9sbGVyLmdldCgpIGF0dGFjaF07CisgICAg
W21fZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyLmdldCgpIGF0dGFjaF07CiAgICAgcmVzdG9yZUF0
dGFjaGVkV2luZG93SGVpZ2h0KCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ6OmRldGFjaFdpbmRvdygpCiB7Ci0gICAgW21fd2luZG93Q29udHJvbGxlci5nZXQoKSBkZXRh
Y2hdOworICAgIFttX2Zyb250ZW5kV2luZG93Q29udHJvbGxlci5nZXQoKSBkZXRhY2hdOwogfQog
CiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzZXRBdHRhY2hlZFdpbmRvd0hlaWdo
dCh1bnNpZ25lZCBoZWlnaHQpCiB7Ci0gICAgW21fd2luZG93Q29udHJvbGxlci5nZXQoKSBzZXRB
dHRhY2hlZFdpbmRvd0hlaWdodDpoZWlnaHRdOworICAgIFttX2Zyb250ZW5kV2luZG93Q29udHJv
bGxlci5nZXQoKSBzZXRBdHRhY2hlZFdpbmRvd0hlaWdodDpoZWlnaHRdOwogfQogCiB2b2lkIFdl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVk
KQpAQCAtMjg4LDcgKzI4Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNl
dEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQpCiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50OjpzZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKIHsKICNpZiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDw9IDEwOTAKLSAgICBbW21fd2luZG93Q29udHJvbGxl
ciB3aW5kb3ddIHNldENvbnRlbnRCb3JkZXJUaGlja25lc3M6aGVpZ2h0IGZvckVkZ2U6TlNNYXhZ
RWRnZV07CisgICAgW1ttX2Zyb250ZW5kV2luZG93Q29udHJvbGxlciB3aW5kb3ddIHNldENvbnRl
bnRCb3JkZXJUaGlja25lc3M6aGVpZ2h0IGZvckVkZ2U6TlNNYXhZRWRnZV07CiAjZW5kaWYKIH0K
IApAQCAtMzAxLDcgKzMwMCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6Omlu
c3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJiBuZXdVUkwpCiB2b2lkIFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50Ojp1cGRhdGVXaW5kb3dUaXRsZSgpIGNvbnN0CiB7CiAgICAgTlNTdHJp
bmcgKnRpdGxlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6VUlfU1RSSU5HX0lOVEVSTkFM
KCJXZWIgSW5zcGVjdG9yIOKAlCAlQCIsICJXZWIgSW5zcGVjdG9yIHdpbmRvdyB0aXRsZSIpLCAo
TlNTdHJpbmcgKiltX2luc3BlY3RlZFVSTF07Ci0gICAgW1ttX3dpbmRvd0NvbnRyb2xsZXIuZ2V0
KCkgd2luZG93XSBzZXRUaXRsZTp0aXRsZV07CisgICAgW1ttX2Zyb250ZW5kV2luZG93Q29udHJv
bGxlci5nZXQoKSB3aW5kb3ddIHNldFRpdGxlOnRpdGxlXTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudDo6c2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlRGlhbG9n
KQpAQCAtMzM3LDcgKzMzNiw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNh
dmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICBbY29udGVudENvcHkgd3JpdGVUb1VSTDphY3R1YWxVUkwgYXRvbWlj
YWxseTpZRVMgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6TlVMTF07CiAKLSAg
ICAgICAgY29yZShbbV93aW5kb3dDb250cm9sbGVyIHdlYlZpZXddKS0+bWFpbkZyYW1lKCkuc2Ny
aXB0KCkuZXhlY3V0ZVNjcmlwdChbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3Rv
ckZyb250ZW5kQVBJLnNhdmVkVVJMKFwiJUBcIikiLCBhY3R1YWxVUkwuYWJzb2x1dGVTdHJpbmdd
KTsKKyAgICAgICAgY29yZShbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgZnJvbnRlbmRXZWJW
aWV3XSktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCJJbnNwZWN0b3JGcm9udGVuZEFQSS5zYXZlZFVSTChcIiVAXCIpIiwgYWN0
dWFsVVJMLmFic29sdXRlU3RyaW5nXSk7CiAgICAgfTsKIAogICAgIGlmICghZm9yY2VTYXZlRGlh
bG9nKSB7CkBAIC0zNTYsOSArMzU1LDkgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dDo6c2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJgogICAgICAg
ICBzYXZlVG9VUkwocGFuZWwuVVJMKTsKICAgICB9OwogCi0gICAgTlNXaW5kb3cgKndpbmRvdyA9
IFtbbV93aW5kb3dDb250cm9sbGVyIHdlYlZpZXddIHdpbmRvd107Ci0gICAgaWYgKHdpbmRvdykK
LSAgICAgICAgW3BhbmVsIGJlZ2luU2hlZXRNb2RhbEZvcldpbmRvdzp3aW5kb3cgY29tcGxldGlv
bkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOworICAgIE5TV2luZG93ICpmcm9udGVuZFdpbmRv
dyA9IFtbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgZnJvbnRlbmRXZWJWaWV3XSB3aW5kb3dd
OworICAgIGlmIChmcm9udGVuZFdpbmRvdykKKyAgICAgICAgW3BhbmVsIGJlZ2luU2hlZXRNb2Rh
bEZvcldpbmRvdzpmcm9udGVuZFdpbmRvdyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFu
ZGxlcl07CiAgICAgZWxzZQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbcGFuZWwgcnVuTW9k
YWxdKTsKIH0KQEAgLTM3Nyw3ICszNzYsNyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50OjphcHBlbmQoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZwogICAg
IFtoYW5kbGUgd3JpdGVEYXRhOltjb250ZW50IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXV07CiAgICAgW2hhbmRsZSBjbG9zZUZpbGVdOwogCi0gICAgY29yZShbbV93aW5k
b3dDb250cm9sbGVyIHdlYlZpZXddKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlw
dChbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3RvckZyb250ZW5kQVBJLmFwcGVu
ZGVkVG9VUkwoXCIlQFwiKSIsIFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddXSk7CisgICAgY29y
ZShbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgZnJvbnRlbmRXZWJWaWV3XSktPm1haW5GcmFt
ZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJ
bnNwZWN0b3JGcm9udGVuZEFQSS5hcHBlbmRlZFRvVVJMKFwiJUBcIikiLCBbYWN0dWFsVVJMIGFi
c29sdXRlU3RyaW5nXV0pOwogfQogCiAvLyBNQVJLOiAtCkBAIC00MDUsMTQgKzQwNCwxNCBAQCAt
IChpZClpbml0CiAgICAgW3ByZWZlcmVuY2VzIHNldFRhYnNUb0xpbmtzOk5PXTsKICAgICBbcHJl
ZmVyZW5jZXMgc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkOk5PXTsKIAotICAgIF93ZWJWaWV3ID0g
W1tXZWJWaWV3IGFsbG9jXSBpbml0XTsKLSAgICBbX3dlYlZpZXcgc2V0UHJlZmVyZW5jZXM6cHJl
ZmVyZW5jZXNdOwotICAgIFtfd2ViVmlldyBzZXRQcm9oaWJpdHNNYWluRnJhbWVTY3JvbGxpbmc6
WUVTXTsKLSAgICBbX3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpzZWxmXTsKLSAgICBbX3dlYlZpZXcg
c2V0UG9saWN5RGVsZWdhdGU6c2VsZl07CisgICAgX2Zyb250ZW5kV2ViVmlldyA9IFtbV2ViVmll
dyBhbGxvY10gaW5pdF07CisgICAgW19mcm9udGVuZFdlYlZpZXcgc2V0UHJlZmVyZW5jZXM6cHJl
ZmVyZW5jZXNdOworICAgIFtfZnJvbnRlbmRXZWJWaWV3IHNldFByb2hpYml0c01haW5GcmFtZVNj
cm9sbGluZzpZRVNdOworICAgIFtfZnJvbnRlbmRXZWJWaWV3IHNldFVJRGVsZWdhdGU6c2VsZl07
CisgICAgW19mcm9udGVuZFdlYlZpZXcgc2V0UG9saWN5RGVsZWdhdGU6c2VsZl07CiAKICNpZiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDw9IDEwOTAKLSAgICBbX3dlYlZpZXcgc2V0
RHJhd3NCYWNrZ3JvdW5kOk5PXTsKKyAgICBbX2Zyb250ZW5kV2ViVmlldyBzZXREcmF3c0JhY2tn
cm91bmQ6Tk9dOwogI2VuZGlmCiAKICAgICBbcHJlZmVyZW5jZXMgcmVsZWFzZV07CkBAIC00MzAs
NyArNDI5LDcgQEAgLSAoaWQpaW5pdFdpdGhJbnNwZWN0ZWRXZWJWaWV3OihXZWJWaWV3ICopd2Vi
VmlldyBpc1VuZGVyVGVzdDooQk9PTClpc1VuZGVyVGVzdAogCiAgICAgTlNTdHJpbmcgKnBhZ2VQ
YXRoID0gaXNVbmRlclRlc3QgPyBbc2VsZiBpbnNwZWN0b3JUZXN0UGFnZVBhdGhdIDogW3NlbGYg
aW5zcGVjdG9yUGFnZVBhdGhdOwogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtbTlNVUkxS
ZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOiBwYWdlUGF0
aF1dOwotICAgIFtbX3dlYlZpZXcgbWFpbkZyYW1lXSBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAg
ICBbW19mcm9udGVuZFdlYlZpZXcgbWFpbkZyYW1lXSBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKICAg
ICBbcmVxdWVzdCByZWxlYXNlXTsKIAogICAgIHJldHVybiBzZWxmOwpAQCAtNDM4LDcgKzQzNyw3
IEBAIC0gKGlkKWluaXRXaXRoSW5zcGVjdGVkV2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgaXNV
bmRlclRlc3Q6KEJPT0wpaXNVbmRlclRlc3QKIAogLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgW193
ZWJWaWV3IHJlbGVhc2VdOworICAgIFtfZnJvbnRlbmRXZWJWaWV3IHJlbGVhc2VdOwogICAgIFtz
dXBlciBkZWFsbG9jXTsKIH0KIApAQCAtNDcwLDkgKzQ2OSw5IEBAIC0gKE5TU3RyaW5nICopaW5z
cGVjdG9yVGVzdFBhZ2VQYXRoCiAKIC8vIE1BUks6IC0KIAotLSAoV2ViVmlldyAqKXdlYlZpZXcK
Ky0gKFdlYlZpZXcgKilmcm9udGVuZFdlYlZpZXcKIHsKLSAgICByZXR1cm4gX3dlYlZpZXc7Cisg
ICAgcmV0dXJuIF9mcm9udGVuZFdlYlZpZXc7CiB9CiAKIC0gKE5TV2luZG93ICopd2luZG93CkBA
IC01NTAsNyArNTQ5LDcgQEAgLSAodm9pZCljbG9zZQogICAgICAgICBpZiAoW19pbnNwZWN0ZWRX
ZWJWaWV3LmdldCgpIF9pc0Nsb3NlZF0pCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
W193ZWJWaWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOworICAgICAgICBbX2Zyb250ZW5kV2ViVmll
dyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKIAogICAgICAgICBXZWJGcmFtZVZpZXcgKmZyYW1lVmll
dyA9IFtbX2luc3BlY3RlZFdlYlZpZXcuZ2V0KCkgbWFpbkZyYW1lXSBmcmFtZVZpZXddOwogICAg
ICAgICBOU1JlY3QgZnJhbWVWaWV3UmVjdCA9IFtmcmFtZVZpZXcgZnJhbWVdOwpAQCAtNTg4LDEx
ICs1ODcsMTEgQEAgLSAoSUJBY3Rpb24pc2hvd1dpbmRvdzooaWQpc2VuZGVyCiAgICAgaWYgKF9z
aG91bGRBdHRhY2gpIHsKICAgICAgICAgV2ViRnJhbWVWaWV3ICpmcmFtZVZpZXcgPSBbW19pbnNw
ZWN0ZWRXZWJWaWV3LmdldCgpIG1haW5GcmFtZV0gZnJhbWVWaWV3XTsKIAotICAgICAgICBbX3dl
YlZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107Ci0gICAgICAgIFtfaW5zcGVjdGVkV2ViVmlldy5n
ZXQoKSBhZGRTdWJ2aWV3Ol93ZWJWaWV3IHBvc2l0aW9uZWQ6TlNXaW5kb3dCZWxvdyByZWxhdGl2
ZVRvOihOU1ZpZXcgKilmcmFtZVZpZXddOwotICAgICAgICBbW19pbnNwZWN0ZWRXZWJWaWV3Lmdl
dCgpIHdpbmRvd10gbWFrZUZpcnN0UmVzcG9uZGVyOl93ZWJWaWV3XTsKKyAgICAgICAgW19mcm9u
dGVuZFdlYlZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107CisgICAgICAgIFtfaW5zcGVjdGVkV2Vi
Vmlldy5nZXQoKSBhZGRTdWJ2aWV3Ol9mcm9udGVuZFdlYlZpZXcgcG9zaXRpb25lZDpOU1dpbmRv
d0JlbG93IHJlbGF0aXZlVG86KE5TVmlldyAqKWZyYW1lVmlld107CisgICAgICAgIFtbX2luc3Bl
Y3RlZFdlYlZpZXcuZ2V0KCkgd2luZG93XSBtYWtlRmlyc3RSZXNwb25kZXI6X2Zyb250ZW5kV2Vi
Vmlld107CiAKLSAgICAgICAgW193ZWJWaWV3IHNldEF1dG9yZXNpemluZ01hc2s6KE5TVmlld1dp
ZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGUgfCBOU1ZpZXdNYXhZTWFyZ2luKV07Cisg
ICAgICAgIFtfZnJvbnRlbmRXZWJWaWV3IHNldEF1dG9yZXNpemluZ01hc2s6KE5TVmlld1dpZHRo
U2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGUgfCBOU1ZpZXdNYXhZTWFyZ2luKV07CiAgICAg
ICAgIFtmcmFtZVZpZXcgc2V0QXV0b3Jlc2l6aW5nTWFzazooTlNWaWV3V2lkdGhTaXphYmxlIHwg
TlNWaWV3SGVpZ2h0U2l6YWJsZSB8IE5TVmlld01pbllNYXJnaW4pXTsKIAogICAgICAgICBfYXR0
YWNoZWRUb0luc3BlY3RlZFdlYlZpZXcgPSBZRVM7CkBAIC02MDAsMTAgKzU5OSwxMCBAQCAtIChJ
QkFjdGlvbilzaG93V2luZG93OihpZClzZW5kZXIKICAgICAgICAgX2F0dGFjaGVkVG9JbnNwZWN0
ZWRXZWJWaWV3ID0gTk87CiAKICAgICAgICAgTlNWaWV3ICpjb250ZW50VmlldyA9IFtbc2VsZiB3
aW5kb3ddIGNvbnRlbnRWaWV3XTsKLSAgICAgICAgW193ZWJWaWV3IHNldEZyYW1lOltjb250ZW50
VmlldyBmcmFtZV1dOwotICAgICAgICBbX3dlYlZpZXcgc2V0QXV0b3Jlc2l6aW5nTWFzazooTlNW
aWV3V2lkdGhTaXphYmxlIHwgTlNWaWV3SGVpZ2h0U2l6YWJsZSldOwotICAgICAgICBbX3dlYlZp
ZXcgcmVtb3ZlRnJvbVN1cGVydmlld107Ci0gICAgICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3
Ol93ZWJWaWV3XTsKKyAgICAgICAgW19mcm9udGVuZFdlYlZpZXcgc2V0RnJhbWU6W2NvbnRlbnRW
aWV3IGZyYW1lXV07CisgICAgICAgIFtfZnJvbnRlbmRXZWJWaWV3IHNldEF1dG9yZXNpemluZ01h
c2s6KE5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGUpXTsKKyAgICAgICAg
W19mcm9udGVuZFdlYlZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107CisgICAgICAgIFtjb250ZW50
VmlldyBhZGRTdWJ2aWV3Ol9mcm9udGVuZFdlYlZpZXddOwogCiAgICAgICAgIFtzdXBlciBzaG93
V2luZG93Om5pbF07CiAgICAgfQpAQCAtNjY5LDcgKzY2OCw3IEBAIC0gKHZvaWQpc2V0QXR0YWNo
ZWRXaW5kb3dIZWlnaHQ6KHVuc2lnbmVkKWhlaWdodAogICAgIGZyYW1lVmlld1JlY3Quc2l6ZS5o
ZWlnaHQgKz0gaGVpZ2h0RGlmZmVyZW5jZTsKICAgICBmcmFtZVZpZXdSZWN0Lm9yaWdpbi55ID0g
aGVpZ2h0OwogCi0gICAgW193ZWJWaWV3IHNldEZyYW1lOk5TTWFrZVJlY3QoMC4wLCAwLjAsIE5T
V2lkdGgoZnJhbWVWaWV3UmVjdCksIGhlaWdodCldOworICAgIFtfZnJvbnRlbmRXZWJWaWV3IHNl
dEZyYW1lOk5TTWFrZVJlY3QoMC4wLCAwLjAsIE5TV2lkdGgoZnJhbWVWaWV3UmVjdCksIGhlaWdo
dCldOwogICAgIFtmcmFtZVZpZXcgc2V0RnJhbWU6ZnJhbWVWaWV3UmVjdF07CiB9CiAKQEAgLTY5
OSw3ICs2OTgsNyBAQCAtICh2b2lkKWRlc3Ryb3lJbnNwZWN0b3JWaWV3CiAgICAgICAgIGluc3Bl
Y3RlZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoX2luc3Bl
Y3RvckNsaWVudCk7CiAgICAgfQogCi0gICAgW193ZWJWaWV3IGNsb3NlXTsKKyAgICBbX2Zyb250
ZW5kV2ViVmlldyBjbG9zZV07CiB9CiAKIC8vIE1BUks6IC0KQEAgLTcyNyw4ICs3MjYsOCBAQCAt
ICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgcnVuT3BlblBhbmVsRm9yRmlsZUJ1dHRv
bldpdGhSZXN1bHRMaXN0ZW5lcjooaQogICAgICAgICBbcmVzdWx0TGlzdGVuZXIgY2hvb3NlRmls
ZW5hbWVzOmZpbGVuYW1lc107CiAgICAgfTsKIAotICAgIGlmIChfd2ViVmlldy53aW5kb3cpCi0g
ICAgICAgIFtwYW5lbCBiZWdpblNoZWV0TW9kYWxGb3JXaW5kb3c6X3dlYlZpZXcud2luZG93IGNv
bXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKKyAgICBpZiAoX2Zyb250ZW5kV2Vi
Vmlldy53aW5kb3cpCisgICAgICAgIFtwYW5lbCBiZWdpblNoZWV0TW9kYWxGb3JXaW5kb3c6X2Zy
b250ZW5kV2ViVmlldy53aW5kb3cgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJd
OwogICAgIGVsc2UKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW3BhbmVsIHJ1bk1vZGFsXSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvV2ViSW5zcGVj
dG9yLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yLmgKaW5k
ZXggYjYxODZhMTRiYTU5M2Y2NDI3ZTc4MzdhNDJmNjZhZTY1MDQ4OTdkNi4uZTFiMjRhOWNjMmQ2
OWUxZmNiZGE2ODQ0OGVmYjIzNTA2ZDA0NjBiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
Ykluc3BlY3Rvci9XZWJJbnNwZWN0b3IuaApAQCAtMzYsMTEgKzM2LDExIEBAIGV4dGVybiBOU1N0
cmluZyAqV2ViSW5zcGVjdG9yRGlkU3RvcFNlYXJjaGluZ0Zvck5vZGU7CiAKIEBpbnRlcmZhY2Ug
V2ViSW5zcGVjdG9yIDogTlNPYmplY3QKIHsKLSAgICBXZWJWaWV3ICpfd2ViVmlldzsKKyAgICBX
ZWJWaWV3ICpfaW5zcGVjdGVkV2ViVmlldzsKICAgICBXZWJJbnNwZWN0b3JGcm9udGVuZCAqX2Zy
b250ZW5kOwogfQotLSAoaWQpaW5pdFdpdGhXZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldzsKLS0g
KHZvaWQpd2ViVmlld0Nsb3NlZDsKKy0gKGlkKWluaXRXaXRoSW5zcGVjdGVkV2ViVmlldzooV2Vi
VmlldyAqKWluc3BlY3RlZFdlYlZpZXc7CistICh2b2lkKWluc3BlY3RlZFdlYlZpZXdDbG9zZWQ7
CiAtICh2b2lkKXNob3c6KGlkKXNlbmRlcjsKIC0gKHZvaWQpc2hvd0NvbnNvbGU6KGlkKXNlbmRl
cjsKIC0gKHZvaWQpY2xvc2U6KGlkKXNlbmRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkluc3BlY3Rvci9XZWJJbnNwZWN0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJ
bnNwZWN0b3IvV2ViSW5zcGVjdG9yLm1tCmluZGV4IDI2ZGFlZmRmOWU1ZmJiNDRjNzkxYzQ0MGM3
YzVhNGFlYzFiM2JhODMuLmNiYThjNmRiNTlhMTczNzk4NzZkY2M1OGM4MDVmM2I5ZGM1YTJlMzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9XZWJJbnNwZWN0b3Iu
bW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5tbQpA
QCAtNDMsMTEgKzQzLDExIEBAIE5TU3RyaW5nICpXZWJJbnNwZWN0b3JEaWRTdGFydFNlYXJjaGlu
Z0Zvck5vZGUgPSBAIldlYkluc3BlY3RvckRpZFN0YXJ0U2VhcmNoaW5nCiBOU1N0cmluZyAqV2Vi
SW5zcGVjdG9yRGlkU3RvcFNlYXJjaGluZ0Zvck5vZGUgPSBAIldlYkluc3BlY3RvckRpZFN0b3BT
ZWFyY2hpbmdGb3JOb2RlIjsKIAogQGltcGxlbWVudGF0aW9uIFdlYkluc3BlY3RvcgotLSAoaWQp
aW5pdFdpdGhXZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldworLSAoaWQpaW5pdFdpdGhJbnNwZWN0
ZWRXZWJWaWV3OihXZWJWaWV3ICopaW5zcGVjdGVkV2ViVmlldwogewogICAgIGlmICghKHNlbGYg
PSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIF93ZWJWaWV3ID0gd2Vi
VmlldzsgLy8gbm90IHJldGFpbmVkIHRvIHByZXZlbnQgYSBjeWNsZQorICAgIF9pbnNwZWN0ZWRX
ZWJWaWV3ID0gaW5zcGVjdGVkV2ViVmlldzsgLy8gbm90IHJldGFpbmVkIHRvIHByZXZlbnQgYSBj
eWNsZQogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC01OCwxNSArNTgsMTUgQEAgLSAodm9pZClk
ZWFsbG9jCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi0tICh2b2lkKXdlYlZpZXdDbG9zZWQK
Ky0gKHZvaWQpaW5zcGVjdGVkV2ViVmlld0Nsb3NlZAogewotICAgIF93ZWJWaWV3ID0gbmlsOwor
ICAgIF9pbnNwZWN0ZWRXZWJWaWV3ID0gbmlsOwogfQogCiAtICh2b2lkKXNob3dXaW5kb3cKIHsK
LSAgICBpZiAoUGFnZSogcGFnZSA9IGNvcmUoX3dlYlZpZXcpKQotICAgICAgICBwYWdlLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOworICAgIGlmIChQYWdlKiBpbnNwZWN0ZWRQYWdlID0g
Y29yZShfaW5zcGVjdGVkV2ViVmlldykpCisgICAgICAgIGluc3BlY3RlZFBhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS5zaG93KCk7CiB9CiAKIC0gKHZvaWQpc2hvdzooaWQpc2VuZGVyCkBAIC0x
NTcsOCArMTU3LDggQEAgLSAoQk9PTClpc09wZW4KIAogLSAodm9pZCljbG9zZTooaWQpc2VuZGVy
IAogewotICAgIGlmIChQYWdlKiBwYWdlID0gY29yZShfd2ViVmlldykpCi0gICAgICAgIHBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS5jbG9zZSgpOworICAgIGlmIChQYWdlKiBpbnNwZWN0ZWRQ
YWdlID0gY29yZShfaW5zcGVjdGVkV2ViVmlldykpCisgICAgICAgIGluc3BlY3RlZFBhZ2UtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS5jbG9zZSgpOwogfQogCiAtICh2b2lkKWF0dGFjaDooaWQpc2Vu
ZGVyCkBAIC0xNzMsOCArMTczLDEwIEBAIC0gKHZvaWQpZGV0YWNoOihpZClzZW5kZXIKIAogLSAo
dm9pZClldmFsdWF0ZUluRnJvbnRlbmQ6KGlkKXNlbmRlciBzY3JpcHQ6KE5TU3RyaW5nICopc2Ny
aXB0CiB7Ci0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBjb3JlKF93ZWJWaWV3KSkKLSAgICAgICAgcGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoc2NyaXB0
KTsKKyAgICAvLyBGSVhNRTogdGhpcyBpcyBhIHJlYWxseSByb3VuZGFib3V0IHdheSB0byBldmFs
dWF0ZSBpbiB0aGUgZnJvbnRlbmQuCisgICAgLy8gV2UgY291bGQgZGlyZWN0bHkgdXNlIHRoZSBm
cm9udGVuZCBpbnN0ZWFkIG9mIGdvaW5nIHRocm91Z2ggdGhlIGluc3BlY3RlZCBwYWdlLgorICAg
IGlmIChQYWdlKiBpbnNwZWN0ZWRQYWdlID0gY29yZShfaW5zcGVjdGVkV2ViVmlldykpCisgICAg
ICAgIGluc3BlY3RlZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5ldmFsdWF0ZUZvclRlc3RJ
bkZyb250ZW5kKHNjcmlwdCk7CiB9CiAKIC0gKHZvaWQpc2V0RnJvbnRlbmQ6KFdlYkluc3BlY3Rv
ckZyb250ZW5kICopZnJvbnRlbmQKQEAgLTE4NSw2ICsxODcsNiBAQCAtICh2b2lkKXNldEZyb250
ZW5kOihXZWJJbnNwZWN0b3JGcm9udGVuZCAqKWZyb250ZW5kCiAtICh2b2lkKXJlbGVhc2VGcm9u
dGVuZAogewogICAgIFtfZnJvbnRlbmQgcmVsZWFzZV07Ci0gICAgX2Zyb250ZW5kID0gMDsKKyAg
ICBfZnJvbnRlbmQgPSBuaWw7CiB9CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJLaXQub3JkZXIgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQub3JkZXIKaW5kZXggNzE2
MjE3MmNkNjEwNzRkNzU5MDhkM2JhNDUxZDNlNTZmM2VmNTVmZS4uMDkxOWJlMDhkNTg0NDI1YzZl
MDY4ZjQ0MWMwNTNlNjcwOGJlMTExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
S2l0Lm9yZGVyCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYktpdC5vcmRlcgpAQCAtMTAyMCw4
ICsxMDIwLDggQEAgX19aTjI0V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50RDBFdgogX19aTjE1Q29y
cmVjdGlvblBhbmVsN2Rpc21pc3NFTjdXZWJDb3JlMzRSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJu
YXRpdmVUZXh0RQogX19aTjE1Q29ycmVjdGlvblBhbmVsRDFFdgogX19aTjE1Q29ycmVjdGlvblBh
bmVsRDJFdgotX19aTjE4V2ViSW5zcGVjdG9yQ2xpZW50MThpbnNwZWN0b3JEZXN0cm95ZWRFdgot
X19aTjE4V2ViSW5zcGVjdG9yQ2xpZW50MjJjbG9zZUluc3BlY3RvckZyb250ZW5kRXYKK19fWk4x
OFdlYkluc3BlY3RvckNsaWVudDIyaW5zcGVjdGVkUGFnZURlc3Ryb3llZEV2CitfX1pOMThXZWJJ
bnNwZWN0b3JDbGllbnQxOGNsb3NlTG9jYWxGcm9udGVuZEV2CiBfX1pOMThXZWJJbnNwZWN0b3JD
bGllbnREMEV2CiAtW1dlYk5vZGVIaWdobGlnaHRlciBkZWFsbG9jXQogX19aTjIwV2ViRnJhbWVM
b2FkZXJDbGllbnQyMGZyYW1lTG9hZGVyRGVzdHJveWVkRXYKQEAgLTE1MjcsNyArMTUyNyw3IEBA
IF9fWjRjb3JlUDE0V2ViSGlzdG9yeUl0ZW0KIC1bV2ViQmFja0ZvcndhcmRMaXN0IGdvVG9JdGVt
Ol0KIC1bV2ViSW5zcGVjdG9yIHNob3c6XQogLVtXZWJJbnNwZWN0b3Igc2hvd1dpbmRvd10KLV9f
Wk4xOFdlYkluc3BlY3RvckNsaWVudDIxb3Blbkluc3BlY3RvckZyb250ZW5kRVBON1dlYkNvcmUx
OUluc3BlY3RvckNvbnRyb2xsZXJFCitfX1pOMThXZWJJbnNwZWN0b3JDbGllbnQxN29wZW5Mb2Nh
bEZyb250ZW5kRVBON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXJFCiAtW1dlYkluc3BlY3Rv
cldpbmRvd0NvbnRyb2xsZXIgLmN4eF9jb25zdHJ1Y3RdCiAtW1dlYkluc3BlY3RvcldpbmRvd0Nv
bnRyb2xsZXIgaW5pdFdpdGhJbnNwZWN0ZWRXZWJWaWV3Ol0KIC1bV2ViSW5zcGVjdG9yV2luZG93
Q29udHJvbGxlciBpbml0XQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDBh
OTgyZDZjYjJhY2VlYzBhYjQ3YzQ1MmNjNDk0NTdmNmE3Yjc3NjMuLjhmNzllMjZjZTc4ZmQxZWJk
YWY0ZjdiMDFlMmI5OTBjYmI1NzM0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KQEAgLTE3NTYsNyArMTc1Niw3IEBAIC0gKHZvaWQpX2Nsb3NlCiAgICAgW3NlbGYgc2V0U2Ny
aXB0RGVidWdEZWxlZ2F0ZTpuaWxdOwogICAgIFtzZWxmIHNldFVJRGVsZWdhdGU6bmlsXTsKIAot
ICAgIFtfcHJpdmF0ZS0+aW5zcGVjdG9yIHdlYlZpZXdDbG9zZWRdOworICAgIFtfcHJpdmF0ZS0+
aW5zcGVjdG9yIGluc3BlY3RlZFdlYlZpZXdDbG9zZWRdOwogI2VuZGlmCiAjaWYgUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTAwMAogICAgIFtf
cHJpdmF0ZS0+aW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciB3ZWJWaWV3Q2xvc2VkXTsKQEAgLTE4
OTAsNyArMTg5MCw3IEBAIC0gKFdlYlZpZXcgKilfb3Blbk5ld1dpbmRvd1dpdGhSZXF1ZXN0OihO
U1VSTFJlcXVlc3QgKilyZXF1ZXN0CiAtIChXZWJJbnNwZWN0b3IgKilpbnNwZWN0b3IKIHsKICAg
ICBpZiAoIV9wcml2YXRlLT5pbnNwZWN0b3IpCi0gICAgICAgIF9wcml2YXRlLT5pbnNwZWN0b3Ig
PSBbW1dlYkluc3BlY3RvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OnNlbGZdOworICAgICAgICBf
cHJpdmF0ZS0+aW5zcGVjdG9yID0gW1tXZWJJbnNwZWN0b3IgYWxsb2NdIGluaXRXaXRoSW5zcGVj
dGVkV2ViVmlldzpzZWxmXTsKICAgICByZXR1cm4gX3ByaXZhdGUtPmluc3BlY3RvcjsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5jcHAKaW5kZXggMzcxNzc0MDgxZjJhYTBkMzhkYjBjYzhhZTNkMDA5MTFkY2I5OGNi
MS4uODIzMDVjODgxOWNkYmQyMzg3NmVjMzYyNzU1Y2Q4YTYyZWRhODc2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
Y3BwCkBAIC03MiwxMyArNzIsMTMgQEAgV2ViSW5zcGVjdG9yQ2xpZW50Ojp+V2ViSW5zcGVjdG9y
Q2xpZW50KCkKIHsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ry
b3llZCgpCit2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCgp
CiB7Ci0gICAgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpOworICAgIGNsb3NlTG9jYWxGcm9udGVu
ZCgpOwogICAgIGRlbGV0ZSB0aGlzOwogfQogCi1JbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCog
V2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJv
bGxlciogaW5zcGVjdG9yQ29udHJvbGxlcikKK0luc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBX
ZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5Mb2NhbEZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIq
IGluc3BlY3RvckNvbnRyb2xsZXIpCiB7CiAgICAgcmVnaXN0ZXJXaW5kb3dDbGFzcygpOwogCkBA
IC0xNzEsNyArMTcxLDcgQEAgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3Rv
ckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckMKICAgICByZXR1cm4gdGhp
czsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQo
KQordm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlTG9jYWxGcm9udGVuZCgpCiB7CiAgICAg
aWYgKG1fZnJvbnRlbmRDbGllbnQpCiAgICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPmRlc3Ryb3lJ
bnNwZWN0b3JWaWV3KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IDQzNTE1YTBkZWUyOTU1YmYwNTg2OWY3OTlk
NmQ2ZWU1NmVlYTc3OTMuLjI0ZThiN2I3ZjBlZTY1MmYzZGVlY2ZjYTBkYTlhOTYxNTBhYTE4NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5oCkBAIC01MywxMCArNTMsMTAgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdl
Ykluc3BlY3RvckNsaWVudChXZWJWaWV3Kik7CiAKICAgICAvLyBJbnNwZWN0b3JDbGllbnQKLSAg
ICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCk7CisgICAgdmlydHVhbCB2b2lkIGlu
c3BlY3RlZFBhZ2VEZXN0cm95ZWQoKTsKIAotICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpGcm9udGVu
ZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9s
bGVyKik7Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKTsKKyAgICB2
aXJ0dWFsIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBvcGVuTG9jYWxGcm9udGVuZChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKik7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlTG9jYWxG
cm9udGVuZCgpOwogICAgIHZpcnR1YWwgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgpOwogCiAg
ICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vV2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkluc3BlY3Rvci5jcHAK
aW5kZXggMWFlZGI3YTIyNzM5YjZkYTZlNmM2ODlmNWQ4MmE5YzZlNGI4NThjNC4uYzAyODUwZWYx
NTlhYmE1ZmIyNDU5NzQwN2M2MWQxYTI1NmIzNGY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vV2ViSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJJbnNwZWN0
b3IuY3BwCkBAIC0zNywxOCArMzcsMTggQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
LVdlYkluc3BlY3RvciogV2ViSW5zcGVjdG9yOjpjcmVhdGVJbnN0YW5jZShXZWJWaWV3KiB3ZWJW
aWV3LCBXZWJJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVudCkKK1dlYkluc3BlY3Rvciog
V2ViSW5zcGVjdG9yOjpjcmVhdGVJbnN0YW5jZShXZWJWaWV3KiBpbnNwZWN0ZWRXZWJWaWV3LCBX
ZWJJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVudCkKIHsKLSAgICBXZWJJbnNwZWN0b3Iq
IGluc3BlY3RvciA9IG5ldyBXZWJJbnNwZWN0b3Iod2ViVmlldywgaW5zcGVjdG9yQ2xpZW50KTsK
KyAgICBXZWJJbnNwZWN0b3IqIGluc3BlY3RvciA9IG5ldyBXZWJJbnNwZWN0b3IoaW5zcGVjdGVk
V2ViVmlldywgaW5zcGVjdG9yQ2xpZW50KTsKICAgICBpbnNwZWN0b3ItPkFkZFJlZigpOwogICAg
IHJldHVybiBpbnNwZWN0b3I7CiB9CiAKLVdlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKFdlYlZp
ZXcqIHdlYlZpZXcsIFdlYkluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50KQotICAgIDog
bV93ZWJWaWV3KHdlYlZpZXcpCitXZWJJbnNwZWN0b3I6OldlYkluc3BlY3RvcihXZWJWaWV3KiBp
bnNwZWN0ZWRXZWJWaWV3LCBXZWJJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVudCkKKyAg
ICA6IG1faW5zcGVjdGVkV2ViVmlldyhpbnNwZWN0ZWRXZWJWaWV3KQogICAgICwgbV9pbnNwZWN0
b3JDbGllbnQoaW5zcGVjdG9yQ2xpZW50KQogewotICAgIEFTU0VSVF9BUkcod2ViVmlldywgd2Vi
Vmlldyk7CisgICAgQVNTRVJUX0FSRyhpbnNwZWN0ZWRXZWJWaWV3LCBpbnNwZWN0ZWRXZWJWaWV3
KTsKIAogICAgIGdDbGFzc0NvdW50Kys7CiAgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJJ
bnNwZWN0b3IiKTsKQEAgLTY1LDkgKzY1LDkgQEAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQq
IFdlYkluc3BlY3Rvcjo6ZnJvbnRlbmRDbGllbnQoKQogICAgIHJldHVybiBtX2luc3BlY3RvckNs
aWVudCA/IG1faW5zcGVjdG9yQ2xpZW50LT5mcm9udGVuZENsaWVudCgpIDogbnVsbHB0cjsKIH0K
IAotdm9pZCBXZWJJbnNwZWN0b3I6OndlYlZpZXdDbG9zZWQoKQordm9pZCBXZWJJbnNwZWN0b3I6
Omluc3BlY3RlZFdlYlZpZXdDbG9zZWQoKQogewotICAgIG1fd2ViVmlldyA9IG51bGxwdHI7Cisg
ICAgbV9pbnNwZWN0ZWRXZWJWaWV3ID0gbnVsbHB0cjsKICAgICBtX2luc3BlY3RvckNsaWVudCA9
IG51bGxwdHI7CiB9CiAKQEAgLTEwNSw4ICsxMDUsOCBAQCBVTE9ORyBXZWJJbnNwZWN0b3I6OlJl
bGVhc2UoKQogCiBIUkVTVUxUIFdlYkluc3BlY3Rvcjo6c2hvdygpCiB7Ci0gICAgaWYgKG1fd2Vi
VmlldykKLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX3dlYlZpZXctPnBhZ2UoKSkKKyAgICBp
ZiAobV9pbnNwZWN0ZWRXZWJWaWV3KQorICAgICAgICBpZiAoUGFnZSogcGFnZSA9IG1faW5zcGVj
dGVkV2ViVmlldy0+cGFnZSgpKQogICAgICAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLnNob3coKTsKIAogICAgIHJldHVybiBTX09LOwpAQCAtMTI3LDggKzEyNyw4IEBAIEhSRVNV
TFQgV2ViSW5zcGVjdG9yOjp1bnVzZWQxKCkKIAogSFJFU1VMVCBXZWJJbnNwZWN0b3I6OmNsb3Nl
KCkKIHsKLSAgICBpZiAobV93ZWJWaWV3KQotICAgICAgICBpZiAoUGFnZSogcGFnZSA9IG1fd2Vi
Vmlldy0+cGFnZSgpKQorICAgIGlmIChtX2luc3BlY3RlZFdlYlZpZXcpCisgICAgICAgIGlmIChQ
YWdlKiBwYWdlID0gbV9pbnNwZWN0ZWRXZWJWaWV3LT5wYWdlKCkpCiAgICAgICAgICAgICBwYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCkuY2xvc2UoKTsKIAogICAgIHJldHVybiBTX09LOwpAQCAt
MjEwLDQyICsyMTAsNDIgQEAgSFJFU1VMVCBXZWJJbnNwZWN0b3I6OmlzSmF2YVNjcmlwdFByb2Zp
bGluZ0VuYWJsZWQoX091dF8gQk9PTCogaXNQcm9maWxpbmdFbmFibGUKIAogICAgICppc1Byb2Zp
bGluZ0VuYWJsZWQgPSBGQUxTRTsKIAotICAgIGlmICghbV93ZWJWaWV3KQorICAgIGlmICghbV9p
bnNwZWN0ZWRXZWJWaWV3KQogICAgICAgICByZXR1cm4gU19PSzsKIAotICAgIFBhZ2UqIHBhZ2Ug
PSBtX3dlYlZpZXctPnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2UpCisgICAgUGFnZSogaW5zcGVjdGVk
UGFnZSA9IG1faW5zcGVjdGVkV2ViVmlldy0+cGFnZSgpOworICAgIGlmICghaW5zcGVjdGVkUGFn
ZSkKICAgICAgICAgcmV0dXJuIFNfT0s7CiAKLSAgICAqaXNQcm9maWxpbmdFbmFibGVkID0gcGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnByb2ZpbGVyRW5hYmxlZCgpOworICAgICppc1Byb2Zp
bGluZ0VuYWJsZWQgPSBpbnNwZWN0ZWRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkucHJvZmls
ZXJFbmFibGVkKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgV2ViSW5zcGVjdG9y
OjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChCT09MIGVuYWJsZWQpCiB7Ci0gICAgaWYg
KCFtX3dlYlZpZXcpCisgICAgaWYgKCFtX2luc3BlY3RlZFdlYlZpZXcpCiAgICAgICAgIHJldHVy
biBTX09LOwogCi0gICAgUGFnZSogcGFnZSA9IG1fd2ViVmlldy0+cGFnZSgpOwotICAgIGlmICgh
cGFnZSkKKyAgICBQYWdlKiBpbnNwZWN0ZWRQYWdlID0gbV9pbnNwZWN0ZWRXZWJWaWV3LT5wYWdl
KCk7CisgICAgaWYgKCFpbnNwZWN0ZWRQYWdlKQogICAgICAgICByZXR1cm4gU19PSzsKIAotICAg
IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRQcm9maWxlckVuYWJsZWQoZW5hYmxlZCk7
CisgICAgaW5zcGVjdGVkUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldFByb2ZpbGVyRW5h
YmxlZChlbmFibGVkKTsKIAogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFdlYkluc3Bl
Y3Rvcjo6ZXZhbHVhdGVJbkZyb250ZW5kKF9Jbl8gQlNUUiBiU2NyaXB0KQogewotICAgIGlmICgh
bV93ZWJWaWV3KQorICAgIGlmICghbV9pbnNwZWN0ZWRXZWJWaWV3KQogICAgICAgICByZXR1cm4g
U19PSzsKIAotICAgIFBhZ2UqIHBhZ2UgPSBtX3dlYlZpZXctPnBhZ2UoKTsKLSAgICBpZiAoIXBh
Z2UpCisgICAgUGFnZSogaW5zcGVjdGVkUGFnZSA9IG1faW5zcGVjdGVkV2ViVmlldy0+cGFnZSgp
OworICAgIGlmICghaW5zcGVjdGVkUGFnZSkKICAgICAgICAgcmV0dXJuIFNfT0s7CiAKICAgICBT
dHJpbmcgc2NyaXB0KGJTY3JpcHQsIFN5c1N0cmluZ0xlbihiU2NyaXB0KSk7Ci0gICAgcGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoc2NyaXB0KTsK
KyAgICBpbnNwZWN0ZWRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZXZhbHVhdGVGb3JUZXN0
SW5Gcm9udGVuZChzY3JpcHQpOwogICAgIHJldHVybiBTX09LOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJJbnNwZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYklu
c3BlY3Rvci5oCmluZGV4IDk0YTk1NThhM2I3MTkyMjUzYzljMDA5Y2JhZTk3NjBhZDlkZDMxNWQu
LjE1NTRiZTU3MDJkZWQyNGY2MmI3MjViNjcwYTQ3ZGE5NzE4YTMxZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkluc3BlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
Ykluc3BlY3Rvci5oCkBAIC0zOSw5ICszOSw5IEBAIGNsYXNzIFdlYlZpZXc7CiBjbGFzcyBXZWJJ
bnNwZWN0b3IgOiBwdWJsaWMgSVdlYkluc3BlY3RvciwgcHVibGljIElXZWJJbnNwZWN0b3JQcml2
YXRlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJJbnNwZWN0b3IpOwogcHVibGljOgot
ICAgIHN0YXRpYyBXZWJJbnNwZWN0b3IqIGNyZWF0ZUluc3RhbmNlKFdlYlZpZXcqLCBXZWJJbnNw
ZWN0b3JDbGllbnQqKTsKKyAgICBzdGF0aWMgV2ViSW5zcGVjdG9yKiBjcmVhdGVJbnN0YW5jZShX
ZWJWaWV3KiBpbnNwZWN0ZWRXZWJWaWV3LCBXZWJJbnNwZWN0b3JDbGllbnQqKTsKIAotICAgIHZv
aWQgd2ViVmlld0Nsb3NlZCgpOworICAgIHZvaWQgaW5zcGVjdGVkV2ViVmlld0Nsb3NlZCgpOwog
CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9J
bl8gUkVGSUlELCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CiAgICAgdmlydHVhbCBV
TE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYoKTsKQEAgLTY5LDE0ICs2OSwxNCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFRpbWVsaW5lUHJv
ZmlsaW5nRW5hYmxlZChCT09MKTsKIAogcHJpdmF0ZToKLSAgICBXZWJJbnNwZWN0b3IoV2ViVmll
dyosIFdlYkluc3BlY3RvckNsaWVudCopOworICAgIFdlYkluc3BlY3RvcihXZWJWaWV3KiBpbnNw
ZWN0ZWRXZWJWaWV3LCBXZWJJbnNwZWN0b3JDbGllbnQqKTsKICAgICB+V2ViSW5zcGVjdG9yKCk7
CiAKICAgICBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCogZnJvbnRlbmRDbGllbnQoKTsKIAog
ICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07Ci0gICAgV2ViVmlldyogbV93ZWJWaWV3OwotICAg
IFdlYkluc3BlY3RvckNsaWVudCogbV9pbnNwZWN0b3JDbGllbnQ7CisgICAgV2ViVmlldyogbV93
ZWJWaWV3IHsgbnVsbHB0ciB9OworICAgIFdlYkluc3BlY3RvckNsaWVudCogbV9pbnNwZWN0b3JD
bGllbnQgeyBudWxscHRyIH07CiB9OwogCiAjZW5kaWYgLy8gIWRlZmluZWQoV2ViSW5zcGVjdG9y
X2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IGI3YWYyY2I3YmM2MmM0OTFmOWFlNTMwOTU5ODJi
OTUzYjZhYzE3YzMuLjIyMTI0NDExYjk3ODc3YTBjNmRhNDkyZGI3NzE2M2YxZTA3ZDkwNTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYlZpZXcuY3BwCkBAIC03NjIsOSArNzYyLDkgQEAgSFJFU1VMVCBXZWJWaWV3Ojpj
bG9zZSgpCiAgICAgc2V0VUlEZWxlZ2F0ZSgwKTsKICAgICBzZXRGb3JtRGVsZWdhdGUoMCk7CiAK
LSAgICBtX2luc3BlY3RvckNsaWVudCA9IDA7CisgICAgbV9pbnNwZWN0b3JDbGllbnQgPSBudWxs
cHRyOwogICAgIGlmIChtX3dlYkluc3BlY3RvcikKLSAgICAgICAgbV93ZWJJbnNwZWN0b3ItPndl
YlZpZXdDbG9zZWQoKTsKKyAgICAgICAgbV93ZWJJbnNwZWN0b3ItPmluc3BlY3RlZFdlYlZpZXdD
bG9zZWQoKTsKIAogICAgIGRlbGV0ZSBtX3BhZ2U7CiAgICAgbV9wYWdlID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCA2NmU5YmM3MGRhYzA0NDg3Njk0M2ZiNWRkMzljZGIy
YTc0ZDIzNmZhLi41ODgwY2UwMzUwYWU0Nzc0ODU0NDc5MDllODI0NmIxMWY3YTVmYTdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC03NiwyMCArNzYsMjAgQEAgV2ViSW5zcGVj
dG9yQ2xpZW50Ojp+V2ViSW5zcGVjdG9yQ2xpZW50KCkKICAgICAgICAgbV9wYWdlLT5tYWluRnJh
bWUoKS0+cGFnZU92ZXJsYXlDb250cm9sbGVyKCkudW5pbnN0YWxsUGFnZU92ZXJsYXkobV9wYWlu
dFJlY3RPdmVybGF5LmdldCgpLCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkZhZGUpOwogfQogCi12
b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJveWVkKCkKK3ZvaWQgV2ViSW5z
cGVjdG9yQ2xpZW50OjppbnNwZWN0ZWRQYWdlRGVzdHJveWVkKCkKIHsKLSAgICBjbG9zZUluc3Bl
Y3RvckZyb250ZW5kKCk7CisgICAgY2xvc2VMb2NhbEZyb250ZW5kKCk7CiAgICAgZGVsZXRlIHRo
aXM7CiB9CiAKLUluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6
Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyKQor
SW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3RvckNsaWVudDo6b3BlbkxvY2Fs
RnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlcikKIHsKICAgICBtX3BhZ2Ut
Pmluc3BlY3RvcigpLT5vcGVuRnJvbnRlbmRDb25uZWN0aW9uKGNvbnRyb2xsZXItPmlzVW5kZXJU
ZXN0KCkpOwogCiAgICAgcmV0dXJuIG1fcGFnZS0+aW5zcGVjdG9yKCk7CiB9CiAKLXZvaWQgV2Vi
SW5zcGVjdG9yQ2xpZW50OjpjbG9zZUluc3BlY3RvckZyb250ZW5kKCkKK3ZvaWQgV2ViSW5zcGVj
dG9yQ2xpZW50OjpjbG9zZUxvY2FsRnJvbnRlbmQoKQogewogICAgIGlmIChtX3BhZ2UtPmluc3Bl
Y3RvcigpKSB7CiAgICAgICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLmRpc2Nvbm5lY3RGcm9udGVuZChtX3BhZ2UtPmluc3BlY3RvcigpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5oCmluZGV4IGI4MzgwYjFiODhiMTc2MTQxZmZjNGE4NDU3Mzg4NDBkN2JkOThk
OGMuLmIxMGY0NDA5MTlhZjQxMDlkYjg0ZWI2MDQ5YjE3YTU4Nzc0NDIyOTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuaApAQCAtNTAsMTAgKzUwLDEwIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToK
ICAgICAvLyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQKLSAgICB2b2lkIGluc3BlY3RvckRlc3Ry
b3llZCgpIG92ZXJyaWRlOworICAgIHZvaWQgaW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpIG92ZXJy
aWRlOwogCi0gICAgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9u
dGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBj
bG9zZUluc3BlY3RvckZyb250ZW5kKCkgb3ZlcnJpZGU7CisgICAgSW5zcGVjdG9yOjpGcm9udGVu
ZENoYW5uZWwqIG9wZW5Mb2NhbEZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIq
KSBvdmVycmlkZTsKKyAgICB2b2lkIGNsb3NlTG9jYWxGcm9udGVuZCgpIG92ZXJyaWRlOwogICAg
IHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlc2l6
ZU1haW5GcmFtZShXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlciBiL1NvdXJjZS9XZWJLaXQyL21hYy9XZWJLaXQy
Lm9yZGVyCmluZGV4IDhhMDM4Mzg5MjdmNWU5MmUzOGQ1MzYyZmFjMzlkN2RhMDZmNjM2ZjguLjdk
ZGI5NzFkNDdkMmE2YWU0MThlNmQ5ZjQxNTI2MGI5NDRkZWU1ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL21hYy9XZWJLaXQyLm9yZGVyCisrKyBiL1NvdXJjZS9XZWJLaXQyL21hYy9XZWJL
aXQyLm9yZGVyCkBAIC00MzI0LDggKzQzMjQsOCBAQCBfX1pONldlYktpdDE1V2ViUGx1Z0luQ2xp
ZW50MTNwYWdlRGVzdHJveWVkRXYKIF9fWk42V2ViS2l0MTVXZWJQbHVnSW5DbGllbnREMEV2CiBf
X1pONldlYktpdDI0V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50MTNwYWdlRGVzdHJveWVkRXYKIF9f
Wk42V2ViS2l0MjRXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnREMEV2Ci1fX1pONldlYktpdDE4V2Vi
SW5zcGVjdG9yQ2xpZW50MThpbnNwZWN0b3JEZXN0cm95ZWRFdgotX19aTjZXZWJLaXQxOFdlYklu
c3BlY3RvckNsaWVudDIyY2xvc2VJbnNwZWN0b3JGcm9udGVuZEV2CitfX1pONldlYktpdDE4V2Vi
SW5zcGVjdG9yQ2xpZW50MjJpbnNwZWN0ZWRQYWdlRGVzdHJveWVkRXYKK19fWk42V2ViS2l0MThX
ZWJJbnNwZWN0b3JDbGllbnQxOGNsb3NlTG9jYWxGcm9udGVuZEV2CiBfX1pONldlYktpdDE4V2Vi
SW5zcGVjdG9yQ2xpZW50RDBFdgogX19aTjZXZWJLaXQyM1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5
NWNsb3NlRXYKIF9fWk42V2ViS2l0MjNXZWJCYWNrRm9yd2FyZExpc3RQcm94eTlpdGVtRm9ySURF
eQpAQCAtODQ2Niw3ICs4NDY2LDcgQEAgX19aTjZXZWJLaXQxOFdlYkJhY2tGb3J3YXJkTGlzdDVj
bGVhckV2CiBfV0tCdW5kbGVQYWdlR2V0SW5zcGVjdG9yCiBfV0tCdW5kbGVJbnNwZWN0b3JTaG93
CiBfX1pONldlYktpdDEyV2ViSW5zcGVjdG9yNHNob3dFdgotX19aTjZXZWJLaXQxOFdlYkluc3Bl
Y3RvckNsaWVudDIxb3Blbkluc3BlY3RvckZyb250ZW5kRVBON1dlYkNvcmUxOUluc3BlY3RvckNv
bnRyb2xsZXJFCitfX1pONldlYktpdDE4V2ViSW5zcGVjdG9yQ2xpZW50MTdvcGVuTG9jYWxGcm9u
dGVuZEVQTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyRQogX19aTjZXZWJLaXQxMldlYklu
c3BlY3RvcjE5Y3JlYXRlSW5zcGVjdG9yUGFnZUV2CiBfX1pON0NvcmVJUEMxMENvbm5lY3Rpb244
c2VuZFN5bmNJTjhNZXNzYWdlczE3V2ViSW5zcGVjdG9yUHJveHkxOUNyZWF0ZUluc3BlY3RvclBh
Z2VFRUViUktUX1JLTlM1XzVSZXBseUV5ZGoKIF9fWk42V2ViS2l0MTVEcmF3aW5nQXJlYUltcGwz
M3BhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZEV2Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261028</attachid>
            <date>2015-09-11 16:37:45 -0700</date>
            <delta_ts>2022-03-01 02:45:35 -0800</delta_ts>
            <desc>Proposed Fix (EWS)</desc>
            <filename>bug-149071-20150911163736.patch</filename>
            <type>text/plain</type>
            <size>59564</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5NjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQyNGY5YjM2N2E3NGI4
OGUyMGYxZTM1ZGQ2MGU1MGVjZDViNTIxYi4uNTg2NTc4MWZjYzQzZDFjMmY3MzBkODEzYzEwZGYy
YTVhOGFmOGUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE1LTA5LTExICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGRpc2Ft
YmlndWF0ZSBpbnNwZWN0ZWQvZnJvbnRlbmQgY29udHJvbGxlcnMgYW5kIHBhZ2VzIGluIGJhY2tl
bmQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ5MDcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QmUgY29uc2lzdGVudCBhYm91dCBwcmVmaXhpbmcgcGFnZXMsIGluc3BlY3RvciBjb250cm9sbGVy
cywgYW5kIHdpbmRvdyBjb250cm9sbGVycworICAgICAgICB3aXRoIGVpdGhlciAiZnJvbnRlbmQi
IG9yICJpbnNwZWN0ZWQiLCBhcyBhcHByb3ByaWF0ZS4gVGhpcyBjaGFuZ2UgbWFrZXMgb2J2aW91
cyBzb21lIGJ1Z3MKKyAgICAgICAgaW4gdGhlIGZyb250ZW5kIGNvbm5lY3Rpb24gY29kZSwgd2hp
Y2ggYXJlIHRyYWNrZWQgYnkgaHR0cHM6Ly93ZWJraXQub3JnL2IvMTQ5MDA2LgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogV2ViQ29yZS5v
cmRlcjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6OmNsb3NlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6On5JbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWw6OmNhbkF0dGFjaFdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsOjpjaGFuZ2VBdHRhY2hlZFdpbmRvd0hlaWdodCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpjaGFuZ2VBdHRhY2hlZFdpbmRvd1dp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Om9w
ZW5Jbk5ld1RhYik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsOjpyZXN0b3JlQXR0YWNoZWRXaW5kb3dIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6c2hvd01haW5SZXNvdXJjZUZvckZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmlzVW5kZXJUZXN0
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvck92ZXJsYXk6OmZyZWVQYWdlKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlD
bGllbnRzLmg6CisKIDIwMTUtMDktMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBET01Ub2tlbkxpc3QgdXBkYXRlIHN0ZXBzIGZvciBjbGFzc0xpc3QgZG9uJ3Qg
Zm9sbG93IHRoZSBzcGVjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKaW5kZXggZDRhNDY4M2M4ZDc3NDkzYWZkMGQ3
MWIwMWE4NTI2M2RiZGFjYTAwZS4uODgyNzc0MDdhMzQ4NDhiYTAzZmI4YzA0MzBkYzdiZmJkY2U5
N2U4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE1LTA5LTExICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGRpc2Ft
YmlndWF0ZSBpbnNwZWN0ZWQvZnJvbnRlbmQgY29udHJvbGxlcnMgYW5kIHBhZ2VzIGluIGJhY2tl
bmQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ5MDcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW06CisgICAgICAgIChXZWJJ
bnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3RvckNsaWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3JDbGllbnQ6Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQpOiBSZW5hbWVkLgorICAgICAgICAoV2Vi
SW5zcGVjdG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9udGVuZCk6IFJlbmFtZWQuCisgICAgICAgIChX
ZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlTG9jYWxGcm9udGVuZCk6IFJlbmFtZWQuCisgICAgICAg
IChXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpzaG93SW5zcGVjdG9ySW5kaWNh
dGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmhpZGVJbnNwZWN0b3JJbmRpY2F0
aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6ZGlkU2V0U2VhcmNoaW5nRm9yTm9k
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6V2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQpOgorCiAyMDE1LTA4LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CiAKICAgICAgICAgUmVwbGFjZSBhbGwgcmVtYWluaW5nIHVzZXMgb2YgV1RGOjpNdXRleCB3
aXRoIFdURjo6TG9jawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDAzYTkzZGFlMDE3ZTJhYjQxZTZkZTYy
ODc0MGJmMGQyOGY4ZDk3NzMuLjE0YWU0NmE0MGM1N2E5Njc2Njg0ODY5ZDgxZTI1ZjdlZjI4Y2U4
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NCBAQAorMjAxNS0wOS0xMSAgQnJpYW4g
QnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBkaXNhbWJp
Z3VhdGUgaW5zcGVjdGVkL2Zyb250ZW5kIGNvbnRyb2xsZXJzIGFuZCBwYWdlcyBpbiBiYWNrZW5k
IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
OTA3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJl
IGNvbnNpc3RlbnQgYWJvdXQgcHJlZml4aW5nIHBhZ2VzLCBpbnNwZWN0b3IgY29udHJvbGxlcnMs
IGFuZCB3aW5kb3cgY29udHJvbGxlcnMKKyAgICAgICAgd2l0aCBlaXRoZXIgImZyb250ZW5kIiBv
ciAiaW5zcGVjdGVkIiwgYXMgYXBwcm9wcmlhdGUuIFRoaXMgY2hhbmdlIG1ha2VzIG9idmlvdXMg
c29tZSBidWdzCisgICAgICAgIGluIHRoZSBmcm9udGVuZCBjb25uZWN0aW9uIGNvZGUsIHdoaWNo
IGFyZSB0cmFja2VkIGJ5IGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE0OTAwNi4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVu
dDo6V2ViSW5zcGVjdG9yQ2xpZW50KTogUmVuYW1lZC4KKyAgICAgICAgKFdlYkluc3BlY3RvckNs
aWVudDo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCk6IFJlbmFtZWQuCisgICAgICAgIChXZWJJbnNw
ZWN0b3JDbGllbnQ6Om9wZW5Mb2NhbEZyb250ZW5kKTogUmVuYW1lZC4KKyAgICAgICAgKFdlYklu
c3BlY3RvckNsaWVudDo6Y2xvc2VMb2NhbEZyb250ZW5kKTogUmVuYW1lZC4KKyAgICAgICAgKFdl
Ykluc3BlY3RvckNsaWVudDo6ZGlkU2V0U2VhcmNoaW5nRm9yTm9kZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmF0dGFjaEF2YWlsYWJpbGl0eUNoYW5n
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNhbkF0dGFjaCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZnJvbnRlbmRMb2FkZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnN0YXJ0V2luZG93RHJhZyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YnJpbmdUb0Zyb250KToKKyAgICAgICAg
KFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpjbG9zZVdpbmRvdyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZGlzY29ubmVjdEZyb21CYWNrZW5kKToKKyAgICAgICAg
KFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphdHRhY2hXaW5kb3cpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmRldGFjaFdpbmRvdyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6c2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNldFRvb2xiYXJIZWlnaHQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnVwZGF0ZVdpbmRvd1RpdGxlKToKKyAgICAgICAg
KFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50OjphcHBlbmQpOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JXaW5kb3dD
b250cm9sbGVyIGluaXRdKToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxl
ciBpbml0V2l0aEluc3BlY3RlZFdlYlZpZXc6aXNVbmRlclRlc3Q6XSk6CisgICAgICAgICgtW1dl
Ykluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJJbnNw
ZWN0b3JXaW5kb3dDb250cm9sbGVyIGZyb250ZW5kV2ViVmlld10pOgorICAgICAgICAoLVtXZWJJ
bnNwZWN0b3JXaW5kb3dDb250cm9sbGVyIGNsb3NlXSk6CisgICAgICAgICgtW1dlYkluc3BlY3Rv
cldpbmRvd0NvbnRyb2xsZXIgc2hvd1dpbmRvdzpdKToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9y
V2luZG93Q29udHJvbGxlciBzZXRBdHRhY2hlZFdpbmRvd0hlaWdodDpdKToKKyAgICAgICAgKC1b
V2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlciBkZXN0cm95SW5zcGVjdG9yVmlld10pOgorICAg
ICAgICAoLVtXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyIHdlYlZpZXc6cnVuT3BlblBhbmVs
Rm9yRmlsZUJ1dHRvbldpdGhSZXN1bHRMaXN0ZW5lcjphbGxvd011bHRpcGxlRmlsZXM6XSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRl
bmQpOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyIHdl
YlZpZXddKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yLmg6
CisgICAgICAgICogV2ViSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5tbToKKyAgICAgICAgKC1bV2Vi
SW5zcGVjdG9yIGluaXRXaXRoSW5zcGVjdGVkV2ViVmlldzpdKTogUmVuYW1lZC4KKyAgICAgICAg
KC1bV2ViSW5zcGVjdG9yIGluc3BlY3RlZFdlYlZpZXdDbG9zZWRdKTogUmVuYW1lZC4KKyAgICAg
ICAgKC1bV2ViSW5zcGVjdG9yIHNob3dXaW5kb3ddKToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9y
IGNsb3NlOl0pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3IgZXZhbHVhdGVJbkZyb250ZW5kOnNj
cmlwdDpdKToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yIHJlbGVhc2VGcm9udGVuZF0pOgorICAg
ICAgICAoLVtXZWJJbnNwZWN0b3IgaW5pdFdpdGhXZWJWaWV3Ol0pOiBEZWxldGVkLgorICAgICAg
ICAoLVtXZWJJbnNwZWN0b3Igd2ViVmlld0Nsb3NlZF0pOiBEZWxldGVkLgorICAgICAgICAqIFdl
YktpdC5vcmRlcjoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dl
YlZpZXcgX2Nsb3NlXSk6CisgICAgICAgICgtW1dlYlZpZXcgaW5zcGVjdG9yXSk6CisKIDIwMTUt
MDktMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBOb2RlLmFw
cGVuZENoaWxkKG51bGwpIC8gcmVwbGFjZUNoaWxkKG51bGwsIG51bGwpIC8gcmVtb3ZlQ2hpbGQo
bnVsbCkgLyBpbnNlcnRCZWZvcmUobnVsbCwgcmVmKSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwppbmRleCAyMjVkZmVlZjM5MzUyYjIwYTQ4Mzc4Y2VjZmRhYTdhZjdhZGVj
MGRjLi42NDJhYzlmMzg3MjFhYzMyM2FkNDliNmNjYzFmM2I1ZGYxZmU3ODFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTUtMDktMTEgIEJyaWFuIEJ1cmcgIDxiYnVyZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZGlzYW1iaWd1YXRlIGluc3BlY3Rl
ZC9mcm9udGVuZCBjb250cm9sbGVycyBhbmQgcGFnZXMgaW4gYmFja2VuZCBjb2RlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDkwNzEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCZSBjb25zaXN0ZW50IGFi
b3V0IHByZWZpeGluZyBwYWdlcywgaW5zcGVjdG9yIGNvbnRyb2xsZXJzLCBhbmQgd2luZG93IGNv
bnRyb2xsZXJzCisgICAgICAgIHdpdGggZWl0aGVyICJmcm9udGVuZCIgb3IgImluc3BlY3RlZCIs
IGFzIGFwcHJvcHJpYXRlLiBUaGlzIGNoYW5nZSBtYWtlcyBvYnZpb3VzIHNvbWUgYnVncworICAg
ICAgICBpbiB0aGUgZnJvbnRlbmQgY29ubmVjdGlvbiBjb2RlLCB3aGljaCBhcmUgdHJhY2tlZCBi
eSBodHRwczovL3dlYmtpdC5vcmcvYi8xNDkwMDYuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50Ojpp
bnNwZWN0ZWRQYWdlRGVzdHJveWVkKTogUmVuYW1lZC4KKyAgICAgICAgKFdlYkluc3BlY3RvckNs
aWVudDo6b3BlbkxvY2FsRnJvbnRlbmQpOiBSZW5hbWVkLgorICAgICAgICAoV2ViSW5zcGVjdG9y
Q2xpZW50OjpjbG9zZUxvY2FsRnJvbnRlbmQpOiBSZW5hbWVkLgorICAgICAgICAoV2ViSW5zcGVj
dG9yQ2xpZW50OjppbnNwZWN0b3JEZXN0cm95ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5z
cGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViSW5zcGVjdG9yQ2xpZW50OjpjbG9zZUluc3BlY3RvckZyb250ZW5kKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJJbnNwZWN0b3IuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yOjpjcmVhdGVJbnN0YW5jZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3I6OldlYkluc3BlY3Rvcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3I6Omluc3BlY3RlZFdlYlZpZXdDbG9zZWQpOiBSZW5hbWVkLgorICAgICAgICAoV2ViSW5z
cGVjdG9yOjpzaG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvcjo6Y2xvc2UpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yOjppc0phdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvcjo6c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yOjpldmFsdWF0ZUluRnJvbnRlbmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yOjp3
ZWJWaWV3Q2xvc2VkKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3IuaDoKKyAgICAg
ICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OmNsb3NlKToKKwogMjAxNS0wOS0w
OCAgUGVyIEFybmUgVm9sbGFuICA8cGVhdm9Ab3V0bG9vay5jb20+CiAKICAgICAgICAgW1dpbl0g
SW1wbGVtZW50IERPTU5vZGU6OmF0dHJpYnV0ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTQzZDdmMjc5ZmIw
NmQ3YjJhZTAzNjAzZWNhZmJkMGM5NDFkZGM5ZC4uZDhiYWViNDM3NzdmYTM5ZmE5MjlmMzIzMjdk
OWNkODU4MjhmYzdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE1LTA5LTExICBC
cmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGRp
c2FtYmlndWF0ZSBpbnNwZWN0ZWQvZnJvbnRlbmQgY29udHJvbGxlcnMgYW5kIHBhZ2VzIGluIGJh
Y2tlbmQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ5MDcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdGVkUGFnZURlc3Ryb3ll
ZCk6IFJlbmFtZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvckNsaWVudDo6b3Blbkxv
Y2FsRnJvbnRlbmQpOiBSZW5hbWVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGll
bnQ6OmNsb3NlTG9jYWxGcm9udGVuZCk6IFJlbmFtZWQuCisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJveWVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJv
bnRlbmQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogbWFjL1dlYktpdDIub3JkZXI6CisKIDIwMTUt
MDktMTEgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFub3RoZXIg
YnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlciBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXggMTlhMTgwZDU0YjIzMTQwYWI1N2E5MzQw
M2M3ZWFmMWQzYjc0ODNjMy4uMTllM2JkOTM2Yzk4ZWQ5MTU0ZTgzNjBkZDA2MDY5OTNjOTVmYjZi
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0xNzA3OCw3ICsxNzA3OCw3IEBAIF9fWk43V2ViQ29y
ZTdFbGVtZW50MjJzZXRIYXNQZW5kaW5nUmVzb3VyY2VzRXYKIF9fWk5LN1dlYkNvcmUxMlNWR1Jl
c291cmNlczIxcmVtb3ZlQ2xpZW50RnJvbUNhY2hlRVBOU18xMlJlbmRlck9iamVjdEViCiBfX1pO
N1dlYkNvcmUxN0VtcHR5RWRpdG9yQ2xpZW50MTlmcmFtZVdpbGxEZXRhY2hQYWdlRVBOU181RnJh
bWVFCiBfX1pON1dlYkNvcmUxN0VtcHR5RWRpdG9yQ2xpZW50MTNwYWdlRGVzdHJveWVkRXYKLV9f
Wk43V2ViQ29yZTIwRW1wdHlJbnNwZWN0b3JDbGllbnQxOGluc3BlY3RvckRlc3Ryb3llZEV2Citf
X1pON1dlYkNvcmUyMEVtcHR5SW5zcGVjdG9yQ2xpZW50MjJpbnNwZWN0ZWRQYWdlRGVzdHJveWVk
RXYKIF9fWk43V2ViQ29yZTE5QmFja0ZvcndhcmRMaXN0SW1wbDVjbG9zZUV2CiBfX1pON1dlYkNv
cmU5UGFnZUdyb3VwRDFFdgogX19aTjdXZWJDb3JlOVBhZ2VHcm91cEQyRXYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAppbmRleCA2ZDM5YTRjOTJhZGNmNTI4NmYy
NDgxNTJlYzFjNTI2OTNiYWRkZDg4Li4wZWRjZDA4NTQ4OGViZGNhYzE0OGMzNmYyZWY0MzMxZTY0
YWEzMmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oCkBA
IC00NiwxMCArNDYsMTAgQEAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5JbnNwZWN0b3JDbGllbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0
b3JEZXN0cm95ZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGluc3BlY3RlZFBhZ2VEZXN0cm95
ZWQoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBvcGVu
SW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpID0gMDsKKyAgICB2aXJ0dWFsIEluc3BlY3Rv
cjo6RnJvbnRlbmRDaGFubmVsKiBvcGVuTG9jYWxGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVy
KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZUxvY2FsRnJvbnRlbmQoKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZXNpemVNYWluRnJhbWUoRnJhbWUqKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGNmOGNiMDI4YjVlODVhMDVl
MjZhYjQ2ZDVlMTliMGEwNzlmZGYxZTAuLjk5ZmZkOGVjMDNiNWRmNWEyZTNiM2VkNDJkYmUyOGIz
N2M5NzJjZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQoKQogICAgIGRpc2Nvbm5lY3RBbGxGcm9udGVuZHMoKTsK
IAogICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5kaXNjb25uZWN0KCk7Ci0gICAgbV9pbnNw
ZWN0b3JDbGllbnQtPmluc3BlY3RvckRlc3Ryb3llZCgpOworICAgIG1faW5zcGVjdG9yQ2xpZW50
LT5pbnNwZWN0ZWRQYWdlRGVzdHJveWVkKCk7CiAgICAgbV9pbnNwZWN0b3JDbGllbnQgPSBudWxs
cHRyOwogfQogCkBAIC0zMTksMTQgKzMxOSwxNCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OnNob3coKQogCiAgICAgaWYgKG1fZnJvbnRlbmRSb3V0ZXItPmhhc0xvY2FsRnJvbnRlbmQoKSkK
ICAgICAgICAgbV9pbnNwZWN0b3JDbGllbnQtPmJyaW5nRnJvbnRlbmRUb0Zyb250KCk7Ci0gICAg
ZWxzZSBpZiAoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCA9IG1f
aW5zcGVjdG9yQ2xpZW50LT5vcGVuSW5zcGVjdG9yRnJvbnRlbmQodGhpcykpCisgICAgZWxzZSBp
ZiAoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCA9IG1faW5zcGVj
dG9yQ2xpZW50LT5vcGVuTG9jYWxGcm9udGVuZCh0aGlzKSkKICAgICAgICAgY29ubmVjdEZyb250
ZW5kKGZyb250ZW5kQ2hhbm5lbCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2xv
c2UoKQogewogICAgIGlmIChtX2Zyb250ZW5kUm91dGVyLT5oYXNMb2NhbEZyb250ZW5kKCkpCi0g
ICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LT5jbG9zZUluc3BlY3RvckZyb250ZW5kKCk7CisgICAg
ICAgIG1faW5zcGVjdG9yQ2xpZW50LT5jbG9zZUxvY2FsRnJvbnRlbmQoKTsKIAogICAgIEFTU0VS
VCghbV9mcm9udGVuZFJvdXRlci0+aGFzTG9jYWxGcm9udGVuZCgpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LmNwcAppbmRleCBiODI5NzdiOTljOTMwYzQwYzMzODEyNmU1ZjcxNmFiMTU0NjdkZGQxLi40ZjZi
NzdkNzk1OTlkOTA1YjZiYzEyYTVhYTEwYjQ1YzZkNmQ2MjhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3Bw
CkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpT
ZXR0aW5nczo6c2V0UHJvcGVydHkoY29uc3QgU3RyaW5nJiwgY29uc3QgU3QKIH0KIAogSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbChJbnNw
ZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0ZWRQYWdlQ29udHJvbGxlciwgUGFnZSogZnJvbnRlbmRQ
YWdlLCBzdGQ6OnVuaXF1ZV9wdHI8U2V0dGluZ3M+IHNldHRpbmdzKQotICAgIDogbV9pbnNwZWN0
b3JDb250cm9sbGVyKGluc3BlY3RlZFBhZ2VDb250cm9sbGVyKQorICAgIDogbV9pbnNwZWN0ZWRQ
YWdlQ29udHJvbGxlcihpbnNwZWN0ZWRQYWdlQ29udHJvbGxlcikKICAgICAsIG1fZnJvbnRlbmRQ
YWdlKGZyb250ZW5kUGFnZSkKICAgICAsIG1fc2V0dGluZ3MoV1RGOjptb3ZlKHNldHRpbmdzKSkK
ICAgICAsIG1fZG9ja1NpZGUoRG9ja1NpZGU6OlVuZG9ja2VkKQpAQCAtMTQyLDcgKzE0Miw3IEBA
IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6On5JbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsKCkKICAgICBpZiAobV9mcm9udGVuZEhvc3QpCiAgICAgICAgIG1fZnJvbnRlbmRIb3N0LT5k
aXNjb25uZWN0Q2xpZW50KCk7CiAgICAgbV9mcm9udGVuZFBhZ2UgPSBudWxscHRyOwotICAgIG1f
aW5zcGVjdG9yQ29udHJvbGxlciA9IG51bGxwdHI7CisgICAgbV9pbnNwZWN0ZWRQYWdlQ29udHJv
bGxlciA9IG51bGxwdHI7CiAgICAgbV9kaXNwYXRjaFRhc2stPnJlc2V0KCk7CiB9CiAKQEAgLTE4
NCw3ICsxODQsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OnJlcXVlc3RT
ZXREb2NrU2lkZShEb2NrU2lkZSBkb2NrU2lkZSkKIGJvb2wgSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbDo6Y2FuQXR0YWNoV2luZG93KCkKIHsKICAgICAvLyBEb24ndCBhbGxvdyBhdHRhY2hp
bmcgdG8gYW5vdGhlciBpbnNwZWN0b3IgLS0gdHdvIGluc3BlY3RvcnMgaW4gb25lIHdpbmRvdyBp
cyB0b28gbXVjaCEKLSAgICBib29sIGlzSW5zcGVjdG9yUGFnZSA9IG1faW5zcGVjdG9yQ29udHJv
bGxlci0+aGFzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKTsKKyAgICBib29sIGlzSW5zcGVjdG9y
UGFnZSA9IG1faW5zcGVjdGVkUGFnZUNvbnRyb2xsZXItPmhhc0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50KCk7CiAgICAgaWYgKGlzSW5zcGVjdG9yUGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CkBAIC0xOTMsOCArMTkzLDggQEAgYm9vbCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpj
YW5BdHRhY2hXaW5kb3coKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIERvbid0IGFs
bG93IHRoZSBhdHRhY2ggaWYgdGhlIHdpbmRvdyB3b3VsZCBiZSB0b28gc21hbGwgdG8gYWNjb21t
b2RhdGUgdGhlIG1pbmltdW0gaW5zcGVjdG9yIHNpemUuCi0gICAgdW5zaWduZWQgaW5zcGVjdGVk
UGFnZUhlaWdodCA9IG1faW5zcGVjdG9yQ29udHJvbGxlci0+aW5zcGVjdGVkUGFnZSgpLm1haW5G
cmFtZSgpLnZpZXcoKS0+dmlzaWJsZUhlaWdodCgpOwotICAgIHVuc2lnbmVkIGluc3BlY3RlZFBh
Z2VXaWR0aCA9IG1faW5zcGVjdG9yQ29udHJvbGxlci0+aW5zcGVjdGVkUGFnZSgpLm1haW5GcmFt
ZSgpLnZpZXcoKS0+dmlzaWJsZVdpZHRoKCk7CisgICAgdW5zaWduZWQgaW5zcGVjdGVkUGFnZUhl
aWdodCA9IG1faW5zcGVjdGVkUGFnZUNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2UoKS5tYWluRnJh
bWUoKS52aWV3KCktPnZpc2libGVIZWlnaHQoKTsKKyAgICB1bnNpZ25lZCBpbnNwZWN0ZWRQYWdl
V2lkdGggPSBtX2luc3BlY3RlZFBhZ2VDb250cm9sbGVyLT5pbnNwZWN0ZWRQYWdlKCkubWFpbkZy
YW1lKCkudmlldygpLT52aXNpYmxlV2lkdGgoKTsKICAgICB1bnNpZ25lZCBtYXhpbXVtQXR0YWNo
ZWRIZWlnaHQgPSBpbnNwZWN0ZWRQYWdlSGVpZ2h0ICogbWF4aW11bUF0dGFjaGVkSGVpZ2h0UmF0
aW87CiAgICAgcmV0dXJuIG1pbmltdW1BdHRhY2hlZEhlaWdodCA8PSBtYXhpbXVtQXR0YWNoZWRI
ZWlnaHQgJiYgbWluaW11bUF0dGFjaGVkV2lkdGggPD0gaW5zcGVjdGVkUGFnZVdpZHRoOwogfQpA
QCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6c2V0
RG9ja2luZ1VuYXZhaWxhYmxlKGJvb2wgdW5hdmFpbGFibGUpCiAKIHZvaWQgSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbDo6Y2hhbmdlQXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVp
Z2h0KQogewotICAgIHVuc2lnbmVkIHRvdGFsSGVpZ2h0ID0gbV9mcm9udGVuZFBhZ2UtPm1haW5G
cmFtZSgpLnZpZXcoKS0+dmlzaWJsZUhlaWdodCgpICsgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5p
bnNwZWN0ZWRQYWdlKCkubWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlSGVpZ2h0KCk7CisgICAg
dW5zaWduZWQgdG90YWxIZWlnaHQgPSBtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkudmlldygp
LT52aXNpYmxlSGVpZ2h0KCkgKyBtX2luc3BlY3RlZFBhZ2VDb250cm9sbGVyLT5pbnNwZWN0ZWRQ
YWdlKCkubWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlSGVpZ2h0KCk7CiAgICAgdW5zaWduZWQg
YXR0YWNoZWRIZWlnaHQgPSBjb25zdHJhaW5lZEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdodCwg
dG90YWxIZWlnaHQpOwogICAgIG1fc2V0dGluZ3MtPnNldFByb3BlcnR5KGluc3BlY3RvckF0dGFj
aGVkSGVpZ2h0U2V0dGluZywgU3RyaW5nOjpudW1iZXIoYXR0YWNoZWRIZWlnaHQpKTsKICAgICBz
ZXRBdHRhY2hlZFdpbmRvd0hlaWdodChhdHRhY2hlZEhlaWdodCk7CkBAIC0yMTQsNyArMjE0LDcg
QEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpjaGFuZ2VBdHRhY2hlZFdpbmRv
d0hlaWdodCh1bnNpZ25lZCBoZWlnaHQpCiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbDo6Y2hhbmdlQXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCB3aWR0aCkKIHsKLSAgICB1
bnNpZ25lZCB0b3RhbFdpZHRoID0gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKS0+
dmlzaWJsZVdpZHRoKCkgKyBtX2luc3BlY3RvckNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2UoKS5t
YWluRnJhbWUoKS52aWV3KCktPnZpc2libGVXaWR0aCgpOworICAgIHVuc2lnbmVkIHRvdGFsV2lk
dGggPSBtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlV2lkdGgoKSAr
IG1faW5zcGVjdGVkUGFnZUNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2UoKS5tYWluRnJhbWUoKS52
aWV3KCktPnZpc2libGVXaWR0aCgpOwogICAgIHVuc2lnbmVkIGF0dGFjaGVkV2lkdGggPSBjb25z
dHJhaW5lZEF0dGFjaGVkV2luZG93V2lkdGgod2lkdGgsIHRvdGFsV2lkdGgpOwogICAgIHNldEF0
dGFjaGVkV2luZG93V2lkdGgoYXR0YWNoZWRXaWR0aCk7CiB9CkBAIC0yMjIsNyArMjIyLDcgQEAg
dm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpjaGFuZ2VBdHRhY2hlZFdpbmRvd1dp
ZHRoKHVuc2lnbmVkIHdpZHRoKQogdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpv
cGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgVXNlckdlc3R1cmVJbmRpY2F0
b3IgaW5kaWNhdG9yKERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwotICAgIEZyYW1l
JiBtYWluRnJhbWUgPSBtX2luc3BlY3RvckNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2UoKS5tYWlu
RnJhbWUoKTsKKyAgICBGcmFtZSYgbWFpbkZyYW1lID0gbV9pbnNwZWN0ZWRQYWdlQ29udHJvbGxl
ci0+aW5zcGVjdGVkUGFnZSgpLm1haW5GcmFtZSgpOwogICAgIEZyYW1lTG9hZFJlcXVlc3QgcmVx
dWVzdChtYWluRnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgUmVzb3VyY2VSZXF1
ZXN0KCksICJfYmxhbmsiLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5v
LCBNYXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5l
d0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdywgUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJM
LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CiAKICAgICBi
b29sIGNyZWF0ZWQ7CkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsOjpzZXRBdHRhY2hlZFdpbmRvdyhEb2NrU2lkZSBkb2NrU2lkZSkKIAogdm9pZCBJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpyZXN0b3JlQXR0YWNoZWRXaW5kb3dIZWlnaHQo
KQogewotICAgIHVuc2lnbmVkIGluc3BlY3RlZFBhZ2VIZWlnaHQgPSBtX2luc3BlY3RvckNvbnRy
b2xsZXItPmluc3BlY3RlZFBhZ2UoKS5tYWluRnJhbWUoKS52aWV3KCktPnZpc2libGVIZWlnaHQo
KTsKKyAgICB1bnNpZ25lZCBpbnNwZWN0ZWRQYWdlSGVpZ2h0ID0gbV9pbnNwZWN0ZWRQYWdlQ29u
dHJvbGxlci0+aW5zcGVjdGVkUGFnZSgpLm1haW5GcmFtZSgpLnZpZXcoKS0+dmlzaWJsZUhlaWdo
dCgpOwogICAgIFN0cmluZyB2YWx1ZSA9IG1fc2V0dGluZ3MtPmdldFByb3BlcnR5KGluc3BlY3Rv
ckF0dGFjaGVkSGVpZ2h0U2V0dGluZyk7CiAgICAgdW5zaWduZWQgcHJlZmVycmVkSGVpZ2h0ID0g
dmFsdWUuaXNFbXB0eSgpID8gZGVmYXVsdEF0dGFjaGVkSGVpZ2h0IDogdmFsdWUudG9VSW50KCk7
CiAgICAgCkBAIC0zMzIsNyArMzMyLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsOjpzaG93UmVzb3VyY2VzKCkKIAogdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
OjpzaG93TWFpblJlc291cmNlRm9yRnJhbWUoRnJhbWUqIGZyYW1lKQogewotICAgIFN0cmluZyBm
cmFtZUlkID0gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5wYWdlQWdlbnQoKS0+ZnJhbWVJZChmcmFt
ZSk7CisgICAgU3RyaW5nIGZyYW1lSWQgPSBtX2luc3BlY3RlZFBhZ2VDb250cm9sbGVyLT5wYWdl
QWdlbnQoKS0+ZnJhbWVJZChmcmFtZSk7CiAgICAgZXZhbHVhdGVPbkxvYWQoU3RyaW5nOjpmb3Jt
YXQoIltcInNob3dNYWluUmVzb3VyY2VGb3JGcmFtZVwiLCBcIiVzXCJdIiwgZnJhbWVJZC5hc2Np
aSgpLmRhdGEoKSkpOwogfQogCkBAIC0zNTMsNyArMzUzLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsOjpzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCiAKIGJvb2wgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6aXNVbmRlclRlc3QoKQog
ewotICAgIHJldHVybiBtX2luc3BlY3RvckNvbnRyb2xsZXItPmlzVW5kZXJUZXN0KCk7CisgICAg
cmV0dXJuIG1faW5zcGVjdGVkUGFnZUNvbnRyb2xsZXItPmlzVW5kZXJUZXN0KCk7CiB9CiAKIGJv
b2wgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVhdGVBc0Jvb2xlYW4oY29uc3Qg
U3RyaW5nJiBleHByZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKaW5kZXggMTM1MWUwNmVmYmI1M2EyYjc0
NjY2NWI1YjZiMjA3YjM0N2JmMWMwYy4uODhiODNiMzQ3NDQ0NDA0OWFhN2I5MmRmZTU3NTI2MDUz
MGJlZjcwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgdmlydHVhbCB2b2lkIHNldFByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSk7CiAgICAgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIEluc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWwoSW5zcGVjdG9yQ29udHJvbGxlciosIFBhZ2UqLCBzdGQ6OnVuaXF1ZV9w
dHI8U2V0dGluZ3M+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RlZFBhZ2VDb250cm9sbGVyLCBQYWdl
KiBmcm9udGVuZFBhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxTZXR0aW5ncz4pOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgfkluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoKTsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB3aW5kb3dPYmplY3RDbGVhcmVkKCkgb3ZlcnJpZGUg
ZmluYWw7CkBAIC0xMTQsNyArMTE0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGV2YWx1YXRlT25M
b2FkKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbik7CiAKICAgICBmcmllbmQgY2xhc3MgRnJvbnRl
bmRNZW51UHJvdmlkZXI7Ci0gICAgSW5zcGVjdG9yQ29udHJvbGxlciogbV9pbnNwZWN0b3JDb250
cm9sbGVyIHsgbnVsbHB0ciB9OworICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIG1faW5zcGVjdGVk
UGFnZUNvbnRyb2xsZXIgeyBudWxscHRyIH07CiAgICAgUGFnZSogbV9mcm9udGVuZFBhZ2UgeyBu
dWxscHRyIH07CiAgICAgLy8gVE9ETyh5dXJ5cyk6IHRoaXMgcmVmIHNob3VsZG4ndCBiZSBuZWVk
ZWQuCiAgICAgUmVmUHRyPEluc3BlY3RvckZyb250ZW5kSG9zdD4gbV9mcm9udGVuZEhvc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKaW5kZXggZGRi
ODY4ZmZjMDY3YmFmZDQ0NjBmMjVlNWIyNzk0OTk3NDM5ZWM3NC4uYTMxZGE3OTI3NzUzNzYwMTA2
MjZmMDE0ZDJlOTAyMmI5YjAwNzg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JPdmVybGF5LmNwcApAQCAtOTQ3LDcgKzk0Nyw3IEBAIHZvaWQgSW5zcGVjdG9yT3Zl
cmxheTo6ZXZhbHVhdGVJbk92ZXJsYXkoY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZlB0cjxJbnNw
ZWN0b3JWCiAKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZnJlZVBhZ2UoKQogewotICAgIG1fb3Zl
cmxheVBhZ2UucmVzZXQoKTsKKyAgICBtX292ZXJsYXlQYWdlID0gbnVsbHB0cjsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4
IDhjNTdkNmU0ZGFlNmJlNjQwNjE3OWZhZWFmNDI0ZmMxNWRiODQ1ZWQuLjBmMDBkN2I2Y2UxNTcx
MmE0ZGE0YWZkZmM4YzNjNDEzNjI3ZDQ0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmgKQEAgLTU5MywxMCArNTkzLDEwIEBAIHB1YmxpYzoKICAgICBFbXB0eUluc3BlY3RvckNs
aWVudCgpIHsgfQogICAgIHZpcnR1YWwgfkVtcHR5SW5zcGVjdG9yQ2xpZW50KCkgeyB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgb3ZlcnJpZGUgeyB9CisgICAgdmly
dHVhbCB2b2lkIGluc3BlY3RlZFBhZ2VEZXN0cm95ZWQoKSBvdmVycmlkZSB7IH0KICAgICAKLSAg
ICB2aXJ0dWFsIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRl
bmQoSW5zcGVjdG9yQ29udHJvbGxlciopIG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpIG92ZXJyaWRlIHsgfQorICAgIHZpcnR1
YWwgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIG9wZW5Mb2NhbEZyb250ZW5kKEluc3BlY3Rv
ckNvbnRyb2xsZXIqKSBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCB2b2lkIGNs
b3NlTG9jYWxGcm9udGVuZCgpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBicmluZ0Zy
b250ZW5kVG9Gcm9udCgpIG92ZXJyaWRlIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdo
dCgpIG92ZXJyaWRlIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1tIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1tCmluZGV4IDgxYjA2ZWFhZWQ3NDE0MjZl
ZWNhZjdmODc5ZGIzNTU1YTk0MTI2OWMuLjBkNmRjNzE0OWRlOGU0YjI1ZDk0YjUzOWNlZDc0ZTI1
MzAwMDQzNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW0KQEAgLTQyLDE5ICs0MiwxOCBAQAogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotV2ViSW5zcGVjdG9yQ2xpZW50OjpXZWJJbnNwZWN0b3JD
bGllbnQoV2ViVmlldyAqd2ViVmlldykKLSAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQotICAgICwg
bV9oaWdobGlnaHRlcihhZG9wdE5TKFtbV2ViTm9kZUhpZ2hsaWdodGVyIGFsbG9jXSBpbml0V2l0
aEluc3BlY3RlZFdlYlZpZXc6d2ViVmlld10pKQotICAgICwgbV9mcm9udGVuZFBhZ2UoMCkKK1dl
Ykluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcqIGlucGVjdGVkV2Vi
VmlldykKKyAgICA6IG1faW5zcGVjdGVkV2ViVmlldyhpbnBlY3RlZFdlYlZpZXcpCisgICAgLCBt
X2hpZ2hsaWdodGVyKGFkb3B0TlMoW1tXZWJOb2RlSGlnaGxpZ2h0ZXIgYWxsb2NdIGluaXRXaXRo
SW5zcGVjdGVkV2ViVmlldzppbnBlY3RlZFdlYlZpZXddKSkKIHsKIH0KIAotdm9pZCBXZWJJbnNw
ZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCgpCit2b2lkIFdlYkluc3BlY3RvckNsaWVu
dDo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpCiB7CiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLUlu
c3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0
b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikKK0luc3BlY3Rvcjo6RnJvbnRlbmRDaGFu
bmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5Mb2NhbEZyb250ZW5kKEluc3BlY3RvckNvbnRy
b2xsZXIqKQogewogICAgIC8vIGlPUyBkb2VzIG5vdCBoYXZlIGEgbG9jYWwgaW5zcGVjdG9yLCB0
aGlzIHNob3VsZCBub3QgYmUgcmVhY2hlZC4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAg
LTY2LDcgKzY1LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmJyaW5nRnJvbnRlbmRUb0Zy
b250KCkKICAgICAvLyBpT1MgZG9lcyBub3QgaGF2ZSBhIGxvY2FsIGluc3BlY3Rvciwgbm90aGlu
ZyB0byBkbyBoZXJlLgogfQogCi12b2lkIFdlYkluc3BlY3RvckNsaWVudDo6Y2xvc2VJbnNwZWN0
b3JGcm9udGVuZCgpCit2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6Y2xvc2VMb2NhbEZyb250ZW5k
KCkKIHsKICAgICAvLyBpT1MgZG9lcyBub3QgaGF2ZSBhIGxvY2FsIGluc3BlY3Rvciwgbm90aGlu
ZyB0byBkbyBoZXJlLgogfQpAQCAtODgsMTIgKzg3LDEyIEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xp
ZW50OjpoaWRlSGlnaGxpZ2h0KCkKIAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNob3dJbnNw
ZWN0b3JJbmRpY2F0aW9uKCkKIHsKLSAgICBbbV93ZWJWaWV3IHNldFNob3dpbmdJbnNwZWN0b3JJ
bmRpY2F0aW9uOllFU107CisgICAgW21faW5zcGVjdGVkV2ViVmlldyBzZXRTaG93aW5nSW5zcGVj
dG9ySW5kaWNhdGlvbjpZRVNdOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aGlkZUlu
c3BlY3RvckluZGljYXRpb24oKQogewotICAgIFttX3dlYlZpZXcgc2V0U2hvd2luZ0luc3BlY3Rv
ckluZGljYXRpb246Tk9dOworICAgIFttX2luc3BlY3RlZFdlYlZpZXcgc2V0U2hvd2luZ0luc3Bl
Y3RvckluZGljYXRpb246Tk9dOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6c2V0U2hv
d1BhaW50UmVjdHMoYm9vbCkKQEAgLTEwOCw3ICsxMDcsNyBAQCB2b2lkIFdlYkluc3BlY3RvckNs
aWVudDo6c2hvd1BhaW50UmVjdChjb25zdCBGbG9hdFJlY3QmKQogCiB2b2lkIFdlYkluc3BlY3Rv
ckNsaWVudDo6ZGlkU2V0U2VhcmNoaW5nRm9yTm9kZShib29sIGVuYWJsZWQpCiB7Ci0gICAgV2Vi
SW5zcGVjdG9yICppbnNwZWN0b3IgPSBbbV93ZWJWaWV3IGluc3BlY3Rvcl07CisgICAgV2ViSW5z
cGVjdG9yICppbnNwZWN0b3IgPSBbbV9pbnNwZWN0ZWRXZWJWaWV3IGluc3BlY3Rvcl07CiAgICAg
TlNTdHJpbmcgKm5vdGlmaWNhdGlvbk5hbWUgPSBlbmFibGVkID8gV2ViSW5zcGVjdG9yRGlkU3Rh
cnRTZWFyY2hpbmdGb3JOb2RlIDogV2ViSW5zcGVjdG9yRGlkU3RvcFNlYXJjaGluZ0Zvck5vZGU7
CiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKICAgICAg
ICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9u
TmFtZTpub3RpZmljYXRpb25OYW1lIG9iamVjdDppbnNwZWN0b3JdOwpAQCAtMTE4LDggKzExNyw4
IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpkaWRTZXRTZWFyY2hpbmdGb3JOb2RlKGJvb2wg
ZW5hYmxlZCkKICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQgSW1wbGVtZW50YXRpb24KIAotV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6Oldl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcsIFdlYklu
c3BlY3RvcldpbmRvd0NvbnRyb2xsZXIqIHdpbmRvd0NvbnRyb2xsZXIsIEluc3BlY3RvckNvbnRy
b2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIFBhZ2UqIGZyb250ZW5kUGFnZSwgc3RkOjp1bmlx
dWVfcHRyPFNldHRpbmdzPiBzZXR0aW5ncykKLSAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwoaW5zcGVjdG9yQ29udHJvbGxlciwgIGZyb250ZW5kUGFnZSwgV1RGOjptb3ZlKHNldHRp
bmdzKSkKK1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudChXZWJWaWV3KiBpbnNwZWN0ZWRXZWJWaWV3LCBXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9s
bGVyKiBmcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIsIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RlZFBhZ2VDb250cm9sbGVyLCBQYWdlKiBmcm9udGVuZFBhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxT
ZXR0aW5ncz4gc2V0dGluZ3MpCisgICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKGlu
c3BlY3RlZFBhZ2VDb250cm9sbGVyLCBmcm9udGVuZFBhZ2UsIFdURjo6bW92ZShzZXR0aW5ncykp
CiB7CiAgICAgLy8gaU9TIGRvZXMgbm90IGhhdmUgYSBsb2NhbCBpbnNwZWN0b3IsIHRoaXMgc2hv
dWxkIG5vdCBiZSByZWFjaGVkLgogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4
IGQwZDQ0YTZhZDExYTM4YmQ1YTk0ZDI5MGM2MmRlYzdiZGE0ZDgxNzEuLjczMzcwMjQ0OWRiYmFl
ODczMmU4NDY2OWU3YTczNDZjNTJhZWZkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC01MSwxMiArNTEsMTIg
QEAgY2xhc3MgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiAKIGNsYXNzIFdlYkluc3BlY3Rv
ckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQsIHB1YmxpYyBJbnNwZWN0
b3I6OkZyb250ZW5kQ2hhbm5lbCB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgV2ViSW5zcGVjdG9y
Q2xpZW50KFdlYlZpZXcgKik7CisgICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZp
ZXcqIGluc3BlY3RlZFdlYlZpZXcpOwogCi0gICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ry
b3llZCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0ZWRQYWdlRGVzdHJveWVk
KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBv
cGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCkgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogb3BlbkxvY2FsRnJvbnRl
bmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBjbG9zZUxvY2FsRnJvbnRlbmQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgYnJp
bmdGcm9udGVuZFRvRnJvbnQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzaXpl
TWFpbkZyYW1lKFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CiAKQEAgLTkyLDkgKzkyLDkgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0dGluZ3M+IGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKTsK
IAotICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKKyAgICBXZWJWaWV3ICptX2luc3BlY3RlZFdlYlZp
ZXcgeyBudWxscHRyIH07CiAgICAgUmV0YWluUHRyPFdlYk5vZGVIaWdobGlnaHRlcj4gbV9oaWdo
bGlnaHRlcjsKLSAgICBXZWJDb3JlOjpQYWdlKiBtX2Zyb250ZW5kUGFnZTsKKyAgICBXZWJDb3Jl
OjpQYWdlKiBtX2Zyb250ZW5kUGFnZSB7IG51bGxwdHIgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IG1fZnJvbnRlbmRDbGllbnQ7CiB9OwogCkBAIC0x
MzQsNyArMTM0LDcgQEAgcHJpdmF0ZToKIAogI2lmICFQTEFURk9STShJT1MpCiAgICAgV2ViVmll
dyogbV9pbnNwZWN0ZWRXZWJWaWV3OwotICAgIFJldGFpblB0cjxXZWJJbnNwZWN0b3JXaW5kb3dD
b250cm9sbGVyPiBtX3dpbmRvd0NvbnRyb2xsZXI7CisgICAgUmV0YWluUHRyPFdlYkluc3BlY3Rv
cldpbmRvd0NvbnRyb2xsZXI+IG1fZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyOwogICAgIFN0cmlu
ZyBtX2luc3BlY3RlZFVSTDsKICAgICBIYXNoTWFwPFN0cmluZywgUmV0YWluUHRyPE5TVVJMPj4g
bV9zdWdnZXN0ZWRUb0FjdHVhbFVSTE1hcDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4IDRkZThj
NDBlNzQ5NzJiNTY4YzZjZjNlYjgzYzUwYjZmNTU4MDg3YjEuLmM4YzFkOGIwNTkxYTIzYWFjMWVi
NDMyNWE2OWRlNzQ2NDg4YjdhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTY4LDI0ICs2OCwyNCBAQCBz
dGF0aWMgY29uc3QgQ0dGbG9hdCBpbml0aWFsV2luZG93SGVpZ2h0ID0gNjUwOwogQGludGVyZmFj
ZSBXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyIDogTlNXaW5kb3dDb250cm9sbGVyIDxOU1dp
bmRvd0RlbGVnYXRlLCBXZWJQb2xpY3lEZWxlZ2F0ZSwgV2ViVUlEZWxlZ2F0ZT4gewogQHByaXZh
dGUKICAgICBSZXRhaW5QdHI8V2ViVmlldz4gX2luc3BlY3RlZFdlYlZpZXc7Ci0gICAgV2ViVmll
dyAqX3dlYlZpZXc7Ci0gICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIF9mcm9udGVuZENs
aWVudDsKLSAgICBXZWJJbnNwZWN0b3JDbGllbnQqIF9pbnNwZWN0b3JDbGllbnQ7CisgICAgV2Vi
VmlldyAqX2Zyb250ZW5kV2ViVmlldzsKKyAgICBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCAq
X2Zyb250ZW5kQ2xpZW50OworICAgIFdlYkluc3BlY3RvckNsaWVudCAqX2luc3BlY3RvckNsaWVu
dDsKICAgICBCT09MIF9hdHRhY2hlZFRvSW5zcGVjdGVkV2ViVmlldzsKICAgICBCT09MIF9zaG91
bGRBdHRhY2g7CiAgICAgQk9PTCBfdmlzaWJsZTsKICAgICBCT09MIF9kZXN0cm95aW5nSW5zcGVj
dG9yVmlldzsKIH0KLS0gKGlkKWluaXRXaXRoSW5zcGVjdGVkV2ViVmlldzooV2ViVmlldyAqKXdl
YlZpZXcgaXNVbmRlclRlc3Q6KEJPT0wpaXNVbmRlclRlc3Q7CistIChpZClpbml0V2l0aEluc3Bl
Y3RlZFdlYlZpZXc6KFdlYlZpZXcgKilpbnNwZWN0ZWRXZWJWaWV3IGlzVW5kZXJUZXN0OihCT09M
KWlzVW5kZXJUZXN0OwogLSAoTlNTdHJpbmcgKilpbnNwZWN0b3JQYWdlUGF0aDsKIC0gKE5TU3Ry
aW5nICopaW5zcGVjdG9yVGVzdFBhZ2VQYXRoOwotLSAoV2ViVmlldyAqKXdlYlZpZXc7CistIChX
ZWJWaWV3ICopZnJvbnRlbmRXZWJWaWV3OwogLSAodm9pZClhdHRhY2g7CiAtICh2b2lkKWRldGFj
aDsKIC0gKEJPT0wpYXR0YWNoZWQ7Ci0tICh2b2lkKXNldEZyb250ZW5kQ2xpZW50OihXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudCopZnJvbnRlbmRDbGllbnQ7Ci0tICh2b2lkKXNldEluc3BlY3Rv
ckNsaWVudDooV2ViSW5zcGVjdG9yQ2xpZW50KilpbnNwZWN0b3JDbGllbnQ7Ci0tIChXZWJJbnNw
ZWN0b3JDbGllbnQqKWluc3BlY3RvckNsaWVudDsKKy0gKHZvaWQpc2V0RnJvbnRlbmRDbGllbnQ6
KFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50ICopZnJvbnRlbmRDbGllbnQ7CistICh2b2lkKXNl
dEluc3BlY3RvckNsaWVudDooV2ViSW5zcGVjdG9yQ2xpZW50ICopaW5zcGVjdG9yQ2xpZW50Owor
LSAoV2ViSW5zcGVjdG9yQ2xpZW50ICopaW5zcGVjdG9yQ2xpZW50OwogLSAodm9pZClzZXRBdHRh
Y2hlZFdpbmRvd0hlaWdodDoodW5zaWduZWQpaGVpZ2h0OwogLSAodm9pZClzZXREb2NraW5nVW5h
dmFpbGFibGU6KEJPT0wpdW5hdmFpbGFibGU7CiAtICh2b2lkKWRlc3Ryb3lJbnNwZWN0b3JWaWV3
OwpAQCAtOTQsMzYgKzk0LDM1IEBAIEBlbmQKIAogLy8gTUFSSzogLQogCi1XZWJJbnNwZWN0b3JD
bGllbnQ6OldlYkluc3BlY3RvckNsaWVudChXZWJWaWV3ICp3ZWJWaWV3KQotICAgIDogbV93ZWJW
aWV3KHdlYlZpZXcpCi0gICAgLCBtX2hpZ2hsaWdodGVyKGFkb3B0TlMoW1tXZWJOb2RlSGlnaGxp
Z2h0ZXIgYWxsb2NdIGluaXRXaXRoSW5zcGVjdGVkV2ViVmlldzp3ZWJWaWV3XSkpCi0gICAgLCBt
X2Zyb250ZW5kUGFnZShudWxscHRyKQorV2ViSW5zcGVjdG9yQ2xpZW50OjpXZWJJbnNwZWN0b3JD
bGllbnQoV2ViVmlldyogaW5zcGVjdGVkV2ViVmlldykKKyAgICA6IG1faW5zcGVjdGVkV2ViVmll
dyhpbnNwZWN0ZWRXZWJWaWV3KQorICAgICwgbV9oaWdobGlnaHRlcihhZG9wdE5TKFtbV2ViTm9k
ZUhpZ2hsaWdodGVyIGFsbG9jXSBpbml0V2l0aEluc3BlY3RlZFdlYlZpZXc6aW5zcGVjdGVkV2Vi
Vmlld10pKQogewogfQogCi12b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJv
eWVkKCkKK3ZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0ZWRQYWdlRGVzdHJveWVkKCkK
IHsKLSAgICBjbG9zZUluc3BlY3RvckZyb250ZW5kKCk7CisgICAgY2xvc2VMb2NhbEZyb250ZW5k
KCk7CiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLUZyb250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9y
Q2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVj
dG9yQ29udHJvbGxlcikKK0Zyb250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVu
TG9jYWxGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0ZWRQYWdlQ29udHJvbGxl
cikKIHsKLSAgICBSZXRhaW5QdHI8V2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlcj4gd2luZG93
Q29udHJvbGxlciA9IGFkb3B0TlMoW1tXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyIGFsbG9j
XSBpbml0V2l0aEluc3BlY3RlZFdlYlZpZXc6bV93ZWJWaWV3IGlzVW5kZXJUZXN0Omluc3BlY3Rv
ckNvbnRyb2xsZXItPmlzVW5kZXJUZXN0KCldKTsKKyAgICBSZXRhaW5QdHI8V2ViSW5zcGVjdG9y
V2luZG93Q29udHJvbGxlcj4gd2luZG93Q29udHJvbGxlciA9IGFkb3B0TlMoW1tXZWJJbnNwZWN0
b3JXaW5kb3dDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aEluc3BlY3RlZFdlYlZpZXc6bV9pbnNw
ZWN0ZWRXZWJWaWV3IGlzVW5kZXJUZXN0Omluc3BlY3RlZFBhZ2VDb250cm9sbGVyLT5pc1VuZGVy
VGVzdCgpXSk7CiAgICAgW3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgc2V0SW5zcGVjdG9yQ2xpZW50
OnRoaXNdOwogCi0gICAgbV9mcm9udGVuZFBhZ2UgPSBjb3JlKFt3aW5kb3dDb250cm9sbGVyLmdl
dCgpIHdlYlZpZXddKTsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV93ZWJWaWV3LCB3aW5kb3dDb250cm9sbGVyLmdl
dCgpLCBpbnNwZWN0b3JDb250cm9sbGVyLCBtX2Zyb250ZW5kUGFnZSwgY3JlYXRlRnJvbnRlbmRT
ZXR0aW5ncygpKTsKKyAgICBtX2Zyb250ZW5kUGFnZSA9IGNvcmUoW3dpbmRvd0NvbnRyb2xsZXIu
Z2V0KCkgZnJvbnRlbmRXZWJWaWV3XSk7CisgICAgbV9mcm9udGVuZENsaWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1faW5zcGVjdGVkV2ViVmlldywg
d2luZG93Q29udHJvbGxlci5nZXQoKSwgaW5zcGVjdGVkUGFnZUNvbnRyb2xsZXIsIG1fZnJvbnRl
bmRQYWdlLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOwogCiAgICAgUmV0YWluUHRyPFdlYklu
c3BlY3RvckZyb250ZW5kPiB3ZWJJbnNwZWN0b3JGcm9udGVuZCA9IGFkb3B0TlMoW1tXZWJJbnNw
ZWN0b3JGcm9udGVuZCBhbGxvY10gaW5pdFdpdGhGcm9udGVuZENsaWVudDptX2Zyb250ZW5kQ2xp
ZW50LmdldCgpXSk7Ci0gICAgW1ttX3dlYlZpZXcgaW5zcGVjdG9yXSBzZXRGcm9udGVuZDp3ZWJJ
bnNwZWN0b3JGcm9udGVuZC5nZXQoKV07CisgICAgW1ttX2luc3BlY3RlZFdlYlZpZXcgaW5zcGVj
dG9yXSBzZXRGcm9udGVuZDp3ZWJJbnNwZWN0b3JGcm9udGVuZC5nZXQoKV07CiAKICAgICBtX2Zy
b250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50KG1fZnJvbnRlbmRDbGllbnQuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKLXZv
aWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpjbG9zZUluc3BlY3RvckZyb250ZW5kKCkKK3ZvaWQgV2Vi
SW5zcGVjdG9yQ2xpZW50OjpjbG9zZUxvY2FsRnJvbnRlbmQoKQogewogICAgIGlmIChtX2Zyb250
ZW5kQ2xpZW50KQogICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5kaXNjb25uZWN0RnJvbUJhY2tl
bmQoKTsKQEAgLTE2NCw3ICsxNjMsNyBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aGlkZUhp
Z2hsaWdodCgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpkaWRTZXRTZWFyY2hpbmdGb3JO
b2RlKGJvb2wgZW5hYmxlZCkKIHsKLSAgICBXZWJJbnNwZWN0b3IgKmluc3BlY3RvciA9IFttX3dl
YlZpZXcgaW5zcGVjdG9yXTsKKyAgICBXZWJJbnNwZWN0b3IgKmluc3BlY3RvciA9IFttX2luc3Bl
Y3RlZFdlYlZpZXcgaW5zcGVjdG9yXTsKIAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAK
QEAgLTE4MSwyMyArMTgwLDIzIEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpyZWxlYXNlRnJv
bnRlbmQoKQogfQogCiAKLVdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudChXZWJWaWV3KiBpbnNwZWN0ZWRXZWJWaWV3LCBXZWJJbnNwZWN0b3JXaW5k
b3dDb250cm9sbGVyKiB3aW5kb3dDb250cm9sbGVyLCBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNw
ZWN0b3JDb250cm9sbGVyLCBQYWdlKiBmcm9udGVuZFBhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxTZXR0
aW5ncz4gc2V0dGluZ3MpCi0gICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKGluc3Bl
Y3RvckNvbnRyb2xsZXIsICBmcm9udGVuZFBhZ2UsIFdURjo6bW92ZShzZXR0aW5ncykpCitXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV2ViVmll
dyogaW5zcGVjdGVkV2ViVmlldywgV2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlciogZnJvbnRl
bmRXaW5kb3dDb250cm9sbGVyLCBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0ZWRQYWdlQ29u
dHJvbGxlciwgUGFnZSogZnJvbnRlbmRQYWdlLCBzdGQ6OnVuaXF1ZV9wdHI8U2V0dGluZ3M+IHNl
dHRpbmdzKQorICAgIDogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbChpbnNwZWN0ZWRQYWdl
Q29udHJvbGxlciwgZnJvbnRlbmRQYWdlLCBXVEY6Om1vdmUoc2V0dGluZ3MpKQogICAgICwgbV9p
bnNwZWN0ZWRXZWJWaWV3KGluc3BlY3RlZFdlYlZpZXcpCi0gICAgLCBtX3dpbmRvd0NvbnRyb2xs
ZXIod2luZG93Q29udHJvbGxlcikKKyAgICAsIG1fZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyKGZy
b250ZW5kV2luZG93Q29udHJvbGxlcikKIHsKLSAgICBbd2luZG93Q29udHJvbGxlciBzZXRGcm9u
dGVuZENsaWVudDp0aGlzXTsKKyAgICBbZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyIHNldEZyb250
ZW5kQ2xpZW50OnRoaXNdOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojph
dHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGJvb2wgYXZhaWxhYmxlKQogewogICAgIHNldERvY2tp
bmdVbmF2YWlsYWJsZSghYXZhaWxhYmxlKTsKLSAgICBbbV93aW5kb3dDb250cm9sbGVyLmdldCgp
IHNldERvY2tpbmdVbmF2YWlsYWJsZTohYXZhaWxhYmxlXTsKKyAgICBbbV9mcm9udGVuZFdpbmRv
d0NvbnRyb2xsZXIuZ2V0KCkgc2V0RG9ja2luZ1VuYXZhaWxhYmxlOiFhdmFpbGFibGVdOwogfQog
CiBib29sIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpjYW5BdHRhY2goKQogewotICAgIGlm
IChbW21fd2luZG93Q29udHJvbGxlciB3aW5kb3ddIHN0eWxlTWFza10gJiBOU0Z1bGxTY3JlZW5X
aW5kb3dNYXNrKQorICAgIGlmIChbW21fZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyIHdpbmRvd10g
c3R5bGVNYXNrXSAmIE5TRnVsbFNjcmVlbldpbmRvd01hc2spCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIHJldHVybiBjYW5BdHRhY2hXaW5kb3coKTsKQEAgLTIwNSw4ICsyMDQsOCBAQCBi
b29sIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpjYW5BdHRhY2goKQogCiB2b2lkIFdlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50Ojpmcm9udGVuZExvYWRlZCgpCiB7Ci0gICAgW21fd2luZG93
Q29udHJvbGxlci5nZXQoKSBzaG93V2luZG93Om5pbF07Ci0gICAgaWYgKFttX3dpbmRvd0NvbnRy
b2xsZXIuZ2V0KCkgYXR0YWNoZWRdKQorICAgIFttX2Zyb250ZW5kV2luZG93Q29udHJvbGxlci5n
ZXQoKSBzaG93V2luZG93Om5pbF07CisgICAgaWYgKFttX2Zyb250ZW5kV2luZG93Q29udHJvbGxl
ci5nZXQoKSBhdHRhY2hlZF0pCiAgICAgICAgIHJlc3RvcmVBdHRhY2hlZFdpbmRvd0hlaWdodCgp
OwogCiAgICAgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZnJvbnRlbmRMb2FkZWQoKTsK
QEAgLTIxOCwxNCArMjE3LDE0IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmZy
b250ZW5kTG9hZGVkKCkKICAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0
aW9ucy0+ZGlkQ2xlYXJJbnNwZWN0b3JXaW5kb3dPYmplY3RGb3JGcmFtZUZ1bmMsIG1faW5zcGVj
dGVkV2ViVmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBzZWxlY3Rvcih3ZWJW
aWV3OmRpZENsZWFySW5zcGVjdG9yV2luZG93T2JqZWN0OmZvckZyYW1lOiksIFtmcmFtZSB3aW5k
b3dPYmplY3RdLCBmcmFtZSk7CiAKLSAgICBib29sIGF0dGFjaGVkID0gW21fd2luZG93Q29udHJv
bGxlci5nZXQoKSBhdHRhY2hlZF07CisgICAgYm9vbCBhdHRhY2hlZCA9IFttX2Zyb250ZW5kV2lu
ZG93Q29udHJvbGxlci5nZXQoKSBhdHRhY2hlZF07CiAgICAgc2V0QXR0YWNoZWRXaW5kb3coYXR0
YWNoZWQgPyBEb2NrU2lkZTo6Qm90dG9tIDogRG9ja1NpZGU6OlVuZG9ja2VkKTsKIH0KIAogdm9p
ZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c3RhcnRXaW5kb3dEcmFnKCkKIHsKICNpZiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMAotICAgIFtbbV93aW5kb3dD
b250cm9sbGVyIHdpbmRvd10gcGVyZm9ybVdpbmRvd0RyYWdXaXRoRXZlbnQ6W05TQXBwIGN1cnJl
bnRFdmVudF1dOworICAgIFtbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgd2luZG93XSBwZXJm
b3JtV2luZG93RHJhZ1dpdGhFdmVudDpbTlNBcHAgY3VycmVudEV2ZW50XV07CiAjZW5kaWYKIH0K
IApAQCAtMjQ0LDQwICsyNDMsNDAgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
YnJpbmdUb0Zyb250KCkKIHsKICAgICB1cGRhdGVXaW5kb3dUaXRsZSgpOwogCi0gICAgW21fd2lu
ZG93Q29udHJvbGxlci5nZXQoKSBzaG93V2luZG93Om5pbF07CisgICAgW21fZnJvbnRlbmRXaW5k
b3dDb250cm9sbGVyLmdldCgpIHNob3dXaW5kb3c6bmlsXTsKIAotICAgIC8vIFVzZSB0aGUgd2lu
ZG93IGZyb20gdGhlIFdlYlZpZXcgc2luY2UgbV93aW5kb3dDb250cm9sbGVyJ3Mgd2luZG93Cisg
ICAgLy8gVXNlIHRoZSB3aW5kb3cgZnJvbSB0aGUgV2ViVmlldyBzaW5jZSBtX2Zyb250ZW5kV2lu
ZG93Q29udHJvbGxlcidzIHdpbmRvdwogICAgIC8vIGlzIG5vdCB0aGUgc2FtZSB3aGVuIHRoZSBJ
bnNwZWN0b3IgaXMgZG9ja2VkLgotICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbbV93aW5kb3dDb250
cm9sbGVyLmdldCgpIHdlYlZpZXddOwotICAgIFtbd2ViVmlldyB3aW5kb3ddIG1ha2VGaXJzdFJl
c3BvbmRlcjp3ZWJWaWV3XTsKKyAgICBXZWJWaWV3ICpmcm9udGVuZFdlYlZpZXcgPSBbbV9mcm9u
dGVuZFdpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgZnJvbnRlbmRXZWJWaWV3XTsKKyAgICBbW2Zyb250
ZW5kV2ViVmlldyB3aW5kb3ddIG1ha2VGaXJzdFJlc3BvbmRlcjpmcm9udGVuZFdlYlZpZXddOwog
fQogCiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpjbG9zZVdpbmRvdygpCiB7Ci0g
ICAgW21fd2luZG93Q29udHJvbGxlci5nZXQoKSBkZXN0cm95SW5zcGVjdG9yVmlld107CisgICAg
W21fZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyLmdldCgpIGRlc3Ryb3lJbnNwZWN0b3JWaWV3XTsK
IH0KIAogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZGlzY29ubmVjdEZyb21CYWNr
ZW5kKCkKIHsKLSAgICBbbV93aW5kb3dDb250cm9sbGVyLmdldCgpIGRlc3Ryb3lJbnNwZWN0b3JW
aWV3XTsKKyAgICBbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgZGVzdHJveUluc3Bl
Y3RvclZpZXddOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphdHRhY2hX
aW5kb3coRG9ja1NpZGUpCiB7Ci0gICAgaWYgKFttX3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgYXR0
YWNoZWRdKQorICAgIGlmIChbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgYXR0YWNo
ZWRdKQogICAgICAgICByZXR1cm47Ci0gICAgW21fd2luZG93Q29udHJvbGxlci5nZXQoKSBhdHRh
Y2hdOworICAgIFttX2Zyb250ZW5kV2luZG93Q29udHJvbGxlci5nZXQoKSBhdHRhY2hdOwogICAg
IHJlc3RvcmVBdHRhY2hlZFdpbmRvd0hlaWdodCgpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50OjpkZXRhY2hXaW5kb3coKQogewotICAgIFttX3dpbmRvd0NvbnRyb2xsZXIu
Z2V0KCkgZGV0YWNoXTsKKyAgICBbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgZGV0
YWNoXTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2V0QXR0YWNoZWRX
aW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQogewotICAgIFttX3dpbmRvd0NvbnRyb2xsZXIu
Z2V0KCkgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQ6aGVpZ2h0XTsKKyAgICBbbV9mcm9udGVuZFdp
bmRvd0NvbnRyb2xsZXIuZ2V0KCkgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQ6aGVpZ2h0XTsKIH0K
IAogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2V0QXR0YWNoZWRXaW5kb3dXaWR0
aCh1bnNpZ25lZCkKQEAgLTI4OCw3ICsyODcsNyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50OjpzZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKQogdm9pZCBXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudDo6c2V0VG9vbGJhckhlaWdodCh1bnNpZ25lZCBoZWlnaHQpCiB7CiAj
aWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8PSAxMDkwCi0gICAgW1ttX3dpbmRv
d0NvbnRyb2xsZXIgd2luZG93XSBzZXRDb250ZW50Qm9yZGVyVGhpY2tuZXNzOmhlaWdodCBmb3JF
ZGdlOk5TTWF4WUVkZ2VdOworICAgIFtbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgd2luZG93
XSBzZXRDb250ZW50Qm9yZGVyVGhpY2tuZXNzOmhlaWdodCBmb3JFZGdlOk5TTWF4WUVkZ2VdOwog
I2VuZGlmCiB9CiAKQEAgLTMwMSw3ICszMDAsNyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50OjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgbmV3VVJMKQogdm9pZCBX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6dXBkYXRlV2luZG93VGl0bGUoKSBjb25zdAogewog
ICAgIE5TU3RyaW5nICp0aXRsZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OlVJX1NUUklO
R19JTlRFUk5BTCgiV2ViIEluc3BlY3RvciDigJQgJUAiLCAiV2ViIEluc3BlY3RvciB3aW5kb3cg
dGl0bGUiKSwgKE5TU3RyaW5nICopbV9pbnNwZWN0ZWRVUkxdOwotICAgIFtbbV93aW5kb3dDb250
cm9sbGVyLmdldCgpIHdpbmRvd10gc2V0VGl0bGU6dGl0bGVdOworICAgIFtbbV9mcm9udGVuZFdp
bmRvd0NvbnRyb2xsZXIuZ2V0KCkgd2luZG93XSBzZXRUaXRsZTp0aXRsZV07CiB9CiAKIHZvaWQg
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRV
UkwsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNl
U2F2ZURpYWxvZykKQEAgLTMzNyw3ICszMzYsNyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50OjpzYXZlKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcmCiAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgW2NvbnRlbnRDb3B5IHdyaXRlVG9VUkw6YWN0dWFs
VVJMIGF0b21pY2FsbHk6WUVTIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOk5V
TExdOwogCi0gICAgICAgIGNvcmUoW21fd2luZG93Q29udHJvbGxlciB3ZWJWaWV3XSktPm1haW5G
cmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCJJbnNwZWN0b3JGcm9udGVuZEFQSS5zYXZlZFVSTChcIiVAXCIpIiwgYWN0dWFsVVJMLmFic29s
dXRlU3RyaW5nXSk7CisgICAgICAgIGNvcmUoW21fZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyIGZy
b250ZW5kV2ViVmlld10pLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2F2ZWRVUkwoXCIl
QFwiKSIsIGFjdHVhbFVSTC5hYnNvbHV0ZVN0cmluZ10pOwogICAgIH07CiAKICAgICBpZiAoIWZv
cmNlU2F2ZURpYWxvZykgewpAQCAtMzU2LDkgKzM1NSw5IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ6OnNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmlu
ZyYKICAgICAgICAgc2F2ZVRvVVJMKHBhbmVsLlVSTCk7CiAgICAgfTsKIAotICAgIE5TV2luZG93
ICp3aW5kb3cgPSBbW21fd2luZG93Q29udHJvbGxlciB3ZWJWaWV3XSB3aW5kb3ddOwotICAgIGlm
ICh3aW5kb3cpCi0gICAgICAgIFtwYW5lbCBiZWdpblNoZWV0TW9kYWxGb3JXaW5kb3c6d2luZG93
IGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKKyAgICBOU1dpbmRvdyAqZnJv
bnRlbmRXaW5kb3cgPSBbW21fZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyIGZyb250ZW5kV2ViVmll
d10gd2luZG93XTsKKyAgICBpZiAoZnJvbnRlbmRXaW5kb3cpCisgICAgICAgIFtwYW5lbCBiZWdp
blNoZWV0TW9kYWxGb3JXaW5kb3c6ZnJvbnRlbmRXaW5kb3cgY29tcGxldGlvbkhhbmRsZXI6Y29t
cGxldGlvbkhhbmRsZXJdOwogICAgIGVsc2UKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW3Bh
bmVsIHJ1bk1vZGFsXSk7CiB9CkBAIC0zNzcsNyArMzc2LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudDo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBT
dHJpbmcKICAgICBbaGFuZGxlIHdyaXRlRGF0YTpbY29udGVudCBkYXRhVXNpbmdFbmNvZGluZzpO
U1VURjhTdHJpbmdFbmNvZGluZ11dOwogICAgIFtoYW5kbGUgY2xvc2VGaWxlXTsKIAotICAgIGNv
cmUoW21fd2luZG93Q29udHJvbGxlciB3ZWJWaWV3XSktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4
ZWN1dGVTY3JpcHQoW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJbnNwZWN0b3JGcm9udGVu
ZEFQSS5hcHBlbmRlZFRvVVJMKFwiJUBcIikiLCBbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXV0p
OworICAgIGNvcmUoW21fZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyIGZyb250ZW5kV2ViVmlld10p
LT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuYXBwZW5kZWRUb1VSTChcIiVAXCIpIiwgW2Fj
dHVhbFVSTCBhYnNvbHV0ZVN0cmluZ11dKTsKIH0KIAogLy8gTUFSSzogLQpAQCAtNDA1LDE0ICs0
MDQsMTQgQEAgLSAoaWQpaW5pdAogICAgIFtwcmVmZXJlbmNlcyBzZXRUYWJzVG9MaW5rczpOT107
CiAgICAgW3ByZWZlcmVuY2VzIHNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZDpOT107CiAKLSAgICBf
d2ViVmlldyA9IFtbV2ViVmlldyBhbGxvY10gaW5pdF07Ci0gICAgW193ZWJWaWV3IHNldFByZWZl
cmVuY2VzOnByZWZlcmVuY2VzXTsKLSAgICBbX3dlYlZpZXcgc2V0UHJvaGliaXRzTWFpbkZyYW1l
U2Nyb2xsaW5nOllFU107Ci0gICAgW193ZWJWaWV3IHNldFVJRGVsZWdhdGU6c2VsZl07Ci0gICAg
W193ZWJWaWV3IHNldFBvbGljeURlbGVnYXRlOnNlbGZdOworICAgIF9mcm9udGVuZFdlYlZpZXcg
PSBbW1dlYlZpZXcgYWxsb2NdIGluaXRdOworICAgIFtfZnJvbnRlbmRXZWJWaWV3IHNldFByZWZl
cmVuY2VzOnByZWZlcmVuY2VzXTsKKyAgICBbX2Zyb250ZW5kV2ViVmlldyBzZXRQcm9oaWJpdHNN
YWluRnJhbWVTY3JvbGxpbmc6WUVTXTsKKyAgICBbX2Zyb250ZW5kV2ViVmlldyBzZXRVSURlbGVn
YXRlOnNlbGZdOworICAgIFtfZnJvbnRlbmRXZWJWaWV3IHNldFBvbGljeURlbGVnYXRlOnNlbGZd
OwogCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8PSAxMDkwCi0gICAgW193
ZWJWaWV3IHNldERyYXdzQmFja2dyb3VuZDpOT107CisgICAgW19mcm9udGVuZFdlYlZpZXcgc2V0
RHJhd3NCYWNrZ3JvdW5kOk5PXTsKICNlbmRpZgogCiAgICAgW3ByZWZlcmVuY2VzIHJlbGVhc2Vd
OwpAQCAtNDMwLDcgKzQyOSw3IEBAIC0gKGlkKWluaXRXaXRoSW5zcGVjdGVkV2ViVmlldzooV2Vi
VmlldyAqKXdlYlZpZXcgaXNVbmRlclRlc3Q6KEJPT0wpaXNVbmRlclRlc3QKIAogICAgIE5TU3Ry
aW5nICpwYWdlUGF0aCA9IGlzVW5kZXJUZXN0ID8gW3NlbGYgaW5zcGVjdG9yVGVzdFBhZ2VQYXRo
XSA6IFtzZWxmIGluc3BlY3RvclBhZ2VQYXRoXTsKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3Qg
PSBbW05TVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0
aDogcGFnZVBhdGhdXTsKLSAgICBbW193ZWJWaWV3IG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6cmVx
dWVzdF07CisgICAgW1tfZnJvbnRlbmRXZWJWaWV3IG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6cmVx
dWVzdF07CiAgICAgW3JlcXVlc3QgcmVsZWFzZV07CiAKICAgICByZXR1cm4gc2VsZjsKQEAgLTQz
OCw3ICs0MzcsNyBAQCAtIChpZClpbml0V2l0aEluc3BlY3RlZFdlYlZpZXc6KFdlYlZpZXcgKil3
ZWJWaWV3IGlzVW5kZXJUZXN0OihCT09MKWlzVW5kZXJUZXN0CiAKIC0gKHZvaWQpZGVhbGxvYwog
ewotICAgIFtfd2ViVmlldyByZWxlYXNlXTsKKyAgICBbX2Zyb250ZW5kV2ViVmlldyByZWxlYXNl
XTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKQEAgLTQ3MCw5ICs0NjksOSBAQCAtIChOU1N0
cmluZyAqKWluc3BlY3RvclRlc3RQYWdlUGF0aAogCiAvLyBNQVJLOiAtCiAKLS0gKFdlYlZpZXcg
Kil3ZWJWaWV3CistIChXZWJWaWV3ICopZnJvbnRlbmRXZWJWaWV3CiB7Ci0gICAgcmV0dXJuIF93
ZWJWaWV3OworICAgIHJldHVybiBfZnJvbnRlbmRXZWJWaWV3OwogfQogCiAtIChOU1dpbmRvdyAq
KXdpbmRvdwpAQCAtNTUwLDcgKzU0OSw3IEBAIC0gKHZvaWQpY2xvc2UKICAgICAgICAgaWYgKFtf
aW5zcGVjdGVkV2ViVmlldy5nZXQoKSBfaXNDbG9zZWRdKQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIFtfd2ViVmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKKyAgICAgICAgW19mcm9u
dGVuZFdlYlZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107CiAKICAgICAgICAgV2ViRnJhbWVWaWV3
ICpmcmFtZVZpZXcgPSBbW19pbnNwZWN0ZWRXZWJWaWV3LmdldCgpIG1haW5GcmFtZV0gZnJhbWVW
aWV3XTsKICAgICAgICAgTlNSZWN0IGZyYW1lVmlld1JlY3QgPSBbZnJhbWVWaWV3IGZyYW1lXTsK
QEAgLTU4OCwxMSArNTg3LDExIEBAIC0gKElCQWN0aW9uKXNob3dXaW5kb3c6KGlkKXNlbmRlcgog
ICAgIGlmIChfc2hvdWxkQXR0YWNoKSB7CiAgICAgICAgIFdlYkZyYW1lVmlldyAqZnJhbWVWaWV3
ID0gW1tfaW5zcGVjdGVkV2ViVmlldy5nZXQoKSBtYWluRnJhbWVdIGZyYW1lVmlld107CiAKLSAg
ICAgICAgW193ZWJWaWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOwotICAgICAgICBbX2luc3BlY3Rl
ZFdlYlZpZXcuZ2V0KCkgYWRkU3Vidmlldzpfd2ViVmlldyBwb3NpdGlvbmVkOk5TV2luZG93QmVs
b3cgcmVsYXRpdmVUbzooTlNWaWV3ICopZnJhbWVWaWV3XTsKLSAgICAgICAgW1tfaW5zcGVjdGVk
V2ViVmlldy5nZXQoKSB3aW5kb3ddIG1ha2VGaXJzdFJlc3BvbmRlcjpfd2ViVmlld107CisgICAg
ICAgIFtfZnJvbnRlbmRXZWJWaWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOworICAgICAgICBbX2lu
c3BlY3RlZFdlYlZpZXcuZ2V0KCkgYWRkU3VidmlldzpfZnJvbnRlbmRXZWJWaWV3IHBvc2l0aW9u
ZWQ6TlNXaW5kb3dCZWxvdyByZWxhdGl2ZVRvOihOU1ZpZXcgKilmcmFtZVZpZXddOworICAgICAg
ICBbW19pbnNwZWN0ZWRXZWJWaWV3LmdldCgpIHdpbmRvd10gbWFrZUZpcnN0UmVzcG9uZGVyOl9m
cm9udGVuZFdlYlZpZXddOwogCi0gICAgICAgIFtfd2ViVmlldyBzZXRBdXRvcmVzaXppbmdNYXNr
OihOU1ZpZXdXaWR0aFNpemFibGUgfCBOU1ZpZXdIZWlnaHRTaXphYmxlIHwgTlNWaWV3TWF4WU1h
cmdpbildOworICAgICAgICBbX2Zyb250ZW5kV2ViVmlldyBzZXRBdXRvcmVzaXppbmdNYXNrOihO
U1ZpZXdXaWR0aFNpemFibGUgfCBOU1ZpZXdIZWlnaHRTaXphYmxlIHwgTlNWaWV3TWF4WU1hcmdp
bildOwogICAgICAgICBbZnJhbWVWaWV3IHNldEF1dG9yZXNpemluZ01hc2s6KE5TVmlld1dpZHRo
U2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGUgfCBOU1ZpZXdNaW5ZTWFyZ2luKV07CiAKICAg
ICAgICAgX2F0dGFjaGVkVG9JbnNwZWN0ZWRXZWJWaWV3ID0gWUVTOwpAQCAtNjAwLDEwICs1OTks
MTAgQEAgLSAoSUJBY3Rpb24pc2hvd1dpbmRvdzooaWQpc2VuZGVyCiAgICAgICAgIF9hdHRhY2hl
ZFRvSW5zcGVjdGVkV2ViVmlldyA9IE5POwogCiAgICAgICAgIE5TVmlldyAqY29udGVudFZpZXcg
PSBbW3NlbGYgd2luZG93XSBjb250ZW50Vmlld107Ci0gICAgICAgIFtfd2ViVmlldyBzZXRGcmFt
ZTpbY29udGVudFZpZXcgZnJhbWVdXTsKLSAgICAgICAgW193ZWJWaWV3IHNldEF1dG9yZXNpemlu
Z01hc2s6KE5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGUpXTsKLSAgICAg
ICAgW193ZWJWaWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOwotICAgICAgICBbY29udGVudFZpZXcg
YWRkU3Vidmlldzpfd2ViVmlld107CisgICAgICAgIFtfZnJvbnRlbmRXZWJWaWV3IHNldEZyYW1l
Oltjb250ZW50VmlldyBmcmFtZV1dOworICAgICAgICBbX2Zyb250ZW5kV2ViVmlldyBzZXRBdXRv
cmVzaXppbmdNYXNrOihOU1ZpZXdXaWR0aFNpemFibGUgfCBOU1ZpZXdIZWlnaHRTaXphYmxlKV07
CisgICAgICAgIFtfZnJvbnRlbmRXZWJWaWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOworICAgICAg
ICBbY29udGVudFZpZXcgYWRkU3VidmlldzpfZnJvbnRlbmRXZWJWaWV3XTsKIAogICAgICAgICBb
c3VwZXIgc2hvd1dpbmRvdzpuaWxdOwogICAgIH0KQEAgLTY2OSw3ICs2NjgsNyBAQCAtICh2b2lk
KXNldEF0dGFjaGVkV2luZG93SGVpZ2h0Oih1bnNpZ25lZCloZWlnaHQKICAgICBmcmFtZVZpZXdS
ZWN0LnNpemUuaGVpZ2h0ICs9IGhlaWdodERpZmZlcmVuY2U7CiAgICAgZnJhbWVWaWV3UmVjdC5v
cmlnaW4ueSA9IGhlaWdodDsKIAotICAgIFtfd2ViVmlldyBzZXRGcmFtZTpOU01ha2VSZWN0KDAu
MCwgMC4wLCBOU1dpZHRoKGZyYW1lVmlld1JlY3QpLCBoZWlnaHQpXTsKKyAgICBbX2Zyb250ZW5k
V2ViVmlldyBzZXRGcmFtZTpOU01ha2VSZWN0KDAuMCwgMC4wLCBOU1dpZHRoKGZyYW1lVmlld1Jl
Y3QpLCBoZWlnaHQpXTsKICAgICBbZnJhbWVWaWV3IHNldEZyYW1lOmZyYW1lVmlld1JlY3RdOwog
fQogCkBAIC02OTksNyArNjk4LDcgQEAgLSAodm9pZClkZXN0cm95SW5zcGVjdG9yVmlldwogICAg
ICAgICBpbnNwZWN0ZWRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250
ZW5kKF9pbnNwZWN0b3JDbGllbnQpOwogICAgIH0KIAotICAgIFtfd2ViVmlldyBjbG9zZV07Cisg
ICAgW19mcm9udGVuZFdlYlZpZXcgY2xvc2VdOwogfQogCiAvLyBNQVJLOiAtCkBAIC03MjcsOCAr
NzI2LDggQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHJ1bk9wZW5QYW5lbEZv
ckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXI6KGkKICAgICAgICAgW3Jlc3VsdExpc3RlbmVy
IGNob29zZUZpbGVuYW1lczpmaWxlbmFtZXNdOwogICAgIH07CiAKLSAgICBpZiAoX3dlYlZpZXcu
d2luZG93KQotICAgICAgICBbcGFuZWwgYmVnaW5TaGVldE1vZGFsRm9yV2luZG93Ol93ZWJWaWV3
LndpbmRvdyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CisgICAgaWYgKF9m
cm9udGVuZFdlYlZpZXcud2luZG93KQorICAgICAgICBbcGFuZWwgYmVnaW5TaGVldE1vZGFsRm9y
V2luZG93Ol9mcm9udGVuZFdlYlZpZXcud2luZG93IGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRp
b25IYW5kbGVyXTsKICAgICBlbHNlCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtwYW5lbCBy
dW5Nb2RhbF0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9y
L1dlYkluc3BlY3Rvci5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL1dlYkluc3Bl
Y3Rvci5oCmluZGV4IGI2MTg2YTE0YmE1OTNmNjQyN2U3ODM3YTQyZjY2YWU2NTA0ODk3ZDYuLmUx
YjI0YTljYzJkNjllMWZjYmRhNjg0NDhlZmIyMzUwNmQwNDYwYjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9XZWJJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yLmgKQEAgLTM2LDExICszNiwxMSBAQCBl
eHRlcm4gTlNTdHJpbmcgKldlYkluc3BlY3RvckRpZFN0b3BTZWFyY2hpbmdGb3JOb2RlOwogCiBA
aW50ZXJmYWNlIFdlYkluc3BlY3RvciA6IE5TT2JqZWN0CiB7Ci0gICAgV2ViVmlldyAqX3dlYlZp
ZXc7CisgICAgV2ViVmlldyAqX2luc3BlY3RlZFdlYlZpZXc7CiAgICAgV2ViSW5zcGVjdG9yRnJv
bnRlbmQgKl9mcm9udGVuZDsKIH0KLS0gKGlkKWluaXRXaXRoV2ViVmlldzooV2ViVmlldyAqKXdl
YlZpZXc7Ci0tICh2b2lkKXdlYlZpZXdDbG9zZWQ7CistIChpZClpbml0V2l0aEluc3BlY3RlZFdl
YlZpZXc6KFdlYlZpZXcgKilpbnNwZWN0ZWRXZWJWaWV3OworLSAodm9pZClpbnNwZWN0ZWRXZWJW
aWV3Q2xvc2VkOwogLSAodm9pZClzaG93OihpZClzZW5kZXI7CiAtICh2b2lkKXNob3dDb25zb2xl
OihpZClzZW5kZXI7CiAtICh2b2lkKWNsb3NlOihpZClzZW5kZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yLm1tIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5tbQppbmRleCAyNmRhZWZkZjllNWZiYjQ0
Yzc5MWM0NDBjN2M1YTRhZWMxYjNiYTgzLi5jYmE4YzZkYjU5YTE3Mzc5ODc2ZGNjNThjODA1ZjNi
OWRjNWEyZTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9XZWJJbnNw
ZWN0b3IubW0KQEAgLTQzLDExICs0MywxMSBAQCBOU1N0cmluZyAqV2ViSW5zcGVjdG9yRGlkU3Rh
cnRTZWFyY2hpbmdGb3JOb2RlID0gQCJXZWJJbnNwZWN0b3JEaWRTdGFydFNlYXJjaGluZwogTlNT
dHJpbmcgKldlYkluc3BlY3RvckRpZFN0b3BTZWFyY2hpbmdGb3JOb2RlID0gQCJXZWJJbnNwZWN0
b3JEaWRTdG9wU2VhcmNoaW5nRm9yTm9kZSI7CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJJbnNwZWN0
b3IKLS0gKGlkKWluaXRXaXRoV2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcKKy0gKGlkKWluaXRX
aXRoSW5zcGVjdGVkV2ViVmlldzooV2ViVmlldyAqKWluc3BlY3RlZFdlYlZpZXcKIHsKICAgICBp
ZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBfd2Vi
VmlldyA9IHdlYlZpZXc7IC8vIG5vdCByZXRhaW5lZCB0byBwcmV2ZW50IGEgY3ljbGUKKyAgICBf
aW5zcGVjdGVkV2ViVmlldyA9IGluc3BlY3RlZFdlYlZpZXc7IC8vIG5vdCByZXRhaW5lZCB0byBw
cmV2ZW50IGEgY3ljbGUKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtNTgsMTUgKzU4LDE1IEBA
IC0gKHZvaWQpZGVhbGxvYwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAotLSAodm9pZCl3ZWJW
aWV3Q2xvc2VkCistICh2b2lkKWluc3BlY3RlZFdlYlZpZXdDbG9zZWQKIHsKLSAgICBfd2ViVmll
dyA9IG5pbDsKKyAgICBfaW5zcGVjdGVkV2ViVmlldyA9IG5pbDsKIH0KIAogLSAodm9pZClzaG93
V2luZG93CiB7Ci0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBjb3JlKF93ZWJWaWV3KSkKLSAgICAgICAg
cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKKyAgICBpZiAoUGFnZSogaW5zcGVj
dGVkUGFnZSA9IGNvcmUoX2luc3BlY3RlZFdlYlZpZXcpKQorICAgICAgICBpbnNwZWN0ZWRQYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwogfQogCiAtICh2b2lkKXNob3c6KGlkKXNl
bmRlcgpAQCAtMTU3LDggKzE1Nyw4IEBAIC0gKEJPT0wpaXNPcGVuCiAKIC0gKHZvaWQpY2xvc2U6
KGlkKXNlbmRlciAKIHsKLSAgICBpZiAoUGFnZSogcGFnZSA9IGNvcmUoX3dlYlZpZXcpKQotICAg
ICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuY2xvc2UoKTsKKyAgICBpZiAoUGFnZSog
aW5zcGVjdGVkUGFnZSA9IGNvcmUoX2luc3BlY3RlZFdlYlZpZXcpKQorICAgICAgICBpbnNwZWN0
ZWRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuY2xvc2UoKTsKIH0KIAogLSAodm9pZClhdHRh
Y2g6KGlkKXNlbmRlcgpAQCAtMTczLDggKzE3MywxMCBAQCAtICh2b2lkKWRldGFjaDooaWQpc2Vu
ZGVyCiAKIC0gKHZvaWQpZXZhbHVhdGVJbkZyb250ZW5kOihpZClzZW5kZXIgc2NyaXB0OihOU1N0
cmluZyAqKXNjcmlwdAogewotICAgIGlmIChQYWdlKiBwYWdlID0gY29yZShfd2ViVmlldykpCi0g
ICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5ldmFsdWF0ZUZvclRlc3RJbkZyb250
ZW5kKHNjcmlwdCk7CisgICAgLy8gRklYTUU6IHRoaXMgaXMgYSByZWFsbHkgcm91bmRhYm91dCB3
YXkgdG8gZXZhbHVhdGUgaW4gdGhlIGZyb250ZW5kLgorICAgIC8vIFdlIGNvdWxkIGRpcmVjdGx5
IHVzZSB0aGUgZnJvbnRlbmQgaW5zdGVhZCBvZiBnb2luZyB0aHJvdWdoIHRoZSBpbnNwZWN0ZWQg
cGFnZS4KKyAgICBpZiAoUGFnZSogaW5zcGVjdGVkUGFnZSA9IGNvcmUoX2luc3BlY3RlZFdlYlZp
ZXcpKQorICAgICAgICBpbnNwZWN0ZWRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZXZhbHVh
dGVGb3JUZXN0SW5Gcm9udGVuZChzY3JpcHQpOwogfQogCiAtICh2b2lkKXNldEZyb250ZW5kOihX
ZWJJbnNwZWN0b3JGcm9udGVuZCAqKWZyb250ZW5kCkBAIC0xODUsNiArMTg3LDYgQEAgLSAodm9p
ZClzZXRGcm9udGVuZDooV2ViSW5zcGVjdG9yRnJvbnRlbmQgKilmcm9udGVuZAogLSAodm9pZCly
ZWxlYXNlRnJvbnRlbmQKIHsKICAgICBbX2Zyb250ZW5kIHJlbGVhc2VdOwotICAgIF9mcm9udGVu
ZCA9IDA7CisgICAgX2Zyb250ZW5kID0gbmlsOwogfQogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViS2l0Lm9yZGVyIGIvU291cmNlL1dlYktpdC9tYWMvV2ViS2l0Lm9yZGVy
CmluZGV4IDcxNjIxNzJjZDYxMDc0ZDc1OTA4ZDNiYTQ1MWQzZTU2ZjNlZjU1ZmUuLjA5MTliZTA4
ZDU4NDQyNWM2ZTA2OGY0NDFjMDUzZTY3MDhiZTExMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYktpdC5vcmRlcgorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQub3JkZXIK
QEAgLTEwMjAsOCArMTAyMCw4IEBAIF9fWk4yNFdlYkFsdGVybmF0aXZlVGV4dENsaWVudEQwRXYK
IF9fWk4xNUNvcnJlY3Rpb25QYW5lbDdkaXNtaXNzRU43V2ViQ29yZTM0UmVhc29uRm9yRGlzbWlz
c2luZ0FsdGVybmF0aXZlVGV4dEUKIF9fWk4xNUNvcnJlY3Rpb25QYW5lbEQxRXYKIF9fWk4xNUNv
cnJlY3Rpb25QYW5lbEQyRXYKLV9fWk4xOFdlYkluc3BlY3RvckNsaWVudDE4aW5zcGVjdG9yRGVz
dHJveWVkRXYKLV9fWk4xOFdlYkluc3BlY3RvckNsaWVudDIyY2xvc2VJbnNwZWN0b3JGcm9udGVu
ZEV2CitfX1pOMThXZWJJbnNwZWN0b3JDbGllbnQyMmluc3BlY3RlZFBhZ2VEZXN0cm95ZWRFdgor
X19aTjE4V2ViSW5zcGVjdG9yQ2xpZW50MThjbG9zZUxvY2FsRnJvbnRlbmRFdgogX19aTjE4V2Vi
SW5zcGVjdG9yQ2xpZW50RDBFdgogLVtXZWJOb2RlSGlnaGxpZ2h0ZXIgZGVhbGxvY10KIF9fWk4y
MFdlYkZyYW1lTG9hZGVyQ2xpZW50MjBmcmFtZUxvYWRlckRlc3Ryb3llZEV2CkBAIC0xNTI3LDcg
KzE1MjcsNyBAQCBfX1o0Y29yZVAxNFdlYkhpc3RvcnlJdGVtCiAtW1dlYkJhY2tGb3J3YXJkTGlz
dCBnb1RvSXRlbTpdCiAtW1dlYkluc3BlY3RvciBzaG93Ol0KIC1bV2ViSW5zcGVjdG9yIHNob3dX
aW5kb3ddCi1fX1pOMThXZWJJbnNwZWN0b3JDbGllbnQyMW9wZW5JbnNwZWN0b3JGcm9udGVuZEVQ
TjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyRQorX19aTjE4V2ViSW5zcGVjdG9yQ2xpZW50
MTdvcGVuTG9jYWxGcm9udGVuZEVQTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyRQogLVtX
ZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyIC5jeHhfY29uc3RydWN0XQogLVtXZWJJbnNwZWN0
b3JXaW5kb3dDb250cm9sbGVyIGluaXRXaXRoSW5zcGVjdGVkV2ViVmlldzpdCiAtW1dlYkluc3Bl
Y3RvcldpbmRvd0NvbnRyb2xsZXIgaW5pdF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQppbmRleCAwYTk4MmQ2Y2IyYWNlZWMwYWI0N2M0NTJjYzQ5NDU3ZjZhN2I3NzYzLi44Zjc5ZTI2
Y2U3OGZkMWViZGFmNGY3YjAxZTJiOTkwY2JiNTczNGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCkBAIC0xNzU2LDcgKzE3NTYsNyBAQCAtICh2b2lkKV9jbG9zZQogICAgIFtz
ZWxmIHNldFNjcmlwdERlYnVnRGVsZWdhdGU6bmlsXTsKICAgICBbc2VsZiBzZXRVSURlbGVnYXRl
Om5pbF07CiAKLSAgICBbX3ByaXZhdGUtPmluc3BlY3RvciB3ZWJWaWV3Q2xvc2VkXTsKKyAgICBb
X3ByaXZhdGUtPmluc3BlY3RvciBpbnNwZWN0ZWRXZWJWaWV3Q2xvc2VkXTsKICNlbmRpZgogI2lm
IFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEw
MDAKICAgICBbX3ByaXZhdGUtPmltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgd2ViVmlld0Nsb3Nl
ZF07CkBAIC0xODkwLDcgKzE4OTAsNyBAQCAtIChXZWJWaWV3ICopX29wZW5OZXdXaW5kb3dXaXRo
UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogLSAoV2ViSW5zcGVjdG9yICopaW5zcGVj
dG9yCiB7CiAgICAgaWYgKCFfcHJpdmF0ZS0+aW5zcGVjdG9yKQotICAgICAgICBfcHJpdmF0ZS0+
aW5zcGVjdG9yID0gW1tXZWJJbnNwZWN0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzpzZWxmXTsK
KyAgICAgICAgX3ByaXZhdGUtPmluc3BlY3RvciA9IFtbV2ViSW5zcGVjdG9yIGFsbG9jXSBpbml0
V2l0aEluc3BlY3RlZFdlYlZpZXc6c2VsZl07CiAgICAgcmV0dXJuIF9wcml2YXRlLT5pbnNwZWN0
b3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDM3MTc3NDA4MWYyYWEwZDM4ZGIwY2M4YWUzZDAw
OTExZGNiOThjYjEuLjgyMzA1Yzg4MTljZGJkMjM4NzZlYzM2Mjc1NWNkOGE2MmVkYTg3NjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmNwcApAQCAtNzIsMTMgKzcyLDEzIEBAIFdlYkluc3BlY3RvckNsaWVudDo6fldl
Ykluc3BlY3RvckNsaWVudCgpCiB7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjppbnNw
ZWN0b3JEZXN0cm95ZWQoKQordm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RlZFBhZ2VE
ZXN0cm95ZWQoKQogewotICAgIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKTsKKyAgICBjbG9zZUxv
Y2FsRnJvbnRlbmQoKTsKICAgICBkZWxldGUgdGhpczsKIH0KIAotSW5zcGVjdG9yOjpGcm9udGVu
ZENoYW5uZWwqIFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIpCitJbnNwZWN0b3I6OkZyb250ZW5k
Q2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9udGVuZChJbnNwZWN0b3JD
b250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyKQogewogICAgIHJlZ2lzdGVyV2luZG93Q2xh
c3MoKTsKIApAQCAtMTcxLDcgKzE3MSw3IEBAIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBX
ZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDCiAgICAg
cmV0dXJuIHRoaXM7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpjbG9zZUluc3BlY3Rv
ckZyb250ZW5kKCkKK3ZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpjbG9zZUxvY2FsRnJvbnRlbmQo
KQogewogICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQogICAgICAgICBtX2Zyb250ZW5kQ2xpZW50
LT5kZXN0cm95SW5zcGVjdG9yVmlldygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCA0MzUxNWEwZGVlMjk1NWJm
MDU4NjlmNzk5ZDZkNmVlNTZlZWE3NzkzLi4yNGU4YjdiN2YwZWU2NTJmM2RlZWNmY2EwZGE5YTk2
MTUwYWExODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNTMsMTAgKzUzLDEwIEBAIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBXZWJJbnNwZWN0b3JDbGllbnQoV2ViVmlldyopOwogCiAgICAgLy8gSW5zcGVjdG9y
Q2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpOworICAgIHZpcnR1
YWwgdm9pZCBpbnNwZWN0ZWRQYWdlRGVzdHJveWVkKCk7CiAKLSAgICB2aXJ0dWFsIEluc3BlY3Rv
cjo6RnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlciopOwotICAgIHZpcnR1YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5k
KCk7CisgICAgdmlydHVhbCBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogb3BlbkxvY2FsRnJv
bnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopOworICAgIHZpcnR1YWwgdm9pZCBj
bG9zZUxvY2FsRnJvbnRlbmQoKTsKICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJv
bnQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJJbnNw
ZWN0b3IuY3BwCmluZGV4IDFhZWRiN2EyMjczOWI2ZGE2ZTZjNjg5ZjVkODJhOWM2ZTRiODU4YzQu
LmMwMjg1MGVmMTU5YWJhNWZiMjQ1OTc0MDdjNjFkMWEyNTZiMzRmNGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4v
V2ViSW5zcGVjdG9yLmNwcApAQCAtMzcsMTggKzM3LDE4IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCi1XZWJJbnNwZWN0b3IqIFdlYkluc3BlY3Rvcjo6Y3JlYXRlSW5zdGFuY2UoV2Vi
Vmlldyogd2ViVmlldywgV2ViSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQpCitXZWJJ
bnNwZWN0b3IqIFdlYkluc3BlY3Rvcjo6Y3JlYXRlSW5zdGFuY2UoV2ViVmlldyogaW5zcGVjdGVk
V2ViVmlldywgV2ViSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQpCiB7Ci0gICAgV2Vi
SW5zcGVjdG9yKiBpbnNwZWN0b3IgPSBuZXcgV2ViSW5zcGVjdG9yKHdlYlZpZXcsIGluc3BlY3Rv
ckNsaWVudCk7CisgICAgV2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IgPSBuZXcgV2ViSW5zcGVjdG9y
KGluc3BlY3RlZFdlYlZpZXcsIGluc3BlY3RvckNsaWVudCk7CiAgICAgaW5zcGVjdG9yLT5BZGRS
ZWYoKTsKICAgICByZXR1cm4gaW5zcGVjdG9yOwogfQogCi1XZWJJbnNwZWN0b3I6OldlYkluc3Bl
Y3RvcihXZWJWaWV3KiB3ZWJWaWV3LCBXZWJJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVu
dCkKLSAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQorV2ViSW5zcGVjdG9yOjpXZWJJbnNwZWN0b3Io
V2ViVmlldyogaW5zcGVjdGVkV2ViVmlldywgV2ViSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JD
bGllbnQpCisgICAgOiBtX2luc3BlY3RlZFdlYlZpZXcoaW5zcGVjdGVkV2ViVmlldykKICAgICAs
IG1faW5zcGVjdG9yQ2xpZW50KGluc3BlY3RvckNsaWVudCkKIHsKLSAgICBBU1NFUlRfQVJHKHdl
YlZpZXcsIHdlYlZpZXcpOworICAgIEFTU0VSVF9BUkcoaW5zcGVjdGVkV2ViVmlldywgaW5zcGVj
dGVkV2ViVmlldyk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwogICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViSW5zcGVjdG9yIik7CkBAIC02NSw5ICs2NSw5IEBAIFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50KiBXZWJJbnNwZWN0b3I6OmZyb250ZW5kQ2xpZW50KCkKICAgICByZXR1cm4gbV9p
bnNwZWN0b3JDbGllbnQgPyBtX2luc3BlY3RvckNsaWVudC0+ZnJvbnRlbmRDbGllbnQoKSA6IG51
bGxwdHI7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjp3ZWJWaWV3Q2xvc2VkKCkKK3ZvaWQgV2Vi
SW5zcGVjdG9yOjppbnNwZWN0ZWRXZWJWaWV3Q2xvc2VkKCkKIHsKLSAgICBtX3dlYlZpZXcgPSBu
dWxscHRyOworICAgIG1faW5zcGVjdGVkV2ViVmlldyA9IG51bGxwdHI7CiAgICAgbV9pbnNwZWN0
b3JDbGllbnQgPSBudWxscHRyOwogfQogCkBAIC0xMDUsOCArMTA1LDggQEAgVUxPTkcgV2ViSW5z
cGVjdG9yOjpSZWxlYXNlKCkKIAogSFJFU1VMVCBXZWJJbnNwZWN0b3I6OnNob3coKQogewotICAg
IGlmIChtX3dlYlZpZXcpCi0gICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV93ZWJWaWV3LT5wYWdl
KCkpCisgICAgaWYgKG1faW5zcGVjdGVkV2ViVmlldykKKyAgICAgICAgaWYgKFBhZ2UqIHBhZ2Ug
PSBtX2luc3BlY3RlZFdlYlZpZXctPnBhZ2UoKSkKICAgICAgICAgICAgIHBhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS5zaG93KCk7CiAKICAgICByZXR1cm4gU19PSzsKQEAgLTEyNyw4ICsxMjcs
OCBAQCBIUkVTVUxUIFdlYkluc3BlY3Rvcjo6dW51c2VkMSgpCiAKIEhSRVNVTFQgV2ViSW5zcGVj
dG9yOjpjbG9zZSgpCiB7Ci0gICAgaWYgKG1fd2ViVmlldykKLSAgICAgICAgaWYgKFBhZ2UqIHBh
Z2UgPSBtX3dlYlZpZXctPnBhZ2UoKSkKKyAgICBpZiAobV9pbnNwZWN0ZWRXZWJWaWV3KQorICAg
ICAgICBpZiAoUGFnZSogcGFnZSA9IG1faW5zcGVjdGVkV2ViVmlldy0+cGFnZSgpKQogICAgICAg
ICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmNsb3NlKCk7CiAKICAgICByZXR1cm4g
U19PSzsKQEAgLTIxMCw0MiArMjEwLDQyIEBAIEhSRVNVTFQgV2ViSW5zcGVjdG9yOjppc0phdmFT
Y3JpcHRQcm9maWxpbmdFbmFibGVkKF9PdXRfIEJPT0wqIGlzUHJvZmlsaW5nRW5hYmxlCiAKICAg
ICAqaXNQcm9maWxpbmdFbmFibGVkID0gRkFMU0U7CiAKLSAgICBpZiAoIW1fd2ViVmlldykKKyAg
ICBpZiAoIW1faW5zcGVjdGVkV2ViVmlldykKICAgICAgICAgcmV0dXJuIFNfT0s7CiAKLSAgICBQ
YWdlKiBwYWdlID0gbV93ZWJWaWV3LT5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQorICAgIFBhZ2Uq
IGluc3BlY3RlZFBhZ2UgPSBtX2luc3BlY3RlZFdlYlZpZXctPnBhZ2UoKTsKKyAgICBpZiAoIWlu
c3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVybiBTX09LOwogCi0gICAgKmlzUHJvZmlsaW5nRW5h
YmxlZCA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5wcm9maWxlckVuYWJsZWQoKTsKKyAg
ICAqaXNQcm9maWxpbmdFbmFibGVkID0gaW5zcGVjdGVkUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLnByb2ZpbGVyRW5hYmxlZCgpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFdl
Ykluc3BlY3Rvcjo6c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoQk9PTCBlbmFibGVkKQog
ewotICAgIGlmICghbV93ZWJWaWV3KQorICAgIGlmICghbV9pbnNwZWN0ZWRXZWJWaWV3KQogICAg
ICAgICByZXR1cm4gU19PSzsKIAotICAgIFBhZ2UqIHBhZ2UgPSBtX3dlYlZpZXctPnBhZ2UoKTsK
LSAgICBpZiAoIXBhZ2UpCisgICAgUGFnZSogaW5zcGVjdGVkUGFnZSA9IG1faW5zcGVjdGVkV2Vi
Vmlldy0+cGFnZSgpOworICAgIGlmICghaW5zcGVjdGVkUGFnZSkKICAgICAgICAgcmV0dXJuIFNf
T0s7CiAKLSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0UHJvZmlsZXJFbmFibGVk
KGVuYWJsZWQpOworICAgIGluc3BlY3RlZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRQ
cm9maWxlckVuYWJsZWQoZW5hYmxlZCk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VM
VCBXZWJJbnNwZWN0b3I6OmV2YWx1YXRlSW5Gcm9udGVuZChfSW5fIEJTVFIgYlNjcmlwdCkKIHsK
LSAgICBpZiAoIW1fd2ViVmlldykKKyAgICBpZiAoIW1faW5zcGVjdGVkV2ViVmlldykKICAgICAg
ICAgcmV0dXJuIFNfT0s7CiAKLSAgICBQYWdlKiBwYWdlID0gbV93ZWJWaWV3LT5wYWdlKCk7Ci0g
ICAgaWYgKCFwYWdlKQorICAgIFBhZ2UqIGluc3BlY3RlZFBhZ2UgPSBtX2luc3BlY3RlZFdlYlZp
ZXctPnBhZ2UoKTsKKyAgICBpZiAoIWluc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVybiBTX09L
OwogCiAgICAgU3RyaW5nIHNjcmlwdChiU2NyaXB0LCBTeXNTdHJpbmdMZW4oYlNjcmlwdCkpOwot
ICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5ldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5k
KHNjcmlwdCk7CisgICAgaW5zcGVjdGVkUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmV2YWx1
YXRlRm9yVGVzdEluRnJvbnRlbmQoc2NyaXB0KTsKICAgICByZXR1cm4gU19PSzsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViSW5zcGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJJbnNwZWN0b3IuaAppbmRleCA5NGE5NTU4YTNiNzE5MjI1M2M5YzAwOWNiYWU5NzYw
YWQ5ZGQzMTVkLi5kZjcwN2NmMzkzYmFkNjNjMzgxZDY0OWI3ZjUwYWFjMjJmMWM3OTU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJJbnNwZWN0b3IuaApAQCAtMzksOSArMzksOSBAQCBjbGFzcyBXZWJWaWV3Owog
Y2xhc3MgV2ViSW5zcGVjdG9yIDogcHVibGljIElXZWJJbnNwZWN0b3IsIHB1YmxpYyBJV2ViSW5z
cGVjdG9yUHJpdmF0ZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViSW5zcGVjdG9yKTsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViSW5zcGVjdG9yKiBjcmVhdGVJbnN0YW5jZShXZWJWaWV3
KiwgV2ViSW5zcGVjdG9yQ2xpZW50Kik7CisgICAgc3RhdGljIFdlYkluc3BlY3RvciogY3JlYXRl
SW5zdGFuY2UoV2ViVmlldyogaW5zcGVjdGVkV2ViVmlldywgV2ViSW5zcGVjdG9yQ2xpZW50Kik7
CiAKLSAgICB2b2lkIHdlYlZpZXdDbG9zZWQoKTsKKyAgICB2b2lkIGluc3BlY3RlZFdlYlZpZXdD
bG9zZWQoKTsKIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUlu
dGVyZmFjZShfSW5fIFJFRklJRCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwogICAg
IHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKCk7CkBAIC02OSwxNCArNjks
MTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRU
aW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoQk9PTCk7CiAKIHByaXZhdGU6Ci0gICAgV2ViSW5zcGVj
dG9yKFdlYlZpZXcqLCBXZWJJbnNwZWN0b3JDbGllbnQqKTsKKyAgICBXZWJJbnNwZWN0b3IoV2Vi
VmlldyogaW5zcGVjdGVkV2ViVmlldywgV2ViSW5zcGVjdG9yQ2xpZW50Kik7CiAgICAgfldlYklu
c3BlY3RvcigpOwogCiAgICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIGZyb250ZW5kQ2xp
ZW50KCk7CiAKICAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwotICAgIFdlYlZpZXcqIG1fd2Vi
VmlldzsKLSAgICBXZWJJbnNwZWN0b3JDbGllbnQqIG1faW5zcGVjdG9yQ2xpZW50OworICAgIFdl
YlZpZXcqIG1faW5zcGVjdGVkV2ViVmlldyB7IG51bGxwdHIgfTsKKyAgICBXZWJJbnNwZWN0b3JD
bGllbnQqIG1faW5zcGVjdG9yQ2xpZW50IHsgbnVsbHB0ciB9OwogfTsKIAogI2VuZGlmIC8vICFk
ZWZpbmVkKFdlYkluc3BlY3Rvcl9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2Vi
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAppbmRleCBiN2FmMmNiN2Jj
NjJjNDkxZjlhZTUzMDk1OTgyYjk1M2I2YWMxN2MzLi4yMjEyNDQxMWI5Nzg3N2EwYzZkYTQ5MmRi
NzcxNjNmMWUwN2Q5MDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcApAQCAtNzYyLDkgKzc2Miw5IEBA
IEhSRVNVTFQgV2ViVmlldzo6Y2xvc2UoKQogICAgIHNldFVJRGVsZWdhdGUoMCk7CiAgICAgc2V0
Rm9ybURlbGVnYXRlKDApOwogCi0gICAgbV9pbnNwZWN0b3JDbGllbnQgPSAwOworICAgIG1faW5z
cGVjdG9yQ2xpZW50ID0gbnVsbHB0cjsKICAgICBpZiAobV93ZWJJbnNwZWN0b3IpCi0gICAgICAg
IG1fd2ViSW5zcGVjdG9yLT53ZWJWaWV3Q2xvc2VkKCk7CisgICAgICAgIG1fd2ViSW5zcGVjdG9y
LT5pbnNwZWN0ZWRXZWJWaWV3Q2xvc2VkKCk7CiAKICAgICBkZWxldGUgbV9wYWdlOwogICAgIG1f
cGFnZSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggNjZlOWJjNzBkYWMw
NDQ4NzY5NDNmYjVkZDM5Y2RiMmE3NGQyMzZmYS4uNTg4MGNlMDM1MGFlNDc3NDg1NDQ3OTA5ZTgy
NDZiMTFmN2E1ZmE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtNzYsMjAg
Kzc2LDIwIEBAIFdlYkluc3BlY3RvckNsaWVudDo6fldlYkluc3BlY3RvckNsaWVudCgpCiAgICAg
ICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLnVuaW5zdGFs
bFBhZ2VPdmVybGF5KG1fcGFpbnRSZWN0T3ZlcmxheS5nZXQoKSwgUGFnZU92ZXJsYXk6OkZhZGVN
b2RlOjpGYWRlKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ry
b3llZCgpCit2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCgp
CiB7Ci0gICAgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpOworICAgIGNsb3NlTG9jYWxGcm9udGVu
ZCgpOwogICAgIGRlbGV0ZSB0aGlzOwogfQogCi1JbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCog
V2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJv
bGxlciogY29udHJvbGxlcikKK0luc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0
b3JDbGllbnQ6Om9wZW5Mb2NhbEZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xs
ZXIpCiB7CiAgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+b3BlbkZyb250ZW5kQ29ubmVjdGlvbihj
b250cm9sbGVyLT5pc1VuZGVyVGVzdCgpKTsKIAogICAgIHJldHVybiBtX3BhZ2UtPmluc3BlY3Rv
cigpOwogfQogCi12b2lkIFdlYkluc3BlY3RvckNsaWVudDo6Y2xvc2VJbnNwZWN0b3JGcm9udGVu
ZCgpCit2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6Y2xvc2VMb2NhbEZyb250ZW5kKCkKIHsKICAg
ICBpZiAobV9wYWdlLT5pbnNwZWN0b3IoKSkgewogICAgICAgICBtX3BhZ2UtPmNvcmVQYWdlKCkt
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQobV9wYWdlLT5pbnNwZWN0
b3IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCBiODM4MGIxYjg4YjE3NjE0MWZm
YzRhODQ1NzM4ODQwZDdiZDk4ZDhjLi5iMTBmNDQwOTE5YWY0MTA5ZGI4NGViNjA0OWIxN2E1ODc3
NDQyMjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTUwLDEwICs1MCwxMCBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50Ci0gICAg
dm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGluc3BlY3RlZFBh
Z2VEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAotICAgIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVs
KiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopIG92
ZXJyaWRlOwotICAgIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpIG92ZXJyaWRlOworICAg
IEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBvcGVuTG9jYWxGcm9udGVuZChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbG9zZUxvY2FsRnJvbnRl
bmQoKSBvdmVycmlkZTsKICAgICB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRSZXNpemVNYWluRnJhbWUoV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIgYi9Tb3VyY2Uv
V2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlcgppbmRleCA4YTAzODM4OTI3ZjVlOTJlMzhkNTM2MmZh
YzM5ZDdkYTA2ZjYzNmY4Li43ZGRiOTcxZDQ3ZDJhNmFlNDE4ZTZkOWY0MTUyNjBiOTQ0ZGVlNWZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlcgorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlcgpAQCAtNDMyNCw4ICs0MzI0LDggQEAgX19aTjZX
ZWJLaXQxNVdlYlBsdWdJbkNsaWVudDEzcGFnZURlc3Ryb3llZEV2CiBfX1pONldlYktpdDE1V2Vi
UGx1Z0luQ2xpZW50RDBFdgogX19aTjZXZWJLaXQyNFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDEz
cGFnZURlc3Ryb3llZEV2CiBfX1pONldlYktpdDI0V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50RDBF
dgotX19aTjZXZWJLaXQxOFdlYkluc3BlY3RvckNsaWVudDE4aW5zcGVjdG9yRGVzdHJveWVkRXYK
LV9fWk42V2ViS2l0MThXZWJJbnNwZWN0b3JDbGllbnQyMmNsb3NlSW5zcGVjdG9yRnJvbnRlbmRF
dgorX19aTjZXZWJLaXQxOFdlYkluc3BlY3RvckNsaWVudDIyaW5zcGVjdGVkUGFnZURlc3Ryb3ll
ZEV2CitfX1pONldlYktpdDE4V2ViSW5zcGVjdG9yQ2xpZW50MThjbG9zZUxvY2FsRnJvbnRlbmRF
dgogX19aTjZXZWJLaXQxOFdlYkluc3BlY3RvckNsaWVudEQwRXYKIF9fWk42V2ViS2l0MjNXZWJC
YWNrRm9yd2FyZExpc3RQcm94eTVjbG9zZUV2CiBfX1pONldlYktpdDIzV2ViQmFja0ZvcndhcmRM
aXN0UHJveHk5aXRlbUZvcklERXkKQEAgLTg0NjYsNyArODQ2Niw3IEBAIF9fWk42V2ViS2l0MThX
ZWJCYWNrRm9yd2FyZExpc3Q1Y2xlYXJFdgogX1dLQnVuZGxlUGFnZUdldEluc3BlY3RvcgogX1dL
QnVuZGxlSW5zcGVjdG9yU2hvdwogX19aTjZXZWJLaXQxMldlYkluc3BlY3RvcjRzaG93RXYKLV9f
Wk42V2ViS2l0MThXZWJJbnNwZWN0b3JDbGllbnQyMW9wZW5JbnNwZWN0b3JGcm9udGVuZEVQTjdX
ZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyRQorX19aTjZXZWJLaXQxOFdlYkluc3BlY3RvckNs
aWVudDE3b3BlbkxvY2FsRnJvbnRlbmRFUE43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlckUK
IF9fWk42V2ViS2l0MTJXZWJJbnNwZWN0b3IxOWNyZWF0ZUluc3BlY3RvclBhZ2VFdgogX19aTjdD
b3JlSVBDMTBDb25uZWN0aW9uOHNlbmRTeW5jSU44TWVzc2FnZXMxN1dlYkluc3BlY3RvclByb3h5
MTlDcmVhdGVJbnNwZWN0b3JQYWdlRUVFYlJLVF9SS05TNV81UmVwbHlFeWRqCiBfX1pONldlYktp
dDE1RHJhd2luZ0FyZWFJbXBsMzNwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWRFdgo=
</data>
<flag name="review"
          id="286220"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>