<?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>62793</bug_id>
          
          <creation_ts>2011-06-16 03:57:46 -0700</creation_ts>
          <short_desc>Add a function hasRenderer()</short_desc>
          <delta_ts>2012-05-28 23:32:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>62333</dependson>
          <blocked>72352</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Roland Steiner">rolandsteiner</reporter>
          <assigned_to name="Roland Steiner">rolandsteiner</assigned_to>
          <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>hayato</cc>
    
    <cc>krit</cc>
    
    <cc>morrita</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>421899</commentid>
    <comment_count>0</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-06-16 03:57:46 -0700</bug_when>
    <thetext>Currently, the function renderer() is used to both retrieve a node&apos;s renderer, as well as to simply check for the presence of a renderer (implicitly converting to bool).

For future implementation changes, notably around SVG shadow tree implementations, separating the latter use-case out into a new function hasRenderer() would be helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421906</commentid>
    <comment_count>1</comment_count>
      <attachid>97435</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-06-16 04:24:46 -0700</bug_when>
    <thetext>Created attachment 97435
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421907</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-16 04:27:23 -0700</bug_when>
    <thetext>Attachment 97435 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/editing/ReplaceSelectionCommand.cpp:151:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Total errors found: 1 in 111 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>421973</commentid>
    <comment_count>3</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-06-16 08:41:37 -0700</bug_when>
    <thetext>Rob, Niko, Dirk -- this is a nice exploration of how much work we have ahead of us on making RenderObject multiplex on Node.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421974</commentid>
    <comment_count>4</comment_count>
      <attachid>97435</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-06-16 08:42:02 -0700</bug_when>
    <thetext>Comment on attachment 97435
Patch

Removing r?, since this is just an exploration at the moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422021</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-06-16 10:09:55 -0700</bug_when>
    <thetext>&gt; For future implementation changes, notably around SVG shadow tree implementations, separating the latter use-case out into a new function hasRenderer() would be helpful.

Does this mean that non-null renderer() result will not be equivalent to hasRenderer() returning true?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635616</commentid>
    <comment_count>6</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-05-28 23:32:17 -0700</bug_when>
    <thetext>Closing - we have no concrete plan which relies on this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97435</attachid>
            <date>2011-06-16 04:24:46 -0700</date>
            <delta_ts>2011-06-16 08:42:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62793-20110616202444.patch</filename>
            <type>text/plain</type>
            <size>205327</size>
            <attacher name="Roland Steiner">rolandsteiner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODkwMjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5NTVjYjI2MzAyNzdkOGNi
ZmY0MzA1ZjJkMWJjYjNlZTAxN2Y4OGRkLi5hN2U0MjBiMWYyZGRhNDMzZDFiODQ5NWEzZDYyMDgz
NTRjYjE3MjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDM4IEBACisyMDExLTA2LTE2ICBSb2xh
bmQgU3RlaW5lciAgPHJvbGFuZHN0ZWluZXJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGZ1bmN0aW9uIGhhc1JlbmRl
cmVyKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYy
NzkzCisKKyAgICAgICAgUmVwbGFjZSBhbGwgaW5zdGFuY2VzIHdoZXJlIHJlbmRlcmVyKCkgaXMg
dXNlZCB0byBzaW1wbHkgdGVzdCBmb3IKKyAgICAgICAgdGhlIHByZXNlbmNlIG9mIGEgcmVuZGVy
ZXIgd2l0aCBhIG5ldyBmdW5jdGlvbiBoYXNSZW5kZXJlcigpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cy4gKGV4dGVuc2l2ZSBidXQgc2ltcGxlIHJlZmFjdG9yaW5nKQorCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms6OnBhcmVudE9iamVjdCk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmZpcnN0QWNjZXNzaWJsZU9iamVjdEZyb21Ob2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnJlcGxhY2VkTm9kZU5lZWRzQ2hhcmFjdGVyKToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6Omhhc1JlbmRlcmVyKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6bWVudUZvck1lbnVCdXR0b24pOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWVudUJ1dHRvbkZvck1lbnUpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2hlY2tib3hPclJhZGlvUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0aXRsZVVJ
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2
aXNpYmxlUG9zaXRpb25Gb3JQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjppc0xpbmthYmxlKToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp3ZWJBcmVhT2JqZWN0KToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbToK
KyAgICAgICAgKEFYQXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQpOgorICAgICAgICAobnNTdHJp
bmdGb3JSZXBsYWNlZE5vZGUpOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NLm1tOgorICAg
ICAgICAoLVtET01Ob2RlIHRleHRSZWN0c10pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvck9iakMucG06CisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OmRpc3BhdGNoSW52YWxpZGF0aW9u
Q2FsbGJhY2tzKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpDU1NTdHlsZVNlbGVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0
b3IpOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNoYXJhY3RlckRhdGE6OnVwZGF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVy
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpnZXRVcHBlckxlZnRD
b3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6Z2V0TG93ZXJSaWdodENv
cm5lcik6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpzZXRBY3RpdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6c2V0SG92ZXJlZCk6CisgICAgICAgICogZG9t
L0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmVsZW1lbnRGcm9tUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmNhcmV0UmFuZ2VGcm9tUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OnJlY2FsY1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVMYXlvdXQp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldFZpc3VhbGx5T3JkZXJlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1wbGljaXRDbG9zZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6cHJlcGFyZU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnN0eWxlU2VsZWN0b3JDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpy
ZWNhbGNTdHlsZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRJblBh
Z2VDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZG9jdW1lbnRXaWxsQmVjb21l
SW5hY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRvY3VtZW50RGlkQmVjb21l
QWN0aXZlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6Y29weU1hcmtlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpyZW1vdmVNYXJrZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6cmVwYWludE1h
cmtlcnMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpzaGlm
dE1hcmtlcnMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpz
ZXRNYXJrZXJzQWN0aXZlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpzY3JvbGxJbnRvVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50OjpzY3JvbGxJbnRvVmlld0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OnNjcm9sbEJ5VW5pdHMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Ym91bmRzSW5XaW5k
b3dTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRCb3VuZGluZ0NsaWVudFJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2NyZWVuUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50Ojpwc2V1ZG9TdHlsZUNhY2hlSXNJbnZhbGlkKToKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OnJlY2FsY1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OnVwZGF0ZUZvY3VzQXBwZWFyYW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojppbm5l
clRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6d2Via2l0R2V0QW5pbWF0aW9ucyk6
CisgICAgICAgICogZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1vdXNlUmVsYXRlZEV2ZW50Ojpjb21wdXRlUmVsYXRpdmVQb3NpdGlvbik6CisgICAgICAgICog
ZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6fk5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6cmVuZGVyZXJJc0VkaXRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGU6OmdldFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNGb2N1c2FibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRl
dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzdHlsZUZvclJlbmRlcmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OmNhblN0YXJ0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OmlzQmxvY2tGbG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzQmxvY2tGbG93
T3JCbG9ja1RhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmNvbnZlcnRUb1BhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Y29udmVydEZyb21QYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OnRyYXZlcnNlVHJlZUFuZE1hcmspOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGVmYXVs
dEV2ZW50SGFuZGxlcik6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6Omhhc1JlbmRlcmVyKToKKyAgICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6Om5leHRSZW5kZXJl
cik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6cHJldmlvdXNSZW5k
ZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6cGFyZW50UmVu
ZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmVyRmFjdG9yeTo6Y3JlYXRlUmVu
ZGVyZXJBbmRTdHlsZSk6CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBvc2l0aW9uOjp1bmNoZWNrZWRQcmV2aW91c09mZnNldCk6CisgICAgICAgIChXZWJD
b3JlOjpQb3NpdGlvbjo6dW5jaGVja2VkUHJldmlvdXNPZmZzZXRGb3JCYWNrd2FyZERlbGV0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjp1bmNoZWNrZWROZXh0T2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OmVuZHNPZk5vZGVBcmVWaXN1YWxseURpc3RpbmN0UG9zaXRpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpub2RlSXNVc2VyU2VsZWN0Tm9uZSk6CisgICAg
ICAgICogZG9tL1JhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpnZXRCb3JkZXJB
bmRUZXh0UXVhZHMpOgorICAgICAgICAqIGRvbS9TZWxlY3RFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlbGVjdEVsZW1lbnQ6OnNlbGVjdEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZWxlY3RFbGVtZW50Ojp1cGRhdGVMaXN0Qm94U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdEVsZW1lbnQ6OnNjcm9sbFRvU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
bGVjdEVsZW1lbnQ6OnNldE9wdGlvbnNDaGFuZ2VkT25SZW5kZXJlcik6CisgICAgICAgIChXZWJD
b3JlOjpTZWxlY3RFbGVtZW50OjpzZXRTZWxlY3RlZEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdEVsZW1lbnQ6Om1lbnVMaXN0RGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3RFbGVtZW50OjpsaXN0Qm94RGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTZWxlY3RFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAg
ICAgKiBkb20vU3R5bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlRWxlbWVu
dDo6cmVtb3ZlZEZyb21Eb2N1bWVudCk6CisgICAgICAgICogZG9tL1RleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dDo6c3BsaXRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHQ6OnJl
Y2FsY1N0eWxlKToKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjphcHBseVJlbGF0aXZlRm9udFN0eWxl
Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjphcHBseUlubGlu
ZVN0eWxlVG9Ob2RlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6
OmFwcGx5SW5saW5lU3R5bGVUb1B1c2hEb3duKToKKyAgICAgICAgKiBlZGl0aW5nL0JyZWFrQmxv
Y2txdW90ZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtCbG9ja3F1b3RlQ29t
bWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpoYXNBUmVuZGVyZWREZXNjZW5kYW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjphcHBlbmRCbG9ja1BsYWNlaG9sZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjppbnNlcnRCbG9ja1BsYWNl
aG9sZGVyKToKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlR2VuZXJhbERl
bGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpmaXh1cFdo
aXRlc3BhY2UpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6c2V0Q29tcG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpz
dHlsZUZvclNlbGVjdGlvblN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRGaXJzdE1hcmth
YmxlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhcmV0QmFzZTo6dXBkYXRlQ2FyZXRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNh
cmV0QmFzZTo6cGFpbnRDYXJldCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6
Y29udGFpbnMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmZvY3VzZWRPckFj
dGl2ZVN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6cmV2
ZWFsU2VsZWN0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjb252ZXJ0SFRNTFRleHRUb0ludGVyY2hhbmdlRm9ybWF0KToKKyAg
ICAgICAgKiBlZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkluZGVudE91dGRlbnRDb21tYW5kOjpvdXRkZW50UGFyYWdyYXBoKToKKyAgICAgICAgKiBl
ZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
ZXJ0TGluZUJyZWFrQ29tbWFuZDo6c2hvdWxkVXNlQnJlYWtFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRp
bmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAgKiBl
ZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
cGxhY2VtZW50RnJhZ21lbnQ6OlJlcGxhY2VtZW50RnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVVucmVuZGVyZWRUZXh0Tm9kZXNBdEVu
ZHMpOgorICAgICAgICAoV2ViQ29yZTo6aXNJbmxpbmVOb2RlV2l0aFN0eWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAgKiBl
ZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrZXI6
OmlzQ2hlY2thYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2sp
OgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRJdGVyYXRvcjo6YWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRFbWl0TmV3
bGluZUFmdGVyTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjptYXhPZmZzZXRJbmNsdWRpbmdDb2xs
YXBzZWRTcGFjZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpzaG91bGRSZXBy
ZXNlbnROb2RlT2Zmc2V0WmVybyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnNo
b3VsZEVtaXRTcGFjZUJlZm9yZUFuZEFmdGVyTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
SXRlcmF0b3I6OmhhbmRsZU5vblRleHROb2RlKToKKyAgICAgICAgKiBlZGl0aW5nL1R5cGluZ0Nv
bW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6bWFrZUVkaXRhYmxl
Um9vdEVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxl
dGVLZXlQcmVzc2VkKToKKyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmlzRWRpdGFibGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjppc1Jp
Y2hseUVkaXRhYmxlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZWRpdGFibGVSb290Rm9y
UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6aXNCbG9jayk6CisgICAgICAgIChXZWJDb3Jl
Ojppc0ZpcnN0UG9zaXRpb25BZnRlclRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzTGFzdFBv
c2l0aW9uQmVmb3JlVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNMaXN0SXRlbSk6CisgICAg
ICAgIChXZWJDb3JlOjppc0VtcHR5VGFibGVDZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OmNhcmV0
TWF4T2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OmxpbmVCcmVha0V4aXN0c0F0UG9zaXRpb24p
OgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
ZE1hcmt1cEFjY3VtdWxhdG9yOjpzZXJpYWxpemVOb2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpo
aWdoZXN0QW5jZXN0b3JUb1dyYXBNYXJrdXApOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFy
a3VwKToKKyAgICAgICAgKiBlZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cHJldmlvdXNCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0Qm91bmRhcnkp
OgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRQb3NpdGlvbkZvckxpbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6ZW5kUG9zaXRpb25Gb3JMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmVuY2xvc2luZ05v
ZGVXaXRoTm9uSW5saW5lUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6bmV4dExpbmVQb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpsb2dpY2FsU3RhcnRQb3NpdGlvbkZvckxpbmUpOgor
ICAgICAgICAoV2ViQ29yZTo6bG9naWNhbEVuZFBvc2l0aW9uRm9yTGluZSk6CisgICAgICAgICog
aHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6
OmhhbmRsZURPTUFjdGl2YXRlRXZlbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEFwcGxldEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQ6OmZpbmlzaFBhcnNp
bmdDaGlsZHJlbik6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6cmVzZXQpOgorICAgICAgICAqIGh0bWwv
SFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmFkanVzdERp
cmVjdGlvbmFsaXR5SWZOZWVkZWRBZnRlckNoaWxkQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRWxlbWVudDo6Y2FsY3VsYXRlQW5kQWRqdXN0RGlyZWN0aW9uYWxpdHkp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmFkanVzdERpcmVjdGlvbmFsaXR5SWZO
ZWVkZWRBZnRlckNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1MRW1iZWRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRXaWRnZXRSZW5kZXJlcik6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRW1iZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRW1iZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAg
ICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEZvcm1Db250cm9sRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6c2hvdWxkQXV0b2ZvY3VzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVGcm9tRWxlbWVu
dENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJl
Y2FsY1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6Omlz
Rm9jdXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnVw
ZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9y
bUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpwbGFjZWhvbGRlclNob3VsZEJl
VmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6
dXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50OjpzZWxlY3Rpb25TdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2VsZWN0aW9uRW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZWxlY3Rpb24pOgorICAgICAgICAqIGh0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVu
dDo6c3VibWl0SW1wbGljaXRseSk6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmli
dXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjppbnNlcnRlZEludG9Eb2N1bWVudCk6Cisg
ICAgICAgICogaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50OjpyZW5kZXJQYXJ0KToKKyAgICAgICAgKiBodG1sL0hU
TUxGcmFtZVNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lU2V0RWxl
bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVT
ZXRFbGVtZW50OjpyZWNhbGNTdHlsZSk6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmF0dGFjaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojp3aWR0aCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpoZWlnaHQpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVD
aGVja2VkUmFkaW9CdXR0b25zKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6
Omxhc3RDaGFuZ2VXYXNVc2VyRWRpdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRF
bGVtZW50OjpzZXRDaGVja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6
OnNldEluZGV0ZXJtaW5hdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6
c2V0U3VnZ2VzdGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6
YWRkU2VhcmNoUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6Om9u
U2VhcmNoKToKKyAgICAgICAgKiBodG1sL0hUTUxMSUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTExJRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTExJRWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnJlbW92ZWRGcm9t
RG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNYXJxdWVlRWxlbWVudDo6cmVuZGVyTWFycXVlZSk6CisgICAgICAg
ICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpy
ZWNhbGNTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVz
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6d2FpdEZvclNvdXJj
ZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpub25lU3VwcG9y
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFJlYWR5U3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cHJvZ3Jlc3NFdmVudFRpbWVy
RmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJS
ZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVy
U2l6ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJSZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRW5naW5lVXBkYXRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNoYXJhY3RlcmlzdGljQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5U3RhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c3RvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpyZXN1bWUpOgorICAgICAgICAqIGh0bWwvSFRNTE5vU2NyaXB0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTm9TY3JpcHRFbGVtZW50OjphdHRh
Y2gpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE5vU2NyaXB0RWxlbWVudDo6cmVjYWxjU3R5bGUp
OgorICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE9iamVjdEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxPYmplY3RFbGVtZW50Ojp1cGRhdGVXaWRnZXQpOgorICAgICAgICAqIGh0bWwv
SFRNTE9wdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1l
bnQ6OnNldFJlbmRlclN0eWxlKToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cmVuZGVy
RW1iZWRkZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVu
dDo6cmVjYWxjU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVu
dDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRl
dGFjaCk6CisgICAgICAgICogaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxQcm9ncmVzc0VsZW1lbnQ6OmRpZEVsZW1lbnRTdGF0ZUNoYW5nZSk6Cisg
ICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MU2VsZWN0RWxlbWVudDo6aXNLZXlib2FyZEZvY3VzYWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU2VsZWN0RWxlbWVudDo6aXNNb3VzZUZvY3VzYWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU2VsZWN0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hU
TUxTdW1tYXJ5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU3VtbWFyeUVsZW1l
bnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlQ2VsbEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlQ29sRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp1cGRhdGVGb2N1c0FwcGVhcmFu
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjpoYW5kbGVC
ZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFF
bGVtZW50Ojp1cGRhdGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVt
ZW50OjpsYXN0Q2hhbmdlV2FzVXNlckVkaXQpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjphdHRhY2gpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c2V0RGlzcGxheU1vZGUpOgor
ICAgICAgICAqIGh0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VJbnB1dFR5cGU6OnNyY0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIGh0bWwvTnVtYmVy
SW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6d2lsbEJs
dXIpOgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjpoYXNVbmFjY2VwdGFibGVW
YWx1ZSk6CisgICAgICAgICogaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQbHVnaW5Eb2N1bWVudDo6cGx1Z2luV2lkZ2V0KToKKyAgICAgICAgKiBodG1sL1RleHRG
aWVsZElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6
OmZvcndhcmRFdmVudCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sSW5wdXRFbGVtZW50OjpzZXRE
aXNwbGF5VHlwZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Omhhc1ZlcnRpY2FsQXBwZWFyYW5jZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTbGlkZXJUaHVtYkVsZW1lbnQ6OnNldFBvc2l0aW9uRnJvbVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNsaWRlclRodW1iRWxlbWVudDo6c2V0UG9zaXRpb25Gcm9tUG9pbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVtZW50OjpzdG9wRHJhZ2dpbmcpOgorICAg
ICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6ZGVmYXVs
dEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpTcGluQnV0dG9uRWxlbWVudDo6ZGVm
YXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0
dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnB1
dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6c2V0UmVjb2duaXRpb25SZXN1bHQpOgorICAgICAg
ICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRl
cjo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
cHJlbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2hlY2tG
b3JQZW5kaW5nUHJlbG9hZHMpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZTo6c2V0VG9vbFRpcCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2Nyb2xsTm9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpkaXNwYXRjaFNlbGVjdFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6
c2VsZWN0Q2xvc2VzdFdvcmRGcm9tTW91c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkT3JMaW5rRnJvbU1vdXNlRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnRUcmlwbGVDbGlj
ayk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVu
dFNpbmdsZUNsaWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbk1vdXNlRG93blN0YXJ0U2VsZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEcmFnZ2VkRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6c2VsZWN0aW9uRXh0ZW50UmVzcGVjdGluZ0VkaXRpbmdC
b3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVs
ZWFzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3Vs
dEF0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVBy
ZXNzRXZlbnQpOgorICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNsZWFyU2VsZWN0aW9uSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6dXBk
YXRlRm9jdXNDYW5kaWRhdGVJZk5lZWRlZCk6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2VhcmNoRm9yTGFiZWxzQWJvdmVDZWxsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lOjpzZWFyY2hGb3JMYWJlbHNCZWZvcmVFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lOjpnZXREb2N1bWVudEJhY2tncm91bmRDb2xvcik6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZTo6c2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZTo6c2NhbGVQYWdlKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmNyZWF0ZVNjcm9sbGJhcik6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OmNhbGN1bGF0ZVNjcm9sbGJhck1vZGVzRm9yTGF5b3V0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6c2Nyb2xsVG9BbmNob3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
Ojp1cGRhdGVTY3JvbGxDb3JuZXIpOgorICAgICAgICAqIHBhZ2UvUHJpbnRDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlByaW50Q29udGV4dDo6Y29tcHV0ZVBhZ2VSZWN0cyk6CisgICAg
ICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OmNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemVJ
bnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OnNwb29sQWxsUGFnZXNX
aXRoQm91bmRhcmllcyk6CisgICAgICAgICogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb2N1c0NhbmRpZGF0ZTo6Rm9jdXNDYW5kaWRhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6bm9kZVJlY3RJbkFic29sdXRlQ29vcmRpbmF0ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6YXJlRWxlbWVudHNPblNhbWVMaW5lKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9B
bmltYXRpb25CYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjpoYXNSZW5k
ZXJlcik6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1wbGljaXRBbmltYXRpb246OnNlbmRUcmFuc2l0aW9uRXZlbnQp
OgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OktleWZyYW1lQW5pbWF0aW9uOjpzZW5kQW5pbWF0aW9uRXZlbnQpOgorICAg
ICAgICAqIHBhZ2UvbWFjL0ZyYW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNl
YXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVJbWFnZSk6
CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVJbWFnZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpI
aXRUZXN0UmVzdWx0OjptZWRpYUVsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lQm94OjpzaG93Qm94KToKKyAgICAgICAg
KiByZW5kZXJpbmcvSW5saW5lQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6Omhh
c1JlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEl0ZW06OnVwZGF0ZUxpc3RNYXJrZXJOdW1iZXJzKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OmRvY3VtZW50QmVpbmdEZXN0cm95ZWQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRTZWxlY3Rpb25S
YW5nZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6Om5vZGVB
dFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRGcmFnbWVudDo6c2V0VGV4dEludGVybmFsKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmNyZWF0ZVRpbGVJbWFnZSk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1Jvb3RJbmxpbmVCb3g6OmxheW91dENoYXJhY3RlcnNJblRleHRCb3hlcyk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdSb290SW5saW5lQm94OjpsYXlvdXRDaGlsZEJveGVzKToK
KyAgICAgICAgKiBzdmcvU1ZHQUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQUVs
ZW1lbnQ6OmlzRm9jdXNhYmxlKToKKyAgICAgICAgKiBzdmcvU1ZHRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnQ6OnVwZGF0ZVBhbik6CisgICAgICAgICogc3ZnL1NW
R0ZFSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50
OjpyZXF1ZXN0SW1hZ2VSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxl
bWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHN2Zy9TVkdMZW5ndGguY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoOjpjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzVG9FTVMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoOjpjb252ZXJ0VmFsdWVGcm9tRU1TVG9Vc2Vy
VW5pdHMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoOjpjb252ZXJ0VmFsdWVGcm9tVXNl
clVuaXRzVG9FWFMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoOjpjb252ZXJ0VmFsdWVG
cm9tRVhTVG9Vc2VyVW5pdHMpOgorICAgICAgICAqIHN2Zy9TVkdMb2NhdGFibGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHTG9jYXRhYmxlOjpnZXRCQm94KToKKyAgICAgICAgKiBzdmcvU1ZH
U1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHU3RvcEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHU3RvcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHU3RvcEVsZW1lbnQ6OnN0b3BDb2xvckluY2x1ZGluZ09wYWNpdHkpOgor
ICAgICAgICAqIHN2Zy9TVkdUUmVmRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
UmVmRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1VzZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6YXR0YWNoKToKKwog
MjAxMS0wNi0xNiAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgSGFqaW1lIE1vcml0YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuY3BwCmluZGV4IGE0MWYy
Mjg5ZTQ0YTE4ZDdlNTE5ZTQ2NGUwOWQ1Y2E0ZjM0Yjk5ODYuLjdhN2ViOTU1MjRkM2U3NWE5YzZj
MmMxMzUxMzcxMjliODZhNWVhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcApAQCAtNjAsNyArNjAs
NyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rOjpwYXJl
bnRPYmplY3QoKSBjb25zdAogICAgIGlmIChtX3BhcmVudCkKICAgICAgICAgcmV0dXJuIG1fcGFy
ZW50OwogICAgIAotICAgIGlmICghbV9tYXBFbGVtZW50LmdldCgpIHx8ICFtX21hcEVsZW1lbnQt
PnJlbmRlcmVyKCkpCisgICAgaWYgKCFtX21hcEVsZW1lbnQuZ2V0KCkgfHwgIW1fbWFwRWxlbWVu
dC0+aGFzUmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAgcmV0dXJuIG1f
bWFwRWxlbWVudC0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShtX21h
cEVsZW1lbnQtPnJlbmRlcmVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggNmIzNzBiY2YwNzBjYWIyYjhmNjZl
ZWUyZmNjMGFhYzcxYjgzNDFhNS4uNGY1YmFmZmU1YzdmMzllMWU3MjM0MzkxM2RmZmZkZDE1YThi
YzY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCog
QWNjZXNzaWJpbGl0eU9iamVjdDo6Zmlyc3RBY2Nlc3NpYmxlT2JqZWN0RnJvbU5vZGUoY29uc3Qg
Tm8KICAgICB3aGlsZSAoYWNjZXNzaWJsZU9iamVjdCAmJiBhY2Nlc3NpYmxlT2JqZWN0LT5hY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKCkpIHsKICAgICAgICAgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4
dE5vZGUoKTsKIAotICAgICAgICB3aGlsZSAobm9kZSAmJiAhbm9kZS0+cmVuZGVyZXIoKSkKKyAg
ICAgICAgd2hpbGUgKG5vZGUgJiYgIW5vZGUtPmhhc1JlbmRlcmVyKCkpCiAgICAgICAgICAgICBu
b2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0U2libGluZygpOwogCiAgICAgICAgIGlmICghbm9kZSkK
QEAgLTM5MCw3ICszOTAsNyBAQCBzdGF0aWMgYm9vbCByZXBsYWNlZE5vZGVOZWVkc0NoYXJhY3Rl
cihOb2RlKiByZXBsYWNlZE5vZGUpCiB7CiAgICAgLy8gd2Ugc2hvdWxkIGFsd2F5cyBiZSBnaXZl
biBhIHJlbmRlcmVkIG5vZGUgYW5kIGEgcmVwbGFjZWQgbm9kZSwgYnV0IGJlIHNhZmUKICAgICAv
LyByZXBsYWNlZCBub2RlcyBhcmUgZWl0aGVyIGF0dGFjaG1lbnRzICh3aWRnZXRzKSBvciBpbWFn
ZXMKLSAgICBpZiAoIXJlcGxhY2VkTm9kZSB8fCAhcmVwbGFjZWROb2RlLT5yZW5kZXJlcigpIHx8
ICFyZXBsYWNlZE5vZGUtPnJlbmRlcmVyKCktPmlzUmVwbGFjZWQoKSB8fCByZXBsYWNlZE5vZGUt
PmlzVGV4dE5vZGUoKSkKKyAgICBpZiAoIXJlcGxhY2VkTm9kZSB8fCAhcmVwbGFjZWROb2RlLT5o
YXNSZW5kZXJlcigpIHx8ICFyZXBsYWNlZE5vZGUtPnJlbmRlcmVyKCktPmlzUmVwbGFjZWQoKSB8
fCByZXBsYWNlZE5vZGUtPmlzVGV4dE5vZGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgLy8gY3JlYXRlIGFuIEFYIG9iamVjdCwgYnV0IHNraXAgaXQgaWYgaXQgaXMgbm90IHN1cHBv
c2VkIHRvIGJlIHNlZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggZTAwMzE1M2Q2NWY2YzFiYTJlYWI3YjBlYzdjYzFmY2Rj
MzU2MTVmNC4uZmM3Y2M4ZWI4MzFjZTYxNTZlMjVmY2UyNGIzMDg5NTNjYzEyMGU1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgK
QEAgLTM0NSw2ICszNDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2Vzc2li
bGVOYW1lKFN0cmluZyYpIHsgfQogICAgIAogICAgIHZpcnR1YWwgTm9kZSogbm9kZSgpIGNvbnN0
IHsgcmV0dXJuIDA7IH0KKyAgICBpbmxpbmUgYm9vbCBoYXNSZW5kZXJlcigpIGNvbnN0IHsgcmV0
dXJuIHJlbmRlcmVyKCk7IH0KICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSBj
b25zdCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9y
ZWQoKSBjb25zdCAgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCBh
ZjRkNDM3NWQ5YmZlNjljYTQwOTEzMmI2NDczMTU2ZDM4YmVhZWFlLi4xZWQzMzk0NDFhYTE4ZDhi
MjM1OTU2ODVkNGFjYmJmNThhYTE5ZTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTkyNiw3
ICs5MjYsNyBAQCBFbGVtZW50KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptZW51RWxlbWVu
dEZvck1lbnVCdXR0b24oKSBjb25zdAogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6bWVudUZvck1lbnVCdXR0b24oKSBjb25zdAogewogICAgIEVsZW1lbnQq
IG1lbnUgPSBtZW51RWxlbWVudEZvck1lbnVCdXR0b24oKTsKLSAgICBpZiAobWVudSAmJiBtZW51
LT5yZW5kZXJlcigpKQorICAgIGlmIChtZW51ICYmIG1lbnUtPmhhc1JlbmRlcmVyKCkpCiAgICAg
ICAgIHJldHVybiBheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKG1lbnUtPnJlbmRlcmVyKCkp
OwogICAgIHJldHVybiAwOwogfQpAQCAtOTQzLDcgKzk0Myw3IEBAIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om1lbnVCdXR0b25Gb3JNZW51KCkgY29uc3QK
IHsKICAgICBFbGVtZW50KiBtZW51SXRlbSA9IG1lbnVJdGVtRWxlbWVudEZvck1lbnUoKTsKIAot
ICAgIGlmIChtZW51SXRlbSAmJiBtZW51SXRlbS0+cmVuZGVyZXIoKSkgeworICAgIGlmIChtZW51
SXRlbSAmJiBtZW51SXRlbS0+aGFzUmVuZGVyZXIoKSkgewogICAgICAgICAvLyBBUklBIGp1c3Qg
aGFzIGdlbmVyaWMgbWVudSBpdGVtcy4gIEFwcEtpdCBuZWVkcyB0byBrbm93IGlmIHRoaXMgaXMg
YSB0b3AgbGV2ZWwgaXRlbXMgbGlrZSBNZW51QmFyQnV0dG9uIG9yIE1lbnVCYXJJdGVtCiAgICAg
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1lbnVJdGVtQVggPSBheE9iamVjdENhY2hlKCktPmdl
dE9yQ3JlYXRlKG1lbnVJdGVtLT5yZW5kZXJlcigpKTsKICAgICAgICAgaWYgKG1lbnVJdGVtQVgt
PmlzTWVudUJ1dHRvbigpKQpAQCAtMTQ2Niw3ICsxNDY2LDcgQEAgSW50UmVjdCBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjpjaGVja2JveE9yUmFkaW9SZWN0KCkgY29uc3QKICAgICAgICAgcmV0
dXJuIEludFJlY3QoKTsKICAgICAKICAgICBIVE1MTGFiZWxFbGVtZW50KiBsYWJlbCA9IGxhYmVs
Rm9yRWxlbWVudChzdGF0aWNfY2FzdDxFbGVtZW50Kj4obV9yZW5kZXJlci0+bm9kZSgpKSk7Ci0g
ICAgaWYgKCFsYWJlbCB8fCAhbGFiZWwtPnJlbmRlcmVyKCkpCisgICAgaWYgKCFsYWJlbCB8fCAh
bGFiZWwtPmhhc1JlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBib3VuZGluZ0JveFJlY3QoKTsK
ICAgICAKICAgICBJbnRSZWN0IGxhYmVsUmVjdCA9IGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVh
dGUobGFiZWwtPnJlbmRlcmVyKCkpLT5lbGVtZW50UmVjdCgpOwpAQCAtMTY4OCw3ICsxNjg4LDcg
QEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dGl0bGVV
SUVsZW1lbnQoKSBjb25zdAogICAgIAogICAgIE5vZGUqIGVsZW1lbnQgPSBtX3JlbmRlcmVyLT5u
b2RlKCk7CiAgICAgSFRNTExhYmVsRWxlbWVudCogbGFiZWwgPSBsYWJlbEZvckVsZW1lbnQoc3Rh
dGljX2Nhc3Q8RWxlbWVudCo+KGVsZW1lbnQpKTsKLSAgICBpZiAobGFiZWwgJiYgbGFiZWwtPnJl
bmRlcmVyKCkpCisgICAgaWYgKGxhYmVsICYmIGxhYmVsLT5oYXNSZW5kZXJlcigpKQogICAgICAg
ICByZXR1cm4gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShsYWJlbC0+cmVuZGVyZXIoKSk7
CiAKICAgICByZXR1cm4gMDsgICAKQEAgLTI1ODksNyArMjU4OSw3IEBAIFZpc2libGVQb3NpdGlv
biBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb25z
dCBJbnRQb2luCiAgICAgCiAgICAgLy8gY29udmVydCBhYnNvbHV0ZSBwb2ludCB0byB2aWV3IGNv
b3JkaW5hdGVzCiAgICAgRG9jdW1lbnQqIHRvcERvYyA9IHRvcERvY3VtZW50KCk7Ci0gICAgaWYg
KCF0b3BEb2MgfHwgIXRvcERvYy0+cmVuZGVyZXIoKSB8fCAhdG9wRG9jLT5yZW5kZXJlcigpLT52
aWV3KCkpCisgICAgaWYgKCF0b3BEb2MgfHwgIXRvcERvYy0+aGFzUmVuZGVyZXIoKSB8fCAhdG9w
RG9jLT5yZW5kZXJlcigpLT52aWV3KCkpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24o
KTsKICAgICAKICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHRvcERvYy0+cmVuZGVyZXIoKS0+
dmlldygpLT5mcmFtZVZpZXcoKTsKQEAgLTM2MzIsNyArMzYzMiw3IEBAIHZvaWQgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6c2V0QWNjZXNzaWJsZU5hbWUoU3RyaW5nJiBuYW1lKQogICAgIAog
c3RhdGljIGJvb2wgaXNMaW5rYWJsZShjb25zdCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0JiBv
YmplY3QpCiB7Ci0gICAgaWYgKCFvYmplY3QucmVuZGVyZXIoKSkKKyAgICBpZiAoIW9iamVjdC5o
YXNSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBTZWUgaHR0cHM6
Ly93aWtpLm1vemlsbGEub3JnL0FjY2Vzc2liaWxpdHkvQVQtV2luZG93cy1BUEkgZm9yIHRoZSBl
bGVtZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuaAppbmRleCBkMTM2YjhhZDM0YTQxNTUzOWM5MTliMmMxMmRj
NGI5OGEwMWY2Y2JjLi41NmJlNTBmNWQ3MDczZjIwNjkwOGQ2MzY3Mzc5Y2ZkNTgxNDQzZDU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuaApAQCAtMTU5LDcgKzE1OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IEludFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgp
IGNvbnN0OwogICAgIHZpcnR1YWwgSW50UG9pbnQgY2xpY2tQb2ludCgpIGNvbnN0OwotICAgIAor
CiAgICAgdm9pZCBzZXRSZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSB7IG1fcmVuZGVy
ZXIgPSByZW5kZXJlcjsgfQogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiByZW5kZXJlcigpIGNv
bnN0IHsgcmV0dXJuIG1fcmVuZGVyZXI7IH0KICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVu
ZGVyQm94TW9kZWxPYmplY3QoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKaW5kZXggM2VlMDQ5YmQ2
NTc5YmI1MmMwM2FhMDU2ZTkwMDhlZTQ4ZDhjYTNhNy4uNTE1ZWY2NThhMzNhNmJjNmJjYTg0YTk0
ZDFhMzFjOGE0ZmQ5MzQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6d2ViQXJlYU9iamVj
dCgpIGNvbnN0CiAgICAgICAgIHJldHVybiAwOwogICAgIAogICAgIERvY3VtZW50KiBkb2MgPSBz
dGF0aWNfY2FzdDxGcmFtZVZpZXcqPihtX3Njcm9sbFZpZXcuZ2V0KCkpLT5mcmFtZSgpLT5kb2N1
bWVudCgpOwotICAgIGlmICghZG9jIHx8ICFkb2MtPnJlbmRlcmVyKCkpCisgICAgaWYgKCFkb2Mg
fHwgIWRvYy0+aGFzUmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1cm4g
YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShkb2MtPnJlbmRlcmVyKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlci5tbQppbmRleCA4YmNmY2IzNjNkYjU2OTg3MDQxMzViNDlmMGQ4MzM0MDk4
Y2RmNmY0Li5mM2QxMWVjOWRjOTJiMGZhMWMwNTZiZjE5ZGQ5NmFjMzE1ZTczMWZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlci5tbQpAQCAtNTU0LDcgKzU1NCw3IEBAIHN0YXRpYyB2b2lkIEFY
QXR0cmlidXRlU3RyaW5nU2V0RWxlbWVudChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRy
U3RyaW5nLCBOCiBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KE5TTXV0
YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsIE5vZGUqIG5vZGUsIGNvbnN0IFVDaGFy
KiBjaGFycywgaW50IGxlbmd0aCkKIHsKICAgICAvLyBza2lwIGludmlzaWJsZSB0ZXh0Ci0gICAg
aWYgKCFub2RlLT5yZW5kZXJlcigpKQorICAgIGlmICghbm9kZS0+aGFzUmVuZGVyZXIoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gZWFzaWVyIHRvIGNhbGN1bGF0ZSB0aGUgcmFuZ2UgYmVm
b3JlIGFwcGVuZGluZyB0aGUgc3RyaW5nCkBAIC01ODYsNyArNTg2LDcgQEAgc3RhdGljIE5TU3Ry
aW5nKiBuc1N0cmluZ0ZvclJlcGxhY2VkTm9kZShOb2RlKiByZXBsYWNlZE5vZGUpCiB7CiAgICAg
Ly8gd2Ugc2hvdWxkIGFsd2F5cyBiZSBnaXZlbiBhIHJlbmRlcmVkIG5vZGUgYW5kIGEgcmVwbGFj
ZWQgbm9kZSwgYnV0IGJlIHNhZmUKICAgICAvLyByZXBsYWNlZCBub2RlcyBhcmUgZWl0aGVyIGF0
dGFjaG1lbnRzICh3aWRnZXRzKSBvciBpbWFnZXMKLSAgICBpZiAoIXJlcGxhY2VkTm9kZSB8fCAh
cmVwbGFjZWROb2RlLT5yZW5kZXJlcigpIHx8ICFyZXBsYWNlZE5vZGUtPnJlbmRlcmVyKCktPmlz
UmVwbGFjZWQoKSB8fCByZXBsYWNlZE5vZGUtPmlzVGV4dE5vZGUoKSkgeworICAgIGlmICghcmVw
bGFjZWROb2RlIHx8ICFyZXBsYWNlZE5vZGUtPmhhc1JlbmRlcmVyKCkgfHwgIXJlcGxhY2VkTm9k
ZS0+cmVuZGVyZXIoKS0+aXNSZXBsYWNlZCgpIHx8IHJlcGxhY2VkTm9kZS0+aXNUZXh0Tm9kZSgp
KSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbmlsOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KaW5kZXggMDA1NDBhY2FhNjgzYjQz
YzRjYWIzNmFjZTU5Y2VjODkwNzFiZjdmMC4uMDViMmM2NDQ5OWRmYmE1OWE3N2ZkMzAzN2Q0ZjBi
NmNiZDUxNzI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00u
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KQEAgLTM4Nyw3ICsz
ODcsNyBAQCBpZCA8RE9NRXZlbnRUYXJnZXQ+IGtpdChXZWJDb3JlOjpFdmVudFRhcmdldCogZXZl
bnRUYXJnZXQpCiB7CiAgICAgLy8gRklYTUU6IENvdWxkIHdlIG1vdmUgdGhpcyBmdW5jdGlvbiB0
byBXZWJDb3JlOjpOb2RlIGFuZCBhdXRvZ2VuZXJhdGU/CiAgICAgY29yZShzZWxmKS0+ZG9jdW1l
bnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7Ci0gICAgaWYgKCFj
b3JlKHNlbGYpLT5yZW5kZXJlcigpKQorICAgIGlmICghY29yZShzZWxmKS0+aGFzUmVuZGVyZXIo
KSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6
OmNyZWF0ZShjb3JlKHNlbGYpLT5kb2N1bWVudCgpKTsKICAgICBXZWJDb3JlOjpFeGNlcHRpb25D
b2RlIGVjID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvck9iakMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JPYmpDLnBtCmluZGV4IGEwMzJhNzE1OTgzOGJiZTQwOGQwMmIwYmJkMDI4YzBl
YTdjOTljNzAuLjc5MTVhZjA3MDBiZGIyNzFiMjM1ZGRmMTBhZjUwYWY3MDQ4NWM0NzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMu
cG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2Jq
Qy5wbQpAQCAtMTIzNiw3ICsxMjM2LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAgICAgICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50VGFpbCA9ICJcQFwic3JjXCJdIjsK
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB1bmxlc3MgKCRpbnRl
cmZhY2VOYW1lIGVxICJIVE1MSW1hZ2VFbGVtZW50IikgewotICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAY3VzdG9tR2V0dGVyQ29udGVudCwgIiAgICBpZiAoIUlNUEwtPnJlbmRlcmVyKCkg
fHwgIUlNUEwtPnJlbmRlcmVyKCktPmlzSW1hZ2UoKSlcbiIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAY3VzdG9tR2V0dGVyQ29udGVudCwgIiAgICBpZiAoIUlNUEwtPmhhc1JlbmRl
cmVyKCkgfHwgIUlNUEwtPnJlbmRlcmVyKCktPmlzSW1hZ2UoKSlcbiIpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAY3VzdG9tR2V0dGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIG5p
bDtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siUmVuZGVyT2Jq
ZWN0LmgifSA9IDE7CiAgICAgICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRTZWxlY3Rvci5jcHAKaW5kZXggMWJmNGZjYTM1MzYzNjZmNjQ2Njk2YjBmYjI1ZTJmNTg2ZDgx
N2IyMS4uMDk5YWRiNWYyMTA0NjE1ZGY2NDY2ZDBjYmQ2MDM2Y2U4ZGU0Nzk1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIENT
U0ZvbnRTZWxlY3Rvcjo6ZGlzcGF0Y2hJbnZhbGlkYXRpb25DYWxsYmFja3MoKQogICAgICAgICBj
bGllbnRzW2ldLT5mb250c05lZWRVcGRhdGUodGhpcyk7CiAKICAgICAvLyBGSVhNRTogTWFrZSBE
b2N1bWVudCBhIEZvbnRTZWxlY3RvckNsaWVudCBzbyB0aGF0IGl0IGNhbiBzaW1wbHkgcmVnaXN0
ZXIgZm9yIGludmFsaWRhdGlvbiBjYWxsYmFja3MuCi0gICAgaWYgKCFtX2RvY3VtZW50IHx8IG1f
ZG9jdW1lbnQtPmluUGFnZUNhY2hlKCkgfHwgIW1fZG9jdW1lbnQtPnJlbmRlcmVyKCkpCisgICAg
aWYgKCFtX2RvY3VtZW50IHx8IG1fZG9jdW1lbnQtPmluUGFnZUNhY2hlKCkgfHwgIW1fZG9jdW1l
bnQtPmhhc1JlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2RvY3VtZW50LT5zY2hl
ZHVsZUZvcmNlZFN0eWxlUmVjYWxjKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAKaW5kZXggOWE1YzBjZDQ2YmMwYTgyMjMyM2NkMGI2NjllNWMxNjYzY2EzMjhmYy4u
MmYyZjc5Mzg2NTcwMzA2MmY5NWRmNzc1OWFiYTcwOWVhMGNmZDllMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcApAQCAtNTE1LDcgKzUxNSw3IEBAIENTU1N0eWxlU2Vs
ZWN0b3I6OkNTU1N0eWxlU2VsZWN0b3IoRG9jdW1lbnQqIGRvY3VtZW50LCBTdHlsZVNoZWV0TGlz
dCogc3R5bGVTaGVlCiAgICAgaWYgKG1fZmVhdHVyZXMuc2libGluZ1J1bGVzKQogICAgICAgICBt
X2ZlYXR1cmVzLnNpYmxpbmdSdWxlcy0+c2hyaW5rVG9GaXQoKTsKIAotICAgIGlmIChkb2N1bWVu
dC0+cmVuZGVyZXIoKSAmJiBkb2N1bWVudC0+cmVuZGVyZXIoKS0+c3R5bGUoKSkKKyAgICBpZiAo
ZG9jdW1lbnQtPmhhc1JlbmRlcmVyKCkgJiYgZG9jdW1lbnQtPnJlbmRlcmVyKCktPnN0eWxlKCkp
CiAgICAgICAgIGRvY3VtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLT5mb250KCkudXBkYXRlKGZv
bnRTZWxlY3RvcigpKTsKIH0KIApAQCAtMTI5Nyw3ICsxMjk3LDcgQEAgUGFzc1JlZlB0cjxSZW5k
ZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqIGUsIFJl
bmRlclN0eWwKIHsKICAgICAvLyBPbmNlIGFuIGVsZW1lbnQgaGFzIGEgcmVuZGVyZXIsIHdlIGRv
bid0IHRyeSB0byBkZXN0cm95IGl0LCBzaW5jZSBvdGhlcndpc2UgdGhlIHJlbmRlcmVyCiAgICAg
Ly8gd2lsbCB2YW5pc2ggaWYgYSBzdHlsZSByZWNhbGMgaGFwcGVucyBkdXJpbmcgbG9hZGluZy4K
LSAgICBpZiAoYWxsb3dTaGFyaW5nICYmICFlLT5kb2N1bWVudCgpLT5oYXZlU3R5bGVzaGVldHNM
b2FkZWQoKSAmJiAhZS0+cmVuZGVyZXIoKSkgeworICAgIGlmIChhbGxvd1NoYXJpbmcgJiYgIWUt
PmRvY3VtZW50KCktPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpICYmICFlLT5oYXNSZW5kZXJlcigp
KSB7CiAgICAgICAgIGlmICghc19zdHlsZU5vdFlldEF2YWlsYWJsZSkgewogICAgICAgICAgICAg
c19zdHlsZU5vdFlldEF2YWlsYWJsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKS5yZWxlYXNlUmVm
KCk7CiAgICAgICAgICAgICBzX3N0eWxlTm90WWV0QXZhaWxhYmxlLT5yZWYoKTsKQEAgLTI4MTgs
NyArMjgxOCw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVj
a09uZVNlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lCiAgICAgICAgICAgICAgICAgICAg
IGVsZW1lbnRTdHlsZS0+c2V0QWZmZWN0ZWRCeURyYWdSdWxlcyh0cnVlKTsKICAgICAgICAgICAg
ICAgICBlbHNlIGlmIChlLT5yZW5kZXJTdHlsZSgpKQogICAgICAgICAgICAgICAgICAgICBlLT5y
ZW5kZXJTdHlsZSgpLT5zZXRBZmZlY3RlZEJ5RHJhZ1J1bGVzKHRydWUpOwotICAgICAgICAgICAg
ICAgIGlmIChlLT5yZW5kZXJlcigpICYmIGUtPnJlbmRlcmVyKCktPmlzRHJhZ2dpbmcoKSkKKyAg
ICAgICAgICAgICAgICBpZiAoZS0+aGFzUmVuZGVyZXIoKSAmJiBlLT5yZW5kZXJlcigpLT5pc0Ry
YWdnaW5nKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0NoYXJhY3RlckRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3Bw
CmluZGV4IDc0MDFjMjgwNWYyOTgwZjQ4MTMwYmEwMDc0NWU2NzIxMmFiMjg4ZmUuLjhmYTdkMTg2
ZTNiZWI5M2NmNmZmYjI4MWZkMjIxNTgxYzIyYTdmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFj
dGVyRGF0YS5jcHAKQEAgLTE4Miw5ICsxODIsOSBAQCB2b2lkIENoYXJhY3RlckRhdGE6OnNldERh
dGFBbmRVcGRhdGUoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBuZXdEYXRhLCB1bnNpZ25lZCBvZgog
CiB2b2lkIENoYXJhY3RlckRhdGE6OnVwZGF0ZVJlbmRlcmVyKHVuc2lnbmVkIG9mZnNldE9mUmVw
bGFjZWREYXRhLCB1bnNpZ25lZCBsZW5ndGhPZlJlcGxhY2VkRGF0YSkKIHsKLSAgICBpZiAoKCFy
ZW5kZXJlcigpIHx8ICFyZW5kZXJlcklzTmVlZGVkKE5vZGVSZW5kZXJpbmdDb250ZXh0KHRoaXMs
IHJlbmRlcmVyKCktPnN0eWxlKCkpKSkgJiYgYXR0YWNoZWQoKSkKKyAgICBpZiAoKCFoYXNSZW5k
ZXJlcigpIHx8ICFyZW5kZXJlcklzTmVlZGVkKE5vZGVSZW5kZXJpbmdDb250ZXh0KHRoaXMsIHJl
bmRlcmVyKCktPnN0eWxlKCkpKSkgJiYgYXR0YWNoZWQoKSkKICAgICAgICAgcmVhdHRhY2goKTsK
LSAgICBlbHNlIGlmIChyZW5kZXJlcigpKQorICAgIGVsc2UgaWYgKGhhc1JlbmRlcmVyKCkpCiAg
ICAgICAgIHRvUmVuZGVyVGV4dChyZW5kZXJlcigpKS0+c2V0VGV4dFdpdGhPZmZzZXQobV9kYXRh
LCBvZmZzZXRPZlJlcGxhY2VkRGF0YSwgbGVuZ3RoT2ZSZXBsYWNlZERhdGEpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggNmJhNWFjZTdmZTU3ZjIzMzhlNWNkM2U2
ZTFjNWEyOGY1ZGE2ODk5OC4uY2M4ODU0ZTU3ZGQzMDFhZGViZDAxOTE3ZTlmYWY3NGQxNWM1ZmQy
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtODUxLDcgKzg1MSw3IEBA
IHZvaWQgQ29udGFpbmVyTm9kZTo6Y2xvbmVDaGlsZE5vZGVzKENvbnRhaW5lck5vZGUgKmNsb25l
KQogCiBib29sIENvbnRhaW5lck5vZGU6OmdldFVwcGVyTGVmdENvcm5lcihGbG9hdFBvaW50JiBw
b2ludCkgY29uc3QKIHsKLSAgICBpZiAoIXJlbmRlcmVyKCkpCisgICAgaWYgKCFoYXNSZW5kZXJl
cigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgLy8gV2hhdCBpcyB0aGlzIGNvZGUgcmVh
bGx5IHRyeWluZyB0byBkbz8KICAgICBSZW5kZXJPYmplY3QgKm8gPSByZW5kZXJlcigpOwpAQCAt
OTE1LDcgKzkxNSw3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6Z2V0VXBwZXJMZWZ0Q29ybmVyKEZs
b2F0UG9pbnQmIHBvaW50KSBjb25zdAogLy8gRklYTUU6IFRoaXMgZG9lc24ndCB3b3JrIGNvcnJl
Y3RseSB3aXRoIHRyYW5zZm9ybXMuCiBib29sIENvbnRhaW5lck5vZGU6OmdldExvd2VyUmlnaHRD
b3JuZXIoRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0CiB7Ci0gICAgaWYgKCFyZW5kZXJlcigpKQor
ICAgIGlmICghaGFzUmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgUmVu
ZGVyT2JqZWN0KiBvID0gcmVuZGVyZXIoKTsKQEAgLTk5OSwxMSArOTk5LDExIEBAIHZvaWQgQ29u
dGFpbmVyTm9kZTo6c2V0QWN0aXZlKGJvb2wgZG93biwgYm9vbCBwYXVzZSkKIAogICAgIC8vIG5v
dGUgdGhhdCB3ZSBuZWVkIHRvIHJlY2FsYyB0aGUgc3R5bGUKICAgICAvLyBGSVhNRTogTW92ZSB0
byBFbGVtZW50Ci0gICAgaWYgKHJlbmRlcmVyKCkpIHsKKyAgICBpZiAoaGFzUmVuZGVyZXIoKSkg
ewogICAgICAgICBib29sIHJlYWN0c1RvUHJlc3MgPSByZW5kZXJlcigpLT5zdHlsZSgpLT5hZmZl
Y3RlZEJ5QWN0aXZlUnVsZXMoKTsKICAgICAgICAgaWYgKHJlYWN0c1RvUHJlc3MpCiAgICAgICAg
ICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7Ci0gICAgICAgIGlmIChyZW5kZXJlcigpICYmIHJl
bmRlcmVyKCktPnN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkgeworICAgICAgICBpZiAoaGFzUmVu
ZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5oYXNBcHBlYXJhbmNlKCkpIHsKICAgICAg
ICAgICAgIGlmIChyZW5kZXJlcigpLT50aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwg
UHJlc3NlZFN0YXRlKSkKICAgICAgICAgICAgICAgICByZWFjdHNUb1ByZXNzID0gdHJ1ZTsKICAg
ICAgICAgfQpAQCAtMTAxOSw3ICsxMDE5LDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpzZXRBY3Rp
dmUoYm9vbCBkb3duLCBib29sIHBhdXNlKQogICAgICAgICAgICAgLy8gRW5zdXJlIHRoZXJlIGFy
ZSBubyBwZW5kaW5nIGNoYW5nZXMKICAgICAgICAgICAgIERvY3VtZW50Ojp1cGRhdGVTdHlsZUZv
ckFsbERvY3VtZW50cygpOwogICAgICAgICAgICAgLy8gRG8gYW4gaW1tZWRpYXRlIHJlcGFpbnQu
Ci0gICAgICAgICAgICBpZiAocmVuZGVyZXIoKSkKKyAgICAgICAgICAgIGlmIChoYXNSZW5kZXJl
cigpKQogICAgICAgICAgICAgICAgIHJlbmRlcmVyKCktPnJlcGFpbnQodHJ1ZSk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIC8vIEZJWE1FOiBGaW5kIGEgc3Vic3RpdHV0ZSBmb3IgdXNsZWVw
IGZvciBXaW4zMi4KQEAgLTEwNDIsMTAgKzEwNDIsMTAgQEAgdm9pZCBDb250YWluZXJOb2RlOjpz
ZXRIb3ZlcmVkKGJvb2wgb3ZlcikKIAogICAgIC8vIG5vdGUgdGhhdCB3ZSBuZWVkIHRvIHJlY2Fs
YyB0aGUgc3R5bGUKICAgICAvLyBGSVhNRTogTW92ZSB0byBFbGVtZW50Ci0gICAgaWYgKHJlbmRl
cmVyKCkpIHsKKyAgICBpZiAoaGFzUmVuZGVyZXIoKSkgewogICAgICAgICBpZiAocmVuZGVyZXIo
KS0+c3R5bGUoKS0+YWZmZWN0ZWRCeUhvdmVyUnVsZXMoKSkKICAgICAgICAgICAgIHNldE5lZWRz
U3R5bGVSZWNhbGMoKTsKLSAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5
bGUoKS0+aGFzQXBwZWFyYW5jZSgpKQorICAgICAgICBpZiAoaGFzUmVuZGVyZXIoKSAmJiByZW5k
ZXJlcigpLT5zdHlsZSgpLT5oYXNBcHBlYXJhbmNlKCkpCiAgICAgICAgICAgICByZW5kZXJlcigp
LT50aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgSG92ZXJTdGF0ZSk7CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMTM5MmJjZmQ2NGM3MzVkYWQyYTQzMzE3ZmJi
MWJiMTBiOTgxMzAyYy4uODI1MjAyMmIxNWRkZjZkOTQwZTA1ODVlODI3OTJjMjYyY2Q5Yjg4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00OTgsNyArNDk4LDcgQEAgRG9jdW1lbnQ6OkRv
Y3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wg
aXNIVE1MKQogCiBEb2N1bWVudDo6fkRvY3VtZW50KCkKIHsKLSAgICBBU1NFUlQoIXJlbmRlcmVy
KCkpOworICAgIEFTU0VSVCghaGFzUmVuZGVyZXIoKSk7CiAgICAgQVNTRVJUKCFtX2luUGFnZUNh
Y2hlKTsKICAgICBBU1NFUlQoIW1fc2F2ZWRSZW5kZXJlcik7CiAgICAgQVNTRVJUKG1fcmFuZ2Vz
LmlzRW1wdHkoKSk7CkBAIC0xMTExLDcgKzExMTEsNyBAQCBTdHJpbmcgRG9jdW1lbnQ6OnN1Z2dl
c3RlZE1JTUVUeXBlKCkgY29uc3QKIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IERvY3VtZW50Ojpub2Rl
c0Zyb21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwgdW5zaWduZWQgdG9wUGFkZGluZywg
dW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBs
ZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGluZykgY29uc3QKIHsKICAgICAvLyBGSVhNRTog
U2hhcmUgY29kZSBiZXR3ZWVuIHRoaXMsIGVsZW1lbnRGcm9tUG9pbnQgYW5kIGNhcmV0UmFuZ2VG
cm9tUG9pbnQuCi0gICAgaWYgKCFyZW5kZXJlcigpKQorICAgIGlmICghaGFzUmVuZGVyZXIoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKICAg
ICBpZiAoIWZyYW1lKQpAQCAtMTE4Niw3ICsxMTg2LDcgQEAgc3RhdGljIE5vZGUqIG5vZGVGcm9t
UG9pbnQoRnJhbWUqIGZyYW1lLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3LCBpbnQgeCwgaW50IHks
IEkKIAogRWxlbWVudCogRG9jdW1lbnQ6OmVsZW1lbnRGcm9tUG9pbnQoaW50IHgsIGludCB5KSBj
b25zdAogewotICAgIGlmICghcmVuZGVyZXIoKSkKKyAgICBpZiAoIWhhc1JlbmRlcmVyKCkpCiAg
ICAgICAgIHJldHVybiAwOwogICAgIE5vZGUqIG5vZGUgPSBub2RlRnJvbVBvaW50KGZyYW1lKCks
IHJlbmRlclZpZXcoKSwgeCwgeSk7CiAgICAgd2hpbGUgKG5vZGUgJiYgIW5vZGUtPmlzRWxlbWVu
dE5vZGUoKSkKQEAgLTExOTgsNyArMTE5OCw3IEBAIEVsZW1lbnQqIERvY3VtZW50OjplbGVtZW50
RnJvbVBvaW50KGludCB4LCBpbnQgeSkgY29uc3QKIAogUGFzc1JlZlB0cjxSYW5nZT4gRG9jdW1l
bnQ6OmNhcmV0UmFuZ2VGcm9tUG9pbnQoaW50IHgsIGludCB5KQogewotICAgIGlmICghcmVuZGVy
ZXIoKSkKKyAgICBpZiAoIWhhc1JlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIElu
dFBvaW50IGxvY2FsUG9pbnQ7CiAgICAgTm9kZSogbm9kZSA9IG5vZGVGcm9tUG9pbnQoZnJhbWUo
KSwgcmVuZGVyVmlldygpLCB4LCB5LCAmbG9jYWxQb2ludCk7CkBAIC0xNTA1LDggKzE1MDUsOCBA
QCB2b2lkIERvY3VtZW50OjpyZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2UpCiAgICAgICAg
IGZyYW1lVmlldy0+YmVnaW5EZWZlcnJlZFJlcGFpbnRzKCk7CiAgICAgfQogCi0gICAgQVNTRVJU
KCFyZW5kZXJlcigpIHx8IHJlbmRlckFyZW5hKCkpOwotICAgIGlmICghcmVuZGVyZXIoKSB8fCAh
cmVuZGVyQXJlbmEoKSkKKyAgICBBU1NFUlQoIWhhc1JlbmRlcmVyKCkgfHwgcmVuZGVyQXJlbmEo
KSk7CisgICAgaWYgKCFoYXNSZW5kZXJlcigpIHx8ICFyZW5kZXJBcmVuYSgpKQogICAgICAgICBn
b3RvIGJhaWxfb3V0OwogCiAgICAgaWYgKG1fcGVuZGluZ1N0eWxlUmVjYWxjU2hvdWxkRm9yY2Up
CkBAIC0xNjA4LDcgKzE2MDgsNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVMYXlvdXQoKQogCiAg
ICAgLy8gT25seSBkbyBhIGxheW91dCBpZiBjaGFuZ2VzIGhhdmUgb2NjdXJyZWQgdGhhdCBtYWtl
IGl0IG5lY2Vzc2FyeS4gICAgICAKICAgICBGcmFtZVZpZXcqIHYgPSB2aWV3KCk7Ci0gICAgaWYg
KHYgJiYgcmVuZGVyZXIoKSAmJiAodi0+bGF5b3V0UGVuZGluZygpIHx8IHJlbmRlcmVyKCktPm5l
ZWRzTGF5b3V0KCkpKQorICAgIGlmICh2ICYmIGhhc1JlbmRlcmVyKCkgJiYgKHYtPmxheW91dFBl
bmRpbmcoKSB8fCByZW5kZXJlcigpLT5uZWVkc0xheW91dCgpKSkKICAgICAgICAgdi0+bGF5b3V0
KCk7CiB9CiAKQEAgLTE5MDUsNyArMTkwNSw3IEBAIEFYT2JqZWN0Q2FjaGUqIERvY3VtZW50Ojph
eE9iamVjdENhY2hlKCkgY29uc3QKIHZvaWQgRG9jdW1lbnQ6OnNldFZpc3VhbGx5T3JkZXJlZCgp
CiB7CiAgICAgbV92aXN1YWxseU9yZGVyZWQgPSB0cnVlOwotICAgIGlmIChyZW5kZXJlcigpKQor
ICAgIGlmIChoYXNSZW5kZXJlcigpKQogICAgICAgICByZW5kZXJlcigpLT5zdHlsZSgpLT5zZXRS
VExPcmRlcmluZyhWaXN1YWxPcmRlcik7CiB9CiAKQEAgLTIxNTEsNyArMjE1MSw3IEBAIHZvaWQg
RG9jdW1lbnQ6OmltcGxpY2l0Q2xvc2UoKQogICAgIC8vIG5lY2Vzc2FyeSBhbmQgY2FuIGluIGZh
Y3QgYmUgYWN0aXZlbHkgaGFybWZ1bCBpZiBwYWdlcyBhcmUgbG9hZGluZyBhdCBhIHJhdGUgb2Yg
PiA2MGZwcwogICAgIC8vIChpZiB5b3VyIHBsYXRmb3JtIGlzIHN5bmNpbmcgZmx1c2hlcyBhbmQg
bGltaXRpbmcgdGhlbSB0byA2MGZwcykuCiAgICAgbV9vdmVyTWluaW11bUxheW91dFRocmVzaG9s
ZCA9IHRydWU7Ci0gICAgaWYgKCFvd25lckVsZW1lbnQoKSB8fCAob3duZXJFbGVtZW50KCktPnJl
bmRlcmVyKCkgJiYgIW93bmVyRWxlbWVudCgpLT5yZW5kZXJlcigpLT5uZWVkc0xheW91dCgpKSkg
eworICAgIGlmICghb3duZXJFbGVtZW50KCkgfHwgKG93bmVyRWxlbWVudCgpLT5oYXNSZW5kZXJl
cigpICYmICFvd25lckVsZW1lbnQoKS0+cmVuZGVyZXIoKS0+bmVlZHNMYXlvdXQoKSkpIHsKICAg
ICAgICAgdXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAgICAgICAKICAgICAgICAgLy8gQWx3YXlz
IGRvIGEgbGF5b3V0IGFmdGVyIGxvYWRpbmcgaWYgbmVlZGVkLgpAQCAtMjYxNiw5ICsyNjE2LDkg
QEAgdm9pZCBEb2N1bWVudDo6cHJvY2Vzc1ZpZXdwb3J0KGNvbnN0IFN0cmluZyYgZmVhdHVyZXMp
CiAKIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgRG9jdW1lbnQ6OnByZXBhcmVNb3VzZUV2
ZW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJbnRQb2ludCYgZG9jdW1l
bnRQb2ludCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKIHsKLSAgICBBU1NFUlQo
IXJlbmRlcmVyKCkgfHwgcmVuZGVyZXIoKS0+aXNSZW5kZXJWaWV3KCkpOworICAgIEFTU0VSVCgh
aGFzUmVuZGVyZXIoKSB8fCByZW5kZXJlcigpLT5pc1JlbmRlclZpZXcoKSk7CiAKLSAgICBpZiAo
IXJlbmRlcmVyKCkpCisgICAgaWYgKCFoYXNSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyhldmVudCwgSGl0VGVzdFJlc3VsdChJbnRQb2ludCgp
KSk7CiAKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChkb2N1bWVudFBvaW50KTsKQEAgLTI4MjMs
NyArMjgyMyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnN0eWxlU2VsZWN0b3JDaGFuZ2VkKFN0eWxlU2Vs
ZWN0b3JVcGRhdGVGbGFnIHVwZGF0ZUZsYWcpCiAgICAgCiAgICAgaWYgKGRpZExheW91dFdpdGhQ
ZW5kaW5nU3R5bGVzaGVldHMoKSAmJiBtX3BlbmRpbmdTdHlsZXNoZWV0cyA8PSAwKSB7CiAgICAg
ICAgIG1fcGVuZGluZ1NoZWV0TGF5b3V0ID0gSWdub3JlTGF5b3V0V2l0aFBlbmRpbmdTaGVldHM7
Ci0gICAgICAgIGlmIChyZW5kZXJlcigpKQorICAgICAgICBpZiAoaGFzUmVuZGVyZXIoKSkKICAg
ICAgICAgICAgIHJlbmRlcmVyKCktPnJlcGFpbnQoKTsKICAgICB9CiAKQEAgLTI4NDAsNyArMjg0
MCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnN0eWxlU2VsZWN0b3JDaGFuZ2VkKFN0eWxlU2VsZWN0b3JV
cGRhdGVGbGFnIHVwZGF0ZUZsYWcpCiAgICAgICAgIHByaW50ZigiRmluaXNoZWQgdXBkYXRlIG9m
IHN0eWxlIHNlbGVjdG9yIGF0IHRpbWUgJWRcbiIsIGVsYXBzZWRUaW1lKCkpOwogI2VuZGlmCiAK
LSAgICBpZiAocmVuZGVyZXIoKSkgeworICAgIGlmIChoYXNSZW5kZXJlcigpKSB7CiAgICAgICAg
IHJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwogICAgICAg
ICBpZiAodmlldygpKQogICAgICAgICAgICAgdmlldygpLT5zY2hlZHVsZVJlbGF5b3V0KCk7CkBA
IC0yODk4LDcgKzI4OTgsNyBAQCB2b2lkIERvY3VtZW50OjpyZWNhbGNTdHlsZVNlbGVjdG9yKCkK
ICAgICAgICAgc2NoZWR1bGVGb3JjZWRTdHlsZVJlY2FsYygpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIGlmICghcmVuZGVyZXIoKSB8fCAhYXR0YWNoZWQoKSkKKyAgICBpZiAoIWhhc1Jl
bmRlcmVyKCkgfHwgIWF0dGFjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0eWxlU2hl
ZXRWZWN0b3Igc2hlZXRzOwpAQCAtMzgwMyw3ICszODAzLDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0
SW5QYWdlQ2FjaGUoYm9vbCBmbGFnKQogICAgICAgICB9CiAgICAgICAgIG1fc3R5bGVSZWNhbGNU
aW1lci5zdG9wKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgQVNTRVJUKCFyZW5kZXJlcigpIHx8
IHJlbmRlcmVyKCkgPT0gbV9zYXZlZFJlbmRlcmVyKTsKKyAgICAgICAgQVNTRVJUKCFoYXNSZW5k
ZXJlcigpIHx8IHJlbmRlcmVyKCkgPT0gbV9zYXZlZFJlbmRlcmVyKTsKICAgICAgICAgQVNTRVJU
KG1fcmVuZGVyQXJlbmEpOwogICAgICAgICBzZXRSZW5kZXJlcihtX3NhdmVkUmVuZGVyZXIpOwog
ICAgICAgICBtX3NhdmVkUmVuZGVyZXIgPSAwOwpAQCAtMzgxOSw3ICszODE5LDcgQEAgdm9pZCBE
b2N1bWVudDo6c2V0SW5QYWdlQ2FjaGUoYm9vbCBmbGFnKQogdm9pZCBEb2N1bWVudDo6ZG9jdW1l
bnRXaWxsQmVjb21lSW5hY3RpdmUoKSAKIHsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCi0gICAgaWYgKHJlbmRlcmVyKCkpCisgICAgaWYgKGhhc1JlbmRlcmVyKCkpCiAgICAgICAg
IHJlbmRlclZpZXcoKS0+d2lsbE1vdmVPZmZzY3JlZW4oKTsKICNlbmRpZgogCkBAIC0zODM1LDcg
KzM4MzUsNyBAQCB2b2lkIERvY3VtZW50Ojpkb2N1bWVudERpZEJlY29tZUFjdGl2ZSgpCiAgICAg
ICAgICgqaSktPmRvY3VtZW50RGlkQmVjb21lQWN0aXZlKCk7CiAKICNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCi0gICAgaWYgKHJlbmRlcmVyKCkpCisgICAgaWYgKGhhc1JlbmRlcmVy
KCkpCiAgICAgICAgIHJlbmRlclZpZXcoKS0+ZGlkTW92ZU9uc2NyZWVuKCk7CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAppbmRl
eCBkNTM0YTgwMGE2N2M2MjBjZjBjMjI2YzcyZWJmNDJlYzgxNzY0Mzc0Li5lYTE5ZGM3ZTEwZDE4
NWIyZWUwY2Q0NTk0MzkwZmE3ZWQxZGFiZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcApAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGRNYXJrZXIoTm9kZSogbm9kZSwgY29uc3QgRG9jdW1l
bnRNYXJrZXImIG5ld01hCiAgICAgfQogCiAgICAgLy8gcmVwYWludCB0aGUgYWZmZWN0ZWQgbm9k
ZQotICAgIGlmIChub2RlLT5yZW5kZXJlcigpKQorICAgIGlmIChub2RlLT5oYXNSZW5kZXJlcigp
KQogICAgICAgICBub2RlLT5yZW5kZXJlcigpLT5yZXBhaW50KCk7CiB9CiAKQEAgLTIxNyw3ICsy
MTcsNyBAQCB2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6Y29weU1hcmtlcnMoTm9kZSog
c3JjTm9kZSwgdW5zaWduZWQgc3RhcnRPZmZzZXQsCiAgICAgfQogCiAgICAgLy8gcmVwYWludCB0
aGUgYWZmZWN0ZWQgbm9kZQotICAgIGlmIChkb2NEaXJ0eSAmJiBkc3ROb2RlLT5yZW5kZXJlcigp
KQorICAgIGlmIChkb2NEaXJ0eSAmJiBkc3ROb2RlLT5oYXNSZW5kZXJlcigpKQogICAgICAgICBk
c3ROb2RlLT5yZW5kZXJlcigpLT5yZXBhaW50KCk7CiB9CiAKQEAgLTI4NSw3ICsyODUsNyBAQCB2
b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6cmVtb3ZlTWFya2VycyhOb2RlKiBub2RlLCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgaQogICAgICAgICBtX3Bvc3NpYmx5RXhpc3RpbmdNYXJrZXJU
eXBlcyA9IDA7CiAKICAgICAvLyByZXBhaW50IHRoZSBhZmZlY3RlZCBub2RlCi0gICAgaWYgKGRv
Y0RpcnR5ICYmIG5vZGUtPnJlbmRlcmVyKCkpCisgICAgaWYgKGRvY0RpcnR5ICYmIG5vZGUtPmhh
c1JlbmRlcmVyKCkpCiAgICAgICAgIG5vZGUtPnJlbmRlcmVyKCktPnJlcGFpbnQoKTsKIH0KIApA
QCAtNTAwLDggKzUwMCw4IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpyZXBhaW50
TWFya2VycyhEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZXMgbWFya2VyCiAgICAgICAgICAgICBj
b250aW51ZTsKIAogICAgICAgICAvLyBjYXVzZSB0aGUgbm9kZSB0byBiZSByZWRyYXduCi0gICAg
ICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKSkKLSAgICAg
ICAgICAgIHJlbmRlcmVyLT5yZXBhaW50KCk7CisgICAgICAgIGlmIChub2RlLT5oYXNSZW5kZXJl
cigpKQorICAgICAgICAgICAgbm9kZS0+cmVuZGVyZXIoKS0+cmVwYWludCgpOwogICAgIH0KIH0K
IApAQCAtNTQyLDcgKzU0Miw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpzaGlm
dE1hcmtlcnMoTm9kZSogbm9kZSwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGluCiAgICAgfQogCiAg
ICAgLy8gcmVwYWludCB0aGUgYWZmZWN0ZWQgbm9kZQotICAgIGlmIChkb2NEaXJ0eSAmJiBub2Rl
LT5yZW5kZXJlcigpKQorICAgIGlmIChkb2NEaXJ0eSAmJiBub2RlLT5oYXNSZW5kZXJlcigpKQog
ICAgICAgICBub2RlLT5yZW5kZXJlcigpLT5yZXBhaW50KCk7CiB9CiAKQEAgLTU4Nyw3ICs1ODcs
NyBAQCB2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6c2V0TWFya2Vyc0FjdGl2ZShOb2Rl
KiBub2RlLCB1bnNpZ25lZCBzdGFydE9mZnNldAogICAgIH0KIAogICAgIC8vIHJlcGFpbnQgdGhl
IGFmZmVjdGVkIG5vZGUKLSAgICBpZiAoZG9jRGlydHkgJiYgbm9kZS0+cmVuZGVyZXIoKSkKKyAg
ICBpZiAoZG9jRGlydHkgJiYgbm9kZS0+aGFzUmVuZGVyZXIoKSkKICAgICAgICAgbm9kZS0+cmVu
ZGVyZXIoKS0+cmVwYWludCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggZTFkOTA4
YTI4MGY1YmQzN2JhMWQwMmM0NzlkZTg2MzJlYjQ2MTBmNy4uZGY3ZDQwMWZkOTE1OGQzMDYxMjFl
M2Q0MDkwMzM4YjdiZDUxMmY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMjc2LDcgKzI3
Niw3IEBAIHZvaWQgRWxlbWVudDo6c2Nyb2xsSW50b1ZpZXcoYm9vbCBhbGlnblRvVG9wKQogewog
ICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwog
Ci0gICAgaWYgKCFyZW5kZXJlcigpKQorICAgIGlmICghaGFzUmVuZGVyZXIoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgSW50UmVjdCBib3VuZHMgPSBnZXRSZWN0KCk7ICAgIApAQCAtMjkxLDcg
KzI5MSw3IEBAIHZvaWQgRWxlbWVudDo6c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChib29sIGNlbnRl
cklmTmVlZGVkKQogewogICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdT
dHlsZXNoZWV0cygpOwogCi0gICAgaWYgKCFyZW5kZXJlcigpKQorICAgIGlmICghaGFzUmVuZGVy
ZXIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50UmVjdCBib3VuZHMgPSBnZXRSZWN0KCk7
ICAgIApAQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQgRWxlbWVudDo6c2Nyb2xsQnlVbml0cyhpbnQg
dW5pdHMsIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQogewogICAgIGRvY3VtZW50KCkt
PnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCi0gICAgaWYgKCFyZW5k
ZXJlcigpKQorICAgIGlmICghaGFzUmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKCFyZW5kZXJlcigpLT5oYXNPdmVyZmxvd0NsaXAoKSkKQEAgLTUxOSw3ICs1MTksNyBAQCBJ
bnRSZWN0IEVsZW1lbnQ6OmJvdW5kc0luV2luZG93U3BhY2UoKSBjb25zdAogCiAgICAgVmVjdG9y
PEZsb2F0UXVhZD4gcXVhZHM7CiAjaWYgRU5BQkxFKFNWRykKLSAgICBpZiAoaXNTVkdFbGVtZW50
KCkgJiYgcmVuZGVyZXIoKSkgeworICAgIGlmIChpc1NWR0VsZW1lbnQoKSAmJiBoYXNSZW5kZXJl
cigpKSB7CiAgICAgICAgIC8vIEdldCB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIGZyb20gdGhlIFNW
RyBtb2RlbC4KICAgICAgICAgY29uc3QgU1ZHRWxlbWVudCogc3ZnRWxlbWVudCA9IHN0YXRpY19j
YXN0PGNvbnN0IFNWR0VsZW1lbnQqPih0aGlzKTsKICAgICAgICAgRmxvYXRSZWN0IGxvY2FsUmVj
dDsKQEAgLTU4Myw3ICs1ODMsNyBAQCBQYXNzUmVmUHRyPENsaWVudFJlY3Q+IEVsZW1lbnQ6Omdl
dEJvdW5kaW5nQ2xpZW50UmVjdCgpIGNvbnN0CiAKICAgICBWZWN0b3I8RmxvYXRRdWFkPiBxdWFk
czsKICNpZiBFTkFCTEUoU1ZHKQotICAgIGlmIChpc1NWR0VsZW1lbnQoKSAmJiByZW5kZXJlcigp
KSB7CisgICAgaWYgKGlzU1ZHRWxlbWVudCgpICYmIGhhc1JlbmRlcmVyKCkpIHsKICAgICAgICAg
Ly8gR2V0IHRoZSBib3VuZGluZyByZWN0YW5nbGUgZnJvbSB0aGUgU1ZHIG1vZGVsLgogICAgICAg
ICBjb25zdCBTVkdFbGVtZW50KiBzdmdFbGVtZW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgU1ZHRWxl
bWVudCo+KHRoaXMpOwogICAgICAgICBGbG9hdFJlY3QgbG9jYWxSZWN0OwpAQCAtNjIwLDcgKzYy
MCw3IEBAIFBhc3NSZWZQdHI8Q2xpZW50UmVjdD4gRWxlbWVudDo6Z2V0Qm91bmRpbmdDbGllbnRS
ZWN0KCkgY29uc3QKICAgICAKIEludFJlY3QgRWxlbWVudDo6c2NyZWVuUmVjdCgpIGNvbnN0CiB7
Ci0gICAgaWYgKCFyZW5kZXJlcigpKQorICAgIGlmICghaGFzUmVuZGVyZXIoKSkKICAgICAgICAg
cmV0dXJuIEludFJlY3QoKTsKICAgICByZXR1cm4gcmVuZGVyZXIoKS0+dmlldygpLT5mcmFtZVZp
ZXcoKS0+Y29udGVudHNUb1NjcmVlbihyZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVj
dCgpKTsKIH0KQEAgLTEwNTQsNyArMTA1NCw3IEBAIGJvb2wgRWxlbWVudDo6cHNldWRvU3R5bGVD
YWNoZUlzSW52YWxpZChjb25zdCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJTCiB7
CiAgICAgQVNTRVJUKGN1cnJlbnRTdHlsZSA9PSByZW5kZXJTdHlsZSgpKTsKIAotICAgIGlmICgh
cmVuZGVyZXIoKSB8fCAhY3VycmVudFN0eWxlKQorICAgIGlmICghaGFzUmVuZGVyZXIoKSB8fCAh
Y3VycmVudFN0eWxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjb25zdCBQc2V1ZG9T
dHlsZUNhY2hlKiBwc2V1ZG9TdHlsZUNhY2hlID0gY3VycmVudFN0eWxlLT5jYWNoZWRQc2V1ZG9T
dHlsZXMoKTsKQEAgLTExMzYsMTIgKzExMzYsMTIgQEAgdm9pZCBFbGVtZW50OjpyZWNhbGNTdHls
ZShTdHlsZUNoYW5nZSBjaGFuZ2UpCiAgICAgICAgICAgICAgICAgbmV3U3R5bGUtPnNldENoaWxk
cmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoKTsKICAgICAgICAgfQogCi0gICAgICAg
IGlmIChjaCAhPSBOb0NoYW5nZSB8fCBwc2V1ZG9TdHlsZUNhY2hlSXNJbnZhbGlkKGN1cnJlbnRT
dHlsZS5nZXQoKSwgbmV3U3R5bGUuZ2V0KCkpIHx8IChjaGFuZ2UgPT0gRm9yY2UgJiYgcmVuZGVy
ZXIoKSAmJiByZW5kZXJlcigpLT5yZXF1aXJlc0ZvcmNlZFN0eWxlUmVjYWxjUHJvcGFnYXRpb24o
KSkpIHsKKyAgICAgICAgaWYgKGNoICE9IE5vQ2hhbmdlIHx8IHBzZXVkb1N0eWxlQ2FjaGVJc0lu
dmFsaWQoY3VycmVudFN0eWxlLmdldCgpLCBuZXdTdHlsZS5nZXQoKSkgfHwgKGNoYW5nZSA9PSBG
b3JjZSAmJiBoYXNSZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnJlcXVpcmVzRm9yY2VkU3R5bGVS
ZWNhbGNQcm9wYWdhdGlvbigpKSkgewogICAgICAgICAgICAgc2V0UmVuZGVyU3R5bGUobmV3U3R5
bGUpOwogICAgICAgICB9IGVsc2UgaWYgKG5lZWRzU3R5bGVSZWNhbGMoKSAmJiBzdHlsZUNoYW5n
ZVR5cGUoKSAhPSBTeW50aGV0aWNTdHlsZUNoYW5nZSkgewogICAgICAgICAgICAgLy8gQWx0aG91
Z2ggbm8gY2hhbmdlIG9jY3VycmVkLCB3ZSB1c2UgdGhlIG5ldyBzdHlsZSBzbyB0aGF0IHRoZSBj
b3VzaW4gc3R5bGUgc2hhcmluZyBjb2RlIHdvbid0IGdldAogICAgICAgICAgICAgLy8gZm9vbGVk
IGludG8gYmVsaWV2aW5nIHRoaXMgc3R5bGUgaXMgdGhlIHNhbWUuCi0gICAgICAgICAgICBpZiAo
cmVuZGVyZXIoKSkKKyAgICAgICAgICAgIGlmIChoYXNSZW5kZXJlcigpKQogICAgICAgICAgICAg
ICAgIHJlbmRlcmVyKCktPnNldFN0eWxlSW50ZXJuYWwobmV3U3R5bGUuZ2V0KCkpOwogICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHNldFJlbmRlclN0eWxlKG5ld1N0eWxlKTsKQEAg
LTE2MjUsNyArMTYyNSw3IEBAIHZvaWQgRWxlbWVudDo6dXBkYXRlRm9jdXNBcHBlYXJhbmNlKGJv
b2wgLypyZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24qLykKICAgICAgICAgICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS0+c2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbik7CiAgICAgICAgICAgICBmcmFtZS0+
c2VsZWN0aW9uKCktPnJldmVhbFNlbGVjdGlvbigpOwogICAgICAgICB9Ci0gICAgfSBlbHNlIGlm
IChyZW5kZXJlcigpICYmICFyZW5kZXJlcigpLT5pc1dpZGdldCgpKQorICAgIH0gZWxzZSBpZiAo
aGFzUmVuZGVyZXIoKSAmJiAhcmVuZGVyZXIoKS0+aXNXaWRnZXQoKSkKICAgICAgICAgcmVuZGVy
ZXIoKS0+ZW5jbG9zaW5nTGF5ZXIoKS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShnZXRSZWN0KCkpOwog
fQogCkBAIC0xNjQ2LDcgKzE2NDYsNyBAQCBTdHJpbmcgRWxlbWVudDo6aW5uZXJUZXh0KCkgY29u
c3QKICAgICAvLyBXZSBuZWVkIHRvIHVwZGF0ZSBsYXlvdXQsIHNpbmNlIHBsYWluVGV4dCB1c2Vz
IGxpbmUgYm94ZXMgaW4gdGhlIHJlbmRlciB0cmVlLgogICAgIGRvY3VtZW50KCktPnVwZGF0ZUxh
eW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCi0gICAgaWYgKCFyZW5kZXJlcigpKQor
ICAgIGlmICghaGFzUmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHRleHRDb250ZW50KHRydWUp
OwogCiAgICAgcmV0dXJuIHBsYWluVGV4dChyYW5nZU9mQ29udGVudHMoY29uc3RfY2FzdDxFbGVt
ZW50Kj4odGhpcykpLmdldCgpKTsKQEAgLTE5NjMsNyArMTk2Myw3IEBAIGJvb2wgRWxlbWVudDo6
aXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIGNvbnN0CiAKIFBhc3NSZWZQdHI8V2ViS2l0QW5pbWF0
aW9uTGlzdD4gRWxlbWVudDo6d2Via2l0R2V0QW5pbWF0aW9ucygpIGNvbnN0CiB7Ci0gICAgaWYg
KCFyZW5kZXJlcigpKQorICAgIGlmICghaGFzUmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIDA7
CiAKICAgICBBbmltYXRpb25Db250cm9sbGVyKiBhbmltQ29udHJvbGxlciA9IHJlbmRlcmVyKCkt
PmFuaW1hdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRl
ZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAKaW5k
ZXggOGMyYjAyMWY3YzFhYmY2M2Y5MzI2M2Y1OGNlOTNmMjQwOTQyYWM0MS4uMDU4MTdkNzQ1OWU2
OWE4ODFhM2M3NzE4ZjRlMWY1ZTIyOGYzOGQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VS
ZWxhdGVkRXZlbnQuY3BwCkBAIC0xNDgsOCArMTQ4LDggQEAgdm9pZCBNb3VzZVJlbGF0ZWRFdmVu
dDo6Y29tcHV0ZVJlbGF0aXZlUG9zaXRpb24oKQogCiAgICAgLy8gQWRqdXN0IG9mZnNldExvY2F0
aW9uIHRvIGJlIHJlbGF0aXZlIHRvIHRoZSB0YXJnZXQncyBwb3NpdGlvbi4KICAgICBpZiAoIWlz
U2ltdWxhdGVkKCkpIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogciA9IHRhcmdldE5vZGUt
PnJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb3MgPSByLT5hYnNv
bHV0ZVRvTG9jYWwoYWJzb2x1dGVMb2NhdGlvbigpLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIGlm
ICh0YXJnZXROb2RlLT5oYXNSZW5kZXJlcigpKSB7CisgICAgICAgICAgICBGbG9hdFBvaW50IGxv
Y2FsUG9zID0gdGFyZ2V0Tm9kZS0+cmVuZGVyZXIoKS0+YWJzb2x1dGVUb0xvY2FsKGFic29sdXRl
TG9jYXRpb24oKSwgZmFsc2UsIHRydWUpOwogICAgICAgICAgICAgbV9vZmZzZXRMb2NhdGlvbiA9
IHJvdW5kZWRJbnRQb2ludChsb2NhbFBvcyk7CiAgICAgICAgICAgICBmbG9hdCBzY2FsZUZhY3Rv
ciA9IDEgLyBwYWdlWm9vbUZhY3Rvcih0aGlzKTsKICAgICAgICAgICAgIGlmIChzY2FsZUZhY3Rv
ciAhPSAxLjBmKQpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OmNv
bXB1dGVSZWxhdGl2ZVBvc2l0aW9uKCkKICAgICAvLyBvdGhlciBub3Rpb24gYWJvdXQgZ3JvdXBz
IG9mIGVsZW1lbnRzIChsZWZ0IG92ZXIgZnJvbSB0aGUgTmV0c2NhcGUgNCBkYXlzPyk7CiAgICAg
Ly8gd2Ugc2hvdWxkIHRlc3QgYW5kIGZpeCB0aGlzLgogICAgIE5vZGUqIG4gPSB0YXJnZXROb2Rl
OwotICAgIHdoaWxlIChuICYmICFuLT5yZW5kZXJlcigpKQorICAgIHdoaWxlIChuICYmICFuLT5o
YXNSZW5kZXJlcigpKQogICAgICAgICBuID0gbi0+cGFyZW50Tm9kZSgpOwogCiAgICAgUmVuZGVy
TGF5ZXIqIGxheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGY1NzY2OWYwYTQ5MDY4MWZiOTQ0ZDFl
ODFlODhhZmM2YWM4ZDFjYWUuLmZjN2FkYjQzMGViYmIwYWEyYjlkNjcwMzYwNWU2MjBmODU4MTcz
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTQwMSw3ICs0MDEsNyBAQCBOb2RlOjp+Tm9kZSgpCiAg
ICAgICAgIGRhdGFNYXAucmVtb3ZlKGl0KTsKICAgICB9CiAKLSAgICBpZiAocmVuZGVyZXIoKSkK
KyAgICBpZiAoaGFzUmVuZGVyZXIoKSkKICAgICAgICAgZGV0YWNoKCk7CiAKICAgICBpZiAoQVhP
YmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSAmJiBtX2RvY3VtZW50ICYmIG1fZG9j
dW1lbnQtPmF4T2JqZWN0Q2FjaGVFeGlzdHMoKSkKQEAgLTc3Myw3ICs3NzMsNyBAQCBib29sIE5v
ZGU6OnJlbmRlcmVySXNFZGl0YWJsZShFZGl0YWJsZUxldmVsIGVkaXRhYmxlTGV2ZWwpIGNvbnN0
CiAgICAgLy8gd291bGQgZmlyZSBpbiB0aGUgbWlkZGxlIG9mIERvY3VtZW50OjpzZXRGb2N1c2Vk
Tm9kZSgpLgogCiAgICAgZm9yIChjb25zdCBOb2RlKiBub2RlID0gdGhpczsgbm9kZTsgbm9kZSA9
IG5vZGUtPnBhcmVudE5vZGUoKSkgewotICAgICAgICBpZiAoKG5vZGUtPmlzSFRNTEVsZW1lbnQo
KSB8fCBub2RlLT5pc0RvY3VtZW50Tm9kZSgpKSAmJiBub2RlLT5yZW5kZXJlcigpKSB7CisgICAg
ICAgIGlmICgobm9kZS0+aXNIVE1MRWxlbWVudCgpIHx8IG5vZGUtPmlzRG9jdW1lbnROb2RlKCkp
ICYmIG5vZGUtPmhhc1JlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+cmVu
ZGVyZXIoKS0+c3R5bGUoKS0+dXNlck1vZGlmeSgpKSB7CiAgICAgICAgICAgICBjYXNlIFJFQURf
T05MWToKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04MDcsNyArODA3LDcgQEAg
UmVuZGVyQm94TW9kZWxPYmplY3QqIE5vZGU6OnJlbmRlckJveE1vZGVsT2JqZWN0KCkgY29uc3QK
IAogSW50UmVjdCBOb2RlOjpnZXRSZWN0KCkgY29uc3QKIHsKLSAgICBpZiAocmVuZGVyZXIoKSkK
KyAgICBpZiAoaGFzUmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHJlbmRlcmVyKCktPmFic29s
dXRlQm91bmRpbmdCb3hSZWN0KHRydWUpOwogICAgIHJldHVybiBJbnRSZWN0KCk7CiB9CkBAIC05
MzgsNyArOTM4LDcgQEAgYm9vbCBOb2RlOjppc0ZvY3VzYWJsZSgpIGNvbnN0CiAgICAgaWYgKCFp
bkRvY3VtZW50KCkgfHwgIXN1cHBvcnRzRm9jdXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIAotICAgIGlmIChyZW5kZXJlcigpKQorICAgIGlmIChoYXNSZW5kZXJlcigpKQogICAgICAg
ICBBU1NFUlQoIXJlbmRlcmVyKCktPm5lZWRzTGF5b3V0KCkpOwogICAgIGVsc2UKICAgICAgICAg
Ly8gSWYgdGhlIG5vZGUgaXMgaW4gYSBkaXNwbGF5Om5vbmUgdHJlZSBpdCBtaWdodCBzYXkgaXQg
bmVlZHMgc3R5bGUgcmVjYWxjIGJ1dApAQCAtOTQ3LDcgKzk0Nyw3IEBAIGJvb2wgTm9kZTo6aXNG
b2N1c2FibGUoKSBjb25zdAogICAgIAogICAgIC8vIEZJWE1FOiBFdmVuIGlmIHdlIGFyZSBub3Qg
dmlzaWJsZSwgd2UgbWlnaHQgaGF2ZSBhIGNoaWxkIHRoYXQgaXMgdmlzaWJsZS4KICAgICAvLyBI
eWF0dCB3YW50cyB0byBmaXggdGhhdCBzb21lIGRheSB3aXRoIGEgImhhcyB2aXNpYmxlIGNvbnRl
bnQiIGZsYWcgb3IgdGhlIGxpa2UuCi0gICAgaWYgKCFyZW5kZXJlcigpIHx8IHJlbmRlcmVyKCkt
PnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmICghaGFzUmVuZGVyZXIo
KSB8fCByZW5kZXJlcigpLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMzQwLDE0ICsxMzQwLDE0
IEBAIGJvb2wgTm9kZTo6Y29udGFpbnNJbmNsdWRpbmdTaGFkb3dET00oTm9kZSogbm9kZSkKIHZv
aWQgTm9kZTo6YXR0YWNoKCkKIHsKICAgICBBU1NFUlQoIWF0dGFjaGVkKCkpOwotICAgIEFTU0VS
VCghcmVuZGVyZXIoKSB8fCAocmVuZGVyZXIoKS0+c3R5bGUoKSAmJiByZW5kZXJlcigpLT5wYXJl
bnQoKSkpOworICAgIEFTU0VSVCghaGFzUmVuZGVyZXIoKSB8fCAocmVuZGVyZXIoKS0+c3R5bGUo
KSAmJiByZW5kZXJlcigpLT5wYXJlbnQoKSkpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgTyhO
XjIpIGZvciB0aGUgaW5uZXJIVE1MIGNhc2UsIHdoZXJlIGFsbCBjaGlsZHJlbiBhcmUgcmVwbGFj
ZWQgYXQgb25jZSAoYW5kIG5vdCBhdHRhY2hlZCkuCiAgICAgLy8gSWYgdGhpcyBub2RlIGdvdCBh
IHJlbmRlcmVyIGl0IG1heSBiZSB0aGUgcHJldmlvdXNSZW5kZXJlcigpIG9mIHNpYmxpbmcgdGV4
dCBub2RlcyBhbmQgdGh1cyBhZmZlY3QgdGhlCiAgICAgLy8gcmVzdWx0IG9mIFRleHQ6OnJlbmRl
cmVySXNOZWVkZWQoKSBmb3IgdGhvc2Ugbm9kZXMuCi0gICAgaWYgKHJlbmRlcmVyKCkpIHsKKyAg
ICBpZiAoaGFzUmVuZGVyZXIoKSkgewogICAgICAgICBmb3IgKE5vZGUqIG5leHQgPSBuZXh0U2li
bGluZygpOyBuZXh0OyBuZXh0ID0gbmV4dC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICAgICAg
aWYgKG5leHQtPnJlbmRlcmVyKCkpCisgICAgICAgICAgICBpZiAobmV4dC0+aGFzUmVuZGVyZXIo
KSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGlmICghbmV4dC0+YXR0YWNo
ZWQoKSkKICAgICAgICAgICAgICAgICBicmVhazsgIC8vIEFzc3VtZSB0aGlzIG1lYW5zIG5vbmUg
b2YgdGhlIGZvbGxvd2luZyBzaWJsaW5ncyBhcmUgYXR0YWNoZWQuCkBAIC0xMzY4LDcgKzEzNjgs
NyBAQCB2b2lkIE5vZGU6OmRldGFjaCgpCiB7CiAgICAgc2V0RmxhZyhJbkRldGFjaEZsYWcpOwog
Ci0gICAgaWYgKHJlbmRlcmVyKCkpCisgICAgaWYgKGhhc1JlbmRlcmVyKCkpCiAgICAgICAgIHJl
bmRlcmVyKCktPmRlc3Ryb3koKTsKICAgICBzZXRSZW5kZXJlcigwKTsKIApAQCAtMTQ1OSw3ICsx
NDU5LDcgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gTm9kZTo6c3R5bGVGb3JSZW5kZXJlcigp
CiAjZW5kaWYKICAgICAgICAgcmV0dXJuIGRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKS0+c3R5
bGVGb3JFbGVtZW50KHN0YXRpY19jYXN0PEVsZW1lbnQqPih0aGlzKSwgMCwgYWxsb3dTaGFyaW5n
KTsKICAgICB9Ci0gICAgcmV0dXJuIHBhcmVudE5vZGUoKSAmJiBwYXJlbnROb2RlKCktPnJlbmRl
cmVyKCkgPyBwYXJlbnROb2RlKCktPnJlbmRlcmVyKCktPnN0eWxlKCkgOiAwOworICAgIHJldHVy
biBwYXJlbnROb2RlKCkgJiYgcGFyZW50Tm9kZSgpLT5oYXNSZW5kZXJlcigpID8gcGFyZW50Tm9k
ZSgpLT5yZW5kZXJlcigpLT5zdHlsZSgpIDogMDsKIH0KIAogYm9vbCBOb2RlOjpyZW5kZXJlcklz
TmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQpAQCAtMTUwMiw3ICsx
NTAyLDcgQEAgYm9vbCBOb2RlOjpjYW5TdGFydFNlbGVjdGlvbigpIGNvbnN0CiAgICAgaWYgKHJl
bmRlcmVySXNFZGl0YWJsZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChyZW5k
ZXJlcigpKSB7CisgICAgaWYgKGhhc1JlbmRlcmVyKCkpIHsKICAgICAgICAgUmVuZGVyU3R5bGUq
IHN0eWxlID0gcmVuZGVyZXIoKS0+c3R5bGUoKTsKICAgICAgICAgLy8gV2UgYWxsb3cgc2VsZWN0
aW9ucyB0byBiZWdpbiB3aXRoaW4gYW4gZWxlbWVudCB0aGF0IGhhcyAtd2Via2l0LXVzZXItc2Vs
ZWN0OiBub25lIHNldCwKICAgICAgICAgLy8gYnV0IGlmIHRoZSBlbGVtZW50IGlzIGRyYWdnYWJs
ZSB0aGVuIGRyYWdnaW5nIHNob3VsZCB0YWtlIHByaW9yaXR5IG92ZXIgc2VsZWN0aW9uLgpAQCAt
MTU3OCwxMiArMTU3OCwxMiBAQCBib29sIE5vZGU6OmlzSW5TaGFkb3dUcmVlKCkKIAogYm9vbCBO
b2RlOjppc0Jsb2NrRmxvdygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJlbmRlcmVyKCkgJiYgcmVu
ZGVyZXIoKS0+aXNCbG9ja0Zsb3coKTsKKyAgICByZXR1cm4gaGFzUmVuZGVyZXIoKSAmJiByZW5k
ZXJlcigpLT5pc0Jsb2NrRmxvdygpOwogfQogCiBib29sIE5vZGU6OmlzQmxvY2tGbG93T3JCbG9j
a1RhYmxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcmVuZGVyZXIoKSAmJiAocmVuZGVyZXIoKS0+
aXNCbG9ja0Zsb3coKSB8fCAocmVuZGVyZXIoKS0+aXNUYWJsZSgpICYmICFyZW5kZXJlcigpLT5p
c0lubGluZSgpKSk7CisgICAgcmV0dXJuIGhhc1JlbmRlcmVyKCkgJiYgKHJlbmRlcmVyKCktPmlz
QmxvY2tGbG93KCkgfHwgKHJlbmRlcmVyKCktPmlzVGFibGUoKSAmJiAhcmVuZGVyZXIoKS0+aXNJ
bmxpbmUoKSkpOwogfQogCiBFbGVtZW50ICpOb2RlOjplbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50
KCkgY29uc3QKQEAgLTIyNDIsNyArMjI0Miw3IEBAIHVuc2lnbmVkIHNob3J0IE5vZGU6OmNvbXBh
cmVEb2N1bWVudFBvc2l0aW9uKE5vZGUqIG90aGVyTm9kZSkKIEZsb2F0UG9pbnQgTm9kZTo6Y29u
dmVydFRvUGFnZShjb25zdCBGbG9hdFBvaW50JiBwKSBjb25zdAogewogICAgIC8vIElmIHRoZXJl
IGlzIGEgcmVuZGVyZXIsIGp1c3QgYXNrIGl0IHRvIGRvIHRoZSBjb252ZXJzaW9uCi0gICAgaWYg
KHJlbmRlcmVyKCkpCisgICAgaWYgKGhhc1JlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiByZW5k
ZXJlcigpLT5sb2NhbFRvQWJzb2x1dGUocCwgZmFsc2UsIHRydWUpOwogICAgIAogICAgIC8vIE90
aGVyd2lzZSBnbyB1cCB0aGUgdHJlZSBsb29raW5nIGZvciBhIHJlbmRlcmVyCkBAIC0yMjU3LDcg
KzIyNTcsNyBAQCBGbG9hdFBvaW50IE5vZGU6OmNvbnZlcnRUb1BhZ2UoY29uc3QgRmxvYXRQb2lu
dCYgcCkgY29uc3QKIEZsb2F0UG9pbnQgTm9kZTo6Y29udmVydEZyb21QYWdlKGNvbnN0IEZsb2F0
UG9pbnQmIHApIGNvbnN0CiB7CiAgICAgLy8gSWYgdGhlcmUgaXMgYSByZW5kZXJlciwganVzdCBh
c2sgaXQgdG8gZG8gdGhlIGNvbnZlcnNpb24KLSAgICBpZiAocmVuZGVyZXIoKSkKKyAgICBpZiAo
aGFzUmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHJlbmRlcmVyKCktPmFic29sdXRlVG9Mb2Nh
bChwLCBmYWxzZSwgdHJ1ZSk7CiAKICAgICAvLyBPdGhlcndpc2UgZ28gdXAgdGhlIHRyZWUgbG9v
a2luZyBmb3IgYSByZW5kZXJlcgpAQCAtMjMyMCw3ICsyMzIwLDcgQEAgc3RhdGljIHZvaWQgdHJh
dmVyc2VUcmVlQW5kTWFyayhjb25zdCBTdHJpbmcmIGJhc2VJbmRlbnQsIGNvbnN0IE5vZGUqIHJv
b3ROb2RlLAogCiAgICAgICAgIENvbnRhaW5lck5vZGUqIHNoYWRvdyA9IHNoYWRvd1Jvb3QoY29u
c3RfY2FzdDxOb2RlKj4obm9kZSkpOwogCi0gICAgICAgIGlmICghc2hhZG93ICYmIG5vZGUtPnJl
bmRlcmVyKCkgJiYgbm9kZS0+cmVuZGVyZXIoKS0+aXNUZXh0Q29udHJvbCgpKQorICAgICAgICBp
ZiAoIXNoYWRvdyAmJiBub2RlLT5oYXNSZW5kZXJlcigpICYmIG5vZGUtPnJlbmRlcmVyKCktPmlz
VGV4dENvbnRyb2woKSkKICAgICAgICAgICAgIHNoYWRvdyA9IHN0YXRpY19jYXN0PFJlbmRlclRl
eHRDb250cm9sKj4obm9kZS0+cmVuZGVyZXIoKSktPmlubmVyVGV4dEVsZW1lbnQoKTsKIAogICAg
ICAgICBpZiAoc2hhZG93KSB7CkBAIC0yODE0LDEwICsyODE0LDEwIEBAIHZvaWQgTm9kZTo6ZGVm
YXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgICAgIC8vIElmIHdlIGRvbid0IGhh
dmUgYSByZW5kZXJlciwgc2VuZCB0aGUgd2hlZWwgZXZlbnQgdG8gdGhlIGZpcnN0IG5vZGUgd2Ug
ZmluZCB3aXRoIGEgcmVuZGVyZXIuCiAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIGZvciA8b3B0
aW9uPiBhbmQgPG9wdGdyb3VwPiBlbGVtZW50cyBzbyB0aGF0IDxzZWxlY3Q+cyBnZXQgYSB3aGVl
bCBzY3JvbGwuCiAgICAgICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IHRoaXM7Ci0gICAgICAgIHdoaWxl
IChzdGFydE5vZGUgJiYgIXN0YXJ0Tm9kZS0+cmVuZGVyZXIoKSkKKyAgICAgICAgd2hpbGUgKHN0
YXJ0Tm9kZSAmJiAhc3RhcnROb2RlLT5oYXNSZW5kZXJlcigpKQogICAgICAgICAgICAgc3RhcnRO
b2RlID0gc3RhcnROb2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7CiAgICAgICAgIAotICAgICAgICBp
ZiAoc3RhcnROb2RlICYmIHN0YXJ0Tm9kZS0+cmVuZGVyZXIoKSkKKyAgICAgICAgaWYgKHN0YXJ0
Tm9kZSAmJiBzdGFydE5vZGUtPmhhc1JlbmRlcmVyKCkpCiAgICAgICAgICAgICBpZiAoRnJhbWUq
IGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKSkKICAgICAgICAgICAgICAgICBmcmFtZS0+ZXZl
bnRIYW5kbGVyKCktPmRlZmF1bHRXaGVlbEV2ZW50SGFuZGxlcihzdGFydE5vZGUsIHdoZWVsRXZl
bnQpOwogICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkud2Via2l0
RWRpdGFibGVDb250ZW50Q2hhbmdlZEV2ZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA1MGZkNWUzN2Nh
OWEyYzg4NmIwYjhiMDcxNzIxNTdjZTcyNGFiMDNiLi42MTI1ZmI3OThhNGY0ODVjN2U0MjlkNWI0
M2QyNjljOWQ2NjM3MDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTQzNCw2ICs0MzQsOCBAQCBwdWJsaWM6
CiAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAvLyBJbnRlZ3JhdGlvbiB3aXRoIHJl
bmRlcmluZyB0cmVlCiAKKyAgICAvLyBDaGVjayB3aGV0aGVyICp0aGlzIGhhcyBhIHJlbmRlcmVy
LiBGb3IgZnV0dXJlIGV4dGVuc2liaWxpdHkgcmVhc29ucywgcGxlYXNlIGRvIG5vdCB1c2UgcmVu
ZGVyZXIoKSBmb3IgdGhpcyBwdXJwb3NlIQorICAgIGJvb2wgaGFzUmVuZGVyZXIoKSBjb25zdCB7
IHJldHVybiBtX3JlbmRlcmVyOyB9CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0
IHsgcmV0dXJuIG1fcmVuZGVyZXI7IH0KICAgICB2b2lkIHNldFJlbmRlcmVyKFJlbmRlck9iamVj
dCogcmVuZGVyZXIpIHsgbV9yZW5kZXJlciA9IHJlbmRlcmVyOyB9CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBlMGMwOTQxNmE4YzIzYjMx
ZWZjZDNhNjc1NjBhMmYyYjhmMGQ4NWRhLi5kOTk2MzMyMWJhZDM4YTFkNzI4MWYwYjlmYzI0YWE4
ZjFiZDQ4NmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5j
cHAKQEAgLTk5LDcgKzk5LDcgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gTm9kZVJlbmRlcmlu
Z0NvbnRleHQ6OnJlbGVhc2VTdHlsZSgpCiAKIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0Nv
bnRleHQ6Om5leHRSZW5kZXJlcigpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fbm9kZS0+cmVuZGVy
ZXIoKSB8fCBtX2xvY2F0aW9uICE9IExvY2F0aW9uVW5kZXRlcm1pbmVkKTsKKyAgICBBU1NFUlQo
bV9ub2RlLT5oYXNSZW5kZXJlcigpIHx8IG1fbG9jYXRpb24gIT0gTG9jYXRpb25VbmRldGVybWlu
ZWQpOwogICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9ub2RlLT5yZW5kZXJlcigp
KQogICAgICAgICByZXR1cm4gcmVuZGVyZXItPm5leHRTaWJsaW5nKCk7CiAKQEAgLTExNiw3ICsx
MTYsNyBAQCBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpuZXh0UmVuZGVyZXIo
KSBjb25zdAogICAgICAgICByZXR1cm4gMDsKIAogICAgIGZvciAoTm9kZSogbm9kZSA9IG1fbm9k
ZS0+bmV4dFNpYmxpbmcoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKLSAg
ICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCkpCisgICAgICAgIGlmIChub2RlLT5oYXNSZW5kZXJl
cigpKQogICAgICAgICAgICAgcmV0dXJuIG5vZGUtPnJlbmRlcmVyKCk7CiAgICAgfQogCkBAIC0x
MjUsNyArMTI1LDcgQEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJl
bmRlcmVyKCkgY29uc3QKIAogUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cHJl
dmlvdXNSZW5kZXJlcigpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fbm9kZS0+cmVuZGVyZXIoKSB8
fCBtX2xvY2F0aW9uICE9IExvY2F0aW9uVW5kZXRlcm1pbmVkKTsKKyAgICBBU1NFUlQobV9ub2Rl
LT5oYXNSZW5kZXJlcigpIHx8IG1fbG9jYXRpb24gIT0gTG9jYXRpb25VbmRldGVybWluZWQpOwog
ICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9ub2RlLT5yZW5kZXJlcigpKQogICAg
ICAgICByZXR1cm4gcmVuZGVyZXItPnByZXZpb3VzU2libGluZygpOwogCkBAIC0xNDEsNyArMTQx
LDcgQEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cHJldmlvdXNSZW5kZXJl
cigpIGNvbnN0CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIHRoZSBzYW1lIE8oTl4yKSBh
dm9pZGFuY2UgYXMgbmV4dFJlbmRlcmVyIGRvZXMKICAgICAvLyBob3dldmVyLCB3aGVuIEkgdHJp
ZWQgYWRkaW5nIGl0LCBzZXZlcmFsIHRlc3RzIGZhaWxlZC4KICAgICBmb3IgKE5vZGUqIG5vZGUg
PSBtX25vZGUtPnByZXZpb3VzU2libGluZygpOyBub2RlOyBub2RlID0gbm9kZS0+cHJldmlvdXNT
aWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCkpCisgICAgICAgIGlmIChu
b2RlLT5oYXNSZW5kZXJlcigpKQogICAgICAgICAgICAgcmV0dXJuIG5vZGUtPnJlbmRlcmVyKCk7
CiAgICAgfQogCkBAIC0xNTAsOSArMTUwLDkgQEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5n
Q29udGV4dDo6cHJldmlvdXNSZW5kZXJlcigpIGNvbnN0CiAKIFJlbmRlck9iamVjdCogTm9kZVJl
bmRlcmluZ0NvbnRleHQ6OnBhcmVudFJlbmRlcmVyKCkgY29uc3QKIHsKLSAgICBpZiAoUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IG1fbm9kZS0+cmVuZGVyZXIoKSkgeworICAgIGlmIChtX25vZGUt
Pmhhc1JlbmRlcmVyKCkpIHsKICAgICAgICAgQVNTRVJUKG1fbG9jYXRpb24gPT0gTG9jYXRpb25V
bmRldGVybWluZWQpOwotICAgICAgICByZXR1cm4gcmVuZGVyZXItPnBhcmVudCgpOworICAgICAg
ICByZXR1cm4gbV9ub2RlLT5yZW5kZXJlcigpLT5wYXJlbnQoKTsKICAgICB9CiAKICAgICBBU1NF
UlQobV9sb2NhdGlvbiAhPSBMb2NhdGlvblVuZGV0ZXJtaW5lZCk7CkBAIC0yMDMsNyArMjAzLDcg
QEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlckFuZFN0
eWxlKCkKIHsKICAgICBOb2RlKiBub2RlID0gbV9jb250ZXh0Lm5vZGUoKTsKICAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBub2RlLT5kb2N1bWVudCgpOwotICAgIEFTU0VSVCghbm9kZS0+cmVuZGVy
ZXIoKSk7CisgICAgQVNTRVJUKCFub2RlLT5oYXNSZW5kZXJlcigpKTsKICAgICBBU1NFUlQoZG9j
dW1lbnQtPnNob3VsZENyZWF0ZVJlbmRlcmVycygpKTsKIAogICAgIGlmICghbV9jb250ZXh0LnNo
b3VsZENyZWF0ZVJlbmRlcmVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9z
aXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAppbmRleCA3YTQ1ZmQz
MWYyNjBmMjBhMjhjYmFmNjE2Yjk0ZDY3NDhmYjE2ODJlLi5kYTYxYTEzMGYwZTQwMzE2YWNhYTg5
MThjZDE5NDM0MWNlY2ViYzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKQEAgLTMxNCwxNyAr
MzE0LDE3IEBAIFBvc2l0aW9uIFBvc2l0aW9uOjpuZXh0KFBvc2l0aW9uTW92ZVR5cGUgbW92ZVR5
cGUpIGNvbnN0CiAKIGludCBQb3NpdGlvbjo6dW5jaGVja2VkUHJldmlvdXNPZmZzZXQoY29uc3Qg
Tm9kZSogbiwgaW50IGN1cnJlbnQpCiB7Ci0gICAgcmV0dXJuIG4tPnJlbmRlcmVyKCkgPyBuLT5y
ZW5kZXJlcigpLT5wcmV2aW91c09mZnNldChjdXJyZW50KSA6IGN1cnJlbnQgLSAxOworICAgIHJl
dHVybiBuLT5oYXNSZW5kZXJlcigpID8gbi0+cmVuZGVyZXIoKS0+cHJldmlvdXNPZmZzZXQoY3Vy
cmVudCkgOiBjdXJyZW50IC0gMTsKIH0KIAogaW50IFBvc2l0aW9uOjp1bmNoZWNrZWRQcmV2aW91
c09mZnNldEZvckJhY2t3YXJkRGVsZXRpb24oY29uc3QgTm9kZSogbiwgaW50IGN1cnJlbnQpCiB7
Ci0gICAgcmV0dXJuIG4tPnJlbmRlcmVyKCkgPyBuLT5yZW5kZXJlcigpLT5wcmV2aW91c09mZnNl
dEZvckJhY2t3YXJkRGVsZXRpb24oY3VycmVudCkgOiBjdXJyZW50IC0gMTsKKyAgICByZXR1cm4g
bi0+aGFzUmVuZGVyZXIoKSA/IG4tPnJlbmRlcmVyKCktPnByZXZpb3VzT2Zmc2V0Rm9yQmFja3dh
cmREZWxldGlvbihjdXJyZW50KSA6IGN1cnJlbnQgLSAxOwogfQogCiBpbnQgUG9zaXRpb246OnVu
Y2hlY2tlZE5leHRPZmZzZXQoY29uc3QgTm9kZSogbiwgaW50IGN1cnJlbnQpCiB7Ci0gICAgcmV0
dXJuIG4tPnJlbmRlcmVyKCkgPyBuLT5yZW5kZXJlcigpLT5uZXh0T2Zmc2V0KGN1cnJlbnQpIDog
Y3VycmVudCArIDE7CisgICAgcmV0dXJuIG4tPmhhc1JlbmRlcmVyKCkgPyBuLT5yZW5kZXJlcigp
LT5uZXh0T2Zmc2V0KGN1cnJlbnQpIDogY3VycmVudCArIDE7CiB9CiAKIGJvb2wgUG9zaXRpb246
OmF0Rmlyc3RFZGl0aW5nUG9zaXRpb25Gb3JOb2RlKCkgY29uc3QKQEAgLTQ3OSw3ICs0NzksNyBA
QCBQb3NpdGlvbiBQb3NpdGlvbjo6bmV4dENoYXJhY3RlclBvc2l0aW9uKEVBZmZpbml0eSBhZmZp
bml0eSkgY29uc3QKIC8vIEZJWE1FOiBTaGFyZSBjb2RlIHdpdGggaXNDYW5kaWRhdGUsIGlmIHBv
c3NpYmxlLgogc3RhdGljIGJvb2wgZW5kc09mTm9kZUFyZVZpc3VhbGx5RGlzdGluY3RQb3NpdGlv
bnMoTm9kZSogbm9kZSkKIHsKLSAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPnJlbmRlcmVyKCkpCisg
ICAgaWYgKCFub2RlIHx8ICFub2RlLT5oYXNSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIAogICAgIGlmICghbm9kZS0+cmVuZGVyZXIoKS0+aXNJbmxpbmUoKSkKQEAg
LTc3Myw3ICs3NzMsNyBAQCBib29sIFBvc2l0aW9uOjpoYXNSZW5kZXJlZE5vbkFub255bW91c0Rl
c2NlbmRhbnRzV2l0aEhlaWdodChSZW5kZXJPYmplY3QqIHJlbmRlcgogCiBib29sIFBvc2l0aW9u
Ojpub2RlSXNVc2VyU2VsZWN0Tm9uZShOb2RlKiBub2RlKQogewotICAgIHJldHVybiBub2RlICYm
IG5vZGUtPnJlbmRlcmVyKCkgJiYgbm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+dXNlclNlbGVj
dCgpID09IFNFTEVDVF9OT05FOworICAgIHJldHVybiBub2RlICYmIG5vZGUtPmhhc1JlbmRlcmVy
KCkgJiYgbm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+dXNlclNlbGVjdCgpID09IFNFTEVDVF9O
T05FOwogfQogCiBib29sIFBvc2l0aW9uOjppc0NhbmRpZGF0ZSgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Jhbmdl
LmNwcAppbmRleCBmN2YwYzdhMTEyOGUxOTkxZDFmMjA2ZWE5NDQyN2M2YmE2ZmYyMGFjLi4xODBj
OTQyY2VkNTJjMzljNDlkNzkwMjU4YTFmY2M2NDYyZDBlMGFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAK
QEAgLTE5NzAsOCArMTk3MCw4IEBAIHZvaWQgUmFuZ2U6OmdldEJvcmRlckFuZFRleHRRdWFkcyhW
ZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpIGNvbnN0CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmlzVGV4dE5vZGUoKSkgewotICAgICAg
ICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdGF0aWNfY2FzdDxUZXh0Kj4obm9k
ZSktPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgICAgICBSZW5kZXJUZXh0KiByZW5kZXJUZXh0
ID0gdG9SZW5kZXJUZXh0KHJlbmRlcmVyKTsKKyAgICAgICAgICAgIGlmIChub2RlLT5oYXNSZW5k
ZXJlcigpKSB7CisgICAgICAgICAgICAgICAgUmVuZGVyVGV4dCogcmVuZGVyVGV4dCA9IHRvUmVu
ZGVyVGV4dChub2RlLT5yZW5kZXJlcigpKTsKICAgICAgICAgICAgICAgICBpbnQgc3RhcnRPZmZz
ZXQgPSAobm9kZSA9PSBzdGFydENvbnRhaW5lcikgPyBtX3N0YXJ0Lm9mZnNldCgpIDogMDsKICAg
ICAgICAgICAgICAgICBpbnQgZW5kT2Zmc2V0ID0gKG5vZGUgPT0gZW5kQ29udGFpbmVyKSA/IG1f
ZW5kLm9mZnNldCgpIDogSU5UX01BWDsKICAgICAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
ZWxlY3RFbGVtZW50LmNwcAppbmRleCBhYTliOTI0ODdmMDk5ZmE3YjI4Zjg1MWEwZGE1MmIxNTg4
ZmM4MjYyLi4wOTFlMzRlM2JjZmU0M2JjYzU0NGUyNmEyZDRiN2EwNDJjZTQ3YWNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuY3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgc3RhdGljIGlu
dCBuZXh0U2VsZWN0YWJsZUxpc3RJbmRleFBhZ2VBd2F5KFNlbGVjdEVsZW1lbnREYXRhJiBkYXRh
LCBFbGVtZW50KiBlbGUKIHZvaWQgU2VsZWN0RWxlbWVudDo6c2VsZWN0QWxsKFNlbGVjdEVsZW1l
bnREYXRhJiBkYXRhLCBFbGVtZW50KiBlbGVtZW50KQogewogICAgIEFTU0VSVCghZGF0YS51c2Vz
TWVudUxpc3QoKSk7Ci0gICAgaWYgKCFlbGVtZW50LT5yZW5kZXJlcigpIHx8ICFkYXRhLm11bHRp
cGxlKCkpCisgICAgaWYgKCFlbGVtZW50LT5oYXNSZW5kZXJlcigpIHx8ICFkYXRhLm11bHRpcGxl
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFNhdmUgdGhlIHNlbGVjdGlvbiBzbyBpdCBj
YW4gYmUgY29tcGFyZWQgdG8gdGhlIG5ldyBzZWxlY3RBbGwgc2VsZWN0aW9uIHdoZW4gZGlzcGF0
Y2hpbmcgY2hhbmdlIGV2ZW50cwpAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgU2VsZWN0RWxlbWVu
dDo6c2V0QWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIGlu
dCBpbmRlCiAKIHZvaWQgU2VsZWN0RWxlbWVudDo6dXBkYXRlTGlzdEJveFNlbGVjdGlvbihTZWxl
Y3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCwgYm9vbCBkZXNlbGVjdE90aGVy
T3B0aW9ucykKIHsKLSAgICBBU1NFUlQoZWxlbWVudC0+cmVuZGVyZXIoKSAmJiAoZWxlbWVudC0+
cmVuZGVyZXIoKS0+aXNMaXN0Qm94KCkgfHwgZGF0YS5tdWx0aXBsZSgpKSk7CisgICAgQVNTRVJU
KGVsZW1lbnQtPmhhc1JlbmRlcmVyKCkgJiYgKGVsZW1lbnQtPnJlbmRlcmVyKCktPmlzTGlzdEJv
eCgpIHx8IGRhdGEubXVsdGlwbGUoKSkpOwogICAgIEFTU0VSVCghZGF0YS5saXN0SXRlbXMoZWxl
bWVudCkuc2l6ZSgpIHx8IGRhdGEuYWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXgoKSA+PSAwKTsK
IAogICAgIHVuc2lnbmVkIHN0YXJ0ID0gbWluKGRhdGEuYWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5k
ZXgoKSwgZGF0YS5hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCgpKTsKQEAgLTI1OSwxNyArMjU5LDE3
IEBAIHZvaWQgU2VsZWN0RWxlbWVudDo6c2Nyb2xsVG9TZWxlY3Rpb24oU2VsZWN0RWxlbWVudERh
dGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgaWYgKGRhdGEudXNlc01lbnVMaXN0KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZWxl
bWVudC0+cmVuZGVyZXIoKSkKLSAgICAgICAgdG9SZW5kZXJMaXN0Qm94KHJlbmRlcmVyKS0+c2Vs
ZWN0aW9uQ2hhbmdlZCgpOworICAgIGlmIChlbGVtZW50LT5oYXNSZW5kZXJlcigpKQorICAgICAg
ICB0b1JlbmRlckxpc3RCb3goZWxlbWVudC0+cmVuZGVyZXIoKSktPnNlbGVjdGlvbkNoYW5nZWQo
KTsKIH0KIAogdm9pZCBTZWxlY3RFbGVtZW50OjpzZXRPcHRpb25zQ2hhbmdlZE9uUmVuZGVyZXIo
U2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgaWYgKFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpKSB7CisgICAgaWYgKGVs
ZW1lbnQtPmhhc1JlbmRlcmVyKCkpIHsKICAgICAgICAgaWYgKGRhdGEudXNlc01lbnVMaXN0KCkp
Ci0gICAgICAgICAgICB0b1JlbmRlck1lbnVMaXN0KHJlbmRlcmVyKS0+c2V0T3B0aW9uc0NoYW5n
ZWQodHJ1ZSk7CisgICAgICAgICAgICB0b1JlbmRlck1lbnVMaXN0KGVsZW1lbnQtPnJlbmRlcmVy
KCkpLT5zZXRPcHRpb25zQ2hhbmdlZCh0cnVlKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
dG9SZW5kZXJMaXN0Qm94KHJlbmRlcmVyKS0+c2V0T3B0aW9uc0NoYW5nZWQodHJ1ZSk7CisgICAg
ICAgICAgICB0b1JlbmRlckxpc3RCb3goZWxlbWVudC0+cmVuZGVyZXIoKSktPnNldE9wdGlvbnND
aGFuZ2VkKHRydWUpOwogICAgIH0KIH0KIApAQCAtMzc2LDggKzM3Niw4IEBAIHZvaWQgU2VsZWN0
RWxlbWVudDo6c2V0U2VsZWN0ZWRJbmRleChTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVu
dCogZWxlbWVudCwKICAgICAgICAgZGVzZWxlY3RJdGVtcyhkYXRhLCBlbGVtZW50LCBleGNsdWRl
RWxlbWVudCk7CiAKICAgICAvLyBGb3IgdGhlIG1lbnUgbGlzdCBjYXNlLCB0aGlzIGlzIHdoYXQg
bWFrZXMgdGhlIHNlbGVjdGVkIGVsZW1lbnQgYXBwZWFyLgotICAgIGlmIChSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKSkKLSAgICAgICAgcmVuZGVyZXItPnVwZGF0
ZUZyb21FbGVtZW50KCk7CisgICAgaWYgKGVsZW1lbnQtPmhhc1JlbmRlcmVyKCkpCisgICAgICAg
IGVsZW1lbnQtPnJlbmRlcmVyKCktPnVwZGF0ZUZyb21FbGVtZW50KCk7CiAKICAgICBzY3JvbGxU
b1NlbGVjdGlvbihkYXRhLCBlbGVtZW50KTsKIApAQCAtNTYwLDcgKzU2MCw3IEBAIHZvaWQgU2Vs
ZWN0RWxlbWVudDo6cmVzZXQoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1l
bnQpCiB2b2lkIFNlbGVjdEVsZW1lbnQ6Om1lbnVMaXN0RGVmYXVsdEV2ZW50SGFuZGxlcihTZWxl
Y3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCwgRXZlbnQqIGV2ZW50LCBIVE1M
Rm9ybUVsZW1lbnQqIGh0bWxGb3JtKQogewogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5rZXlkb3duRXZlbnQpIHsKLSAgICAgICAgaWYgKCFlbGVtZW50LT5yZW5kZXJlcigp
IHx8ICFldmVudC0+aXNLZXlib2FyZEV2ZW50KCkpCisgICAgICAgIGlmICghZWxlbWVudC0+aGFz
UmVuZGVyZXIoKSB8fCAhZXZlbnQtPmlzS2V5Ym9hcmRFdmVudCgpKQogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIGNvbnN0IFN0cmluZyYga2V5SWRlbnRpZmllciA9IHN0YXRpY19jYXN0
PEtleWJvYXJkRXZlbnQqPihldmVudCktPmtleUlkZW50aWZpZXIoKTsKQEAgLTU3MSw3ICs1NzEs
NyBAQCB2b2lkIFNlbGVjdEVsZW1lbnQ6Om1lbnVMaXN0RGVmYXVsdEV2ZW50SGFuZGxlcihTZWxl
Y3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudAogICAgICAgICAgICAgaWYgKGtleUlkZW50aWZp
ZXIgPT0gIkRvd24iIHx8IGtleUlkZW50aWZpZXIgPT0gIlVwIikgewogICAgICAgICAgICAgICAg
IGVsZW1lbnQtPmZvY3VzKCk7CiAKLSAgICAgICAgICAgICAgICBpZiAoIWVsZW1lbnQtPnJlbmRl
cmVyKCkpIC8vIENhbGxpbmcgZm9jdXMoKSBtYXkgY2F1c2UgdXMgdG8gbG9zZSBvdXIgcmVuZGVy
ZXIsIGluIHdoaWNoIGNhc2UgZG8gbm90IHdhbnQgdG8gaGFuZGxlIHRoZSBldmVudC4KKyAgICAg
ICAgICAgICAgICBpZiAoIWVsZW1lbnQtPmhhc1JlbmRlcmVyKCkpIC8vIENhbGxpbmcgZm9jdXMo
KSBtYXkgY2F1c2UgdXMgdG8gbG9zZSBvdXIgcmVuZGVyZXIsIGluIHdoaWNoIGNhc2UgZG8gbm90
IHdhbnQgdG8gaGFuZGxlIHRoZSBldmVudC4KICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgICAgICAgICAgLy8gU2F2ZSB0aGUgc2VsZWN0aW9uIHNvIGl0IGNhbiBiZSBjb21w
YXJlZCB0byB0aGUgbmV3IHNlbGVjdGlvbiB3aGVuIGRpc3BhdGNoaW5nIGNoYW5nZSBldmVudHMg
ZHVyaW5nIHNldFNlbGVjdGVkSW5kZXgsCkBAIC02MjUsNyArNjI1LDcgQEAgdm9pZCBTZWxlY3RF
bGVtZW50OjptZW51TGlzdERlZmF1bHRFdmVudEhhbmRsZXIoU2VsZWN0RWxlbWVudERhdGEmIGRh
dGEsIEVsZW1lbnQKICAgICAvLyBVc2Uga2V5IHByZXNzIGV2ZW50IGhlcmUgc2luY2Ugc2VuZGlu
ZyBzaW11bGF0ZWQgbW91c2UgZXZlbnRzCiAgICAgLy8gb24ga2V5IGRvd24gYmxvY2tzIHRoZSBw
cm9wZXIgc2VuZGluZyBvZiB0aGUga2V5IHByZXNzIGV2ZW50LgogICAgIGlmIChldmVudC0+dHlw
ZSgpID09IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KSB7Ci0gICAgICAgIGlmICghZWxlbWVu
dC0+cmVuZGVyZXIoKSB8fCAhZXZlbnQtPmlzS2V5Ym9hcmRFdmVudCgpKQorICAgICAgICBpZiAo
IWVsZW1lbnQtPmhhc1JlbmRlcmVyKCkgfHwgIWV2ZW50LT5pc0tleWJvYXJkRXZlbnQoKSkKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpbnQga2V5Q29kZSA9IHN0YXRpY19jYXN0PEtl
eWJvYXJkRXZlbnQqPihldmVudCktPmtleUNvZGUoKTsKQEAgLTY0Miw3ICs2NDIsNyBAQCB2b2lk
IFNlbGVjdEVsZW1lbnQ6Om1lbnVMaXN0RGVmYXVsdEV2ZW50SGFuZGxlcihTZWxlY3RFbGVtZW50
RGF0YSYgZGF0YSwgRWxlbWVudAogICAgICAgICBpZiAoa2V5Q29kZSA9PSAnICcgfHwga2V5Q29k
ZSA9PSAnXHInKSB7CiAgICAgICAgICAgICBlbGVtZW50LT5mb2N1cygpOwogCi0gICAgICAgICAg
ICBpZiAoIWVsZW1lbnQtPnJlbmRlcmVyKCkpIC8vIENhbGxpbmcgZm9jdXMoKSBtYXkgY2F1c2Ug
dXMgdG8gbG9zZSBvdXIgcmVuZGVyZXIsIGluIHdoaWNoIGNhc2UgZG8gbm90IHdhbnQgdG8gaGFu
ZGxlIHRoZSBldmVudC4KKyAgICAgICAgICAgIGlmICghZWxlbWVudC0+aGFzUmVuZGVyZXIoKSkg
Ly8gQ2FsbGluZyBmb2N1cygpIG1heSBjYXVzZSB1cyB0byBsb3NlIG91ciByZW5kZXJlciwgaW4g
d2hpY2ggY2FzZSBkbyBub3Qgd2FudCB0byBoYW5kbGUgdGhlIGV2ZW50LgogICAgICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICAgICAgLy8gU2F2ZSB0aGUgc2VsZWN0aW9uIHNvIGl0IGNh
biBiZSBjb21wYXJlZCB0byB0aGUgbmV3IHNlbGVjdGlvbiB3aGVuIGRpc3BhdGNoaW5nIGNoYW5n
ZSBldmVudHMgZHVyaW5nIHNldFNlbGVjdGVkSW5kZXgsCkBAIC02NTYsNyArNjU2LDcgQEAgdm9p
ZCBTZWxlY3RFbGVtZW50OjptZW51TGlzdERlZmF1bHRFdmVudEhhbmRsZXIoU2VsZWN0RWxlbWVu
dERhdGEmIGRhdGEsIEVsZW1lbnQKICAgICAgICAgaWYgKGtleUNvZGUgPT0gJyAnKSB7CiAgICAg
ICAgICAgICBlbGVtZW50LT5mb2N1cygpOwogCi0gICAgICAgICAgICBpZiAoIWVsZW1lbnQtPnJl
bmRlcmVyKCkpIC8vIENhbGxpbmcgZm9jdXMoKSBtYXkgY2F1c2UgdXMgdG8gbG9zZSBvdXIgcmVu
ZGVyZXIsIGluIHdoaWNoIGNhc2UgZG8gbm90IHdhbnQgdG8gaGFuZGxlIHRoZSBldmVudC4KKyAg
ICAgICAgICAgIGlmICghZWxlbWVudC0+aGFzUmVuZGVyZXIoKSkgLy8gQ2FsbGluZyBmb2N1cygp
IG1heSBjYXVzZSB1cyB0byBsb3NlIG91ciByZW5kZXJlciwgaW4gd2hpY2ggY2FzZSBkbyBub3Qg
d2FudCB0byBoYW5kbGUgdGhlIGV2ZW50LgogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICAgICAgLy8gU2F2ZSB0aGUgc2VsZWN0aW9uIHNvIGl0IGNhbiBiZSBjb21wYXJlZCB0byB0
aGUgbmV3IHNlbGVjdGlvbiB3aGVuIGRpc3BhdGNoaW5nIGNoYW5nZSBldmVudHMgZHVyaW5nIHNl
dFNlbGVjdGVkSW5kZXgsCkBAIC02ODUsNyArNjg1LDcgQEAgdm9pZCBTZWxlY3RFbGVtZW50Ojpt
ZW51TGlzdERlZmF1bHRFdmVudEhhbmRsZXIoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1l
bnQKIAogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVu
dCAmJiBldmVudC0+aXNNb3VzZUV2ZW50KCkgJiYgc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2
ZW50KS0+YnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikgewogICAgICAgICBlbGVtZW50LT5mb2N1cygp
OwotICAgICAgICBpZiAoZWxlbWVudC0+cmVuZGVyZXIoKSAmJiBlbGVtZW50LT5yZW5kZXJlcigp
LT5pc01lbnVMaXN0KCkpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1JlbmRlcmVyKCkgJiYg
ZWxlbWVudC0+cmVuZGVyZXIoKS0+aXNNZW51TGlzdCgpKSB7CiAgICAgICAgICAgICBpZiAoUmVu
ZGVyTWVudUxpc3QqIG1lbnVMaXN0ID0gdG9SZW5kZXJNZW51TGlzdChlbGVtZW50LT5yZW5kZXJl
cigpKSkgewogICAgICAgICAgICAgICAgIGlmIChtZW51TGlzdC0+cG9wdXBJc1Zpc2libGUoKSkK
ICAgICAgICAgICAgICAgICAgICAgbWVudUxpc3QtPmhpZGVQb3B1cCgpOwpAQCAtNzU0LDcgKzc1
NCw3IEBAIHZvaWQgU2VsZWN0RWxlbWVudDo6bGlzdEJveERlZmF1bHRFdmVudEhhbmRsZXIoU2Vs
ZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50ICYmIGV2ZW50LT5pc01vdXNlRXZlbnQoKSAmJiBz
dGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZlbnQpLT5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB7
CiAgICAgICAgIGVsZW1lbnQtPmZvY3VzKCk7CiAKLSAgICAgICAgaWYgKCFlbGVtZW50LT5yZW5k
ZXJlcigpKSAvLyBDYWxsaW5nIGZvY3VzKCkgbWF5IGNhdXNlIHVzIHRvIGxvc2Ugb3VyIHJlbmRl
cmVyLCBpbiB3aGljaCBjYXNlIGRvIG5vdCB3YW50IHRvIGhhbmRsZSB0aGUgZXZlbnQuCisgICAg
ICAgIGlmICghZWxlbWVudC0+aGFzUmVuZGVyZXIoKSkgLy8gQ2FsbGluZyBmb2N1cygpIG1heSBj
YXVzZSB1cyB0byBsb3NlIG91ciByZW5kZXJlciwgaW4gd2hpY2ggY2FzZSBkbyBub3Qgd2FudCB0
byBoYW5kbGUgdGhlIGV2ZW50LgogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIENv
bnZlcnQgdG8gY29vcmRzIHJlbGF0aXZlIHRvIHRoZSBsaXN0IGJveCBpZiBuZWVkZWQuCkBAIC04
NzYsNyArODc2LDcgQEAgdm9pZCBTZWxlY3RFbGVtZW50OjpsaXN0Qm94RGVmYXVsdEV2ZW50SGFu
ZGxlcihTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCoKIAogdm9pZCBTZWxlY3RFbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKFNlbGVjdEVsZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50
KiBlbGVtZW50LCBFdmVudCogZXZlbnQsIEhUTUxGb3JtRWxlbWVudCogaHRtbEZvcm0pCiB7Ci0g
ICAgaWYgKCFlbGVtZW50LT5yZW5kZXJlcigpKQorICAgIGlmICghZWxlbWVudC0+aGFzUmVuZGVy
ZXIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGRhdGEudXNlc01lbnVMaXN0KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TdHlsZUVsZW1lbnQuY3BwCmluZGV4IDUzMzkzNGM4MjdlNWFmNzhhZTgwYjI3
ZWI3NjQ1Yzk0MzAxYjFkYzcuLmJlYWQ0YTE1NTMyODA2NzYwN2FkNTQxMDYwMjQzYTNhNTRkN2Rm
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZUVsZW1lbnQuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZv
aWQgU3R5bGVFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCwg
RWxlbWVudCogZWxlbWVudCkKICAgICB9CiAKICAgICAvLyBJZiB3ZSdyZSBpbiBkb2N1bWVudCB0
ZWFyZG93biwgdGhlbiB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueSBub3RpZmljYXRpb24gb2Ygb3Vy
IHNoZWV0J3MgcmVtb3ZhbC4KLSAgICBpZiAoZG9jdW1lbnQtPnJlbmRlcmVyKCkpCisgICAgaWYg
KGRvY3VtZW50LT5oYXNSZW5kZXJlcigpKQogICAgICAgICBkb2N1bWVudC0+c3R5bGVTZWxlY3Rv
ckNoYW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAppbmRleCA0NGM5
Y2M4NGYwN2M3NGRhOTZkZGUxYzg1YmE0OTM5MDIyYTc3MDE3Li5jZDdmNjkwMjhlMDYxYmQ3NDUz
MzA1YzNlOWU1NzRmYjc2NDdhODc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCkBAIC02OCw3ICs2OCw3IEBA
IFBhc3NSZWZQdHI8VGV4dD4gVGV4dDo6c3BsaXRUZXh0KHVuc2lnbmVkIG9mZnNldCwgRXhjZXB0
aW9uQ29kZSYgZWMpCiAgICAgaWYgKHBhcmVudE5vZGUoKSkKICAgICAgICAgZG9jdW1lbnQoKS0+
dGV4dE5vZGVTcGxpdCh0aGlzKTsKIAotICAgIGlmIChyZW5kZXJlcigpKQorICAgIGlmIChoYXNS
ZW5kZXJlcigpKQogICAgICAgICB0b1JlbmRlclRleHQocmVuZGVyZXIoKSktPnNldFRleHRXaXRo
T2Zmc2V0KGRhdGFJbXBsKCksIDAsIG9sZFN0ci0+bGVuZ3RoKCkpOwogCiAgICAgcmV0dXJuIG5l
d1RleHQucmVsZWFzZSgpOwpAQCAtMjYwLDExICsyNjAsMTEgQEAgdm9pZCBUZXh0OjphdHRhY2go
KQogdm9pZCBUZXh0OjpyZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2UpCiB7CiAgICAgaWYg
KGNoYW5nZSAhPSBOb0NoYW5nZSAmJiBwYXJlbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKHJlbmRl
cmVyKCkpCisgICAgICAgIGlmIChoYXNSZW5kZXJlcigpKQogICAgICAgICAgICAgcmVuZGVyZXIo
KS0+c2V0U3R5bGUocGFyZW50Tm9kZSgpLT5yZW5kZXJlcigpLT5zdHlsZSgpKTsKICAgICB9CiAg
ICAgaWYgKG5lZWRzU3R5bGVSZWNhbGMoKSkgewotICAgICAgICBpZiAocmVuZGVyZXIoKSkgewor
ICAgICAgICBpZiAoaGFzUmVuZGVyZXIoKSkgewogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkt
PmlzVGV4dCgpKQogICAgICAgICAgICAgICAgIHRvUmVuZGVyVGV4dChyZW5kZXJlcigpKS0+c2V0
VGV4dChkYXRhSW1wbCgpKTsKICAgICAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4IGZlMzU5ZDc4NWVhMmFjODFhMjRkMGY0YWU4
YzcwYzA2Yjk4NGMxYTMuLjJlZDQ5YjkyMTlkMmY2ODY1ODE4OGQ2YTVmMGY2YzdmNDEwOWIzOTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCkBAIC0z
NjUsNyArMzY1LDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlSZWxhdGl2ZUZvbnRT
dHlsZUNoYW5nZShFZGl0aW5nU3R5bGUqIHN0eWxlKQogICAgICAgICAgICAgaWYgKCFub2RlRnVs
bHlTZWxlY3RlZChub2RlLCBzdGFydCwgZW5kKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG5vZGUpOwotICAgICAgICB9IGVs
c2UgaWYgKG5vZGUtPmlzVGV4dE5vZGUoKSAmJiBub2RlLT5yZW5kZXJlcigpICYmIG5vZGUtPnBh
cmVudE5vZGUoKSAhPSBsYXN0U3R5bGVkTm9kZSkgeworICAgICAgICB9IGVsc2UgaWYgKG5vZGUt
PmlzVGV4dE5vZGUoKSAmJiBub2RlLT5oYXNSZW5kZXJlcigpICYmIG5vZGUtPnBhcmVudE5vZGUo
KSAhPSBsYXN0U3R5bGVkTm9kZSkgewogICAgICAgICAgICAgLy8gTGFzdCBzdHlsZWQgbm9kZSB3
YXMgbm90IHBhcmVudCBub2RlIG9mIHRoaXMgdGV4dCBub2RlLCBidXQgd2Ugd2lzaCB0byBzdHls
ZSB0aGlzCiAgICAgICAgICAgICAvLyB0ZXh0IG5vZGUuIFRvIG1ha2UgdGhpcyBwb3NzaWJsZSwg
YWRkIGEgc3R5bGUgc3BhbiB0byBzdXJyb3VuZCB0aGlzIHRleHQgbm9kZS4KICAgICAgICAgICAg
IFJlZlB0cjxIVE1MRWxlbWVudD4gc3BhbiA9IGNyZWF0ZVN0eWxlU3BhbkVsZW1lbnQoZG9jdW1l
bnQoKSk7CkBAIC03MDksNyArNzA5LDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJ
bmxpbmVTdHlsZVRvTm9kZVJhbmdlKEVkaXRpbmdTdHlsZSogc3R5bGUsIE5vZGUqIG4KICAgICBm
b3IgKFJlZlB0cjxOb2RlPiBuZXh0OyBub2RlICYmIG5vZGUgIT0gcGFzdEVuZE5vZGU7IG5vZGUg
PSBuZXh0LmdldCgpKSB7CiAgICAgICAgIG5leHQgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKCk7
CiAKLSAgICAgICAgaWYgKCFub2RlLT5yZW5kZXJlcigpIHx8ICFub2RlLT5yZW5kZXJlcklzRWRp
dGFibGUoKSkKKyAgICAgICAgaWYgKCFub2RlLT5oYXNSZW5kZXJlcigpIHx8ICFub2RlLT5yZW5k
ZXJlcklzRWRpdGFibGUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKICAgICAg
ICAgaWYgKCFub2RlLT5yZW5kZXJlcklzUmljaGx5RWRpdGFibGUoKSAmJiBub2RlLT5pc0hUTUxF
bGVtZW50KCkpIHsKQEAgLTkzOCw3ICs5MzgsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjph
cHBseUlubGluZVN0eWxlVG9QdXNoRG93bihOb2RlKiBub2RlLCBFZGl0aW5nU3R5bGUqIHN0eQog
ewogICAgIEFTU0VSVChub2RlKTsKIAotICAgIGlmICghc3R5bGUgfHwgc3R5bGUtPmlzRW1wdHko
KSB8fCAhbm9kZS0+cmVuZGVyZXIoKSkKKyAgICBpZiAoIXN0eWxlIHx8IHN0eWxlLT5pc0VtcHR5
KCkgfHwgIW5vZGUtPmhhc1JlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0
cjxFZGl0aW5nU3R5bGU+IG5ld0lubGluZVN0eWxlID0gc3R5bGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0JyZWFrQmxvY2txdW90ZUNvbW1hbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9CcmVha0Jsb2NrcXVvdGVDb21tYW5kLmNwcAppbmRleCA5MWY0OTZjYmY1
NWY4M2MyMWY4NDU2MDUwNzQ5NGM2MzFjYWE1YjYxLi5kOTQ4Zjc5NGM2NWUwNDE1OTVjNThlYTg3
OWI1MGM3N2Q1NDEzMGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0JyZWFr
QmxvY2txdW90ZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQnJlYWtC
bG9ja3F1b3RlQ29tbWFuZC5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIEJyZWFrQmxvY2tx
dW90ZUNvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICAgICAgLy8gZmluZCB0aGUgZmlyc3Qgb25l
IHNvIHRoYXQgd2Uga25vdyB3aGVyZSB0byBzdGFydCBudW1iZXJpbmcuCiAgICAgICAgICAgICB3
aGlsZSAobGlzdENoaWxkTm9kZSAmJiAhbGlzdENoaWxkTm9kZS0+aGFzVGFnTmFtZShsaVRhZykp
CiAgICAgICAgICAgICAgICAgbGlzdENoaWxkTm9kZSA9IGxpc3RDaGlsZE5vZGUtPm5leHRTaWJs
aW5nKCk7Ci0gICAgICAgICAgICBpZiAobGlzdENoaWxkTm9kZSAmJiBsaXN0Q2hpbGROb2RlLT5y
ZW5kZXJlcigpICYmIGxpc3RDaGlsZE5vZGUtPnJlbmRlcmVyKCktPmlzTGlzdEl0ZW0oKSkKKyAg
ICAgICAgICAgIGlmIChsaXN0Q2hpbGROb2RlICYmIGxpc3RDaGlsZE5vZGUtPmhhc1JlbmRlcmVy
KCkgJiYgbGlzdENoaWxkTm9kZS0+cmVuZGVyZXIoKS0+aXNMaXN0SXRlbSgpKQogICAgICAgICAg
ICAgICAgIHNldE5vZGVBdHRyaWJ1dGUoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGNsb25lZENoaWxk
LmdldCgpKSwgc3RhcnRBdHRyLCBTdHJpbmc6Om51bWJlcih0b1JlbmRlckxpc3RJdGVtKGxpc3RD
aGlsZE5vZGUtPnJlbmRlcmVyKCkpLT52YWx1ZSgpKSk7CiAgICAgICAgIH0KICAgICAgICAgICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApp
bmRleCBkOTJkNWE1OTI0OGVkNDE3OWQ2YzhmZjliNmRjNDViODkwYmQ2NGM4Li41ZGZkY2JlZTJj
OWQxOGFkYzM2ZmRiOGE0MmY2ZjA5YmM3YTA0MDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtMjQwLDcgKzI0MCw3IEBAIHN0YXRp
YyBib29sIGhhc0FSZW5kZXJlZERlc2NlbmRhbnQoTm9kZSogbm9kZSkKIHsKICAgICBOb2RlKiBu
ID0gbm9kZS0+Zmlyc3RDaGlsZCgpOwogICAgIHdoaWxlIChuKSB7Ci0gICAgICAgIGlmIChuLT5y
ZW5kZXJlcigpKQorICAgICAgICBpZiAobi0+aGFzUmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZShub2RlKTsKICAgICB9
CkBAIC02NDMsNyArNjQzLDcgQEAgUGFzc1JlZlB0cjxOb2RlPiBDb21wb3NpdGVFZGl0Q29tbWFu
ZDo6YXBwZW5kQmxvY2tQbGFjZWhvbGRlcihQYXNzUmVmUHRyPEVsZW1lbnQKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgCiAgICAgLy8gU2hvdWxkIGFzc2VydCBpc0Jsb2NrRmxvdyB8fCBpc0lubGlu
ZUZsb3cgd2hlbiBkZWxldGlvbiBpbXByb3Zlcy4gU2VlIDQyNDQ5NjQuCi0gICAgQVNTRVJUKGNv
bnRhaW5lci0+cmVuZGVyZXIoKSk7CisgICAgQVNTRVJUKGNvbnRhaW5lci0+aGFzUmVuZGVyZXIo
KSk7CiAKICAgICBSZWZQdHI8Tm9kZT4gcGxhY2Vob2xkZXIgPSBjcmVhdGVCbG9ja1BsYWNlaG9s
ZGVyRWxlbWVudChkb2N1bWVudCgpKTsKICAgICBhcHBlbmROb2RlKHBsYWNlaG9sZGVyLCBjb250
YWluZXIpOwpAQCAtNjU2LDcgKzY1Niw3IEBAIFBhc3NSZWZQdHI8Tm9kZT4gQ29tcG9zaXRlRWRp
dENvbW1hbmQ6Omluc2VydEJsb2NrUGxhY2Vob2xkZXIoY29uc3QgUG9zaXRpb24mIHBvCiAgICAg
ICAgIHJldHVybiAwOwogCiAgICAgLy8gU2hvdWxkIGFzc2VydCBpc0Jsb2NrRmxvdyB8fCBpc0lu
bGluZUZsb3cgd2hlbiBkZWxldGlvbiBpbXByb3Zlcy4gIFNlZSA0MjQ0OTY0LgotICAgIEFTU0VS
VChwb3MuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKSk7CisgICAgQVNTRVJUKHBvcy5kZXBy
ZWNhdGVkTm9kZSgpLT5oYXNSZW5kZXJlcigpKTsKIAogICAgIFJlZlB0cjxOb2RlPiBwbGFjZWhv
bGRlciA9IGNyZWF0ZUJsb2NrUGxhY2Vob2xkZXJFbGVtZW50KGRvY3VtZW50KCkpOwogICAgIGlu
c2VydE5vZGVBdChwbGFjZWhvbGRlciwgcG9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDQ4MWYwMzgyNGJmMWFkZmFkMDgz
M2FiNGZiYTkyYTQ4YzAxMGQ4NmUuLmUyYWE5MmRmNDY5OGVjYzM3NDk1OGRlZDYxZDViNGUwNTAy
NWVjZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9u
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25D
b21tYW5kLmNwcApAQCAtNDY3LDcgKzQ2Nyw3IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFu
ZDo6aGFuZGxlR2VuZXJhbERlbGV0ZSgpCiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGUgc2Vs
ZWN0aW9uIHRvIGRlbGV0ZSBpcyBhbGwgaW4gb25lIG5vZGUuCi0gICAgICAgIGlmICghc3RhcnRO
b2RlLT5yZW5kZXJlcigpIHx8ICghc3RhcnRPZmZzZXQgJiYgbV9kb3duc3RyZWFtRW5kLmF0TGFz
dEVkaXRpbmdQb3NpdGlvbkZvck5vZGUoKSkpCisgICAgICAgIGlmICghc3RhcnROb2RlLT5oYXNS
ZW5kZXJlcigpIHx8ICghc3RhcnRPZmZzZXQgJiYgbV9kb3duc3RyZWFtRW5kLmF0TGFzdEVkaXRp
bmdQb3NpdGlvbkZvck5vZGUoKSkpCiAgICAgICAgICAgICByZW1vdmVOb2RlKHN0YXJ0Tm9kZSk7
CiAgICAgfQogICAgIGVsc2UgewpAQCAtNTU1LDEyICs1NTUsMTIgQEAgdm9pZCBEZWxldGVTZWxl
Y3Rpb25Db21tYW5kOjpmaXh1cFdoaXRlc3BhY2UoKQogICAgIC8vIEZJWE1FOiBpc1JlbmRlcmVk
Q2hhcmFjdGVyIHNob3VsZCBiZSByZW1vdmVkLCBhbmQgd2Ugc2hvdWxkIHVzZSBWaXNpYmxlUG9z
aXRpb246OmNoYXJhY3RlckFmdGVyIGFuZCBWaXNpYmxlUG9zaXRpb246OmNoYXJhY3RlckJlZm9y
ZQogICAgIGlmIChtX2xlYWRpbmdXaGl0ZXNwYWNlLmlzTm90TnVsbCgpICYmICFtX2xlYWRpbmdX
aGl0ZXNwYWNlLmlzUmVuZGVyZWRDaGFyYWN0ZXIoKSAmJiBtX2xlYWRpbmdXaGl0ZXNwYWNlLmRl
cHJlY2F0ZWROb2RlKCktPmlzVGV4dE5vZGUoKSkgewogICAgICAgICBUZXh0KiB0ZXh0Tm9kZSA9
IHN0YXRpY19jYXN0PFRleHQqPihtX2xlYWRpbmdXaGl0ZXNwYWNlLmRlcHJlY2F0ZWROb2RlKCkp
OwotICAgICAgICBBU1NFUlQoIXRleHROb2RlLT5yZW5kZXJlcigpIHx8IHRleHROb2RlLT5yZW5k
ZXJlcigpLT5zdHlsZSgpLT5jb2xsYXBzZVdoaXRlU3BhY2UoKSk7CisgICAgICAgIEFTU0VSVCgh
dGV4dE5vZGUtPmhhc1JlbmRlcmVyKCkgfHwgdGV4dE5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCkt
PmNvbGxhcHNlV2hpdGVTcGFjZSgpKTsKICAgICAgICAgcmVwbGFjZVRleHRJbk5vZGVQcmVzZXJ2
aW5nTWFya2Vycyh0ZXh0Tm9kZSwgbV9sZWFkaW5nV2hpdGVzcGFjZS5kZXByZWNhdGVkRWRpdGlu
Z09mZnNldCgpLCAxLCBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkpOwogICAgIH0KICAgICBpZiAo
bV90cmFpbGluZ1doaXRlc3BhY2UuaXNOb3ROdWxsKCkgJiYgIW1fdHJhaWxpbmdXaGl0ZXNwYWNl
LmlzUmVuZGVyZWRDaGFyYWN0ZXIoKSAmJiBtX3RyYWlsaW5nV2hpdGVzcGFjZS5kZXByZWNhdGVk
Tm9kZSgpLT5pc1RleHROb2RlKCkpIHsKICAgICAgICAgVGV4dCogdGV4dE5vZGUgPSBzdGF0aWNf
Y2FzdDxUZXh0Kj4obV90cmFpbGluZ1doaXRlc3BhY2UuZGVwcmVjYXRlZE5vZGUoKSk7Ci0gICAg
ICAgIEFTU0VSVCghdGV4dE5vZGUtPnJlbmRlcmVyKCkgfHx0ZXh0Tm9kZS0+cmVuZGVyZXIoKS0+
c3R5bGUoKS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCkpOworICAgICAgICBBU1NFUlQoIXRleHROb2Rl
LT5oYXNSZW5kZXJlcigpIHx8IHRleHROb2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5jb2xsYXBz
ZVdoaXRlU3BhY2UoKSk7CiAgICAgICAgIHJlcGxhY2VUZXh0SW5Ob2RlUHJlc2VydmluZ01hcmtl
cnModGV4dE5vZGUsIG1fdHJhaWxpbmdXaGl0ZXNwYWNlLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0
KCksIDEsIG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCmluZGV4IDJlNGZjNDEyMzRmNzExZGFkN2VjNzczZTg0NmIyNjdiZTMyMTE4
MDQuLmMyYTU0MDNmZGRlZTg0OWZmZjg5MzU5Njc3OWFkZjcyMTIzMTY1NzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKQEAgLTE2MTEsNyArMTYxMSw3IEBAIHZvaWQgRWRpdG9yOjpzZXRD
b21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVu
ZGVybGluCiAgICAgICAgICAgICAgICAgbV9jdXN0b21Db21wb3NpdGlvblVuZGVybGluZXNbaV0u
c3RhcnRPZmZzZXQgKz0gYmFzZU9mZnNldDsKICAgICAgICAgICAgICAgICBtX2N1c3RvbUNvbXBv
c2l0aW9uVW5kZXJsaW5lc1tpXS5lbmRPZmZzZXQgKz0gYmFzZU9mZnNldDsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGlmIChiYXNlTm9kZS0+cmVuZGVyZXIoKSkKKyAgICAgICAgICAgIGlm
IChiYXNlTm9kZS0+aGFzUmVuZGVyZXIoKSkKICAgICAgICAgICAgICAgICBiYXNlTm9kZS0+cmVu
ZGVyZXIoKS0+cmVwYWludCgpOwogCiAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydCA9IG1pbihi
YXNlT2Zmc2V0ICsgc2VsZWN0aW9uU3RhcnQsIGV4dGVudE9mZnNldCk7CkBAIC0yOTMwLDcgKzI5
MzAsNyBAQCBSZW5kZXJTdHlsZSogRWRpdG9yOjpzdHlsZUZvclNlbGVjdGlvblN0YXJ0KE5vZGUg
KiZub2RlVG9SZW1vdmUpIGNvbnN0CiAgICAgQVNTRVJUKCFlYyk7CiAKICAgICBub2RlVG9SZW1v
dmUgPSBzdHlsZUVsZW1lbnQuZ2V0KCk7Ci0gICAgcmV0dXJuIHN0eWxlRWxlbWVudC0+cmVuZGVy
ZXIoKSA/IHN0eWxlRWxlbWVudC0+cmVuZGVyZXIoKS0+c3R5bGUoKSA6IDA7CisgICAgcmV0dXJu
IHN0eWxlRWxlbWVudC0+aGFzUmVuZGVyZXIoKSA/IHN0eWxlRWxlbWVudC0+cmVuZGVyZXIoKS0+
c3R5bGUoKSA6IDA7CiB9CiAKIC8vIFNlYXJjaGVzIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUg
ZG9jdW1lbnQgaWYgbm90aGluZyBpcyBzZWxlY3RlZC4KQEAgLTMxODYsNyArMzE4Niw3IEBAIHZv
aWQgRWRpdG9yOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIG9sZFNlbGVjdGlvbiwgRnJhCiBzdGF0aWMgTm9kZSogZmluZEZpcnN0TWFya2FibGUoTm9k
ZSogbm9kZSkKIHsKICAgICB3aGlsZSAobm9kZSkgewotICAgICAgICBpZiAoIW5vZGUtPnJlbmRl
cmVyKCkpCisgICAgICAgIGlmICghbm9kZS0+aGFzUmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKS0+aXNUZXh0KCkpCiAgICAgICAg
ICAgICByZXR1cm4gbm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJh
bWVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5j
cHAKaW5kZXggZDUwZjMxOTcwNzY5ODU0YTdlNjkyMzJiYzE3ZDY1ZGYxMWZkN2ZmMS4uYmMwZGFj
ZTJjZGIyMGIwN2JmNGM3YjhjZTQ1YzU3NmUwMGY2NWFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAgLTEwNzksNyArMTA3OSw3IEBAIGJvb2wgQ2FyZXRC
YXNlOjp1cGRhdGVDYXJldFJlY3QoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBWaXNpYmxlUG9z
aXRpb24mIGNhcmV0CiAgICAgaWYgKGNhcmV0UG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIEFTU0VSVChjYXJldFBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCku
ZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKSk7CisgICAgQVNTRVJUKGNhcmV0UG9zaXRpb24u
ZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpLT5oYXNSZW5kZXJlcigpKTsKIAogICAg
IC8vIEZpcnN0IGNvbXB1dGUgYSByZWN0IGxvY2FsIHRvIHRoZSByZW5kZXJlciBhdCB0aGUgc2Vs
ZWN0aW9uIHN0YXJ0LgogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXI7CkBAIC0xMjgzLDcgKzEy
ODMsNyBAQCB2b2lkIENhcmV0QmFzZTo6cGFpbnRDYXJldChOb2RlKiBub2RlLCBHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEludFBvaW50JgogICAgIENvbG9yIGNhcmV0Q29sb3IgPSBD
b2xvcjo6YmxhY2s7CiAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gQ29sb3JTcGFjZURldmlj
ZVJHQjsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gbm9kZS0+cm9vdEVkaXRhYmxlRWxlbWVudCgp
OwotICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQtPnJlbmRlcmVyKCkpIHsKKyAgICBpZiAoZWxl
bWVudCAmJiBlbGVtZW50LT5oYXNSZW5kZXJlcigpKSB7CiAgICAgICAgIGNhcmV0Q29sb3IgPSBl
bGVtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJv
cGVydHlDb2xvcik7CiAgICAgICAgIGNvbG9yU3BhY2UgPSBlbGVtZW50LT5yZW5kZXJlcigpLT5z
dHlsZSgpLT5jb2xvclNwYWNlKCk7CiAgICAgfQpAQCAtMTM2OSw3ICsxMzY5LDcgQEAgYm9vbCBG
cmFtZVNlbGVjdGlvbjo6Y29udGFpbnMoY29uc3QgSW50UG9pbnQmIHBvaW50KQogICAgIC8vIFRy
ZWF0IGEgY29sbGFwc2VkIHNlbGVjdGlvbiBsaWtlIG5vIHNlbGVjdGlvbi4KICAgICBpZiAoIWlz
UmFuZ2UoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZG9jdW1lbnQtPnJlbmRl
cmVyKCkpIAorICAgIGlmICghZG9jdW1lbnQtPmhhc1JlbmRlcmVyKCkpIAogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgCiAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVz
dDo6UmVhZE9ubHkgfApAQCAtMTM3Nyw3ICsxMzc3LDcgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6
Y29udGFpbnMoY29uc3QgSW50UG9pbnQmIHBvaW50KQogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0
KHBvaW50KTsKICAgICBkb2N1bWVudC0+cmVuZGVyVmlldygpLT5sYXllcigpLT5oaXRUZXN0KHJl
cXVlc3QsIHJlc3VsdCk7CiAgICAgTm9kZSogaW5uZXJOb2RlID0gcmVzdWx0LmlubmVyTm9kZSgp
OwotICAgIGlmICghaW5uZXJOb2RlIHx8ICFpbm5lck5vZGUtPnJlbmRlcmVyKCkpCisgICAgaWYg
KCFpbm5lck5vZGUgfHwgIWlubmVyTm9kZS0+aGFzUmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIAogICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zKGlubmVyTm9kZS0+
cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludChyZXN1bHQubG9jYWxQb2ludCgpKSk7CkBAIC0x
NTcxLDkgKzE1NzEsOSBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpmb2N1c2VkT3JBY3RpdmVTdGF0
ZUNoYW5nZWQoKQogICAgIC8vIHVwZGF0ZSBzdHlsZSBhbmQgdGhlbWUgc3RhdGUgdGhhdCBkZXBl
bmRlZCBvbiB0aG9zZS4KICAgICBpZiAoTm9kZSogbm9kZSA9IG1fZnJhbWUtPmRvY3VtZW50KCkt
PmZvY3VzZWROb2RlKCkpIHsKICAgICAgICAgbm9kZS0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwot
ICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCkpCi0g
ICAgICAgICAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPnN0eWxlKCktPmhhc0FwcGVhcmFu
Y2UoKSkKLSAgICAgICAgICAgICAgICByZW5kZXJlci0+dGhlbWUoKS0+c3RhdGVDaGFuZ2VkKHJl
bmRlcmVyLCBGb2N1c1N0YXRlKTsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5v
ZGUtPnJlbmRlcmVyKCk7CisgICAgICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+c3R5bGUo
KS0+aGFzQXBwZWFyYW5jZSgpKQorICAgICAgICAgICAgcmVuZGVyZXItPnRoZW1lKCktPnN0YXRl
Q2hhbmdlZChyZW5kZXJlciwgRm9jdXNTdGF0ZSk7CiAgICAgfQogCiAgICAgLy8gU2VjdXJlIGtl
eWJvYXJkIGVudHJ5IGlzIHNldCBieSB0aGUgYWN0aXZlIGZyYW1lLgpAQCAtMTg3Niw3ICsxODc2
LDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6cmV2ZWFsU2VsZWN0aW9uKGNvbnN0IFNjcm9sbEFs
aWdubWVudCYgYWxpZ25tZW50LCBib29sIHJldmUKIAogICAgIFBvc2l0aW9uIHN0YXJ0ID0gdGhp
cy0+c3RhcnQoKTsKICAgICBBU1NFUlQoc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSk7Ci0gICAgaWYg
KHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkgJiYgc3RhcnQuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVy
ZXIoKSkgeworICAgIGlmIChzdGFydC5kZXByZWNhdGVkTm9kZSgpICYmIHN0YXJ0LmRlcHJlY2F0
ZWROb2RlKCktPmhhc1JlbmRlcmVyKCkpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBv
bmx5IGhhbmRsZXMgc2Nyb2xsaW5nIHRoZSBzdGFydENvbnRhaW5lcidzIGxheWVyLCBidXQKICAg
ICAgICAgLy8gdGhlIHNlbGVjdGlvbiByZWN0IGNvdWxkIGludGVyc2VjdCBtb3JlIHRoYW4ganVz
dCB0aGF0LgogICAgICAgICAvLyBTZWUgPHJkYXI6Ly9wcm9ibGVtLzQ3OTk4OTk+LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuY3BwCmluZGV4IGFkMDhmYmFkY2Y3OTM1
Y2E1ZTg4MjgzNjY5MmMwZmQ0ZmQ0NDczYWQuLmYwNjljYjQwMDVhMjNlZTAwNTNlNTMwNjNhMTVj
ZjBjMGNlMWFlMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSFRNTEludGVy
Y2hhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5j
cHAKQEAgLTU0LDcgKzU0LDcgQEAgU3RyaW5nIGNvbnZlcnRlZFNwYWNlU3RyaW5nKCkKIFN0cmlu
ZyBjb252ZXJ0SFRNTFRleHRUb0ludGVyY2hhbmdlRm9ybWF0KGNvbnN0IFN0cmluZyYgaW4sIGNv
bnN0IFRleHQqIG5vZGUpCiB7CiAgICAgLy8gQXNzdW1lIGFsbCB0aGUgdGV4dCBjb21lcyBmcm9t
IG5vZGUuCi0gICAgaWYgKG5vZGUtPnJlbmRlcmVyKCkgJiYgbm9kZS0+cmVuZGVyZXIoKS0+c3R5
bGUoKS0+cHJlc2VydmVOZXdsaW5lKCkpCisgICAgaWYgKG5vZGUtPmhhc1JlbmRlcmVyKCkgJiYg
bm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+cHJlc2VydmVOZXdsaW5lKCkpCiAgICAgICAgIHJl
dHVybiBpbjsKIAogICAgIFZlY3RvcjxVQ2hhcj4gczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAKaW5kZXggN2VkNGMwY2RiNmVjODY3Yzg1OWNk
NjVmZDExMTk3ZWVkNzk1MzU1MS4uNzIzNWNmODc2YWI1YWJiYzMzYjA0OGFiYjY5Y2ZmMTBkYWEz
NmE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbmRlbnRPdXRkZW50Q29t
bWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFu
ZC5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIEluZGVudE91dGRlbnRDb21tYW5kOjpvdXRk
ZW50UGFyYWdyYXBoKCkKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25JbkVuY2xvc2luZ0Js
b2NrID0gVmlzaWJsZVBvc2l0aW9uKGZpcnN0UG9zaXRpb25Jbk5vZGUoZW5jbG9zaW5nTm9kZSkp
OwogICAgIC8vIElmIHRoZSBibG9ja3F1b3RlIGlzIGlubGluZSwgdGhlIHN0YXJ0IG9mIHRoZSBl
bmNsb3NpbmcgYmxvY2sgY29pbmNpZGVzIHdpdGgKICAgICAvLyBwb3NpdGlvbkluRW5jbG9zaW5n
QmxvY2suCi0gICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0T2ZFbmNsb3NpbmdCbG9jayA9IChlbmNs
b3NpbmdOb2RlLT5yZW5kZXJlcigpICYmIGVuY2xvc2luZ05vZGUtPnJlbmRlcmVyKCktPmlzSW5s
aW5lKCkpID8gcG9zaXRpb25JbkVuY2xvc2luZ0Jsb2NrIDogc3RhcnRPZkJsb2NrKHBvc2l0aW9u
SW5FbmNsb3NpbmdCbG9jayk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0T2ZFbmNsb3NpbmdC
bG9jayA9IChlbmNsb3NpbmdOb2RlLT5oYXNSZW5kZXJlcigpICYmIGVuY2xvc2luZ05vZGUtPnJl
bmRlcmVyKCktPmlzSW5saW5lKCkpID8gcG9zaXRpb25JbkVuY2xvc2luZ0Jsb2NrIDogc3RhcnRP
ZkJsb2NrKHBvc2l0aW9uSW5FbmNsb3NpbmdCbG9jayk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIGxh
c3RQb3NpdGlvbkluRW5jbG9zaW5nQmxvY2sgPSBWaXNpYmxlUG9zaXRpb24obGFzdFBvc2l0aW9u
SW5Ob2RlKGVuY2xvc2luZ05vZGUpKTsKICAgICBWaXNpYmxlUG9zaXRpb24gZW5kT2ZFbmNsb3Np
bmdCbG9jayA9IGVuZE9mQmxvY2sobGFzdFBvc2l0aW9uSW5FbmNsb3NpbmdCbG9jayk7CiAgICAg
aWYgKHZpc2libGVTdGFydE9mUGFyYWdyYXBoID09IHN0YXJ0T2ZFbmNsb3NpbmdCbG9jayAmJgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAK
aW5kZXggNzZjOTA1Mjk1MTU5NDc0ZjU4OGQ3OGZjOTAzMGY2YjQyMmRjNWIzMS4uODY2NjZhZmVm
NDM4MWNiMDI5NzM5ZGQzZTJjY2Y3YWQ1YmNmMWJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCkBAIC04Miw3ICs4Miw3IEBAIGJv
b2wgSW5zZXJ0TGluZUJyZWFrQ29tbWFuZDo6c2hvdWxkVXNlQnJlYWtFbGVtZW50KGNvbnN0IFBv
c2l0aW9uJiBpbnNlcnRpb25Qb3MpCiAgICAgLy8gdGhlIGlucHV0IGVsZW1lbnQsIGFuZCBpbiB0
aGF0IGNhc2Ugd2UgbmVlZCB0byBjaGVjayB0aGUgaW5wdXQgZWxlbWVudCdzCiAgICAgLy8gcGFy
ZW50J3MgcmVuZGVyZXIuCiAgICAgUG9zaXRpb24gcChpbnNlcnRpb25Qb3MucGFyZW50QW5jaG9y
ZWRFcXVpdmFsZW50KCkpOwotICAgIHJldHVybiBwLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVy
KCkgJiYgIXAuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+cHJlc2VydmVO
ZXdsaW5lKCk7CisgICAgcmV0dXJuIHAuZGVwcmVjYXRlZE5vZGUoKS0+aGFzUmVuZGVyZXIoKSAm
JiAhcC5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5wcmVzZXJ2ZU5ld2xp
bmUoKTsKIH0KIAogdm9pZCBJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0FwcGx5KCkKQEAgLTE0
OCw3ICsxNDgsNyBAQCB2b2lkIEluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBwbHkoKQogICAg
ICAgICAgICAgUG9zaXRpb24gcG9zaXRpb25CZWZvcmVUZXh0Tm9kZShwb3NpdGlvbkluUGFyZW50
QmVmb3JlTm9kZSh0ZXh0Tm9kZSkpOwogICAgICAgICAgICAgLy8gQ2xlYXIgb3V0IGFsbCB3aGl0
ZXNwYWNlIGFuZCBpbnNlcnQgb25lIG5vbi1icmVha2luZyBzcGFjZQogICAgICAgICAgICAgZGVs
ZXRlSW5zaWduaWZpY2FudFRleHREb3duc3RyZWFtKGVuZGluZ1Bvc2l0aW9uKTsKLSAgICAgICAg
ICAgIEFTU0VSVCghdGV4dE5vZGUtPnJlbmRlcmVyKCkgfHwgdGV4dE5vZGUtPnJlbmRlcmVyKCkt
PnN0eWxlKCktPmNvbGxhcHNlV2hpdGVTcGFjZSgpKTsKKyAgICAgICAgICAgIEFTU0VSVCghdGV4
dE5vZGUtPmhhc1JlbmRlcmVyKCkgfHwgdGV4dE5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCktPmNv
bGxhcHNlV2hpdGVTcGFjZSgpKTsKICAgICAgICAgICAgIC8vIERlbGV0aW5nIGluc2lnbmlmaWNh
bnQgd2hpdGVzcGFjZSB3aWxsIHJlbW92ZSB0ZXh0Tm9kZSBpZiBpdCBjb250YWlucyBub3RoaW5n
IGJ1dCBpbnNpZ25pZmljYW50IHdoaXRlc3BhY2UuCiAgICAgICAgICAgICBpZiAodGV4dE5vZGUt
PmluRG9jdW1lbnQoKSkKICAgICAgICAgICAgICAgICBpbnNlcnRUZXh0SW50b05vZGUodGV4dE5v
ZGUsIDAsIG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAppbmRl
eCBhM2I3NzYxYmZkZDgyY2NlNjAyMTY4NDk5NTUzZjJiNTYyMmE0YjY0Li4yNTg3NjQxNzVkMjk0
YTg4MTcwN2YwZTFhYjUxYTdlMjAxZDZkMTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAKQEAgLTE3
NSw3ICsxNzUsNyBAQCB2b2lkIEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRvQXBw
bHkoKQogICAgICAgICAgICAgfHwgaXNUYWJsZUNlbGwoc3RhcnRCbG9jaykKICAgICAgICAgICAg
IHx8IHN0YXJ0QmxvY2stPmhhc1RhZ05hbWUoZm9ybVRhZykKICAgICAgICAgICAgIC8vIEZJWE1F
OiBJZiB0aGUgbm9kZSBpcyBoaWRkZW4sIHdlIGRvbid0IGhhdmUgYSBjYW5vbmljYWwgcG9zaXRp
b24gc28gd2Ugd2lsbCBkbyB0aGUgd3JvbmcgdGhpbmcgZm9yIHRhYmxlcyBhbmQgPGhyPi4gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMzQyCi0gICAgICAgICAgICB8
fCAoIWNhbm9uaWNhbFBvcy5pc051bGwoKSAmJiBjYW5vbmljYWxQb3MuZGVwcmVjYXRlZE5vZGUo
KS0+cmVuZGVyZXIoKSAmJiBjYW5vbmljYWxQb3MuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIo
KS0+aXNUYWJsZSgpKQorICAgICAgICAgICAgfHwgKCFjYW5vbmljYWxQb3MuaXNOdWxsKCkgJiYg
Y2Fub25pY2FsUG9zLmRlcHJlY2F0ZWROb2RlKCktPmhhc1JlbmRlcmVyKCkgJiYgY2Fub25pY2Fs
UG9zLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCktPmlzVGFibGUoKSkKICAgICAgICAgICAg
IHx8ICghY2Fub25pY2FsUG9zLmlzTnVsbCgpICYmIGNhbm9uaWNhbFBvcy5kZXByZWNhdGVkTm9k
ZSgpLT5oYXNUYWdOYW1lKGhyVGFnKSkpIHsKICAgICAgICAgYXBwbHlDb21tYW5kVG9Db21wb3Np
dGUoSW5zZXJ0TGluZUJyZWFrQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCkpKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9y
Q29tbWFuZDo6ZG9BcHBseSgpCiAgICAgLy8gYWZ0ZXIgdGhlIHByZXNlcnZlZCBuZXdsaW5lLCBj
YXVzaW5nIHRoZSBuZXdsaW5lIHRvIGJlIHR1cm5lZCBpbnRvIGEgbmJzcC4KICAgICBpZiAobGVh
ZGluZ1doaXRlc3BhY2UuaXNOb3ROdWxsKCkgJiYgbGVhZGluZ1doaXRlc3BhY2UuZGVwcmVjYXRl
ZE5vZGUoKS0+aXNUZXh0Tm9kZSgpKSB7CiAgICAgICAgIFRleHQqIHRleHROb2RlID0gc3RhdGlj
X2Nhc3Q8VGV4dCo+KGxlYWRpbmdXaGl0ZXNwYWNlLmRlcHJlY2F0ZWROb2RlKCkpOwotICAgICAg
ICBBU1NFUlQoIXRleHROb2RlLT5yZW5kZXJlcigpIHx8IHRleHROb2RlLT5yZW5kZXJlcigpLT5z
dHlsZSgpLT5jb2xsYXBzZVdoaXRlU3BhY2UoKSk7CisgICAgICAgIEFTU0VSVCghdGV4dE5vZGUt
Pmhhc1JlbmRlcmVyKCkgfHwgdGV4dE5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCktPmNvbGxhcHNl
V2hpdGVTcGFjZSgpKTsKICAgICAgICAgcmVwbGFjZVRleHRJbk5vZGVQcmVzZXJ2aW5nTWFya2Vy
cyh0ZXh0Tm9kZSwgbGVhZGluZ1doaXRlc3BhY2UuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwg
MSwgbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpKTsKICAgICB9CiAgICAgCkBAIC0zNzQsNyArMzc0
LDcgQEAgdm9pZCBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpkb0FwcGx5KCkKICAg
ICAgICAgICAgIGluc2VydGlvblBvc2l0aW9uLm1vdmVUb09mZnNldCgwKTsKICAgICAgICAgaWYg
KCFpbnNlcnRpb25Qb3NpdGlvbi5pc1JlbmRlcmVkQ2hhcmFjdGVyKCkpIHsKICAgICAgICAgICAg
IC8vIENsZWFyIG91dCBhbGwgd2hpdGVzcGFjZSBhbmQgaW5zZXJ0IG9uZSBub24tYnJlYWtpbmcg
c3BhY2UKLSAgICAgICAgICAgIEFTU0VSVCghaW5zZXJ0aW9uUG9zaXRpb24uZGVwcmVjYXRlZE5v
ZGUoKS0+cmVuZGVyZXIoKSB8fCBpbnNlcnRpb25Qb3NpdGlvbi5kZXByZWNhdGVkTm9kZSgpLT5y
ZW5kZXJlcigpLT5zdHlsZSgpLT5jb2xsYXBzZVdoaXRlU3BhY2UoKSk7CisgICAgICAgICAgICBB
U1NFUlQoIWluc2VydGlvblBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCktPmhhc1JlbmRlcmVyKCkg
fHwgaW5zZXJ0aW9uUG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKS0+c3R5bGUo
KS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCkpOwogICAgICAgICAgICAgZGVsZXRlSW5zaWduaWZpY2Fu
dFRleHREb3duc3RyZWFtKGluc2VydGlvblBvc2l0aW9uKTsKICAgICAgICAgICAgIGlmIChpbnNl
cnRpb25Qb3NpdGlvbi5kZXByZWNhdGVkTm9kZSgpLT5pc1RleHROb2RlKCkpCiAgICAgICAgICAg
ICAgICAgaW5zZXJ0VGV4dEludG9Ob2RlKHN0YXRpY19jYXN0PFRleHQqPihpbnNlcnRpb25Qb3Np
dGlvbi5kZXByZWNhdGVkTm9kZSgpKSwgMCwgbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAK
aW5kZXggNjNkYzM4YzQ0NzZkNWI2ODkyN2E4YzRhZDNhMmFjYmNmY2Y3MDRlNC4uMWZlNDUzZDE0
ZThmYTMwYzhkNGM1MTU3ODJkZDQwZTFjZDVlZGQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTE0OCw3ICsxNDgsNyBA
QCBSZXBsYWNlbWVudEZyYWdtZW50OjpSZXBsYWNlbWVudEZyYWdtZW50KERvY3VtZW50KiBkb2N1
bWVudCwgRG9jdW1lbnRGcmFnbWVudCogZgogICAgIAogICAgIGlmICghZWRpdGFibGVSb290LT5n
ZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS53ZWJraXRCZWZvcmVUZXh0SW5z
ZXJ0ZWRFdmVudCkgJiYKICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGVzZSBjaGVja3Mgb25j
ZSB0ZXh0YXJlYXMgYW5kIHRleHRmaWVsZHMgYWN0dWFsbHkgcmVnaXN0ZXIgYW4gZXZlbnQgaGFu
ZGxlci4KLSAgICAgICAgIShzaGFkb3dBbmNlc3Rvck5vZGUgJiYgc2hhZG93QW5jZXN0b3JOb2Rl
LT5yZW5kZXJlcigpICYmIHNoYWRvd0FuY2VzdG9yTm9kZS0+cmVuZGVyZXIoKS0+aXNUZXh0Q29u
dHJvbCgpKSAmJgorICAgICAgICAhKHNoYWRvd0FuY2VzdG9yTm9kZSAmJiBzaGFkb3dBbmNlc3Rv
ck5vZGUtPmhhc1JlbmRlcmVyKCkgJiYgc2hhZG93QW5jZXN0b3JOb2RlLT5yZW5kZXJlcigpLT5p
c1RleHRDb250cm9sKCkpICYmCiAgICAgICAgIGVkaXRhYmxlUm9vdC0+cmVuZGVyZXJJc1JpY2hs
eUVkaXRhYmxlKCkpIHsKICAgICAgICAgcmVtb3ZlSW50ZXJjaGFuZ2VOb2RlcyhtX2ZyYWdtZW50
LmdldCgpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTEyLDcgKzUxMiw3IEBAIHZvaWQgUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5J
bmxpbmUoKQogdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlVW5yZW5kZXJlZFRl
eHROb2Rlc0F0RW5kcygpCiB7CiAgICAgZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVu
ZGluZ1N0eWxlc2hlZXRzKCk7Ci0gICAgaWYgKCFtX2xhc3RMZWFmSW5zZXJ0ZWQtPnJlbmRlcmVy
KCkKKyAgICBpZiAoIW1fbGFzdExlYWZJbnNlcnRlZC0+aGFzUmVuZGVyZXIoKQogICAgICAgICAm
JiBtX2xhc3RMZWFmSW5zZXJ0ZWQtPmlzVGV4dE5vZGUoKQogICAgICAgICAmJiAhZW5jbG9zaW5n
Tm9kZVdpdGhUYWcoZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKG1fbGFzdExlYWZJbnNlcnRl
ZC5nZXQoKSksIHNlbGVjdFRhZykKICAgICAgICAgJiYgIWVuY2xvc2luZ05vZGVXaXRoVGFnKGZp
cnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShtX2xhc3RMZWFmSW5zZXJ0ZWQuZ2V0KCkpLCBzY3Jp
cHRUYWcpKSB7CkBAIC01MjksOCArNTI5LDcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZDo6cmVtb3ZlVW5yZW5kZXJlZFRleHROb2Rlc0F0RW5kcygpCiAgICAgCiAgICAgLy8gV2UgZG9u
J3QgaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCBtX2ZpcnN0Tm9kZUluc2VydGVkIGlzbid0IGluc2lk
ZSBhIHNlbGVjdCBvciBzY3JpcHQgZWxlbWVudCwgYmVjYXVzZQogICAgIC8vIGl0IGlzIGEgdG9w
IGxldmVsIG5vZGUgaW4gdGhlIGZyYWdtZW50IGFuZCB0aGUgdXNlciBjYW4ndCBpbnNlcnQgaW50
byB0aG9zZSBlbGVtZW50cy4KLSAgICBpZiAoIW1fZmlyc3ROb2RlSW5zZXJ0ZWQtPnJlbmRlcmVy
KCkgJiYgCi0gICAgICAgIG1fZmlyc3ROb2RlSW5zZXJ0ZWQtPmlzVGV4dE5vZGUoKSkgeworICAg
IGlmICghbV9maXJzdE5vZGVJbnNlcnRlZC0+aGFzUmVuZGVyZXIoKSAmJiBtX2ZpcnN0Tm9kZUlu
c2VydGVkLT5pc1RleHROb2RlKCkpIHsKICAgICAgICAgaWYgKG1fZmlyc3ROb2RlSW5zZXJ0ZWQg
PT0gbV9sYXN0TGVhZkluc2VydGVkKSB7CiAgICAgICAgICAgICByZW1vdmVOb2RlKG1fZmlyc3RO
b2RlSW5zZXJ0ZWQuZ2V0KCkpOwogICAgICAgICAgICAgbV9maXJzdE5vZGVJbnNlcnRlZCA9IDA7
CkBAIC03NjMsNyArNzYyLDcgQEAgc3RhdGljIE5vZGUqIGVuY2xvc2luZ0lubGluZShOb2RlKiBu
b2RlKQogc3RhdGljIGJvb2wgaXNJbmxpbmVOb2RlV2l0aFN0eWxlKGNvbnN0IE5vZGUqIG5vZGUp
CiB7CiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBza2lwIG92ZXIgYW55IGJsb2NrIGVsZW1lbnRz
LgotICAgIGlmICghbm9kZS0+cmVuZGVyZXIoKSB8fCAhbm9kZS0+cmVuZGVyZXIoKS0+aXNJbmxp
bmUoKSkKKyAgICBpZiAoIW5vZGUtPmhhc1JlbmRlcmVyKCkgfHwgIW5vZGUtPnJlbmRlcmVyKCkt
PmlzSW5saW5lKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbm9kZS0+aXNI
VE1MRWxlbWVudCgpKQpAQCAtODA1LDggKzgwNCw4IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gV2UgY2FuIHNr
aXAgbWF0Y2hpbmcgdGhlIHN0eWxlIGlmIHRoZSBzZWxlY3Rpb24gaXMgcGxhaW4gdGV4dC4KLSAg
ICBpZiAoKHNlbGVjdGlvbi5zdGFydCgpLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkgJiYg
c2VsZWN0aW9uLnN0YXJ0KCkuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+
dXNlck1vZGlmeSgpID09IFJFQURfV1JJVEVfUExBSU5URVhUX09OTFkpCi0gICAgICAgICYmIChz
ZWxlY3Rpb24uZW5kKCkuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKSAmJiBzZWxlY3Rpb24u
ZW5kKCkuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+dXNlck1vZGlmeSgp
ID09IFJFQURfV1JJVEVfUExBSU5URVhUX09OTFkpKQorICAgIGlmICgoc2VsZWN0aW9uLnN0YXJ0
KCkuZGVwcmVjYXRlZE5vZGUoKS0+aGFzUmVuZGVyZXIoKSAmJiBzZWxlY3Rpb24uc3RhcnQoKS5k
ZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpLT5zdHlsZSgpLT51c2VyTW9kaWZ5KCkgPT0gUkVB
RF9XUklURV9QTEFJTlRFWFRfT05MWSkKKyAgICAgICAgJiYgKHNlbGVjdGlvbi5lbmQoKS5kZXBy
ZWNhdGVkTm9kZSgpLT5oYXNSZW5kZXJlcigpICYmIHNlbGVjdGlvbi5lbmQoKS5kZXByZWNhdGVk
Tm9kZSgpLT5yZW5kZXJlcigpLT5zdHlsZSgpLT51c2VyTW9kaWZ5KCkgPT0gUkVBRF9XUklURV9Q
TEFJTlRFWFRfT05MWSkpCiAgICAgICAgIG1fbWF0Y2hTdHlsZSA9IGZhbHNlOwogICAgIAogICAg
IGlmIChtX21hdGNoU3R5bGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U3BlbGxDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNw
cAppbmRleCBjNmNhOTI2OTAzNmQ1NGNkOTI1MWJlZDU0ZDc5Y2ZkOTA3MTA4NjMyLi5iZWU4NDM1
YTRiOTI3Njc5NzA0Mzc1MGY2YWU2ZDAzOWEyMmI3NjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9TcGVsbENoZWNrZXIuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgYm9vbCBTcGVsbENoZWNrZXI6
OmlzVmFsaWQoaW50IHNlcXVlbmNlKSBjb25zdAogCiBib29sIFNwZWxsQ2hlY2tlcjo6aXNDaGVj
a2FibGUoTm9kZSogbm9kZSkgY29uc3QKIHsKLSAgICByZXR1cm4gbm9kZSAmJiBub2RlLT5yZW5k
ZXJlcigpOworICAgIHJldHVybiBub2RlICYmIG5vZGUtPmhhc1JlbmRlcmVyKCk7CiB9CiAKIHZv
aWQgU3BlbGxDaGVja2VyOjpyZXF1ZXN0Q2hlY2tpbmdGb3IoVGV4dENoZWNraW5nVHlwZU1hc2sg
bWFzaywgTm9kZSogbm9kZSkKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIFNwZWxsQ2hlY2tlcjo6
ZGlkQ2hlY2soaW50IHNlcXVlbmNlLCBjb25zdCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYg
cmVzdQogICAgIGlmICghaXNWYWxpZChzZXF1ZW5jZSkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmICghbV9yZXF1ZXN0Tm9kZS0+cmVuZGVyZXIoKSkgeworICAgIGlmICghbV9yZXF1ZXN0Tm9k
ZS0+aGFzUmVuZGVyZXIoKSkgewogICAgICAgICBjbGVhclJlcXVlc3QoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJh
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCA1
NjVkMWM2N2QwMWE1MzUxMmE2NmQyZDg3MDI4M2ZmNDIwYzdmNTNlLi5hM2FkMWFjOTIxOWE4NDQ5
OTRmMmViNmRmMjY0NGU1YWRlMmM4NzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRl
cmF0b3IuY3BwCkBAIC00MTAsNyArNDEwLDcgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmFkdmFuY2Uo
KQogICAgICAgICAgICAgICAgIHdoaWxlICghbmV4dCAmJiBwYXJlbnROb2RlKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGlmICgocGFzdEVuZCAmJiBwYXJlbnROb2RlID09IG1fZW5kQ29udGFpbmVy
KSB8fCBtX2VuZENvbnRhaW5lci0+aXNEZXNjZW5kYW50T2YocGFyZW50Tm9kZSkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgaGF2ZVJl
bmRlcmVyID0gbV9ub2RlLT5yZW5kZXJlcigpOworICAgICAgICAgICAgICAgICAgICBib29sIGhh
dmVSZW5kZXJlciA9IG1fbm9kZS0+aGFzUmVuZGVyZXIoKTsKICAgICAgICAgICAgICAgICAgICAg
bV9ub2RlID0gcGFyZW50Tm9kZTsKICAgICAgICAgICAgICAgICAgICAgbV9mdWxseUNsaXBwZWRT
dGFjay5wb3AoKTsKICAgICAgICAgICAgICAgICAgICAgcGFyZW50Tm9kZSA9IG1fbm9kZS0+cGFy
ZW50T3JIb3N0Tm9kZSgpOwpAQCAtNzU0LDcgKzc1NCw3IEBAIHN0YXRpYyBib29sIHNob3VsZEVt
aXROZXdsaW5lQWZ0ZXJOb2RlKE5vZGUqIG5vZGUpCiAgICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyB0
aGUgdmVyeSBsYXN0IHJlbmRlcmVyIGluIHRoZSBkb2N1bWVudC4KICAgICAvLyBJZiBzbywgdGhl
biB3ZSBzaG91bGQgbm90IGVtaXQgYSBuZXdsaW5lLgogICAgIHdoaWxlICgobm9kZSA9IG5vZGUt
PnRyYXZlcnNlTmV4dFNpYmxpbmcoKSkpCi0gICAgICAgIGlmIChub2RlLT5yZW5kZXJlcigpKQor
ICAgICAgICBpZiAobm9kZS0+aGFzUmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTgxMSw3ICs4MTEsNyBAQCBzdGF0aWMgaW50IG1h
eE9mZnNldEluY2x1ZGluZ0NvbGxhcHNlZFNwYWNlcyhOb2RlKiBub2RlKQogewogICAgIGludCBv
ZmZzZXQgPSBjYXJldE1heE9mZnNldChub2RlKTsKIAotICAgIGlmIChub2RlLT5yZW5kZXJlcigp
ICYmIG5vZGUtPnJlbmRlcmVyKCktPmlzVGV4dCgpKQorICAgIGlmIChub2RlLT5oYXNSZW5kZXJl
cigpICYmIG5vZGUtPnJlbmRlcmVyKCktPmlzVGV4dCgpKQogICAgICAgICBvZmZzZXQgKz0gY29s
bGFwc2VkU3BhY2VMZW5ndGgodG9SZW5kZXJUZXh0KG5vZGUtPnJlbmRlcmVyKCkpLCBvZmZzZXQp
OwogCiAgICAgcmV0dXJuIG9mZnNldDsKQEAgLTgyMCw3ICs4MjAsNyBAQCBzdGF0aWMgaW50IG1h
eE9mZnNldEluY2x1ZGluZ0NvbGxhcHNlZFNwYWNlcyhOb2RlKiBub2RlKQogLy8gV2hldGhlciBv
ciBub3Qgd2Ugc2hvdWxkIGVtaXQgYSBjaGFyYWN0ZXIgYXMgd2UgZW50ZXIgbV9ub2RlIChpZiBp
dCdzIGEgY29udGFpbmVyKSBvciBhcyB3ZSBoaXQgaXQgKGlmIGl0J3MgYXRvbWljKS4KIGJvb2wg
VGV4dEl0ZXJhdG9yOjpzaG91bGRSZXByZXNlbnROb2RlT2Zmc2V0WmVybygpCiB7Ci0gICAgaWYg
KG1fZW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMgJiYgbV9ub2RlLT5y
ZW5kZXJlcigpICYmIG1fbm9kZS0+cmVuZGVyZXIoKS0+aXNUYWJsZSgpKQorICAgIGlmIChtX2Vt
aXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zICYmIG1fbm9kZS0+aGFzUmVu
ZGVyZXIoKSAmJiBtX25vZGUtPnJlbmRlcmVyKCktPmlzVGFibGUoKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIAogICAgIC8vIExlYXZlIGVsZW1lbnQgcG9zaXRpb25lZCBmbHVzaCB3
aXRoIHN0YXJ0IG9mIGEgcGFyYWdyYXBoCkBAIC04NjEsNyArODYxLDcgQEAgYm9vbCBUZXh0SXRl
cmF0b3I6OnNob3VsZFJlcHJlc2VudE5vZGVPZmZzZXRaZXJvKCkKICAgICAvLyBJZiB0aGlzIG5v
ZGUgaXMgdW5yZW5kZXJlZCBvciBpbnZpc2libGUgdGhlIFZpc2libGVQb3NpdGlvbiBjaGVja3Mg
YmVsb3cgd29uJ3QgaGF2ZSBtdWNoIG1lYW5pbmcuCiAgICAgLy8gQWRkaXRpb25hbGx5LCBpZiB0
aGUgcmFuZ2Ugd2UgYXJlIGl0ZXJhdGluZyBvdmVyIGNvbnRhaW5zIGh1Z2Ugc2VjdGlvbnMgb2Yg
dW5yZW5kZXJlZCBjb250ZW50LCAKICAgICAvLyB3ZSB3b3VsZCBjcmVhdGUgVmlzaWJsZVBvc2l0
aW9ucyBvbiBldmVyeSBjYWxsIHRvIHRoaXMgZnVuY3Rpb24gd2l0aG91dCB0aGlzIGNoZWNrLgot
ICAgIGlmICghbV9ub2RlLT5yZW5kZXJlcigpIHx8IG1fbm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUo
KS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKCFtX25vZGUtPmhhc1JlbmRlcmVy
KCkgfHwgbV9ub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJM
RSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIC8vIFRoZSBzdGFydFBvcy5pc05v
dE51bGwoKSBjaGVjayBpcyBuZWVkZWQgYmVjYXVzZSB0aGUgc3RhcnQgY291bGQgYmUgYmVmb3Jl
IHRoZSBib2R5LApAQCAtODc1LDcgKzg3NSw3IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpzaG91bGRS
ZXByZXNlbnROb2RlT2Zmc2V0WmVybygpCiAKIGJvb2wgVGV4dEl0ZXJhdG9yOjpzaG91bGRFbWl0
U3BhY2VCZWZvcmVBbmRBZnRlck5vZGUoTm9kZSogbm9kZSkKIHsKLSAgICByZXR1cm4gbm9kZS0+
cmVuZGVyZXIoKSAmJiBub2RlLT5yZW5kZXJlcigpLT5pc1RhYmxlKCkgJiYgKG5vZGUtPnJlbmRl
cmVyKCktPmlzSW5saW5lKCkgfHwgbV9lbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBv
c2l0aW9ucyk7CisgICAgcmV0dXJuIG5vZGUtPmhhc1JlbmRlcmVyKCkgJiYgbm9kZS0+cmVuZGVy
ZXIoKS0+aXNUYWJsZSgpICYmIChub2RlLT5yZW5kZXJlcigpLT5pc0lubGluZSgpIHx8IG1fZW1p
dHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpOwogfQogCiB2b2lkIFRleHRJ
dGVyYXRvcjo6cmVwcmVzZW50Tm9kZU9mZnNldFplcm8oKQpAQCAtOTAyLDcgKzkwMiw3IEBAIGJv
b2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVOb25UZXh0Tm9kZSgpCiB7CiAgICAgaWYgKHNob3VsZEVt
aXROZXdsaW5lRm9yTm9kZShtX25vZGUpKQogICAgICAgICBlbWl0Q2hhcmFjdGVyKCdcbicsIG1f
bm9kZS0+cGFyZW50Tm9kZSgpLCBtX25vZGUsIDAsIDEpOwotICAgIGVsc2UgaWYgKG1fZW1pdHND
aGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMgJiYgbV9ub2RlLT5yZW5kZXJlcigp
ICYmIG1fbm9kZS0+cmVuZGVyZXIoKS0+aXNIUigpKQorICAgIGVsc2UgaWYgKG1fZW1pdHNDaGFy
YWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMgJiYgbV9ub2RlLT5oYXNSZW5kZXJlcigp
ICYmIG1fbm9kZS0+cmVuZGVyZXIoKS0+aXNIUigpKQogICAgICAgICBlbWl0Q2hhcmFjdGVyKCcg
JywgbV9ub2RlLT5wYXJlbnROb2RlKCksIG1fbm9kZSwgMCwgMSk7CiAgICAgZWxzZQogICAgICAg
ICByZXByZXNlbnROb2RlT2Zmc2V0WmVybygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5n
Q29tbWFuZC5jcHAKaW5kZXggZTNjMzgxNWIzY2RkMGNlZWNiNjAwNjlkNzhkYjJiM2MyZThhNTFi
OS4uMDViMTdjYmFlMGU3YmUyYzg5NTBhNDljOTUxMGU2MzQwMzUyNjM2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCkBAIC00NDksNyArNDQ5LDcgQEAgYm9vbCBU
eXBpbmdDb21tYW5kOjptYWtlRWRpdGFibGVSb290RW1wdHkoKQogCiAgICAgaWYgKHJvb3QtPmZp
cnN0Q2hpbGQoKSA9PSByb290LT5sYXN0Q2hpbGQoKSAmJiByb290LT5maXJzdEVsZW1lbnRDaGls
ZCgpICYmIHJvb3QtPmZpcnN0RWxlbWVudENoaWxkKCktPmhhc1RhZ05hbWUoYnJUYWcpKSB7CiAg
ICAgICAgIC8vIElmIHRoZXJlIGlzIGEgc2luZ2xlIGNoaWxkIGFuZCBpdCBjb3VsZCBiZSBhIHBs
YWNlaG9sZGVyLCBsZWF2ZSBpdCBhbG9uZS4KLSAgICAgICAgaWYgKHJvb3QtPnJlbmRlcmVyKCkg
JiYgcm9vdC0+cmVuZGVyZXIoKS0+aXNCbG9ja0Zsb3coKSkKKyAgICAgICAgaWYgKHJvb3QtPmhh
c1JlbmRlcmVyKCkgJiYgcm9vdC0+cmVuZGVyZXIoKS0+aXNCbG9ja0Zsb3coKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTU5MCw3ICs1OTAsNyBAQCB2b2lkIFR5cGlu
Z0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKFRleHRHcmFudWxhcml0eSBncmFudWxh
cml0eSwgYm9vbCBraQogICAgICAgICBpZiAodmlzaWJsZUVuZCA9PSBlbmRPZlBhcmFncmFwaCh2
aXNpYmxlRW5kKSkKICAgICAgICAgICAgIGRvd25zdHJlYW1FbmQgPSB2aXNpYmxlRW5kLm5leHQo
Q2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpLmRlZXBFcXVpdmFsZW50KCkuZG93bnN0cmVhbSgp
OwogICAgICAgICAvLyBXaGVuIGRlbGV0aW5nIHRhYmxlczogU2VsZWN0IHRoZSB0YWJsZSBmaXJz
dCwgdGhlbiBwZXJmb3JtIHRoZSBkZWxldGlvbgotICAgICAgICBpZiAoZG93bnN0cmVhbUVuZC5j
b250YWluZXJOb2RlKCkgJiYgZG93bnN0cmVhbUVuZC5jb250YWluZXJOb2RlKCktPnJlbmRlcmVy
KCkgJiYgZG93bnN0cmVhbUVuZC5jb250YWluZXJOb2RlKCktPnJlbmRlcmVyKCktPmlzVGFibGUo
KQorICAgICAgICBpZiAoZG93bnN0cmVhbUVuZC5jb250YWluZXJOb2RlKCkgJiYgZG93bnN0cmVh
bUVuZC5jb250YWluZXJOb2RlKCktPmhhc1JlbmRlcmVyKCkgJiYgZG93bnN0cmVhbUVuZC5jb250
YWluZXJOb2RlKCktPnJlbmRlcmVyKCktPmlzVGFibGUoKQogICAgICAgICAgICAgJiYgZG93bnN0
cmVhbUVuZC5jb21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2RlKCkgPD0gY2FyZXRNaW5PZmZzZXQo
ZG93bnN0cmVhbUVuZC5jb250YWluZXJOb2RlKCkpKSB7CiAgICAgICAgICAgICBzZXRFbmRpbmdT
ZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24oKS5lbmQoKSwgcG9zaXRp
b25BZnRlck5vZGUoZG93bnN0cmVhbUVuZC5jb250YWluZXJOb2RlKCkpLCBET1dOU1RSRUFNKSk7
CiAgICAgICAgICAgICB0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQoRm9yd2FyZERlbGV0ZUtleSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCmluZGV4IDhjNDIyNTIyYWNkMjBk
NTdhY2U0NjkxY2YyZDBlYTFhZTJkYWM5ZjYuLjI5ZGM3OWU3NDQyMWM4MzUyMTIxNDYxODZhNmVj
ZDc1NTA3MGNmYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRp
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCkBAIC0x
NDgsNyArMTQ4LDcgQEAgYm9vbCBpc0VkaXRhYmxlUG9zaXRpb24oY29uc3QgUG9zaXRpb24mIHAp
CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgIGlm
IChub2RlLT5yZW5kZXJlcigpICYmIG5vZGUtPnJlbmRlcmVyKCktPmlzVGFibGUoKSkKKyAgICBp
ZiAobm9kZS0+aGFzUmVuZGVyZXIoKSAmJiBub2RlLT5yZW5kZXJlcigpLT5pc1RhYmxlKCkpCiAg
ICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CiAgICAgCiAgICAgcmV0dXJuIG5vZGUt
PnJlbmRlcmVySXNFZGl0YWJsZSgpOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIGJvb2wgaXNSaWNobHlF
ZGl0YWJsZVBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiBwKQogICAgIGlmICghbm9kZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAgICBpZiAobm9kZS0+cmVuZGVyZXIoKSAmJiBu
b2RlLT5yZW5kZXJlcigpLT5pc1RhYmxlKCkpCisgICAgaWYgKG5vZGUtPmhhc1JlbmRlcmVyKCkg
JiYgbm9kZS0+cmVuZGVyZXIoKS0+aXNUYWJsZSgpKQogICAgICAgICBub2RlID0gbm9kZS0+cGFy
ZW50Tm9kZSgpOwogICAgIAogICAgIHJldHVybiBub2RlLT5yZW5kZXJlcklzUmljaGx5RWRpdGFi
bGUoKTsKQEAgLTE3OSw3ICsxNzksNyBAQCBFbGVtZW50KiBlZGl0YWJsZVJvb3RGb3JQb3NpdGlv
bihjb25zdCBQb3NpdGlvbiYgcCkKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiAwOwog
ICAgICAgICAKLSAgICBpZiAobm9kZS0+cmVuZGVyZXIoKSAmJiBub2RlLT5yZW5kZXJlcigpLT5p
c1RhYmxlKCkpCisgICAgaWYgKG5vZGUtPmhhc1JlbmRlcmVyKCkgJiYgbm9kZS0+cmVuZGVyZXIo
KS0+aXNUYWJsZSgpKQogICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOwogICAgIAog
ICAgIHJldHVybiBub2RlLT5yb290RWRpdGFibGVFbGVtZW50KCk7CkBAIC0yOTIsNyArMjkyLDcg
QEAgVmlzaWJsZVBvc2l0aW9uIGxhc3RFZGl0YWJsZVBvc2l0aW9uQmVmb3JlUG9zaXRpb25JblJv
b3QoY29uc3QgUG9zaXRpb24mIHBvc2l0aW8KIC8vIFdoZXRoZXIgb3Igbm90IGNvbnRlbnQgYmVm
b3JlIGFuZCBhZnRlciB0aGlzIG5vZGUgd2lsbCBjb2xsYXBzZSBvbnRvIHRoZSBzYW1lIGxpbmUg
YXMgaXQuCiBib29sIGlzQmxvY2soY29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICByZXR1cm4gbm9k
ZSAmJiBub2RlLT5yZW5kZXJlcigpICYmICFub2RlLT5yZW5kZXJlcigpLT5pc0lubGluZSgpOwor
ICAgIHJldHVybiBub2RlICYmIG5vZGUtPmhhc1JlbmRlcmVyKCkgJiYgIW5vZGUtPnJlbmRlcmVy
KCktPmlzSW5saW5lKCk7CiB9CiAKIC8vIEZJWE1FOiBEZXBsb3kgdGhpcyBpbiBhbGwgb2YgdGhl
IHBsYWNlcyB3aGVyZSBlbmNsb3NpbmdCbG9ja0Zsb3cvZW5jbG9zaW5nQmxvY2tGbG93T3JUYWJs
ZUVsZW1lbnQgYXJlIHVzZWQuCkBAIC00ODAsNyArNDgwLDcgQEAgUG9zaXRpb24gcG9zaXRpb25P
dXRzaWRlQ29udGFpbmluZ1NwZWNpYWxFbGVtZW50KGNvbnN0IFBvc2l0aW9uICZwb3MsIE5vZGUg
Kipjb24KIE5vZGUqIGlzRmlyc3RQb3NpdGlvbkFmdGVyVGFibGUoY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiB2aXNpYmxlUG9zaXRpb24pCiB7CiAgICAgUG9zaXRpb24gdXBzdHJlYW0odmlzaWJsZVBv
c2l0aW9uLmRlZXBFcXVpdmFsZW50KCkudXBzdHJlYW0oKSk7Ci0gICAgaWYgKHVwc3RyZWFtLmRl
cHJlY2F0ZWROb2RlKCkgJiYgdXBzdHJlYW0uZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKSAm
JiB1cHN0cmVhbS5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpLT5pc1RhYmxlKCkgJiYgdXBz
dHJlYW0uYXRMYXN0RWRpdGluZ1Bvc2l0aW9uRm9yTm9kZSgpKQorICAgIGlmICh1cHN0cmVhbS5k
ZXByZWNhdGVkTm9kZSgpICYmIHVwc3RyZWFtLmRlcHJlY2F0ZWROb2RlKCktPmhhc1JlbmRlcmVy
KCkgJiYgdXBzdHJlYW0uZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKS0+aXNUYWJsZSgpICYm
IHVwc3RyZWFtLmF0TGFzdEVkaXRpbmdQb3NpdGlvbkZvck5vZGUoKSkKICAgICAgICAgcmV0dXJu
IHVwc3RyZWFtLmRlcHJlY2F0ZWROb2RlKCk7CiAgICAgCiAgICAgcmV0dXJuIDA7CkBAIC00ODks
NyArNDg5LDcgQEAgTm9kZSogaXNGaXJzdFBvc2l0aW9uQWZ0ZXJUYWJsZShjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHZpc2libGVQb3NpdGlvbikKIE5vZGUqIGlzTGFzdFBvc2l0aW9uQmVmb3JlVGFi
bGUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24pCiB7CiAgICAgUG9zaXRp
b24gZG93bnN0cmVhbSh2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKS5kb3duc3RyZWFt
KCkpOwotICAgIGlmIChkb3duc3RyZWFtLmRlcHJlY2F0ZWROb2RlKCkgJiYgZG93bnN0cmVhbS5k
ZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpICYmIGRvd25zdHJlYW0uZGVwcmVjYXRlZE5vZGUo
KS0+cmVuZGVyZXIoKS0+aXNUYWJsZSgpICYmIGRvd25zdHJlYW0uYXRGaXJzdEVkaXRpbmdQb3Np
dGlvbkZvck5vZGUoKSkKKyAgICBpZiAoZG93bnN0cmVhbS5kZXByZWNhdGVkTm9kZSgpICYmIGRv
d25zdHJlYW0uZGVwcmVjYXRlZE5vZGUoKS0+aGFzUmVuZGVyZXIoKSAmJiBkb3duc3RyZWFtLmRl
cHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCktPmlzVGFibGUoKSAmJiBkb3duc3RyZWFtLmF0Rmly
c3RFZGl0aW5nUG9zaXRpb25Gb3JOb2RlKCkpCiAgICAgICAgIHJldHVybiBkb3duc3RyZWFtLmRl
cHJlY2F0ZWROb2RlKCk7CiAgICAgCiAgICAgcmV0dXJuIDA7CkBAIC01NjUsNyArNTY1LDcgQEAg
Ym9vbCBpc0xpc3RFbGVtZW50KE5vZGUgKm4pCiAKIGJvb2wgaXNMaXN0SXRlbShOb2RlICpuKQog
ewotICAgIHJldHVybiBuICYmIG4tPnJlbmRlcmVyKCkgJiYgbi0+cmVuZGVyZXIoKS0+aXNMaXN0
SXRlbSgpOworICAgIHJldHVybiBuICYmIG4tPmhhc1JlbmRlcmVyKCkgJiYgbi0+cmVuZGVyZXIo
KS0+aXNMaXN0SXRlbSgpOwogfQogCiBOb2RlKiBlbmNsb3NpbmdOb2RlV2l0aFRhZyhjb25zdCBQ
b3NpdGlvbiYgcCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSkKQEAgLTc4Myw3ICs3ODMs
NyBAQCBib29sIGlzRW1wdHlUYWJsZUNlbGwoY29uc3QgTm9kZSogbm9kZSkKICAgICAvLyAgIC4p
IHRoZSBCUiBjaGlsZCBvZiBzdWNoIGEgdGFibGUgY2VsbAogCiAgICAgLy8gRmluZCByZW5kZXJl
ZCBub2RlCi0gICAgd2hpbGUgKG5vZGUgJiYgIW5vZGUtPnJlbmRlcmVyKCkpCisgICAgd2hpbGUg
KG5vZGUgJiYgIW5vZGUtPmhhc1JlbmRlcmVyKCkpCiAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJl
bnROb2RlKCk7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05NTIs
NyArOTUyLDcgQEAgaW50IGNhcmV0TWluT2Zmc2V0KGNvbnN0IE5vZGUqIG4pCiBpbnQgY2FyZXRN
YXhPZmZzZXQoY29uc3QgTm9kZSogbikKIHsKICAgICAvLyBGb3IgcmVuZGVyZWQgdGV4dCBub2Rl
cywgcmV0dXJuIHRoZSBsYXN0IHBvc2l0aW9uIHRoYXQgYSBjYXJldCBjb3VsZCBvY2N1cHkuCi0g
ICAgaWYgKG4tPmlzVGV4dE5vZGUoKSAmJiBuLT5yZW5kZXJlcigpKQorICAgIGlmIChuLT5pc1Rl
eHROb2RlKCkgJiYgbi0+aGFzUmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIG4tPnJlbmRlcmVy
KCktPmNhcmV0TWF4T2Zmc2V0KCk7CiAgICAgLy8gRm9yIGNvbnRhaW5lcnMgcmV0dXJuIHRoZSBu
dW1iZXIgb2YgY2hpbGRyZW4uICBGb3Igb3RoZXJzIGRvIHRoZSBzYW1lIGFzIGFib3ZlLgogICAg
IHJldHVybiBsYXN0T2Zmc2V0Rm9yRWRpdGluZyhuKTsKQEAgLTk3MSw3ICs5NzEsNyBAQCBib29s
IGxpbmVCcmVha0V4aXN0c0F0UG9zaXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKQogICAg
IGlmIChwb3NpdGlvbi5hbmNob3JOb2RlKCktPmhhc1RhZ05hbWUoYnJUYWcpICYmIHBvc2l0aW9u
LmF0Rmlyc3RFZGl0aW5nUG9zaXRpb25Gb3JOb2RlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIAotICAgIGlmICghcG9zaXRpb24uYW5jaG9yTm9kZSgpLT5yZW5kZXJlcigpKQorICAgIGlm
ICghcG9zaXRpb24uYW5jaG9yTm9kZSgpLT5oYXNSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgCiAgICAgaWYgKCFwb3NpdGlvbi5hbmNob3JOb2RlKCktPmlzVGV4dE5vZGUo
KSB8fCAhcG9zaXRpb24uYW5jaG9yTm9kZSgpLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5wcmVzZXJ2
ZU5ld2xpbmUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCA1NmZhMDQ1YWFiMzYw
MmRjMjUwZDNmMTYwZGFjNzAwZjcwYmM2ZWI1Li5lM2VlZTIzNGI5YjdmMjgyNTAzZWZhODJlZDc1
ZjViYWQ1MzhkYTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC0yOTcsNyArMjk3
LDcgQEAgTm9kZSogU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnNlcmlhbGl6ZU5vZGVzKE5vZGUq
IHN0YXJ0Tm9kZSwgTm9kZSogcGFzdEVuZCkKICAgICAgICAgICAgIC8vIERvbid0IHdyaXRlIG91
dCBlbXB0eSBibG9jayBjb250YWluZXJzIHRoYXQgYXJlbid0IGZ1bGx5IHNlbGVjdGVkLgogICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKCFuLT5yZW5kZXJlcigpICYmICFlbmNs
b3NpbmdOb2RlV2l0aFRhZyhmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobiksIHNlbGVjdFRh
ZykpIHsKKyAgICAgICAgaWYgKCFuLT5oYXNSZW5kZXJlcigpICYmICFlbmNsb3NpbmdOb2RlV2l0
aFRhZyhmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobiksIHNlbGVjdFRhZykpIHsKICAgICAg
ICAgICAgIG5leHQgPSBuLT50cmF2ZXJzZU5leHRTaWJsaW5nKCk7CiAgICAgICAgICAgICAvLyBE
b24ndCBza2lwIG92ZXIgcGFzdEVuZC4KICAgICAgICAgICAgIGlmIChwYXN0RW5kICYmIHBhc3RF
bmQtPmlzRGVzY2VuZGFudE9mKG4pKQpAQCAtMzM2LDcgKzMzNiw3IEBAIE5vZGUqIFN0eWxlZE1h
cmt1cEFjY3VtdWxhdG9yOjpzZXJpYWxpemVOb2RlcyhOb2RlKiBzdGFydE5vZGUsIE5vZGUqIHBh
c3RFbmQpCiAgICAgICAgICAgICAgICAgTm9kZSogbGFzdEFuY2VzdG9yQ2xvc2VkT3JTZWxmID0g
bi0+aXNEZXNjZW5kYW50T2YobGFzdENsb3NlZCkgPyBsYXN0Q2xvc2VkIDogbjsKICAgICAgICAg
ICAgICAgICBmb3IgKENvbnRhaW5lck5vZGUqIHBhcmVudCA9IGxhc3RBbmNlc3RvckNsb3NlZE9y
U2VsZi0+cGFyZW50Tm9kZSgpOyBwYXJlbnQgJiYgcGFyZW50ICE9IG5leHRQYXJlbnQ7IHBhcmVu
dCA9IHBhcmVudC0+cGFyZW50Tm9kZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEFsbCBh
bmNlc3RvcnMgdGhhdCBhcmVuJ3QgaW4gdGhlIGFuY2VzdG9yc1RvQ2xvc2UgbGlzdCBzaG91bGQg
ZWl0aGVyIGJlIGEpIHVucmVuZGVyZWQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcGFyZW50
LT5yZW5kZXJlcigpKQorICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudC0+aGFzUmVuZGVy
ZXIoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAg
ICAgICAvLyBvciBiKSBhbmNlc3RvcnMgdGhhdCB3ZSBuZXZlciBlbmNvdW50ZXJlZCBkdXJpbmcg
YSBwcmUtb3JkZXIgdHJhdmVyc2FsIHN0YXJ0aW5nIGF0IHN0YXJ0Tm9kZToKICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKHN0YXJ0Tm9kZS0+aXNEZXNjZW5kYW50T2YocGFyZW50KSk7CkBAIC00
NTMsNyArNDUzLDcgQEAgc3RhdGljIE5vZGUqIGhpZ2hlc3RBbmNlc3RvclRvV3JhcE1hcmt1cChj
b25zdCBSYW5nZSogcmFuZ2UsIE5vZGUqIGZ1bGx5U2VsZWN0ZWQKICAgICB9CiAKICAgICBOb2Rl
KiBjaGVja0FuY2VzdG9yID0gc3BlY2lhbENvbW1vbkFuY2VzdG9yID8gc3BlY2lhbENvbW1vbkFu
Y2VzdG9yIDogY29tbW9uQW5jZXN0b3I7Ci0gICAgaWYgKGNoZWNrQW5jZXN0b3ItPnJlbmRlcmVy
KCkpIHsKKyAgICBpZiAoY2hlY2tBbmNlc3Rvci0+aGFzUmVuZGVyZXIoKSkgewogICAgICAgICBO
b2RlKiBuZXdTcGVjaWFsQ29tbW9uQW5jZXN0b3IgPSBoaWdoZXN0RW5jbG9zaW5nTm9kZU9mVHlw
ZShmaXJzdFBvc2l0aW9uSW5Ob2RlKGNoZWNrQW5jZXN0b3IpLCAmaXNFbGVtZW50UHJlc2VudGF0
aW9uYWwpOwogICAgICAgICBpZiAobmV3U3BlY2lhbENvbW1vbkFuY2VzdG9yKQogICAgICAgICAg
ICAgc3BlY2lhbENvbW1vbkFuY2VzdG9yID0gbmV3U3BlY2lhbENvbW1vbkFuY2VzdG9yOwpAQCAt
NTg4LDcgKzU4OCw3IEBAIFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqIHJhbmdlLCBW
ZWN0b3I8Tm9kZSo+KiBub2RlcywgRUFubm90YXRlRm9ySW50ZXJjCiAKICAgICAvLyBBZGQgYSB3
cmFwcGVyIHNwYW4gd2l0aCB0aGUgc3R5bGVzIHRoYXQgYWxsIG9mIHRoZSBub2RlcyBpbiB0aGUg
bWFya3VwIGluaGVyaXQuCiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50T2ZMYXN0Q2xvc2VkID0g
bGFzdENsb3NlZCA/IGxhc3RDbG9zZWQtPnBhcmVudE5vZGUoKSA6IDA7Ci0gICAgaWYgKHBhcmVu
dE9mTGFzdENsb3NlZCAmJiBwYXJlbnRPZkxhc3RDbG9zZWQtPnJlbmRlcmVyKCkpIHsKKyAgICBp
ZiAocGFyZW50T2ZMYXN0Q2xvc2VkICYmIHBhcmVudE9mTGFzdENsb3NlZC0+aGFzUmVuZGVyZXIo
KSkgewogICAgICAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZSA9IEVkaXRpbmdTdHlsZTo6
Y3JlYXRlKHBhcmVudE9mTGFzdENsb3NlZCwgRWRpdGluZ1N0eWxlOjpFZGl0aW5nSW5oZXJpdGFi
bGVQcm9wZXJ0aWVzQW5kQmFja2dyb3VuZENvbG9ySW5FZmZlY3QpOwogCiAgICAgICAgIC8vIFN0
eWxlcyB0aGF0IE1haWwgYmxvY2txdW90ZXMgY29udHJpYnV0ZSBzaG91bGQgb25seSBiZSBwbGFj
ZWQgb24gdGhlIE1haWwgYmxvY2txdW90ZSwgdG8gaGVscApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
dmlzaWJsZV91bml0cy5jcHAKaW5kZXggOGE3MWVhOWQzOWNmZWMzYzVkZTU3M2VmMjZiNGI4MjMx
MWFmNmY0OS4uMmI1NmIzMjg1NzRhNWUwOTJjY2E5ZmI0ZmUwMTRjZTcwNzFlMWYwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHN0
YXRpYyBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRp
b24mIGMsIEJvdW5kYXJ5U2VhcmNoCiAKICAgICBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJh
dG9yIGl0KHNlYXJjaFJhbmdlLmdldCgpKTsKICAgICB1bnNpZ25lZCBuZXh0ID0gMDsKLSAgICBi
b29sIGluVGV4dFNlY3VyaXR5TW9kZSA9IHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkgJiYgc3RhcnQu
ZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKSAmJiBzdGFydC5kZXByZWNhdGVkTm9kZSgpLT5y
ZW5kZXJlcigpLT5zdHlsZSgpLT50ZXh0U2VjdXJpdHkoKSAhPSBUU05PTkU7CisgICAgYm9vbCBp
blRleHRTZWN1cml0eU1vZGUgPSBzdGFydC5kZXByZWNhdGVkTm9kZSgpICYmIHN0YXJ0LmRlcHJl
Y2F0ZWROb2RlKCktPmhhc1JlbmRlcmVyKCkgJiYgc3RhcnQuZGVwcmVjYXRlZE5vZGUoKS0+cmVu
ZGVyZXIoKS0+c3R5bGUoKS0+dGV4dFNlY3VyaXR5KCkgIT0gVFNOT05FOwogICAgIGJvb2wgbmVl
ZE1vcmVDb250ZXh0ID0gZmFsc2U7CiAgICAgd2hpbGUgKCFpdC5hdEVuZCgpKSB7CiAgICAgICAg
IC8vIGl0ZXJhdGUgdG8gZ2V0IGNodW5rcyB1bnRpbCB0aGUgc2VhcmNoRnVuY3Rpb24gcmV0dXJu
cyBhIG5vbi16ZXJvIHZhbHVlLgpAQCAtMTIxLDcgKzEyMSw3IEBAIHN0YXRpYyBWaXNpYmxlUG9z
aXRpb24gcHJldmlvdXNCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIEJvdW5kYXJ5
U2VhcmNoCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oaXQuYXRFbmQoKSA/IGl0LnJh
bmdlKCktPnN0YXJ0UG9zaXRpb24oKSA6IHBvcywgRE9XTlNUUkVBTSk7CiAKICAgICBOb2RlKiBu
b2RlID0gaXQucmFuZ2UoKS0+c3RhcnRDb250YWluZXIoZWMpOwotICAgIGlmICgobm9kZS0+aXNU
ZXh0Tm9kZSgpICYmIHN0YXRpY19jYXN0PGludD4obmV4dCkgPD0gbm9kZS0+bWF4Q2hhcmFjdGVy
T2Zmc2V0KCkpIHx8IChub2RlLT5yZW5kZXJlcigpICYmIG5vZGUtPnJlbmRlcmVyKCktPmlzQlIo
KSAmJiAhbmV4dCkpCisgICAgaWYgKChub2RlLT5pc1RleHROb2RlKCkgJiYgc3RhdGljX2Nhc3Q8
aW50PihuZXh0KSA8PSBub2RlLT5tYXhDaGFyYWN0ZXJPZmZzZXQoKSkgfHwgKG5vZGUtPmhhc1Jl
bmRlcmVyKCkgJiYgbm9kZS0+cmVuZGVyZXIoKS0+aXNCUigpICYmICFuZXh0KSkKICAgICAgICAg
Ly8gVGhlIG5leHQgdmFyaWFibGUgY29udGFpbnMgYSB1c2FibGUgaW5kZXggaW50byBhIHRleHQg
bm9kZQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9uKG5vZGUsIG5leHQp
LCBET1dOU1RSRUFNKTsKIApAQCAtMTY3LDcgKzE2Nyw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRp
b24gbmV4dEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgQm91bmRhcnlTZWFyY2hG
dW5jCiAgICAgc2VhcmNoUmFuZ2UtPnNldFN0YXJ0KHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCksIHN0
YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVjKTsKICAgICBUZXh0SXRlcmF0b3IgaXQo
c2VhcmNoUmFuZ2UuZ2V0KCksIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxW
aXNpYmxlUG9zaXRpb25zKTsKICAgICB1bnNpZ25lZCBuZXh0ID0gMDsKLSAgICBib29sIGluVGV4
dFNlY3VyaXR5TW9kZSA9IHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkgJiYgc3RhcnQuZGVwcmVjYXRl
ZE5vZGUoKS0+cmVuZGVyZXIoKSAmJiBzdGFydC5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigp
LT5zdHlsZSgpLT50ZXh0U2VjdXJpdHkoKSAhPSBUU05PTkU7CisgICAgYm9vbCBpblRleHRTZWN1
cml0eU1vZGUgPSBzdGFydC5kZXByZWNhdGVkTm9kZSgpICYmIHN0YXJ0LmRlcHJlY2F0ZWROb2Rl
KCktPmhhc1JlbmRlcmVyKCkgJiYgc3RhcnQuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKS0+
c3R5bGUoKS0+dGV4dFNlY3VyaXR5KCkgIT0gVFNOT05FOwogICAgIGJvb2wgbmVlZE1vcmVDb250
ZXh0ID0gZmFsc2U7CiAgICAgd2hpbGUgKCFpdC5hdEVuZCgpKSB7CiAgICAgICAgIC8vIEtlZXAg
YXNraW5nIHRoZSBpdGVyYXRvciBmb3IgY2h1bmtzIHVudGlsIHRoZSBzZWFyY2ggZnVuY3Rpb24K
QEAgLTM1OSw3ICszNTksNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRpb25G
b3JMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYykKICAgICAgICAgLy8gVGhlcmUgYXJlIFZp
c2libGVQb3NpdGlvbnMgYXQgb2Zmc2V0IDAgaW4gYmxvY2tzIHdpdGhvdXQKICAgICAgICAgLy8g
Um9vdElubGluZUJveGVzLCBsaWtlIGVtcHR5IGVkaXRhYmxlIGJsb2NrcyBhbmQgYm9yZGVyZWQg
YmxvY2tzLgogICAgICAgICBQb3NpdGlvbiBwID0gYy5kZWVwRXF1aXZhbGVudCgpOwotICAgICAg
ICBpZiAocC5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpICYmIHAuZGVwcmVjYXRlZE5vZGUo
KS0+cmVuZGVyZXIoKS0+aXNSZW5kZXJCbG9jaygpICYmICFwLmRlcHJlY2F0ZWRFZGl0aW5nT2Zm
c2V0KCkpCisgICAgICAgIGlmIChwLmRlcHJlY2F0ZWROb2RlKCktPmhhc1JlbmRlcmVyKCkgJiYg
cC5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpLT5pc1JlbmRlckJsb2NrKCkgJiYgIXAuZGVw
cmVjYXRlZEVkaXRpbmdPZmZzZXQoKSkKICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbkF2b2lk
aW5nRmlyc3RQb3NpdGlvbkluVGFibGUoYyk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gVmlz
aWJsZVBvc2l0aW9uKCk7CkBAIC00MDcsNyArNDA3LDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlv
biBlbmRQb3NpdGlvbkZvckxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjKQogICAgICAgICAv
LyBUaGVyZSBhcmUgVmlzaWJsZVBvc2l0aW9ucyBhdCBvZmZzZXQgMCBpbiBibG9ja3Mgd2l0aG91
dAogICAgICAgICAvLyBSb290SW5saW5lQm94ZXMsIGxpa2UgZW1wdHkgZWRpdGFibGUgYmxvY2tz
IGFuZCBib3JkZXJlZCBibG9ja3MuCiAgICAgICAgIFBvc2l0aW9uIHAgPSBjLmRlZXBFcXVpdmFs
ZW50KCk7Ci0gICAgICAgIGlmIChwLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkgJiYgcC5k
ZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpLT5pc1JlbmRlckJsb2NrKCkgJiYgIXAuZGVwcmVj
YXRlZEVkaXRpbmdPZmZzZXQoKSkKKyAgICAgICAgaWYgKHAuZGVwcmVjYXRlZE5vZGUoKS0+aGFz
UmVuZGVyZXIoKSAmJiBwLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCktPmlzUmVuZGVyQmxv
Y2soKSAmJiAhcC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKQogICAgICAgICAgICAgcmV0dXJu
IGM7CiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKICAgICB9CkBAIC00OTcsNyAr
NDk3LDcgQEAgc3RhdGljIE5vZGUqIHByZXZpb3VzTGVhZldpdGhTYW1lRWRpdGFiaWxpdHkoTm9k
ZSogbm9kZSkKIHN0YXRpYyBOb2RlKiBlbmNsb3NpbmdOb2RlV2l0aE5vbklubGluZVJlbmRlcmVy
KE5vZGUqIG4pCiB7CiAgICAgZm9yIChOb2RlKiBwID0gbjsgcDsgcCA9IHAtPnBhcmVudE5vZGUo
KSkgewotICAgICAgICBpZiAocC0+cmVuZGVyZXIoKSAmJiAhcC0+cmVuZGVyZXIoKS0+aXNJbmxp
bmUoKSkKKyAgICAgICAgaWYgKHAtPmhhc1JlbmRlcmVyKCkgJiYgIXAtPnJlbmRlcmVyKCktPmlz
SW5saW5lKCkpCiAgICAgICAgICAgICByZXR1cm4gcDsKICAgICB9CiAgICAgcmV0dXJuIDA7CkBA
IC02NTYsNyArNjU2LDcgQEAgVmlzaWJsZVBvc2l0aW9uIG5leHRMaW5lUG9zaXRpb24oY29uc3Qg
VmlzaWJsZVBvc2l0aW9uICZ2aXNpYmxlUG9zaXRpb24sIGludCB4KQogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgUG9zaXRpb24gcG9zKG4sIGNhcmV0TWluT2Zmc2V0KG4pKTsK
ICAgICAgICAgICAgIGlmIChwb3MuaXNDYW5kaWRhdGUoKSkgewotICAgICAgICAgICAgICAgIEFT
U0VSVChuLT5yZW5kZXJlcigpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQobi0+aGFzUmVuZGVy
ZXIoKSk7CiAgICAgICAgICAgICAgICAgcG9zLmdldElubGluZUJveEFuZE9mZnNldChET1dOU1RS
RUFNLCBib3gsIGlnbm9yZWRDYXJldE9mZnNldCk7CiAgICAgICAgICAgICAgICAgaWYgKGJveCkg
ewogICAgICAgICAgICAgICAgICAgICAvLyBuZXh0IHJvb3QgbGluZSBib3ggZm91bmQKQEAgLTEw
NTgsNyArMTA1OCw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbG9naWNhbFN0YXJ0UG9zaXRp
b25Gb3JMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYykKICAgICAgICAgLy8gVGhlcmUgYXJl
IFZpc2libGVQb3NpdGlvbnMgYXQgb2Zmc2V0IDAgaW4gYmxvY2tzIHdpdGhvdXQKICAgICAgICAg
Ly8gUm9vdElubGluZUJveGVzLCBsaWtlIGVtcHR5IGVkaXRhYmxlIGJsb2NrcyBhbmQgYm9yZGVy
ZWQgYmxvY2tzLgogICAgICAgICBQb3NpdGlvbiBwID0gYy5kZWVwRXF1aXZhbGVudCgpOwotICAg
ICAgICBpZiAocC5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpICYmIHAuZGVwcmVjYXRlZE5v
ZGUoKS0+cmVuZGVyZXIoKS0+aXNSZW5kZXJCbG9jaygpICYmICFwLmRlcHJlY2F0ZWRFZGl0aW5n
T2Zmc2V0KCkpCisgICAgICAgIGlmIChwLmRlcHJlY2F0ZWROb2RlKCktPmhhc1JlbmRlcmVyKCkg
JiYgcC5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpLT5pc1JlbmRlckJsb2NrKCkgJiYgIXAu
ZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSkKICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbkF2
b2lkaW5nRmlyc3RQb3NpdGlvbkluVGFibGUoYyk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4g
VmlzaWJsZVBvc2l0aW9uKCk7CkBAIC0xMDk4LDcgKzEwOTgsNyBAQCBzdGF0aWMgVmlzaWJsZVBv
c2l0aW9uIGxvZ2ljYWxFbmRQb3NpdGlvbkZvckxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBj
KQogICAgICAgICAvLyBUaGVyZSBhcmUgVmlzaWJsZVBvc2l0aW9ucyBhdCBvZmZzZXQgMCBpbiBi
bG9ja3Mgd2l0aG91dAogICAgICAgICAvLyBSb290SW5saW5lQm94ZXMsIGxpa2UgZW1wdHkgZWRp
dGFibGUgYmxvY2tzIGFuZCBib3JkZXJlZCBibG9ja3MuCiAgICAgICAgIFBvc2l0aW9uIHAgPSBj
LmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgIGlmIChwLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRl
cmVyKCkgJiYgcC5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpLT5pc1JlbmRlckJsb2NrKCkg
JiYgIXAuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSkKKyAgICAgICAgaWYgKHAuZGVwcmVjYXRl
ZE5vZGUoKS0+aGFzUmVuZGVyZXIoKSAmJiBwLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkt
PmlzUmVuZGVyQmxvY2soKSAmJiAhcC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKQogICAgICAg
ICAgICAgcmV0dXJuIGM7CiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAppbmRleCBkMGQ4ZjlhYjBiMGU4ZDRk
MTdiZjdmNzcyNDA0YTQwNDcyMGM5NjdlLi43YTdmYThlMTMxZDkzNjk4MzQ5NWNhNmZlMzVjZTZl
YjgxMzM4Mjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKQEAgLTEyNiw3
ICsxMjYsNyBAQCBTdHJpbmcgRmlsZUlucHV0VHlwZTo6dmFsdWVNaXNzaW5nVGV4dCgpIGNvbnN0
CiAKIHZvaWQgRmlsZUlucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCogZXZl
bnQpCiB7Ci0gICAgaWYgKGVsZW1lbnQoKS0+ZGlzYWJsZWQoKSB8fCAhZWxlbWVudCgpLT5yZW5k
ZXJlcigpKQorICAgIGlmIChlbGVtZW50KCktPmRpc2FibGVkKCkgfHwgIWVsZW1lbnQoKS0+aGFz
UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHRvUmVuZGVyRmlsZVVwbG9hZENvbnRy
b2woZWxlbWVudCgpLT5yZW5kZXJlcigpKS0+Y2xpY2soKTsKICAgICBldmVudC0+c2V0RGVmYXVs
dEhhbmRsZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKaW5k
ZXggODUyMGMyYzdjYTYxOWFhMjE4ZmUzMzY5ZDU5NDAwNjEyNDI3ZTM3Yi4uZDRmNjAxZDVjYzFk
M2IxNmViYjhkNTlmODk0NzNkZTQzYTczZGY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXBwbGV0RWxlbWVudC5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIEhUTUxBcHBsZXRFbGVt
ZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKQogewogICAgIC8vIFRoZSBwYXJzZXIganVzdCBy
ZWFjaGVkIDwvYXBwbGV0Piwgc28gYWxsIHRoZSBwYXJhbXMgYXJlIGF2YWlsYWJsZSBub3cuCiAg
ICAgSFRNTFBsdWdJbkVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwotICAgIGlmIChy
ZW5kZXJlcigpKQorICAgIGlmIChoYXNSZW5kZXJlcigpKQogICAgICAgICByZW5kZXJlcigpLT5z
ZXROZWVkc0xheW91dCh0cnVlKTsgLy8gVGhpcyB3aWxsIGNhdXNlIGl0IHRvIGNyZWF0ZSBpdHMg
d2lkZ2V0ICYgdGhlIEphdmEgYXBwbGV0CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5jcHAKaW5kZXggMzhkZmZlMTk5MjZhNGQ5OTE0MmYzOTI4NmUxZWFmNmExZWNl
ZmUzZi4uODYzYmMyNDNmN2M5MjQ4ZDUxNzQ1ZTMzMTRkY2ZjOTU1Y2RmZmQ1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTI0OCwxMiArMjQ4LDEyIEBA
IHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnJlc2V0KCkKICAgICBpZiAobV9jb250ZXh0ICYmIG1f
Y29udGV4dC0+aXMyZCgpKQogICAgICAgICBzdGF0aWNfY2FzdDxDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQqPihtX2NvbnRleHQuZ2V0KCkpLT5yZXNldCgpOwogCi0gICAgaWYgKFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7CisgICAgaWYgKGhhc1JlbmRlcmVyKCkp
IHsKICAgICAgICAgaWYgKG1fcmVuZGVyZXJJc0NhbnZhcykgewogICAgICAgICAgICAgaWYgKG9s
ZFNpemUgIT0gc2l6ZSgpKQotICAgICAgICAgICAgICAgIHRvUmVuZGVySFRNTENhbnZhcyhyZW5k
ZXJlciktPmNhbnZhc1NpemVDaGFuZ2VkKCk7CisgICAgICAgICAgICAgICAgdG9SZW5kZXJIVE1M
Q2FudmFzKHJlbmRlcmVyKCkpLT5jYW52YXNTaXplQ2hhbmdlZCgpOwogICAgICAgICAgICAgaWYg
KGhhZEltYWdlQnVmZmVyKQotICAgICAgICAgICAgICAgIHJlbmRlcmVyLT5yZXBhaW50KCk7Cisg
ICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+cmVwYWludCgpOwogICAgICAgICB9CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IDRlOGJhNmYzZjY0YmQyYWEzYmIx
YjY1YWVlMGM0Zjk5YWFlNDYyYmMuLjk0ODE4YTNjZDBlMmI0ZmZhMDI4MDg0NGZjNzk5Zjg4Njhl
NWE0M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC05MDEsNyArOTAxLDcg
QEAgdm9pZCBIVE1MRWxlbWVudDo6YWRqdXN0RGlyZWN0aW9uYWxpdHlJZk5lZWRlZEFmdGVyQ2hp
bGRBdHRyaWJ1dGVDaGFuZ2VkKEVsZW1lbnQKICAgICBOb2RlKiBzdHJvbmdEaXJlY3Rpb25hbGl0
eVRleHROb2RlOwogICAgIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiA9IGRpcmVjdGlvbmFs
aXR5KCZzdHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlKTsKICAgICBzZXRIYXNEaXJBdXRvRmxh
Z1JlY3Vyc2l2ZWx5KGNoaWxkLCBmYWxzZSk7Ci0gICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVy
ZXIoKS0+c3R5bGUoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5kaXJlY3Rpb24oKSAhPSB0ZXh0
RGlyZWN0aW9uKSB7CisgICAgaWYgKGhhc1JlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUo
KSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5kaXJlY3Rpb24oKSAhPSB0ZXh0RGlyZWN0aW9uKSB7
CiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnRUb0FkanVzdCA9IHRoaXM7CiAgICAgICAgIGZvciAo
OyBlbGVtZW50VG9BZGp1c3Q7IGVsZW1lbnRUb0FkanVzdCA9IGVsZW1lbnRUb0FkanVzdC0+cGFy
ZW50RWxlbWVudCgpKSB7CiAgICAgICAgICAgICBpZiAoZWxlbWVudFRvQWRqdXN0LT5oYXNBdHRy
aWJ1dGUoZGlyQXR0cikpIHsKQEAgLTkxNywxMyArOTE3LDEzIEBAIHZvaWQgSFRNTEVsZW1lbnQ6
OmNhbGN1bGF0ZUFuZEFkanVzdERpcmVjdGlvbmFsaXR5KCkKICAgICBOb2RlKiBzdHJvbmdEaXJl
Y3Rpb25hbGl0eVRleHROb2RlOwogICAgIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiA9IGRp
cmVjdGlvbmFsaXR5KCZzdHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlKTsKICAgICBzZXRIYXNE
aXJBdXRvRmxhZ1JlY3Vyc2l2ZWx5KHRoaXMsIHRydWUsIHN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4
dE5vZGUpOwotICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCkgJiYgcmVu
ZGVyZXIoKS0+c3R5bGUoKS0+ZGlyZWN0aW9uKCkgIT0gdGV4dERpcmVjdGlvbikKKyAgICBpZiAo
aGFzUmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpICYmIHJlbmRlcmVyKCktPnN0eWxl
KCktPmRpcmVjdGlvbigpICE9IHRleHREaXJlY3Rpb24pCiAgICAgICAgIHNldE5lZWRzU3R5bGVS
ZWNhbGMoKTsKIH0KIAogdm9pZCBIVE1MRWxlbWVudDo6YWRqdXN0RGlyZWN0aW9uYWxpdHlJZk5l
ZWRlZEFmdGVyQ2hpbGRyZW5DaGFuZ2VkKE5vZGUqIGJlZm9yZUNoYW5nZSwgaW50IGNoaWxkQ291
bnREZWx0YSkKIHsKLSAgICBpZiAoKCFkb2N1bWVudCgpIHx8IGRvY3VtZW50KCktPnJlbmRlcmVy
KCkpICYmIGNoaWxkQ291bnREZWx0YSA8IDApIHsKKyAgICBpZiAoKCFkb2N1bWVudCgpIHx8IGRv
Y3VtZW50KCktPmhhc1JlbmRlcmVyKCkpICYmIGNoaWxkQ291bnREZWx0YSA8IDApIHsKICAgICAg
ICAgTm9kZSogbm9kZSA9IGJlZm9yZUNoYW5nZSA/IGJlZm9yZUNoYW5nZS0+dHJhdmVyc2VOZXh0
U2libGluZygpIDogMDsKICAgICAgICAgZm9yIChpbnQgY291bnRlciA9IDA7IG5vZGUgJiYgY291
bnRlciA8IGNoaWxkQ291bnREZWx0YTsgY291bnRlcisrLCBub2RlID0gbm9kZS0+dHJhdmVyc2VO
ZXh0U2libGluZygpKSB7CiAgICAgICAgICAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpICYm
IHRvRWxlbWVudChub2RlKS0+aGFzQXR0cmlidXRlKGRpckF0dHIpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKaW5kZXggMzhiMjQxNjBiYWU2NDlmMWRhMDNkOGU1YmM1
MTM5Y2QyOWJlMjI1My4uNjM3Y2VmMzkwMmZjNzZkYzcyMjVkYTFiY2Q3OTQ4ODhkNjAzY2Y1NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCkBAIC01NywxMiArNTcs
MTIgQEAgUGFzc1JlZlB0cjxIVE1MRW1iZWRFbGVtZW50PiBIVE1MRW1iZWRFbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmEKIAogc3RhdGljIGlubGluZSBSZW5kZXJXaWRn
ZXQqIGZpbmRXaWRnZXRSZW5kZXJlcihjb25zdCBOb2RlKiBuKSAKIHsKLSAgICBpZiAoIW4tPnJl
bmRlcmVyKCkpCisgICAgaWYgKCFuLT5oYXNSZW5kZXJlcigpKQogICAgICAgICBkbwogICAgICAg
ICAgICAgbiA9IG4tPnBhcmVudE5vZGUoKTsKICAgICAgICAgd2hpbGUgKG4gJiYgIW4tPmhhc1Rh
Z05hbWUob2JqZWN0VGFnKSk7CiAKLSAgICBpZiAobiAmJiBuLT5yZW5kZXJlcigpICYmIG4tPnJl
bmRlcmVyKCktPmlzV2lkZ2V0KCkpCisgICAgaWYgKG4gJiYgbi0+aGFzUmVuZGVyZXIoKSAmJiBu
LT5yZW5kZXJlcigpLT5pc1dpZGdldCgpKQogICAgICAgICByZXR1cm4gdG9SZW5kZXJXaWRnZXQo
bi0+cmVuZGVyZXIoKSk7CiAKICAgICByZXR1cm4gMDsKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBI
VE1MRW1iZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAg
ICAgICAgIG1fdXJsID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHZhbHVlLnN0
cmluZygpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gc3JjQXR0cikgewogICAgICAg
ICBtX3VybCA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh2YWx1ZS5zdHJpbmco
KSk7Ci0gICAgICAgIGlmIChyZW5kZXJlcigpICYmIGlzSW1hZ2VUeXBlKCkpIHsKKyAgICAgICAg
aWYgKGhhc1JlbmRlcmVyKCkgJiYgaXNJbWFnZVR5cGUoKSkgewogICAgICAgICAgICAgaWYgKCFt
X2ltYWdlTG9hZGVyKQogICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBhZG9wdFB0cihu
ZXcgSFRNTEltYWdlTG9hZGVyKHRoaXMpKTsKICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVw
ZGF0ZUZyb21FbGVtZW50SWdub3JpbmdQcmV2aW91c0Vycm9yKCk7CkBAIC0xOTYsNyArMTk2LDcg
QEAgYm9vbCBIVE1MRW1iZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5k
ZXJpbmdDb250ZXh0JiBjb250ZXh0KQogICAgIC8vIHNob3VsZCBiZSBpZ25vcmVkIGFuZCBub3Qg
Z2V0IGEgcmVuZGVyZXIuCiAgICAgQ29udGFpbmVyTm9kZSogcCA9IHBhcmVudE5vZGUoKTsKICAg
ICBpZiAocCAmJiBwLT5oYXNUYWdOYW1lKG9iamVjdFRhZykpIHsKLSAgICAgICAgQVNTRVJUKHAt
PnJlbmRlcmVyKCkpOworICAgICAgICBBU1NFUlQocC0+aGFzUmVuZGVyZXIoKSk7CiAgICAgICAg
IGlmICghc3RhdGljX2Nhc3Q8SFRNTE9iamVjdEVsZW1lbnQqPihwKS0+dXNlRmFsbGJhY2tDb250
ZW50KCkpIHsKICAgICAgICAgICAgIEFTU0VSVCghcC0+cmVuZGVyZXIoKS0+aXNFbWJlZGRlZE9i
amVjdCgpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDM2ZjM0Y2Q1YzU0N2ZmMTdmNTZk
ZWJjZDE0ZWRkZWEzYTEzNTk1YmIuLjBiMTgyY2Y5YjJhOTcxY2EyMDRhYjQ1NGMyMTYyYjg3ZWYx
YjMxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmNwcApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgbV9kaXNhYmxlZCA9ICFh
dHRyLT5pc051bGwoKTsKICAgICAgICAgaWYgKG9sZERpc2FibGVkICE9IG1fZGlzYWJsZWQpIHsK
ICAgICAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKLSAgICAgICAgICAgIGlmIChyZW5k
ZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkKKyAgICAgICAg
ICAgIGlmIChoYXNSZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCktPmhhc0FwcGVhcmFu
Y2UoKSkKICAgICAgICAgICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLT5zdGF0ZUNoYW5nZWQo
cmVuZGVyZXIoKSwgRW5hYmxlZFN0YXRlKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IHJlYWRvbmx5QXR0cikgewpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgSFRN
TEZvcm1Db250cm9sRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRy
KQogICAgICAgICBtX3JlYWRPbmx5ID0gIWF0dHItPmlzTnVsbCgpOwogICAgICAgICBpZiAob2xk
UmVhZE9ubHkgIT0gbV9yZWFkT25seSkgewogICAgICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2Fs
YygpOwotICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS0+
aGFzQXBwZWFyYW5jZSgpKQorICAgICAgICAgICAgaWYgKGhhc1JlbmRlcmVyKCkgJiYgcmVuZGVy
ZXIoKS0+c3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgpKQogICAgICAgICAgICAgICAgIHJlbmRlcmVy
KCktPnRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBSZWFkT25seVN0YXRlKTsKICAg
ICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHJlcXVpcmVkQXR0cikgewpA
QCAtMTI0LDcgKzEyNCw3IEBAIHN0YXRpYyBib29sIHNob3VsZEF1dG9mb2N1cyhIVE1MRm9ybUNv
bnRyb2xFbGVtZW50KiBlbGVtZW50KQogewogICAgIGlmICghZWxlbWVudC0+YXV0b2ZvY3VzKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWVsZW1lbnQtPnJlbmRlcmVyKCkpCisg
ICAgaWYgKCFlbGVtZW50LT5oYXNSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaWYgKGVsZW1lbnQtPmRvY3VtZW50KCktPmlnbm9yZUF1dG9mb2N1cygpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50OjphdHRhY2goKQogICAgIC8vIFRoZSBjYWxsIHRvIHVwZGF0ZUZyb21FbGVtZW50KCkgbmVl
ZHMgdG8gZ28gYWZ0ZXIgdGhlIGNhbGwgdGhyb3VnaAogICAgIC8vIHRvIHRoZSBiYXNlIGNsYXNz
J3MgYXR0YWNoKCkgYmVjYXVzZSB0aGF0IGNhbiBzb21ldGltZXMgZG8gYSBjbG9zZQogICAgIC8v
IG9uIHRoZSByZW5kZXJlci4KLSAgICBpZiAocmVuZGVyZXIoKSkKKyAgICBpZiAoaGFzUmVuZGVy
ZXIoKSkKICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKIAogICAgIGlm
IChzaG91bGRBdXRvZm9jdXModGhpcykpIHsKQEAgLTI2MCw5ICsyNjAsOSBAQCBzdGF0aWMgdm9p
ZCB1cGRhdGVGcm9tRWxlbWVudENhbGxiYWNrKE5vZGUqIG5vZGUsIHVuc2lnbmVkKQogewogICAg
IEFTU0VSVF9BUkcobm9kZSwgbm9kZS0+aXNFbGVtZW50Tm9kZSgpKTsKICAgICBBU1NFUlRfQVJH
KG5vZGUsIHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKS0+aXNGb3JtQ29udHJvbEVsZW1lbnQo
KSk7Ci0gICAgQVNTRVJUKG5vZGUtPnJlbmRlcmVyKCkpOwotICAgIGlmIChSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKSkKLSAgICAgICAgcmVuZGVyZXItPnVwZGF0ZUZy
b21FbGVtZW50KCk7CisgICAgQVNTRVJUKG5vZGUtPmhhc1JlbmRlcmVyKCkpOworICAgIGlmIChu
b2RlLT5oYXNSZW5kZXJlcigpKQorICAgICAgICBub2RlLT5yZW5kZXJlcigpLT51cGRhdGVGcm9t
RWxlbWVudCgpOwogfQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlY2FsY1N0eWxl
KFN0eWxlQ2hhbmdlIGNoYW5nZSkKQEAgLTI3MSw3ICsyNzEsNyBAQCB2b2lkIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkKIAogICAgIC8vIHVw
ZGF0ZUZyb21FbGVtZW50KCkgY2FuIGNhdXNlIHRoZSBzZWxlY3Rpb24gdG8gY2hhbmdlLCBhbmQg
aW4gdHVybgogICAgIC8vIHRyaWdnZXIgc3luY2hyb25vdXMgbGF5b3V0LCBzbyBpdCBtdXN0IG5v
dCBiZSBjYWxsZWQgZHVyaW5nIHN0eWxlIHJlY2FsYy4KLSAgICBpZiAocmVuZGVyZXIoKSkKKyAg
ICBpZiAoaGFzUmVuZGVyZXIoKSkKICAgICAgICAgcXVldWVQb3N0QXR0YWNoQ2FsbGJhY2sodXBk
YXRlRnJvbUVsZW1lbnRDYWxsYmFjaywgdGhpcyk7CiB9CiAKQEAgLTI4Miw4ICsyODIsNyBAQCBi
b29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnN1cHBvcnRzRm9jdXMoKSBjb25zdAogCiBib29s
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkgY29uc3QKIHsKLSAgICBpZiAo
IXJlbmRlcmVyKCkgfHwgCi0gICAgICAgICFyZW5kZXJlcigpLT5pc0JveCgpIHx8IHRvUmVuZGVy
Qm94KHJlbmRlcmVyKCkpLT5zaXplKCkuaXNFbXB0eSgpKQorICAgIGlmICghaGFzUmVuZGVyZXIo
KSB8fCAhcmVuZGVyZXIoKS0+aXNCb3goKSB8fCB0b1JlbmRlckJveChyZW5kZXJlcigpKS0+c2l6
ZSgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIC8vIEhUTUxFbGVtZW50
Ojppc0ZvY3VzYWJsZSBoYW5kbGVzIHZpc2liaWxpdHkgYW5kIGNhbGxzIHN1cG9ydHNGb2N1cyB3
aGljaAogICAgIC8vIHdpbGwgY292ZXIgdGhlIGRpc2FibGVkIGNhc2UuCkBAIC0zNTksNyArMzU4
LDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRhdGVWaXNpYmxlVmFsaWRhdGlv
bk1lc3NhZ2UoKQogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogICAgIFN0cmluZyBt
ZXNzYWdlOwotICAgIGlmIChyZW5kZXJlcigpICYmIHdpbGxWYWxpZGF0ZSgpKSB7CisgICAgaWYg
KGhhc1JlbmRlcmVyKCkgJiYgd2lsbFZhbGlkYXRlKCkpIHsKICAgICAgICAgbWVzc2FnZSA9IHZh
bGlkYXRpb25NZXNzYWdlKCkuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgICAgIC8vIEhUTUw1IHNw
ZWNpZmljYXRpb24gZG9lc24ndCBhc2sgVUEgdG8gc2hvdyB0aGUgdGl0bGUgYXR0cmlidXRlIHZh
bHVlCiAgICAgICAgIC8vIHdpdGggdGhlIHZhbGlkYXRpb25NZXNzYWdlLiAgSG93ZXZlciwgdGhp
cyBiZWhhdmlvciBpcyBzYW1lIGFzIE9wZXJhCkBAIC01NTQsNyArNTUzLDcgQEAgdm9pZCBIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKQogCiB2
b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQqIGV2ZW50KQogewotICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS53
ZWJraXRFZGl0YWJsZUNvbnRlbnRDaGFuZ2VkRXZlbnQgJiYgcmVuZGVyZXIoKSAmJiByZW5kZXJl
cigpLT5pc1RleHRDb250cm9sKCkpIHsKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5h
bWVzKCkud2Via2l0RWRpdGFibGVDb250ZW50Q2hhbmdlZEV2ZW50ICYmIGhhc1JlbmRlcmVyKCkg
JiYgcmVuZGVyZXIoKS0+aXNUZXh0Q29udHJvbCgpKSB7CiAgICAgICAgIHRvUmVuZGVyVGV4dENv
bnRyb2wocmVuZGVyZXIoKSktPnN1YnRyZWVIYXNDaGFuZ2VkKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC02MjgsMTIgKzYyNywxMiBAQCBib29sIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50OjpwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpIGNvbnN0CiAgICAgICAgICYmIGlzRW1w
dHlWYWx1ZSgpCiAgICAgICAgICYmIGlzRW1wdHlTdWdnZXN0ZWRWYWx1ZSgpCiAgICAgICAgICYm
ICFpc1BsYWNlaG9sZGVyRW1wdHkoKQotICAgICAgICAmJiAoZG9jdW1lbnQoKS0+Zm9jdXNlZE5v
ZGUoKSAhPSB0aGlzIHx8IChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnRoZW1lKCktPnNob3Vs
ZFNob3dQbGFjZWhvbGRlcldoZW5Gb2N1c2VkKCkpKTsKKyAgICAgICAgJiYgKGRvY3VtZW50KCkt
PmZvY3VzZWROb2RlKCkgIT0gdGhpcyB8fCAoaGFzUmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT50
aGVtZSgpLT5zaG91bGRTaG93UGxhY2Vob2xkZXJXaGVuRm9jdXNlZCgpKSk7CiB9CiAKIHZvaWQg
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShi
b29sIHBsYWNlaG9sZGVyVmFsdWVDaGFuZ2VkKQogewotICAgIGlmIChzdXBwb3J0c1BsYWNlaG9s
ZGVyKCkgJiYgcmVuZGVyZXIoKSkKKyAgICBpZiAoc3VwcG9ydHNQbGFjZWhvbGRlcigpICYmIGhh
c1JlbmRlcmVyKCkpCiAgICAgICAgIHRvUmVuZGVyVGV4dENvbnRyb2wocmVuZGVyZXIoKSktPnVw
ZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpLCBw
bGFjZWhvbGRlclZhbHVlQ2hhbmdlZCk7CiB9CiAKQEAgLTY4MCw3ICs2NzksNyBAQCBpbnQgSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNlbGVjdGlvblN0YXJ0KCkgY29uc3QKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgaWYgKGRvY3VtZW50KCktPmZvY3VzZWROb2RlKCkgIT0gdGhpcyAmJiBj
YWNoZWRTZWxlY3Rpb25TdGFydCgpID49IDApCiAgICAgICAgIHJldHVybiBjYWNoZWRTZWxlY3Rp
b25TdGFydCgpOwotICAgIGlmICghcmVuZGVyZXIoKSkKKyAgICBpZiAoIWhhc1JlbmRlcmVyKCkp
CiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiB0b1JlbmRlclRleHRDb250cm9sKHJlbmRl
cmVyKCkpLT5zZWxlY3Rpb25TdGFydCgpOwogfQpAQCAtNjkxLDE0ICs2OTAsMTQgQEAgaW50IEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZWxlY3Rpb25FbmQoKSBjb25zdAogICAgICAgICBy
ZXR1cm4gMDsKICAgICBpZiAoZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKSAhPSB0aGlzICYmIGNh
Y2hlZFNlbGVjdGlvbkVuZCgpID49IDApCiAgICAgICAgIHJldHVybiBjYWNoZWRTZWxlY3Rpb25F
bmQoKTsKLSAgICBpZiAoIXJlbmRlcmVyKCkpCisgICAgaWYgKCFoYXNSZW5kZXJlcigpKQogICAg
ICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gdG9SZW5kZXJUZXh0Q29udHJvbChyZW5kZXJlcigp
KS0+c2VsZWN0aW9uRW5kKCk7CiB9CiAKIFBhc3NSZWZQdHI8UmFuZ2U+IEhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50OjpzZWxlY3Rpb24oKSBjb25zdAogewotICAgIGlmICghcmVuZGVyZXIoKSB8
fCAhaXNUZXh0Rm9ybUNvbnRyb2woKSB8fCBjYWNoZWRTZWxlY3Rpb25TdGFydCgpIDwgMCB8fCBj
YWNoZWRTZWxlY3Rpb25FbmQoKSA8IDApCisgICAgaWYgKCFoYXNSZW5kZXJlcigpIHx8ICFpc1Rl
eHRGb3JtQ29udHJvbCgpIHx8IGNhY2hlZFNlbGVjdGlvblN0YXJ0KCkgPCAwIHx8IGNhY2hlZFNl
bGVjdGlvbkVuZCgpIDwgMCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIHRvUmVuZGVy
VGV4dENvbnRyb2wocmVuZGVyZXIoKSktPnNlbGVjdGlvbihjYWNoZWRTZWxlY3Rpb25TdGFydCgp
LCBjYWNoZWRTZWxlY3Rpb25FbmQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxl
bWVudC5jcHAKaW5kZXggOGRmNDc3NjlmMTYzYzJjNzc3NzIxNTJjZGJiNTVkNDgwZmM2MTM4Zi4u
NTZmOTc2ZDJjMmI4MTc2MzYzOGUxNDM4ZjRkOGVhMWI1MjQwMjBlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgSFRNTEZv
cm1FbGVtZW50OjpzdWJtaXRJbXBsaWNpdGx5KEV2ZW50KiBldmVudCwgYm9vbCBmcm9tSW1wbGlj
aXRTdWJtaXNzaW9uCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgSFRNTEZvcm1Db250
cm9sRWxlbWVudCogZm9ybUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50Kj4oZm9ybUFzc29jaWF0ZWRFbGVtZW50KTsKICAgICAgICAgaWYgKGZvcm1FbGVtZW50LT5p
c1N1Y2Nlc3NmdWxTdWJtaXRCdXR0b24oKSkgewotICAgICAgICAgICAgaWYgKGZvcm1FbGVtZW50
LT5yZW5kZXJlcigpKSB7CisgICAgICAgICAgICBpZiAoZm9ybUVsZW1lbnQtPmhhc1JlbmRlcmVy
KCkpIHsKICAgICAgICAgICAgICAgICBmb3JtRWxlbWVudC0+ZGlzcGF0Y2hTaW11bGF0ZWRDbGlj
ayhldmVudCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAKaW5kZXggMzRlZGU4ZGY4YTFmOGU2Mjdk
M2VmZGRlOTViM2VhYTc4MzU2YTI2Yi4uNzkyZjliZmI2YmI5OGYxYzM3ZGM0M2RmZTlhNzJkYTcx
NDhmMWJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCkBAIC04
OSw3ICs4OSw3IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUo
QXR0cmlidXRlKiBhdHRyKQogICAgICAgICBtX2ZyYW1lQm9yZGVyU2V0ID0gIWF0dHItPmlzTnVs
bCgpOwogICAgICAgICAvLyBGSVhNRTogSWYgd2UgYXJlIGFscmVhZHkgYXR0YWNoZWQsIHRoaXMg
aGFzIG5vIGVmZmVjdC4KICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBub3Jlc2l6ZUF0
dHIpIHsKLSAgICAgICAgaWYgKHJlbmRlcmVyKCkpCisgICAgICAgIGlmIChoYXNSZW5kZXJlcigp
KQogICAgICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKICAgICB9IGVs
c2UKICAgICAgICAgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0
dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAppbmRl
eCA3ZmEwODNlZGY2YzJiYmMwOTFiMjEyZDIyYjg5NmU5YzY0Zjc2ZDljLi45MjgwYTFlZWI5NTU0
NTJjMjM1MTgzYTE4ZDJmYzViZWRjNmI5Zjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZUVsZW1lbnRCYXNlLmNwcApAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgSFRNTEZyYW1l
RWxlbWVudEJhc2U6Omluc2VydGVkSW50b0RvY3VtZW50KCkKICAgICAvLyBGSVhNRTogTm9ybWFs
bHkgbGF6eUF0dGFjaCBtYXJrcyB0aGUgcmVuZGVyZXIgYXMgYXR0YWNoZWQoKSwgYnV0IHdlIGRv
bid0CiAgICAgLy8gd2FudCB0byBkbyB0aGF0IGhlcmUsIGFzIGFzIGNhbGxlcnMgZXhwZWN0IHRv
IGNhbGwgYXR0YWNoKCkgcmlnaHQgYWZ0ZXIKICAgICAvLyB0aGlzIGFuZCBhdHRhY2goKSB3aWxs
IEFTU0VSVCghYXR0YWNoZWQoKSkKLSAgICBBU1NFUlQoIXJlbmRlcmVyKCkpOyAvLyBUaGlzIHJl
Y2FsYyBpcyB1bmVjZXNzYXJ5IGlmIHdlIGFscmVhZHkgaGF2ZSBhIHJlbmRlcmVyLgorICAgIEFT
U0VSVCghaGFzUmVuZGVyZXIoKSk7IC8vIFRoaXMgcmVjYWxjIGlzIHVuZWNlc3NhcnkgaWYgd2Ug
YWxyZWFkeSBoYXZlIGEgcmVuZGVyZXIuCiAgICAgbGF6eUF0dGFjaChEb05vdFNldEF0dGFjaGVk
KTsKICAgICBzZXROYW1lQW5kT3BlblVSTCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCmluZGV4IGEyMTc4ODFmMzI1NDZjNWU0ZDRiYzQ1MDc2
OWU4ODg2M2U0YjQyOTkuLjljNmUwZTczNzRhMTdlYmU1MmExMjNjYWI0YmVjYzQ5MWVhMjc4ZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKQEAg
LTQ0LDcgKzQ0LDcgQEAgUmVuZGVyUGFydCogSFRNTEZyYW1lT3duZXJFbGVtZW50OjpyZW5kZXJQ
YXJ0KCkgY29uc3QKIHsKICAgICAvLyBIVE1MT2JqZWN0RWxlbWVudCBhbmQgSFRNTEVtYmVkRWxl
bWVudCBtYXkgcmV0dXJuIGFyYml0cmFyeSByZW5kZXJlcnMKICAgICAvLyB3aGVuIHVzaW5nIGZh
bGxiYWNrIGNvbnRlbnQuCi0gICAgaWYgKCFyZW5kZXJlcigpIHx8ICFyZW5kZXJlcigpLT5pc1Jl
bmRlclBhcnQoKSkKKyAgICBpZiAoIWhhc1JlbmRlcmVyKCkgfHwgIXJlbmRlcmVyKCktPmlzUmVu
ZGVyUGFydCgpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gdG9SZW5kZXJQYXJ0KHJl
bmRlcmVyKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVT
ZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5j
cHAKaW5kZXggNzUzZWIwZjRiMTllMjdmY2NhNDc3ZTIyMmYzMGIwNGEzNzEzNDliMy4uYmQwNzMx
MmI0NGI2NDU3OGZkNzliNjQ5MTYzNzA4NDM5MWNmMmQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCkBAIC0xODksNyArMTg5LDcgQEAgdm9pZCBIVE1M
RnJhbWVTZXRFbGVtZW50OjphdHRhY2goKQogCiB2b2lkIEhUTUxGcmFtZVNldEVsZW1lbnQ6OmRl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2dCkKIHsKLSAgICBpZiAoZXZ0LT5pc01vdXNlRXZl
bnQoKSAmJiAhbV9ub3Jlc2l6ZSAmJiByZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzRnJhbWVT
ZXQoKSkgeworICAgIGlmIChldnQtPmlzTW91c2VFdmVudCgpICYmICFtX25vcmVzaXplICYmIGhh
c1JlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+aXNGcmFtZVNldCgpKSB7CiAgICAgICAgIGlmICh0
b1JlbmRlckZyYW1lU2V0KHJlbmRlcmVyKCkpLT51c2VyUmVzaXplKHN0YXRpY19jYXN0PE1vdXNl
RXZlbnQqPihldnQpKSkgewogICAgICAgICAgICAgZXZ0LT5zZXREZWZhdWx0SGFuZGxlZCgpOwog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgSFRNTEZyYW1lU2V0
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZ0KQogCiB2b2lkIEhUTUxGcmFt
ZVNldEVsZW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoKQogewotICAgIGlmIChuZWVk
c1N0eWxlUmVjYWxjKCkgJiYgcmVuZGVyZXIoKSkgeworICAgIGlmIChuZWVkc1N0eWxlUmVjYWxj
KCkgJiYgaGFzUmVuZGVyZXIoKSkgewogICAgICAgICByZW5kZXJlcigpLT5zZXROZWVkc0xheW91
dCh0cnVlKTsKICAgICAgICAgY2xlYXJOZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggYTgzMWYwZjEyYmJjMDc5Mjlh
ZWE3M2UzMzRmOWZjMWExNWFlY2U1OC4uODI1MmM3N2NkZjVhOGNiNzkzZjcxMGFjYmUyM2RiYmEw
YzNlMmVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC0x
MDIsNyArMTAyLDcgQEAgdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZShBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUg
PSBhdHRyLT5uYW1lKCk7CiAgICAgaWYgKGF0dHJOYW1lID09IGFsdEF0dHIpIHsKLSAgICAgICAg
aWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+aXNJbWFnZSgpKQorICAgICAgICBpZiAoaGFz
UmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc0ltYWdlKCkpCiAgICAgICAgICAgICB0b1JlbmRl
ckltYWdlKHJlbmRlcmVyKCkpLT51cGRhdGVBbHRUZXh0KCk7CiAgICAgfSBlbHNlIGlmIChhdHRy
TmFtZSA9PSBzcmNBdHRyKQogICAgICAgICBtX2ltYWdlTG9hZGVyLnVwZGF0ZUZyb21FbGVtZW50
SWdub3JpbmdQcmV2aW91c0Vycm9yKCk7CkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBIVE1MSW1h
Z2VFbGVtZW50OjphdHRhY2goKQogewogICAgIEhUTUxFbGVtZW50OjphdHRhY2goKTsKIAotICAg
IGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzSW1hZ2UoKSAmJiBtX2ltYWdlTG9hZGVy
LmhhdmVGaXJlZEJlZm9yZUxvYWRFdmVudCgpKSB7CisgICAgaWYgKGhhc1JlbmRlcmVyKCkgJiYg
cmVuZGVyZXIoKS0+aXNJbWFnZSgpICYmIG1faW1hZ2VMb2FkZXIuaGF2ZUZpcmVkQmVmb3JlTG9h
ZEV2ZW50KCkpIHsKICAgICAgICAgUmVuZGVySW1hZ2UqIHJlbmRlckltYWdlID0gdG9SZW5kZXJJ
bWFnZShyZW5kZXJlcigpKTsKICAgICAgICAgUmVuZGVySW1hZ2VSZXNvdXJjZSogcmVuZGVySW1h
Z2VSZXNvdXJjZSA9IHJlbmRlckltYWdlLT5pbWFnZVJlc291cmNlKCk7CiAgICAgICAgIGlmIChy
ZW5kZXJJbWFnZVJlc291cmNlLT5oYXNJbWFnZSgpKQpAQCAtMjU5LDcgKzI1OSw3IEBAIHZvaWQg
SFRNTEltYWdlRWxlbWVudDo6cmVtb3ZlZEZyb21UcmVlKGJvb2wgZGVlcCkKIAogaW50IEhUTUxJ
bWFnZUVsZW1lbnQ6OndpZHRoKGJvb2wgaWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKSBjb25zdAog
ewotICAgIGlmICghcmVuZGVyZXIoKSkgeworICAgIGlmICghaGFzUmVuZGVyZXIoKSkgewogICAg
ICAgICAvLyBjaGVjayB0aGUgYXR0cmlidXRlIGZpcnN0IGZvciBhbiBleHBsaWNpdCBwaXhlbCB2
YWx1ZQogICAgICAgICBib29sIG9rOwogICAgICAgICBpbnQgd2lkdGggPSBnZXRBdHRyaWJ1dGUo
d2lkdGhBdHRyKS50b0ludCgmb2spOwpAQCAtMjgyLDcgKzI4Miw3IEBAIGludCBIVE1MSW1hZ2VF
bGVtZW50Ojp3aWR0aChib29sIGlnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cykgY29uc3QKIAogaW50
IEhUTUxJbWFnZUVsZW1lbnQ6OmhlaWdodChib29sIGlnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cykg
Y29uc3QKIHsKLSAgICBpZiAoIXJlbmRlcmVyKCkpIHsKKyAgICBpZiAoIWhhc1JlbmRlcmVyKCkp
IHsKICAgICAgICAgLy8gY2hlY2sgdGhlIGF0dHJpYnV0ZSBmaXJzdCBmb3IgYW4gZXhwbGljaXQg
cGl4ZWwgdmFsdWUKICAgICAgICAgYm9vbCBvazsKICAgICAgICAgaW50IGhlaWdodCA9IGdldEF0
dHJpYnV0ZShoZWlnaHRBdHRyKS50b0ludCgmb2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKaW5kZXggNzY2YzM4MDI0ZWVhMTZhNDk0MDBjZGFiYWQ1M2JhOGIyOTZk
NGFkZi4uNTg0YjlhOTUzOGJlMzZjNWIzMzg1NzAzNDk0MGQ3NjEzMmQ5ZDdiNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAgdm9p
ZCBIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVDaGVja2VkUmFkaW9CdXR0b25zKCkKICAgICAgICAg
fQogICAgIH0KIAotICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCktPmhh
c0FwcGVhcmFuY2UoKSkKKyAgICBpZiAoaGFzUmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHls
ZSgpLT5oYXNBcHBlYXJhbmNlKCkpCiAgICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCktPnN0YXRl
Q2hhbmdlZChyZW5kZXJlcigpLCBDaGVja2VkU3RhdGUpOwogfQogCkBAIC0yMTQsNyArMjE0LDcg
QEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpsYXN0Q2hhbmdlV2FzVXNlckVkaXQoKSBjb25zdAog
ICAgIGlmICghaXNUZXh0RmllbGQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAg
IGlmICghcmVuZGVyZXIoKSkKKyAgICBpZiAoIWhhc1JlbmRlcmVyKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIHJldHVybiB0b1JlbmRlclRleHRDb250cm9sKHJlbmRlcmVyKCkpLT5s
YXN0Q2hhbmdlV2FzVXNlckVkaXQoKTsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIEhUTUxJbnB1
dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAg
cGFyc2VNYXhMZW5ndGhBdHRyaWJ1dGUoYXR0cik7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IHNpemVBdHRyKSB7CiAgICAgICAgIG1fc2l6ZSA9IGF0dHItPmlzTnVsbCgpID8gZGVmYXVs
dFNpemUgOiBhdHRyLT52YWx1ZSgpLnRvSW50KCk7Ci0gICAgICAgIGlmIChyZW5kZXJlcigpKQor
ICAgICAgICBpZiAoaGFzUmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJlbmRlcmVyKCktPnNldE5l
ZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IGFsdEF0dHIpCiAgICAgICAgIG1faW5wdXRUeXBlLT5hbHRBdHRyaWJ1dGVDaGFuZ2Vk
KCk7CkBAIC03NDAsNyArNzQwLDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BF
RUNIKQogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSB3ZWJraXRzcGVlY2hBdHRyKSB7Ci0g
ICAgICAgIGlmIChyZW5kZXJlcigpKSB7CisgICAgICAgIGlmIChoYXNSZW5kZXJlcigpKSB7CiAg
ICAgICAgICAgICAvLyBUaGlzIHJlbmRlcmVyIGFuZCBpdHMgY2hpbGRyZW4gaGF2ZSBxdWl0ZSBk
aWZmZXJlbnQgbGF5b3V0cyBhbmQgc3R5bGVzIGRlcGVuZGluZyBvbgogICAgICAgICAgICAgLy8g
d2hldGhlciB0aGUgc3BlZWNoIGJ1dHRvbiBpcyB2aXNpYmxlIG9yIG5vdC4gU28gd2UgcmVzZXQg
dGhlIHdob2xlIHRoaW5nIGFuZCByZWNyZWF0ZQogICAgICAgICAgICAgLy8gdG8gZ2V0IHRoZSBy
aWdodCBzdHlsZXMgYW5kIGxheW91dC4KQEAgLTg4MCw3ICs4ODAsNyBAQCB2b2lkIEhUTUxJbnB1
dEVsZW1lbnQ6OnNldENoZWNrZWQoYm9vbCBub3dDaGVja2VkLCBib29sIHNlbmRDaGFuZ2VFdmVu
dCkKICAgICAvLyBJZGVhbGx5IHdlJ2QgZG8gdGhpcyBmcm9tIHRoZSByZW5kZXIgdHJlZSAobWF0
Y2hpbmcKICAgICAvLyBSZW5kZXJUZXh0VmlldyksIGJ1dCBpdCdzIG5vdCBwb3NzaWJsZSB0byBk
byBpdCBhdCB0aGUgbW9tZW50CiAgICAgLy8gYmVjYXVzZSBvZiB0aGUgd2F5IHRoZSBjb2RlIGlz
IHN0cnVjdHVyZWQuCi0gICAgaWYgKHJlbmRlcmVyKCkgJiYgQVhPYmplY3RDYWNoZTo6YWNjZXNz
aWJpbGl0eUVuYWJsZWQoKSkKKyAgICBpZiAoaGFzUmVuZGVyZXIoKSAmJiBBWE9iamVjdENhY2hl
OjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKQogICAgICAgICByZW5kZXJlcigpLT5kb2N1bWVudCgp
LT5heE9iamVjdENhY2hlKCktPnBvc3ROb3RpZmljYXRpb24ocmVuZGVyZXIoKSwgQVhPYmplY3RD
YWNoZTo6QVhDaGVja2VkU3RhdGVDaGFuZ2VkLCB0cnVlKTsKIAogICAgIC8vIE9ubHkgc2VuZCBh
IGNoYW5nZSBldmVudCBmb3IgaXRlbXMgaW4gdGhlIGRvY3VtZW50IChhdm9pZCBmaXJpbmcgZHVy
aW5nCkBAIC05MDMsNyArOTAzLDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRJbmRldGVy
bWluYXRlKGJvb2wgbmV3VmFsdWUpCiAKICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAKLSAg
ICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5oYXNBcHBlYXJhbmNlKCkp
CisgICAgaWYgKGhhc1JlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS0+aGFzQXBwZWFy
YW5jZSgpKQogICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVy
ZXIoKSwgQ2hlY2tlZFN0YXRlKTsKIH0KIApAQCAtOTY5LDcgKzk2OSw3IEBAIHZvaWQgSFRNTElu
cHV0RWxlbWVudDo6c2V0U3VnZ2VzdGVkVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBz
ZXRGb3JtQ29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKGZhbHNlKTsKICAgICBtX3N1Z2dlc3Rl
ZFZhbHVlID0gc2FuaXRpemVWYWx1ZSh2YWx1ZSk7CiAgICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNp
YmlsaXR5KGZhbHNlKTsKLSAgICBpZiAocmVuZGVyZXIoKSkKKyAgICBpZiAoaGFzUmVuZGVyZXIo
KSkKICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKICAgICBzZXROZWVk
c1N0eWxlUmVjYWxjKCk7CiB9CkBAIC0xMzQ1LDE0ICsxMzQ1LDE0IEBAIHZvaWQgSFRNTElucHV0
RWxlbWVudDo6Y2FjaGVTZWxlY3Rpb24oaW50IHN0YXJ0LCBpbnQgZW5kKQogdm9pZCBIVE1MSW5w
dXRFbGVtZW50OjphZGRTZWFyY2hSZXN1bHQoKQogewogICAgIEFTU0VSVChpc1NlYXJjaEZpZWxk
KCkpOwotICAgIGlmIChyZW5kZXJlcigpKQorICAgIGlmIChoYXNSZW5kZXJlcigpKQogICAgICAg
ICB0b1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZShyZW5kZXJlcigpKS0+YWRkU2VhcmNoUmVz
dWx0KCk7CiB9CiAKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6b25TZWFyY2goKQogewogICAgIEFT
U0VSVChpc1NlYXJjaEZpZWxkKCkpOwotICAgIGlmIChyZW5kZXJlcigpKQorICAgIGlmIChoYXNS
ZW5kZXJlcigpKQogICAgICAgICB0b1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZShyZW5kZXJl
cigpKS0+c3RvcFNlYXJjaEV2ZW50VGltZXIoKTsKICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLnNlYXJjaEV2ZW50LCB0cnVlLCBmYWxzZSkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExJRWxlbWVudC5jcHAKaW5kZXggOWFiZWE5ZmIyYTljNTM4MDJjYTY2YzU4
M2FjOGU4NTk5ZDcwMjRhMi4uNGIzZTMxNjczMTU5MzEzOWE1ZDRhNWMzMTBkNWVmYWFjMGY3YjAy
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwCkBAIC02NCw3ICs2NCw3IEBA
IHZvaWQgSFRNTExJRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRy
KQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gdmFsdWVBdHRyKSB7CiAgICAgICAgIG1fcmVx
dWVzdGVkVmFsdWUgPSBhdHRyLT52YWx1ZSgpLnRvSW50KCk7Ci0gICAgICAgIGlmIChyZW5kZXJl
cigpICYmIHJlbmRlcmVyKCktPmlzTGlzdEl0ZW0oKSkgeworICAgICAgICBpZiAoaGFzUmVuZGVy
ZXIoKSAmJiByZW5kZXJlcigpLT5pc0xpc3RJdGVtKCkpIHsKICAgICAgICAgICAgIGlmIChtX3Jl
cXVlc3RlZFZhbHVlID4gMCkKICAgICAgICAgICAgICAgICB0b1JlbmRlckxpc3RJdGVtKHJlbmRl
cmVyKCkpLT5zZXRFeHBsaWNpdFZhbHVlKG1fcmVxdWVzdGVkVmFsdWUpOwogICAgICAgICAgICAg
ZWxzZQpAQCAtOTMsNyArOTMsNyBAQCB2b2lkIEhUTUxMSUVsZW1lbnQ6OmF0dGFjaCgpCiAKICAg
ICBIVE1MRWxlbWVudDo6YXR0YWNoKCk7CiAKLSAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJl
cigpLT5pc0xpc3RJdGVtKCkpIHsKKyAgICBpZiAoaGFzUmVuZGVyZXIoKSAmJiByZW5kZXJlcigp
LT5pc0xpc3RJdGVtKCkpIHsKICAgICAgICAgUmVuZGVyTGlzdEl0ZW0qIHJlbmRlciA9IHRvUmVu
ZGVyTGlzdEl0ZW0ocmVuZGVyZXIoKSk7CiAKICAgICAgICAgLy8gRmluZCB0aGUgZW5jbG9zaW5n
IGxpc3Qgbm9kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAppbmRleCA5
NTM5ODQ3MjVkYTNmZWIzMTkzZjQ5Mzg5YjJkYTQ0ZmFhMWJlZmIyLi5jNTAwY2MyNGE2YjVhZGQ0
MzhiNTVkYzYyZjUyZDllYmNjMzA3MmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuY3BwCkBAIC0zNTksNyArMzU5LDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnJlbW92
ZWRGcm9tRG9jdW1lbnQoKQogICAgICAgICBtX3NoZWV0ID0gMDsKICAgICB9CiAKLSAgICBpZiAo
ZG9jdW1lbnQoKS0+cmVuZGVyZXIoKSkKKyAgICBpZiAoZG9jdW1lbnQoKS0+aGFzUmVuZGVyZXIo
KSkKICAgICAgICAgZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvckNoYW5nZWQoRGVmZXJSZWNhbGNT
dHlsZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcApp
bmRleCAwNTNmZmE4OTJhNDU4ZDM0MmQxMWEyOGMxNWY2NjMwNzhjYmY1ODJjLi44MGMzYzllZGE2
MWFhNjVkYTQ3OGYwZGVlZmQ5NmY2MjQ0ZTRmNTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWFycXVlZUVsZW1lbnQuY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBIVE1MTWFycXVl
ZUVsZW1lbnQ6OnJlc3VtZSgpCiAKIFJlbmRlck1hcnF1ZWUqIEhUTUxNYXJxdWVlRWxlbWVudDo6
cmVuZGVyTWFycXVlZSgpIGNvbnN0CiB7Ci0gICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIo
KS0+aGFzTGF5ZXIoKSkKKyAgICBpZiAoaGFzUmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5oYXNM
YXllcigpKQogICAgICAgICByZXR1cm4gcmVuZGVyQm94TW9kZWxPYmplY3QoKS0+bGF5ZXIoKS0+
bWFycXVlZSgpOwogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKaW5kZXggYTU1ZmYxNDU2Mzg2MzllYjZkNGIxM2YyNmJjN2VjMWNkMjgxOTBi
YS4uY2IzNmQ0MDcwOGUwNzliNTE3MzQ0YTZiNjhkYzk0YzgwN2Q2N2EyMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjphdHRhY2goKQogCiAgICAgSFRNTEVsZW1lbnQ6OmF0dGFjaCgpOwog
Ci0gICAgaWYgKHJlbmRlcmVyKCkpCisgICAgaWYgKGhhc1JlbmRlcmVyKCkpCiAgICAgICAgIHJl
bmRlcmVyKCktPnVwZGF0ZUZyb21FbGVtZW50KCk7CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9G
T1JfVklERU8pCiAgICAgZWxzZSBpZiAobV9wcm94eVdpZGdldCkgewpAQCAtMzg5LDcgKzM4OSw3
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgY2hhbmdl
KQogewogICAgIEhUTUxFbGVtZW50OjpyZWNhbGNTdHlsZShjaGFuZ2UpOwogCi0gICAgaWYgKHJl
bmRlcmVyKCkpCisgICAgaWYgKGhhc1JlbmRlcmVyKCkpCiAgICAgICAgIHJlbmRlcmVyKCktPnVw
ZGF0ZUZyb21FbGVtZW50KCk7CiB9CiAKQEAgLTc1NSw3ICs3NTUsNyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmxvYWRSZXNvdXJjZShjb25zdCBLVVJMJiBpbml0aWFsVVJMLCBDb250ZW50VHlw
ZSYgY29udGVudAogICAgIC8vIHRoZXkgYXJlIGF2YWlsYWJsZS4KICAgICB1cGRhdGVEaXNwbGF5
U3RhdGUoKTsKIAotICAgIGlmIChyZW5kZXJlcigpKQorICAgIGlmIChoYXNSZW5kZXJlcigpKQog
ICAgICAgICByZW5kZXJlcigpLT51cGRhdGVGcm9tRWxlbWVudCgpOwogfQogCkBAIC04MDYsNyAr
ODA2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3YWl0Rm9yU291cmNlQ2hhbmdlKCkKIAog
ICAgIHVwZGF0ZURpc3BsYXlTdGF0ZSgpOwogCi0gICAgaWYgKHJlbmRlcmVyKCkpCisgICAgaWYg
KGhhc1JlbmRlcmVyKCkpCiAgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUZyb21FbGVtZW50KCk7
CiB9CiAKQEAgLTgzOCw3ICs4MzgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om5vbmVTdXBw
b3J0ZWQoKQogCiAgICAgdXBkYXRlRGlzcGxheVN0YXRlKCk7CiAKLSAgICBpZiAocmVuZGVyZXIo
KSkKKyAgICBpZiAoaGFzUmVuZGVyZXIoKSkKICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlRnJv
bUVsZW1lbnQoKTsKIH0KIApAQCAtMTAyOSw3ICsxMDI5LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHN0YXRlKQogICAgICAg
ICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5sb2FkZWRtZXRhZGF0YUV2ZW50KTsKICAgICAg
ICAgaWYgKGhhc01lZGlhQ29udHJvbHMoKSkKICAgICAgICAgICAgIG1lZGlhQ29udHJvbHMoKS0+
bG9hZGVkTWV0YWRhdGEoKTsKLSAgICAgICAgaWYgKHJlbmRlcmVyKCkpCisgICAgICAgIGlmICho
YXNSZW5kZXJlcigpKQogICAgICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlRnJvbUVsZW1lbnQo
KTsKICAgICB9CiAKQEAgLTEwOTksNyArMTA5OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
cHJvZ3Jlc3NFdmVudFRpbWVyRmlyZWQoVGltZXI8SFRNTE1lZGlhRWxlbWVudD4qKQogICAgICAg
ICBtX3ByZXZpb3VzUHJvZ3Jlc3MgPSBwcm9ncmVzczsKICAgICAgICAgbV9wcmV2aW91c1Byb2dy
ZXNzVGltZSA9IHRpbWU7CiAgICAgICAgIG1fc2VudFN0YWxsZWRFdmVudCA9IGZhbHNlOwotICAg
ICAgICBpZiAocmVuZGVyZXIoKSkKKyAgICAgICAgaWYgKGhhc1JlbmRlcmVyKCkpCiAgICAgICAg
ICAgICByZW5kZXJlcigpLT51cGRhdGVGcm9tRWxlbWVudCgpOwogICAgIH0KIH0KQEAgLTIwMjks
NyArMjAyOSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJSZXBhaW50KE1l
ZGlhUGxheWVyKikKIHsKICAgICBiZWdpblByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7
CiAgICAgdXBkYXRlRGlzcGxheVN0YXRlKCk7Ci0gICAgaWYgKHJlbmRlcmVyKCkpCisgICAgaWYg
KGhhc1JlbmRlcmVyKCkpCiAgICAgICAgIHJlbmRlcmVyKCktPnJlcGFpbnQoKTsKICAgICBlbmRQ
cm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOwogfQpAQCAtMjAzOSw3ICsyMDM5LDcgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclNpemVDaGFuZ2VkKE1lZGlhUGxheWVy
KikKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclNpemVDaGFu
Z2VkIik7CiAKICAgICBiZWdpblByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7Ci0gICAg
aWYgKHJlbmRlcmVyKCkpCisgICAgaWYgKGhhc1JlbmRlcmVyKCkpCiAgICAgICAgIHJlbmRlcmVy
KCktPnVwZGF0ZUZyb21FbGVtZW50KCk7CiAgICAgZW5kUHJvY2Vzc2luZ01lZGlhUGxheWVyQ2Fs
bGJhY2soKTsKIH0KQEAgLTIwNDcsNyArMjA0Nyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
bWVkaWFQbGF5ZXJTaXplQ2hhbmdlZChNZWRpYVBsYXllciopCiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJlbmRlcmlu
Z0NhbkJlQWNjZWxlcmF0ZWQoTWVkaWFQbGF5ZXIqKQogewotICAgIGlmIChyZW5kZXJlcigpICYm
IHJlbmRlcmVyKCktPmlzVmlkZW8oKSkgeworICAgIGlmIChoYXNSZW5kZXJlcigpICYmIHJlbmRl
cmVyKCktPmlzVmlkZW8oKSkgewogICAgICAgICBBU1NFUlQocmVuZGVyZXIoKS0+dmlldygpKTsK
ICAgICAgICAgcmV0dXJuIHJlbmRlcmVyKCktPnZpZXcoKS0+Y29tcG9zaXRvcigpLT5jYW5BY2Nl
bGVyYXRlVmlkZW9SZW5kZXJpbmcodG9SZW5kZXJWaWRlbyhyZW5kZXJlcigpKSk7CiAgICAgfQpA
QCAtMjA2Nyw3ICsyMDY3LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckVu
Z2luZVVwZGF0ZWQoTWVkaWFQbGF5ZXIqKQogewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyRW5naW5lVXBkYXRlZCIpOwogICAgIGJlZ2luUHJvY2Vzc2luZ01l
ZGlhUGxheWVyQ2FsbGJhY2soKTsKLSAgICBpZiAocmVuZGVyZXIoKSkKKyAgICBpZiAoaGFzUmVu
ZGVyZXIoKSkKICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKICAgICBl
bmRQcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOwogfQpAQCAtMjA5Miw3ICsyMDkyLDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNoYXJhY3RlcmlzdGljQ2hhbmdl
ZChNZWRpYVBsYXllciopCiAgICAgYmVnaW5Qcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygp
OwogICAgIGlmIChoYXNNZWRpYUNvbnRyb2xzKCkpCiAgICAgICAgIG1lZGlhQ29udHJvbHMoKS0+
cmVzZXQoKTsKLSAgICBpZiAocmVuZGVyZXIoKSkKKyAgICBpZiAoaGFzUmVuZGVyZXIoKSkKICAg
ICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKICAgICBlbmRQcm9jZXNzaW5n
TWVkaWFQbGF5ZXJDYWxsYmFjaygpOwogfQpAQCAtMjI3Miw3ICsyMjcyLDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5U3RhdGUoKQogICAgICAgICAgICAgbWVkaWFDb250cm9s
cygpLT5wbGF5YmFja1N0b3BwZWQoKTsKICAgICB9CiAgICAgCi0gICAgaWYgKHJlbmRlcmVyKCkp
CisgICAgaWYgKGhhc1JlbmRlcmVyKCkpCiAgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUZyb21F
bGVtZW50KCk7CiB9CiAgICAgCkBAIC0yMzQ5LDcgKzIzNDksNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnN0b3AoKQogICAgIC8vIFN0b3AgdGhlIHBsYXliYWNrIHdpdGhvdXQgZ2VuZXJhdGlu
ZyBldmVudHMKICAgICBzZXRQYXVzZWRJbnRlcm5hbCh0cnVlKTsKICAgICAKLSAgICBpZiAocmVu
ZGVyZXIoKSkKKyAgICBpZiAoaGFzUmVuZGVyZXIoKSkKICAgICAgICAgcmVuZGVyZXIoKS0+dXBk
YXRlRnJvbUVsZW1lbnQoKTsKICAgICAKICAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKQEAgLTIz
ODgsNyArMjM4OCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVzdW1lKCkKICAgICAgICAg
bG9hZChlYyk7CiAgICAgfQogCi0gICAgaWYgKHJlbmRlcmVyKCkpCisgICAgaWYgKGhhc1JlbmRl
cmVyKCkpCiAgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUZyb21FbGVtZW50KCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5vU2NyaXB0RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOb1NjcmlwdEVsZW1lbnQuY3BwCmluZGV4IDViYmExNmY5
ZDRhZjM0ZDhmMWFkZjI4MTIyM2M4NzMwOWE0YjlmNmQuLmJiZTFiMmVhMjE1YjIyOTE2OTlkYmMw
ZDJhYjRiZWQ5N2ZkMzQwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5v
U2NyaXB0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTm9TY3JpcHRF
bGVtZW50LmNwcApAQCAtNDgsNyArNDgsNyBAQCB2b2lkIEhUTUxOb1NjcmlwdEVsZW1lbnQ6OmF0
dGFjaCgpCiAKICAgICAvLyBJZiBubyBuZWVkIHRvIHByb2Nlc3MgPG5vc2NyaXB0Piwgd2UgaGlk
ZSBpdCBieSBzZXR0aW5nIGRpc3BsYXk6bm9uZSB0ZW1wb3JhcmlseQogICAgIGlmICghZG9jdW1l
bnQoKS0+c2hvdWxkUHJvY2Vzc05vc2NyaXB0RWxlbWVudCgpKSB7Ci0gICAgICAgIGlmIChyZW5k
ZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCkpCisgICAgICAgIGlmIChoYXNSZW5kZXJlcigp
ICYmIHJlbmRlcmVyKCktPnN0eWxlKCkpCiAgICAgICAgICAgICByZW5kZXJlcigpLT5zdHlsZSgp
LT5zZXREaXNwbGF5KE5PTkUpOwogICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAg
fQpAQCAtNTYsNyArNTYsNyBAQCB2b2lkIEhUTUxOb1NjcmlwdEVsZW1lbnQ6OmF0dGFjaCgpCiAK
IHZvaWQgSFRNTE5vU2NyaXB0RWxlbWVudDo6cmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgY2hhbmdl
KQogewotICAgIGlmICghZG9jdW1lbnQoKS0+c2hvdWxkUHJvY2Vzc05vc2NyaXB0RWxlbWVudCgp
IHx8ICFyZW5kZXJlcigpIHx8ICFyZW5kZXJlcigpLT5zdHlsZSgpKQorICAgIGlmICghZG9jdW1l
bnQoKS0+c2hvdWxkUHJvY2Vzc05vc2NyaXB0RWxlbWVudCgpIHx8ICFoYXNSZW5kZXJlcigpIHx8
ICFyZW5kZXJlcigpLT5zdHlsZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBJZiA8bm9z
Y3JpcHQ+IG5lZWRzIHByb2Nlc3NpbmcsIHdlIG1ha2UgaXQgdmlzaWFibGUgaGVyZSwgaW5jbHVk
aW5nIGl0cyB2aXNpYmxlIGNoaWxkcmVuCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgSFRNTE5vU2Ny
aXB0RWxlbWVudDo6cmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgY2hhbmdlKQogICAgICAgICAvLyBD
cmVhdGUgcmVuZGVyZXJzIGZvciBpdHMgY2hpbGRyZW4KICAgICAgICAgaWYgKGhhc0NoaWxkTm9k
ZXMoKSkgewogICAgICAgICAgICAgZm9yIChOb2RlKiBuID0gZmlyc3RDaGlsZCgpOyBuOyBuID0g
bi0+dHJhdmVyc2VOZXh0Tm9kZSh0aGlzKSkKLSAgICAgICAgICAgICAgICBpZiAoIW4tPnJlbmRl
cmVyKCkpCisgICAgICAgICAgICAgICAgaWYgKCFuLT5oYXNSZW5kZXJlcigpKQogICAgICAgICAg
ICAgICAgICAgICBuLT5jcmVhdGVSZW5kZXJlcklmTmVlZGVkKCk7CiAgICAgICAgIH0KICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IDdhYjc3NmJm
ODE4ZGUwNmY1ZWE1MGZiYzgyODg5MzkyODA1MTlkN2YuLjM1OTdiZTE4ZmU5ZDgzZTUzNWNlOGEz
Zjc1NTAyNmQ0MmVmNzIwMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9i
amVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1l
bnQuY3BwCkBAIC04NywxMyArODcsMTMgQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICBzaXplX3QgcG9zID0gbV9z
ZXJ2aWNlVHlwZS5maW5kKCI7Iik7CiAgICAgICAgIGlmIChwb3MgIT0gbm90Rm91bmQpCiAgICAg
ICAgICAgICBtX3NlcnZpY2VUeXBlID0gbV9zZXJ2aWNlVHlwZS5sZWZ0KHBvcyk7Ci0gICAgICAg
IGlmIChyZW5kZXJlcigpKQorICAgICAgICBpZiAoaGFzUmVuZGVyZXIoKSkKICAgICAgICAgICAg
IHNldE5lZWRzV2lkZ2V0VXBkYXRlKHRydWUpOwogICAgICAgICBpZiAoIWlzSW1hZ2VUeXBlKCkg
JiYgbV9pbWFnZUxvYWRlcikKICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIuY2xlYXIoKTsKICAg
ICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBkYXRhQXR0cikgewogICAgICAgICBtX3VybCA9
IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyLT52YWx1ZSgpKTsKLSAgICAg
ICAgaWYgKHJlbmRlcmVyKCkpIHsKKyAgICAgICAgaWYgKGhhc1JlbmRlcmVyKCkpIHsKICAgICAg
ICAgICAgIHNldE5lZWRzV2lkZ2V0VXBkYXRlKHRydWUpOwogICAgICAgICAgICAgaWYgKGlzSW1h
Z2VUeXBlKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIpCkBAIC0xMDMs
NyArMTAzLDcgQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUo
QXR0cmlidXRlKiBhdHRyKQogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gY2xhc3NpZEF0dHIpIHsKICAgICAgICAgbV9jbGFzc0lkID0gYXR0ci0+dmFsdWUoKTsKLSAg
ICAgICAgaWYgKHJlbmRlcmVyKCkpCisgICAgICAgIGlmIChoYXNSZW5kZXJlcigpKQogICAgICAg
ICAgICAgc2V0TmVlZHNXaWRnZXRVcGRhdGUodHJ1ZSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gb25sb2FkQXR0cikKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkubG9hZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMs
IGF0dHIpKTsKQEAgLTMyMyw3ICszMjMsNyBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50Ojp1cGRh
dGVXaWRnZXQoUGx1Z2luQ3JlYXRpb25PcHRpb24gcGx1Z2luQ3JlYXRpb25PcHRpb24pCiAgICAg
Ly8gUmVuZGVyV2lkZ2V0OjpkZXN0cm95KCkgdG8gYmUgY2FsbGVkLiAgRW5zdXJlIHdlIGhhdmVu
J3QgYmVlbgogICAgIC8vIGRlc3Ryb3llZCBiZWZvcmUgY29udGludWluZy4KICAgICAvLyBGSVhN
RTogU2hvdWxkIHRoaXMgcmVuZGVyIGZhbGxiYWNrIGNvbnRlbnQ/Ci0gICAgaWYgKCFyZW5kZXJl
cigpKQorICAgIGlmICghaGFzUmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3Vi
ZnJhbWVMb2FkZXIqIGxvYWRlciA9IGRvY3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigpLT5zdWJm
cmFtZUxvYWRlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9u
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcApp
bmRleCA5NjZmODM3NGUzMzE5YmQyMmEzYWIyMDUwNWRlMjY5ZTI4MmEzMWIzLi5kNTFhZjMwMWEw
NDc2OThiMTNjNTliYjM4NmY1M2RmYjE5MjExMTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPcHRpb25FbGVtZW50LmNwcApAQCAtMjIyLDggKzIyMiw4IEBAIHZvaWQgSFRNTE9wdGlvbkVs
ZW1lbnQ6OnNldFJlbmRlclN0eWxlKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IG5ld1N0eWxlKQog
ewogICAgIG1fc3R5bGUgPSBuZXdTdHlsZTsKICAgICBpZiAoSFRNTFNlbGVjdEVsZW1lbnQqIHNl
bGVjdCA9IG93bmVyU2VsZWN0RWxlbWVudCgpKQotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IHNlbGVjdC0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIHJlbmRlcmVyLT5yZXBh
aW50KCk7CisgICAgICAgIGlmIChzZWxlY3QtPmhhc1JlbmRlcmVyKCkpCisgICAgICAgICAgICBz
ZWxlY3QtPnJlbmRlcmVyKCktPnJlcGFpbnQoKTsKIH0KIAogUmVuZGVyU3R5bGUqIEhUTUxPcHRp
b25FbGVtZW50Ojpub25SZW5kZXJlclJlbmRlclN0eWxlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmluZGV4IDJiNGE4ZWM2ZTgyMzI1
NDM0YWFkNTY5OGE1MTRkZGI5Y2U1NDQyMzcuLmRkODNlMGMwYzMwYjIzZjgyYjAxZmZmODc2ZTE5
YjU3MzJiYjllNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VF
bGVtZW50LmNwcApAQCAtNDgsNyArNDgsNyBAQCBSZW5kZXJFbWJlZGRlZE9iamVjdCogSFRNTFBs
dWdJbkltYWdlRWxlbWVudDo6cmVuZGVyRW1iZWRkZWRPYmplY3QoKSBjb25zdAogewogICAgIC8v
IEhUTUxPYmplY3RFbGVtZW50IGFuZCBIVE1MRW1iZWRFbGVtZW50IG1heSByZXR1cm4gYXJiaXRy
YXJ5IHJlbmRlcmVycwogICAgIC8vIHdoZW4gdXNpbmcgZmFsbGJhY2sgY29udGVudC4KLSAgICBp
ZiAoIXJlbmRlcmVyKCkgfHwgIXJlbmRlcmVyKCktPmlzRW1iZWRkZWRPYmplY3QoKSkKKyAgICBp
ZiAoIWhhc1JlbmRlcmVyKCkgfHwgIXJlbmRlcmVyKCktPmlzRW1iZWRkZWRPYmplY3QoKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIHRvUmVuZGVyRW1iZWRkZWRPYmplY3QocmVuZGVy
ZXIoKSk7CiB9CkBAIC0xMjQsNyArMTI0LDcgQEAgUmVuZGVyT2JqZWN0KiBIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclMKIHZv
aWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgY2gpCiB7
CiAgICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIG5lY2Vzc2FyeT8gIE1hbnVhbCByZS1hdHRhY2gg
aXMgYWxtb3N0IGFsd2F5cyB3cm9uZy4KLSAgICBpZiAoIXVzZUZhbGxiYWNrQ29udGVudCgpICYm
IG5lZWRzV2lkZ2V0VXBkYXRlKCkgJiYgcmVuZGVyZXIoKSAmJiAhaXNJbWFnZVR5cGUoKSkKKyAg
ICBpZiAoIXVzZUZhbGxiYWNrQ29udGVudCgpICYmIG5lZWRzV2lkZ2V0VXBkYXRlKCkgJiYgaGFz
UmVuZGVyZXIoKSAmJiAhaXNJbWFnZVR5cGUoKSkKICAgICAgICAgcmVhdHRhY2goKTsKICAgICBI
VE1MUGx1Z0luRWxlbWVudDo6cmVjYWxjU3R5bGUoY2gpOwogfQpAQCAtMTM4LDcgKzEzOCw3IEBA
IHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6YXR0YWNoKCkKIAogICAgIEhUTUxQbHVnSW5F
bGVtZW50OjphdHRhY2goKTsKIAotICAgIGlmIChpc0ltYWdlICYmIHJlbmRlcmVyKCkgJiYgIXVz
ZUZhbGxiYWNrQ29udGVudCgpKSB7CisgICAgaWYgKGlzSW1hZ2UgJiYgaGFzUmVuZGVyZXIoKSAm
JiAhdXNlRmFsbGJhY2tDb250ZW50KCkpIHsKICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQog
ICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IGFkb3B0UHRyKG5ldyBIVE1MSW1hZ2VMb2FkZXIo
dGhpcykpOwogICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudCgpOwpAQCAt
MTUwLDcgKzE1MCw3IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGV0YWNoKCkKICAg
ICAvLyBGSVhNRTogQmVjYXVzZSBvZiB0aGUgaW5zYW5pdHkgdGhhdCBpcyBIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50OjpyZWNhbGNTdHlsZSwKICAgICAvLyB3ZSBjYW4gZW5kIHVwIGRldGFjaGluZyBk
dXJpbmcgYW4gYXR0YWNoKCkgY2FsbCwgYmVmb3JlIHdlIGV2ZW4gaGF2ZSBhCiAgICAgLy8gcmVu
ZGVyZXIuICBJbiB0aGF0IGNhc2UsIGRvbid0IG1hcmsgdGhlIHdpZGdldCBmb3IgdXBkYXRlLgot
ICAgIGlmIChhdHRhY2hlZCgpICYmIHJlbmRlcmVyKCkgJiYgIXVzZUZhbGxiYWNrQ29udGVudCgp
KQorICAgIGlmIChhdHRhY2hlZCgpICYmIGhhc1JlbmRlcmVyKCkgJiYgIXVzZUZhbGxiYWNrQ29u
dGVudCgpKQogICAgICAgICAvLyBVcGRhdGUgdGhlIHdpZGdldCB0aGUgbmV4dCB0aW1lIHdlIGF0
dGFjaCAoZGV0YWNoaW5nIGRlc3Ryb3lzIHRoZSBwbHVnaW4pLgogICAgICAgICBzZXROZWVkc1dp
ZGdldFVwZGF0ZSh0cnVlKTsKICAgICBIVE1MUGx1Z0luRWxlbWVudDo6ZGV0YWNoKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcAppbmRleCAwMTgzMWY5OGM4
ZjIwNWU5NzBmZjI0MjI5YTNkZjIxNDZmNDdjMzk0Li5hOGY1ZjhkMzA5ZmY4MWUxNjE4MDI4Mjg5
OGZiNjhiMGY4YjMyZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9n
cmVzc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxl
bWVudC5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCBib29sIEhUTUxQcm9ncmVzc0VsZW1lbnQ6Omlz
RGV0ZXJtaW5hdGUoKQogdm9pZCBIVE1MUHJvZ3Jlc3NFbGVtZW50OjpkaWRFbGVtZW50U3RhdGVD
aGFuZ2UoKQogewogICAgIG1fdmFsdWUtPnNldFdpZHRoUGVyY2VudGFnZShwb3NpdGlvbigpKjEw
MCk7Ci0gICAgaWYgKHJlbmRlcmVyKCkpIHsKKyAgICBpZiAoaGFzUmVuZGVyZXIoKSkgewogICAg
ICAgICBSZW5kZXJQcm9ncmVzcyogcmVuZGVyID0gdG9SZW5kZXJQcm9ncmVzcyhyZW5kZXJlcigp
KTsKICAgICAgICAgYm9vbCB3YXNEZXRlcm1pbmF0ZSA9IHJlbmRlci0+aXNEZXRlcm1pbmF0ZSgp
OwogICAgICAgICByZW5kZXJlcigpLT51cGRhdGVGcm9tRWxlbWVudCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAppbmRleCBjMjAxOGZlMGYwODkxOGNlMDc1NzJl
MDFlOWE5Y2ZhODc5ODI4MjI0Li44YmIwM2QzYjI0NTg3M2NhMzJkYmI0ZGU0YzlkZGJlZTY4NGM0
MzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcApAQCAtMjgy
LDE0ICsyODIsMTQgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoQXR0cmlidXRlKiBhdHRyKQogCiBib29sIEhUTUxTZWxlY3RFbGVtZW50Ojppc0tleWJvYXJk
Rm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqIGV2ZW50KSBjb25zdAogewotICAgIGlmIChyZW5kZXJl
cigpKQorICAgIGlmIChoYXNSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gaXNGb2N1c2FibGUo
KTsKICAgICByZXR1cm4gSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6aXNLZXlib2Fy
ZEZvY3VzYWJsZShldmVudCk7CiB9CiAKIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OmlzTW91c2VG
b2N1c2FibGUoKSBjb25zdAogewotICAgIGlmIChyZW5kZXJlcigpKQorICAgIGlmIChoYXNSZW5k
ZXJlcigpKQogICAgICAgICByZXR1cm4gaXNGb2N1c2FibGUoKTsKICAgICByZXR1cm4gSFRNTEZv
cm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6aXNNb3VzZUZvY3VzYWJsZSgpOwogfQpAQCAtMzQ5
LDcgKzM0OSw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29s
IGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlCiAgICAgc2V0TmVlZHNWYWxpZGl0
eUNoZWNrKCk7CiAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6Y2hpbGRyZW5D
aGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRD
b3VudERlbHRhKTsKICAgICAKLSAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVu
YWJsZWQoKSAmJiByZW5kZXJlcigpKQorICAgIGlmIChBWE9iamVjdENhY2hlOjphY2Nlc3NpYmls
aXR5RW5hYmxlZCgpICYmIGhhc1JlbmRlcmVyKCkpCiAgICAgICAgIHJlbmRlcmVyKCktPmRvY3Vt
ZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+Y2hpbGRyZW5DaGFuZ2VkKHJlbmRlcmVyKCkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKaW5kZXggZDUyNDc1
NzI1MzdmNWFjOTEwNDg5ZDk0M2YzYjQ4ZTlmOTNlOTU0Ny4uZjM3MDg0NDgyZDQxNmVhNjM4YmQy
YTIwYTJmYWM4ZTJlNDRlZmM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U3VtbWFyeUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlF
bGVtZW50LmNwcApAQCAtOTgsNyArOTgsNyBAQCBib29sIEhUTUxTdW1tYXJ5RWxlbWVudDo6aXNN
YWluU3VtbWFyeSgpIGNvbnN0CiB2b2lkIEhUTUxTdW1tYXJ5RWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZGxlcihFdmVudCogZXZlbnQpCiB7CiAgICAgSFRNTEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhh
bmRsZXIoZXZlbnQpOwotICAgIGlmICghaXNNYWluU3VtbWFyeSgpIHx8ICFyZW5kZXJlcigpIHx8
ICFyZW5kZXJlcigpLT5pc1N1bW1hcnkoKSB8fCAhZXZlbnQtPmlzTW91c2VFdmVudCgpIHx8IGV2
ZW50LT50eXBlKCkgIT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQgfHwgZXZlbnQtPmRlZmF1bHRI
YW5kbGVkKCkpCisgICAgaWYgKCFpc01haW5TdW1tYXJ5KCkgfHwgIWhhc1JlbmRlcmVyKCkgfHwg
IXJlbmRlcmVyKCktPmlzU3VtbWFyeSgpIHx8ICFldmVudC0+aXNNb3VzZUV2ZW50KCkgfHwgZXZl
bnQtPnR5cGUoKSAhPSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCB8fCBldmVudC0+ZGVmYXVsdEhh
bmRsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTW91c2VFdmVudCogbW91c2VFdmVudCA9
IHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwCmluZGV4IGMxZmI1ZWUwMjQwZGUzOTZjYzgxYjA5NGVm
MzhiYThmNjcxZWEwYTguLmYyYjRhNmJiYWU5OWYzM2E5OWE1ZWE1NjRhODRhMDc5NmQ1N2UxYjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwCkBAIC04
NSwxMSArODUsMTEgQEAgdm9pZCBIVE1MVGFibGVDZWxsRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gcm93c3Bh
bkF0dHIpIHsKICAgICAgICAgbV9yb3dTcGFuID0gbWF4KDEsIG1pbihhdHRyLT52YWx1ZSgpLnRv
SW50KCksIG1heFJvd3NwYW4pKTsKLSAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIo
KS0+aXNUYWJsZUNlbGwoKSkKKyAgICAgICAgaWYgKGhhc1JlbmRlcmVyKCkgJiYgcmVuZGVyZXIo
KS0+aXNUYWJsZUNlbGwoKSkKICAgICAgICAgICAgIHRvUmVuZGVyVGFibGVDZWxsKHJlbmRlcmVy
KCkpLT51cGRhdGVGcm9tRWxlbWVudCgpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IGNvbHNwYW5BdHRyKSB7CiAgICAgICAgIG1fY29sU3BhbiA9IG1heCgxLCBhdHRyLT52YWx1ZSgp
LnRvSW50KCkpOwotICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc1RhYmxl
Q2VsbCgpKQorICAgICAgICBpZiAoaGFzUmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc1RhYmxl
Q2VsbCgpKQogICAgICAgICAgICAgdG9SZW5kZXJUYWJsZUNlbGwocmVuZGVyZXIoKSktPnVwZGF0
ZUZyb21FbGVtZW50KCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbm93cmFwQXR0
cikgewogICAgICAgICBpZiAoIWF0dHItPmlzTnVsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRhYmxlQ29sRWxlbWVudC5jcHAKaW5kZXggOTZhZjcwODI3ZjEwNzQ3N2M5MWU1ODk2YzNj
ODYxMGZjOWUyYjJlMy4uMjM0Yzc5MGQzOTM3YmVkMGE0YjEzMTU4MmZjODRlNDZiYjAzOWNiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwCkBAIC02MSwx
MiArNjEsMTIgQEAgdm9pZCBIVE1MVGFibGVDb2xFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZShBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBzcGFuQXR0cikg
ewogICAgICAgICBtX3NwYW4gPSAhYXR0ci0+aXNOdWxsKCkgPyBhdHRyLT52YWx1ZSgpLnRvSW50
KCkgOiAxOwotICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc1RhYmxlQ29s
KCkpCisgICAgICAgIGlmIChoYXNSZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzVGFibGVDb2wo
KSkKICAgICAgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUZyb21FbGVtZW50KCk7CiAgICAgfSBl
bHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gd2lkdGhBdHRyKSB7CiAgICAgICAgIGlmICghYXR0ci0+
dmFsdWUoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQ
cm9wZXJ0eVdpZHRoLCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgICAgIGlmIChyZW5kZXJlcigp
ICYmIHJlbmRlcmVyKCktPmlzVGFibGVDb2woKSkgeworICAgICAgICAgICAgaWYgKGhhc1JlbmRl
cmVyKCkgJiYgcmVuZGVyZXIoKS0+aXNUYWJsZUNvbCgpKSB7CiAgICAgICAgICAgICAgICAgUmVu
ZGVyVGFibGVDb2wqIGNvbCA9IHRvUmVuZGVyVGFibGVDb2wocmVuZGVyZXIoKSk7CiAgICAgICAg
ICAgICAgICAgaW50IG5ld1dpZHRoID0gd2lkdGgoKS50b0ludCgpOwogICAgICAgICAgICAgICAg
IGlmIChuZXdXaWR0aCAhPSBjb2wtPndpZHRoKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCA3YzYwOTVjN2QyODU5NzlmNGIwM2IyZjQ1MWRjMDkx
MGQwODI1YTQ5Li4yMTI0YmU5MTRhN2E4YTdjOTRjY2MwYjA2ZjZlZDhmNGRjZWJiZDY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKQEAgLTEzMSw3ICsx
MzEsNyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0
dHJpYnV0ZSogYXR0cikKICAgICAgICAgICAgIHJvd3MgPSBkZWZhdWx0Um93czsKICAgICAgICAg
aWYgKG1fcm93cyAhPSByb3dzKSB7CiAgICAgICAgICAgICBtX3Jvd3MgPSByb3dzOwotICAgICAg
ICAgICAgaWYgKHJlbmRlcmVyKCkpCisgICAgICAgICAgICBpZiAoaGFzUmVuZGVyZXIoKSkKICAg
ICAgICAgICAgICAgICByZW5kZXJlcigpLT5zZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNh
bGMoKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGNvbHNBdHRy
KSB7CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgICAgICBjb2xzID0gZGVmYXVs
dENvbHM7CiAgICAgICAgIGlmIChtX2NvbHMgIT0gY29scykgewogICAgICAgICAgICAgbV9jb2xz
ID0gY29sczsKLSAgICAgICAgICAgIGlmIChyZW5kZXJlcigpKQorICAgICAgICAgICAgaWYgKGhh
c1JlbmRlcmVyKCkpCiAgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXRB
bmRQcmVmV2lkdGhzUmVjYWxjKCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSB3cmFwQXR0cikgewpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgSFRNTFRleHRBcmVh
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICAg
ICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V29yZFdyYXAsIENTU1ZhbHVl
Tm9ybWFsKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkpCisg
ICAgICAgICAgICBpZiAoaGFzUmVuZGVyZXIoKSkKICAgICAgICAgICAgICAgICByZW5kZXJlcigp
LT5zZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKICAgICAgICAgfQogICAgIH0g
ZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGFjY2Vzc2tleUF0dHIpIHsKQEAgLTIxNiw3ICsyMTYs
NyBAQCBib29sIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmlzTW91c2VGb2N1c2FibGUoKSBjb25zdAog
CiB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnVwZGF0ZUZvY3VzQXBwZWFyYW5jZShib29sIHJl
c3RvcmVQcmV2aW91c1NlbGVjdGlvbikKIHsKLSAgICBBU1NFUlQocmVuZGVyZXIoKSk7CisgICAg
QVNTRVJUKGhhc1JlbmRlcmVyKCkpOwogICAgIEFTU0VSVCghZG9jdW1lbnQoKS0+Y2hpbGROZWVk
c0FuZE5vdEluU3R5bGVSZWNhbGMoKSk7CiAKICAgICBpZiAoIXJlc3RvcmVQcmV2aW91c1NlbGVj
dGlvbiB8fCBtX2NhY2hlZFNlbGVjdGlvblN0YXJ0IDwgMCkgewpAQCAtMjQyLDkgKzI0Miw5IEBA
IHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6dXBkYXRlRm9jdXNBcHBlYXJhbmNlKGJvb2wgcmVz
dG9yZVByZXZpb3VzU2VsZWN0aW9uKQogCiB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmRlZmF1
bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewotICAgIGlmIChyZW5kZXJlcigpICYmIChl
dmVudC0+aXNNb3VzZUV2ZW50KCkgfHwgZXZlbnQtPmlzRHJhZ0V2ZW50KCkgfHwgZXZlbnQtPmlz
V2hlZWxFdmVudCgpIHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmJsdXJFdmVudCkp
CisgICAgaWYgKGhhc1JlbmRlcmVyKCkgJiYgKGV2ZW50LT5pc01vdXNlRXZlbnQoKSB8fCBldmVu
dC0+aXNEcmFnRXZlbnQoKSB8fCBldmVudC0+aXNXaGVlbEV2ZW50KCkgfHwgZXZlbnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkuYmx1ckV2ZW50KSkKICAgICAgICAgdG9SZW5kZXJUZXh0Q29udHJv
bE11bHRpTGluZShyZW5kZXJlcigpKS0+Zm9yd2FyZEV2ZW50KGV2ZW50KTsKLSAgICBlbHNlIGlm
IChyZW5kZXJlcigpICYmIGV2ZW50LT5pc0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50KCkpCisgICAg
ZWxzZSBpZiAoaGFzUmVuZGVyZXIoKSAmJiBldmVudC0+aXNCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVu
dCgpKQogICAgICAgICBoYW5kbGVCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudChzdGF0aWNfY2FzdDxC
ZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCo+KGV2ZW50KSk7CiAKICAgICBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50V2l0aFN0YXRlOjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKQEAgLTI1Myw3ICsy
NTMsNyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZl
bnQqIGV2ZW50KQogdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpoYW5kbGVCZWZvcmVUZXh0SW5z
ZXJ0ZWRFdmVudChCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCogZXZlbnQpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKGV2ZW50KTsKLSAgICBBU1NFUlQocmVuZGVyZXIoKSk7CisgICAgQVNTRVJUKGhhc1Jl
bmRlcmVyKCkpOwogICAgIGludCBzaWduZWRNYXhMZW5ndGggPSBtYXhMZW5ndGgoKTsKICAgICBp
ZiAoc2lnbmVkTWF4TGVuZ3RoIDwgMCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjg3LDcgKzI4Nyw3
IEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6dXBkYXRlVmFsdWUoKSBjb25zdAogICAgIGlm
IChmb3JtQ29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEFTU0VSVChyZW5kZXJlcigpKTsKKyAgICBBU1NFUlQoaGFzUmVuZGVyZXIoKSk7CiAgICAg
bV92YWx1ZSA9IHRvUmVuZGVyVGV4dENvbnRyb2wocmVuZGVyZXIoKSktPnRleHQoKTsKICAgICBj
b25zdF9jYXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQqPih0aGlzKS0+c2V0Rm9ybUNvbnRyb2xWYWx1
ZU1hdGNoZXNSZW5kZXJlcih0cnVlKTsKICAgICBub3RpZnlGb3JtU3RhdGVDaGFuZ2VkKHRoaXMp
OwpAQCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0Um93cyhp
bnQgcm93cykKIAogYm9vbCBIVE1MVGV4dEFyZWFFbGVtZW50OjpsYXN0Q2hhbmdlV2FzVXNlckVk
aXQoKSBjb25zdAogewotICAgIGlmICghcmVuZGVyZXIoKSkKKyAgICBpZiAoIWhhc1JlbmRlcmVy
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdG9SZW5kZXJUZXh0Q29udHJv
bChyZW5kZXJlcigpKS0+bGFzdENoYW5nZVdhc1VzZXJFZGl0KCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCA3Mjc0YmYxYWJhZDY4MDExNzFkMmU4OTdl
ZTU4NzA1NzdhZjE1MGVkLi4wOWM4MjE5ZDA2Yzg0MjA0YjdlZmUzOGQyMjA0OGFiMzJjYmJjMzQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTc4LDcgKzc4
LDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjphdHRhY2goKQogICAgICAgICBpZiAoIW1faW1h
Z2VMb2FkZXIpCiAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0gYWRvcHRQdHIobmV3IEhUTUxJ
bWFnZUxvYWRlcih0aGlzKSk7CiAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVt
ZW50KCk7Ci0gICAgICAgIGlmIChyZW5kZXJlcigpKQorICAgICAgICBpZiAoaGFzUmVuZGVyZXIo
KSkKICAgICAgICAgICAgIHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2Uo
KS0+c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci0+aW1hZ2UoKSk7IAogICAgIH0KICNlbmRp
ZgpAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
aWYgKG1faW1hZ2VMb2FkZXIpCiAgICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlci5jbGVhcigp
OwotICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkpCisgICAgICAgICAgICBpZiAoaGFzUmVuZGVy
ZXIoKSkKICAgICAgICAgICAgICAgICB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpLT5pbWFnZVJl
c291cmNlKCktPnNldENhY2hlZEltYWdlKDApOyAKICAgICAgICAgfQogI2VuZGlmCkBAIC0yMDAs
NyArMjAwLDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpzZXREaXNwbGF5TW9kZShEaXNwbGF5
TW9kZSBtb2RlKQogICAgICAgICBwbGF5ZXIoKS0+c2V0UG9zdGVyKHBvc3Rlcik7CiAKICNpZiAh
RU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCi0gICAgaWYgKHJlbmRlcmVyKCkgJiYgZGlz
cGxheU1vZGUoKSAhPSBvbGRNb2RlKQorICAgIGlmIChoYXNSZW5kZXJlcigpICYmIGRpc3BsYXlN
b2RlKCkgIT0gb2xkTW9kZSkKICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlRnJvbUVsZW1lbnQo
KTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0
VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcAppbmRleCA5
MGQ3YmI5YWNhMjM4YWIyZTI3ZTIzNzQyOTVhOTgyYWU2ZWYxYTZhLi42MTE3YzNmNTdmOTFmM2E3
MWRjMmQ4MTE5YzI4MDgwZjljNmU1YmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ltYWdlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRU
eXBlLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgSW1hZ2VJbnB1dFR5cGU6OmFsdEF0dHJp
YnV0ZUNoYW5nZWQoKQogCiB2b2lkIEltYWdlSW5wdXRUeXBlOjpzcmNBdHRyaWJ1dGVDaGFuZ2Vk
KCkKIHsKLSAgICBpZiAoIWVsZW1lbnQoKS0+cmVuZGVyZXIoKSkKKyAgICBpZiAoIWVsZW1lbnQo
KS0+aGFzUmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9pbWFnZUxvYWRl
cikKICAgICAgICAgbV9pbWFnZUxvYWRlciA9IGFkb3B0UHRyKG5ldyBIVE1MSW1hZ2VMb2FkZXIo
ZWxlbWVudCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0
VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAKaW5kZXgg
ZWI3NGYwM2ZlYTk4OTA1MWY5ZGNiOWU5MmZhYzFhZmE1OTE3YTRjMy4uMzViZTJjNDI3NjRjNDA3
OWJkNzRkYmVjYWViNTY1MDM1ZGRmNzNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9OdW1iZXJJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5w
dXRUeXBlLmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgTnVtYmVySW5wdXRUeXBlOjp3aWxs
Qmx1cigpCiAKICAgICAvLyBXZSBuZWVkIHRvIHJlc2V0IHRoZSByZW5kZXJlciB2YWx1ZSBleHBs
aWNpdGx5IGJlY2F1c2UgYW4gdW5hY2NlcHRhYmxlCiAgICAgLy8gcmVuZGVyZXIgdmFsdWUgc2hv
dWxkIGJlIHB1cmdlZCBiZWZvcmUgc3R5bGUgY2FsY3VsYXRpb24uCi0gICAgaWYgKGVsZW1lbnQo
KS0+cmVuZGVyZXIoKSkKKyAgICBpZiAoZWxlbWVudCgpLT5oYXNSZW5kZXJlcigpKQogICAgICAg
ICBlbGVtZW50KCktPnJlbmRlcmVyKCktPnVwZGF0ZUZyb21FbGVtZW50KCk7CiB9CiAKQEAgLTI1
Niw3ICsyNTYsNyBAQCBTdHJpbmcgTnVtYmVySW5wdXRUeXBlOjpzYW5pdGl6ZVZhbHVlKGNvbnN0
IFN0cmluZyYgcHJvcG9zZWRWYWx1ZSkKIAogYm9vbCBOdW1iZXJJbnB1dFR5cGU6Omhhc1VuYWNj
ZXB0YWJsZVZhbHVlKCkKIHsKLSAgICByZXR1cm4gZWxlbWVudCgpLT5yZW5kZXJlcigpICYmICFp
c0FjY2VwdGFibGVWYWx1ZSh0b1JlbmRlclRleHRDb250cm9sKGVsZW1lbnQoKS0+cmVuZGVyZXIo
KSktPnRleHQoKSk7CisgICAgcmV0dXJuIGVsZW1lbnQoKS0+aGFzUmVuZGVyZXIoKSAmJiAhaXNB
Y2NlcHRhYmxlVmFsdWUodG9SZW5kZXJUZXh0Q29udHJvbChlbGVtZW50KCktPnJlbmRlcmVyKCkp
LT50ZXh0KCkpOwogfQogCiBib29sIE51bWJlcklucHV0VHlwZTo6c2hvdWxkUmVzcGVjdFNwZWVj
aEF0dHJpYnV0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3Vt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCmluZGV4IDdl
NWEwZTY5NGJlNDlhZDNlZDdlZDg5NjM2NGNlZWUyYTQyM2RlYjUuLmVhODAwOWRkYzJiZDE2ODM3
MmFiMTdiMzAzMWFlNjY0ODgxOGJlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UGx1Z2luRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1l
bnQuY3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gUGx1
Z2luRG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCiAKIFdpZGdldCogUGx1Z2luRG9jdW1lbnQ6OnBs
dWdpbldpZGdldCgpCiB7Ci0gICAgaWYgKG1fcGx1Z2luTm9kZSAmJiBtX3BsdWdpbk5vZGUtPnJl
bmRlcmVyKCkpIHsKKyAgICBpZiAobV9wbHVnaW5Ob2RlICYmIG1fcGx1Z2luTm9kZS0+aGFzUmVu
ZGVyZXIoKSkgewogICAgICAgICBBU1NFUlQobV9wbHVnaW5Ob2RlLT5yZW5kZXJlcigpLT5pc0Vt
YmVkZGVkT2JqZWN0KCkpOwogICAgICAgICByZXR1cm4gdG9SZW5kZXJFbWJlZGRlZE9iamVjdCht
X3BsdWdpbk5vZGUtPnJlbmRlcmVyKCkpLT53aWRnZXQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKaW5kZXggMTliYmRlZjVkMWM0OTA3MTA5ZTY4
ZmE5MjRmYWQyY2U0MjUzOTQ4MC4uNDA4ZmVhOTdmOTEzMzRiOTVhNmU5M2VmN2I1OTc5ZDhjYTgw
ZjRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAt
MTE1LDcgKzExNSw3IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVXaGVlbEV2ZW50
Rm9yU3BpbkJ1dHRvbihXaGVlbEV2ZW50KiBldmVudCkKIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5
cGU6OmZvcndhcmRFdmVudChFdmVudCogZXZlbnQpCiB7Ci0gICAgaWYgKGVsZW1lbnQoKS0+cmVu
ZGVyZXIoKSAmJiAoZXZlbnQtPmlzTW91c2VFdmVudCgpIHx8IGV2ZW50LT5pc0RyYWdFdmVudCgp
IHx8IGV2ZW50LT5pc1doZWVsRXZlbnQoKSB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMo
KS5ibHVyRXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuZm9jdXNFdmVudCkp
CisgICAgaWYgKGVsZW1lbnQoKS0+aGFzUmVuZGVyZXIoKSAmJiAoZXZlbnQtPmlzTW91c2VFdmVu
dCgpIHx8IGV2ZW50LT5pc0RyYWdFdmVudCgpIHx8IGV2ZW50LT5pc1doZWVsRXZlbnQoKSB8fCBl
dmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9
PSBldmVudE5hbWVzKCkuZm9jdXNFdmVudCkpCiAgICAgICAgIHRvUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lKGVsZW1lbnQoKS0+cmVuZGVyZXIoKSktPmZvcndhcmRFdmVudChldmVudCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVs
ZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1l
bnRzLmNwcAppbmRleCA0MWMxZDdmYmE3OGUwNGFlN2ViODUwMmJjYTkzYmMwOGEzM2I5MDIzLi5k
Zjk0NjZlMzcwOGFhMmVkOTdlMzliZTJkNzU3YTk0NWQ1ZjY4ZTFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC00MTQs
OCArNDE0LDggQEAgdm9pZCBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OnNldERpc3BsYXlUeXBl
KE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXAKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgbV9kaXNwbGF5VHlwZSA9IGRpc3BsYXlUeXBlOwotICAgIGlmIChSZW5kZXJPYmplY3QqIG9i
amVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgIG9iamVjdC0+cmVwYWludCgpOworICAgIGlmICho
YXNSZW5kZXJlcigpKQorICAgICAgICByZW5kZXJlcigpLT5yZXBhaW50KCk7CiB9CiAKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCmluZGV4IDgzNTA4MmJkZjg1YTVlZDA5MzZjMjFl
Y2FhNWNkYzllZTJkMTVhYWIuLjFlYmJhZGE0MmQwNWVhYzhjNzM3NmUyNTJlMzZiZGY0YzMyNTc3
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVt
ZW50LmNwcApAQCAtNTgsNyArNTgsNyBAQCBpbmxpbmUgc3RhdGljIGRvdWJsZSBzbGlkZXJQb3Np
dGlvbihIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQogCiBpbmxpbmUgc3RhdGljIGJvb2wgaGFz
VmVydGljYWxBcHBlYXJhbmNlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0KQogewotICAgIEFTU0VS
VChpbnB1dC0+cmVuZGVyZXIoKSk7CisgICAgQVNTRVJUKGlucHV0LT5oYXNSZW5kZXJlcigpKTsK
ICAgICBSZW5kZXJTdHlsZSogc2xpZGVyU3R5bGUgPSBpbnB1dC0+cmVuZGVyZXIoKS0+c3R5bGUo
KTsKICAgICByZXR1cm4gc2xpZGVyU3R5bGUtPmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJWZXJ0aWNh
bFBhcnQgfHwgc2xpZGVyU3R5bGUtPmFwcGVhcmFuY2UoKSA9PSBNZWRpYVZvbHVtZVNsaWRlclBh
cnQ7CiB9CkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBTbGlkZXJUaHVtYkVsZW1lbnQ6OnNldFBv
c2l0aW9uRnJvbVZhbHVlKCkKICAgICAvLyBTaW5jZSB0aGUgY29kZSB0byBjYWxjdWxhdGUgcG9z
aXRpb24gaXMgaW4gdGhlIFJlbmRlclNsaWRlclRodW1iIGxheW91dAogICAgIC8vIHBhdGgsIHdl
IGRvbid0IGFjdHVhbGx5IHVwZGF0ZSB0aGUgdmFsdWUgaGVyZS4gSW5zdGVhZCwgd2UgcG9rZSBh
dCB0aGUKICAgICAvLyByZW5kZXJlciBkaXJlY3RseSB0byB0cmlnZ2VyIGxheW91dC4KLSAgICBp
ZiAocmVuZGVyZXIoKSkKKyAgICBpZiAoaGFzUmVuZGVyZXIoKSkKICAgICAgICAgcmVuZGVyZXIo
KS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiB9CiAKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIFNs
aWRlclRodW1iRWxlbWVudDo6c2V0UG9zaXRpb25Gcm9tUG9pbnQoY29uc3QgSW50UG9pbnQmIHBv
aW50KQogewogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gaG9zdElucHV0KCk7CiAKLSAg
ICBpZiAoIWlucHV0LT5yZW5kZXJlcigpIHx8ICFyZW5kZXJlcigpKQorICAgIGlmICghaW5wdXQt
Pmhhc1JlbmRlcmVyKCkgfHwgIXJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIElu
dFBvaW50IG9mZnNldCA9IHJvdW5kZWRJbnRQb2ludChpbnB1dC0+cmVuZGVyZXIoKS0+YWJzb2x1
dGVUb0xvY2FsKHBvaW50LCBmYWxzZSwgdHJ1ZSkpOwpAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQg
U2xpZGVyVGh1bWJFbGVtZW50OjpzdG9wRHJhZ2dpbmcoKQogICAgIGlmIChGcmFtZSogZnJhbWUg
PSBkb2N1bWVudCgpLT5mcmFtZSgpKQogICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNl
dENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsKICAgICBtX2luRHJhZ01vZGUgPSBmYWxzZTsK
LSAgICBpZiAocmVuZGVyZXIoKSkKKyAgICBpZiAoaGFzUmVuZGVyZXIoKSkKICAgICAgICAgcmVu
ZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmluZGV4IDk0
YzkzYjEzOTdiMWFiYTY5YzgzMWUwNzRiNDEzZGM0ZGM0YzhjODguLmRjZDU2NjhhM2I5NzVjMTY2
OGJiYzgxZDE3YmExNGJiNjhiMzViYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtOTcsNyArOTcsNyBA
QCBSZW5kZXJPYmplY3QqIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRlUmVuZGVy
ZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZQogewogICAgIGJvb2wgbXVsdGlMaW5lID0gZmFsc2U7
CiAgICAgTm9kZSogc2hhZG93QW5jZXN0b3IgPSBzaGFkb3dBbmNlc3Rvck5vZGUoKTsKLSAgICBp
ZiAoc2hhZG93QW5jZXN0b3IgJiYgc2hhZG93QW5jZXN0b3ItPnJlbmRlcmVyKCkpIHsKKyAgICBp
ZiAoc2hhZG93QW5jZXN0b3IgJiYgc2hhZG93QW5jZXN0b3ItPmhhc1JlbmRlcmVyKCkpIHsKICAg
ICAgICAgQVNTRVJUKHNoYWRvd0FuY2VzdG9yLT5yZW5kZXJlcigpLT5pc1RleHRGaWVsZCgpIHx8
IHNoYWRvd0FuY2VzdG9yLT5yZW5kZXJlcigpLT5pc1RleHRBcmVhKCkpOwogICAgICAgICBtdWx0
aUxpbmUgPSBzaGFkb3dBbmNlc3Rvci0+cmVuZGVyZXIoKS0+aXNUZXh0QXJlYSgpOwogICAgIH0K
QEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6
ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgLy8gSWYgdGhlIGVsZW1lbnQg
aXMgdmlzaWJsZSwgb24gbW91c2V1cCwgY2xlYXIgdGhlIHZhbHVlLCBhbmQgc2V0IHNlbGVjdGlv
bgogICAgIFJlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBpbnB1dChzdGF0aWNfY2FzdDxIVE1MSW5w
dXRFbGVtZW50Kj4oc2hhZG93QW5jZXN0b3JOb2RlKCkpKTsKICAgICBpZiAoZXZlbnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQgJiYgZXZlbnQtPmlzTW91c2VFdmVudCgp
ICYmIHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldmVudCktPmJ1dHRvbigpID09IExlZnRCdXR0
b24pIHsKLSAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+dmlzaWJsZVRvSGl0
VGVzdGluZygpKSB7CisgICAgICAgIGlmIChoYXNSZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnZp
c2libGVUb0hpdFRlc3RpbmcoKSkgewogICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRv
Y3VtZW50KCktPmZyYW1lKCkpIHsKICAgICAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVy
KCktPnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSh0aGlzKTsKICAgICAgICAgICAgICAgICBt
X2NhcHR1cmluZyA9IHRydWU7CkBAIC0yODQsMTMgKzI4NCwxMyBAQCB2b2lkIFNwaW5CdXR0b25F
bGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgaWYgKGJv
eC0+Ym9yZGVyQm94UmVjdCgpLmNvbnRhaW5zKGxvY2FsKSkgewogICAgICAgICAgICAgLy8gVGhl
IGZvbGxvd2luZyBmdW5jdGlvbnMgb2YgSFRNTElucHV0RWxlbWVudCBtYXkgcnVuIEphdmFTY3Jp
cHQKICAgICAgICAgICAgIC8vIGNvZGUgd2hpY2ggZGV0YWNoZXMgdGhpcyBzaGFkb3cgbm9kZS4g
V2UgbmVlZCB0byB0YWtlIGEgcmVmZXJlbmNlCi0gICAgICAgICAgICAvLyBhbmQgY2hlY2sgcmVu
ZGVyZXIoKSBhZnRlciBzdWNoIGZ1bmN0aW9uIGNhbGxzLgorICAgICAgICAgICAgLy8gYW5kIGNo
ZWNrIGhhc1JlbmRlcmVyKCkgYWZ0ZXIgc3VjaCBmdW5jdGlvbiBjYWxscy4KICAgICAgICAgICAg
IFJlZlB0cjxOb2RlPiBwcm90ZWN0b3IodGhpcyk7CiAgICAgICAgICAgICBpbnB1dC0+Zm9jdXMo
KTsKICAgICAgICAgICAgIGlucHV0LT5zZWxlY3QoKTsKLSAgICAgICAgICAgIGlmIChyZW5kZXJl
cigpKSB7CisgICAgICAgICAgICBpZiAoaGFzUmVuZGVyZXIoKSkgewogICAgICAgICAgICAgICAg
IGlucHV0LT5zdGVwVXBGcm9tUmVuZGVyZXIobV91cERvd25TdGF0ZSA9PSBVcCA/IDEgOiAtMSk7
Ci0gICAgICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkpCisgICAgICAgICAgICAgICAgaWYgKGhh
c1JlbmRlcmVyKCkpCiAgICAgICAgICAgICAgICAgICAgIHN0YXJ0UmVwZWF0aW5nVGltZXIoKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwpA
QCAtNDA3LDcgKzQwNyw3IEBAIHZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogCiAgICAgLy8gT24gbW91c2UgZG93biwg
c2VsZWN0IHRoZSB0ZXh0IGFuZCBzZXQgZm9jdXMuCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50ICYmIGV2ZW50LT5pc01vdXNlRXZlbnQoKSAmJiBz
dGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZlbnQpLT5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB7
Ci0gICAgICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnZpc2libGVUb0hpdFRlc3Rp
bmcoKSkgeworICAgICAgICBpZiAoaGFzUmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT52aXNpYmxl
VG9IaXRUZXN0aW5nKCkpIHsKICAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVu
dCgpLT5mcmFtZSgpKSB7CiAgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5z
ZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUodGhpcyk7CiAgICAgICAgICAgICAgICAgbV9jYXB0
dXJpbmcgPSB0cnVlOwpAQCAtNDIwLDcgKzQyMCw3IEBAIHZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1
dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgIH0KICAg
ICAvLyBPbiBtb3VzZSB1cCwgcmVsZWFzZSBjYXB0dXJlIGNsZWFubHkuCiAgICAgaWYgKGV2ZW50
LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNldXBFdmVudCAmJiBldmVudC0+aXNNb3VzZUV2
ZW50KCkgJiYgc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50KS0+YnV0dG9uKCkgPT0gTGVm
dEJ1dHRvbikgewotICAgICAgICBpZiAobV9jYXB0dXJpbmcgJiYgcmVuZGVyZXIoKSAmJiByZW5k
ZXJlcigpLT52aXNpYmxlVG9IaXRUZXN0aW5nKCkpIHsKKyAgICAgICAgaWYgKG1fY2FwdHVyaW5n
ICYmIGhhc1JlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+dmlzaWJsZVRvSGl0VGVzdGluZygpKSB7
CiAgICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKSkgewog
ICAgICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5nTW91c2VF
dmVudHNOb2RlKDApOwogICAgICAgICAgICAgICAgIG1fY2FwdHVyaW5nID0gZmFsc2U7CkBAIC00
OTIsNyArNDkyLDcgQEAgdm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6c2V0UmVj
b2duaXRpb25SZXN1bHQoaW50LCBjb25zdCBTcGVlY2hJbnB1dFIKIAogICAgIC8vIENoZWNrIGJl
Zm9yZSBhY2Nlc3NpbmcgdGhlIHJlbmRlcmVyIGFzIHRoZSBhYm92ZSBldmVudCBjb3VsZCBoYXZl
IHBvdGVudGlhbGx5IHR1cm5lZCBvZmYKICAgICAvLyBzcGVlY2ggaW4gdGhlIGlucHV0IGVsZW1l
bnQsIGhlbmNlIHJlbW92aW5nIHRoaXMgYnV0dG9uIGFuZCByZW5kZXJlciBmcm9tIHRoZSBoaWVy
YXJjaHkuCi0gICAgaWYgKHJlbmRlcmVyKCkpCisgICAgaWYgKGhhc1JlbmRlcmVyKCkpCiAgICAg
ICAgIHJlbmRlcmVyKCktPnJlcGFpbnQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxv
YWRlci5jcHAKaW5kZXggYjlhZDJhZTYyNjcyNWZmNzMzNWVmMzQxY2EzNTgxYmE1ZjNhNjQwYy4u
MjJiOTAxN2NiMTM5YjdjZjAyM2M5OGM2MDg1NDllZDViMzQzYWMwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvSW1hZ2VMb2FkZXIuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBJbWFnZUxvYWRl
cjo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgIC8vIElmIHdlJ3JlIG5vdCBtYWtpbmcgcmVuZGVy
ZXJzIGZvciB0aGUgcGFnZSwgdGhlbiBkb24ndCBsb2FkIGltYWdlcy4gIFdlIGRvbid0IHdhbnQg
dG8gc2xvdwogICAgIC8vIGRvd24gdGhlIHJhdyBIVE1MIHBhcnNpbmcgY2FzZSBieSBsb2FkaW5n
IGltYWdlcyB3ZSBkb24ndCBpbnRlbmQgdG8gZGlzcGxheS4KICAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBtX2VsZW1lbnQtPmRvY3VtZW50KCk7Ci0gICAgaWYgKCFkb2N1bWVudC0+cmVuZGVyZXIo
KSkKKyAgICBpZiAoIWRvY3VtZW50LT5oYXNSZW5kZXJlcigpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBBdG9taWNTdHJpbmcgYXR0ciA9IG1fZWxlbWVudC0+Z2V0QXR0cmlidXRlKG1fZWxlbWVu
dC0+aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZjNiM2NlOWUzY2Rh
NTM3ZjdhZDEzNmY4OTM0YTIyMTk3N2RkMzY3ZC4uNzE4MDY2ZDdlZWRlNGVjMmY1ZWVmYzJlYmMz
MmU5YzEzOGE3OWRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC02MDQsNyArNjA0LDcgQEAgdm9pZCBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6cHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBSZXNvdXJj
ZVJlcXVlc3QmIHIKICAgICAvLyBGSVhNRTogUmlwIHRoaXMgb3V0IHdoZW4gd2UgYXJlIHN1cmUg
aXQgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSAoZXZlbiBmb3IgbW9iaWxlKS4KICAgICBVTlVTRURf
UEFSQU0ocmVmZXJlbmNlZEZyb21Cb2R5KTsKIAotICAgIGJvb2wgaGFzUmVuZGVyaW5nID0gbV9k
b2N1bWVudC0+Ym9keSgpICYmIG1fZG9jdW1lbnQtPmJvZHkoKS0+cmVuZGVyZXIoKTsKKyAgICBi
b29sIGhhc1JlbmRlcmluZyA9IG1fZG9jdW1lbnQtPmJvZHkoKSAmJiBtX2RvY3VtZW50LT5ib2R5
KCktPmhhc1JlbmRlcmVyKCk7CiAgICAgYm9vbCBjYW5CbG9ja1BhcnNlciA9IHR5cGUgPT0gQ2Fj
aGVkUmVzb3VyY2U6OlNjcmlwdCB8fCB0eXBlID09IENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNo
ZWV0OwogICAgIGlmICghaGFzUmVuZGVyaW5nICYmICFjYW5CbG9ja1BhcnNlcikgewogICAgICAg
ICAvLyBEb24ndCBwcmVsb2FkIHN1YnJlc291cmNlcyB0aGF0IGNhbid0IGJsb2NrIHRoZSBwYXJz
ZXIgYmVmb3JlIHdlIGhhdmUgc29tZXRoaW5nIHRvIGRyYXcuCkBAIC02MTgsNyArNjE4LDcgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0
eXBlLCBSZXNvdXJjZVJlcXVlc3QmIHIKIAogdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2hl
Y2tGb3JQZW5kaW5nUHJlbG9hZHMoKSAKIHsKLSAgICBpZiAobV9wZW5kaW5nUHJlbG9hZHMuaXNF
bXB0eSgpIHx8ICFtX2RvY3VtZW50LT5ib2R5KCkgfHwgIW1fZG9jdW1lbnQtPmJvZHkoKS0+cmVu
ZGVyZXIoKSkKKyAgICBpZiAobV9wZW5kaW5nUHJlbG9hZHMuaXNFbXB0eSgpIHx8ICFtX2RvY3Vt
ZW50LT5ib2R5KCkgfHwgIW1fZG9jdW1lbnQtPmJvZHkoKS0+aGFzUmVuZGVyZXIoKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIHdoaWxlICghbV9wZW5kaW5nUHJlbG9hZHMuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIFBlbmRpbmdQcmVsb2FkIHByZWxvYWQgPSBtX3BlbmRpbmdQcmVsb2Fkcy50YWtlRmly
c3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCAwNGY5ZTRiOWNjMjg5ZDAxODAyNTljNDgy
NGU2OGVlMDUyY2JmOTMxLi41MGUzOGM5NTI2MTFjMmY1YTdjN2FjZDJhMzQ4ODEzMmYyMzE1YmY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC0zODYsNyArMzg2LDcgQEAgdm9pZCBDaHJvbWU6
OnNldFRvb2xUaXAoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KQogICAgICAgICAgICAgICAg
IGlmIChpbnB1dC0+aXNTdWJtaXRCdXR0b24oKSkKICAgICAgICAgICAgICAgICAgICAgaWYgKEhU
TUxGb3JtRWxlbWVudCogZm9ybSA9IGlucHV0LT5mb3JtKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHRvb2xUaXAgPSBmb3JtLT5hY3Rpb24oKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChmb3JtLT5yZW5kZXJlcigpKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm0t
Pmhhc1JlbmRlcmVyKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbFRpcERpcmVj
dGlvbiA9IGZvcm0tPnJlbmRlcmVyKCktPnN0eWxlKCktPmRpcmVjdGlvbigpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xUaXBE
aXJlY3Rpb24gPSBMVFI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggMjc3
NWI0MTQ1MWVlZTk3ZTEwOGU5YjE5NDNhYjZmODZmYzNlMDkzMC4uMjA4OWI4NmUyMGMyMjBlOTUz
Yjc3ODY2MGNhNTk5OWQzY2I4NTE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cApAQCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzY3JvbGxOb2RlKGZsb2F0
IGRlbHRhLCBXaGVlbEV2ZW50OjpHcmFudWxhcml0eSBncmFudWxhcml0eSwKICAgICBpZiAoIWRl
bHRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYgKCFub2RlLT5yZW5kZXJl
cigpKQorICAgIGlmICghbm9kZS0+aGFzUmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIAogICAgIC8vIEZpbmQgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIGJveC4KQEAgLTI4Myw3
ICsyODMsNyBAQCBzdGF0aWMgdm9pZCBzZXROb25EaXJlY3Rpb25hbFNlbGVjdGlvbklmTmVlZGVk
KEZyYW1lU2VsZWN0aW9uKiBzZWxlY3Rpb24sIGNvbnN0CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBk
aXNwYXRjaFNlbGVjdFN0YXJ0KE5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKCFub2RlIHx8ICFub2Rl
LT5yZW5kZXJlcigpKQorICAgIGlmICghbm9kZSB8fCAhbm9kZS0+aGFzUmVuZGVyZXIoKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gbm9kZS0+ZGlzcGF0Y2hFdmVudChFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zZWxlY3RzdGFydEV2ZW50LCB0cnVlLCB0cnVlKSk7CkBA
IC0zMTEsNyArMzExLDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkRnJv
bU1vdXNlRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmUKICAgICBOb2RlKiBpbm5l
ck5vZGUgPSB0YXJnZXROb2RlKHJlc3VsdCk7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxl
Y3Rpb247CiAKLSAgICBpZiAoaW5uZXJOb2RlICYmIGlubmVyTm9kZS0+cmVuZGVyZXIoKSAmJiBt
X21vdXNlRG93bk1heVN0YXJ0U2VsZWN0KSB7CisgICAgaWYgKGlubmVyTm9kZSAmJiBpbm5lck5v
ZGUtPmhhc1JlbmRlcmVyKCkgJiYgbV9tb3VzZURvd25NYXlTdGFydFNlbGVjdCkgewogICAgICAg
ICBWaXNpYmxlUG9zaXRpb24gcG9zKGlubmVyTm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQ
b2ludChyZXN1bHQubG9jYWxQb2ludCgpKSk7CiAgICAgICAgIGlmIChwb3MuaXNOb3ROdWxsKCkp
IHsKICAgICAgICAgICAgIG5ld1NlbGVjdGlvbiA9IFZpc2libGVTZWxlY3Rpb24ocG9zKTsKQEAg
LTMzMiw3ICszMzIsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6c2VsZWN0Q2xvc2VzdFdvcmRPckxp
bmtGcm9tTW91c2VFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdAogCiAgICAgTm9kZSogaW5u
ZXJOb2RlID0gdGFyZ2V0Tm9kZShyZXN1bHQpOwogCi0gICAgaWYgKGlubmVyTm9kZSAmJiBpbm5l
ck5vZGUtPnJlbmRlcmVyKCkgJiYgbV9tb3VzZURvd25NYXlTdGFydFNlbGVjdCkgeworICAgIGlm
IChpbm5lck5vZGUgJiYgaW5uZXJOb2RlLT5oYXNSZW5kZXJlcigpICYmIG1fbW91c2VEb3duTWF5
U3RhcnRTZWxlY3QpIHsKICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb247CiAg
ICAgICAgIEVsZW1lbnQqIFVSTEVsZW1lbnQgPSByZXN1bHQuaGl0VGVzdFJlc3VsdCgpLlVSTEVs
ZW1lbnQoKTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyhpbm5lck5vZGUtPnJlbmRlcmVy
KCktPnBvc2l0aW9uRm9yUG9pbnQocmVzdWx0LmxvY2FsUG9pbnQoKSkpOwpAQCAtMzY3LDcgKzM2
Nyw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnRUcmlwbGVDbGlj
ayhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAKICAgICBOb2RlKiBpbm5lck5vZGUgPSB0YXJnZXROb2RlKGV2ZW50KTsKLSAgICBpZiAoIShp
bm5lck5vZGUgJiYgaW5uZXJOb2RlLT5yZW5kZXJlcigpICYmIG1fbW91c2VEb3duTWF5U3RhcnRT
ZWxlY3QpKQorICAgIGlmICghKGlubmVyTm9kZSAmJiBpbm5lck5vZGUtPmhhc1JlbmRlcmVyKCkg
JiYgbV9tb3VzZURvd25NYXlTdGFydFNlbGVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0aW9uOwpAQCAtMzg5LDcgKzM4OSw3IEBAIHN0
YXRpYyBpbnQgdGV4dERpc3RhbmNlKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRp
b24mIGVuZCkKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnRTaW5nbGVD
bGljayhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKIHsKICAgICBO
b2RlKiBpbm5lck5vZGUgPSB0YXJnZXROb2RlKGV2ZW50KTsKLSAgICBpZiAoIShpbm5lck5vZGUg
JiYgaW5uZXJOb2RlLT5yZW5kZXJlcigpICYmIG1fbW91c2VEb3duTWF5U3RhcnRTZWxlY3QpKQor
ICAgIGlmICghKGlubmVyTm9kZSAmJiBpbm5lck5vZGUtPmhhc1JlbmRlcmVyKCkgJiYgbV9tb3Vz
ZURvd25NYXlTdGFydFNlbGVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEV4
dGVuZCB0aGUgc2VsZWN0aW9uIGlmIHRoZSBTaGlmdCBrZXkgaXMgZG93biwgdW5sZXNzIHRoZSBj
bGljayBpcyBpbiBhIGxpbmsuCkBAIC00NDMsNyArNDQzLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZU1vdXNlUHJlc3NFdmVudFNpbmdsZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0
VGVzdFIKIAogc3RhdGljIGlubGluZSBib29sIGNhbk1vdXNlRG93blN0YXJ0U2VsZWN0KE5vZGUq
IG5vZGUpCiB7Ci0gICAgaWYgKCFub2RlIHx8ICFub2RlLT5yZW5kZXJlcigpKQorICAgIGlmICgh
bm9kZSB8fCAhbm9kZS0+aGFzUmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICBpZiAoIW5vZGUtPmNhblN0YXJ0U2VsZWN0aW9uKCkpCkBAIC01NTgsNyArNTU4LDcgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlRHJhZ2dlZEV2ZW50KGNvbnN0IE1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHMmIGUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgTm9kZSog
dGFyZ2V0Tm9kZSA9IEV2ZW50SGFuZGxlcjo6dGFyZ2V0Tm9kZShldmVudCk7Ci0gICAgaWYgKGV2
ZW50LmV2ZW50KCkuYnV0dG9uKCkgIT0gTGVmdEJ1dHRvbiB8fCAhdGFyZ2V0Tm9kZSB8fCAhdGFy
Z2V0Tm9kZS0+cmVuZGVyZXIoKSkKKyAgICBpZiAoZXZlbnQuZXZlbnQoKS5idXR0b24oKSAhPSBM
ZWZ0QnV0dG9uIHx8ICF0YXJnZXROb2RlIHx8ICF0YXJnZXROb2RlLT5oYXNSZW5kZXJlcigpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBQTEFURk9STShNQUMpIC8vIEZJWE1FOiBXaHkg
ZG9lcyB0aGlzIGFzc2VydGlvbiBmaXJlIG9uIG90aGVyIHBsYXRmb3Jtcz8KQEAgLTY0OSwxMSAr
NjQ5LDExIEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gc2VsZWN0aW9uRXh0ZW50UmVzcGVjdGlu
Z0VkaXRpbmdCb3VuZGFyeShjb25zdCBWaXNpYmxlU2VsCiAgICAgSW50UG9pbnQgc2VsZWN0aW9u
RW5kUG9pbnQgPSBsb2NhbFBvaW50OwogICAgIEVsZW1lbnQqIGVkaXRhYmxlRWxlbWVudCA9IHNl
bGVjdGlvbi5yb290RWRpdGFibGVFbGVtZW50KCk7CiAKLSAgICBpZiAoIXRhcmdldE5vZGUtPnJl
bmRlcmVyKCkpCisgICAgaWYgKCF0YXJnZXROb2RlLT5oYXNSZW5kZXJlcigpKQogICAgICAgICBy
ZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAKICAgICBpZiAoZWRpdGFibGVFbGVtZW50ICYmICFl
ZGl0YWJsZUVsZW1lbnQtPmNvbnRhaW5zKHRhcmdldE5vZGUpKSB7Ci0gICAgICAgIGlmICghZWRp
dGFibGVFbGVtZW50LT5yZW5kZXJlcigpKQorICAgICAgICBpZiAoIWVkaXRhYmxlRWxlbWVudC0+
aGFzUmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKIAog
ICAgICAgICBGbG9hdFBvaW50IGFic29sdXRlUG9pbnQgPSB0YXJnZXROb2RlLT5yZW5kZXJlcigp
LT5sb2NhbFRvQWJzb2x1dGUoRmxvYXRQb2ludChzZWxlY3Rpb25FbmRQb2ludCkpOwpAQCAtNzYz
LDcgKzc2Myw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChj
b25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBlCiAgICAgICAgIFZpc2libGVTZWxl
Y3Rpb24gbmV3U2VsZWN0aW9uOwogICAgICAgICBOb2RlKiBub2RlID0gdGFyZ2V0Tm9kZShldmVu
dCk7CiAgICAgICAgIGJvb2wgY2FyZXRCcm93c2luZyA9IG1fZnJhbWUtPnNldHRpbmdzKCktPmNh
cmV0QnJvd3NpbmdFbmFibGVkKCk7Ci0gICAgICAgIGlmIChub2RlICYmIChjYXJldEJyb3dzaW5n
IHx8IG5vZGUtPnJlbmRlcmVySXNFZGl0YWJsZSgpKSAmJiBub2RlLT5yZW5kZXJlcigpKSB7Cisg
ICAgICAgIGlmIChub2RlICYmIChjYXJldEJyb3dzaW5nIHx8IG5vZGUtPnJlbmRlcmVySXNFZGl0
YWJsZSgpKSAmJiBub2RlLT5oYXNSZW5kZXJlcigpKSB7CiAgICAgICAgICAgICBWaXNpYmxlUG9z
aXRpb24gcG9zID0gbm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludChldmVudC5sb2Nh
bFBvaW50KCkpOwogICAgICAgICAgICAgbmV3U2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlvbihw
b3MpOwogICAgICAgICB9CkBAIC05MzcsNyArOTM3LDcgQEAgSGl0VGVzdFJlc3VsdCBFdmVudEhh
bmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCwgYm9vbCBh
bGwKIAogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIE5vZGUqIG4gPSByZXN1bHQuaW5uZXJO
b2RlKCk7Ci0gICAgICAgIGlmICghcmVzdWx0LmlzT3ZlcldpZGdldCgpIHx8ICFuIHx8ICFuLT5y
ZW5kZXJlcigpIHx8ICFuLT5yZW5kZXJlcigpLT5pc1dpZGdldCgpKQorICAgICAgICBpZiAoIXJl
c3VsdC5pc092ZXJXaWRnZXQoKSB8fCAhbiB8fCAhbi0+aGFzUmVuZGVyZXIoKSB8fCAhbi0+cmVu
ZGVyZXIoKS0+aXNXaWRnZXQoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBSZW5kZXJX
aWRnZXQqIHJlbmRlcldpZGdldCA9IHRvUmVuZGVyV2lkZ2V0KG4tPnJlbmRlcmVyKCkpOwogICAg
ICAgICBXaWRnZXQqIHdpZGdldCA9IHJlbmRlcldpZGdldC0+d2lkZ2V0KCk7CkBAIC0xNDI2LDcg
KzE0MjYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkKICAgICBtX2NsaWNrTm9kZSA9IHRhcmdl
dE5vZGUobWV2KTsKIAogICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkp
IHsKLSAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gbV9jbGlja05vZGUtPnJlbmRlcmVyKCkg
PyBtX2NsaWNrTm9kZS0+cmVuZGVyZXIoKS0+ZW5jbG9zaW5nTGF5ZXIoKSA6IDA7CisgICAgICAg
IFJlbmRlckxheWVyKiBsYXllciA9IG1fY2xpY2tOb2RlLT5oYXNSZW5kZXJlcigpID8gbV9jbGlj
a05vZGUtPnJlbmRlcmVyKCktPmVuY2xvc2luZ0xheWVyKCkgOiAwOwogICAgICAgICBJbnRQb2lu
dCBwID0gdmlldy0+d2luZG93VG9Db250ZW50cyhtb3VzZUV2ZW50LnBvcygpKTsKICAgICAgICAg
aWYgKGxheWVyICYmIGxheWVyLT5pc1BvaW50SW5SZXNpemVDb250cm9sKHApKSB7CiAgICAgICAg
ICAgICBsYXllci0+c2V0SW5SZXNpemVNb2RlKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1
c0NvbnRyb2xsZXIuY3BwCmluZGV4IDA3NDRhZmJiNDIwYjZkZmY0ZWNmOWY5NmU4NDZhZGQ0OTM3
NDNkNjEuLjY5OGUzMjNkYjYyYzlkNTM2M2JkNzg3ZjFlZDAwMTdhZTRkMzk0ZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBAQCBzdGF0
aWMgdm9pZCBjbGVhclNlbGVjdGlvbklmTmVlZGVkKEZyYW1lKiBvbGRGb2N1c2VkRnJhbWUsIEZy
YW1lKiBuZXdGb2N1c2VkRnJhbQogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGlmIChO
b2RlKiBtb3VzZVByZXNzTm9kZSA9IG5ld0ZvY3VzZWRGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPm1v
dXNlUHJlc3NOb2RlKCkpIHsKLSAgICAgICAgaWYgKG1vdXNlUHJlc3NOb2RlLT5yZW5kZXJlcigp
ICYmICFtb3VzZVByZXNzTm9kZS0+Y2FuU3RhcnRTZWxlY3Rpb24oKSkgeworICAgICAgICBpZiAo
bW91c2VQcmVzc05vZGUtPmhhc1JlbmRlcmVyKCkgJiYgIW1vdXNlUHJlc3NOb2RlLT5jYW5TdGFy
dFNlbGVjdGlvbigpKSB7CiAgICAgICAgICAgICAvLyBEb24ndCBjbGVhciB0aGUgc2VsZWN0aW9u
IGZvciBjb250ZW50RWRpdGFibGUgZWxlbWVudHMsIGJ1dCBkbyBjbGVhciBpdCBmb3IgaW5wdXQg
YW5kIHRleHRhcmVhLiBTZWUgYnVnIDM4Njk2LgogICAgICAgICAgICAgTm9kZSAqIHJvb3QgPSBz
LT5yb290RWRpdGFibGVFbGVtZW50KCk7CiAgICAgICAgICAgICBpZiAoIXJvb3QpCkBAIC01NzQs
NyArNTc0LDcgQEAgdm9pZCBGb2N1c0NvbnRyb2xsZXI6OnNldEFjdGl2ZShib29sIGFjdGl2ZSkK
IHN0YXRpYyB2b2lkIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZOZWVkZWQoRm9jdXNEaXJlY3Rpb24g
ZGlyZWN0aW9uLCBjb25zdCBGb2N1c0NhbmRpZGF0ZSYgY3VycmVudCwgRm9jdXNDYW5kaWRhdGUm
IGNhbmRpZGF0ZSwgRm9jdXNDYW5kaWRhdGUmIGNsb3Nlc3QpCiB7CiAgICAgQVNTRVJUKGNhbmRp
ZGF0ZS52aXNpYmxlTm9kZS0+aXNFbGVtZW50Tm9kZSgpKTsKLSAgICBBU1NFUlQoY2FuZGlkYXRl
LnZpc2libGVOb2RlLT5yZW5kZXJlcigpKTsKKyAgICBBU1NFUlQoY2FuZGlkYXRlLnZpc2libGVO
b2RlLT5oYXNSZW5kZXJlcigpKTsKIAogICAgIC8vIElnbm9yZSBpZnJhbWVzIHRoYXQgZG9uJ3Qg
aGF2ZSBhIHNyYyBhdHRyaWJ1dGUKICAgICBpZiAoZnJhbWVPd25lckVsZW1lbnQoY2FuZGlkYXRl
KSAmJiAoIWZyYW1lT3duZXJFbGVtZW50KGNhbmRpZGF0ZSktPmNvbnRlbnRGcmFtZSgpIHx8IGNh
bmRpZGF0ZS5yZWN0LmlzRW1wdHkoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDlkY2M0OTE3
MmE1MzNlMmU3OWU3NzY4OGU2MmM3OWIzYzQzZmMzYzAuLjQ0Zjg5Y2I4YmU0Mjc2ODhjNTJhMzE4
NzQ4MWIwMmY0NGJjZTRhYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0zNzIsNyArMzcyLDcg
QEAgU3RyaW5nIEZyYW1lOjpzZWFyY2hGb3JMYWJlbHNBYm92ZUNlbGwoUmVndWxhckV4cHJlc3Np
b24qIHJlZ0V4cCwgSFRNTFRhYmxlQ2VsbEUKICAgICAgICAgLy8gc2VhcmNoIHdpdGhpbiB0aGUg
YWJvdmUgY2VsbCB3ZSBmb3VuZCBmb3IgYSBtYXRjaAogICAgICAgICBzaXplX3QgbGVuZ3RoU2Vh
cmNoZWQgPSAwOyAgICAKICAgICAgICAgZm9yIChOb2RlKiBuID0gYWJvdmVDZWxsLT5maXJzdENo
aWxkKCk7IG47IG4gPSBuLT50cmF2ZXJzZU5leHROb2RlKGFib3ZlQ2VsbCkpIHsKLSAgICAgICAg
ICAgIGlmIChuLT5pc1RleHROb2RlKCkgJiYgbi0+cmVuZGVyZXIoKSAmJiBuLT5yZW5kZXJlcigp
LT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkgeworICAgICAgICAgICAgaWYgKG4t
PmlzVGV4dE5vZGUoKSAmJiBuLT5oYXNSZW5kZXJlcigpICYmIG4tPnJlbmRlcmVyKCktPnN0eWxl
KCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKSB7CiAgICAgICAgICAgICAgICAgLy8gRm9yIGVh
Y2ggdGV4dCBjaHVuaywgcnVuIHRoZSByZWdleHAKICAgICAgICAgICAgICAgICBTdHJpbmcgbm9k
ZVN0cmluZyA9IG4tPm5vZGVWYWx1ZSgpOwogICAgICAgICAgICAgICAgIGludCBwb3MgPSByZWdF
eHAtPnNlYXJjaFJldihub2RlU3RyaW5nKTsKQEAgLTQzMSw3ICs0MzEsNyBAQCBTdHJpbmcgRnJh
bWU6OnNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxh
YmVscywgRWxlbWVudAogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBzZWFyY2hlZENlbGxBYm92ZSA9IHRydWU7Ci0gICAgICAgIH0gZWxz
ZSBpZiAobi0+aXNUZXh0Tm9kZSgpICYmIG4tPnJlbmRlcmVyKCkgJiYgbi0+cmVuZGVyZXIoKS0+
c3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpIHsKKyAgICAgICAgfSBlbHNlIGlmIChu
LT5pc1RleHROb2RlKCkgJiYgbi0+aGFzUmVuZGVyZXIoKSAmJiBuLT5yZW5kZXJlcigpLT5zdHls
ZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkgewogICAgICAgICAgICAgLy8gRm9yIGVhY2gg
dGV4dCBjaHVuaywgcnVuIHRoZSByZWdleHAKICAgICAgICAgICAgIFN0cmluZyBub2RlU3RyaW5n
ID0gbi0+bm9kZVZhbHVlKCk7CiAgICAgICAgICAgICAvLyBhZGQgMTAwIGZvciBzbG9wLCB0byBt
YWtlIGl0IG1vcmUgbGlrZWx5IHRoYXQgd2UnbGwgc2VhcmNoIHdob2xlIG5vZGVzCkBAIC01MjQs
OSArNTI0LDkgQEAgQ29sb3IgRnJhbWU6OmdldERvY3VtZW50QmFja2dyb3VuZENvbG9yKCkgY29u
c3QKICAgICAvLyBzdGFydCBhcyBpbnZhbGlkIGNvbG9ycwogICAgIENvbG9yIGh0bWxCYWNrZ3Jv
dW5kQ29sb3I7CiAgICAgQ29sb3IgYm9keUJhY2tncm91bmRDb2xvcjsKLSAgICBpZiAoaHRtbEVs
ZW1lbnQgJiYgaHRtbEVsZW1lbnQtPnJlbmRlcmVyKCkpCisgICAgaWYgKGh0bWxFbGVtZW50ICYm
IGh0bWxFbGVtZW50LT5oYXNSZW5kZXJlcigpKQogICAgICAgICBodG1sQmFja2dyb3VuZENvbG9y
ID0gaHRtbEVsZW1lbnQtPnJlbmRlcmVyKCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7Ci0gICAgaWYgKGJvZHlFbGVtZW50ICYmIGJv
ZHlFbGVtZW50LT5yZW5kZXJlcigpKQorICAgIGlmIChib2R5RWxlbWVudCAmJiBib2R5RWxlbWVu
dC0+aGFzUmVuZGVyZXIoKSkKICAgICAgICAgYm9keUJhY2tncm91bmRDb2xvciA9IGJvZHlFbGVt
ZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ29sb3IpOwogICAgIAogICAgIGlmICghYm9keUJhY2tncm91bmRDb2xvci5p
c1ZhbGlkKCkpIHsKQEAgLTEwNzUsNyArMTA3NSw3IEBAIHZvaWQgRnJhbWU6OnNldFBhZ2VBbmRU
ZXh0Wm9vbUZhY3RvcnMoZmxvYXQgcGFnZVpvb21GYWN0b3IsIGZsb2F0IHRleHRab29tRmFjdG9y
CiAgICAgaWYgKGRvY3VtZW50LT5pc1NWR0RvY3VtZW50KCkpIHsKICAgICAgICAgaWYgKCFzdGF0
aWNfY2FzdDxTVkdEb2N1bWVudCo+KGRvY3VtZW50KS0+em9vbUFuZFBhbkVuYWJsZWQoKSkKICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKGRvY3VtZW50LT5yZW5kZXJlcigpKQorICAg
ICAgICBpZiAoZG9jdW1lbnQtPmhhc1JlbmRlcmVyKCkpCiAgICAgICAgICAgICBkb2N1bWVudC0+
cmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiAgICAgfQogI2VuZGlmCkBAIC0xMDk4
LDcgKzEwOTgsNyBAQCB2b2lkIEZyYW1lOjpzZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKGZsb2F0
IHBhZ2Vab29tRmFjdG9yLCBmbG9hdCB0ZXh0Wm9vbUZhY3RvcgogICAgICAgICBjaGlsZC0+c2V0
UGFnZUFuZFRleHRab29tRmFjdG9ycyhtX3BhZ2Vab29tRmFjdG9yLCBtX3RleHRab29tRmFjdG9y
KTsKIAogICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSB0aGlzLT52aWV3KCkpIHsKLSAgICAgICAg
aWYgKGRvY3VtZW50LT5yZW5kZXJlcigpICYmIGRvY3VtZW50LT5yZW5kZXJlcigpLT5uZWVkc0xh
eW91dCgpICYmIHZpZXctPmRpZEZpcnN0TGF5b3V0KCkpCisgICAgICAgIGlmIChkb2N1bWVudC0+
aGFzUmVuZGVyZXIoKSAmJiBkb2N1bWVudC0+cmVuZGVyZXIoKS0+bmVlZHNMYXlvdXQoKSAmJiB2
aWV3LT5kaWRGaXJzdExheW91dCgpKQogICAgICAgICAgICAgdmlldy0+bGF5b3V0KCk7CiAgICAg
fQogfQpAQCAtMTEyNCw3ICsxMTI0LDcgQEAgdm9pZCBGcmFtZTo6c2NhbGVQYWdlKGZsb2F0IHNj
YWxlLCBjb25zdCBJbnRQb2ludCYgb3JpZ2luKQogICAgIGlmIChzY2FsZSAhPSBtX3BhZ2VTY2Fs
ZUZhY3RvcikgewogICAgICAgICBtX3BhZ2VTY2FsZUZhY3RvciA9IHNjYWxlOwogCi0gICAgICAg
IGlmIChkb2N1bWVudC0+cmVuZGVyZXIoKSkKKyAgICAgICAgaWYgKGRvY3VtZW50LT5oYXNSZW5k
ZXJlcigpKQogICAgICAgICAgICAgZG9jdW1lbnQtPnJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0
KHRydWUpOwogCiAgICAgICAgIGRvY3VtZW50LT5yZWNhbGNTdHlsZShOb2RlOjpGb3JjZSk7CkBA
IC0xMTM1LDcgKzExMzUsNyBAQCB2b2lkIEZyYW1lOjpzY2FsZVBhZ2UoZmxvYXQgc2NhbGUsIGNv
bnN0IEludFBvaW50JiBvcmlnaW4pCiAgICAgfQogCiAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9
IHRoaXMtPnZpZXcoKSkgewotICAgICAgICBpZiAoZG9jdW1lbnQtPnJlbmRlcmVyKCkgJiYgZG9j
dW1lbnQtPnJlbmRlcmVyKCktPm5lZWRzTGF5b3V0KCkgJiYgdmlldy0+ZGlkRmlyc3RMYXlvdXQo
KSkKKyAgICAgICAgaWYgKGRvY3VtZW50LT5oYXNSZW5kZXJlcigpICYmIGRvY3VtZW50LT5yZW5k
ZXJlcigpLT5uZWVkc0xheW91dCgpICYmIHZpZXctPmRpZEZpcnN0TGF5b3V0KCkpCiAgICAgICAg
ICAgICB2aWV3LT5sYXlvdXQoKTsKICAgICAgICAgdmlldy0+c2V0U2Nyb2xsUG9zaXRpb24ob3Jp
Z2luKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMTg2NTAxODAzNzQz
MTAwZWNmMjczYjQyZDNmMTMwN2NjZTdhMjViNy4uYjA1ZDM5NGM4ZTllMmZhNWUyYzkxNWZjMTRi
NWRmMzZjODI4ZWViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtNDYyLDcgKzQ2
Miw3IEBAIFBhc3NSZWZQdHI8U2Nyb2xsYmFyPiBGcmFtZVZpZXc6OmNyZWF0ZVNjcm9sbGJhcihT
Y3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvCiAKICAgICAvLyBUcnkgdGhlIDxib2R5PiBl
bGVtZW50IGZpcnN0IGFzIGEgc2Nyb2xsYmFyIHNvdXJjZS4KICAgICBFbGVtZW50KiBib2R5ID0g
ZG9jID8gZG9jLT5ib2R5KCkgOiAwOwotICAgIGlmIChib2R5ICYmIGJvZHktPnJlbmRlcmVyKCkg
JiYgYm9keS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+aGFzUHNldWRvU3R5bGUoU0NST0xMQkFSKSkK
KyAgICBpZiAoYm9keSAmJiBib2R5LT5oYXNSZW5kZXJlcigpICYmIGJvZHktPnJlbmRlcmVyKCkt
PnN0eWxlKCktPmhhc1BzZXVkb1N0eWxlKFNDUk9MTEJBUikpCiAgICAgICAgIHJldHVybiBSZW5k
ZXJTY3JvbGxiYXI6OmNyZWF0ZUN1c3RvbVNjcm9sbGJhcih0aGlzLCBvcmllbnRhdGlvbiwgYm9k
eS0+cmVuZGVyZXIoKS0+ZW5jbG9zaW5nQm94KCkpOwogICAgIAogICAgIC8vIElmIHRoZSA8Ym9k
eT4gZGlkbid0IGhhdmUgYSBjdXN0b20gc3R5bGUsIHRoZW4gdGhlIHJvb3QgZWxlbWVudCBtaWdo
dC4KQEAgLTU5MCw3ICs1OTAsNyBAQCB2b2lkIEZyYW1lVmlldzo6Y2FsY3VsYXRlU2Nyb2xsYmFy
TW9kZXNGb3JMYXlvdXQoU2Nyb2xsYmFyTW9kZSYgaE1vZGUsIFNjcm9sbGJhcgogICAgICAgICBO
b2RlKiBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7CiAgICAg
ICAgIFJlbmRlck9iamVjdCogcm9vdFJlbmRlcmVyID0gZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1l
bnRFbGVtZW50LT5yZW5kZXJlcigpIDogMDsKICAgICAgICAgTm9kZSogYm9keSA9IGRvY3VtZW50
LT5ib2R5KCk7Ci0gICAgICAgIGlmIChib2R5ICYmIGJvZHktPnJlbmRlcmVyKCkpIHsKKyAgICAg
ICAgaWYgKGJvZHkgJiYgYm9keS0+aGFzUmVuZGVyZXIoKSkgewogICAgICAgICAgICAgaWYgKGJv
ZHktPmhhc1RhZ05hbWUoZnJhbWVzZXRUYWcpICYmIG1fZnJhbWUtPnNldHRpbmdzKCkgJiYgIW1f
ZnJhbWUtPnNldHRpbmdzKCktPmZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoKSkgewogICAgICAgICAg
ICAgICAgIHZNb2RlID0gU2Nyb2xsYmFyQWx3YXlzT2ZmOwogICAgICAgICAgICAgICAgIGhNb2Rl
ID0gU2Nyb2xsYmFyQWx3YXlzT2ZmOwpAQCAtOTEwLDcgKzkxMCw3IEBAIHZvaWQgRnJhbWVWaWV3
OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUpCiAgICAgICAgIE5vZGUqIGRvY3VtZW50RWxlbWVu
dCA9IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKTsKICAgICAgICAgUmVuZGVyT2JqZWN0KiBy
b290UmVuZGVyZXIgPSBkb2N1bWVudEVsZW1lbnQgPyBkb2N1bWVudEVsZW1lbnQtPnJlbmRlcmVy
KCkgOiAwOwogICAgICAgICBOb2RlKiBib2R5ID0gZG9jdW1lbnQtPmJvZHkoKTsKLSAgICAgICAg
aWYgKGJvZHkgJiYgYm9keS0+cmVuZGVyZXIoKSkgeworICAgICAgICBpZiAoYm9keSAmJiBib2R5
LT5oYXNSZW5kZXJlcigpKSB7CiAgICAgICAgICAgICBpZiAoYm9keS0+aGFzVGFnTmFtZShmcmFt
ZXNldFRhZykgJiYgbV9mcmFtZS0+c2V0dGluZ3MoKSAmJiAhbV9mcmFtZS0+c2V0dGluZ3MoKS0+
ZnJhbWVGbGF0dGVuaW5nRW5hYmxlZCgpKSB7CiAgICAgICAgICAgICAgICAgYm9keS0+cmVuZGVy
ZXIoKS0+c2V0Q2hpbGROZWVkc0xheW91dCh0cnVlKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAo
Ym9keS0+aGFzVGFnTmFtZShib2R5VGFnKSkgewpAQCAtMTk0Niw3ICsxOTQ2LDcgQEAgdm9pZCBG
cmFtZVZpZXc6OnNjcm9sbFRvQW5jaG9yKCkKICAgICBpZiAoIWFuY2hvck5vZGUpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmICghYW5jaG9yTm9kZS0+cmVuZGVyZXIoKSkKKyAgICBpZiAoIWFu
Y2hvck5vZGUtPmhhc1JlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEludFJlY3Qg
cmVjdDsKQEAgLTIyOTgsNyArMjI5OCw3IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxD
b3JuZXIoKQogICAgICAgICAvLyBUcnkgdGhlIDxib2R5PiBlbGVtZW50IGZpcnN0IGFzIGEgc2Ny
b2xsIGNvcm5lciBzb3VyY2UuCiAgICAgICAgIERvY3VtZW50KiBkb2MgPSBtX2ZyYW1lLT5kb2N1
bWVudCgpOwogICAgICAgICBFbGVtZW50KiBib2R5ID0gZG9jID8gZG9jLT5ib2R5KCkgOiAwOwot
ICAgICAgICBpZiAoYm9keSAmJiBib2R5LT5yZW5kZXJlcigpKSB7CisgICAgICAgIGlmIChib2R5
ICYmIGJvZHktPmhhc1JlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIHJlbmRlcmVyID0gYm9keS0+
cmVuZGVyZXIoKTsKICAgICAgICAgICAgIGNvcm5lclN0eWxlID0gcmVuZGVyZXItPmdldFVuY2Fj
aGVkUHNldWRvU3R5bGUoU0NST0xMQkFSX0NPUk5FUiwgcmVuZGVyZXItPnN0eWxlKCkpOwogICAg
ICAgICB9CkBAIC0yMzA2LDcgKzIzMDYsNyBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlU2Nyb2xs
Q29ybmVyKCkKICAgICAgICAgaWYgKCFjb3JuZXJTdHlsZSkgewogICAgICAgICAgICAgLy8gSWYg
dGhlIDxib2R5PiBkaWRuJ3QgaGF2ZSBhIGN1c3RvbSBzdHlsZSwgdGhlbiB0aGUgcm9vdCBlbGVt
ZW50IG1pZ2h0LgogICAgICAgICAgICAgRWxlbWVudCogZG9jRWxlbWVudCA9IGRvYyA/IGRvYy0+
ZG9jdW1lbnRFbGVtZW50KCkgOiAwOwotICAgICAgICAgICAgaWYgKGRvY0VsZW1lbnQgJiYgZG9j
RWxlbWVudC0+cmVuZGVyZXIoKSkgeworICAgICAgICAgICAgaWYgKGRvY0VsZW1lbnQgJiYgZG9j
RWxlbWVudC0+aGFzUmVuZGVyZXIoKSkgewogICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gZG9j
RWxlbWVudC0+cmVuZGVyZXIoKTsKICAgICAgICAgICAgICAgICBjb3JuZXJTdHlsZSA9IHJlbmRl
cmVyLT5nZXRVbmNhY2hlZFBzZXVkb1N0eWxlKFNDUk9MTEJBUl9DT1JORVIsIHJlbmRlcmVyLT5z
dHlsZSgpKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UHJpbnRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcApp
bmRleCA3YTg5NGJhMjgwMTI1ZjE0YWViMWYwOTM3YzhiN2Y3OGRiNmJkMDY2Li5hM2ZhNWU2NzY0
N2RmYjkxMjZlNTJmZGEyMGUwYWMzODhkNWZjYWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENv
bnRleHQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgUHJpbnRDb250ZXh0Ojpjb21wdXRlUGFn
ZVJlY3RzKGNvbnN0IEZsb2F0UmVjdCYgcHJpbnRSZWN0LCBmbG9hdCBoZWFkZXJIZWlnCiAgICAg
bV9wYWdlUmVjdHMuY2xlYXIoKTsKICAgICBvdXRQYWdlSGVpZ2h0ID0gMDsKIAotICAgIGlmICgh
bV9mcmFtZS0+ZG9jdW1lbnQoKSB8fCAhbV9mcmFtZS0+dmlldygpIHx8ICFtX2ZyYW1lLT5kb2N1
bWVudCgpLT5yZW5kZXJlcigpKQorICAgIGlmICghbV9mcmFtZS0+ZG9jdW1lbnQoKSB8fCAhbV9m
cmFtZS0+dmlldygpIHx8ICFtX2ZyYW1lLT5kb2N1bWVudCgpLT5oYXNSZW5kZXJlcigpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAodXNlclNjYWxlRmFjdG9yIDw9IDApIHsKQEAgLTkzLDcg
KzkzLDcgQEAgdm9pZCBQcmludENvbnRleHQ6OmNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUo
Y29uc3QgRmxvYXRTaXplJiBwYWdlU2l6ZUluUGl4ZWwKIAogdm9pZCBQcmludENvbnRleHQ6OmNv
bXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemVJbnRlcm5hbChjb25zdCBGbG9hdFNpemUmIHBhZ2VT
aXplSW5QaXhlbHMsIGJvb2wgYWxsb3dJbmxpbmVEaXJlY3Rpb25UaWxpbmcpCiB7Ci0gICAgaWYg
KCFtX2ZyYW1lLT5kb2N1bWVudCgpIHx8ICFtX2ZyYW1lLT52aWV3KCkgfHwgIW1fZnJhbWUtPmRv
Y3VtZW50KCktPnJlbmRlcmVyKCkpCisgICAgaWYgKCFtX2ZyYW1lLT5kb2N1bWVudCgpIHx8ICFt
X2ZyYW1lLT52aWV3KCkgfHwgIW1fZnJhbWUtPmRvY3VtZW50KCktPmhhc1JlbmRlcmVyKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIFJlbmRlclZpZXcqIHZpZXcgPSB0b1JlbmRlclZpZXcobV9m
cmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVyZXIoKSk7CkBAIC0zMTUsNyArMzE1LDcgQEAgaW50IFBy
aW50Q29udGV4dDo6bnVtYmVyT2ZQYWdlcyhGcmFtZSogZnJhbWUsIGNvbnN0IEZsb2F0U2l6ZSYg
cGFnZVNpemVJblBpeGVscykKIAogdm9pZCBQcmludENvbnRleHQ6OnNwb29sQWxsUGFnZXNXaXRo
Qm91bmRhcmllcyhGcmFtZSogZnJhbWUsIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0
LCBjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhlbHMpCiB7Ci0gICAgaWYgKCFmcmFtZS0+
ZG9jdW1lbnQoKSB8fCAhZnJhbWUtPnZpZXcoKSB8fCAhZnJhbWUtPmRvY3VtZW50KCktPnJlbmRl
cmVyKCkpCisgICAgaWYgKCFmcmFtZS0+ZG9jdW1lbnQoKSB8fCAhZnJhbWUtPnZpZXcoKSB8fCAh
ZnJhbWUtPmRvY3VtZW50KCktPmhhc1JlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
cGF0aWFsTmF2aWdhdGlvbi5jcHAKaW5kZXggZGQ1NjUyOThkYWRkYzQxMDQwODlkOTQ0YzdiODNi
YjEzMjRmYmQ0ZC4uN2ZkOGEzYzhmN2NjZjcyMTQ5NWUwMjE0MDllZmMwYmI0YzViODc4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKQEAgLTcyLDEzICs3Miwx
MyBAQCBGb2N1c0NhbmRpZGF0ZTo6Rm9jdXNDYW5kaWRhdGUoTm9kZSogbm9kZSwgRm9jdXNEaXJl
Y3Rpb24gZGlyZWN0aW9uKQogICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6YXJl
YVRhZykpIHsKICAgICAgICAgSFRNTEFyZWFFbGVtZW50KiBhcmVhID0gc3RhdGljX2Nhc3Q8SFRN
TEFyZWFFbGVtZW50Kj4obm9kZSk7CiAgICAgICAgIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlID0g
YXJlYS0+aW1hZ2VFbGVtZW50KCk7Ci0gICAgICAgIGlmICghaW1hZ2UgfHwgIWltYWdlLT5yZW5k
ZXJlcigpKQorICAgICAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+aGFzUmVuZGVyZXIoKSkKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB2aXNpYmxlTm9kZSA9IGltYWdlOwogICAgICAg
ICByZWN0ID0gdmlydHVhbFJlY3RGb3JBcmVhRWxlbWVudEFuZERpcmVjdGlvbihhcmVhLCBkaXJl
Y3Rpb24pOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghbm9kZS0+cmVuZGVyZXIoKSkKKyAg
ICAgICAgaWYgKCFub2RlLT5oYXNSZW5kZXJlcigpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIHZpc2libGVOb2RlID0gbm9kZTsKQEAgLTUxOCw3ICs1MTgsNyBAQCBzdGF0aWMgSW50
UmVjdCByZWN0VG9BYnNvbHV0ZUNvb3JkaW5hdGVzKEZyYW1lKiBpbml0aWFsRnJhbWUsIGNvbnN0
IEludFJlY3QmIGluaQogCiBJbnRSZWN0IG5vZGVSZWN0SW5BYnNvbHV0ZUNvb3JkaW5hdGVzKE5v
ZGUqIG5vZGUsIGJvb2wgaWdub3JlQm9yZGVyKQogewotICAgIEFTU0VSVChub2RlICYmIG5vZGUt
PnJlbmRlcmVyKCkgJiYgIW5vZGUtPmRvY3VtZW50KCktPnZpZXcoKS0+bmVlZHNMYXlvdXQoKSk7
CisgICAgQVNTRVJUKG5vZGUgJiYgbm9kZS0+aGFzUmVuZGVyZXIoKSAmJiAhbm9kZS0+ZG9jdW1l
bnQoKS0+dmlldygpLT5uZWVkc0xheW91dCgpKTsKIAogICAgIGlmIChub2RlLT5pc0RvY3VtZW50
Tm9kZSgpKQogICAgICAgICByZXR1cm4gZnJhbWVSZWN0SW5BYnNvbHV0ZUNvb3JkaW5hdGVzKHN0
YXRpY19jYXN0PERvY3VtZW50Kj4obm9kZSktPmZyYW1lKCkpOwpAQCAtNjAxLDcgKzYwMSw3IEBA
IGJvb2wgYXJlRWxlbWVudHNPblNhbWVMaW5lKGNvbnN0IEZvY3VzQ2FuZGlkYXRlJiBmaXJzdENh
bmRpZGF0ZSwgY29uc3QgRm9jdXNDYW5kCiAgICAgaWYgKGZpcnN0Q2FuZGlkYXRlLmlzTnVsbCgp
IHx8IHNlY29uZENhbmRpZGF0ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgaWYgKCFmaXJzdENhbmRpZGF0ZS52aXNpYmxlTm9kZS0+cmVuZGVyZXIoKSB8fCAhc2Vjb25k
Q2FuZGlkYXRlLnZpc2libGVOb2RlLT5yZW5kZXJlcigpKQorICAgIGlmICghZmlyc3RDYW5kaWRh
dGUudmlzaWJsZU5vZGUtPmhhc1JlbmRlcmVyKCkgfHwgIXNlY29uZENhbmRpZGF0ZS52aXNpYmxl
Tm9kZS0+aGFzUmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFm
aXJzdENhbmRpZGF0ZS5yZWN0LmludGVyc2VjdHMoc2Vjb25kQ2FuZGlkYXRlLnJlY3QpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5oCmluZGV4IDE4MDBm
MGY0ZmFmNGIyNjM5ZTYwNWY4ZWQxMDY2ZGVjZjhjMGZlMjguLmRkNzU5NTgzOTAyZjQzOTFhMmU5
MDRjNmUyNzdmOGFjNTI3NzRhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0FuaW1hdGlvbkJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9BbmltYXRpb25CYXNlLmgKQEAgLTUzLDYgKzUzLDcgQEAgcHVibGljOgogICAgIEFuaW1hdGlv
bkJhc2UoY29uc3QgQW5pbWF0aW9uKiB0cmFuc2l0aW9uLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
LCBDb21wb3NpdGVBbmltYXRpb24qIGNvbXBBbmltKTsKICAgICB2aXJ0dWFsIH5BbmltYXRpb25C
YXNlKCkgeyB9CiAKKyAgICBib29sIGhhc1JlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9vYmpl
Y3Q7IH0KICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9vYmpl
Y3Q7IH0KICAgICB2b2lkIGNsZWFyKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAKaW5kZXggMzQ2MDdmNmYwYjA4Yzc3
ZmUyYjYwYTNiNzgwNDVlZmM2YzYwZTM4Mi4uYTBiNzMyZGRjY2I5OGY3ZDJmMzE3MmNlYWFjMmJk
YmVlOWQ5MTYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1w
bGljaXRBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0lt
cGxpY2l0QW5pbWF0aW9uLmNwcApAQCAtMTg4LDcgKzE4OCw3IEBAIGJvb2wgSW1wbGljaXRBbmlt
YXRpb246OnNlbmRUcmFuc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IGRvdWJsCiAgICAgICAgICAgICBtX2NvbXBBbmltLT5hbmltYXRpb25Db250cm9sbGVyKCktPmFk
ZEV2ZW50VG9EaXNwYXRjaChlbGVtZW50LCBldmVudFR5cGUsIHByb3BlcnR5TmFtZSwgZWxhcHNl
ZFRpbWUpOwogCiAgICAgICAgICAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCAodW5hbmltYXRl
ZCkgc3R5bGUKLSAgICAgICAgICAgIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLndlYmtp
dFRyYW5zaXRpb25FbmRFdmVudCAmJiBlbGVtZW50LT5yZW5kZXJlcigpKQorICAgICAgICAgICAg
aWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkud2Via2l0VHJhbnNpdGlvbkVuZEV2ZW50ICYm
IGVsZW1lbnQtPmhhc1JlbmRlcmVyKCkpCiAgICAgICAgICAgICAgICAgc2V0TmVlZHNTdHlsZVJl
Y2FsYyhlbGVtZW50LmdldCgpKTsKIAogICAgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIERpZCBk
aXNwYXRjaCBhbiBldmVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vS2V5ZnJhbWVBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
S2V5ZnJhbWVBbmltYXRpb24uY3BwCmluZGV4IDVmMTlmZTQ2ZjRhZjBmYjQwOWZjYjlmM2FkNDYx
ZjE4M2FiOTUwOWIuLjA4OTNmZmFkMjBhM2Q3MTFhZmI5YTE0NWVkZWZjYTUzZGMzYTI2YWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlv
bi5jcHAKQEAgLTM0OCw3ICszNDgsNyBAQCBib29sIEtleWZyYW1lQW5pbWF0aW9uOjpzZW5kQW5p
bWF0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGRvdWJsZQogICAgICAg
ICBtX2NvbXBBbmltLT5hbmltYXRpb25Db250cm9sbGVyKCktPmFkZEV2ZW50VG9EaXNwYXRjaChl
bGVtZW50LCBldmVudFR5cGUsIG1fa2V5ZnJhbWVzLmFuaW1hdGlvbk5hbWUoKSwgZWxhcHNlZFRp
bWUpOwogCiAgICAgICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsICh1bmFuaW1hdGVkKSBzdHls
ZQotICAgICAgICBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS53ZWJraXRBbmltYXRpb25F
bmRFdmVudCAmJiBlbGVtZW50LT5yZW5kZXJlcigpKQorICAgICAgICBpZiAoZXZlbnRUeXBlID09
IGV2ZW50TmFtZXMoKS53ZWJraXRBbmltYXRpb25FbmRFdmVudCAmJiBlbGVtZW50LT5oYXNSZW5k
ZXJlcigpKQogICAgICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYyhlbGVtZW50LmdldCgpKTsK
IAogICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gRGlkIGRpc3BhdGNoIGFuIGV2ZW50CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvbWFjL0ZyYW1lTWFjLm1tCmluZGV4IGI0OWZmZmI2NDJkOWQyM2VhNGI5OWM4YjQ3NDZm
MjM4NjY2MDdlOTcuLjQyMWY0ZTkzZWZiYmI3NGU0ZGMxM2M5OGY3YTE5MmVmZGRiOTNiMzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lTWFjLm1tCkBAIC0xNzUsNyArMTc1LDcgQEAgTlNTdHJp
bmcqIEZyYW1lOjpzZWFyY2hGb3JMYWJlbHNCZWZvcmVFbGVtZW50KE5TQXJyYXkqIGxhYmVscywg
RWxlbWVudCogZWxlbWVudCwKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgc2VhcmNoZWRDZWxsQWJvdmUgPSB0cnVlOwotICAgICAgICB9
IGVsc2UgaWYgKG4tPmlzVGV4dE5vZGUoKSAmJiBuLT5yZW5kZXJlcigpICYmIG4tPnJlbmRlcmVy
KCktPnN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKSB7CisgICAgICAgIH0gZWxzZSBp
ZiAobi0+aXNUZXh0Tm9kZSgpICYmIG4tPmhhc1JlbmRlcmVyKCkgJiYgbi0+cmVuZGVyZXIoKS0+
c3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpIHsKICAgICAgICAgICAgIC8vIEZvciBl
YWNoIHRleHQgY2h1bmssIHJ1biB0aGUgcmVnZXhwCiAgICAgICAgICAgICBTdHJpbmcgbm9kZVN0
cmluZyA9IG4tPm5vZGVWYWx1ZSgpOwogICAgICAgICAgICAgLy8gYWRkIDEwMCBmb3Igc2xvcCwg
dG8gbWFrZSBpdCBtb3JlIGxpa2VseSB0aGF0IHdlJ2xsIHNlYXJjaCB3aG9sZSBub2RlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCA1Y2FjNDE5
OWQxZDljZGJiMTdiZGRiMDU0NDk0N2VjYTViYmRkMGRhLi5hNTIzY2ExMGJjYzBmOGM1YmU3ZTRm
ZGY3ZmQ3NGU5MjYwMmRmYzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZE1hYy5tbQpAQCAtMjkyLDcgKzI5Miw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJ
bWFnZShOb2RlKiBub2RlLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7
CiAgICAgQVNTRVJUKG5vZGUpOwogCi0gICAgaWYgKCEobm9kZS0+cmVuZGVyZXIoKSAmJiBub2Rl
LT5yZW5kZXJlcigpLT5pc0ltYWdlKCkpKQorICAgIGlmICghKG5vZGUtPmhhc1JlbmRlcmVyKCkg
JiYgbm9kZS0+cmVuZGVyZXIoKS0+aXNJbWFnZSgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
RnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCA2MzMwOTQzYTc0MGJkZjM4MTMwYjgz
MTIzOWI4Njc5NmYxMjg0MmM2Li5lYWU1N2YyY2VmNGM4ZWFmZTAyZDkzYzFkZmIyYjY3YTgzNTAw
MTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBAIC0y
ODgsNyArMjg4LDcgQEAgS1VSTCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZUltYWdlVVJMKCkgY29u
c3QKICAgICBpZiAoIShtX2lubmVyTm9uU2hhcmVkTm9kZSAmJiBtX2lubmVyTm9uU2hhcmVkTm9k
ZS0+ZG9jdW1lbnQoKSkpCiAgICAgICAgIHJldHVybiBLVVJMKCk7CiAKLSAgICBpZiAoIShtX2lu
bmVyTm9uU2hhcmVkTm9kZS0+cmVuZGVyZXIoKSAmJiBtX2lubmVyTm9uU2hhcmVkTm9kZS0+cmVu
ZGVyZXIoKS0+aXNJbWFnZSgpKSkKKyAgICBpZiAoIShtX2lubmVyTm9uU2hhcmVkTm9kZS0+aGFz
UmVuZGVyZXIoKSAmJiBtX2lubmVyTm9uU2hhcmVkTm9kZS0+cmVuZGVyZXIoKS0+aXNJbWFnZSgp
KSkKICAgICAgICAgcmV0dXJuIEtVUkwoKTsKIAogICAgIEF0b21pY1N0cmluZyB1cmxTdHJpbmc7
CkBAIC0zMzUsNyArMzM1LDcgQEAgSFRNTE1lZGlhRWxlbWVudCogSGl0VGVzdFJlc3VsdDo6bWVk
aWFFbGVtZW50KCkgY29uc3QKICAgICBpZiAoIShtX2lubmVyTm9uU2hhcmVkTm9kZSAmJiBtX2lu
bmVyTm9uU2hhcmVkTm9kZS0+ZG9jdW1lbnQoKSkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
aWYgKCEobV9pbm5lck5vblNoYXJlZE5vZGUtPnJlbmRlcmVyKCkgJiYgbV9pbm5lck5vblNoYXJl
ZE5vZGUtPnJlbmRlcmVyKCktPmlzTWVkaWEoKSkpCisgICAgaWYgKCEobV9pbm5lck5vblNoYXJl
ZE5vZGUtPmhhc1JlbmRlcmVyKCkgJiYgbV9pbm5lck5vblNoYXJlZE5vZGUtPnJlbmRlcmVyKCkt
PmlzTWVkaWEoKSkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKG1faW5uZXJOb25TaGFy
ZWROb2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dmlkZW9UYWcpIHx8IG1faW5uZXJOb25TaGFy
ZWROb2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6YXVkaW9UYWcpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lQm94LmNwcAppbmRleCBiNDk1MTQ4OTAyYTIyZjlkZTgwZTkyNjM5M2JiZjBi
MzM3OWE5MmVlLi5jYzJkOThkMDE3ZmQ5NTRmNWJhNmE1OWM1MmYxOWUyY2NiYjJmNmY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHZv
aWQgSW5saW5lQm94OjpzaG93Qm94KGludCBwcmludGVkQ2hhcmFjdGVycykgY29uc3QKICAgICBw
cmludGVkQ2hhcmFjdGVycyArPSBmcHJpbnRmKHN0ZGVyciwgIiVzXHQlcCIsIGJveE5hbWUoKSwg
dGhpcyk7CiAgICAgZm9yICg7IHByaW50ZWRDaGFyYWN0ZXJzIDwgc2hvd1RyZWVDaGFyYWN0ZXJP
ZmZzZXQ7IHByaW50ZWRDaGFyYWN0ZXJzKyspCiAgICAgICAgIGZwdXRjKCcgJywgc3RkZXJyKTsK
LSAgICBmcHJpbnRmKHN0ZGVyciwgIlx0JXMgJXBcbiIsIHJlbmRlcmVyKCkgPyByZW5kZXJlcigp
LT5yZW5kZXJOYW1lKCkgOiAiTm8gUmVuZGVyZXIiLCByZW5kZXJlcigpKTsKKyAgICBmcHJpbnRm
KHN0ZGVyciwgIlx0JXMgJXBcbiIsIGhhc1JlbmRlcmVyKCkgPyByZW5kZXJlcigpLT5yZW5kZXJO
YW1lKCkgOiAiTm8gUmVuZGVyZXIiLCByZW5kZXJlcigpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lQm94LmgKaW5kZXggODk0OGNkZjE1ZWQwY2MwOGUzOTkxYWNkYmZj
NWU1MmY5NDNkNzc3Ny4uY2Y5NzJiZWJiZjQwMDZiNGYzM2NiZWY5YmQxNzJlNmUxNDY1NmJiNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guaApAQCAtMjA5LDcgKzIwOSw4IEBAIHB1
YmxpYzoKICAgICAKICAgICBJbmxpbmVCb3gqIG5leHRMZWFmQ2hpbGQoKSBjb25zdDsKICAgICBJ
bmxpbmVCb3gqIHByZXZMZWFmQ2hpbGQoKSBjb25zdDsKLSAgICAgICAgCisKKyAgICBib29sIGhh
c1JlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJlcjsgfQogICAgIFJlbmRlck9iamVj
dCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVyOyB9CiAKICAgICBJbmxpbmVG
bG93Qm94KiBwYXJlbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0SXRlbS5jcHAKaW5kZXggNTg0YjVjYmFlYmQ3NzBmOTQ3ZmFlM2NhYzQ2MzFjY2NmMDlhNTUw
Yi4uMjY1Y2E0OTg3ZWE5OTljODViMWVjOTE1NzkyY2RhMDQzYWRjOTZmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCkBAIC00MjgsOCArNDI4LDggQEAg
dm9pZCBSZW5kZXJMaXN0SXRlbTo6Y2xlYXJFeHBsaWNpdFZhbHVlKCkKIHZvaWQgUmVuZGVyTGlz
dEl0ZW06OnVwZGF0ZUxpc3RNYXJrZXJOdW1iZXJzKCkKIHsKICAgICBOb2RlKiBsaXN0Tm9kZSA9
IGVuY2xvc2luZ0xpc3QodGhpcyk7Ci0gICAgQVNTRVJUKGxpc3ROb2RlICYmIGxpc3ROb2RlLT5y
ZW5kZXJlcigpKTsKLSAgICBpZiAoIWxpc3ROb2RlIHx8ICFsaXN0Tm9kZS0+cmVuZGVyZXIoKSkK
KyAgICBBU1NFUlQobGlzdE5vZGUgJiYgbGlzdE5vZGUtPmhhc1JlbmRlcmVyKCkpOworICAgIGlm
ICghbGlzdE5vZGUgfHwgIWxpc3ROb2RlLT5oYXNSZW5kZXJlcigpKQogICAgICAgICByZXR1cm47
CiAKICAgICBSZW5kZXJPYmplY3QqIGxpc3QgPSBsaXN0Tm9kZS0+cmVuZGVyZXIoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCAzZGVmMTMyYjdlYjQyNWZlMTcw
NjA3MGJjMzZmMzRmYzNmMWQwMWNmLi4wMWUzNDcwMTczYWUzZjgwZjdhYTBiZTA0YjhhODM4ZmQ2
NDc2ODYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC05MDcs
NyArOTA3LDcgQEAgcHJpdmF0ZToKIAogaW5saW5lIGJvb2wgUmVuZGVyT2JqZWN0Ojpkb2N1bWVu
dEJlaW5nRGVzdHJveWVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIWRvY3VtZW50KCktPnJlbmRl
cmVyKCk7CisgICAgcmV0dXJuICFkb2N1bWVudCgpLT5oYXNSZW5kZXJlcigpOwogfQogCiBpbmxp
bmUgYm9vbCBSZW5kZXJPYmplY3Q6OmlzQmVmb3JlQ29udGVudCgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAppbmRleCAyYWEzZTYxODM4
MDg3ZDI5NTViM2ZjYWE3NzNmZmJkM2I1NGI0NTBlLi5iMTNjOTE4ZWQwNzI4ZDdhZDc2Yzg1ZjIx
MzUzYWMwZDM2YTM3ZjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbC5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCB2b2lkIHNldFNlbGVjdGlvblJhbmdl
KE5vZGUqIG5vZGUsIGludCBzdGFydCwgaW50IGVuZCkKICAgICBBU1NFUlQobm9kZSk7CiAgICAg
bm9kZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7
CiAKLSAgICBpZiAoIW5vZGUtPnJlbmRlcmVyKCkgfHwgIW5vZGUtPnJlbmRlcmVyKCktPmlzVGV4
dENvbnRyb2woKSkKKyAgICBpZiAoIW5vZGUtPmhhc1JlbmRlcmVyKCkgfHwgIW5vZGUtPnJlbmRl
cmVyKCktPmlzVGV4dENvbnRyb2woKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZW5kID0gbWF4
KGVuZCwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCmluZGV4IGEyOWUzYThmNzBhMTkxZmVjYWU4MzE5YTJi
NzBiMWU1NTcwMjE0ZTcuLmVkYmVkYmEwNzVjYmE2OTA2OWJmMTRjNTg2YWYwMjUwZThkYWJmOWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmUuY3BwCkBAIC0zNjgsNyArMzY4LDcgQEAgYm9vbCBSZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmU6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0
LCBIaXQKICAgICBsb2NhbFBvaW50Lm1vdmUoLWlubmVyQmxvY2tSZW5kZXJlci0+bG9jYXRpb24o
KSk7CiAKICAgICBpbnQgdGV4dExlZnQgPSBhY2N1bXVsYXRlZE9mZnNldC54KCkgKyB4KCkgKyBp
bm5lckJsb2NrUmVuZGVyZXItPngoKSArIGlubmVyVGV4dFJlbmRlcmVyLT54KCk7Ci0gICAgaWYg
KHJlc3VsdHNCdXR0b24gJiYgcmVzdWx0c0J1dHRvbi0+cmVuZGVyZXIoKSAmJiBwb2ludEluQ29u
dGFpbmVyLngoKSA8IHRleHRMZWZ0KQorICAgIGlmIChyZXN1bHRzQnV0dG9uICYmIHJlc3VsdHNC
dXR0b24tPmhhc1JlbmRlcmVyKCkgJiYgcG9pbnRJbkNvbnRhaW5lci54KCkgPCB0ZXh0TGVmdCkK
ICAgICAgICAgaW5uZXJOb2RlID0gcmVzdWx0c0J1dHRvbjsKIAogI2lmIEVOQUJMRShJTlBVVF9T
UEVFQ0gpCkBAIC0zODEsNyArMzgxLDcgQEAgYm9vbCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmU6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXQKIAogICAg
IGlmICghaW5uZXJOb2RlKSB7CiAgICAgICAgIGludCB0ZXh0UmlnaHQgPSB0ZXh0TGVmdCArIGlu
bmVyVGV4dFJlbmRlcmVyLT53aWR0aCgpOwotICAgICAgICBpZiAoY2FuY2VsQnV0dG9uICYmIGNh
bmNlbEJ1dHRvbi0+cmVuZGVyZXIoKSAmJiBwb2ludEluQ29udGFpbmVyLngoKSA+IHRleHRSaWdo
dCkKKyAgICAgICAgaWYgKGNhbmNlbEJ1dHRvbiAmJiBjYW5jZWxCdXR0b24tPmhhc1JlbmRlcmVy
KCkgJiYgcG9pbnRJbkNvbnRhaW5lci54KCkgPiB0ZXh0UmlnaHQpCiAgICAgICAgICAgICBpbm5l
ck5vZGUgPSBjYW5jZWxCdXR0b247CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwCmluZGV4IDkxODE0ODdmZWNmYjNlYmM5NjZlOGQ5
YmMwYWU1ZmQ5OWVhMGZiMmMuLjgyMzc5OTQ4MWRiMzM3ZWVmM2MxNjJiNDI2NjUxMjMxYWEyZWQ1
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQu
Y3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgUmVuZGVyVGV4dEZyYWdtZW50OjpzZXRUZXh0SW50
ZXJuYWwoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB0ZXh0KQogICAgICAgICBtX3N0YXJ0ID0gMDsK
ICAgICAgICAgbV9lbmQgPSB0ZXh0TGVuZ3RoKCk7CiAgICAgICAgIGlmIChOb2RlKiB0ID0gbm9k
ZSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoIXQtPnJlbmRlcmVyKCkpOworICAgICAgICAgICAg
QVNTRVJUKCF0LT5oYXNSZW5kZXJlcigpKTsKICAgICAgICAgICAgIHQtPnNldFJlbmRlcmVyKHRo
aXMpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCmluZGV4IGIzMzdmMGZlM2I5
ODc5ZTcyODI5MTIzYjg2MTM0YjMxY2JiZWE2MTEuLmIyYjAxZGYwN2MwY2Q3ZmZiMWQzZjA1NTQ5
ZTNkZTZlNGIyMTM5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKQEAgLTI3OSw3ICsyNzksNyBAQCBQ
YXNzT3duUHRyPEltYWdlQnVmZmVyPiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmNyZWF0ZVRp
bGVJbWFnZShSZW5kZXJPYmplY3QqCiAKICAgICAvLyBEcmF3IHRoZSBjb250ZW50IGludG8gdGhl
IEltYWdlQnVmZmVyLgogICAgIGZvciAoTm9kZSogbm9kZSA9IGF0dHJpYnV0ZXMucGF0dGVybkNv
bnRlbnRFbGVtZW50KCktPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJs
aW5nKCkpIHsKLSAgICAgICAgaWYgKCFub2RlLT5pc1NWR0VsZW1lbnQoKSB8fCAhc3RhdGljX2Nh
c3Q8U1ZHRWxlbWVudCo+KG5vZGUpLT5pc1N0eWxlZCgpIHx8ICFub2RlLT5yZW5kZXJlcigpKQor
ICAgICAgICBpZiAoIW5vZGUtPmlzU1ZHRWxlbWVudCgpIHx8ICFzdGF0aWNfY2FzdDxTVkdFbGVt
ZW50Kj4obm9kZSktPmlzU3R5bGVkKCkgfHwgIW5vZGUtPmhhc1JlbmRlcmVyKCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgU1ZHSW1hZ2VCdWZmZXJUb29sczo6cmVuZGVyU3VidHJl
ZVRvSW1hZ2VCdWZmZXIodGlsZUltYWdlLmdldCgpLCBub2RlLT5yZW5kZXJlcigpLCBjb250ZW50
VHJhbnNmb3JtYXRpb24pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUm9vdElubGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4IDI3MGMwMmE4MWViNTMwZDM4ODllZDA2YTY0
NmQzYWU2MTI3YzRjYzIuLjhjNjk3ODlhY2I4M2ZkNzk2ZDM1NTRjM2FmMzI4ZWRjYjg3YzI5Nzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUm9vdElubGluZUJv
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94
LmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIFNWR1Jvb3RJbmxpbmVCb3g6OmxheW91dENoYXJh
Y3RlcnNJblRleHRCb3hlcyhJbmxpbmVGbG93Qm94KiBzdGFydCwgU1ZHVGV4dAogewogICAgIGZv
ciAoSW5saW5lQm94KiBjaGlsZCA9IHN0YXJ0LT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9
IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5pc1NWR0lubGluZVRl
eHRCb3goKSkgewotICAgICAgICAgICAgQVNTRVJUKGNoaWxkLT5yZW5kZXJlcigpKTsKKyAgICAg
ICAgICAgIEFTU0VSVChjaGlsZC0+aGFzUmVuZGVyZXIoKSk7CiAgICAgICAgICAgICBBU1NFUlQo
Y2hpbGQtPnJlbmRlcmVyKCktPmlzU1ZHSW5saW5lVGV4dCgpKTsKIAogICAgICAgICAgICAgU1ZH
SW5saW5lVGV4dEJveCogdGV4dEJveCA9IHN0YXRpY19jYXN0PFNWR0lubGluZVRleHRCb3gqPihj
aGlsZCk7CkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBTVkdSb290SW5saW5lQm94OjpsYXlvdXRD
aGlsZEJveGVzKElubGluZUZsb3dCb3gqIHN0YXJ0LCBJbnRSZWN0KiBjaGlsZFJlY3QKICAgICBm
b3IgKElubGluZUJveCogY2hpbGQgPSBzdGFydC0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQg
PSBjaGlsZC0+bmV4dE9uTGluZSgpKSB7CiAgICAgICAgIEludFJlY3QgYm94UmVjdDsKICAgICAg
ICAgaWYgKGNoaWxkLT5pc1NWR0lubGluZVRleHRCb3goKSkgewotICAgICAgICAgICAgQVNTRVJU
KGNoaWxkLT5yZW5kZXJlcigpKTsKKyAgICAgICAgICAgIEFTU0VSVChjaGlsZC0+aGFzUmVuZGVy
ZXIoKSk7CiAgICAgICAgICAgICBBU1NFUlQoY2hpbGQtPnJlbmRlcmVyKCktPmlzU1ZHSW5saW5l
VGV4dCgpKTsKIAogICAgICAgICAgICAgU1ZHSW5saW5lVGV4dEJveCogdGV4dEJveCA9IHN0YXRp
Y19jYXN0PFNWR0lubGluZVRleHRCb3gqPihjaGlsZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50
LmNwcAppbmRleCA3Y2MyYjlmZmIwM2ExZmRkMjNhYjk0MGYwZDk4NGMyM2I5MGMxMDY3Li4zZDI1
MDk4ZmMzNDM2ZDdlMWZkNTVlZTcyZGVjNTY0YzY1ZjJlMGE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
RWxlbWVudC5jcHAKQEAgLTI0Niw3ICsyNDYsNyBAQCBib29sIFNWR0FFbGVtZW50OjpzdXBwb3J0
c0ZvY3VzKCkgY29uc3QKIAogYm9vbCBTVkdBRWxlbWVudDo6aXNGb2N1c2FibGUoKSBjb25zdAog
ewotICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmFic29sdXRlQ2xpcHBlZE92ZXJm
bG93UmVjdCgpLmlzRW1wdHkoKSkKKyAgICBpZiAoaGFzUmVuZGVyZXIoKSAmJiByZW5kZXJlcigp
LT5hYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAKICAgICByZXR1cm4gU1ZHRWxlbWVudDo6aXNGb2N1c2FibGUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRG9jdW1lbnQuY3BwCmluZGV4IDliMjAwYjdjOGYwZmMzNjU5NWJhZjgxMWE3
MDEwNjcwNjM0MTc2MTAuLmVlOWIwM2FjMjNlZmU4NzJlODI4ZGZlZjkwNjU2MmRhNTA1ZjA4YTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNwcApAQCAtOTAsNyArOTAsNyBAQCB2b2lkIFNW
R0RvY3VtZW50Ojp1cGRhdGVQYW4oY29uc3QgRmxvYXRQb2ludCYgcG9zKSBjb25zdAogewogICAg
IGlmIChyb290RWxlbWVudCgpKSB7CiAgICAgICAgIHJvb3RFbGVtZW50KCktPnNldEN1cnJlbnRU
cmFuc2xhdGUoRmxvYXRQb2ludChwb3MueCgpIC0gbV90cmFuc2xhdGUueCgpLCBtX3RyYW5zbGF0
ZS55KCkgLSBwb3MueSgpKSk7Ci0gICAgICAgIGlmIChyZW5kZXJlcigpKQorICAgICAgICBpZiAo
aGFzUmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJlbmRlcmVyKCktPnJlcGFpbnQoKTsKICAgICB9
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAppbmRleCAzOWRiYmRi
ZWMxOGRmNzM1N2EzM2ZhYjM2YzUyODcwYTcxNjM2NGMwLi5mOGIwMWE0NDEzODA4YWQwZTM3NTI0
NWQzMTU3NjNiMDM4ZWQ2ZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJ
bWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVu
dC5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6cmVxdWVzdElt
YWdlUmVzb3VyY2UoKQogICAgIH0KIAogICAgIEVsZW1lbnQqIGhyZWZFbGVtZW50ID0gdHJlZVNj
b3BlKCktPmdldEVsZW1lbnRCeUlkKFNWR1VSSVJlZmVyZW5jZTo6Z2V0VGFyZ2V0KGhyZWYoKSkp
OwotICAgIGlmIChocmVmRWxlbWVudCAmJiBocmVmRWxlbWVudC0+aXNTVkdFbGVtZW50KCkgJiYg
aHJlZkVsZW1lbnQtPnJlbmRlcmVyKCkpCisgICAgaWYgKGhyZWZFbGVtZW50ICYmIGhyZWZFbGVt
ZW50LT5pc1NWR0VsZW1lbnQoKSAmJiBocmVmRWxlbWVudC0+aGFzUmVuZGVyZXIoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qob3duZXJEb2N1bWVudCgp
LT5jb21wbGV0ZVVSTChocmVmKCkpKTsKQEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lkIFNWR0ZFSW1h
Z2VFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopCiAgICAgRWxlbWVudCog
cGFyZW50ID0gcGFyZW50RWxlbWVudCgpOwogICAgIEFTU0VSVChwYXJlbnQpOwogCi0gICAgaWYg
KCFwYXJlbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZpbHRlclRhZykgfHwgIXBhcmVudC0+cmVu
ZGVyZXIoKSkKKyAgICBpZiAoIXBhcmVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6ZmlsdGVyVGFn
KSB8fCAhcGFyZW50LT5oYXNSZW5kZXJlcigpKQogICAgICAgICByZXR1cm47CiAKICAgICBSZW5k
ZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9u
KHBhcmVudC0+cmVuZGVyZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TGVuZ3RoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguY3BwCmluZGV4IDMzYzEz
YTA0YzkyMDk3N2NmNzkyNmE3YTViNDgzYzM3NTU1ZjkwNzguLjlhYjY2ZjQ4YzhlZWVjODVhNmVm
MGI3ODMwMDkwZGM5ODliNGEyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdM
ZW5ndGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguY3BwCkBAIC00MjQs
NyArNDI0LDcgQEAgZmxvYXQgU1ZHTGVuZ3RoOjpjb252ZXJ0VmFsdWVGcm9tUGVyY2VudGFnZVRv
VXNlclVuaXRzKGZsb2F0IHZhbHVlLCBjb25zdCBTVkdFbGUKIAogZmxvYXQgU1ZHTGVuZ3RoOjpj
b252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzVG9FTVMoZmxvYXQgdmFsdWUsIGNvbnN0IFNWR0VsZW1l
bnQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewotICAgIGlmICghY29udGV4
dCB8fCAhY29udGV4dC0+cmVuZGVyZXIoKSB8fCAhY29udGV4dC0+cmVuZGVyZXIoKS0+c3R5bGUo
KSkgeworICAgIGlmICghY29udGV4dCB8fCAhY29udGV4dC0+aGFzUmVuZGVyZXIoKSB8fCAhY29u
dGV4dC0+cmVuZGVyZXIoKS0+c3R5bGUoKSkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURf
RVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC00NDEsNyArNDQxLDcgQEAgZmxvYXQg
U1ZHTGVuZ3RoOjpjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzVG9FTVMoZmxvYXQgdmFsdWUsIGNv
bnN0IFNWR0VsZW1lbnQqIGMKIAogZmxvYXQgU1ZHTGVuZ3RoOjpjb252ZXJ0VmFsdWVGcm9tRU1T
VG9Vc2VyVW5pdHMoZmxvYXQgdmFsdWUsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKSBjb25zdAogewotICAgIGlmICghY29udGV4dCB8fCAhY29udGV4dC0+cmVu
ZGVyZXIoKSB8fCAhY29udGV4dC0+cmVuZGVyZXIoKS0+c3R5bGUoKSkgeworICAgIGlmICghY29u
dGV4dCB8fCAhY29udGV4dC0+aGFzUmVuZGVyZXIoKSB8fCAhY29udGV4dC0+cmVuZGVyZXIoKS0+
c3R5bGUoKSkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1
cm4gMDsKICAgICB9CkBAIC00NTIsNyArNDUyLDcgQEAgZmxvYXQgU1ZHTGVuZ3RoOjpjb252ZXJ0
VmFsdWVGcm9tRU1TVG9Vc2VyVW5pdHMoZmxvYXQgdmFsdWUsIGNvbnN0IFNWR0VsZW1lbnQqIGMK
IAogZmxvYXQgU1ZHTGVuZ3RoOjpjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzVG9FWFMoZmxvYXQg
dmFsdWUsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25z
dAogewotICAgIGlmICghY29udGV4dCB8fCAhY29udGV4dC0+cmVuZGVyZXIoKSB8fCAhY29udGV4
dC0+cmVuZGVyZXIoKS0+c3R5bGUoKSkgeworICAgIGlmICghY29udGV4dCB8fCAhY29udGV4dC0+
aGFzUmVuZGVyZXIoKSB8fCAhY29udGV4dC0+cmVuZGVyZXIoKS0+c3R5bGUoKSkgewogICAgICAg
ICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC00
NzIsNyArNDcyLDcgQEAgZmxvYXQgU1ZHTGVuZ3RoOjpjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRz
VG9FWFMoZmxvYXQgdmFsdWUsIGNvbnN0IFNWR0VsZW1lbnQqIGMKIAogZmxvYXQgU1ZHTGVuZ3Ro
Ojpjb252ZXJ0VmFsdWVGcm9tRVhTVG9Vc2VyVW5pdHMoZmxvYXQgdmFsdWUsIGNvbnN0IFNWR0Vs
ZW1lbnQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewotICAgIGlmICghY29u
dGV4dCB8fCAhY29udGV4dC0+cmVuZGVyZXIoKSB8fCAhY29udGV4dC0+cmVuZGVyZXIoKS0+c3R5
bGUoKSkgeworICAgIGlmICghY29udGV4dCB8fCAhY29udGV4dC0+aGFzUmVuZGVyZXIoKSB8fCAh
Y29udGV4dC0+cmVuZGVyZXIoKS0+c3R5bGUoKSkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JU
RURfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTG9jYXRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMb2NhdGFi
bGUuY3BwCmluZGV4IDJhN2M5YmUwOWZkNjg1OGI3ZjAzYTZmMDc3ZThlMjQ2OGQzNWZkMzMuLmFk
MDE5ODg4NWQ3MTk4Y2U0MzRmYmMwMGY4ZTY0OGM1MTk4YWNkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdMb2NhdGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdMb2NhdGFibGUuY3BwCkBAIC03MSw3ICs3MSw3IEBAIEZsb2F0UmVjdCBTVkdMb2NhdGFibGU6
OmdldEJCb3goY29uc3QgU1ZHRWxlbWVudCogZWxlbWVudCwgU3R5bGVVcGRhdGVTdHJhdGVneSBz
CiAgICAgICAgIGVsZW1lbnQtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdT
dHlsZXNoZWV0cygpOwogCiAgICAgLy8gRklYTUU6IEV2ZW50dWFsbHkgd2Ugc2hvdWxkIHN1cHBv
cnQgZ2V0QkJveCBmb3IgZGV0YWNoZWQgZWxlbWVudHMuCi0gICAgaWYgKCFlbGVtZW50LT5yZW5k
ZXJlcigpKQorICAgIGlmICghZWxlbWVudC0+aGFzUmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJu
IEZsb2F0UmVjdCgpOwogCiAgICAgcmV0dXJuIGVsZW1lbnQtPnJlbmRlcmVyKCktPm9iamVjdEJv
dW5kaW5nQm94KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKaW5kZXggMDYwZDE5
NDZmODE3NWE5MjY1YWJiMGVjZWY0YWY1M2VkODZmNTEzOS4uYjM5NTQ3NGU0ODhhZGEzMWJlNmVj
YjNjMDEyYWEyZGMxZjA2OTJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NW
R0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcApA
QCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgfHwgU1ZHTGFuZ1NwYWNl
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKQogICAgICAgICB8fCBTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKQogICAgICAgICB8fCBTVkda
b29tQW5kUGFuOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBpZiAocmVu
ZGVyZXIoKSkKKyAgICAgICAgaWYgKGhhc1JlbmRlcmVyKCkpCiAgICAgICAgICAgICBSZW5kZXJT
VkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKHJl
bmRlcmVyKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9w
RWxlbWVudC5jcHAKaW5kZXggMWNhNTJhMjI2MDVjMDVmNzI1MzEyN2EwYThmNjJjY2UxZWQyNmJh
NS4uMTQ4NmI1NDJkMGYwNWNkYzAxNzQwOTZiMmY0OWI2MjA2ODgwYzU3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgU1ZHU3RvcEVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUp
CiAKICAgICBTVkdFbGVtZW50SW5zdGFuY2U6OkludmFsaWRhdGlvbkd1YXJkIGludmFsaWRhdGlv
bkd1YXJkKHRoaXMpOwogCi0gICAgaWYgKCFyZW5kZXJlcigpKQorICAgIGlmICghaGFzUmVuZGVy
ZXIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpv
ZmZzZXRBdHRyKSB7CkBAIC0xMzcsNyArMTM3LDcgQEAgUmVuZGVyT2JqZWN0KiBTVkdTdG9wRWxl
bWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiAK
IENvbG9yIFNWR1N0b3BFbGVtZW50OjpzdG9wQ29sb3JJbmNsdWRpbmdPcGFjaXR5KCkgY29uc3QK
IHsKLSAgICBBU1NFUlQocmVuZGVyZXIoKSk7CisgICAgQVNTRVJUKGhhc1JlbmRlcmVyKCkpOwog
ICAgIEFTU0VSVChyZW5kZXJlcigpLT5zdHlsZSgpKTsKIAogICAgIGNvbnN0IFNWR1JlbmRlclN0
eWxlKiBzdmdTdHlsZSA9IHJlbmRlcmVyKCktPnN0eWxlKCktPnN2Z1N0eWxlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAppbmRleCAxZDJlZjI3MDk3ZGM5MTJhMDQ5ZDZkMjc5
ZWYwZTQ5ZDVlNzU3NTRmLi44NzQxNWJlMTU0MjgyMTc1YTM3ZmNkYWU4OTI2OGRiMzhiZjhmNmU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAg
dm9pZCBTVkdUUmVmRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKIAogICAgIFNWR0VsZW1lbnRJbnN0YW5jZTo6SW52YWxpZGF0aW9uR3Vh
cmQgaW52YWxpZGF0aW9uR3VhcmQodGhpcyk7CiAKLSAgICBpZiAoIXJlbmRlcmVyKCkpCisgICAg
aWYgKCFoYXNSZW5kZXJlcigpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoU1ZHVVJJUmVm
ZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Vz
ZUVsZW1lbnQuY3BwCmluZGV4IDU4Y2Q3MWRkMGJmNmEwOTMzNmRjYzg4MGFjM2QwNGIxNmY5YTBl
OWQuLjQzZjViOGRmNWViN2JhN2Q2ZmQ2OGMzZTIwZGZlNTBmNDRlZjQwYjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKQEAgLTcyNyw3ICs3MjcsNyBAQCB2b2lkIFNWR1VzZUVs
ZW1lbnQ6OmF0dGFjaCgpCiB7CiAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmF0
dGFjaCgpOwogCi0gICAgaWYgKHJlbmRlcmVyKCkpCisgICAgaWYgKGhhc1JlbmRlcmVyKCkpCiAg
ICAgICAgIHF1ZXVlUG9zdEF0dGFjaENhbGxiYWNrKHVwZGF0ZUZyb21FbGVtZW50Q2FsbGJhY2ss
IHRoaXMpOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>