<?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>127303</bug_id>
          
          <creation_ts>2014-01-20 13:15:01 -0800</creation_ts>
          <short_desc>Modernize WebCore/inspector with nullptr</short_desc>
          <delta_ts>2014-01-20 13:50:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>joepeck</cc>
    
    <cc>mkwst</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>969976</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-01-20 13:15:01 -0800</bug_when>
    <thetext>Run clang-modernize -use-nullptr on WebCore/inspector

    Transform: UseNullptr - Accepted: 263</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969977</commentid>
    <comment_count>1</comment_count>
      <attachid>221685</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-01-20 13:16:29 -0800</bug_when>
    <thetext>Created attachment 221685
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969998</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-01-20 13:50:18 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/changeset/162374&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221685</attachid>
            <date>2014-01-20 13:16:29 -0800</date>
            <delta_ts>2014-01-20 13:18:16 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>wowo.patch</filename>
            <type>text/plain</type>
            <size>86295</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiYjIxMTI2Li5jNTIzMzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTU2
IEBACiAyMDE0LTAxLTIwICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAK
KyAgICAgICAgTW9kZXJuaXplIFdlYkNvcmUvaW5zcGVjdG9yIHdpdGggbnVsbHB0cgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3MzAzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmFuIGNsYW5nLW1vZGVy
bml6ZSAtdXNlLW51bGxwdHIgb3ZlciBXZWJDb3JlL2luc3BlY3Rvci4KKworICAgICAgICAqIGlu
c3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlTWVz
c2FnZTo6Q29uc29sZU1lc3NhZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2Fn
ZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudFNlYXJjaFV0aWxzOjpmaW5kTWFnaWNDb21tZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvRE9NRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRv
cjo6U2V0T3V0ZXJIVE1MQWN0aW9uOjpTZXRPdXRlckhUTUxBY3Rpb24pOgorICAgICAgICAqIGlu
c3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NUGF0Y2hT
dXBwb3J0OjpwYXRjaERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBhdGNoU3VwcG9y
dDo6cGF0Y2hOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBhdGNoU3VwcG9ydDo6ZGlmZik6
CisgICAgICAgIChXZWJDb3JlOjpET01QYXRjaFN1cHBvcnQ6OmlubmVyUGF0Y2hDaGlsZHJlbik6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OndpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudDo6YXNzZXJ0RnJhbWVXaXRoRG9jdW1lbnRMb2FkZXIpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDYW52YXNBZ2VudDo6bm90aWZ5UmVuZGVyaW5nQ29udGV4dFdhc1dyYXBwZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmZyYW1lTmF2aWdhdGVkKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6SW5zcGVjdG9yQ29uc29sZUFnZW50KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6fkluc3BlY3RvckNvbnNv
bGVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNsZWFy
TWVzc2FnZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpkaWRG
aW5pc2hYSFJMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnNvbGVBZ2Vu
dDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnNv
bGVBZ2VudDo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JD
b25zb2xlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0ZWRQYWdl
RGVzdHJveWVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaXNh
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpc2Nh
cmRBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6On5JbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50OjpzZXRET01TdG9yYWdlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQ6OnJlbW92ZURPTVN0b3JhZ2VJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZmluZFN0b3JhZ2VBcmVhKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JEYXRhYmFzZUFnZW50Ojp+SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpmaW5kQnlGaWxlTmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkYXRhYmFzZUZvcklkKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjphZGRNZXNzYWdlVG9Db25zb2xlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVCcmVha3BvaW50
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhcnNlU291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENvbnRp
bnVlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFyQnJl
YWtEZXRhaWxzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyb250ZW5kTWVudVByb3ZpZGVyOjpkaXNjb25uZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kSG9zdDo6SW5zcGVjdG9yRnJvbnRl
bmRIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kSG9zdDo6ZGlzY29u
bmVjdENsaWVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckhlYXBQcm9maWxlckFnZW50Ojp+
SW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphc3NlcnREb2N1bWVudCk6
CisgICAgICAgIChXZWJDb3JlOjphc3NlcnRJREJGYWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YSk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmcmFt
ZUZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJl
c3BvbnNlQnV0Q2FuY2VsZWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6Y29uc29sZUFnZW50RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnVucmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmV0cmlldmVUaW1lbGlu
ZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5z
dHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5n
QWdlbnRzRm9yTm9uRG9jdW1lbnRDb250ZXh0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVu
dGluZ0FnZW50c0ZvckRvY3VtZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQ6OmRpc2FibGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JOb2RlRmluZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5vZGVGaW5kZXI6OnNlYXJjaFVzaW5nWFBh
dGgpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yRWxlbWVudEluZm8pOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFn
ZUFnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclBhZ2VBZ2VudDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmZyYW1lRm9ySWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFn
ZW50OjpmaW5kRnJhbWVXaXRoU2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBy
b2ZpbGVyQWdlbnQ6On5JbnNwZWN0b3JQcm9maWxlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yUmVz
b3VyY2VSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50
Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VB
Z2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJl
c291cmNlQWdlbnQ6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpc2FibGUpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpJbnNwZWN0b3JSdW50aW1lQWdlbnQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFBhcnNlZFN0
eWxlU2hlZXQ6OnJ1bGVTb3VyY2VEYXRhQXQpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRTb3Vy
Y2VSYW5nZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjphc0NTU1J1bGVMaXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmZpbGxNZWRpYUxpc3RDaGFpbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JTdHlsZTo6c2V0UHJvcGVydHlUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clN0eWxlOjpwb3B1bGF0ZUFsbFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yU3R5bGU6OmV4dHJhY3RTb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clN0eWxlOjpuZXdMaW5lQW5kV2hpdGVzcGFjZURlbGltaXRlcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YWRkUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JTdHlsZVNoZWV0OjpydWxlRm9ySWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
U3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldEluZm8pOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JSdWxlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OnN0eWxlRm9ySWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6aW5zcGVjdG9yU3R5bGVGb3JJZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6Oklu
c3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvclN0eWxlU2hlZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0lkOjph
c1Byb3RvY29sVmFsdWUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0b3Ap
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbENvbXBvc2l0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpwYWdlKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yV29ya2VyQWdlbnQ6On5JbnNwZWN0b3JXb3JrZXJBZ2VudCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zdHJ1bWVudGluZ0FnZW50czo6SW5zdHJ1bWVudGluZ0FnZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnN0cnVtZW50aW5nQWdlbnRzOjpyZXNldCk6CisgICAgICAgICogaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6eGhyUmVwbGF5RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVtb3ZlQ2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc291cmNlRGF0YUZvclJlcXVlc3RJZCk6
CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZUNvbnNvbGVBZ2VudDo6flBhZ2VDb25zb2xlQWdlbnQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVi
dWdnZXJBZ2VudDo6ZGlzYWJsZSk6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6flBhZ2VSdW50aW1l
QWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlTWFp
bldvcmxkQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFnZW50OjpyZXBv
cnRFeGVjdXRpb25Db250ZXh0Q3JlYXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRB
cmd1bWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QXJndW1lbnRzOjpnbG9iYWxT
dGF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6On5Xb3JrZXJSdW50aW1lQWdlbnQpOgor
CisyMDE0LTAxLTIwICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKICAg
ICAgICAgUnVuIGNsYW5nLW1vZGVybml6ZSBhbmQgbGV0IGl0IGFkZCBhIGJ1bmNoIG9mIG1pc3Np
bmcgb3ZlcnJpZGVzIGluIFdlYkNvcmUvaW5zcGVjdG9yCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjcyMDYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKaW5kZXggY2M4Y2NmMC4uZDNiOTNhYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCkBAIC04Miw3ICs4Miw3IEBA
IENvbnNvbGVNZXNzYWdlOjpDb25zb2xlTWVzc2FnZShib29sLCBNZXNzYWdlU291cmNlIHNvdXJj
ZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzCiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fbGV2
ZWwobGV2ZWwpCiAgICAgLCBtX21lc3NhZ2UobWVzc2FnZSkKLSAgICAsIG1fYXJndW1lbnRzKDAp
CisgICAgLCBtX2FyZ3VtZW50cyhudWxscHRyKQogICAgICwgbV9saW5lKDApCiAgICAgLCBtX2Nv
bHVtbigwKQogICAgICwgbV9yZXBlYXRDb3VudCgxKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Q29uc29sZU1lc3NhZ2UuaAppbmRleCAxMjJhNGUwLi4xYTFlYWExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBDb25z
b2xlTWVzc2FnZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29uc29sZU1lc3NhZ2UpOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDb25zb2xlTWVzc2FnZShib29s
IGNhbkdlbmVyYXRlQ2FsbFN0YWNrLCBNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2Fn
ZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50
aWZpZXIgPSAwKTsKLSAgICBDb25zb2xlTWVzc2FnZShib29sIGNhbkdlbmVyYXRlQ2FsbFN0YWNr
LCBNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgdXJsLCB1bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBjb2x1
bW4sIEpTQzo6RXhlY1N0YXRlKiA9IDAsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIg
PSAwKTsKKyAgICBDb25zb2xlTWVzc2FnZShib29sIGNhbkdlbmVyYXRlQ2FsbFN0YWNrLCBNZXNz
YWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgdXJsLCB1bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBjb2x1bW4sIEpT
Qzo6RXhlY1N0YXRlKiA9IG51bGxwdHIsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIg
PSAwKTsKICAgICBDb25zb2xlTWVzc2FnZShib29sIGNhbkdlbmVyYXRlQ2FsbFN0YWNrLCBNZXNz
YWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRl
bnRpZmllciA9IDApOwogICAgIENvbnNvbGVNZXNzYWdlKGJvb2wgY2FuR2VuZXJhdGVDYWxsU3Rh
Y2ssIE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+LCBKU0M6OkV4ZWNTdGF0ZSos
IHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIgPSAwKTsKICAgICB+Q29uc29sZU1lc3Nh
Z2UoKTsKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291
bnQoKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGF1dG9nZW5lcmF0ZU1ldGFkYXRhKGJvb2wgY2Fu
R2VuZXJhdGVDYWxsU3RhY2ssIEpTQzo6RXhlY1N0YXRlKiA9IDApOworICAgIHZvaWQgYXV0b2dl
bmVyYXRlTWV0YWRhdGEoYm9vbCBjYW5HZW5lcmF0ZUNhbGxTdGFjaywgSlNDOjpFeGVjU3RhdGUq
ID0gbnVsbHB0cik7CiAKICAgICBNZXNzYWdlU291cmNlIG1fc291cmNlOwogICAgIE1lc3NhZ2VU
eXBlIG1fdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db250ZW50
U2VhcmNoVXRpbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hV
dGlscy5jcHAKaW5kZXggZTlkZDA3MGYuLjIyNzY4YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMuY3BwCkBAIC0xODEsNyArMTgxLDcgQEAgc3Rh
dGljIFN0cmluZyBzdHlsZXNoZWV0Q29tbWVudFBhdHRlcm4oY29uc3QgU3RyaW5nJiBuYW1lKQog
CiBzdGF0aWMgU3RyaW5nIGZpbmRNYWdpY0NvbW1lbnQoY29uc3QgU3RyaW5nJiBjb250ZW50LCBj
b25zdCBTdHJpbmcmIHBhdHRlcm5TdHJpbmcpCiB7Ci0gICAgY29uc3QgY2hhciogZXJyb3IgPSAw
OworICAgIGNvbnN0IGNoYXIqIGVycm9yID0gbnVsbHB0cjsKICAgICBKU0M6OllhcnI6OllhcnJQ
YXR0ZXJuIHBhdHRlcm4ocGF0dGVyblN0cmluZywgZmFsc2UsIHRydWUsICZlcnJvcik7CiAgICAg
QVNTRVJUKCFlcnJvcik7CiAgICAgQnVtcFBvaW50ZXJBbGxvY2F0b3IgcmVnZXhBbGxvY2F0b3I7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwCmluZGV4IDJhYjBkZDEuLjdmMmZh
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwCkBAIC0yMDcsNyArMjA3
LDcgQEAgcHVibGljOgogICAgICAgICAsIG1fbm9kZShub2RlKQogICAgICAgICAsIG1fbmV4dFNp
Ymxpbmcobm9kZS5uZXh0U2libGluZygpKQogICAgICAgICAsIG1faHRtbChodG1sKQotICAgICAg
ICAsIG1fbmV3Tm9kZSgwKQorICAgICAgICAsIG1fbmV3Tm9kZShudWxscHRyKQogICAgICAgICAs
IG1faGlzdG9yeShhZG9wdFB0cihuZXcgSW5zcGVjdG9ySGlzdG9yeSgpKSkKICAgICAgICAgLCBt
X2RvbUVkaXRvcihhZG9wdFB0cihuZXcgRE9NRWRpdG9yKG1faGlzdG9yeS5nZXQoKSkpKQogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5kZXgg
M2E1NGQzNi4uYTIwMTc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RP
TVBhdGNoU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNo
U3VwcG9ydC5jcHAKQEAgLTg5LDEyICs4OSwxMiBAQCB2b2lkIERPTVBhdGNoU3VwcG9ydDo6cGF0
Y2hEb2N1bWVudChjb25zdCBTdHJpbmcmIG1hcmt1cCkKIHsKICAgICBSZWZQdHI8RG9jdW1lbnQ+
IG5ld0RvY3VtZW50OwogICAgIGlmIChtX2RvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKQotICAg
ICAgICBuZXdEb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlKDAsIFVSTCgpKTsKKyAgICAg
ICAgbmV3RG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBVUkwoKSk7CiAg
ICAgZWxzZSBpZiAobV9kb2N1bWVudC0+aXNYSFRNTERvY3VtZW50KCkpCi0gICAgICAgIG5ld0Rv
Y3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGVYSFRNTCgwLCBVUkwoKSk7CisgICAgICAgIG5l
d0RvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGVYSFRNTChudWxscHRyLCBVUkwoKSk7CiAj
aWYgRU5BQkxFKFNWRykKICAgICBlbHNlIGlmIChtX2RvY3VtZW50LT5pc1NWR0RvY3VtZW50KCkp
Ci0gICAgICAgIG5ld0RvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZSgwLCBVUkwoKSk7CisgICAg
ICAgIG5ld0RvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBVUkwoKSk7CiAjZW5k
aWYKIAogICAgIEFTU0VSVChuZXdEb2N1bWVudCk7CkBAIC0xMDIsMTIgKzEwMiwxMiBAQCB2b2lk
IERPTVBhdGNoU3VwcG9ydDo6cGF0Y2hEb2N1bWVudChjb25zdCBTdHJpbmcmIG1hcmt1cCkKICAg
ICBpZiAobmV3RG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpCiAgICAgICAgIHBhcnNlciA9IEhU
TUxEb2N1bWVudFBhcnNlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCY+KCpuZXdE
b2N1bWVudCkpOwogICAgIGVsc2UKLSAgICAgICAgcGFyc2VyID0gWE1MRG9jdW1lbnRQYXJzZXI6
OmNyZWF0ZSgqbmV3RG9jdW1lbnQsIDApOworICAgICAgICBwYXJzZXIgPSBYTUxEb2N1bWVudFBh
cnNlcjo6Y3JlYXRlKCpuZXdEb2N1bWVudCwgbnVsbHB0cik7CiAgICAgcGFyc2VyLT5pbnNlcnQo
bWFya3VwKTsgLy8gVXNlIGluc2VydCgpIHNvIHRoYXQgdGhlIHBhcnNlciB3aWxsIG5vdCB5aWVs
ZC4KICAgICBwYXJzZXItPmZpbmlzaCgpOwogICAgIHBhcnNlci0+ZGV0YWNoKCk7CiAKLSAgICBP
d25QdHI8RGlnZXN0PiBvbGRJbmZvID0gY3JlYXRlRGlnZXN0KG1fZG9jdW1lbnQtPmRvY3VtZW50
RWxlbWVudCgpLCAwKTsKKyAgICBPd25QdHI8RGlnZXN0PiBvbGRJbmZvID0gY3JlYXRlRGlnZXN0
KG1fZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLCBudWxscHRyKTsKICAgICBPd25QdHI8RGln
ZXN0PiBuZXdJbmZvID0gY3JlYXRlRGlnZXN0KG5ld0RvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQo
KSwgJm1fdW51c2VkTm9kZXNNYXApOwogCiAgICAgaWYgKCFpbm5lclBhdGNoTm9kZShvbGRJbmZv
LmdldCgpLCBuZXdJbmZvLmdldCgpLCBJR05PUkVfRVhDRVBUSU9OKSkgewpAQCAtMTIyLDcgKzEy
Miw3IEBAIE5vZGUqIERPTVBhdGNoU3VwcG9ydDo6cGF0Y2hOb2RlKE5vZGUmIG5vZGUsIGNvbnN0
IFN0cmluZyYgbWFya3VwLCBFeGNlcHRpb25Db2RlCiAgICAgLy8gRG9uJ3QgcGFyc2UgPGh0bWw+
IGFzIGEgZnJhZ21lbnQuCiAgICAgaWYgKG5vZGUuaXNEb2N1bWVudE5vZGUoKSB8fCAobm9kZS5w
YXJlbnROb2RlKCkgJiYgbm9kZS5wYXJlbnROb2RlKCktPmlzRG9jdW1lbnROb2RlKCkpKSB7CiAg
ICAgICAgIHBhdGNoRG9jdW1lbnQobWFya3VwKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIE5vZGUqIHByZXZpb3VzU2libGluZyA9IG5v
ZGUucHJldmlvdXNTaWJsaW5nKCk7CkBAIC0xMzcsMTMgKzEzNywxMyBAQCBOb2RlKiBET01QYXRj
aFN1cHBvcnQ6OnBhdGNoTm9kZShOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIG1hcmt1cCwgRXhj
ZXB0aW9uQ29kZQogICAgIENvbnRhaW5lck5vZGUqIHBhcmVudE5vZGUgPSBub2RlLnBhcmVudE5v
ZGUoKTsKICAgICBWZWN0b3I8T3duUHRyPERpZ2VzdD4+IG9sZExpc3Q7CiAgICAgZm9yIChOb2Rl
KiBjaGlsZCA9IHBhcmVudE5vZGUtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQt
Pm5leHRTaWJsaW5nKCkpCi0gICAgICAgIG9sZExpc3QuYXBwZW5kKGNyZWF0ZURpZ2VzdChjaGls
ZCwgMCkpOworICAgICAgICBvbGRMaXN0LmFwcGVuZChjcmVhdGVEaWdlc3QoY2hpbGQsIG51bGxw
dHIpKTsKIAogICAgIC8vIENvbXBvc2UgdGhlIG5ldyBsaXN0LgogICAgIFN0cmluZyBtYXJrdXBD
b3B5ID0gbWFya3VwLmxvd2VyKCk7CiAgICAgVmVjdG9yPE93blB0cjxEaWdlc3Q+PiBuZXdMaXN0
OwogICAgIGZvciAoTm9kZSogY2hpbGQgPSBwYXJlbnROb2RlLT5maXJzdENoaWxkKCk7IGNoaWxk
ICE9ICZub2RlOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQotICAgICAgICBuZXdMaXN0
LmFwcGVuZChjcmVhdGVEaWdlc3QoY2hpbGQsIDApKTsKKyAgICAgICAgbmV3TGlzdC5hcHBlbmQo
Y3JlYXRlRGlnZXN0KGNoaWxkLCBudWxscHRyKSk7CiAgICAgZm9yIChOb2RlKiBjaGlsZCA9IGZy
YWdtZW50LT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygp
KSB7CiAgICAgICAgIGlmIChjaGlsZC0+aGFzVGFnTmFtZShoZWFkVGFnKSAmJiAhY2hpbGQtPmZp
cnN0Q2hpbGQoKSAmJiBtYXJrdXBDb3B5LmZpbmQoIjwvaGVhZD4iKSA9PSBub3RGb3VuZCkKICAg
ICAgICAgICAgIGNvbnRpbnVlOyAvLyBIVE1MNSBwYXJzZXIgaW5zZXJ0cyBlbXB0eSA8aGVhZD4g
dGFnIHdoZW5ldmVyIGl0IHBhcnNlcyA8Ym9keT4KQEAgLTE1MiwxMyArMTUyLDEzIEBAIE5vZGUq
IERPTVBhdGNoU3VwcG9ydDo6cGF0Y2hOb2RlKE5vZGUmIG5vZGUsIGNvbnN0IFN0cmluZyYgbWFy
a3VwLCBFeGNlcHRpb25Db2RlCiAgICAgICAgIG5ld0xpc3QuYXBwZW5kKGNyZWF0ZURpZ2VzdChj
aGlsZCwgJm1fdW51c2VkTm9kZXNNYXApKTsKICAgICB9CiAgICAgZm9yIChOb2RlKiBjaGlsZCA9
IG5vZGUubmV4dFNpYmxpbmcoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkp
Ci0gICAgICAgIG5ld0xpc3QuYXBwZW5kKGNyZWF0ZURpZ2VzdChjaGlsZCwgMCkpOworICAgICAg
ICBuZXdMaXN0LmFwcGVuZChjcmVhdGVEaWdlc3QoY2hpbGQsIG51bGxwdHIpKTsKIAogICAgIGlm
ICghaW5uZXJQYXRjaENoaWxkcmVuKHBhcmVudE5vZGUsIG9sZExpc3QsIG5ld0xpc3QsIGVjKSkg
ewogICAgICAgICAvLyBGYWxsIGJhY2sgdG8gdG90YWwgcmVwbGFjZS4KICAgICAgICAgZWMgPSAw
OwogICAgICAgICBpZiAoIW1fZG9tRWRpdG9yLT5yZXBsYWNlQ2hpbGQocGFyZW50Tm9kZSwgZnJh
Z21lbnQucmVsZWFzZSgpLCAmbm9kZSwgZWMpKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgcmV0dXJuIHByZXZpb3VzU2libGlu
ZyA/IHByZXZpb3VzU2libGluZy0+bmV4dFNpYmxpbmcoKSA6IHBhcmVudE5vZGUtPmZpcnN0Q2hp
bGQoKTsKIH0KQEAgLTIxOCwxMiArMjE4LDEyIEBAIERPTVBhdGNoU3VwcG9ydDo6ZGlmZihjb25z
dCBWZWN0b3I8T3duUHRyPERpZ2VzdD4+JiBvbGRMaXN0LCBjb25zdCBWZWN0b3I8T3duUHRyCiAg
ICAgUmVzdWx0TWFwIG9sZE1hcChvbGRMaXN0LnNpemUoKSk7CiAKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG9sZE1hcC5zaXplKCk7ICsraSkgewotICAgICAgICBvbGRNYXBbaV0uZmlyc3Qg
PSAwOworICAgICAgICBvbGRNYXBbaV0uZmlyc3QgPSBudWxscHRyOwogICAgICAgICBvbGRNYXBb
aV0uc2Vjb25kID0gMDsKICAgICB9CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5ld01h
cC5zaXplKCk7ICsraSkgewotICAgICAgICBuZXdNYXBbaV0uZmlyc3QgPSAwOworICAgICAgICBu
ZXdNYXBbaV0uZmlyc3QgPSBudWxscHRyOwogICAgICAgICBuZXdNYXBbaV0uc2Vjb25kID0gMDsK
ICAgICB9CiAKQEAgLTMwNSw4ICszMDUsOCBAQCBib29sIERPTVBhdGNoU3VwcG9ydDo6aW5uZXJQ
YXRjaENoaWxkcmVuKENvbnRhaW5lck5vZGUqIHBhcmVudE5vZGUsIGNvbnN0IFZlY3RvcgogICAg
IFJlc3VsdE1hcCYgb2xkTWFwID0gcmVzdWx0TWFwcy5maXJzdDsKICAgICBSZXN1bHRNYXAmIG5l
d01hcCA9IHJlc3VsdE1hcHMuc2Vjb25kOwogCi0gICAgRGlnZXN0KiBvbGRIZWFkID0gMDsKLSAg
ICBEaWdlc3QqIG9sZEJvZHkgPSAwOworICAgIERpZ2VzdCogb2xkSGVhZCA9IG51bGxwdHI7Cisg
ICAgRGlnZXN0KiBvbGRCb2R5ID0gbnVsbHB0cjsKIAogICAgIC8vIDEuIEZpcnN0IHN0cmlwIGV2
ZXJ5dGhpbmcgZXhjZXB0IGZvciB0aGUgbm9kZXMgdGhhdCByZXRhaW4uIENvbGxlY3QgcGVuZGlu
ZyBtZXJnZXMuCiAgICAgSGFzaE1hcDxEaWdlc3QqLCBEaWdlc3QqPiBtZXJnZXM7CkBAIC0zMTcs
NyArMzE3LDcgQEAgYm9vbCBET01QYXRjaFN1cHBvcnQ6OmlubmVyUGF0Y2hDaGlsZHJlbihDb250
YWluZXJOb2RlKiBwYXJlbnROb2RlLCBjb25zdCBWZWN0b3IKICAgICAgICAgICAgICAgICB1c2Vk
TmV3T3JkaW5hbHMuYWRkKG9sZE1hcFtpXS5zZWNvbmQpOwogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgb2xkTWFwW2ldLmZpcnN0ID0gMDsKKyAg
ICAgICAgICAgIG9sZE1hcFtpXS5maXJzdCA9IG51bGxwdHI7CiAgICAgICAgICAgICBvbGRNYXBb
aV0uc2Vjb25kID0gMDsKICAgICAgICAgfQogCkBAIC0zNTYsNyArMzU2LDcgQEAgYm9vbCBET01Q
YXRjaFN1cHBvcnQ6OmlubmVyUGF0Y2hDaGlsZHJlbihDb250YWluZXJOb2RlKiBwYXJlbnROb2Rl
LCBjb25zdCBWZWN0b3IKICAgICAgICAgc2l6ZV90IG9sZE9yZGluYWwgPSBuZXdNYXBbaV0uc2Vj
b25kOwogICAgICAgICBpZiAodXNlZE9sZE9yZGluYWxzLmNvbnRhaW5zKG9sZE9yZGluYWwpKSB7
CiAgICAgICAgICAgICAvLyBEbyBub3QgbWFwIG5vZGUgbW9yZSB0aGFuIG9uY2UKLSAgICAgICAg
ICAgIG5ld01hcFtpXS5maXJzdCA9IDA7CisgICAgICAgICAgICBuZXdNYXBbaV0uZmlyc3QgPSBu
dWxscHRyOwogICAgICAgICAgICAgbmV3TWFwW2ldLnNlY29uZCA9IDA7CiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCBhNDkwOWJlLi42
YzM0YmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIElu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tl
bmQoKQogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICBtX2JhY2tlbmRE
aXNwYXRjaGVyLmNsZWFyKCk7CiAKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgwKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMt
PnNldEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChudWxscHRyKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCkBAIC0x
MjAsNyArMTIwLDcgQEAgRG9jdW1lbnRMb2FkZXIqIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudDo6YXNzZXJ0RnJhbWVXaXRoRG9jdW1lbnRMb2FkZXIoRXIKIHsKICAgICBGcmFtZSogZnJh
bWUgPSBtX3BhZ2VBZ2VudC0+YXNzZXJ0RnJhbWUoZXJyb3JTdHJpbmcsIGZyYW1lSWQpOwogICAg
IGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmFzc2VydERvY3VtZW50TG9hZGVyKGVy
cm9yU3RyaW5nLCBmcmFtZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNhbnZhc0FnZW50LmNwcAppbmRleCA2ZDgyMzMyLi5iMzA2ZmFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKQEAgLTEw
MCw3ICsxMDAsNyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjplbmFibGUoRXJyb3JTdHJp
bmcqKQogdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiB7
CiAgICAgbV9lbmFibGVkID0gZmFsc2U7Ci0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJ
bnNwZWN0b3JDYW52YXNBZ2VudCgwKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldElu
c3BlY3RvckNhbnZhc0FnZW50KG51bGxwdHIpOwogICAgIG1fZnJhbWVzV2l0aFVuaW5zdHJ1bWVu
dGVkQ2FudmFzZXMuY2xlYXIoKTsKIH0KIApAQCAtMjAzLDggKzIwMyw4IEBAIERlcHJlY2F0ZWQ6
OlNjcmlwdE9iamVjdCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6bm90aWZ5UmVuZGVyaW5nQ29udGV4
dFdhc1dyYXBwZWQoCiB7CiAgICAgQVNTRVJUKG1fZnJvbnRlbmREaXNwYXRjaGVyKTsKICAgICBK
U0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUgPSB3cmFwcGVkQ29udGV4dC5zY3JpcHRTdGF0ZSgp
OwotICAgIERPTVdpbmRvdyogZG9tV2luZG93ID0gc2NyaXB0U3RhdGUgPyBkb21XaW5kb3dGcm9t
RXhlY1N0YXRlKHNjcmlwdFN0YXRlKSA6IDA7Ci0gICAgRnJhbWUqIGZyYW1lID0gZG9tV2luZG93
ID8gZG9tV2luZG93LT5mcmFtZSgpIDogMDsKKyAgICBET01XaW5kb3cqIGRvbVdpbmRvdyA9IHNj
cmlwdFN0YXRlID8gZG9tV2luZG93RnJvbUV4ZWNTdGF0ZShzY3JpcHRTdGF0ZSkgOiBudWxscHRy
OworICAgIEZyYW1lKiBmcmFtZSA9IGRvbVdpbmRvdyA/IGRvbVdpbmRvdy0+ZnJhbWUoKSA6IG51
bGxwdHI7CiAgICAgaWYgKGZyYW1lICYmICFtX2ZyYW1lc1dpdGhVbmluc3RydW1lbnRlZENhbnZh
c2VzLmNvbnRhaW5zKGZyYW1lKSkKICAgICAgICAgbV9mcmFtZXNXaXRoVW5pbnN0cnVtZW50ZWRD
YW52YXNlcy5zZXQoZnJhbWUsIGZhbHNlKTsKICAgICBTdHJpbmcgZnJhbWVJZCA9IG1fcGFnZUFn
ZW50LT5mcmFtZUlkKGZyYW1lKTsKQEAgLTI5MSwxNCArMjkxLDE0IEBAIHZvaWQgSW5zcGVjdG9y
Q2FudmFzQWdlbnQ6OmZyYW1lTmF2aWdhdGVkKEZyYW1lKiBmcmFtZSkKICAgICBpZiAoZnJhbWUg
PT0gbV9wYWdlQWdlbnQtPm1haW5GcmFtZSgpKSB7CiAgICAgICAgIGZvciAoRnJhbWVzV2l0aFVu
aW5zdHJ1bWVudGVkQ2FudmFzZXM6Oml0ZXJhdG9yIGl0ID0gbV9mcmFtZXNXaXRoVW5pbnN0cnVt
ZW50ZWRDYW52YXNlcy5iZWdpbigpOyBpdCAhPSBtX2ZyYW1lc1dpdGhVbmluc3RydW1lbnRlZENh
bnZhc2VzLmVuZCgpOyArK2l0KQogICAgICAgICAgICAgbV9mcmFtZXNXaXRoVW5pbnN0cnVtZW50
ZWRDYW52YXNlcy5zZXQoaXQtPmtleSwgZmFsc2UpOwotICAgICAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlci0+dHJhY2VMb2dzUmVtb3ZlZCgwLCAwKTsKKyAgICAgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXItPnRyYWNlTG9nc1JlbW92ZWQobnVsbHB0ciwgbnVsbHB0cik7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgd2hpbGUgKGZyYW1lKSB7CiAgICAgICAgICAgICBpZiAobV9mcmFtZXNXaXRoVW5pbnN0
cnVtZW50ZWRDYW52YXNlcy5jb250YWlucyhmcmFtZSkpCiAgICAgICAgICAgICAgICAgbV9mcmFt
ZXNXaXRoVW5pbnN0cnVtZW50ZWRDYW52YXNlcy5zZXQoZnJhbWUsIGZhbHNlKTsKICAgICAgICAg
ICAgIGlmIChtX3BhZ2VBZ2VudC0+aGFzSWRGb3JGcmFtZShmcmFtZSkpIHsKICAgICAgICAgICAg
ICAgICBTdHJpbmcgZnJhbWVJZCA9IG1fcGFnZUFnZW50LT5mcmFtZUlkKGZyYW1lKTsKLSAgICAg
ICAgICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+dHJhY2VMb2dzUmVtb3ZlZCgmZnJhbWVJ
ZCwgMCk7CisgICAgICAgICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnRyYWNlTG9nc1Jl
bW92ZWQoJmZyYW1lSWQsIG51bGxwdHIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZnJh
bWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCmluZGV4IGY2
ZmI4YjYuLmEyNDMyNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb25zb2xlQWdlbnQuY3BwCkBAIC02Myw3ICs2Myw3IEBAIGludCBJbnNwZWN0b3JDb25z
b2xlQWdlbnQ6OnNfZW5hYmxlZEFnZW50Q291bnQgPSAwOwogSW5zcGVjdG9yQ29uc29sZUFnZW50
OjpJbnNwZWN0b3JDb25zb2xlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cywgUGFnZUluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiQ29uc29sZSIpLCBpbnN0
cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKQotICAgICwgbV9wcmV2aW91c01lc3NhZ2UoMCkKKyAgICAsIG1fcHJldmlv
dXNNZXNzYWdlKG51bGxwdHIpCiAgICAgLCBtX2V4cGlyZWRDb25zb2xlTWVzc2FnZUNvdW50KDAp
CiAgICAgLCBtX2VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX21vbml0b3JpbmdYSFJFbmFibGVkKGZh
bHNlKQpAQCAtNzMsOSArNzMsOSBAQCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6Okluc3BlY3RvckNv
bnNvbGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQQogCiBJbnNwZWN0
b3JDb25zb2xlQWdlbnQ6On5JbnNwZWN0b3JDb25zb2xlQWdlbnQoKQogewotICAgIG1faW5zdHJ1
bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yQ29uc29sZUFnZW50KDApOwotICAgIG1faW5zdHJ1
bWVudGluZ0FnZW50cyA9IDA7Ci0gICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIgPSAwOworICAg
IG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yQ29uc29sZUFnZW50KG51bGxwdHIp
OworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cyA9IG51bGxwdHI7CisgICAgbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXIgPSBudWxscHRyOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6
ZW5hYmxlKEVycm9yU3RyaW5nKikKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIEluc3BlY3RvckNv
bnNvbGVBZ2VudDo6Y2xlYXJNZXNzYWdlcyhFcnJvclN0cmluZyopCiB7CiAgICAgbV9jb25zb2xl
TWVzc2FnZXMuY2xlYXIoKTsKICAgICBtX2V4cGlyZWRDb25zb2xlTWVzc2FnZUNvdW50ID0gMDsK
LSAgICBtX3ByZXZpb3VzTWVzc2FnZSA9IDA7CisgICAgbV9wcmV2aW91c01lc3NhZ2UgPSBudWxs
cHRyOwogICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5yZWxlYXNlT2JqZWN0R3JvdXAoImNv
bnNvbGUiKTsKICAgICBpZiAobV9mcm9udGVuZERpc3BhdGNoZXIgJiYgbV9lbmFibGVkKQogICAg
ICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+bWVzc2FnZXNDbGVhcmVkKCk7CkBAIC0yNTUsNyAr
MjU1LDcgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmRpZEZpbmlzaFhIUkxvYWRpbmco
dW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciwKICAgICAgICAgcmV0dXJuOwogICAgIGlm
IChtX2Zyb250ZW5kRGlzcGF0Y2hlciAmJiBtX21vbml0b3JpbmdYSFJFbmFibGVkKSB7CiAgICAg
ICAgIFN0cmluZyBtZXNzYWdlID0gIlhIUiBmaW5pc2hlZCBsb2FkaW5nOiBcIiIgKyB1cmwgKyAi
XCIuIjsKLSAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShOZXR3b3JrTWVzc2FnZVNvdXJjZSwg
TG9nTWVzc2FnZVR5cGUsIERlYnVnTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBzZW5kVVJMLCBzZW5k
TGluZU51bWJlciwgc2VuZENvbHVtbk51bWJlciwgMCwgcmVxdWVzdElkZW50aWZpZXIpOworICAg
ICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKE5ldHdvcmtNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdl
VHlwZSwgRGVidWdNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIHNlbmRVUkwsIHNlbmRMaW5lTnVtYmVy
LCBzZW5kQ29sdW1uTnVtYmVyLCBudWxscHRyLCByZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgfQog
fQogCkBAIC0yNjYsNyArMjY2LDcgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmRpZFJl
Y2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyLAogCiAgICAgaWYg
KHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwKSB7CiAgICAgICAgIFN0cmluZyBtZXNz
YWdlID0gIkZhaWxlZCB0byBsb2FkIHJlc291cmNlOiB0aGUgc2VydmVyIHJlc3BvbmRlZCB3aXRo
IGEgc3RhdHVzIG9mICIgKyBTdHJpbmc6Om51bWJlcihyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgp
KSArICIgKCIgKyByZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpICsgJyknOwotICAgICAgICBhZGRN
ZXNzYWdlVG9Db25zb2xlKE5ldHdvcmtNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJy
b3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCAwLCAwLCAw
LCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoTmV0d29y
a01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2Fn
ZSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIDAsIDAsIG51bGxwdHIsIHJlcXVlc3RJZGVudGlm
aWVyKTsKICAgICB9CiB9CiAKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIEluc3BlY3RvckNvbnNv
bGVBZ2VudDo6ZGlkRmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciwg
Y29ucwogICAgICAgICBtZXNzYWdlLmFwcGVuZExpdGVyYWwoIjogIik7CiAgICAgICAgIG1lc3Nh
Z2UuYXBwZW5kKGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOwogICAgIH0KLSAgICBhZGRN
ZXNzYWdlVG9Db25zb2xlKE5ldHdvcmtNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJy
b3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UudG9TdHJpbmcoKSwgZXJyb3IuZmFpbGluZ1VSTCgpLCAw
LCAwLCAwLCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgYWRkTWVzc2FnZVRvQ29uc29sZShOZXR3
b3JrTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNz
YWdlLnRvU3RyaW5nKCksIGVycm9yLmZhaWxpbmdVUkwoKSwgMCwgMCwgbnVsbHB0ciwgcmVxdWVz
dElkZW50aWZpZXIpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6c2V0TW9uaXRv
cmluZ1hIUkVuYWJsZWQoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKaW5kZXggM2E5OGYwYi4u
NWY5OGMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25z
b2xlQWdlbnQuaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFkZE1l
c3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBKU0M6OkV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8U2NyaXB0
QXJndW1lbnRzPiwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDApOwotICAgIHZv
aWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2Fn
ZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIHVu
c2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgSlNDOjpFeGVjU3RhdGUq
ID0gMCwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDApOworICAgIHZvaWQgYWRk
TWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVs
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIHVuc2lnbmVk
IGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgSlNDOjpFeGVjU3RhdGUqID0gbnVs
bHB0ciwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDApOwogCiAgICAgLy8gRklY
TUU6IFJlbW92ZSBvbmNlIHdlIG5vIGxvbmdlciBnZW5lcmF0ZSBzdGFja3Mgb3V0c2lkZSBvZiBJ
bnNwZWN0b3IuCiAgICAgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1l
c3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgUGFzc1JlZlB0
cjxTY3JpcHRDYWxsU3RhY2s+LCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
aW5kZXggODQ0MzAyYi4uYTZlYjUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpCiAgICAgZGlzY29ubmVjdEZy
b250ZW5kKCk7CiAgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmRpc2Nvbm5lY3QoKTsKICAg
ICBtX2luc3BlY3RvckNsaWVudC0+aW5zcGVjdG9yRGVzdHJveWVkKCk7Ci0gICAgbV9pbnNwZWN0
b3JDbGllbnQgPSAwOworICAgIG1faW5zcGVjdG9yQ2xpZW50ID0gbnVsbHB0cjsKIH0KIAogdm9p
ZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChzdGQ6OnVu
aXF1ZV9wdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IGluc3BlY3RvckZyb250ZW5kQ2xpZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQuY3BwCmluZGV4IGQ5ODMxZmMuLjdmOTIxYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTEw
Myw3ICsxMDMsNyBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKCkK
IAogdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaXNhYmxlKCkKIHsKLSAgICBtX2lu
c3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoMCk7CisgICAg
bV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KG51bGxw
dHIpOwogICAgIGNsZWFyKCk7CiB9CiAKQEAgLTEyMSw4ICsxMjEsOCBAQCB2b2lkIEluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkKIAogdm9p
ZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaXNjYXJkQWdlbnQoKQogewotICAgIG1fZGVi
dWdnZXJBZ2VudC0+c2V0TGlzdGVuZXIoMCk7Ci0gICAgbV9kZWJ1Z2dlckFnZW50ID0gMDsKKyAg
ICBtX2RlYnVnZ2VyQWdlbnQtPnNldExpc3RlbmVyKG51bGxwdHIpOworICAgIG1fZGVidWdnZXJB
Z2VudCA9IG51bGxwdHI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlz
Y2FyZEJpbmRpbmdzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKaW5kZXggMWQ2NmQxMi4uOWY1MjlhYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5j
cHAKQEAgLTY2LDggKzY2LDggQEAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWUKIAogSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50Ojp+SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KCkKIHsKLSAgICBtX2lu
c3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCgwKTsKLSAgICBt
X2luc3RydW1lbnRpbmdBZ2VudHMgPSAwOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KG51bGxwdHIpOworICAgIG1faW5zdHJ1bWVudGluZ0Fn
ZW50cyA9IG51bGxwdHI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmRE
aXNwYXRjaGVyKQpAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50OjpnZXRET01TdG9yYWdlSXRlbXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zCiB2
b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6c2V0RE9NU3RvcmFnZUl0ZW0oRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3RvcmFnZUlk
LCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBGcmFtZSog
ZnJhbWU7Ci0gICAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYSA9IGZpbmRTdG9yYWdl
QXJlYSgwLCBzdG9yYWdlSWQsIGZyYW1lKTsKKyAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3Jh
Z2VBcmVhID0gZmluZFN0b3JhZ2VBcmVhKG51bGxwdHIsIHN0b3JhZ2VJZCwgZnJhbWUpOwogICAg
IGlmICghc3RvcmFnZUFyZWEpIHsKICAgICAgICAgKmVycm9yU3RyaW5nID0gIlN0b3JhZ2Ugbm90
IGZvdW5kIjsKICAgICAgICAgcmV0dXJuOwpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50OjpzZXRET01TdG9yYWdlSXRlbShFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGNvbnN0CiB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6cmVtb3ZlRE9NU3Rv
cmFnZUl0ZW0oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiYgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcmIGtleSkKIHsKICAgICBGcmFtZSogZnJh
bWU7Ci0gICAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYSA9IGZpbmRTdG9yYWdlQXJl
YSgwLCBzdG9yYWdlSWQsIGZyYW1lKTsKKyAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VB
cmVhID0gZmluZFN0b3JhZ2VBcmVhKG51bGxwdHIsIHN0b3JhZ2VJZCwgZnJhbWUpOwogICAgIGlm
ICghc3RvcmFnZUFyZWEpIHsKICAgICAgICAgKmVycm9yU3RyaW5nID0gIlN0b3JhZ2Ugbm90IGZv
dW5kIjsKICAgICAgICAgcmV0dXJuOwpAQCAtMTkyLDE1ICsxOTIsMTUgQEAgUGFzc1JlZlB0cjxT
dG9yYWdlQXJlYT4gSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpmaW5kU3RvcmFnZUFyZWEoRXJy
b3JTdHJpbmcqIGUKICAgICBpZiAoIXN1Y2Nlc3MpIHsKICAgICAgICAgaWYgKGVycm9yU3RyaW5n
KQogICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gIkludmFsaWQgc3RvcmFnZUlkIGZvcm1hdCI7
Ci0gICAgICAgIHRhcmdldEZyYW1lID0gMDsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHRh
cmdldEZyYW1lID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAg
ICAgdGFyZ2V0RnJhbWUgPSBtX3BhZ2VBZ2VudC0+ZmluZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2lu
KHNlY3VyaXR5T3JpZ2luKTsKICAgICBpZiAoIXRhcmdldEZyYW1lKSB7CiAgICAgICAgIGlmIChl
cnJvclN0cmluZykKICAgICAgICAgICAgICplcnJvclN0cmluZyA9ICJGcmFtZSBub3QgZm91bmQg
Zm9yIHRoZSBnaXZlbiBzZWN1cml0eSBvcmlnaW4iOwotICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgUGFnZSogcGFnZSA9IG1fcGFnZUFnZW50
LT5wYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RGF0YWJhc2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0
YWJhc2VBZ2VudC5jcHAKaW5kZXggNDJiMzZmNy4uMzFhNjFkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcApAQCAtNjQsNyAr
NjQsNyBAQCB2b2lkIHJlcG9ydFRyYW5zYWN0aW9uRmFpbGVkKEV4ZWN1dGVTUUxDYWxsYmFjayog
cmVxdWVzdENhbGxiYWNrLCBTUUxFcnJvciogZXJybwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpEYXRhYmFzZTo6RXJyb3I+IGVycm9yT2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6RGF0YWJhc2U6OkVycm9yOjpjcmVhdGUoKQogICAgICAgICAuc2V0TWVzc2FnZShl
cnJvci0+bWVzc2FnZSgpKQogICAgICAgICAuc2V0Q29kZShlcnJvci0+Y29kZSgpKTsKLSAgICBy
ZXF1ZXN0Q2FsbGJhY2stPnNlbmRTdWNjZXNzKDAsIDAsIGVycm9yT2JqZWN0LnJlbGVhc2UoKSk7
CisgICAgcmVxdWVzdENhbGxiYWNrLT5zZW5kU3VjY2VzcyhudWxscHRyLCBudWxscHRyLCBlcnJv
ck9iamVjdC5yZWxlYXNlKCkpOwogfQogCiBjbGFzcyBTdGF0ZW1lbnRDYWxsYmFjayA6IHB1Ymxp
YyBTUUxTdGF0ZW1lbnRDYWxsYmFjayB7CkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIGNhc2UgU1FMVmFsdWU6Ok51bGxWYWx1ZTogdmFsdWVzLT5hZGRJdGVtKEluc3BlY3Rv
clZhbHVlOjpudWxsKCkpOyBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAg
ICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZFN1Y2Nlc3MoY29sdW1uTmFtZXMucmVsZWFzZSgpLCB2
YWx1ZXMucmVsZWFzZSgpLCAwKTsKKyAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRTdWNj
ZXNzKGNvbHVtbk5hbWVzLnJlbGVhc2UoKSwgdmFsdWVzLnJlbGVhc2UoKSwgbnVsbHB0cik7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjE5LDcgKzIxOSw3IEBAIEluc3BlY3Rv
ckRhdGFiYXNlQWdlbnQ6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGluCiAKIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6On5JbnNwZWN0b3JEYXRh
YmFzZUFnZW50KCkKIHsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckRh
dGFiYXNlQWdlbnQoMCk7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JE
YXRhYmFzZUFnZW50KG51bGxwdHIpOwogfQogCiB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFj
a2VuZERpc3BhdGNoZXIpCkBAIC0zMDgsMTQgKzMwOCwxNCBAQCBJbnNwZWN0b3JEYXRhYmFzZVJl
c291cmNlKiBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpmaW5kQnlGaWxlTmFtZShjb25zdCBTdHJp
bmcmCiAgICAgICAgIGlmIChpdC0+dmFsdWUtPmRhdGFiYXNlKCktPmZpbGVOYW1lKCkgPT0gZmls
ZU5hbWUpCiAgICAgICAgICAgICByZXR1cm4gaXQtPnZhbHVlLmdldCgpOwogICAgIH0KLSAgICBy
ZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogRGF0YWJhc2UqIEluc3BlY3RvckRh
dGFiYXNlQWdlbnQ6OmRhdGFiYXNlRm9ySWQoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkKQogewog
ICAgIERhdGFiYXNlUmVzb3VyY2VzTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQo
ZGF0YWJhc2VJZCk7CiAgICAgaWYgKGl0ID09IG1fcmVzb3VyY2VzLmVuZCgpKQotICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGl0LT52YWx1ZS0+
ZGF0YWJhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDc5MTA4NWMuLjZlOTBiMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAg
LTE1Nyw3ICsxNTcsNyBAQCBib29sIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmlzUGF1c2VkKCkK
IHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdl
U291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSkKIHsKICAgICBpZiAoc2NyaXB0RGVidWdT
ZXJ2ZXIoKS5wYXVzZU9uRXhjZXB0aW9uc1N0YXRlKCkgIT0gU2NyaXB0RGVidWdTZXJ2ZXI6OkRv
bnRQYXVzZU9uRXhjZXB0aW9ucyAmJiBzb3VyY2UgPT0gQ29uc29sZUFQSU1lc3NhZ2VTb3VyY2Ug
JiYgdHlwZSA9PSBBc3NlcnRNZXNzYWdlVHlwZSkKLSAgICAgICAgYnJlYWtQcm9ncmFtKEluc3Bl
Y3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkFzc2VydCwgMCk7CisgICAg
ICAgIGJyZWFrUHJvZ3JhbShJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVh
c29uOjpBc3NlcnQsIG51bGxwdHIpOwogfQogCiBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGJ1aWxkT2JqZWN0Rm9yQnJlYWtwb2ludENvb2tpZShjb25zdCBTdHJpbmcmIHVybCwg
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9u
LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBhY3Rpb25zLCBib29sIGlzUmVnZXgsIGJvb2wgYXV0
b0NvbnRpbnVlKQpAQCAtMzg3LDE2ICszODcsMTYgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnIK
IHsKICAgICBTY3JpcHRzTWFwOjppdGVyYXRvciBzY3JpcHRJdGVyYXRvciA9IG1fc2NyaXB0cy5m
aW5kKHNvdXJjZUlEKTsKICAgICBpZiAoc2NyaXB0SXRlcmF0b3IgPT0gbV9zY3JpcHRzLmVuZCgp
KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgU2NyaXB0
JiBzY3JpcHQgPSBzY3JpcHRJdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKGJyZWFrcG9pbnQubGlu
ZU51bWJlciA8IHNjcmlwdC5zdGFydExpbmUgfHwgc2NyaXB0LmVuZExpbmUgPCBicmVha3BvaW50
LmxpbmVOdW1iZXIpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIHVuc2lnbmVkIGFjdHVhbExpbmVOdW1iZXI7CiAgICAgdW5zaWduZWQgYWN0dWFsQ29s
dW1uTnVtYmVyOwogICAgIEpTQzo6QnJlYWtwb2ludElEIGRlYnVnU2VydmVyQnJlYWtwb2ludElE
ID0gc2NyaXB0RGVidWdTZXJ2ZXIoKS5zZXRCcmVha3BvaW50KHNvdXJjZUlELCBicmVha3BvaW50
LCAmYWN0dWFsTGluZU51bWJlciwgJmFjdHVhbENvbHVtbk51bWJlcik7CiAgICAgaWYgKGRlYnVn
U2VydmVyQnJlYWtwb2ludElEID09IEpTQzo6bm9CcmVha3BvaW50SUQpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEJyZWFrcG9pbnRJZGVudGlmaWVy
VG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHNNYXA6Oml0ZXJhdG9yIGRlYnVnU2VydmVyQnJlYWtw
b2ludElEc0l0ZXJhdG9yID0gbV9icmVha3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVh
a3BvaW50SURzLmZpbmQoYnJlYWtwb2ludElkZW50aWZpZXIpOwogICAgIGlmIChkZWJ1Z1NlcnZl
ckJyZWFrcG9pbnRJRHNJdGVyYXRvciA9PSBtX2JyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1Nl
cnZlckJyZWFrcG9pbnRJRHMuZW5kKCkpCkBAIC02MDQsOSArNjA0LDkgQEAgdm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXJzZVNvdXJjZShKU0M6OlNvdXJjZUlEIHNvdXJjZUlELCBj
b25zdCBTY3JpcHQKIAogICAgIGJvb2wgaGFzU291cmNlVVJMID0gIXNjcmlwdC5zb3VyY2VVUkwu
aXNFbXB0eSgpOwogICAgIFN0cmluZyBzY3JpcHRVUkwgPSBoYXNTb3VyY2VVUkwgPyBzY3JpcHQu
c291cmNlVVJMIDogc2NyaXB0LnVybDsKLSAgICBib29sKiBoYXNTb3VyY2VVUkxQYXJhbSA9IGhh
c1NvdXJjZVVSTCA/ICZoYXNTb3VyY2VVUkwgOiAwOwotICAgIFN0cmluZyogc291cmNlTWFwVVJM
UGFyYW0gPSBzY3JpcHQuc291cmNlTWFwcGluZ1VSTC5pc051bGwoKSA/IDAgOiAmc2NyaXB0LnNv
dXJjZU1hcHBpbmdVUkw7Ci0gICAgY29uc3QgYm9vbCogaXNDb250ZW50U2NyaXB0ID0gc2NyaXB0
LmlzQ29udGVudFNjcmlwdCA/ICZzY3JpcHQuaXNDb250ZW50U2NyaXB0IDogMDsKKyAgICBib29s
KiBoYXNTb3VyY2VVUkxQYXJhbSA9IGhhc1NvdXJjZVVSTCA/ICZoYXNTb3VyY2VVUkwgOiBudWxs
cHRyOworICAgIFN0cmluZyogc291cmNlTWFwVVJMUGFyYW0gPSBzY3JpcHQuc291cmNlTWFwcGlu
Z1VSTC5pc051bGwoKSA/IG51bGxwdHIgOiAmc2NyaXB0LnNvdXJjZU1hcHBpbmdVUkw7CisgICAg
Y29uc3QgYm9vbCogaXNDb250ZW50U2NyaXB0ID0gc2NyaXB0LmlzQ29udGVudFNjcmlwdCA/ICZz
Y3JpcHQuaXNDb250ZW50U2NyaXB0IDogbnVsbHB0cjsKICAgICBTdHJpbmcgc2NyaXB0SURTdHIg
PSBTdHJpbmc6Om51bWJlcihzb3VyY2VJRCk7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNj
cmlwdFBhcnNlZChzY3JpcHRJRFN0ciwgc2NyaXB0VVJMLCBzY3JpcHQuc3RhcnRMaW5lLCBzY3Jp
cHQuc3RhcnRDb2x1bW4sIHNjcmlwdC5lbmRMaW5lLCBzY3JpcHQuZW5kQ29sdW1uLCBpc0NvbnRl
bnRTY3JpcHQsIHNvdXJjZU1hcFVSTFBhcmFtLCBoYXNTb3VyY2VVUkxQYXJhbSk7CiAKQEAgLTY5
MCw3ICs2OTAsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFNhbXBsZVByb2Jl
KEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgaW50IHBybwogCiB2b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmRpZENvbnRpbnVlKCkKIHsKLSAgICBtX3BhdXNlZFNjcmlwdFN0YXRlID0g
MDsKKyAgICBtX3BhdXNlZFNjcmlwdFN0YXRlID0gbnVsbHB0cjsKICAgICBtX2N1cnJlbnRDYWxs
U3RhY2sgPSBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgpOwogICAgIGNsZWFyQnJlYWtEZXRhaWxz
KCk7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlc3VtZWQoKTsKQEAgLTczNSw3ICs3MzUs
NyBAQCBib29sIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmFzc2VydFBhdXNlZChFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcpCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFyQnJlYWtE
ZXRhaWxzKCkKIHsKICAgICBtX2JyZWFrUmVhc29uID0gSW5zcGVjdG9yRGVidWdnZXJGcm9udGVu
ZERpc3BhdGNoZXI6OlJlYXNvbjo6T3RoZXI7Ci0gICAgbV9icmVha0F1eERhdGEgPSAwOworICAg
IG1fYnJlYWtBdXhEYXRhID0gbnVsbHB0cjsKIH0KIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpkaWRDbGVhckdsb2JhbE9iamVjdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCmluZGV4IDNjNzRhYzguLjA2MDU3YmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3Qu
Y3BwCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2Nvbm5lY3QoKQogICAg
IHsKICAgICAgICAgbV9mcm9udGVuZEFwaU9iamVjdCA9IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVj
dCgpOwotICAgICAgICBtX2Zyb250ZW5kSG9zdCA9IDA7CisgICAgICAgIG1fZnJvbnRlbmRIb3N0
ID0gbnVsbHB0cjsKICAgICB9CiAgICAgCiBwcml2YXRlOgpAQCAtMTE0LDcgKzExNCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rp
b24obV9mcm9udGVuZEFwaU9iamVjdCwgImNvbnRleHRNZW51Q2xlYXJlZCIsIFdlYkNvcmU6OmZ1
bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICAgICAgICAgIGZ1bmN0aW9uLmNh
bGwoKTsKIAotICAgICAgICAgICAgbV9mcm9udGVuZEhvc3QtPm1fbWVudVByb3ZpZGVyID0gMDsK
KyAgICAgICAgICAgIG1fZnJvbnRlbmRIb3N0LT5tX21lbnVQcm92aWRlciA9IG51bGxwdHI7CiAg
ICAgICAgIH0KICAgICAgICAgbV9pdGVtcy5jbGVhcigpOwogICAgIH0KQEAgLTEyOSw3ICsxMjks
NyBAQCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6Okluc3BlY3RvckZyb250ZW5kSG9zdChJbnNwZWN0
b3JGcm9udGVuZENsaWVudCogY2xpZW50LCBQYQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAg
ICwgbV9mcm9udGVuZFBhZ2UoZnJvbnRlbmRQYWdlKQogI2lmIEVOQUJMRShDT05URVhUX01FTlVT
KQotICAgICwgbV9tZW51UHJvdmlkZXIoMCkKKyAgICAsIG1fbWVudVByb3ZpZGVyKG51bGxwdHIp
CiAjZW5kaWYKIHsKIH0KQEAgLTE0MSwxMiArMTQxLDEyIEBAIEluc3BlY3RvckZyb250ZW5kSG9z
dDo6fkluc3BlY3RvckZyb250ZW5kSG9zdCgpCiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0
OjpkaXNjb25uZWN0Q2xpZW50KCkKIHsKLSAgICBtX2NsaWVudCA9IDA7CisgICAgbV9jbGllbnQg
PSBudWxscHRyOwogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIGlmIChtX21lbnVQcm92
aWRlcikKICAgICAgICAgbV9tZW51UHJvdmlkZXItPmRpc2Nvbm5lY3QoKTsKICNlbmRpZgotICAg
IG1fZnJvbnRlbmRQYWdlID0gMDsKKyAgICBtX2Zyb250ZW5kUGFnZSA9IG51bGxwdHI7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojpsb2FkZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHAKaW5kZXgg
YTE4MDlmNC4uNTQ4MzBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwCkBAIC01Niw3ICs1Niw3IEBAIEluc3Bl
Y3RvckhlYXBQcm9maWxlckFnZW50OjpJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0CiAKIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50Ojp+SW5zcGVj
dG9ySGVhcFByb2ZpbGVyQWdlbnQoKQogewotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0
SW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQoMCk7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRz
LT5zZXRJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudChudWxscHRyKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6cmVzZXRTdGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAppbmRleCA0N2Y0MjU3
Li5kYjQ1MWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTIxNiw3ICsyMTYsNyBAQCBzdGF0aWMgUGFzc1JlZlB0
cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb25Gb3JEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KgogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFJlZlB0cjxJREJUcmFuc2Fj
dGlvbj4gaWRiVHJhbnNhY3Rpb24gPSBpZGJEYXRhYmFzZS0+dHJhbnNhY3Rpb24oc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgb2JqZWN0U3RvcmVOYW1lLCBtb2RlLCBlYyk7CiAgICAgaWYgKGVjKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGlk
YlRyYW5zYWN0aW9uOwogfQogCkBAIC0yMjUsNyArMjI1LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8
SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlRm9yVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24q
IGlkYlQKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBSZWZQdHI8SURCT2JqZWN0U3Rv
cmU+IGlkYk9iamVjdFN0b3JlID0gaWRiVHJhbnNhY3Rpb24tPm9iamVjdFN0b3JlKG9iamVjdFN0
b3JlTmFtZSwgZWMpOwogICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIHJldHVybiBpZGJPYmplY3RTdG9yZTsKIH0KIApAQCAtMjM0LDcg
KzIzNCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPElEQkluZGV4PiBpbmRleEZvck9iamVjdFN0b3Jl
KElEQk9iamVjdFN0b3JlKiBpZGJPYmplY3RTdG9yZSwKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKICAgICBSZWZQdHI8SURCSW5kZXg+IGlkYkluZGV4ID0gaWRiT2JqZWN0U3RvcmUtPmluZGV4
KGluZGV4TmFtZSwgZWMpOwogICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBpZGJJbmRleDsKIH0KIApAQCAtMzM2LDcgKzMz
Niw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gaWRiS2V5RnJvbUluc3BlY3Rvck9iamVj
dChJbnNwZWN0b3JPYmplY3QqIGtleSkKIAogICAgIFN0cmluZyB0eXBlOwogICAgIGlmICgha2V5
LT5nZXRTdHJpbmcoInR5cGUiLCAmdHlwZSkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBudW1iZXIs
IChBU0NJSUxpdGVyYWwoIm51bWJlciIpKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJp
bmcsIHN0cmluZywgKEFTQ0lJTGl0ZXJhbCgic3RyaW5nIikpKTsKQEAgLTM0NiwxNyArMzQ2LDE3
IEBAIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gaWRiS2V5RnJvbUluc3BlY3Rvck9iamVjdChJ
bnNwZWN0b3JPYmplY3QqIGtleSkKICAgICBpZiAodHlwZSA9PSBudW1iZXIpIHsKICAgICAgICAg
ZG91YmxlIG51bWJlcjsKICAgICAgICAgaWYgKCFrZXktPmdldE51bWJlcigibnVtYmVyIiwgJm51
bWJlcikpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgICAgICBpZGJLZXkgPSBJREJLZXk6OmNyZWF0ZU51bWJlcihudW1iZXIpOwogICAgIH0g
ZWxzZSBpZiAodHlwZSA9PSBzdHJpbmcpIHsKICAgICAgICAgU3RyaW5nIHN0cmluZzsKICAgICAg
ICAgaWYgKCFrZXktPmdldFN0cmluZygic3RyaW5nIiwgJnN0cmluZykpCi0gICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBpZGJLZXkgPSBJ
REJLZXk6OmNyZWF0ZVN0cmluZyhzdHJpbmcpOwogICAgIH0gZWxzZSBpZiAodHlwZSA9PSBkYXRl
KSB7CiAgICAgICAgIGRvdWJsZSBkYXRlOwogICAgICAgICBpZiAoIWtleS0+Z2V0TnVtYmVyKCJk
YXRlIiwgJmRhdGUpKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgaWRiS2V5ID0gSURCS2V5OjpjcmVhdGVEYXRlKGRhdGUpOwogICAg
IH0gZWxzZSBpZiAodHlwZSA9PSBhcnJheSkgewogICAgICAgICBJREJLZXk6OktleUFycmF5IGtl
eUFycmF5OwpAQCAtMzY1LDEyICszNjUsMTIgQEAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBp
ZGJLZXlGcm9tSW5zcGVjdG9yT2JqZWN0KEluc3BlY3Rvck9iamVjdCoga2V5KQogICAgICAgICAg
ICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSA9IGFycmF5LT5nZXQoaSk7CiAgICAgICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3Q7CiAgICAgICAgICAgICBpZiAoIXZh
bHVlLT5hc09iamVjdCgmb2JqZWN0KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIGtleUFycmF5LmFwcGVuZChp
ZGJLZXlGcm9tSW5zcGVjdG9yT2JqZWN0KG9iamVjdC5nZXQoKSkpOwogICAgICAgICB9CiAgICAg
ICAgIGlkYktleSA9IElEQktleTo6Y3JlYXRlQXJyYXkoa2V5QXJyYXkpOwogICAgIH0gZWxzZQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4g
aWRiS2V5LnJlbGVhc2UoKTsKIH0KQEAgLTM3OCwyMyArMzc4LDIzIEBAIHN0YXRpYyBQYXNzUmVm
UHRyPElEQktleT4gaWRiS2V5RnJvbUluc3BlY3Rvck9iamVjdChJbnNwZWN0b3JPYmplY3QqIGtl
eSkKIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBpZGJLZXlSYW5nZUZyb21LZXlSYW5n
ZShJbnNwZWN0b3JPYmplY3QqIGtleVJhbmdlKQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGxvd2VyID0ga2V5UmFuZ2UtPmdldE9iamVjdCgibG93ZXIiKTsKLSAgICBSZWZQdHI8SURC
S2V5PiBpZGJMb3dlciA9IGxvd2VyID8gaWRiS2V5RnJvbUluc3BlY3Rvck9iamVjdChsb3dlci5n
ZXQoKSkgOiAwOworICAgIFJlZlB0cjxJREJLZXk+IGlkYkxvd2VyID0gbG93ZXIgPyBpZGJLZXlG
cm9tSW5zcGVjdG9yT2JqZWN0KGxvd2VyLmdldCgpKSA6IG51bGxwdHI7CiAgICAgaWYgKGxvd2Vy
ICYmICFpZGJMb3dlcikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gdXBwZXIgPSBrZXlSYW5nZS0+Z2V0T2Jq
ZWN0KCJ1cHBlciIpOwotICAgIFJlZlB0cjxJREJLZXk+IGlkYlVwcGVyID0gdXBwZXIgPyBpZGJL
ZXlGcm9tSW5zcGVjdG9yT2JqZWN0KHVwcGVyLmdldCgpKSA6IDA7CisgICAgUmVmUHRyPElEQktl
eT4gaWRiVXBwZXIgPSB1cHBlciA/IGlkYktleUZyb21JbnNwZWN0b3JPYmplY3QodXBwZXIuZ2V0
KCkpIDogbnVsbHB0cjsKICAgICBpZiAodXBwZXIgJiYgIWlkYlVwcGVyKQotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBib29sIGxvd2VyT3BlbjsKICAg
ICBpZiAoIWtleVJhbmdlLT5nZXRCb29sZWFuKCJsb3dlck9wZW4iLCAmbG93ZXJPcGVuKSkKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIElEQktleVJhbmdl
OjpMb3dlckJvdW5kVHlwZSBsb3dlckJvdW5kVHlwZSA9IGxvd2VyT3BlbiA/IElEQktleVJhbmdl
OjpMb3dlckJvdW5kT3BlbiA6IElEQktleVJhbmdlOjpMb3dlckJvdW5kQ2xvc2VkOwogCiAgICAg
Ym9vbCB1cHBlck9wZW47CiAgICAgaWYgKCFrZXlSYW5nZS0+Z2V0Qm9vbGVhbigidXBwZXJPcGVu
IiwgJnVwcGVyT3BlbikpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICBJREJLZXlSYW5nZTo6VXBwZXJCb3VuZFR5cGUgdXBwZXJCb3VuZFR5cGUgPSB1cHBl
ck9wZW4gPyBJREJLZXlSYW5nZTo6VXBwZXJCb3VuZE9wZW4gOiBJREJLZXlSYW5nZTo6VXBwZXJC
b3VuZENsb3NlZDsKIAogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4gaWRiS2V5UmFuZ2UgPSBJREJL
ZXlSYW5nZTo6Y3JlYXRlKGlkYkxvd2VyLCBpZGJVcHBlciwgbG93ZXJCb3VuZFR5cGUsIHVwcGVy
Qm91bmRUeXBlKTsKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBDb250aW51ZSBjdXJzb3IgYmVmb3JlIG1ha2luZyBpbmplY3RlZCBzY3JpcHQgY2Fs
bHMsIG90aGVyd2lzZSB0cmFuc2FjdGlvbiBtaWdodCBiZSBmaW5pc2hlZC4KLSAgICAgICAgaWRi
Q3Vyc29yLT5jb250aW51ZUZ1bmN0aW9uKDAsIGVjKTsKKyAgICAgICAgaWRiQ3Vyc29yLT5jb250
aW51ZUZ1bmN0aW9uKG51bGxwdHIsIGVjKTsKICAgICAgICAgaWYgKGVjKSB7CiAgICAgICAgICAg
ICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBjb250aW51ZSBjdXJz
b3IuIik7CiAgICAgICAgICAgICByZXR1cm47CkBAIC01OTEsNyArNTkxLDcgQEAgdm9pZCBJbnNw
ZWN0b3JJbmRleGVkREJBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiAKIHN0YXRpYyBEb2N1
bWVudCogYXNzZXJ0RG9jdW1lbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBGcmFtZSogZnJh
bWUpCiB7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUgPyBmcmFtZS0+ZG9jdW1lbnQo
KSA6IDA7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUgPyBmcmFtZS0+ZG9jdW1lbnQo
KSA6IG51bGxwdHI7CiAKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICAqZXJyb3JTdHJpbmcg
PSAiTm8gZG9jdW1lbnQgZm9yIGdpdmVuIGZyYW1lIGZvdW5kIjsKQEAgLTYwNCw3ICs2MDQsNyBA
QCBzdGF0aWMgSURCRmFjdG9yeSogYXNzZXJ0SURCRmFjdG9yeShFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIERvY3VtZW50KiBkb2N1bWVudAogICAgIERPTVdpbmRvdyogZG9tV2luZG93ID0gZG9j
dW1lbnQtPmRvbVdpbmRvdygpOwogICAgIGlmICghZG9tV2luZG93KSB7CiAgICAgICAgICplcnJv
clN0cmluZyA9ICJObyBJbmRleGVkREIgZmFjdG9yeSBmb3IgZ2l2ZW4gZnJhbWUgZm91bmQiOwot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIElE
QkZhY3RvcnkqIGlkYkZhY3RvcnkgPSBET01XaW5kb3dJbmRleGVkRGF0YWJhc2U6OmluZGV4ZWRE
Qihkb21XaW5kb3cpOwogCkBAIC02NTksNyArNjU5LDcgQEAgdm9pZCBJbnNwZWN0b3JJbmRleGVk
REJBZ2VudDo6cmVxdWVzdERhdGEoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcKIAogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yKG1haW5Xb3JsZEV4ZWNTdGF0ZShmcmFtZSkpOwog
Ci0gICAgUmVmUHRyPElEQktleVJhbmdlPiBpZGJLZXlSYW5nZSA9IGtleVJhbmdlID8gaWRiS2V5
UmFuZ2VGcm9tS2V5UmFuZ2Uoa2V5UmFuZ2UtPmdldCgpKSA6IDA7CisgICAgUmVmUHRyPElEQktl
eVJhbmdlPiBpZGJLZXlSYW5nZSA9IGtleVJhbmdlID8gaWRiS2V5UmFuZ2VGcm9tS2V5UmFuZ2Uo
a2V5UmFuZ2UtPmdldCgpKSA6IG51bGxwdHI7CiAgICAgaWYgKGtleVJhbmdlICYmICFpZGJLZXlS
YW5nZSkgewogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiQ2FuIG5vdCBwYXJzZSBrZXkgcmFuZ2Uu
IjsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCA0Njg1ZjcyLi44MDNjYTRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmNwcApAQCAtOTEsMTQgKzkxLDE0IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBjbGVh
clRpbWVyRXZlbnROYW1lID0gImNsZWFyVGltZXIiOwogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0
IHRpbWVyRmlyZWRFdmVudE5hbWUgPSAidGltZXJGaXJlZCI7CiAKIG5hbWVzcGFjZSB7Ci1zdGF0
aWMgSGFzaFNldDxJbnN0cnVtZW50aW5nQWdlbnRzKj4qIGluc3RydW1lbnRpbmdBZ2VudHNTZXQg
PSAwOworc3RhdGljIEhhc2hTZXQ8SW5zdHJ1bWVudGluZ0FnZW50cyo+KiBpbnN0cnVtZW50aW5n
QWdlbnRzU2V0ID0gbnVsbHB0cjsKIH0KIAogaW50IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
c19mcm9udGVuZENvdW50ZXIgPSAwOwogCiBzdGF0aWMgRnJhbWUqIGZyYW1lRm9yU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewotICAgIEZy
YW1lKiBmcmFtZSA9IDA7CisgICAgRnJhbWUqIGZyYW1lID0gbnVsbHB0cjsKICAgICBpZiAoY29u
dGV4dC0+aXNEb2N1bWVudCgpKQogICAgICAgICBmcmFtZSA9IHRvRG9jdW1lbnQoY29udGV4dCkt
PmZyYW1lKCk7CiAgICAgcmV0dXJuIGZyYW1lOwpAQCAtMzkxLDcgKzM5MSw3IEBAIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNw
YXRjaEV2ZW50T25XaW5kCiAgICAgaW50IHRpbWVsaW5lQWdlbnRJZCA9IDA7CiAgICAgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmlu
c3BlY3RvclRpbWVsaW5lQWdlbnQoKTsKICAgICBpZiAodGltZWxpbmVBZ2VudCAmJiB3aW5kb3ct
Pmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50LnR5cGUoKSkpIHsKLSAgICAgICAgdGltZWxpbmVBZ2Vu
dC0+d2lsbERpc3BhdGNoRXZlbnQoZXZlbnQsIHdpbmRvdyA/IHdpbmRvdy0+ZnJhbWUoKSA6IDAp
OworICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsRGlzcGF0Y2hFdmVudChldmVudCwgd2luZG93
ID8gd2luZG93LT5mcmFtZSgpIDogbnVsbHB0cik7CiAgICAgICAgIHRpbWVsaW5lQWdlbnRJZCA9
IHRpbWVsaW5lQWdlbnQtPmlkKCk7CiAgICAgfQogICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUoaW5zdHJ1bWVudGluZ0FnZW50cywgdGltZWxpbmVBZ2VudElkKTsKQEAg
LTYyNiw3ICs2MjYsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2
ZVJlc291cmNlUmVzcG9uc2VJbXBsKGNvbnN0IEluc3BlY3Rvcklucwogdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlQnV0Q2FuY2VsZWRJbXBs
KEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByKQogewogICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxS
ZWNlaXZlUmVzb3VyY2VSZXNwb25zZShmcmFtZSwgaWRlbnRpZmllciwgcik7Ci0gICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShjb29raWUsIGlk
ZW50aWZpZXIsIGxvYWRlciwgciwgMCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShjb29raWUsIGlkZW50aWZpZXIsIGxvYWRlciwgciwg
bnVsbHB0cik7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZUFm
dGVyWEZyYW1lT3B0aW9uc0RlbmllZEltcGwoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExvYWRlciog
bG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHIpCkBAIC0xMDkzLDcgKzEwOTMsNyBAQCBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
Y2FudmFzQWdlbnRFbmFibGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdAogYm9vbCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVBZ2VudEVuYWJsZWQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKIHsKICAgICBJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRl
eHQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgSW5zcGVjdG9yQ29uc29sZUFnZW50KiBj
b25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzID8gaW5zdHJ1bWVudGluZ0FnZW50cy0+
aW5zcGVjdG9yQ29uc29sZUFnZW50KCkgOiAwOworICAgIEluc3BlY3RvckNvbnNvbGVBZ2VudCog
Y29uc29sZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cyA/IGluc3RydW1lbnRpbmdBZ2VudHMt
Pmluc3BlY3RvckNvbnNvbGVBZ2VudCgpIDogbnVsbHB0cjsKICAgICByZXR1cm4gY29uc29sZUFn
ZW50ICYmIGNvbnNvbGVBZ2VudC0+ZW5hYmxlZCgpOwogfQogCkBAIC0xMTY3LDI0ICsxMTY3LDI0
IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp1bnJlZ2lzdGVySW5zdHJ1bWVudGlu
Z0FnZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzCiAgICAgaW5zdHJ1bWVudGluZ0FnZW50c1NldC0+
cmVtb3ZlKGluc3RydW1lbnRpbmdBZ2VudHMpOwogICAgIGlmIChpbnN0cnVtZW50aW5nQWdlbnRz
U2V0LT5pc0VtcHR5KCkpIHsKICAgICAgICAgZGVsZXRlIGluc3RydW1lbnRpbmdBZ2VudHNTZXQ7
Ci0gICAgICAgIGluc3RydW1lbnRpbmdBZ2VudHNTZXQgPSAwOworICAgICAgICBpbnN0cnVtZW50
aW5nQWdlbnRzU2V0ID0gbnVsbHB0cjsKICAgICB9CiB9CiAKIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmV0cmlldmVUaW1lbGluZUFnZW50KGNvbnN0
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llKQogewogICAgIGlmICghY29v
a2llLmluc3RydW1lbnRpbmdBZ2VudHMoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQg
PSBjb29raWUuaW5zdHJ1bWVudGluZ0FnZW50cygpLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCk7
CiAgICAgaWYgKHRpbWVsaW5lQWdlbnQgJiYgY29va2llLmhhc01hdGNoaW5nVGltZWxpbmVBZ2Vu
dElkKHRpbWVsaW5lQWdlbnQtPmlkKCkpKQogICAgICAgICByZXR1cm4gdGltZWxpbmVBZ2VudDsK
LSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogSW5zdHJ1bWVudGluZ0Fn
ZW50cyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFn
ZShQYWdlKiBwYWdlKQogewogICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBpbnN0cnVtZW50YXRpb25Gb3JQYWdlKHBh
Z2UpOwogfQogCkBAIC0xMTk2LDcgKzExOTYsNyBAQCBJbnN0cnVtZW50aW5nQWdlbnRzKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JSZW5kZXJlcihSZQog
SW5zdHJ1bWVudGluZ0FnZW50cyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50
aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckds
b2JhbFNjb3BlKQogewogICAgIGlmICghd29ya2VyR2xvYmFsU2NvcGUpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gaW5zdHJ1bWVudGF0aW9u
Rm9yV29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpOwogfQogCkBAIC0xMjA0LDcg
KzEyMDQsNyBAQCBJbnN0cnVtZW50aW5nQWdlbnRzKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
Omluc3RydW1lbnRpbmdBZ2VudHNGb3JOb25Eb2N1bWVudAogewogICAgIGlmIChjb250ZXh0LT5p
c1dvcmtlckdsb2JhbFNjb3BlKCkpCiAgICAgICAgIHJldHVybiBpbnN0cnVtZW50YXRpb25Gb3JX
b3JrZXJHbG9iYWxTY29wZShzdGF0aWNfY2FzdDxXb3JrZXJHbG9iYWxTY29wZSo+KGNvbnRleHQp
KTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCA1ZWFlZmY0Li5lMjQ1ODhkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
CkBAIC0yMDUsMTEgKzIwNSwxMSBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IFJlbW92ZSBvbmNl
IHdlIG5vIGxvbmdlciBnZW5lcmF0ZSBzdGFja3Mgb3V0c2lkZSBvZiBJbnNwZWN0b3IuCiAgICAg
c3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShQYWdlKiwgTWVzc2FnZVNvdXJjZSwgTWVz
c2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzUmVmUHRy
PFNjcmlwdENhbGxTdGFjaz4sIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIgPSAwKTsK
ICAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UqLCBNZXNzYWdlU291cmNl
LCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEpTQzo6
RXhlY1N0YXRlKiwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+LCB1bnNpZ25lZCBsb25nIHJl
cXVlc3RJZGVudGlmaWVyID0gMCk7Ci0gICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29s
ZShQYWdlKiwgTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNjcmlwdElELCB1bnNpZ25lZCBsaW5lTnVt
YmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIEpTQzo6RXhlY1N0YXRlKiA9IDAsIHVuc2lnbmVk
IGxvbmcgcmVxdWVzdElkZW50aWZpZXIgPSAwKTsKKyAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdl
VG9Db25zb2xlKFBhZ2UqLCBNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVs
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIHVuc2lnbmVk
IGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgSlNDOjpFeGVjU3RhdGUqID0gbnVs
bHB0ciwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDApOwogCiAgICAgLy8gRklY
TUU6IENvbnZlcnQgdG8gU2NyaXB0QXJndW1lbnRzIHRvIG1hdGNoIG5vbi13b3JrZXIgY29udGV4
dC4KICAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFdvcmtlckdsb2JhbFNjb3Bl
KiwgTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4sIHVuc2lnbmVkIGxvbmcgcmVx
dWVzdElkZW50aWZpZXIgPSAwKTsKLSAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xl
KFdvcmtlckdsb2JhbFNjb3BlKiwgTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VM
ZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNjcmlwdElELCB1bnNp
Z25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIEpTQzo6RXhlY1N0YXRlKiA9
IDAsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIgPSAwKTsKKyAgICBzdGF0aWMgdm9p
ZCBhZGRNZXNzYWdlVG9Db25zb2xlKFdvcmtlckdsb2JhbFNjb3BlKiwgTWVzc2FnZVNvdXJjZSwg
TWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBT
dHJpbmcmIHNjcmlwdElELCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1i
ZXIsIEpTQzo6RXhlY1N0YXRlKiA9IG51bGxwdHIsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50
aWZpZXIgPSAwKTsKIAogICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVDb3VudChQYWdlKiwgSlNDOjpF
eGVjU3RhdGUqLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4pOwogICAgIHN0YXRpYyB2b2lk
IHN0YXJ0Q29uc29sZVRpbWluZyhGcmFtZSosIGNvbnN0IFN0cmluZyYgdGl0bGUpOwpAQCAtMTg4
NCw3ICsxODg0LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwc2V1
ZG9FbGVtZW50RGVzdHJveWVkKFBhZ2UqIHBhZ2UsIFBzZXVkb0UKIGlubGluZSBJbnN0cnVtZW50
aW5nQWdlbnRzKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNG
b3JDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKCFj
b250ZXh0KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
aWYgKGNvbnRleHQtPmlzRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGluc3RydW1lbnRpbmdB
Z2VudHNGb3JQYWdlKHRvRG9jdW1lbnQoY29udGV4dCktPnBhZ2UoKSk7CiAgICAgcmV0dXJuIGlu
c3RydW1lbnRpbmdBZ2VudHNGb3JOb25Eb2N1bWVudENvbnRleHQoY29udGV4dCk7CkBAIC0xODk0
LDcgKzE4OTQsNyBAQCBpbmxpbmUgSW5zdHJ1bWVudGluZ0FnZW50cyogSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbQogewogICAgIGlmIChmcmFtZSkK
ICAgICAgICAgcmV0dXJuIGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKGZyYW1lLT5wYWdlKCkp
OwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBpbmxpbmUgSW5zdHJ1
bWVudGluZ0FnZW50cyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdl
bnRzRm9yRG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTkwNyw3ICsxOTA3LDcgQEAg
aW5saW5lIEluc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5z
dHJ1bWVudGluZ0FnZW50c0ZvckRvY3UKICNlbmRpZgogICAgICAgICByZXR1cm4gaW5zdHJ1bWVu
dGluZ0FnZW50c0ZvclBhZ2UocGFnZSk7CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJldHVy
biBudWxscHRyOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCmluZGV4IDM4NWEzOTcuLmMwZmMyNjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFn
ZW50LmNwcApAQCAtODksNyArODksNyBAQCB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojpl
bmFibGUoRXJyb3JTdHJpbmcqKQogCiB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpkaXNh
YmxlKEVycm9yU3RyaW5nKikKIHsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3Bl
Y3RvckxheWVyVHJlZUFnZW50KDApOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQobnVsbHB0cik7CiB9CiAKIHZvaWQgSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQ6OmxheWVyVHJlZURpZENoYW5nZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yTm9kZUZpbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yTm9kZUZpbmRlci5jcHAKaW5kZXggOGUxMGMyNy4uZmViZDVhMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5vZGVGaW5kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOb2RlRmluZGVyLmNwcApA
QCAtMTM0LDcgKzEzNCw3IEBAIGJvb2wgSW5zcGVjdG9yTm9kZUZpbmRlcjo6bWF0Y2hlc0VsZW1l
bnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHZvaWQgSW5zcGVjdG9yTm9kZUZpbmRlcjo6c2Vh
cmNoVXNpbmdYUGF0aChOb2RlKiBwYXJlbnROb2RlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIFJlZlB0cjxYUGF0aFJlc3VsdD4gcmVzdWx0ID0gcGFyZW50Tm9kZS0+ZG9jdW1l
bnQoKS5ldmFsdWF0ZShtX3doaXRlc3BhY2VUcmltbWVkUXVlcnksIHBhcmVudE5vZGUsIDAsIFhQ
YXRoUmVzdWx0OjpPUkRFUkVEX05PREVfU05BUFNIT1RfVFlQRSwgMCwgZWMpOworICAgIFJlZlB0
cjxYUGF0aFJlc3VsdD4gcmVzdWx0ID0gcGFyZW50Tm9kZS0+ZG9jdW1lbnQoKS5ldmFsdWF0ZSht
X3doaXRlc3BhY2VUcmltbWVkUXVlcnksIHBhcmVudE5vZGUsIG51bGxwdHIsIFhQYXRoUmVzdWx0
OjpPUkRFUkVEX05PREVfU05BUFNIT1RfVFlQRSwgbnVsbHB0ciwgZWMpOwogICAgIGlmIChlYyB8
fCAhcmVzdWx0KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JPdmVybGF5LmNwcAppbmRleCAwYmQ4NjliLi4wY2FhZDdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCkBAIC02NTgsNyArNjU4
LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvckVs
ZW1lbnRJbmZvKE5vZGUqIG5vZGUpCiAgICAgRnJhbWUqIGNvbnRhaW5pbmdGcmFtZSA9IG5vZGUt
PmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBGcmFtZVZpZXcqIGNvbnRhaW5pbmdWaWV3ID0gY29u
dGFpbmluZ0ZyYW1lLT52aWV3KCk7CiAgICAgSW50UmVjdCBib3VuZGluZ0JveCA9IHBpeGVsU25h
cHBlZEludFJlY3QoY29udGFpbmluZ1ZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhyZW5kZXJlci0+
YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSkpOwotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBt
b2RlbE9iamVjdCA9IHJlbmRlcmVyLT5pc0JveE1vZGVsT2JqZWN0KCkgPyB0b1JlbmRlckJveE1v
ZGVsT2JqZWN0KHJlbmRlcmVyKSA6IDA7CisgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIG1vZGVs
T2JqZWN0ID0gcmVuZGVyZXItPmlzQm94TW9kZWxPYmplY3QoKSA/IHRvUmVuZGVyQm94TW9kZWxP
YmplY3QocmVuZGVyZXIpIDogbnVsbHB0cjsKICAgICBlbGVtZW50SW5mby0+c2V0U3RyaW5nKCJu
b2RlV2lkdGgiLCBTdHJpbmc6Om51bWJlcihtb2RlbE9iamVjdCA/IGFkanVzdEZvckFic29sdXRl
Wm9vbShtb2RlbE9iamVjdC0+cGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgKm1vZGVsT2JqZWN0
KSA6IGJvdW5kaW5nQm94LndpZHRoKCkpKTsKICAgICBlbGVtZW50SW5mby0+c2V0U3RyaW5nKCJu
b2RlSGVpZ2h0IiwgU3RyaW5nOjpudW1iZXIobW9kZWxPYmplY3QgPyBhZGp1c3RGb3JBYnNvbHV0
ZVpvb20obW9kZWxPYmplY3QtPnBpeGVsU25hcHBlZE9mZnNldEhlaWdodCgpLCAqbW9kZWxPYmpl
Y3QpIDogYm91bmRpbmdCb3guaGVpZ2h0KCkpKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggY2Y3YjFiYS4uZTQ3ZmZkZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAK
QEAgLTE5Myw3ICsxOTMsNyBAQCBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3Vy
Y2VDb250ZW50KENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSwgUwogICAgICAgICB9CiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSZXNvdXJjZUJ1ZmZlciogYnVmZmVyID0gY2Fj
aGVkUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCk7Ci0gICAgICAgICAgICByZXR1cm4gZGVjb2Rl
QnVmZmVyKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogMCwgYnVmZmVyID8gYnVmZmVyLT5zaXpl
KCkgOiAwLCBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RpbmcoKSwgcmVzdWx0KTsKKyAgICAgICAgICAg
IHJldHVybiBkZWNvZGVCdWZmZXIoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBi
dWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIGNhY2hlZFJlc291cmNlLT5lbmNvZGluZygpLCBy
ZXN1bHQpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTIxMiw3ICsy
MTIsNyBAQCBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudChGcmFt
ZSogZnJhbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZQogLy8gc3RhdGljCiBib29sIEluc3BlY3Rv
clBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVu
Y29kZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/
IGJ1ZmZlci0+ZGF0YSgpIDogMCwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5j
b2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOworICAgIHJldHVybiBkYXRhQ29u
dGVudChidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+
c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsK
IH0KIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IGNoYXIqIGRh
dGEsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3
aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKQEAgLTM4NywxNCArMzg3LDE0IEBAIHZv
aWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKIHsKICAgICBtX2Vu
YWJsZWQgPSBmYWxzZTsKICAgICBtX3NjcmlwdHNUb0V2YWx1YXRlT25Mb2FkLmNsZWFyKCk7Ci0g
ICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JQYWdlQWdlbnQoMCk7CisgICAg
bV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JQYWdlQWdlbnQobnVsbHB0cik7CiAK
LSAgICBzZXRTY3JpcHRFeGVjdXRpb25EaXNhYmxlZCgwLCBtX29yaWdpbmFsU2NyaXB0RXhlY3V0
aW9uRGlzYWJsZWQpOwotICAgIHNldFNob3dQYWludFJlY3RzKDAsIGZhbHNlKTsKLSAgICBzZXRT
aG93RGVidWdCb3JkZXJzKDAsIGZhbHNlKTsKLSAgICBzZXRTaG93RlBTQ291bnRlcigwLCBmYWxz
ZSk7Ci0gICAgc2V0RW11bGF0ZWRNZWRpYSgwLCAiIik7Ci0gICAgc2V0Q29udGludW91c1BhaW50
aW5nRW5hYmxlZCgwLCBmYWxzZSk7CisgICAgc2V0U2NyaXB0RXhlY3V0aW9uRGlzYWJsZWQobnVs
bHB0ciwgbV9vcmlnaW5hbFNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkKTsKKyAgICBzZXRTaG93UGFp
bnRSZWN0cyhudWxscHRyLCBmYWxzZSk7CisgICAgc2V0U2hvd0RlYnVnQm9yZGVycyhudWxscHRy
LCBmYWxzZSk7CisgICAgc2V0U2hvd0ZQU0NvdW50ZXIobnVsbHB0ciwgZmFsc2UpOworICAgIHNl
dEVtdWxhdGVkTWVkaWEobnVsbHB0ciwgIiIpOworICAgIHNldENvbnRpbnVvdXNQYWludGluZ0Vu
YWJsZWQobnVsbHB0ciwgZmFsc2UpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6YWRk
U2NyaXB0VG9FdmFsdWF0ZU9uTG9hZChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc291cmNl
LCBTdHJpbmcqIGlkZW50aWZpZXIpCkBAIC04MDEsNyArODAxLDcgQEAgRnJhbWUqIEluc3BlY3Rv
clBhZ2VBZ2VudDo6bWFpbkZyYW1lKCkKIAogRnJhbWUqIEluc3BlY3RvclBhZ2VBZ2VudDo6ZnJh
bWVGb3JJZChjb25zdCBTdHJpbmcmIGZyYW1lSWQpCiB7Ci0gICAgcmV0dXJuIGZyYW1lSWQuaXNF
bXB0eSgpID8gMCA6IG1faWRlbnRpZmllclRvRnJhbWUuZ2V0KGZyYW1lSWQpOworICAgIHJldHVy
biBmcmFtZUlkLmlzRW1wdHkoKSA/IG51bGxwdHIgOiBtX2lkZW50aWZpZXJUb0ZyYW1lLmdldChm
cmFtZUlkKTsKIH0KIAogU3RyaW5nIEluc3BlY3RvclBhZ2VBZ2VudDo6ZnJhbWVJZChGcmFtZSog
ZnJhbWUpCkBAIC04NDEsNyArODQxLDcgQEAgRnJhbWUqIEluc3BlY3RvclBhZ2VBZ2VudDo6Zmlu
ZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luUmF3U3QKICAgICAg
ICAgaWYgKGRvY3VtZW50T3JpZ2luLT50b1Jhd1N0cmluZygpID09IG9yaWdpblJhd1N0cmluZykK
ICAgICAgICAgICAgIHJldHVybiBmcmFtZTsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKIEZyYW1lKiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmFzc2VydEZyYW1l
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZUlkKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCmlu
ZGV4IDM2OTMyZTEuLjFmMjVhM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBJbnNwZWN0
b3JQcm9maWxlckFnZW50OjpJbnNwZWN0b3JQcm9maWxlckFnZW50KEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbgogCiBJbnNwZWN0b3JQcm9maWxlckFnZW50Ojp+SW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudCgpCiB7Ci0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JQ
cm9maWxlckFnZW50KDApOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9y
UHJvZmlsZXJBZ2VudChudWxscHRyKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50
OjphZGRQcm9maWxlKFBhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJwUHJvZmlsZSwgdW5zaWdu
ZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9m
aWxlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudC5oCmluZGV4IGI4YzBkZGYuLjJhMmI3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaApAQCAtNzksOCArNzksOCBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgc3RhcnQoRXJyb3JTdHJpbmcqID0gMCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHN0b3AoRXJyb3JTdHJpbmcqID0gMCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN0
YXJ0KEVycm9yU3RyaW5nKiA9IG51bGxwdHIpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBz
dG9wKEVycm9yU3RyaW5nKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkaXNhYmxl
KCk7CiAgICAgdm9pZCBlbmFibGUoYm9vbCBza2lwUmVjb21waWxlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCBkZTI5
MGNmLi4zMjQ0ZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgc3RhdGljIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVxdWVzdD4gYnVpbGRPYmplY3RG
b3JSZXNvdXIKIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdv
cms6OlJlc3BvbnNlPiBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7CiAgICAgaWYg
KHJlc3BvbnNlLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICBkb3VibGUgc3RhdHVzID0gcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKTsK
ICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBoZWFkZXJzID0gYnVpbGRPYmplY3RGb3JIZWFk
ZXJzKHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKSk7CkBAIC0xODYsNyArMTg2LDcgQEAgdm9p
ZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBEb2N1bWVudEwKICAgICBTdHJpbmcgcmVxdWVzdElkID0gSWRlbnRpZmllcnNG
YWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllcik7CiAgICAgbV9yZXNvdXJjZXNEYXRhLT5yZXNv
dXJjZUNyZWF0ZWQocmVxdWVzdElkLCBtX3BhZ2VBZ2VudC0+bG9hZGVySWQobG9hZGVyKSk7CiAK
LSAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UgPSBsb2FkZXIgPyBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmNhY2hlZFJlc291cmNlKGxvYWRlci0+ZnJhbWUoKSwgcmVxdWVzdC51cmwoKSkg
OiAwOworICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSA9IGxvYWRlciA/IEluc3Bl
Y3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2UobG9hZGVyLT5mcmFtZSgpLCByZXF1ZXN0LnVy
bCgpKSA6IG51bGxwdHI7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgdHlw
ZSA9IGNhY2hlZFJlc291cmNlID8gSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZVR5
cGUoKmNhY2hlZFJlc291cmNlKSA6IG1fcmVzb3VyY2VzRGF0YS0+cmVzb3VyY2VUeXBlKHJlcXVl
c3RJZCk7CiAgICAgaWYgKHR5cGUgPT0gSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291cmNl
KSB7CiAgICAgICAgIGlmIChtX2xvYWRpbmdYSFJTeW5jaHJvbm91c2x5KQpAQCAtMjE5LDggKzIx
OSw4IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMCiAKICAgICBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkVudW0gcmVzb3VyY2VUeXBlID0gSW5zcGVjdG9yUGFn
ZUFnZW50OjpyZXNvdXJjZVR5cGVKc29uKHR5cGUpOwogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gaW5pdGlhdG9yT2JqZWN0ID0gYnVpbGRJ
bml0aWF0b3JPYmplY3QobG9hZGVyLT5mcmFtZSgpID8gbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVu
dCgpIDogMCk7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RXaWxsQmVTZW50KHJl
cXVlc3RJZCwgbV9wYWdlQWdlbnQtPmZyYW1lSWQobG9hZGVyLT5mcmFtZSgpKSwgbV9wYWdlQWdl
bnQtPmxvYWRlcklkKGxvYWRlciksIGxvYWRlci0+dXJsKCkuc3RyaW5nKCksIGJ1aWxkT2JqZWN0
Rm9yUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBjdXJyZW50VGltZSgpLCBpbml0aWF0b3JPYmpl
Y3QsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShyZWRpcmVjdFJlc3BvbnNlLCBsb2Fk
ZXIpLCB0eXBlICE9IEluc3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZSA/ICZyZXNvdXJj
ZVR5cGUgOiAwKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6
SW5pdGlhdG9yPiBpbml0aWF0b3JPYmplY3QgPSBidWlsZEluaXRpYXRvck9iamVjdChsb2FkZXIt
PmZyYW1lKCkgPyBsb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkgOiBudWxscHRyKTsKKyAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVxdWVzdFdpbGxCZVNlbnQocmVxdWVzdElkLCBtX3BhZ2VB
Z2VudC0+ZnJhbWVJZChsb2FkZXItPmZyYW1lKCkpLCBtX3BhZ2VBZ2VudC0+bG9hZGVySWQobG9h
ZGVyKSwgbG9hZGVyLT51cmwoKS5zdHJpbmcoKSwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVl
c3QocmVxdWVzdCksIGN1cnJlbnRUaW1lKCksIGluaXRpYXRvck9iamVjdCwgYnVpbGRPYmplY3RG
b3JSZXNvdXJjZVJlc3BvbnNlKHJlZGlyZWN0UmVzcG9uc2UsIGxvYWRlciksIHR5cGUgIT0gSW5z
cGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291cmNlID8gJnJlc291cmNlVHlwZSA6IG51bGxwdHIp
OwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6Om1hcmtSZXNvdXJjZUFzQ2FjaGVk
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIERvY3VtZQogCiAgICAgYm9vbCBpc05vdE1vZGlmaWVkID0gcmVzcG9uc2UuaHR0cFN0
YXR1c0NvZGUoKSA9PSAzMDQ7CiAKLSAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2Ug
PSAwOworICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSA9IG51bGxwdHI7CiAgICAg
aWYgKHJlc291cmNlTG9hZGVyICYmIHJlc291cmNlTG9hZGVyLT5pc1N1YnJlc291cmNlTG9hZGVy
KCkgJiYgIWlzTm90TW9kaWZpZWQpCiAgICAgICAgIGNhY2hlZFJlc291cmNlID0gc3RhdGljX2Nh
c3Q8U3VicmVzb3VyY2VMb2FkZXIqPihyZXNvdXJjZUxvYWRlciktPmNhY2hlZFJlc291cmNlKCk7
CiAgICAgaWYgKCFjYWNoZWRSZXNvdXJjZSkKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIERvY3VtZQogICAgIC8vIElmIHdlIHJldmFsaWRhdGVkIHRoZSByZXNvdXJjZSBhbmQg
Z290IE5vdCBtb2RpZmllZCwgc2VuZCBjb250ZW50IGxlbmd0aCBmb2xsb3dpbmcgZGlkUmVjZWl2
ZVJlc3BvbnNlCiAgICAgLy8gYXMgdGhlcmUgd2lsbCBiZSBubyBjYWxscyB0byBkaWRSZWNlaXZl
RGF0YSBmcm9tIHRoZSBuZXR3b3JrIHN0YWNrLgogICAgIGlmIChpc05vdE1vZGlmaWVkICYmIGNh
Y2hlZFJlc291cmNlICYmIGNhY2hlZFJlc291cmNlLT5lbmNvZGVkU2l6ZSgpKQotICAgICAgICBk
aWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCAwLCBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RlZFNpemUo
KSwgMCk7CisgICAgICAgIGRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsIG51bGxwdHIsIGNhY2hl
ZFJlc291cmNlLT5lbmNvZGVkU2l6ZSgpLCAwKTsKIH0KIAogc3RhdGljIGJvb2wgaXNFcnJvclN0
YXR1c0NvZGUoaW50IHN0YXR1c0NvZGUpCkBAIC0yOTAsNyArMjkwLDcgQEAgdm9pZCBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgRG9jdW1lbnQKICAgICBTdHJpbmcgcmVxdWVzdElkID0gSWRlbnRpZmllcnNGYWN0b3J5Ojpy
ZXF1ZXN0SWQoaWRlbnRpZmllcik7CiAgICAgaWYgKG1fcmVzb3VyY2VzRGF0YS0+cmVzb3VyY2VU
eXBlKHJlcXVlc3RJZCkgPT0gSW5zcGVjdG9yUGFnZUFnZW50OjpEb2N1bWVudFJlc291cmNlKSB7
CiAgICAgICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gYnVmZmVyID0gbG9hZGVyLT5mcmFtZUxv
YWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgICAgIG1f
cmVzb3VyY2VzRGF0YS0+YWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIocmVxdWVzdElkLCBidWZmZXIg
PyBidWZmZXItPnNoYXJlZEJ1ZmZlcigpIDogMCwgbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgp
LT5pbnB1dEVuY29kaW5nKCkpOworICAgICAgICBtX3Jlc291cmNlc0RhdGEtPmFkZFJlc291cmNl
U2hhcmVkQnVmZmVyKHJlcXVlc3RJZCwgYnVmZmVyID8gYnVmZmVyLT5zaGFyZWRCdWZmZXIoKSA6
IG51bGxwdHIsIGxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+aW5wdXRFbmNvZGluZygpKTsK
ICAgICB9CiAKICAgICBtX3Jlc291cmNlc0RhdGEtPm1heWJlRGVjb2RlRGF0YVRvQ29udGVudChy
ZXF1ZXN0SWQpOwpAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50CiAg
ICAgaWYgKHJlc291cmNlRGF0YSAmJiByZXNvdXJjZURhdGEtPmNhY2hlZFJlc291cmNlKCkpCiAg
ICAgICAgIHNvdXJjZU1hcHBpbmdVUkwgPSBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNvdXJjZU1hcFVS
TEZvclJlc291cmNlKHJlc291cmNlRGF0YS0+Y2FjaGVkUmVzb3VyY2UoKSk7CiAKLSAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlci0+bG9hZGluZ0ZpbmlzaGVkKHJlcXVlc3RJZCwgZmluaXNoVGltZSwg
IXNvdXJjZU1hcHBpbmdVUkwuaXNFbXB0eSgpID8gJnNvdXJjZU1hcHBpbmdVUkwgOiAwKTsKKyAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+bG9hZGluZ0ZpbmlzaGVkKHJlcXVlc3RJZCwgZmluaXNo
VGltZSwgIXNvdXJjZU1hcHBpbmdVUkwuaXNFbXB0eSgpID8gJnNvdXJjZU1hcHBpbmdVUkwgOiBu
dWxscHRyKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRGYWlsTG9hZGlu
Zyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQpAQCAtMzE0LDE1ICszMTQsMTUgQEAgdm9pZCBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjpkaWRGYWlsTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IERvY3VtZW50TG8KICAgICBTdHJpbmcgcmVxdWVzdElkID0gSWRlbnRpZmllcnNGYWN0b3J5Ojpy
ZXF1ZXN0SWQoaWRlbnRpZmllcik7CiAKICAgICBpZiAobV9yZXNvdXJjZXNEYXRhLT5yZXNvdXJj
ZVR5cGUocmVxdWVzdElkKSA9PSBJbnNwZWN0b3JQYWdlQWdlbnQ6OkRvY3VtZW50UmVzb3VyY2Up
IHsKLSAgICAgICAgRnJhbWUqIGZyYW1lID0gbG9hZGVyID8gbG9hZGVyLT5mcmFtZSgpIDogMDsK
KyAgICAgICAgRnJhbWUqIGZyYW1lID0gbG9hZGVyID8gbG9hZGVyLT5mcmFtZSgpIDogbnVsbHB0
cjsKICAgICAgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigp
ICYmIGZyYW1lLT5kb2N1bWVudCgpKSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVzb3VyY2VCdWZm
ZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3Vy
Y2VEYXRhKCk7Ci0gICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEtPmFkZFJlc291cmNlU2hhcmVk
QnVmZmVyKHJlcXVlc3RJZCwgYnVmZmVyID8gYnVmZmVyLT5zaGFyZWRCdWZmZXIoKSA6IDAsIGZy
YW1lLT5kb2N1bWVudCgpLT5pbnB1dEVuY29kaW5nKCkpOworICAgICAgICAgICAgbV9yZXNvdXJj
ZXNEYXRhLT5hZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihyZXF1ZXN0SWQsIGJ1ZmZlciA/IGJ1ZmZl
ci0+c2hhcmVkQnVmZmVyKCkgOiBudWxscHRyLCBmcmFtZS0+ZG9jdW1lbnQoKS0+aW5wdXRFbmNv
ZGluZygpKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGJvb2wgY2FuY2VsZWQgPSBlcnJvci5p
c0NhbmNlbGxhdGlvbigpOwotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5sb2FkaW5nRmFpbGVk
KHJlcXVlc3RJZCwgY3VycmVudFRpbWUoKSwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSwg
Y2FuY2VsZWQgPyAmY2FuY2VsZWQgOiAwKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+bG9h
ZGluZ0ZhaWxlZChyZXF1ZXN0SWQsIGN1cnJlbnRUaW1lKCksIGVycm9yLmxvY2FsaXplZERlc2Ny
aXB0aW9uKCksIGNhbmNlbGVkID8gJmNhbmNlbGVkIDogbnVsbHB0cik7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIsIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKQEAgLTMzOSw3ICsz
MzksNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZExvYWRSZXNvdXJjZUZyb21N
ZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciogbG9hZAogICAgICAgICBtX3Jlc291cmNlc0RhdGEt
PnJldXNlWEhSUmVwbGF5RGF0YShyZXF1ZXN0SWQsIHJhd1JlcXVlc3RJZCk7CiAgICAgfQogCi0g
ICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gaW5p
dGlhdG9yT2JqZWN0ID0gYnVpbGRJbml0aWF0b3JPYmplY3QobG9hZGVyLT5mcmFtZSgpID8gbG9h
ZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpIDogMCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gaW5pdGlhdG9yT2JqZWN0ID0gYnVpbGRJbml0
aWF0b3JPYmplY3QobG9hZGVyLT5mcmFtZSgpID8gbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgp
IDogbnVsbHB0cik7CiAKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVxdWVzdFNlcnZlZEZy
b21NZW1vcnlDYWNoZShyZXF1ZXN0SWQsIGZyYW1lSWQsIGxvYWRlcklkLCBsb2FkZXItPnVybCgp
LnN0cmluZygpLCBjdXJyZW50VGltZSgpLCBpbml0aWF0b3JPYmplY3QsIGJ1aWxkT2JqZWN0Rm9y
Q2FjaGVkUmVzb3VyY2UocmVzb3VyY2UsIGxvYWRlcikpOwogfQpAQCAtNTM5LDcgKzUzOSw3IEBA
IHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZW5hYmxlKCkKIHZvaWQgSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiB7CiAgICAgbV9lbmFibGVkID0gZmFs
c2U7Ci0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JSZXNvdXJjZUFnZW50
KDApOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dChudWxscHRyKTsKICAgICBtX3Jlc291cmNlc0RhdGEtPmNsZWFyKCk7CiAgICAgbV9leHRyYVJl
cXVlc3RIZWFkZXJzLmNsZWFyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCmluZGV4IGI0N2Q4MzYuLmEyYTM0ZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3Bw
CkBAIC02NCw3ICs2NCw3IEBAIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6SW5zcGVjdG9yUnVudGlt
ZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBCiAgICAgLCBtX2VuYWJs
ZWQoZmFsc2UpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1h
bmFnZXIpCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgLCBtX3NjcmlwdERl
YnVnU2VydmVyKDApCisgICAgLCBtX3NjcmlwdERlYnVnU2VydmVyKG51bGxwdHIpCiAjZW5kaWYK
IHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHls
ZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
LmNwcAppbmRleCBjYWE0NGNlLi41MGI1MDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBQ
YXJzZWRTdHlsZVNoZWV0OjpzZXRTb3VyY2VEYXRhKFBhc3NPd25QdHI8UnVsZVNvdXJjZURhdGFM
aXN0PiBzb3VyY2VEYXRhKQogUGFzc1JlZlB0cjxXZWJDb3JlOjpDU1NSdWxlU291cmNlRGF0YT4g
UGFyc2VkU3R5bGVTaGVldDo6cnVsZVNvdXJjZURhdGFBdCh1bnNpZ25lZCBpbmRleCkgY29uc3QK
IHsKICAgICBpZiAoIWhhc1NvdXJjZURhdGEoKSB8fCBpbmRleCA+PSBtX3NvdXJjZURhdGEtPnNp
emUoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
cmV0dXJuIG1fc291cmNlRGF0YS0+YXQoaW5kZXgpOwogfQpAQCAtMTU3LDcgKzE1Nyw3IEBAIGVu
dW0gTWVkaWFMaXN0U291cmNlIHsKIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNTUzo6U291cmNlUmFuZ2U+IGJ1aWxkU291cmNlUmFuZ2VPYmplY3QoY29uc3QgU291
cmNlUmFuZ2UmIHJhbmdlLCBWZWN0b3I8c2l6ZV90PiogbGluZUVuZGluZ3MpCiB7CiAgICAgaWYg
KCFsaW5lRW5kaW5ncykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIFRleHRQb3NpdGlvbiBzdGFydCA9IENvbnRlbnRTZWFyY2hVdGlsczo6dGV4dFBvc2l0
aW9uRnJvbU9mZnNldChyYW5nZS5zdGFydCwgKmxpbmVFbmRpbmdzKTsKICAgICBUZXh0UG9zaXRp
b24gZW5kID0gQ29udGVudFNlYXJjaFV0aWxzOjp0ZXh0UG9zaXRpb25Gcm9tT2Zmc2V0KHJhbmdl
LmVuZCwgKmxpbmVFbmRpbmdzKTsKIApAQCAtMjAyLDcgKzIwMiw3IEBAIHN0YXRpYyBQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE+IGJ1aWxkTWVkaWFPYmpl
Y3QoY29uc3QKIHN0YXRpYyBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBhc0NTU1J1bGVMaXN0KENT
U1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCiB7CiAgICAgaWYgKCFzdHlsZVNoZWV0KQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8U3RhdGlj
Q1NTUnVsZUxpc3Q+IGxpc3QgPSBTdGF0aWNDU1NSdWxlTGlzdDo6Y3JlYXRlKCk7CiAgICAgVmVj
dG9yPFJlZlB0cjxDU1NSdWxlPj4mIGxpc3RSdWxlcyA9IGxpc3QtPnJ1bGVzKCk7CkBAIC0yMTgs
NyArMjE4LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IGFzQ1NTUnVsZUxpc3Qo
Q1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCkKIHN0YXRpYyBQYXNzUmVmUHRyPENTU1J1bGVMaXN0
PiBhc0NTU1J1bGVMaXN0KENTU1J1bGUqIHJ1bGUpCiB7CiAgICAgaWYgKCFydWxlKQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAocnVsZS0+dHlw
ZSgpID09IENTU1J1bGU6Ok1FRElBX1JVTEUpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxD
U1NNZWRpYVJ1bGUqPihydWxlKS0+Y3NzUnVsZXMoKTsKQEAgLTIzNiw3ICsyMzYsNyBAQCBzdGF0
aWMgUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gYXNDU1NSdWxlTGlzdChDU1NSdWxlKiBydWxlKQog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTU3VwcG9ydHNSdWxlKj4ocnVsZSktPmNzc1J1
bGVzKCk7CiAjZW5kaWYKIAotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQog
CiBzdGF0aWMgdm9pZCBmaWxsTWVkaWFMaXN0Q2hhaW4oQ1NTUnVsZSogcnVsZSwgQXJyYXk8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYT4qIG1lZGlhQXJyYXkpCkBAIC0yNDUs
NyArMjQ1LDcgQEAgc3RhdGljIHZvaWQgZmlsbE1lZGlhTGlzdENoYWluKENTU1J1bGUqIHJ1bGUs
IEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzoKICAgICBDU1NSdWxlKiBwYXJlbnRS
dWxlID0gcnVsZTsKICAgICBTdHJpbmcgc291cmNlVVJMOwogICAgIHdoaWxlIChwYXJlbnRSdWxl
KSB7Ci0gICAgICAgIENTU1N0eWxlU2hlZXQqIHBhcmVudFN0eWxlU2hlZXQgPSAwOworICAgICAg
ICBDU1NTdHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0ID0gbnVsbHB0cjsKICAgICAgICAgYm9v
bCBpc01lZGlhUnVsZSA9IHRydWU7CiAgICAgICAgIGlmIChwYXJlbnRSdWxlLT50eXBlKCkgPT0g
Q1NTUnVsZTo6TUVESUFfUlVMRSkgewogICAgICAgICAgICAgQ1NTTWVkaWFSdWxlKiBtZWRpYVJ1
bGUgPSBzdGF0aWNfY2FzdDxDU1NNZWRpYVJ1bGUqPihwYXJlbnRSdWxlKTsKQEAgLTI1Nyw3ICsy
NTcsNyBAQCBzdGF0aWMgdm9pZCBmaWxsTWVkaWFMaXN0Q2hhaW4oQ1NTUnVsZSogcnVsZSwgQXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOgogICAgICAgICAgICAgcGFyZW50U3R5bGVT
aGVldCA9IGltcG9ydFJ1bGUtPnBhcmVudFN0eWxlU2hlZXQoKTsKICAgICAgICAgICAgIGlzTWVk
aWFSdWxlID0gZmFsc2U7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbWVkaWFMaXN0ID0g
MDsKKyAgICAgICAgICAgIG1lZGlhTGlzdCA9IG51bGxwdHI7CiAKICAgICAgICAgaWYgKHBhcmVu
dFN0eWxlU2hlZXQpIHsKICAgICAgICAgICAgIHNvdXJjZVVSTCA9IHBhcmVudFN0eWxlU2hlZXQt
PmNvbnRlbnRzKCkuYmFzZVVSTCgpOwpAQCAtMzY5LDcgKzM2OSw3IEBAIGJvb2wgSW5zcGVjdG9y
U3R5bGU6OnNldFByb3BlcnR5VGV4dCh1bnNpZ25lZCBpbmRleCwgY29uc3QgU3RyaW5nJiBwcm9w
ZXJ0eVRleHQsCiAgICAgaWYgKHByb3BlcnR5VGV4dC5zdHJpcFdoaXRlU3BhY2UoKS5sZW5ndGgo
KSkgewogICAgICAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gdGVtcE11dGFibGVT
dHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgICAgICBSZWZQdHI8
Q1NTUnVsZVNvdXJjZURhdGE+IHNvdXJjZURhdGEgPSBDU1NSdWxlU291cmNlRGF0YTo6Y3JlYXRl
KENTU1J1bGVTb3VyY2VEYXRhOjpTVFlMRV9SVUxFKTsKLSAgICAgICAgRG9jdW1lbnQqIG93bmVy
RG9jdW1lbnQgPSBtX3BhcmVudFN0eWxlU2hlZXQtPnBhZ2VTdHlsZVNoZWV0KCkgPyBtX3BhcmVu
dFN0eWxlU2hlZXQtPnBhZ2VTdHlsZVNoZWV0KCktPm93bmVyRG9jdW1lbnQoKSA6IDA7CisgICAg
ICAgIERvY3VtZW50KiBvd25lckRvY3VtZW50ID0gbV9wYXJlbnRTdHlsZVNoZWV0LT5wYWdlU3R5
bGVTaGVldCgpID8gbV9wYXJlbnRTdHlsZVNoZWV0LT5wYWdlU3R5bGVTaGVldCgpLT5vd25lckRv
Y3VtZW50KCkgOiBudWxscHRyOwogICAgICAgICBjcmVhdGVDU1NQYXJzZXIob3duZXJEb2N1bWVu
dCktPnBhcnNlRGVjbGFyYXRpb24odGVtcE11dGFibGVTdHlsZS5nZXQoKSwgcHJvcGVydHlUZXh0
ICsgIiAiICsgYm9ndXNQcm9wZXJ0eU5hbWUgKyAiOiBub25lIiwgc291cmNlRGF0YSwgJm1fc3R5
bGUtPnBhcmVudFN0eWxlU2hlZXQoKS0+Y29udGVudHMoKSk7CiAgICAgICAgIFZlY3RvcjxDU1NQ
cm9wZXJ0eVNvdXJjZURhdGE+JiBwcm9wZXJ0eURhdGEgPSBzb3VyY2VEYXRhLT5zdHlsZVNvdXJj
ZURhdGEtPnByb3BlcnR5RGF0YTsKICAgICAgICAgdW5zaWduZWQgcHJvcGVydHlDb3VudCA9IHBy
b3BlcnR5RGF0YS5zaXplKCk7CkBAIC00ODUsNyArNDg1LDcgQEAgYm9vbCBJbnNwZWN0b3JTdHls
ZTo6cG9wdWxhdGVBbGxQcm9wZXJ0aWVzKFZlY3RvcjxJbnNwZWN0b3JTdHlsZVByb3BlcnR5Piog
cmVzdWwKICAgICAgICAgZGlzYWJsZWRQcm9wZXJ0eSA9IG1fZGlzYWJsZWRQcm9wZXJ0aWVzLmF0
KGRpc2FibGVkSW5kZXgpOwogCiAgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBzb3VyY2VE
YXRhID0gZXh0cmFjdFNvdXJjZURhdGEoKTsKLSAgICBWZWN0b3I8Q1NTUHJvcGVydHlTb3VyY2VE
YXRhPiogc291cmNlUHJvcGVydHlEYXRhID0gc291cmNlRGF0YSA/ICYoc291cmNlRGF0YS0+c3R5
bGVTb3VyY2VEYXRhLT5wcm9wZXJ0eURhdGEpIDogMDsKKyAgICBWZWN0b3I8Q1NTUHJvcGVydHlT
b3VyY2VEYXRhPiogc291cmNlUHJvcGVydHlEYXRhID0gc291cmNlRGF0YSA/ICYoc291cmNlRGF0
YS0+c3R5bGVTb3VyY2VEYXRhLT5wcm9wZXJ0eURhdGEpIDogbnVsbHB0cjsKICAgICBpZiAoc291
cmNlUHJvcGVydHlEYXRhKSB7CiAgICAgICAgIFN0cmluZyBzdHlsZURlY2xhcmF0aW9uOwogICAg
ICAgICBib29sIGlzU3R5bGVUZXh0S25vd24gPSBzdHlsZVRleHQoJnN0eWxlRGVjbGFyYXRpb24p
OwpAQCAtNjM0LDcgKzYzNCw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlCiBQYXNzUmVmUHRy
PENTU1J1bGVTb3VyY2VEYXRhPiBJbnNwZWN0b3JTdHlsZTo6ZXh0cmFjdFNvdXJjZURhdGEoKSBj
b25zdAogewogICAgIGlmICghbV9wYXJlbnRTdHlsZVNoZWV0IHx8ICFtX3BhcmVudFN0eWxlU2hl
ZXQtPmVuc3VyZVBhcnNlZERhdGFSZWFkeSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIG1fcGFyZW50U3R5bGVTaGVldC0+cnVsZVNvdXJj
ZURhdGFGb3IobV9zdHlsZS5nZXQoKSk7CiB9CiAKQEAgLTcwMiw3ICs3MDIsNyBAQCBOZXdMaW5l
QW5kV2hpdGVzcGFjZSYgSW5zcGVjdG9yU3R5bGU6Om5ld0xpbmVBbmRXaGl0ZXNwYWNlRGVsaW1p
dGVycygpIGNvbnN0CiAgICAgICAgIHJldHVybiBtX2Zvcm1hdDsKIAogICAgIFJlZlB0cjxDU1NS
dWxlU291cmNlRGF0YT4gc291cmNlRGF0YSA9IGV4dHJhY3RTb3VyY2VEYXRhKCk7Ci0gICAgVmVj
dG9yPENTU1Byb3BlcnR5U291cmNlRGF0YT4qIHNvdXJjZVByb3BlcnR5RGF0YSA9IHNvdXJjZURh
dGEgPyAmKHNvdXJjZURhdGEtPnN0eWxlU291cmNlRGF0YS0+cHJvcGVydHlEYXRhKSA6IDA7Cisg
ICAgVmVjdG9yPENTU1Byb3BlcnR5U291cmNlRGF0YT4qIHNvdXJjZVByb3BlcnR5RGF0YSA9IHNv
dXJjZURhdGEgPyAmKHNvdXJjZURhdGEtPnN0eWxlU291cmNlRGF0YS0+cHJvcGVydHlEYXRhKSA6
IG51bGxwdHI7CiAgICAgaW50IHByb3BlcnR5Q291bnQ7CiAgICAgaWYgKCFzb3VyY2VQcm9wZXJ0
eURhdGEgfHwgIShwcm9wZXJ0eUNvdW50ID0gc291cmNlUHJvcGVydHlEYXRhLT5zaXplKCkpKSB7
CiAgICAgICAgIG1fZm9ybWF0LmZpcnN0ID0gIlxuIjsKQEAgLTg3NCwyNCArODc0LDI0IEBAIHN0
YXRpYyBib29sIGNoZWNrU3R5bGVSdWxlU2VsZWN0b3IoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25z
dCBTdHJpbmcmIHNlbGVjdG9yKQogQ1NTU3R5bGVSdWxlKiBJbnNwZWN0b3JTdHlsZVNoZWV0Ojph
ZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IGlmICghY2hlY2tQYWdlU3R5bGVTaGVldChlYykpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIWNoZWNrU3R5bGVSdWxlU2VsZWN0b3IobV9wYWdl
U3R5bGVTaGVldC0+b3duZXJEb2N1bWVudCgpLCBzZWxlY3RvcikpIHsKICAgICAgICAgZWMgPSBT
WU5UQVhfRVJSOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCiAgICAgU3RyaW5nIHRleHQ7CiAgICAgYm9vbCBzdWNjZXNzID0gZ2V0VGV4dCgmdGV4
dCk7CiAgICAgaWYgKCFzdWNjZXNzKSB7CiAgICAgICAgIGVjID0gTk9UX0ZPVU5EX0VSUjsKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBTdHJp
bmdCdWlsZGVyIHN0eWxlU2hlZXRUZXh0OwogICAgIHN0eWxlU2hlZXRUZXh0LmFwcGVuZCh0ZXh0
KTsKIAogICAgIG1fcGFnZVN0eWxlU2hlZXQtPmFkZFJ1bGUoc2VsZWN0b3IsICIiLCBlYyk7CiAg
ICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgQVNTRVJUKG1fcGFnZVN0eWxlU2hlZXQtPmxlbmd0aCgpKTsKICAgICB1bnNpZ25lZCBsYXN0
UnVsZUluZGV4ID0gbV9wYWdlU3R5bGVTaGVldC0+bGVuZ3RoKCkgLSAxOwogICAgIENTU1J1bGUq
IHJ1bGUgPSBtX3BhZ2VTdHlsZVNoZWV0LT5pdGVtKGxhc3RSdWxlSW5kZXgpOwpAQCAtOTAzLDcg
KzkwMyw3IEBAIENTU1N0eWxlUnVsZSogSW5zcGVjdG9yU3R5bGVTaGVldDo6YWRkUnVsZShjb25z
dCBTdHJpbmcmIHNlbGVjdG9yLCBFeGNlcHRpb25Db2RlCiAgICAgICAgIC8vIElmIGl0IGlzIG5v
dCBhIHN0eWxlIHJ1bGUsIHByZXRlbmQgd2UgbmV2ZXIgdG91Y2hlZCB0aGUgc3R5bGVzaGVldC4K
ICAgICAgICAgbV9wYWdlU3R5bGVTaGVldC0+ZGVsZXRlUnVsZShsYXN0UnVsZUluZGV4LCBBU1NF
UlRfTk9fRVhDRVBUSU9OKTsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKCFzdHlsZVNo
ZWV0VGV4dC5pc0VtcHR5KCkpCkBAIC05NTYsMTEgKzk1NiwxMSBAQCBib29sIEluc3BlY3RvclN0
eWxlU2hlZXQ6OmRlbGV0ZVJ1bGUoY29uc3QgSW5zcGVjdG9yQ1NTSWQmIGlkLCBFeGNlcHRpb25D
b2RlJiBlYwogQ1NTU3R5bGVSdWxlKiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpydWxlRm9ySWQoY29u
c3QgSW5zcGVjdG9yQ1NTSWQmIGlkKSBjb25zdAogewogICAgIGlmICghbV9wYWdlU3R5bGVTaGVl
dCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQVNT
RVJUKCFpZC5pc0VtcHR5KCkpOwogICAgIGVuc3VyZUZsYXRSdWxlcygpOwotICAgIHJldHVybiBp
ZC5vcmRpbmFsKCkgPj0gbV9mbGF0UnVsZXMuc2l6ZSgpID8gMCA6IG1fZmxhdFJ1bGVzLmF0KGlk
Lm9yZGluYWwoKSkuZ2V0KCk7CisgICAgcmV0dXJuIGlkLm9yZGluYWwoKSA+PSBtX2ZsYXRSdWxl
cy5zaXplKCkgPyBudWxscHRyIDogbV9mbGF0UnVsZXMuYXQoaWQub3JkaW5hbCgpKS5nZXQoKTsK
IAogfQogCkBAIC05NjgsNyArOTY4LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjoKIHsKICAg
ICBDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0ID0gcGFnZVN0eWxlU2hlZXQoKTsKICAgICBpZiAo
IXN0eWxlU2hlZXQpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4gY3NzUnVsZUxpc3QgPSBhc0NTU1J1bGVMaXN0KHN0
eWxlU2hlZXQpOwogCkBAIC05ODgsMTAgKzk4OCwxMCBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4gSW5zcGVjdG9yU3R5bGVTaGVl
dAogewogICAgIENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBwYWdlU3R5bGVTaGVldCgpOwog
ICAgIGlmICghc3R5bGVTaGVldCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3R5bGVTaGVldC0+b3duZXJEb2N1
bWVudCgpOwotICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPmZyYW1lKCkg
OiAwOworICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPmZyYW1lKCkgOiBu
dWxscHRyOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxl
U2hlZXRIZWFkZXI+IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5
bGVTaGVldEhlYWRlcjo6Y3JlYXRlKCkKICAgICAgICAgLnNldFN0eWxlU2hlZXRJZChpZCgpKQog
ICAgICAgICAuc2V0T3JpZ2luKG1fb3JpZ2luKQpAQCAtMTA1MCw3ICsxMDUwLDcgQEAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IEluc3BlY3RvclN0eWxl
U2hlZXQ6OmJ1aWxkT2JqZWMKIHsKICAgICBDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0ID0gcGFn
ZVN0eWxlU2hlZXQoKTsKICAgICBpZiAoIXN0eWxlU2hlZXQpCi0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OkNTU1J1bGU+IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTUnVsZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldFNlbGVjdG9yTGlzdChidWlsZE9iamVjdEZv
clNlbGVjdG9yTGlzdChydWxlKSkKQEAgLTExNjgsNyArMTE2OCw3IEBAIENTU1N0eWxlRGVjbGFy
YXRpb24qIEluc3BlY3RvclN0eWxlU2hlZXQ6OnN0eWxlRm9ySWQoY29uc3QgSW5zcGVjdG9yQ1NT
SWQmIGlkKSBjCiB7CiAgICAgQ1NTU3R5bGVSdWxlKiBydWxlID0gcnVsZUZvcklkKGlkKTsKICAg
ICBpZiAoIXJ1bGUpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIHJldHVybiBydWxlLT5zdHlsZSgpOwogfQpAQCAtMTE4Myw3ICsxMTgzLDcgQEAgUGFz
c1JlZlB0cjxJbnNwZWN0b3JTdHlsZT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6aW5zcGVjdG9yU3R5
bGVGb3JJZChjb25zdCBJbnNwZWMKIHsKICAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSA9
IHN0eWxlRm9ySWQoaWQpOwogICAgIGlmICghc3R5bGUpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEluc3BlY3RvclN0eWxlTWFwOjppdGVyYXRvciBp
dCA9IG1faW5zcGVjdG9yU3R5bGVzLmZpbmQoc3R5bGUpOwogICAgIGlmIChpdCA9PSBtX2luc3Bl
Y3RvclN0eWxlcy5lbmQoKSkgewpAQCAtMTQ0Nyw5ICsxNDQ3LDkgQEAgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU+IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxp
bmVTdHlsZToKIH0KIAogSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpJbnNwZWN0
b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQs
IGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCwgSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVtIG9yaWdpbiwgTGlzdGVu
ZXIqIGxpc3RlbmVyKQotICAgIDogSW5zcGVjdG9yU3R5bGVTaGVldChwYWdlQWdlbnQsIGlkLCAw
LCBvcmlnaW4sICIiLCBsaXN0ZW5lcikKKyAgICA6IEluc3BlY3RvclN0eWxlU2hlZXQocGFnZUFn
ZW50LCBpZCwgbnVsbHB0ciwgb3JpZ2luLCAiIiwgbGlzdGVuZXIpCiAgICAgLCBtX2VsZW1lbnQo
ZWxlbWVudCkKLSAgICAsIG1fcnVsZVNvdXJjZURhdGEoMCkKKyAgICAsIG1fcnVsZVNvdXJjZURh
dGEobnVsbHB0cikKICAgICAsIG1faXNTdHlsZVRleHRWYWxpZChmYWxzZSkKIHsKICAgICBBU1NF
UlQobV9lbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5oCmluZGV4IDBhY2QxMWYuLmJjMWYxYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaApAQCAtODksNyArODksNyBAQCBwdWJsaWM6
CiAgICAgUGFzc1JlZlB0cjxJRD4gYXNQcm90b2NvbFZhbHVlKCkgY29uc3QKICAgICB7CiAgICAg
ICAgIGlmIChpc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgICAgIFJlZlB0cjxJRD4gcmVzdWx0ID0gSUQ6OmNyZWF0ZSgp
CiAgICAgICAgICAgICAuc2V0U3R5bGVTaGVldElkKG1fc3R5bGVTaGVldElkKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4
IDE1OWE1NzQuLmU0YTRkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OnN0b3AoRXJyb3JTdHJpbmcqKQogICAgICAgICByZXR1cm47CiAK
ICAgICBtX3dlYWtGYWN0b3J5LnJldm9rZUFsbCgpOwotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50
cy0+c2V0SW5zcGVjdG9yVGltZWxpbmVBZ2VudCgwKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2Vu
dHMtPnNldEluc3BlY3RvclRpbWVsaW5lQWdlbnQobnVsbHB0cik7CiAKICAgICBjbGVhclJlY29y
ZFN0YWNrKCk7CiAKQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OmRpZFNjcm9sbCgpCiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbENvbXBv
c2l0ZSgpCiB7Ci0gICAgcHVzaEN1cnJlbnRSZWNvcmQoSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KSwgVGltZWxpbmVSZWNvcmRUeXBlOjpDb21wb3NpdGVMYXllcnMsIGZhbHNlLCAwKTsKKyAgICBw
dXNoQ3VycmVudFJlY29yZChJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpLCBUaW1lbGluZVJlY29y
ZFR5cGU6OkNvbXBvc2l0ZUxheWVycywgZmFsc2UsIG51bGxwdHIpOwogfQogCiB2b2lkIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OmRpZENvbXBvc2l0ZSgpCkBAIC02NTEsNyArNjUxLDcgQEAgZG91
YmxlIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnRpbWVzdGFtcCgpCiAKIFBhZ2UqIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6OnBhZ2UoKQogewotICAgIHJldHVybiBtX3BhZ2VBZ2VudCA/IG1fcGFn
ZUFnZW50LT5wYWdlKCkgOiAwOworICAgIHJldHVybiBtX3BhZ2VBZ2VudCA/IG1fcGFnZUFnZW50
LT5wYWdlKCkgOiBudWxscHRyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAppbmRleCBk
ZTlkOGQyLi4wZmJkYmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yV29ya2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JXb3JrZXJBZ2VudC5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBJbnNwZWN0b3JXb3JrZXJB
Z2VudDo6SW5zcGVjdG9yV29ya2VyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZQogCiBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6fkluc3BlY3RvcldvcmtlckFnZW50KCkK
IHsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvcldvcmtlckFnZW50KDAp
OworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yV29ya2VyQWdlbnQobnVs
bHB0cik7CiB9CiAKIHZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRD
aGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5jcHAKaW5k
ZXggODM0YTRkOC4uNmVlMjUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3RydW1lbnRpbmdBZ2VudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnN0cnVtZW50aW5nQWdlbnRzLmNwcApAQCAtNDUsNjEgKzQ1LDYxIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogSW5zdHJ1bWVudGluZ0FnZW50czo6SW5zdHJ1bWVudGluZ0FnZW50cyhJbnNwZWN0
b3JFbnZpcm9ubWVudCYgZW52aXJvbm1lbnQpCiAgICAgOiBtX2Vudmlyb25tZW50KGVudmlyb25t
ZW50KQotICAgICwgbV9pbnNwZWN0b3JBZ2VudCgwKQotICAgICwgbV9pbnNwZWN0b3JQYWdlQWdl
bnQoMCkKLSAgICAsIG1faW5zcGVjdG9yQ1NTQWdlbnQoMCkKKyAgICAsIG1faW5zcGVjdG9yQWdl
bnQobnVsbHB0cikKKyAgICAsIG1faW5zcGVjdG9yUGFnZUFnZW50KG51bGxwdHIpCisgICAgLCBt
X2luc3BlY3RvckNTU0FnZW50KG51bGxwdHIpCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQotICAgICwgbV9pbnNwZWN0b3JMYXllclRyZWVBZ2VudCgwKQorICAgICwgbV9pbnNwZWN0
b3JMYXllclRyZWVBZ2VudChudWxscHRyKQogI2VuZGlmCi0gICAgLCBtX2luc3BlY3RvckNvbnNv
bGVBZ2VudCgwKQotICAgICwgbV9pbnNwZWN0b3JET01BZ2VudCgwKQotICAgICwgbV9pbnNwZWN0
b3JSZXNvdXJjZUFnZW50KDApCi0gICAgLCBtX3BhZ2VSdW50aW1lQWdlbnQoMCkKLSAgICAsIG1f
d29ya2VyUnVudGltZUFnZW50KDApCi0gICAgLCBtX2luc3BlY3RvclRpbWVsaW5lQWdlbnQoMCkK
LSAgICAsIG1faW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KDApCisgICAgLCBtX2luc3BlY3RvckNv
bnNvbGVBZ2VudChudWxscHRyKQorICAgICwgbV9pbnNwZWN0b3JET01BZ2VudChudWxscHRyKQor
ICAgICwgbV9pbnNwZWN0b3JSZXNvdXJjZUFnZW50KG51bGxwdHIpCisgICAgLCBtX3BhZ2VSdW50
aW1lQWdlbnQobnVsbHB0cikKKyAgICAsIG1fd29ya2VyUnVudGltZUFnZW50KG51bGxwdHIpCisg
ICAgLCBtX2luc3BlY3RvclRpbWVsaW5lQWdlbnQobnVsbHB0cikKKyAgICAsIG1faW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50KG51bGxwdHIpCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICAs
IG1faW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgwKQorICAgICwgbV9pbnNwZWN0b3JEYXRhYmFzZUFn
ZW50KG51bGxwdHIpCiAjZW5kaWYKLSAgICAsIG1faW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50KDApCisgICAgLCBtX2luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChudWxscHRyKQog
I2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50KDApCi0gICAgLCBtX3BhZ2VEZWJ1Z2dlckFnZW50KDApCi0gICAgLCBtX2luc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQoMCkKLSAgICAsIG1faW5zcGVjdG9yUHJvZmlsZXJBZ2VudCgwKQor
ICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dlckFnZW50KG51bGxwdHIpCisgICAgLCBtX3BhZ2VEZWJ1
Z2dlckFnZW50KG51bGxwdHIpCisgICAgLCBtX2luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQobnVs
bHB0cikKKyAgICAsIG1faW5zcGVjdG9yUHJvZmlsZXJBZ2VudChudWxscHRyKQogI2VuZGlmCi0g
ICAgLCBtX2luc3BlY3RvcldvcmtlckFnZW50KDApCi0gICAgLCBtX2luc3BlY3RvckNhbnZhc0Fn
ZW50KDApCisgICAgLCBtX2luc3BlY3RvcldvcmtlckFnZW50KG51bGxwdHIpCisgICAgLCBtX2lu
c3BlY3RvckNhbnZhc0FnZW50KG51bGxwdHIpCiB7CiB9CiAKIHZvaWQgSW5zdHJ1bWVudGluZ0Fn
ZW50czo6cmVzZXQoKQogewotICAgIG1faW5zcGVjdG9yQWdlbnQgPSAwOwotICAgIG1faW5zcGVj
dG9yUGFnZUFnZW50ID0gMDsKLSAgICBtX2luc3BlY3RvckNTU0FnZW50ID0gMDsKKyAgICBtX2lu
c3BlY3RvckFnZW50ID0gbnVsbHB0cjsKKyAgICBtX2luc3BlY3RvclBhZ2VBZ2VudCA9IG51bGxw
dHI7CisgICAgbV9pbnNwZWN0b3JDU1NBZ2VudCA9IG51bGxwdHI7CiAjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQotICAgIG1faW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQgPSAwOworICAg
IG1faW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQgPSBudWxscHRyOwogI2VuZGlmCi0gICAgbV9pbnNw
ZWN0b3JDb25zb2xlQWdlbnQgPSAwOwotICAgIG1faW5zcGVjdG9yRE9NQWdlbnQgPSAwOwotICAg
IG1faW5zcGVjdG9yUmVzb3VyY2VBZ2VudCA9IDA7Ci0gICAgbV9wYWdlUnVudGltZUFnZW50ID0g
MDsKLSAgICBtX3dvcmtlclJ1bnRpbWVBZ2VudCA9IDA7Ci0gICAgbV9pbnNwZWN0b3JUaW1lbGlu
ZUFnZW50ID0gMDsKLSAgICBtX2luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCA9IDA7CisgICAgbV9p
bnNwZWN0b3JDb25zb2xlQWdlbnQgPSBudWxscHRyOworICAgIG1faW5zcGVjdG9yRE9NQWdlbnQg
PSBudWxscHRyOworICAgIG1faW5zcGVjdG9yUmVzb3VyY2VBZ2VudCA9IG51bGxwdHI7CisgICAg
bV9wYWdlUnVudGltZUFnZW50ID0gbnVsbHB0cjsKKyAgICBtX3dvcmtlclJ1bnRpbWVBZ2VudCA9
IG51bGxwdHI7CisgICAgbV9pbnNwZWN0b3JUaW1lbGluZUFnZW50ID0gbnVsbHB0cjsKKyAgICBt
X2luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCA9IG51bGxwdHI7CiAjaWYgRU5BQkxFKFNRTF9EQVRB
QkFTRSkKLSAgICBtX2luc3BlY3RvckRhdGFiYXNlQWdlbnQgPSAwOworICAgIG1faW5zcGVjdG9y
RGF0YWJhc2VBZ2VudCA9IG51bGxwdHI7CiAjZW5kaWYKLSAgICBtX2luc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudCA9IDA7CisgICAgbV9pbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQg
PSBudWxscHRyOwogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIG1faW5zcGVj
dG9yRGVidWdnZXJBZ2VudCA9IDA7Ci0gICAgbV9wYWdlRGVidWdnZXJBZ2VudCA9IDA7Ci0gICAg
bV9pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50ID0gMDsKLSAgICBtX2luc3BlY3RvclByb2ZpbGVy
QWdlbnQgPSAwOworICAgIG1faW5zcGVjdG9yRGVidWdnZXJBZ2VudCA9IG51bGxwdHI7CisgICAg
bV9wYWdlRGVidWdnZXJBZ2VudCA9IG51bGxwdHI7CisgICAgbV9pbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50ID0gbnVsbHB0cjsKKyAgICBtX2luc3BlY3RvclByb2ZpbGVyQWdlbnQgPSBudWxscHRy
OwogI2VuZGlmCi0gICAgbV9pbnNwZWN0b3JXb3JrZXJBZ2VudCA9IDA7Ci0gICAgbV9pbnNwZWN0
b3JDYW52YXNBZ2VudCA9IDA7CisgICAgbV9pbnNwZWN0b3JXb3JrZXJBZ2VudCA9IG51bGxwdHI7
CisgICAgbV9pbnNwZWN0b3JDYW52YXNBZ2VudCA9IG51bGxwdHI7CiB9CiAKIEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRhdGlvbkZvclBhZ2UoUGFnZSogcGFnZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IDVjY2E0
NDcuLjJhZjAwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcApAQCAtNzcsNyArNzcsNyBAQCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0
CiAgICAgLCBtX2Jhc2U2NEVuY29kZWQoZmFsc2UpCiAgICAgLCBtX2lzQ29udGVudEV2aWN0ZWQo
ZmFsc2UpCiAgICAgLCBtX3R5cGUoSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291cmNlKQot
ICAgICwgbV9jYWNoZWRSZXNvdXJjZSgwKQorICAgICwgbV9jYWNoZWRSZXNvdXJjZShudWxscHRy
KQogewogfQogCkBAIC0yODIsNyArMjgyLDcgQEAgWEhSUmVwbGF5RGF0YSogTmV0d29ya1Jlc291
cmNlc0RhdGE6OnhoclJlcGxheURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpCiAKICAgICBS
ZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IHJlc291cmNlRGF0YUZvclJlcXVlc3RJZChyZXF1
ZXN0SWQpOwogICAgIGlmICghcmVzb3VyY2VEYXRhKQotICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIHJlc291cmNlRGF0YS0+eGhyUmVwbGF5RGF0
YSgpOwogfQogCkBAIC0zMjMsNyArMzIzLDcgQEAgVmVjdG9yPFN0cmluZz4gTmV0d29ya1Jlc291
cmNlc0RhdGE6OnJlbW92ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWQKICAg
ICBmb3IgKGl0ID0gbV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKICAgICAgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSBpdC0+dmFs
dWU7CiAgICAgICAgIGlmIChyZXNvdXJjZURhdGEtPmNhY2hlZFJlc291cmNlKCkgPT0gY2FjaGVk
UmVzb3VyY2UpIHsKLSAgICAgICAgICAgIHJlc291cmNlRGF0YS0+c2V0Q2FjaGVkUmVzb3VyY2Uo
MCk7CisgICAgICAgICAgICByZXNvdXJjZURhdGEtPnNldENhY2hlZFJlc291cmNlKG51bGxwdHIp
OwogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChpdC0+a2V5KTsKICAgICAgICAgfQogICAgIH0K
QEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpzZXRSZXNvdXJj
ZXNEYXRhU2l6ZUxpbWl0cyhzaXplX3QgbWF4aW11bVJlc291cmNlc0NvbgogTmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YSogTmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc291cmNlRGF0
YUZvclJlcXVlc3RJZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCkKIHsKICAgICBpZiAocmVxdWVz
dElkLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgcmV0dXJuIG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuZ2V0KHJlcXVlc3RJZCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcApp
bmRleCBmZDI4MWM5Li4xYWRiNDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Bh
Z2VDb25zb2xlQWdlbnQuY3BwCkBAIC01MSw3ICs1MSw3IEBAIFBhZ2VDb25zb2xlQWdlbnQ6OlBh
Z2VDb25zb2xlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywg
UGFnCiAKIFBhZ2VDb25zb2xlQWdlbnQ6On5QYWdlQ29uc29sZUFnZW50KCkKIHsKLSAgICBtX2lu
c3BlY3RvckRPTUFnZW50ID0gMDsKKyAgICBtX2luc3BlY3RvckRPTUFnZW50ID0gbnVsbHB0cjsK
IH0KIAogdm9pZCBQYWdlQ29uc29sZUFnZW50OjpjbGVhck1lc3NhZ2VzKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVi
dWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdl
bnQuY3BwCmluZGV4IDZmOGYzNzIuLjBjMDE4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFBhZ2VE
ZWJ1Z2dlckFnZW50OjplbmFibGUoKQogdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6ZGlzYWJsZSgp
CiB7CiAgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlzYWJsZSgpOwotICAgIG1faW5zdHJ1
bWVudGluZ0FnZW50cy0+c2V0UGFnZURlYnVnZ2VyQWdlbnQoMCk7CisgICAgbV9pbnN0cnVtZW50
aW5nQWdlbnRzLT5zZXRQYWdlRGVidWdnZXJBZ2VudChudWxscHRyKTsKIH0KIAogdm9pZCBQYWdl
RGVidWdnZXJBZ2VudDo6c3RhcnRMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcigpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggZGQxMmYyZS4u
ZDNmNmY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1l
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50
LmNwcApAQCAtNjIsNyArNjIsNyBAQCBQYWdlUnVudGltZUFnZW50OjpQYWdlUnVudGltZUFnZW50
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluagogCiBQYWdlUnVu
dGltZUFnZW50Ojp+UGFnZVJ1bnRpbWVBZ2VudCgpCiB7Ci0gICAgbV9pbnN0cnVtZW50aW5nQWdl
bnRzLT5zZXRQYWdlUnVudGltZUFnZW50KDApOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+
c2V0UGFnZVJ1bnRpbWVBZ2VudChudWxscHRyKTsKIH0KIAogdm9pZCBQYWdlUnVudGltZUFnZW50
OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJh
Y2tlbmREaXNwYXRjaGVyKQpAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgUGFnZVJ1bnRpbWVBZ2Vu
dDo6ZGlkQ3JlYXRlTWFpbldvcmxkQ29udGV4dChGcmFtZSogZnJhbWUpCiAgICAgQVNTRVJUKG1f
ZnJvbnRlbmREaXNwYXRjaGVyKTsKICAgICBTdHJpbmcgZnJhbWVJZCA9IG1fcGFnZUFnZW50LT5m
cmFtZUlkKGZyYW1lKTsKICAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUgPSBtYWluV29y
bGRFeGVjU3RhdGUoZnJhbWUpOwotICAgIG5vdGlmeUNvbnRleHRDcmVhdGVkKGZyYW1lSWQsIHNj
cmlwdFN0YXRlLCAwLCB0cnVlKTsKKyAgICBub3RpZnlDb250ZXh0Q3JlYXRlZChmcmFtZUlkLCBz
Y3JpcHRTdGF0ZSwgbnVsbHB0ciwgdHJ1ZSk7CiB9CiAKIHZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6
ZGlkQ3JlYXRlSXNvbGF0ZWRDb250ZXh0KEZyYW1lKiBmcmFtZSwgSlNDOjpFeGVjU3RhdGUqIHNj
cmlwdFN0YXRlLCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKQpAQCAtMTU4LDcgKzE1OCw3IEBAIHZv
aWQgUGFnZVJ1bnRpbWVBZ2VudDo6cmVwb3J0RXhlY3V0aW9uQ29udGV4dENyZWF0aW9uKCkKICAg
ICAgICAgU3RyaW5nIGZyYW1lSWQgPSBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChmcmFtZSk7CiAKICAg
ICAgICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gbWFpbldvcmxkRXhlY1N0YXRlKGZy
YW1lKTsKLSAgICAgICAgbm90aWZ5Q29udGV4dENyZWF0ZWQoZnJhbWVJZCwgc2NyaXB0U3RhdGUs
IDAsIHRydWUpOworICAgICAgICBub3RpZnlDb250ZXh0Q3JlYXRlZChmcmFtZUlkLCBzY3JpcHRT
dGF0ZSwgbnVsbHB0ciwgdHJ1ZSk7CiAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5jb2xsZWN0SXNv
bGF0ZWRDb250ZXh0cyhpc29sYXRlZENvbnRleHRzKTsKICAgICAgICAgaWYgKGlzb2xhdGVkQ29u
dGV4dHMuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwCmluZGV4IDM2NTdhOTguLjllNjVmN2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwCkBAIC02MCw3
ICs2MCw3IEBAIEpTQzo6RXhlY1N0YXRlKiBTY3JpcHRBcmd1bWVudHM6Omdsb2JhbFN0YXRlKCkg
Y29uc3QKIHsKICAgICBpZiAobV9nbG9iYWxPYmplY3QpCiAgICAgICAgIHJldHVybiBjb25zdF9j
YXN0PEpTQzo6SlNHbG9iYWxPYmplY3QqPihtX2dsb2JhbE9iamVjdC5nZXQoKSktPmdsb2JhbEV4
ZWMoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogYm9vbCBTY3Jp
cHRBcmd1bWVudHM6OmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhTdHJpbmcmIHJlc3VsdCwgYm9v
bCBjaGVja0Zvck51bGxPclVuZGVmaW5lZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggMGIwMzcwOC4uOWI2NDBkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTU2LDcg
KzU2LDcgQEAgV29ya2VyUnVudGltZUFnZW50OjpXb3JrZXJSdW50aW1lQWdlbnQoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywKIAogV29ya2VyUnVudGltZUFnZW50Ojp+
V29ya2VyUnVudGltZUFnZW50KCkKIHsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldFdv
cmtlclJ1bnRpbWVBZ2VudCgwKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldFdvcmtl
clJ1bnRpbWVBZ2VudChudWxscHRyKTsKIH0KIAogdm9pZCBXb3JrZXJSdW50aW1lQWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikK
</data>
<flag name="review"
          id="245633"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>