<?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>137257</bug_id>
          
          <creation_ts>2014-09-30 11:26:22 -0700</creation_ts>
          <short_desc>Web Inspector: ErrorString should be passed by reference</short_desc>
          <delta_ts>2014-11-12 13:24:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Brian Burg">burg</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>mkwst</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1038269</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-30 11:26:22 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038270</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-09-30 11:26:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/18503485&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038274</commentid>
    <comment_count>2</comment_count>
      <attachid>238942</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-30 11:42:20 -0700</bug_when>
    <thetext>Created attachment 238942
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038277</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-30 11:44:34 -0700</bug_when>
    <thetext>This patch modifies the inspector protocol generator. Please ensure that you have rebaselined any generator test results (i.e., by running `Tools/Scripts/run-inspector-generator-tests --reset-results`)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038278</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-30 11:44:50 -0700</bug_when>
    <thetext>Attachment 238942 did not pass style-queue:


ERROR: Source/WebCore/inspector/InspectorReplayAgent.h:107:  The parameter name &quot;segmentState&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/inspector/InspectorCSSAgent.h:114:  The parameter name &quot;pseudoIdMatches&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 72 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038280</commentid>
    <comment_count>5</comment_count>
      <attachid>238942</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-09-30 11:47:52 -0700</bug_when>
    <thetext>Comment on attachment 238942
Patch

r=me, nice little cleanups too (ASCIILiteral).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048237</commentid>
    <comment_count>6</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-11-12 13:24:33 -0800</bug_when>
    <thetext>This was landed manually in &lt;http://trac.webkit.org/changeset/174140&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238942</attachid>
            <date>2014-09-30 11:42:20 -0700</date>
            <delta_ts>2014-09-30 11:47:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137257-20140930114151.patch</filename>
            <type>text/plain</type>
            <size>284771</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZDYzMzViZmYzNjE5ZmRjZThmY2U3OTNkYWZiMDZiY2FiM2Q3NGI0Li4yNGE2N2ZkM2M5NGYwNGJh
NjIwM2FmYjk3NmQzZmYxMDRhYWY1MzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NSBAQAorMjAxNC0wOS0zMCAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRXJyb3JTdHJpbmcgc2hvdWxkIGJlIHBh
c3NlZCBieSByZWZlcmVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzNzI1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFBhc3MgdGhlIGxlYWRpbmcgRXJyb3JTdHJpbmcgYXJndW1lbnQgYnkgcmVmZXJl
bmNlLCBzaW5jZSBpdCBpcyBhbHdheXMgYW4gb3V0IHBhcmFtZXRlci4KKyAgICAgICAgQ2xlYW4g
dXAgY2FsbHNpdGVzIHdoZXJlIHRoZSBlcnJvciBtZXNzYWdlIGlzIHdyaXR0ZW4uCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bmplY3RlZFNjcmlwdDo6ZXZhbHVhdGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNj
cmlwdDo6Y2FsbEZ1bmN0aW9uT24pOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlw
dDo6ZXZhbHVhdGVPbkNhbGxGcmFtZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2Ny
aXB0OjpnZXRGdW5jdGlvbkRldGFpbHMpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNj
cmlwdDo6Z2V0UHJvcGVydGllcyk6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0
OjpnZXRJbnRlcm5hbFByb3BlcnRpZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNj
cmlwdC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwOgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VFdmFsQ2FsbCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0
b3JBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVj
dG9yQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudDo6
aW5pdGlhbGl6ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHA6
CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6d2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xl
QWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckNvbnNvbGVBZ2Vu
dDo6ZGlzYWJsZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6
Y2xlYXJNZXNzYWdlcyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckNvbnNvbGVBZ2Vu
dDo6cmVzZXQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmFk
ZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q29uc29sZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6ZW5hYmxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
ZGlzYWJsZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNl
dEJyZWFrcG9pbnRzQWN0aXZlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvbnNGcm9tUHJvdG9jb2wpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpwYXJzZUxvY2F0aW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludCk6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlbW92ZUJyZWFrcG9pbnQpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpjb250aW51ZVRvTG9jYXRpb24pOgorICAgICAg
ICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZWFyY2hJbkNvbnRlbnQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRTY3JpcHRTb3Vy
Y2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRGdW5j
dGlvbkRldGFpbHMpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpwYXVzZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJl
c3VtZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnN0ZXBP
dmVyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c3RlcElu
dG8pOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzdGVwT3V0
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0UGF1c2VP
bkV4Y2VwdGlvbnMpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2V0T3ZlcmxheU1lc3NhZ2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXJzZVNvdXJjZSk6CisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFySW5zcGVjdG9yQnJlYWtwb2ludFN0YXRlKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YXNzZXJ0UGF1c2Vk
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHA6Cisg
ICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cGFyc2UpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpjYWxsRnVuY3Rpb25Pbik6CisgICAg
ICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyk6Cisg
ICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cmVsZWFzZU9iamVjdCk6
CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cmVsZWFzZU9iamVj
dEdyb3VwKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpydW4p
OgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFJ1bnRpbWVU
eXBlc0ZvclZhcmlhYmxlc0F0T2Zmc2V0cyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rv
clJ1bnRpbWVBZ2VudDo6ZW5hYmxlVHlwZVByb2ZpbGVyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9yUnVudGltZUFnZW50OjpkaXNhYmxlVHlwZVByb2ZpbGVyKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAoSW5z
cGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudDo6c2V0TW9uaXRvcmluZ1hIUkVuYWJs
ZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudDo6YWRk
SW5zcGVjdGVkTm9kZSk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVj
dENvbnNvbGVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RE
ZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwpOgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChJbnNw
ZWN0b3I6OkpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwp
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2JhY2tlbmRf
ZGlzcGF0Y2hlcl9oZWFkZXIucHk6CisgICAgICAgIChCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckdl
bmVyYXRvci5fZ2VuZXJhdGVfaGFuZGxlcl9kZWNsYXJhdGlvbl9mb3JfY29tbWFuZCk6CisgICAg
ICAgIChCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckdlbmVyYXRvci5fZ2VuZXJhdGVfYXN5bmNfaGFu
ZGxlcl9kZWNsYXJhdGlvbl9mb3JfY29tbWFuZCk6CisgICAgICAgICogaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9nZW5lcmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHk6
CisgICAgICAgIChCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5l
cmF0ZV9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uX2Zvcl9jb21tYW5kKToKKyAgICAgICAgKiBp
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJp
YnV0ZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1y
ZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWlu
cy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVy
ZS1ndWFyZHMuanNvbi1yZXN1bHQ6CisKIDIwMTQtMDktMjkgIEJyaWFuIEouIEJ1cmcgIDxidXJn
QGNzLndhc2hpbmd0b24uZWR1PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEluc3BlY3RvclZh
bHVlcyBzaG91bGQgdXNlIHJlZmVyZW5jZXMgZm9yIG91dCBwYXJhbWV0ZXJzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggYTZkYzRmYmE0YjBmZDQ0NWJkNjVhOTk2MzExZDQ1YTZmYzg5M2U0MS4uZDFlY2ZmOGYzZGFl
ZGU1NjVkNGZjOGQxN2MzN2YzNTA1ZDNiOWI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3OCBA
QAorMjAxNC0wOS0zMCAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogRXJyb3JTdHJpbmcgc2hvdWxkIGJlIHBhc3NlZCBieSBy
ZWZlcmVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzNzI1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFBhc3MgdGhlIGxlYWRpbmcgRXJyb3JTdHJpbmcgYXJndW1lbnQgYnkgcmVmZXJlbmNlLCBzaW5j
ZSBpdCBpcyBhbHdheXMgYW4gb3V0IHBhcmFtZXRlci4KKyAgICAgICAgQ2xlYW4gdXAgY2FsbHNp
dGVzIHdoZXJlIHRoZSBlcnJvciBtZXNzYWdlIGlzIHdyaXR0ZW4uCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2VkLgorCisgICAgICAgICogaW5zcGVjdG9yL0NvbW1h
bmRMaW5lQVBJSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21tYW5kTGluZUFQSUhvc3Q6
OmNsZWFyQ29uc29sZU1lc3NhZ2VzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvRE9NRWRpdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnBvcHVsYXRlRXJyb3JTdHJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NRWRpdG9yOjppbnNlcnRCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRp
dG9yOjpyZW1vdmVDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnNldEF0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnJlbW92ZUF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnNldE91dGVySFRNTCk6CisgICAgICAgIChXZWJD
b3JlOjpET01FZGl0b3I6OnJlcGxhY2VXaG9sZVRleHQpOgorICAgICAgICAqIGluc3BlY3Rvci9E
T01FZGl0b3IuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudDo6Z2V0RnJhbWVzV2l0aE1hbmlmZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmFzc2VydEZyYW1lV2l0aERvY3VtZW50TG9hZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0
TWFuaWZlc3RGb3JGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQ6OmdldEFwcGxpY2F0aW9uQ2FjaGVGb3JGcmFtZSk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
U1NBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojpk
aXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpkaWRDcmVhdGVO
YW1lZEZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnJlZ2lvbk92
ZXJzZXRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpkaWRS
ZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNTU0FnZW50OjpkaWRVbnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRJbmxpbmVTdHlsZXNG
b3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRDb21wdXRl
ZFN0eWxlRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0
QWxsU3R5bGVTaGVldHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6Omdl
dFN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN0
eWxlU2hlZXRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRT
dHlsZVNoZWV0VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0
U3R5bGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRQcm9w
ZXJ0eVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnRvZ2dsZVBy
b3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2Vs
ZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN1cHBvcnRlZENTU1Byb3Bl
cnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmZvcmNlUHNldWRv
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE5hbWVkRmxv
d0NvbGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmVsZW1l
bnRGb3JJZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YXNzZXJ0U3R5
bGVTaGVldEZvcklkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWls
ZEFycmF5Rm9yUmVnaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6
YnVpbGRPYmplY3RGb3JOYW1lZEZsb3cpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JD
U1NBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmhpZGVIaWdobGlnaHQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0UHJvZmlsZXJFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnJlc3VtZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YXNzZXJ0Tm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YXNzZXJ0RG9jdW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmFzc2VydEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmFzc2VydEVkaXRhYmxlTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YXNzZXJ0RWRpdGFibGVFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpnZXREb2N1bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVUb0Zyb250ZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpyZXF1ZXN0Q2hpbGROb2Rlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cXVlcnlTZWxlY3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cXVlcnlTZWxlY3RvckFsbCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cmVsZWFzZUJhY2tlbmROb2RlSWRzKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXRBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c2V0QXR0cmlidXRlc0FzVGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cmVtb3ZlQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpyZW1vdmVOb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXROb2RlTmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0T3V0ZXJIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTUFnZW50OjpzZXRPdXRlckhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NQWdlbnQ6OnNldE5vZGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01BZ2VudDo6Z2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTUFnZW50OjpnZXRBY2Nlc3NpYmlsaXR5UHJvcGVydGllc0Zvck5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnBlcmZvcm1TZWFyY2gpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldFNlYXJjaFJlc3VsdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpc2NhcmRTZWFyY2hSZXN1bHRzKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjppbnNwZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXRTZWFyY2hpbmdGb3JOb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9y
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXRJbnNwZWN0
TW9kZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hs
aWdodFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdo
dFF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodE5v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodEZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWRlSGlnaGxpZ2h0KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojptb3ZlVG8pOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NQWdlbnQ6OnJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6Om1hcmtVbmRvYWJsZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50Ojpmb2N1cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cmVzb2x2
ZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldEF0dHJpYnV0
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnJlcXVlc3ROb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZUJ5UGF0aFRvRnJv
bnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlQnlC
YWNrZW5kSWRUb0Zyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRFdmVudExp
c3RlbmVyQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50OjpzZXRJbnN0cnVtZW50YXRpb25CcmVha3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlRXZlbnRMaXN0ZW5lckJyZWFr
cG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cmVt
b3ZlSW5zdHJ1bWVudGF0aW9uQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50OjpyZW1vdmVCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OmRvbVR5cGVGb3JOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQ6OnNldERPTUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudDo6cmVtb3ZlRE9NQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRYSFJCcmVha3BvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnJlbW92ZVhIUkJyZWFrcG9pbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbFNlbmRYTUxI
dHRwUmVxdWVzdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6d2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dDo6Z2V0RE9NU3RvcmFnZUl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudDo6c2V0RE9NU3RvcmFnZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50OjpyZW1vdmVET01TdG9yYWdlSXRlbSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmZpbmRTdG9yYWdlQXJlYSk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmdldERhdGFiYXNlVGFibGVOYW1lcyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpleGVjdXRlU1FMKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbmRleGVkREJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmVuYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6ZGlzYWJsZSk6CisgICAgICAgIChX
ZWJDb3JlOjphc3NlcnREb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjphc3NlcnRJREJGYWN0
b3J5KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0
RGF0YWJhc2VOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dDo6cmVxdWVzdERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWRE
QkFnZW50OjpyZXF1ZXN0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVk
REJBZ2VudDo6Y2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckluZGV4ZWREQkFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJl
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50Ojp3
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JMYXllclRyZWVBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVy
VHJlZUFnZW50OjpsYXllcnNGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6Z2F0aGVyTGF5ZXJzVXNp
bmdSZW5kZXJMYXllckhpZXJhcmNoeSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXll
clRyZWVBZ2VudDo6YnVpbGRPYmplY3RGb3JMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JMYXllclRyZWVBZ2VudDo6aWRGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckxheWVyVHJlZUFnZW50OjpyZWFzb25zRm9yQ29tcG9zaXRpbmdMYXllcik6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JQYWdlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclBhZ2VBZ2VudDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JQYWdlQWdlbnQ6OmFkZFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpyZW1vdmVTY3JpcHRUb0V2YWx1YXRlT25Mb2FkKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6cmVsb2FkKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6bmF2aWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUGFnZUFnZW50OjpnZXRDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclBhZ2VBZ2VudDo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clBhZ2VBZ2VudDo6Z2V0UmVzb3VyY2VUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clBhZ2VBZ2VudDo6Z2V0UmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclBhZ2VBZ2VudDo6c2V0RG9jdW1lbnRDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2hvd1BhaW50UmVjdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpjYW5TaG93RGVidWdCb3JkZXJzKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2hvd0RlYnVnQm9yZGVycyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmNhblNob3dGUFNDb3VudGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2hvd0ZQU0NvdW50ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpjYW5Db250aW51b3VzbHlQYWludCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldENvbnRpbnVvdXNQYWlu
dGluZ0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpnZXRT
Y3JpcHRFeGVjdXRpb25TdGF0dXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFn
ZW50OjpzZXRTY3JpcHRFeGVjdXRpb25EaXNhYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmFzc2VydEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clBhZ2VBZ2VudDo6YXNzZXJ0RG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUGFnZUFnZW50OjpzZXRUb3VjaEVtdWxhdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZXRFbXVsYXRlZE1lZGlhKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldENvbXBvc2l0aW5nQm9y
ZGVyc1Zpc2libGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzbmFw
c2hvdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzbmFwc2hv
dFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpoYW5kbGVKYXZh
U2NyaXB0RGlhbG9nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6YXJj
aGl2ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JSZXBsYXlBZ2VudDo6c3RhcnRDYXB0dXJpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUmVwbGF5QWdlbnQ6OnN0b3BDYXB0dXJpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUmVwbGF5QWdlbnQ6OnJlcGxheVRvUG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUmVwbGF5QWdlbnQ6OnJlcGxheVRvQ29tcGxldGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JSZXBsYXlBZ2VudDo6cGF1c2VQbGF5YmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JSZXBsYXlBZ2VudDo6Y2FuY2VsUGxheWJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVwbGF5QWdlbnQ6OnN3aXRjaFNlc3Npb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVwbGF5QWdlbnQ6Omluc2VydFNlc3Npb25TZWdtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlcGxheUFnZW50OjpyZW1vdmVTZXNzaW9uU2Vn
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXBsYXlBZ2VudDo6ZmluZFNlc3Np
b24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmZpbmRTZWdtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlcGxheUFnZW50OjpjdXJyZW50UmVwbGF5
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmdldEF2YWls
YWJsZVNlc3Npb25zKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlcGxheUFnZW50Ojpn
ZXRTZXNzaW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXBsYXlBZ2VudDo6
Z2V0U2VnbWVudERhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2Vu
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6
On5JbnNwZWN0b3JSZXNvdXJjZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJl
c291cmNlQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdl
bnQ6OnNldEV4dHJhSFRUUEhlYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6Z2V0UmVzcG9uc2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OnJlcGxheVhIUik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50OjpjYW5DbGVhckJyb3dzZXJDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpjbGVhckJyb3dzZXJDYWNoZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpjYW5DbGVhckJyb3dzZXJDb29raWVzKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmNsZWFyQnJvd3NlckNvb2tp
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0Q2FjaGVE
aXNhYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojpsb2Fk
UmVzb3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6cmVzb3VyY2VTdHlsZVNoZWV0VGV4dCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RhcnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RvcCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yV29ya2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvcldvcmtlckFnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yV29ya2VyQWdlbnQ6OmNhbkluc3BlY3RXb3JrZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvcldvcmtlckFnZW50Ojpjb25uZWN0VG9Xb3JrZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpc2Nvbm5lY3RGcm9tV29ya2VyKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvcldvcmtlckFnZW50OjpzZW5kTWVzc2FnZVRvV29ya2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvcldvcmtlckFnZW50OjpzZXRBdXRvY29ubmVjdFRvV29y
a2Vycyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZUNvbnNvbGVBZ2VudDo6Y2xlYXJNZXNzYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
Q29uc29sZUFnZW50OjphZGRJbnNwZWN0ZWROb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFn
ZUNvbnNvbGVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRG
b3JFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50OjpzZXRPdmVybGF5
TWVzc2FnZSk6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZVJ1bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2VSdW50aW1lQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRp
bWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFn
ZVJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9XZWJDb25zb2xlQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29uc29sZUFnZW50OjpzZXRNb25pdG9yaW5nWEhSRW5h
YmxlZCk6CisgICAgICAgICogaW5zcGVjdG9yL1dlYkNvbnNvbGVBZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyQ29uc29sZUFnZW50OjphZGRJbnNwZWN0ZWROb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
V29ya2VyQ29uc29sZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2Vy
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0
ZWRTY3JpcHRGb3JFdmFsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2Vu
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OnJlc3VtZSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6OnJ1bik6CisgICAgICAgICogaW5zcGVjdG9y
L1dvcmtlclJ1bnRpbWVBZ2VudC5oOgorCiAyMDE0LTA5LTI5ICBCcmlhbiBKLiBCdXJnICA8YnVy
Z0Bjcy53YXNoaW5ndG9uLmVkdT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JW
YWx1ZXMgc2hvdWxkIHVzZSByZWZlcmVuY2VzIGZvciBvdXQgcGFyYW1ldGVycwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAppbmRleCA5
NjY5Y2UxODlhZmYwNzFlYmIzMDEwYzdmNWRkODUwYTk2ZGI4MzQwLi42MWRkYzBjYjA1NDUyMGQ5
YjJlNDZkYzc4YjU2YjE2NTk3NGQxNzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcApAQCAtNTgsNyArNTgsNyBAQCBJbmplY3Rl
ZFNjcmlwdDo6fkluamVjdGVkU2NyaXB0KCkKIHsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6
ZXZhbHVhdGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Np
b24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJ
LCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBJbnNwZWN0b3I6
OlByb3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKK3ZvaWQgSW5qZWN0ZWRTY3Jp
cHQ6OmV2YWx1YXRlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHBy
ZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGlu
ZUFQSSwgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwgSW5zcGVj
dG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCiB7CiAgICAgRGVwcmVj
YXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCks
IEFTQ0lJTGl0ZXJhbCgiZXZhbHVhdGUiKSwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rp
b25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChleHByZXNzaW9u
KTsKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGUoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24KICAgICBtYWtlRXZh
bENhbGwoZXJyb3JTdHJpbmcsIGZ1bmN0aW9uLCByZXN1bHQsIHdhc1Rocm93bik7CiB9CiAKLXZv
aWQgSW5qZWN0ZWRTY3JpcHQ6OmNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25z
dCBTdHJpbmcmIGFyZ3VtZW50cywgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdlbmVyYXRlUHJl
dmlldywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4q
IHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24p
Cit2b2lkIEluamVjdGVkU2NyaXB0OjpjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwg
Y29uc3QgU3RyaW5nJiBhcmd1bWVudHMsIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0
ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3Q+KiByZXN1bHQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxib29sPiogd2FzVGhy
b3duKQogewogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmpl
Y3RlZFNjcmlwdE9iamVjdCgpLCBBU0NJSUxpdGVyYWwoImNhbGxGdW5jdGlvbk9uIiksIGluc3Bl
Y3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwpAQCAtODAsNyArODAsNyBAQCB2b2lkIEluamVjdGVk
U2NyaXB0OjpjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgb2JqZQogICAgIG1ha2VFdmFsQ2FsbChlcnJvclN0cmluZywgZnVuY3Rpb24sIHJlc3Vs
dCwgd2FzVGhyb3duKTsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxG
cmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiBjYWxsRnJhbWVzLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcm
IGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1h
bmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKK3ZvaWQgSW5q
ZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3QgU3RyaW5n
JiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9i
amVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgYm9vbCByZXR1cm5CeVZhbHVl
LCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0
PGJvb2w+KiB3YXNUaHJvd24pCiB7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxs
IGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIEFTQ0lJTGl0ZXJhbCgiZXZhbHVhdGVP
bkNhbGxGcmFtZSIpLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVy
KCkpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNhbGxGcmFtZXMpOwpAQCAtOTMsNyAr
OTMsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgY29uc3QgRGVwcmVjYQogICAgIG1ha2VFdmFsQ2FsbChlcnJvclN0
cmluZywgZnVuY3Rpb24sIHJlc3VsdCwgd2FzVGhyb3duKTsKIH0KIAotdm9pZCBJbmplY3RlZFNj
cmlwdDo6Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6
OkZ1bmN0aW9uRGV0YWlscz4qIHJlc3VsdCkKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0
aW9uRGV0YWlscyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVuY3Rp
b25JZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFp
bHM+KiByZXN1bHQpCiB7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0
aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIEFTQ0lJTGl0ZXJhbCgiZ2V0RnVuY3Rpb25EZXRh
aWxzIiksIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAg
ICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZnVuY3Rpb25JZCk7CkBAIC0xMDEsMTUgKzEwMSwx
NSBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmCiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBy
ZXN1bHRWYWx1ZTsKICAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdFZhbHVlKTsKICAgICBp
ZiAoIXJlc3VsdFZhbHVlIHx8IHJlc3VsdFZhbHVlLT50eXBlKCkgIT0gSW5zcGVjdG9yVmFsdWU6
OlR5cGU6Ok9iamVjdCkgewotICAgICAgICBpZiAoIXJlc3VsdFZhbHVlLT5hc1N0cmluZygqZXJy
b3JTdHJpbmcpKQotICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJJbnRl
cm5hbCBlcnJvciIpOworICAgICAgICBpZiAoIXJlc3VsdFZhbHVlLT5hc1N0cmluZyhlcnJvclN0
cmluZykpCisgICAgICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwg
ZXJyb3IiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgICpyZXN1bHQgPSBCaW5kaW5n
VHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+Ojpy
dW50aW1lQ2FzdChyZXN1bHRWYWx1ZSk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldFBy
b3BlcnRpZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElk
LCBib29sIG93blByb3BlcnRpZXMsIFJlZlB0cjxBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpS
dW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiogcHJvcGVydGllcykKK3ZvaWQgSW5qZWN0ZWRT
Y3JpcHQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIG9iamVjdElkLCBib29sIG93blByb3BlcnRpZXMsIFJlZlB0cjxBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiogcHJvcGVydGllcykKIHsK
ICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3Jp
cHRPYmplY3QoKSwgQVNDSUlMaXRlcmFsKCJnZXRQcm9wZXJ0aWVzIiksIGluc3BlY3RvckVudmly
b25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJn
dW1lbnQob2JqZWN0SWQpOwpAQCAtMTE4LDE0ICsxMTgsMTQgQEAgdm9pZCBJbmplY3RlZFNjcmlw
dDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYg
b2JqZWMKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdDsKICAgICBtYWtlQ2FsbChm
dW5jdGlvbiwgJnJlc3VsdCk7CiAgICAgaWYgKCFyZXN1bHQgfHwgcmVzdWx0LT50eXBlKCkgIT0g
SW5zcGVjdG9yVmFsdWU6OlR5cGU6OkFycmF5KSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9IEFT
Q0lJTGl0ZXJhbCgiSW50ZXJuYWwgZXJyb3IiKTsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJ
SUxpdGVyYWwoIkludGVybmFsIGVycm9yIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICAqcHJvcGVydGllcyA9IEJpbmRpbmdUcmFpdHM8QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj46OnJ1bnRpbWVDYXN0KHJlc3VsdCk7CiB9CiAK
LXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEludGVybmFsUHJvcGVydGllcyhFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIFJlZlB0cjxBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+KiBwcm9w
ZXJ0aWVzKQordm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgUmVmUHRyPEFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9y
Pj4qIHByb3BlcnRpZXMpCiB7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1
bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIEFTQ0lJTGl0ZXJhbCgiZ2V0SW50ZXJuYWxQ
cm9wZXJ0aWVzIiksIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIo
KSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwpAQCAtMTMzLDcgKzEz
Myw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEludGVybmFsUHJvcGVydGllcyhFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluCiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVl
PiByZXN1bHQ7CiAgICAgbWFrZUNhbGwoZnVuY3Rpb24sICZyZXN1bHQpOwogICAgIGlmICghcmVz
dWx0IHx8IHJlc3VsdC0+dHlwZSgpICE9IEluc3BlY3RvclZhbHVlOjpUeXBlOjpBcnJheSkgewot
ICAgICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkludGVybmFsIGVycm9yIik7Cisg
ICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJJbnRlcm5hbCBlcnJvciIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0LmgKaW5kZXggNmU4Zjc2OWUwMTYzYTMyNmNmNjIyMmI0MGUxMDM2
ZDBlNDM2OWIwNi4uNmEzODNkYmM1NjBlN2UwOTQ2OTEwYTZkZGNlNjE1YzkyODkzOWExMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaApA
QCAtNTYsMTIgKzU2LDEyIEBAIHB1YmxpYzoKICAgICBJbmplY3RlZFNjcmlwdChEZXByZWNhdGVk
OjpTY3JpcHRPYmplY3QsIEluc3BlY3RvckVudmlyb25tZW50Kik7CiAgICAgdmlydHVhbCB+SW5q
ZWN0ZWRTY3JpcHQoKTsKIAotICAgIHZvaWQgZXZhbHVhdGUoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVk
ZUNvbW1hbmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3
LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwgUHJvdG9j
b2w6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKLSAgICB2b2lkIGNhbGxGdW5jdGlvbk9u
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHBy
ZXNzaW9uLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50cywgYm9vbCByZXR1cm5CeVZhbHVlLCBib29s
IGdlbmVyYXRlUHJldmlldywgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+
KiByZXN1bHQsIFByb3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7Ci0gICAgdm9p
ZCBldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0
cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRl
Q29tbWFuZExpbmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcs
IFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBQcm90b2Nv
bDo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOwotICAgIHZvaWQgZ2V0RnVuY3Rpb25EZXRh
aWxzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8UHJvdG9j
b2w6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQpOwotICAgIHZvaWQgZ2V0UHJv
cGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wgb3duUHJv
cGVydGllcywgUmVmUHRyPFByb3RvY29sOjpBcnJheTxQcm90b2NvbDo6UnVudGltZTo6UHJvcGVy
dHlEZXNjcmlwdG9yPj4qIHJlc3VsdCk7Ci0gICAgdm9pZCBnZXRJbnRlcm5hbFByb3BlcnRpZXMo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBSZWZQdHI8UHJvdG9jb2w6OkFy
cmF5PFByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+KiByZXN1
bHQpOworICAgIHZvaWQgZXZhbHVhdGUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGV4cHJl
c3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5l
QVBJLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8UHJv
dG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwgUHJvdG9jb2w6Ok9wdE91dHB1
dDxib29sPiogd2FzVGhyb3duKTsKKyAgICB2b2lkIGNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25z
dCBTdHJpbmcmIGFyZ3VtZW50cywgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdlbmVyYXRlUHJl
dmlldywgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIFBy
b3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7CisgICAgdm9pZCBldmFsdWF0ZU9u
Q2FsbEZyYW1lKEVycm9yU3RyaW5nJiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGNh
bGxGcmFtZXMsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVz
c2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVB
UEksIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxQcm90
b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBQcm90b2NvbDo6T3B0T3V0cHV0
PGJvb2w+KiB3YXNUaHJvd24pOworICAgIHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8UHJvdG9jb2w6OkRlYnVnZ2Vy
OjpGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQpOworICAgIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wgb3duUHJvcGVydGllcywgUmVm
UHRyPFByb3RvY29sOjpBcnJheTxQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9y
Pj4qIHJlc3VsdCk7CisgICAgdm9pZCBnZXRJbnRlcm5hbFByb3BlcnRpZXMoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBSZWZQdHI8UHJvdG9jb2w6OkFycmF5PFByb3RvY29s
OjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+KiByZXN1bHQpOwogCiAgICAg
UGFzc1JlZlB0cjxQcm90b2NvbDo6QXJyYXk8UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+
PiB3cmFwQ2FsbEZyYW1lcyhjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpOwogICAgIFBh
c3NSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gd3JhcE9iamVjdChjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lLCBib29s
IGdlbmVyYXRlUHJldmlldyA9IGZhbHNlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcAppbmRleCA0OWExMWJm
OWI2Y2E0ZDVhMjIwYTA4OGM4ODk0NzIyYjI3ZmQzMjk3Li5kZDEyOThjYjVmNGQ2Yzk3ZTE2MWU4
OGEyYmMxMzE2N2JiMjc5OWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwCkBAIC0xMTQsMzEgKzExNCwzMSBAQCB2
b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUNhbGwoRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rp
b25DYWxsJiBmdW5jdGlvbiwgUmVmUAogICAgICAgICAqcmVzdWx0ID0gSW5zcGVjdG9yU3RyaW5n
OjpjcmVhdGUoIkV4Y2VwdGlvbiB3aGlsZSBtYWtpbmcgYSBjYWxsLiIpOwogfQogCi12b2lkIElu
amVjdGVkU2NyaXB0QmFzZTo6bWFrZUV2YWxDYWxsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
RGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgUmVmUHRyPFByb3RvY29s
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiBvYmplY3RSZXN1bHQsIFByb3RvY29sOjpPcHRPdXRw
dXQ8Ym9vbD4qIHdhc1Rocm93bikKK3ZvaWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlRXZhbENh
bGwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNh
bGwmIGZ1bmN0aW9uLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIG9i
amVjdFJlc3VsdCwgUHJvdG9jb2w6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQogewogICAg
IFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0OwogICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCAm
cmVzdWx0KTsKICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJ
SUxpdGVyYWwoIkludGVybmFsIGVycm9yOiByZXN1bHQgdmFsdWUgaXMgZW1wdHkiKTsKKyAgICAg
ICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkludGVybmFsIGVycm9yOiByZXN1bHQgdmFs
dWUgaXMgZW1wdHkiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChyZXN1bHQt
PnR5cGUoKSA9PSBJbnNwZWN0b3JWYWx1ZTo6VHlwZTo6U3RyaW5nKSB7Ci0gICAgICAgIHJlc3Vs
dC0+YXNTdHJpbmcoKmVycm9yU3RyaW5nKTsKLSAgICAgICAgQVNTRVJUKGVycm9yU3RyaW5nLT5s
ZW5ndGgoKSk7CisgICAgICAgIHJlc3VsdC0+YXNTdHJpbmcoZXJyb3JTdHJpbmcpOworICAgICAg
ICBBU1NFUlQoZXJyb3JTdHJpbmcubGVuZ3RoKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0UGFpcjsKICAgICBpZiAoIXJlc3Vs
dC0+YXNPYmplY3QocmVzdWx0UGFpcikpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlM
aXRlcmFsKCJJbnRlcm5hbCBlcnJvcjogcmVzdWx0IGlzIG5vdCBhbiBPYmplY3QiKTsKKyAgICAg
ICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkludGVybmFsIGVycm9yOiByZXN1bHQgaXMg
bm90IGFuIE9iamVjdCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gcmVzdWx0T2JqZWN0ID0gcmVzdWx0UGFpci0+Z2V0T2JqZWN0KEFTQ0lJ
TGl0ZXJhbCgicmVzdWx0IikpOwogICAgIGJvb2wgd2FzVGhyb3duVmFsID0gZmFsc2U7CiAgICAg
aWYgKCFyZXN1bHRPYmplY3QgfHwgIXJlc3VsdFBhaXItPmdldEJvb2xlYW4oQVNDSUlMaXRlcmFs
KCJ3YXNUaHJvd24iKSwgd2FzVGhyb3duVmFsKSkgewotICAgICAgICAqZXJyb3JTdHJpbmcgPSBB
U0NJSUxpdGVyYWwoIkludGVybmFsIGVycm9yOiByZXN1bHQgaXMgbm90IGEgcGFpciBvZiB2YWx1
ZSBhbmQgd2FzVGhyb3duIGZsYWciKTsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVy
YWwoIkludGVybmFsIGVycm9yOiByZXN1bHQgaXMgbm90IGEgcGFpciBvZiB2YWx1ZSBhbmQgd2Fz
VGhyb3duIGZsYWciKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmgKaW5kZXggNTBm
YTU4ZGQwNzk4N2FjZDIwYWVmZWU3ZDc3NWE0OTUxYTBjZjYyYi4uMTk0Zjc0NDdkYTBiNDc5ZTVi
MGVmOTk5OTlhYWIwODM1YjhkOWRhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5oCkBAIC02OCw3ICs2OCw3IEBAIHByb3Rl
Y3RlZDoKICAgICBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIGluamVjdGVkU2NyaXB0
T2JqZWN0KCkgY29uc3Q7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgY2FsbEZ1bmN0aW9u
V2l0aEV2YWxFbmFibGVkKERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYsIGJvb2wmIGhh
ZEV4Y2VwdGlvbikgY29uc3Q7CiAgICAgdm9pZCBtYWtlQ2FsbChEZXByZWNhdGVkOjpTY3JpcHRG
dW5jdGlvbkNhbGwmLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwotICAgIHZvaWQg
bWFrZUV2YWxDYWxsKEVycm9yU3RyaW5nKiwgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxs
JiwgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIFByb3Rv
Y29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7CisgICAgdm9pZCBtYWtlRXZhbENhbGwo
RXJyb3JTdHJpbmcmLCBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwmLCBSZWZQdHI8UHJv
dG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwgUHJvdG9jb2w6Ok9wdE91dHB1
dDxib29sPiogd2FzVGhyb3duKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9uYW1lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
QWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQWdlbnQuY3BwCmluZGV4IDc2MTE3NDY4OTUyNjRhYzE0MDEzYTA0YmFhYWM1N2UzYWI0MmFh
NWEuLjlmNDZmNTg4ZmQ4ZmY5NDViMzcyYWNiOWQ2YmNhM2Q1NGEwZDU0N2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JB
Z2VudC5jcHAKQEAgLTYzLDExICs2MywxMSBAQCB2b2lkIEluc3BlY3RvckFnZW50Ojp3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKQogCiAgICAg
bV9wZW5kaW5nRXZhbHVhdGVUZXN0Q29tbWFuZHMuY2xlYXIoKTsKIAotICAgIEVycm9yU3RyaW5n
IGVycm9yOwotICAgIGRpc2FibGUoJmVycm9yKTsKKyAgICBFcnJvclN0cmluZyB1bnVzZWQ7Cisg
ICAgZGlzYWJsZSh1bnVzZWQpOwogfQogCi12b2lkIEluc3BlY3RvckFnZW50OjplbmFibGUoRXJy
b3JTdHJpbmcqKQordm9pZCBJbnNwZWN0b3JBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nJikKIHsK
ICAgICBtX2VuYWJsZWQgPSB0cnVlOwogCkBAIC04NCwxMiArODQsMTIgQEAgdm9pZCBJbnNwZWN0
b3JBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKICAgICBtX3BlbmRpbmdFdmFsdWF0ZVRlc3RD
b21tYW5kcy5jbGVhcigpOwogfQogCi12b2lkIEluc3BlY3RvckFnZW50OjpkaXNhYmxlKEVycm9y
U3RyaW5nKikKK3ZvaWQgSW5zcGVjdG9yQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmKQogewog
ICAgIG1fZW5hYmxlZCA9IGZhbHNlOwogfQogCi12b2lkIEluc3BlY3RvckFnZW50Ojppbml0aWFs
aXplZChFcnJvclN0cmluZyopCit2b2lkIEluc3BlY3RvckFnZW50Ojppbml0aWFsaXplZChFcnJv
clN0cmluZyYpCiB7CiAgICAgbV9lbnZpcm9ubWVudC5mcm9udGVuZEluaXRpYWxpemVkKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQWdlbnQuaAppbmRleCBlYzBmM2Y5NjJhOWVjNzA3ZTRjNTJjYWIyYTY2ODcxNjg4NTk2
Nzc2Li4yZmI4ZjI1MWU3YjJmMDcxYWMyZDM0M2UxNGVjYmQ1NWE5MWUxMzI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFn
ZW50LmgKQEAgLTU3LDkgKzU3LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24pIG92
ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGluaXRpYWxpemVkKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGluaXRp
YWxpemVkKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGluc3BlY3QoUGFzc1Jl
ZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBvYmplY3RUb0luc3BlY3QsIFBh
c3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBoaW50cyk7CiAgICAgdm9pZCBldmFsdWF0ZUZvclRl
c3RJbkZyb250ZW5kKGNvbnN0IFN0cmluZyYgc2NyaXB0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xl
QWdlbnQuY3BwCmluZGV4IDJkZGVjMzcxMDhiOGQ2NjYxZGFhMTIwNzcyNzZiZTg0ODFkYWUzNjQu
LjdjNTVmY2FmMmM3ZTE5ODgwNTlmN2U0Yjk1YTYzZWNiZDM5NDJjMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ29uc29sZUFnZW50LmNwcApAQCAtNjksMTAgKzY5LDEwIEBAIHZvaWQgSW5zcGVjdG9yQ29u
c29sZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25u
ZWN0UmVhCiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOwogCiAgICAgU3RyaW5nIGVy
cm9yU3RyaW5nOwotICAgIGRpc2FibGUoJmVycm9yU3RyaW5nKTsKKyAgICBkaXNhYmxlKGVycm9y
U3RyaW5nKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmVuYWJsZShFcnJvclN0
cmluZyopCit2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nJikK
IHsKICAgICBpZiAobV9lbmFibGVkKQogICAgICAgICByZXR1cm47CkBAIC04OSw3ICs4OSw3IEBA
IHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcqKQogICAgICAg
ICBtX2NvbnNvbGVNZXNzYWdlc1tpXS0+YWRkVG9Gcm9udGVuZChtX2Zyb250ZW5kRGlzcGF0Y2hl
ci5nZXQoKSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIsIGZhbHNlKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JDb25zb2xlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQordm9pZCBJbnNwZWN0b3JD
b25zb2xlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmKQogewogICAgIGlmICghbV9lbmFibGVk
KQogICAgICAgICByZXR1cm47CkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29s
ZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKICAgICBtX2VuYWJsZWQgPSBmYWxzZTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNsZWFyTWVzc2FnZXMoRXJyb3JTdHJpbmcq
KQordm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNsZWFyTWVzc2FnZXMoRXJyb3JTdHJpbmcm
KQogewogICAgIG1fY29uc29sZU1lc3NhZ2VzLmNsZWFyKCk7CiAgICAgbV9leHBpcmVkQ29uc29s
ZU1lc3NhZ2VDb3VudCA9IDA7CkBAIC0xMTEsOCArMTExLDggQEAgdm9pZCBJbnNwZWN0b3JDb25z
b2xlQWdlbnQ6OmNsZWFyTWVzc2FnZXMoRXJyb3JTdHJpbmcqKQogCiB2b2lkIEluc3BlY3RvckNv
bnNvbGVBZ2VudDo6cmVzZXQoKQogewotICAgIEVycm9yU3RyaW5nIGVycm9yOwotICAgIGNsZWFy
TWVzc2FnZXMoJmVycm9yKTsKKyAgICBFcnJvclN0cmluZyB1bnVzZWQ7CisgICAgY2xlYXJNZXNz
YWdlcyh1bnVzZWQpOwogCiAgICAgbV90aW1lcy5jbGVhcigpOwogICAgIG1fY291bnRzLmNsZWFy
KCk7CkBAIC0xMjQsOCArMTI0LDggQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmFkZE1l
c3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXAKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKHR5cGUgPT0gTWVzc2FnZVR5cGU6OkNsZWFyKSB7Ci0gICAgICAg
IEVycm9yU3RyaW5nIGVycm9yOwotICAgICAgICBjbGVhck1lc3NhZ2VzKCZlcnJvcik7CisgICAg
ICAgIEVycm9yU3RyaW5nIHVudXNlZDsKKyAgICAgICAgY2xlYXJNZXNzYWdlcyh1bnVzZWQpOwog
ICAgIH0KIAogICAgIGFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1l
c3NhZ2U+KHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGNhbGxTdGFjaywgcmVxdWVzdElk
ZW50aWZpZXIpKTsKQEAgLTEzNyw4ICsxMzcsOCBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2Vu
dDo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cAog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAodHlwZSA9PSBNZXNzYWdlVHlwZTo6Q2xlYXIpIHsK
LSAgICAgICAgRXJyb3JTdHJpbmcgZXJyb3I7Ci0gICAgICAgIGNsZWFyTWVzc2FnZXMoJmVycm9y
KTsKKyAgICAgICAgRXJyb3JTdHJpbmcgdW51c2VkOworICAgICAgICBjbGVhck1lc3NhZ2VzKHVu
dXNlZCk7CiAgICAgfQogCiAgICAgYWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1ZTxD
b25zb2xlTWVzc2FnZT4oc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgYXJndW1lbnRzLCBz
dGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpKTsKQEAgLTE1MCw4ICsxNTAsOCBAQCB2b2lkIEluc3Bl
Y3RvckNvbnNvbGVBZ2VudDo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlIHNvdXJj
ZSwgTWVzc2FnZVR5cAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAodHlwZSA9PSBNZXNzYWdl
VHlwZTo6Q2xlYXIpIHsKLSAgICAgICAgRXJyb3JTdHJpbmcgZXJyb3I7Ci0gICAgICAgIGNsZWFy
TWVzc2FnZXMoJmVycm9yKTsKKyAgICAgICAgRXJyb3JTdHJpbmcgdW51c2VkOworICAgICAgICBj
bGVhck1lc3NhZ2VzKHVudXNlZCk7CiAgICAgfQogCiAgICAgYWRkQ29uc29sZU1lc3NhZ2Uoc3Rk
OjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2Fn
ZSwgc2NyaXB0SUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVu
dGlmaWVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCmluZGV4IDkxM2E3ZDAwMjE4Y2Nm
MzA3MTRhZjMyNjZhNTU4MWUwMWVjYzU2YTYuLjFkNjNlZWNkMGI4NTkzOTcxNTlmYjE2YzdkMjcw
Y2Q4NmUwZDFkMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCkBAIC02MCwxMSArNjAs
MTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZW5hYmxlKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc2Fi
bGUoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJNZXNzYWdl
cyhFcnJvclN0cmluZyopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRNb25pdG9yaW5n
WEhSRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wgZW5hYmxlZCkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBhZGRJbnNwZWN0ZWROb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBj
bGVhck1lc3NhZ2VzKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNl
dE1vbml0b3JpbmdYSFJFbmFibGVkKEVycm9yU3RyaW5nJiwgYm9vbCBlbmFibGVkKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGFkZEluc3BlY3RlZE5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlk
KSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNXb3JrZXJBZ2VudCgpIGNvbnN0ID0gMDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBmN2I4YmQyYTBiM2I4NWVjMmM4
NTc2YmE2YjIzYmNjNWVhYmMxNTRjLi4xNjkwYTM3MzkzZTc2ZDBmMTdlNmYwZmI0ZjQwODBlNjRm
YTFlZDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMTE5LDE3ICsx
MTksMTcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaXNhYmxlKGJvb2wgaXNCZWlu
Z0Rlc3Ryb3llZCkKICAgICBtX2VuYWJsZWQgPSBmYWxzZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcqKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcmKQogewogICAgIGVuYWJsZSgpOwogfQogCi12b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQordm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJikKIHsKICAgICBkaXNhYmxl
KGZhbHNlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50
c0FjdGl2ZShFcnJvclN0cmluZyosIGJvb2wgYWN0aXZlKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpzZXRCcmVha3BvaW50c0FjdGl2ZShFcnJvclN0cmluZyYsIGJvb2wgYWN0aXZlKQog
ewogICAgIGlmIChhY3RpdmUpCiAgICAgICAgIHNjcmlwdERlYnVnU2VydmVyKCkuYWN0aXZhdGVC
cmVha3BvaW50cygpOwpAQCAtMTk1LDcgKzE5NSw3IEBAIHN0YXRpYyBib29sIGJyZWFrcG9pbnRB
Y3Rpb25UeXBlRm9yU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZVN0cmluZywgU2NyaXB0QnJlYWtw
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJy
ZWFrcG9pbnRBY3Rpb25zRnJvbVByb3RvY29sKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgUmVm
UHRyPEluc3BlY3RvckFycmF5PiYgYWN0aW9ucywgQnJlYWtwb2ludEFjdGlvbnMqIHJlc3VsdCkK
K2Jvb2wgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvbnNGcm9tUHJvdG9j
b2woRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBhY3Rp
b25zLCBCcmVha3BvaW50QWN0aW9ucyogcmVzdWx0KQogewogICAgIGlmICghYWN0aW9ucykKICAg
ICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMDksMTkgKzIwOSwxOSBAQCBib29sIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25zRnJvbVByb3RvY29sKEVycm9yU3RyaW5nKiBl
cnJvclN0cgogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlID0gYWN0aW9ucy0+
Z2V0KGkpOwogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3Q7CiAgICAgICAg
IGlmICghdmFsdWUtPmFzT2JqZWN0KG9iamVjdCkpIHsKLSAgICAgICAgICAgICplcnJvclN0cmlu
ZyA9IEFTQ0lJTGl0ZXJhbCgiQnJlYWtwb2ludEFjdGlvbiBvZiBpbmNvcnJlY3QgdHlwZSwgZXhw
ZWN0ZWQgb2JqZWN0Iik7CisgICAgICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgi
QnJlYWtwb2ludEFjdGlvbiBvZiBpbmNvcnJlY3QgdHlwZSwgZXhwZWN0ZWQgb2JqZWN0Iik7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICBTdHJpbmcgdHlw
ZVN0cmluZzsKICAgICAgICAgaWYgKCFvYmplY3QtPmdldFN0cmluZyhBU0NJSUxpdGVyYWwoInR5
cGUiKSwgdHlwZVN0cmluZykpIHsKLSAgICAgICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0
ZXJhbCgiQnJlYWtwb2ludEFjdGlvbiBoYWQgdHlwZSBtaXNzaW5nIik7CisgICAgICAgICAgICBl
cnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiQnJlYWtwb2ludEFjdGlvbiBoYWQgdHlwZSBtaXNz
aW5nIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICBT
Y3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZSB0eXBlOwogICAgICAgICBpZiAoIWJyZWFrcG9pbnRB
Y3Rpb25UeXBlRm9yU3RyaW5nKHR5cGVTdHJpbmcsICZ0eXBlKSkgewotICAgICAgICAgICAgKmVy
cm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJCcmVha3BvaW50QWN0aW9uIGhhZCB1bmtub3duIHR5
cGUiKTsKKyAgICAgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJCcmVha3BvaW50
QWN0aW9uIGhhZCB1bmtub3duIHR5cGUiKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQogCkBAIC0yMzksMTEgKzIzOSwxMSBAQCBib29sIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmJyZWFrcG9pbnRBY3Rpb25zRnJvbVByb3RvY29sKEVycm9yU3RyaW5nKiBlcnJvclN0cgog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJy
ZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBsaW5lTnVtYmVyLCBj
b25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlv
bmFsVVJMUmVnZXgsIGNvbnN0IGludCogY29uc3Qgb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpE
ZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRCcmVha3BvaW50SWRlbnRpZmllciwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpM
b2NhdGlvbj4+JiBsb2NhdGlvbnMpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJy
ZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBsaW5lTnVtYmVyLCBj
b25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlv
bmFsVVJMUmVnZXgsIGNvbnN0IGludCogY29uc3Qgb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpE
ZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRCcmVha3BvaW50SWRlbnRpZmllciwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpM
b2NhdGlvbj4+JiBsb2NhdGlvbnMpCiB7CiAgICAgbG9jYXRpb25zID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPjo6Y3Jl
YXRlKCk7CiAgICAgaWYgKCFvcHRpb25hbFVSTCA9PSAhb3B0aW9uYWxVUkxSZWdleCkgewotICAg
ICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkVpdGhlciB1cmwgb3IgdXJsUmVnZXgg
bXVzdCBiZSBzcGVjaWZpZWQuIik7CisgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFs
KCJFaXRoZXIgdXJsIG9yIHVybFJlZ2V4IG11c3QgYmUgc3BlY2lmaWVkLiIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0yNTMsNyArMjUzLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQg
bGkKIAogICAgIFN0cmluZyBicmVha3BvaW50SWRlbnRpZmllciA9IChpc1JlZ2V4ID8gIi8iICsg
dXJsICsgIi8iIDogdXJsKSArICc6JyArIFN0cmluZzo6bnVtYmVyKGxpbmVOdW1iZXIpICsgJzon
ICsgU3RyaW5nOjpudW1iZXIoY29sdW1uTnVtYmVyKTsKICAgICBpZiAobV9qYXZhU2NyaXB0QnJl
YWtwb2ludHMuY29udGFpbnMoYnJlYWtwb2ludElkZW50aWZpZXIpKSB7Ci0gICAgICAgICplcnJv
clN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiQnJlYWtwb2ludCBhdCBzcGVjaWZpZWQgbG9jYXRpb24g
YWxyZWFkeSBleGlzdHMuIik7CisgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJC
cmVha3BvaW50IGF0IHNwZWNpZmllZCBsb2NhdGlvbiBhbHJlYWR5IGV4aXN0cy4iKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjg1LDEyICsyODUsMTIgQEAgdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBpbnQgbGkKICAgICAqb3V0QnJlYWtwb2ludElkZW50aWZpZXIgPSBicmVha3BvaW50SWRlbnRp
ZmllcjsKIH0KIAotc3RhdGljIGJvb2wgcGFyc2VMb2NhdGlvbihFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIEluc3BlY3Rvck9iamVjdCYgbG9jYXRpb24sIEpTQzo6U291cmNlSUQmIHNvdXJjZUlE
LCB1bnNpZ25lZCYgbGluZU51bWJlciwgdW5zaWduZWQmIGNvbHVtbk51bWJlcikKK3N0YXRpYyBi
b29sIHBhcnNlTG9jYXRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBJbnNwZWN0b3JPYmpl
Y3QmIGxvY2F0aW9uLCBKU0M6OlNvdXJjZUlEJiBzb3VyY2VJRCwgdW5zaWduZWQmIGxpbmVOdW1i
ZXIsIHVuc2lnbmVkJiBjb2x1bW5OdW1iZXIpCiB7CiAgICAgU3RyaW5nIHNjcmlwdElEU3RyOwog
ICAgIGlmICghbG9jYXRpb24uZ2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2NyaXB0SWQiKSwgc2Ny
aXB0SURTdHIpIHx8ICFsb2NhdGlvbi5nZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgibGluZU51bWJl
ciIpLCBsaW5lTnVtYmVyKSkgewogICAgICAgICBzb3VyY2VJRCA9IEpTQzo6bm9Tb3VyY2VJRDsK
LSAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJzY3JpcHRJZCBhbmQgbGluZU51
bWJlciBhcmUgcmVxdWlyZWQuIik7CisgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFs
KCJzY3JpcHRJZCBhbmQgbGluZU51bWJlciBhcmUgcmVxdWlyZWQuIik7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKQEAgLTMwMCw3ICszMDAsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZUxv
Y2F0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgSW5zcGVjdG9yT2JqZWN0JiBsb2NhdGlv
biwgSgogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OnNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiYgbG9jYXRpb24sIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBv
cHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRC
cmVha3BvaW50SWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2Vy
OjpMb2NhdGlvbj4mIGFjdHVhbExvY2F0aW9uKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4mIGxvY2F0aW9uLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piog
b3B0aW9ucywgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCogb3V0
QnJlYWtwb2ludElkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dl
cjo6TG9jYXRpb24+JiBhY3R1YWxMb2NhdGlvbikKIHsKICAgICBKU0M6OlNvdXJjZUlEIHNvdXJj
ZUlEOwogICAgIHVuc2lnbmVkIGxpbmVOdW1iZXI7CkBAIC0zMjMsMjEgKzMyMywyMSBAQCB2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBSZWZQdAogCiAgICAgU3RyaW5nIGJyZWFrcG9pbnRJZGVudGlmaWVyID0g
U3RyaW5nOjpudW1iZXIoc291cmNlSUQpICsgJzonICsgU3RyaW5nOjpudW1iZXIobGluZU51bWJl
cikgKyAnOicgKyBTdHJpbmc6Om51bWJlcihjb2x1bW5OdW1iZXIpOwogICAgIGlmIChtX2JyZWFr
cG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHMuZmluZChicmVha3BvaW50
SWRlbnRpZmllcikgIT0gbV9icmVha3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3Bv
aW50SURzLmVuZCgpKSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiQnJl
YWtwb2ludCBhdCBzcGVjaWZpZWQgbG9jYXRpb24gYWxyZWFkeSBleGlzdHMuIik7CisgICAgICAg
IGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJCcmVha3BvaW50IGF0IHNwZWNpZmllZCBsb2Nh
dGlvbiBhbHJlYWR5IGV4aXN0cy4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFNj
cmlwdEJyZWFrcG9pbnQgYnJlYWtwb2ludChsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNvbmRp
dGlvbiwgYnJlYWtwb2ludEFjdGlvbnMsIGF1dG9Db250aW51ZSk7CiAgICAgYWN0dWFsTG9jYXRp
b24gPSByZXNvbHZlQnJlYWtwb2ludChicmVha3BvaW50SWRlbnRpZmllciwgc291cmNlSUQsIGJy
ZWFrcG9pbnQpOwogICAgIGlmICghYWN0dWFsTG9jYXRpb24pIHsKLSAgICAgICAgKmVycm9yU3Ry
aW5nID0gQVNDSUlMaXRlcmFsKCJDb3VsZCBub3QgcmVzb2x2ZSBicmVha3BvaW50Iik7CisgICAg
ICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJDb3VsZCBub3QgcmVzb2x2ZSBicmVha3Bv
aW50Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAqb3V0QnJlYWtwb2ludElkZW50
aWZpZXIgPSBicmVha3BvaW50SWRlbnRpZmllcjsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpyZW1vdmVCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBicmVh
a3BvaW50SWRlbnRpZmllcikKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVtb3ZlQnJl
YWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkZW50aWZpZXIp
CiB7CiAgICAgbV9qYXZhU2NyaXB0QnJlYWtwb2ludHMucmVtb3ZlKGJyZWFrcG9pbnRJZGVudGlm
aWVyKTsKIApAQCAtMzUwLDcgKzM1MCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
cmVtb3ZlQnJlYWtwb2ludChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgYnJlYWtwCiAgICAg
fQogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbihF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBs
b2NhdGlvbikKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y29udGludWVUb0xvY2F0aW9u
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4m
IGxvY2F0aW9uKQogewogICAgIGlmIChtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJRCAh
PSBKU0M6Om5vQnJlYWtwb2ludElEKSB7CiAgICAgICAgIHNjcmlwdERlYnVnU2VydmVyKCkucmVt
b3ZlQnJlYWtwb2ludChtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJRCk7CkBAIC0zOTUs
NyArMzk1LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6TG9j
YXRpb24+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc28KICAgICByZXR1cm4gbG9jYXRpb247
CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2VhcmNoSW5Db250ZW50KEVycm9y
U3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRFN0ciwgY29uc3QgU3RyaW5nJiBx
dWVyeSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29s
KiBjb25zdCBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4mIHJlc3Vs
dHMpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNlYXJjaEluQ29udGVudChFcnJvclN0
cmluZyYgZXJyb3IsIGNvbnN0IFN0cmluZyYgc2NyaXB0SURTdHIsIGNvbnN0IFN0cmluZyYgcXVl
cnksIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCog
Y29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+JiByZXN1bHRz
KQogewogICAgIGJvb2wgaXNSZWdleCA9IG9wdGlvbmFsSXNSZWdleCA/ICpvcHRpb25hbElzUmVn
ZXggOiBmYWxzZTsKICAgICBib29sIGNhc2VTZW5zaXRpdmUgPSBvcHRpb25hbENhc2VTZW5zaXRp
dmUgPyAqb3B0aW9uYWxDYXNlU2Vuc2l0aXZlIDogZmFsc2U7CkBAIC00MDUsMjQgKzQwNSwyNCBA
QCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNlYXJjaEluQ29udGVudChFcnJvclN0cmlu
ZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgcwogICAgIGlmIChpdCAhPSBtX3NjcmlwdHMuZW5kKCkp
CiAgICAgICAgIHJlc3VsdHMgPSBDb250ZW50U2VhcmNoVXRpbGl0aWVzOjpzZWFyY2hJblRleHRC
eUxpbmVzKGl0LT52YWx1ZS5zb3VyY2UsIHF1ZXJ5LCBjYXNlU2Vuc2l0aXZlLCBpc1JlZ2V4KTsK
ICAgICBlbHNlCi0gICAgICAgICplcnJvciA9ICJObyBzY3JpcHQgZm9yIGlkOiAiICsgc2NyaXB0
SURTdHI7CisgICAgICAgIGVycm9yID0gQVNDSUlMaXRlcmFsKCJObyBzY3JpcHQgZm9yIGlkOiAi
KSArIHNjcmlwdElEU3RyOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldFNj
cmlwdFNvdXJjZShFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgc2NyaXB0SURTdHIs
IFN0cmluZyogc2NyaXB0U291cmNlKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRT
Y3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcmIGVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmlwdElEU3Ry
LCBTdHJpbmcqIHNjcmlwdFNvdXJjZSkKIHsKICAgICBKU0M6OlNvdXJjZUlEIHNvdXJjZUlEID0g
c2NyaXB0SURTdHIudG9JbnRQdHIoKTsKICAgICBTY3JpcHRzTWFwOjppdGVyYXRvciBpdCA9IG1f
c2NyaXB0cy5maW5kKHNvdXJjZUlEKTsKICAgICBpZiAoaXQgIT0gbV9zY3JpcHRzLmVuZCgpKQog
ICAgICAgICAqc2NyaXB0U291cmNlID0gaXQtPnZhbHVlLnNvdXJjZTsKICAgICBlbHNlCi0gICAg
ICAgICplcnJvciA9ICJObyBzY3JpcHQgZm9yIGlkOiAiICsgc2NyaXB0SURTdHI7CisgICAgICAg
IGVycm9yID0gQVNDSUlMaXRlcmFsKCJObyBzY3JpcHQgZm9yIGlkOiAiKSArIHNjcmlwdElEU3Ry
OwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldEZ1bmN0aW9uRGV0YWlscyhF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+JiBkZXRhaWxz
KQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiYgZGV0YWlscykKIHsK
ICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLT5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKGZ1bmN0aW9uSWQpOwogICAgIGlmIChpbmpl
Y3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlM
aXRlcmFsKCJGdW5jdGlvbiBvYmplY3QgaWQgaXMgb2Jzb2xldGUiKTsKKyAgICAgICAgZXJyb3JT
dHJpbmcgPSBBU0NJSUxpdGVyYWwoIkZ1bmN0aW9uIG9iamVjdCBpZCBpcyBvYnNvbGV0ZSIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NDgsNyArNDQ4LDcgQEAgdm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpjYW5jZWxQYXVzZU9uTmV4dFN0YXRlbWVudCgpCiAgICAgc2NyaXB0
RGVidWdTZXJ2ZXIoKS5zZXRQYXVzZU9uTmV4dFN0YXRlbWVudChmYWxzZSk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cGF1c2UoRXJyb3JTdHJpbmcqKQordm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpwYXVzZShFcnJvclN0cmluZyYpCiB7CiAgICAgaWYgKG1famF2YVNj
cmlwdFBhdXNlU2NoZWR1bGVkKQogICAgICAgICByZXR1cm47CkBAIC00NTgsNyArNDU4LDcgQEAg
dm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpwYXVzZShFcnJvclN0cmluZyopCiAgICAgbV9q
YXZhU2NyaXB0UGF1c2VTY2hlZHVsZWQgPSB0cnVlOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OnJlc3VtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcpCit2b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OnJlc3VtZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiB7CiAgICAg
aWYgKCFhc3NlcnRQYXVzZWQoZXJyb3JTdHJpbmcpKQogICAgICAgICByZXR1cm47CkBAIC00Njcs
NyArNDY3LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXN1bWUoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nKQogICAgIHNjcmlwdERlYnVnU2VydmVyKCkuY29udGludWVQcm9ncmFt
KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c3RlcE92ZXIoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzdGVwT3ZlcihF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiB7CiAgICAgaWYgKCFhc3NlcnRQYXVzZWQoZXJyb3JT
dHJpbmcpKQogICAgICAgICByZXR1cm47CkBAIC00NzYsNyArNDc2LDcgQEAgdm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpzdGVwT3ZlcihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcpCiAgICAg
c2NyaXB0RGVidWdTZXJ2ZXIoKS5zdGVwT3ZlclN0YXRlbWVudCgpOwogfQogCi12b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OnN0ZXBJbnRvKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZykKK3Zv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c3RlcEludG8oRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nKQogewogICAgIGlmICghYXNzZXJ0UGF1c2VkKGVycm9yU3RyaW5nKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtNDg4LDcgKzQ4OCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c3Rl
cEludG8oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nKQogICAgICAgICBtX2xpc3RlbmVyLT5zdGVw
SW50bygpOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnN0ZXBPdXQoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzdGVwT3V0
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKIHsKICAgICBpZiAoIWFzc2VydFBhdXNlZChlcnJv
clN0cmluZykpCiAgICAgICAgIHJldHVybjsKQEAgLTQ5Nyw3ICs0OTcsNyBAQCB2b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OnN0ZXBPdXQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nKQogICAg
IHNjcmlwdERlYnVnU2VydmVyKCkuc3RlcE91dE9mRnVuY3Rpb24oKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRQYXVzZU9uRXhjZXB0aW9ucyhFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc3RyaW5nUGF1c2VTdGF0ZSkKK3ZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6c2V0UGF1c2VPbkV4Y2VwdGlvbnMoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHN0cmluZ1BhdXNlU3RhdGUpCiB7CiAgICAgSlNDOjpEZWJ1Z2dl
cjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBwYXVzZVN0YXRlOwogICAgIGlmIChzdHJpbmdQYXVz
ZVN0YXRlID09ICJub25lIikKQEAgLTUwNywyMCArNTA3LDIwIEBAIHZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2V0UGF1c2VPbkV4Y2VwdGlvbnMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBjb25zCiAgICAgZWxzZSBpZiAoc3RyaW5nUGF1c2VTdGF0ZSA9PSAidW5jYXVnaHQiKQogICAg
ICAgICBwYXVzZVN0YXRlID0gSlNDOjpEZWJ1Z2dlcjo6UGF1c2VPblVuY2F1Z2h0RXhjZXB0aW9u
czsKICAgICBlbHNlIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIlVua25vd24gcGF1c2Ugb24g
ZXhjZXB0aW9ucyBtb2RlOiAiICsgc3RyaW5nUGF1c2VTdGF0ZTsKKyAgICAgICAgZXJyb3JTdHJp
bmcgPSBBU0NJSUxpdGVyYWwoIlVua25vd24gcGF1c2Ugb24gZXhjZXB0aW9ucyBtb2RlOiAiKSAr
IHN0cmluZ1BhdXNlU3RhdGU7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBzY3JpcHRE
ZWJ1Z1NlcnZlcigpLnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoc3RhdGljX2Nhc3Q8SlNDOjpE
ZWJ1Z2dlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZT4ocGF1c2VTdGF0ZSkpOwogICAgIGlmIChz
Y3JpcHREZWJ1Z1NlcnZlcigpLnBhdXNlT25FeGNlcHRpb25zU3RhdGUoKSAhPSBwYXVzZVN0YXRl
KQotICAgICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkludGVybmFsIGVycm9yLiBD
b3VsZCBub3QgY2hhbmdlIHBhdXNlIG9uIGV4Y2VwdGlvbnMgc3RhdGUiKTsKKyAgICAgICAgZXJy
b3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkludGVybmFsIGVycm9yLiBDb3VsZCBub3QgY2hhbmdl
IHBhdXNlIG9uIGV4Y2VwdGlvbnMgc3RhdGUiKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBT
dHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBjb25zdCBpbmNsdWRlQ29tbWFu
ZExpbmVBUEksIGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRl
Q29uc29sZSwgY29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2Vu
ZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdh
c1Rocm93bikKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxGcmFt
ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNv
bnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nKiBjb25zdCBvYmplY3RHcm91cCwg
Y29uc3QgYm9vbCogY29uc3QgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBib29sKiBjb25z
dCBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIGNvbnN0
IHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCiB7CiAgICAgSW5qZWN0ZWRT
Y3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRT
Y3JpcHRGb3JPYmplY3RJZChjYWxsRnJhbWVJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhh
c05vVmFsdWUoKSkgewotICAgICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkluc3Bl
Y3RlZCBmcmFtZSBoYXMgZ29uZSIpOworICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJh
bCgiSW5zcGVjdGVkIGZyYW1lIGhhcyBnb25lIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTU0MCw3ICs1NDAsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmV2YWx1YXRl
T25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdAogICAgIH0KIH0KIAot
dm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRPdmVybGF5TWVzc2FnZShFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyopCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldE92ZXJs
YXlNZXNzYWdlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nKikKIHsKIH0KIApAQCAtNjExLDcg
KzYxMSw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2UoSlND
OjpTb3VyY2VJRCBzb3VyY2VJRCwgY29uc3QgU2NyaXB0CiAgICAgICAgIGJyZWFrcG9pbnRPYmpl
Y3QtPmdldEJvb2xlYW4oQVNDSUlMaXRlcmFsKCJhdXRvQ29udGludWUiKSwgYnJlYWtwb2ludC5h
dXRvQ29udGludWUpOwogICAgICAgICBFcnJvclN0cmluZyBlcnJvclN0cmluZzsKICAgICAgICAg
UmVmUHRyPEluc3BlY3RvckFycmF5PiBhY3Rpb25zID0gYnJlYWtwb2ludE9iamVjdC0+Z2V0QXJy
YXkoQVNDSUlMaXRlcmFsKCJhY3Rpb25zIikpOwotICAgICAgICBpZiAoIWJyZWFrcG9pbnRBY3Rp
b25zRnJvbVByb3RvY29sKCZlcnJvclN0cmluZywgYWN0aW9ucywgJmJyZWFrcG9pbnQuYWN0aW9u
cykpIHsKKyAgICAgICAgaWYgKCFicmVha3BvaW50QWN0aW9uc0Zyb21Qcm90b2NvbChlcnJvclN0
cmluZywgYWN0aW9ucywgJmJyZWFrcG9pbnQuYWN0aW9ucykpIHsKICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KQEAgLTY5
Nyw3ICs2OTcsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFySW5zcGVjdG9y
QnJlYWtwb2ludFN0YXRlKCkKICAgICBWZWN0b3I8U3RyaW5nPiBicmVha3BvaW50SWRlbnRpZmll
cnM7CiAgICAgY29weUtleXNUb1ZlY3RvcihtX2JyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1Nl
cnZlckJyZWFrcG9pbnRJRHMsIGJyZWFrcG9pbnRJZGVudGlmaWVycyk7CiAgICAgZm9yIChjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIgOiBicmVha3BvaW50SWRlbnRpZmllcnMpCi0gICAgICAgIHJl
bW92ZUJyZWFrcG9pbnQoJmR1bW15RXJyb3IsIGlkZW50aWZpZXIpOworICAgICAgICByZW1vdmVC
cmVha3BvaW50KGR1bW15RXJyb3IsIGlkZW50aWZpZXIpOwogCiAgICAgbV9qYXZhU2NyaXB0QnJl
YWtwb2ludHMuY2xlYXIoKTsKIApAQCAtNzI5LDEwICs3MjksMTAgQEAgdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpkaWRDbGVhckdsb2JhbE9iamVjdCgpCiAgICAgICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyLT5nbG9iYWxPYmplY3RDbGVhcmVkKCk7CiB9CiAKLWJvb2wgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6YXNzZXJ0UGF1c2VkKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZykKK2Jvb2wg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YXNzZXJ0UGF1c2VkKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZykKIHsKICAgICBpZiAoIW1fcGF1c2VkU2NyaXB0U3RhdGUpIHsKLSAgICAgICAgKmVycm9y
U3RyaW5nID0gQVNDSUlMaXRlcmFsKCJDYW4gb25seSBwZXJmb3JtIG9wZXJhdGlvbiB3aGlsZSBw
YXVzZWQuIik7CisgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJDYW4gb25seSBw
ZXJmb3JtIG9wZXJhdGlvbiB3aGlsZSBwYXVzZWQuIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAppbmRleCA3Y2ZkNTcwZTU3YzUy
YWRlODhhZmYxYjc2YmQwZjcxZjgwMTA2NDdiLi44YjNmYjY2NDFkMjMyNzM3YWVjZmU2OGYxZjgw
N2MxZWE5MzYyMmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCkBAIC02OCwyNCAr
NjgsMjQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRp
c2FibGUoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QnJlYWtw
b2ludHNBY3RpdmUoRXJyb3JTdHJpbmcqLCBib29sIGFjdGl2ZSkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyosIGludCBsaW5lTnVtYmVy
LCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMUmVn
ZXgsIGNvbnN0IGludCogb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVn
Z2VyOjpCcmVha3BvaW50SWQqLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucykgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBsb2NhdGlvbiwgY29uc3QgUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piogb3B0aW9ucywgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpE
ZWJ1Z2dlcjo6TG9jYXRpb24+JiBhY3R1YWxMb2NhdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHJlbW92ZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGJyZWFr
cG9pbnRJZGVudGlmaWVyKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29udGludWVUb0xv
Y2F0aW9uKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGxvY2F0
aW9uKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoSW5Db250ZW50KEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3Qg
Ym9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpH
ZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgU3Ry
aW5nKiBzY3JpcHRTb3VyY2UpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXRGdW5jdGlv
bkRldGFpbHMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBwYXVzZShFcnJvclN0cmluZyopIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCByZXN1bWUoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgc3RlcE92ZXIoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3Rl
cEludG8oRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RlcE91dChF
cnJvclN0cmluZyopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQYXVzZU9uRXhjZXB0
aW9ucyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgcGF1c2VTdGF0ZSkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIGV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmlu
Zyogb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3Qg
Ym9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBib29sKiBy
ZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0T3ZlcmxheU1lc3NhZ2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcqKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0QnJlYWtwb2ludHNBY3RpdmUoRXJyb3JTdHJpbmcmLCBib29sIGFjdGl2
ZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0
cmluZyYsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMLCBjb25zdCBT
dHJpbmcqIG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogb3B0aW9uYWxDb2x1bW5OdW1iZXIs
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9u
Pj4mIGxvY2F0aW9ucykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldEJyZWFrcG9pbnQo
RXJyb3JTdHJpbmcmLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBs
b2NhdGlvbiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piogb3B0aW9u
cywgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+JiBhY3R1YWxMb2NhdGlvbikg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVudGlmaWVyKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgY29udGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nJiwgY29uc3QgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4mIGxvY2F0aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Vh
cmNoSW5Db250ZW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgY29uc3Qg
U3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBi
b29sKiBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4mKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBzY3JpcHRJRCwgU3RyaW5nKiBzY3JpcHRTb3VyY2UpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6RnVuY3Rp
b25EZXRhaWxzPiYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYXVzZShFcnJvclN0cmlu
ZyYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoRXJyb3JTdHJpbmcmKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RlcE92ZXIoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgc3RlcEludG8oRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgc3RlcE91dChFcnJvclN0cmluZyYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBzZXRQYXVzZU9uRXhjZXB0aW9ucyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGF1
c2VTdGF0ZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGV2YWx1YXRlT25DYWxsRnJhbWUo
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4
cHJlc3Npb24sIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGluY2x1ZGVD
b21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVD
b25zb2xlLCBjb25zdCBib29sKiByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVBy
ZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+
JiByZXN1bHQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3du
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0T3ZlcmxheU1lc3NhZ2UoRXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcqKSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNQYXVzZWQoKTsKICAg
ICAKQEAgLTExMiw3ICsxMTIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKIAogICAgIEluamVjdGVkU2NyaXB0TWFuYWdl
ciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXI7IH0KLSAgICB2aXJ0dWFsIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9y
RXZhbChFcnJvclN0cmluZyosIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkKSA9IDA7Cisg
ICAgdmlydHVhbCBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJp
bmcmLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkgPSAwOwogCiAgICAgdmlydHVhbCB2
b2lkIHN0YXJ0TGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHN0b3BMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcihib29sIHNraXBSZWNvbXBpbGUpID0g
MDsKQEAgLTEzOCwxMiArMTM4LDEyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGJyZWFr
cG9pbnRBY3Rpb25Qcm9iZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFNjcmlwdEJyZWFrcG9pbnRB
Y3Rpb24mLCBpbnQgaGl0Q291bnQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBzYW1w
bGUpIG92ZXJyaWRlIGZpbmFsOwogCiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpEZWJ1Z2dlcjo6TG9jYXRpb24+IHJlc29sdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJl
YWtwb2ludElkZW50aWZpZXIsIEpTQzo6U291cmNlSUQsIGNvbnN0IFNjcmlwdEJyZWFrcG9pbnQm
KTsKLSAgICBib29sIGFzc2VydFBhdXNlZChFcnJvclN0cmluZyopOworICAgIGJvb2wgYXNzZXJ0
UGF1c2VkKEVycm9yU3RyaW5nJik7CiAgICAgdm9pZCBjbGVhckRlYnVnZ2VyQnJlYWtwb2ludFN0
YXRlKCk7CiAgICAgdm9pZCBjbGVhckluc3BlY3RvckJyZWFrcG9pbnRTdGF0ZSgpOwogICAgIHZv
aWQgY2xlYXJCcmVha0RldGFpbHMoKTsKIAotICAgIGJvb2wgYnJlYWtwb2ludEFjdGlvbnNGcm9t
UHJvdG9jb2woRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBhY3Rpb25zLCBC
cmVha3BvaW50QWN0aW9ucyogcmVzdWx0KTsKKyAgICBib29sIGJyZWFrcG9pbnRBY3Rpb25zRnJv
bVByb3RvY29sKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgYWN0aW9ucywg
QnJlYWtwb2ludEFjdGlvbnMqIHJlc3VsdCk7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8SlNDOjpT
b3VyY2VJRCwgU2NyaXB0PiBTY3JpcHRzTWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IFZlY3RvcjxKU0M6OkJyZWFrcG9pbnRJRD4+IEJyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1Nl
cnZlckJyZWFrcG9pbnRJRHNNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAppbmRl
eCA5NzQ2ZDNhMzVjNjk5NWNmOGM3OGNjY2JlN2ZiZmQzYTAyMjA3ODgyLi44MGEwZDlmM2UyODU5
NjU5OTZjNzc3MTc0ZGQ5ZjQ1Nzk1NjYzY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2Vu
dC5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UnVudGltZTo6RXJyb3JSYW5nZT4gYnVpbGRFcnJvclJhbmdlT2JqZWMKICAgICByZXR1
cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnBh
cnNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGUqIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG1lc3NhZ2UsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSdW50aW1lOjpFcnJvclJhbmdlPiYgcmFuZ2UpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6cGFyc2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZSogcmVzdWx0LCBJbnNwZWN0
b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogbWVzc2FnZSwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkVycm9yUmFuZ2U+JiByYW5nZSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxWTSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKQEAgLTExNyw3ICsxMTcs
NyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cGFyc2UoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIGV4cHJlc3Npb24sIEluc3BlYwogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JS
dW50aW1lQWdlbnQ6OmV2YWx1YXRlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBjb25zdCBi
b29sKiBjb25zdCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90
UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgaW50KiBleGVjdXRpb25Db250
ZXh0SWQsIGNvbnN0IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVy
YXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGJvb2w+KiB3YXNU
aHJvd24pCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGUoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogY29u
c3Qgb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGNvbnN0IGluY2x1ZGVDb21tYW5kTGluZUFQSSwg
Y29uc3QgYm9vbCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBj
b25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCwgY29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlW
YWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29s
OjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmpl
Y3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0Rm9yRXZhbChlcnJvclN0cmluZywgZXhlY3V0aW9u
Q29udGV4dElkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQpAQCAtMTM3
LDExICsxMzcsMTEgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHAKICAgICB9CiB9CiAKLXZvaWQg
SW5zcGVjdG9yUnVudGltZUFnZW50OjpjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwg
Y29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiogY29uc3Qgb3B0aW9uYWxBcmd1bWVudHMsIGNv
bnN0IGJvb2wqIGNvbnN0IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29u
c3QgYm9vbCogY29uc3QgcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVz
dWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKK3Zv
aWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lv
biwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiogY29uc3Qgb3B0aW9uYWxBcmd1bWVudHMs
IGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwg
Y29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2
aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYg
cmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikK
IHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVjdElkKTsKICAgICBpZiAoaW5q
ZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJ
TGl0ZXJhbCgiSW5zcGVjdGVkIGZyYW1lIGhhcyBnb25lIik7CisgICAgICAgIGVycm9yU3RyaW5n
ID0gQVNDSUlMaXRlcmFsKCJJbnNwZWN0ZWQgZnJhbWUgaGFzIGdvbmUiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMTYzLDExICsxNjMsMTEgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1l
QWdlbnQ6OmNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW4KICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcm9wZXJ0aWVz
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3Qg
Ym9vbCogY29uc3Qgb3duUHJvcGVydGllcywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiBy
ZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3Bl
cnRpZXMpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyhFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIGNv
bnN0IG93blByb3BlcnRpZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVu
dGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9wZXJ0aWVzKQog
ewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQpOwogICAgIGlmIChpbmpl
Y3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlM
aXRlcmFsKCJJbnNwZWN0ZWQgZnJhbWUgaGFzIGdvbmUiKTsKKyAgICAgICAgZXJyb3JTdHJpbmcg
PSBBU0NJSUxpdGVyYWwoIkluc3BlY3RlZCBmcmFtZSBoYXMgZ29uZSIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0xODEsMjkgKzE4MSwyOSBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZwogICAgIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZlciwgcHJl
dmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1l
QWdlbnQ6OnJlbGVhc2VPYmplY3QoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElk
KQordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnJlbGVhc2VPYmplY3QoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIG9iamVjdElkKQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVk
U2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0
SWQob2JqZWN0SWQpOwogICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQogICAg
ICAgICBpbmplY3RlZFNjcmlwdC5yZWxlYXNlT2JqZWN0KG9iamVjdElkKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JSdW50aW1lQWdlbnQ6OnJlbGVhc2VPYmplY3RHcm91cChFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgb2JqZWN0R3JvdXApCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cmVs
ZWFzZU9iamVjdEdyb3VwKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCkK
IHsKICAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+cmVsZWFzZU9iamVjdEdyb3VwKG9iamVj
dEdyb3VwKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnJ1bihFcnJvclN0cmlu
ZyopCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cnVuKEVycm9yU3RyaW5nJikKIHsKIH0K
IAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFJ1bnRpbWVUeXBlc0ZvclZhcmlhYmxl
c0F0T2Zmc2V0cyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3RvckFycmF5PiYgbG9jYXRpb25zLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPj4m
IHR5cGVEZXNjcmlwdGlvbnMpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVudGlt
ZVR5cGVzRm9yVmFyaWFibGVzQXRPZmZzZXRzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiBsb2NhdGlvbnMsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpU
eXBlRGVzY3JpcHRpb24+PiYgdHlwZURlc2NyaXB0aW9ucykKIHsKICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCB2ZXJib3NlID0gZmFsc2U7CiAgICAgVk0mIHZtID0gZ2xvYmFsVk0oKTsKICAgICB0eXBl
RGVzY3JpcHRpb25zID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPjo6Y3JlYXRlKCk7CiAgICAgaWYgKCF2bS50
eXBlUHJvZmlsZXIoKSkgewotICAgICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIlRo
ZSBWTSBkb2VzIG5vdCBjdXJyZW50bHkgaGF2ZSBUeXBlIEluZm9ybWF0aW9uLiIpOworICAgICAg
ICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiVGhlIFZNIGRvZXMgbm90IGN1cnJlbnRseSBo
YXZlIFR5cGUgSW5mb3JtYXRpb24uIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIx
NCw3ICsyMTQsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVudGltZVR5cGVz
Rm9yVmFyaWFibGVzQXRPZmZzZXRzKEVycm9yU3RyaW5nKiBlcgogICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gdmFsdWUgPSBsb2NhdGlvbnMtPmdldChpKTsKICAgICAg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbG9jYXRpb247CiAgICAgICAgIGlmICghdmFsdWUt
PmFzT2JqZWN0KGxvY2F0aW9uKSkgewotICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlM
aXRlcmFsKCJBcnJheSBvZiBUeXBlTG9jYXRpb24gb2JqZWN0cyBoYXMgYW4gb2JqZWN0IHRoYXQg
ZG9lcyBub3QgaGF2ZSB0eXBlIG9mIFR5cGVMb2NhdGlvbi4iKTsKKyAgICAgICAgICAgIGVycm9y
U3RyaW5nID0gQVNDSUlMaXRlcmFsKCJBcnJheSBvZiBUeXBlTG9jYXRpb24gb2JqZWN0cyBoYXMg
YW4gb2JqZWN0IHRoYXQgZG9lcyBub3QgaGF2ZSB0eXBlIG9mIFR5cGVMb2NhdGlvbi4iKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yODcsMTIgKzI4NywxMiBAQCB2b2lk
IEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yRGlzY29ubmVjdFJlYQogICAgICAgICBzZXRUeXBlUHJvZmlsZXJFbmFibGVkU3RhdGUo
ZmFsc2UpOwogfQogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZW5hYmxlVHlwZVByb2Zp
bGVyKEVycm9yU3RyaW5nKikKK3ZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjplbmFibGVUeXBl
UHJvZmlsZXIoRXJyb3JTdHJpbmcmKQogewogICAgIHNldFR5cGVQcm9maWxlckVuYWJsZWRTdGF0
ZSh0cnVlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmRpc2FibGVUeXBlUHJv
ZmlsZXIoRXJyb3JTdHJpbmcqKQordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmRpc2FibGVU
eXBlUHJvZmlsZXIoRXJyb3JTdHJpbmcmKQogewogICAgIHNldFR5cGVQcm9maWxlckVuYWJsZWRT
dGF0ZShmYWxzZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCmluZGV4IGI5YjBiMTM3
YzJkOGEyMmQyODRmOGU0YmRjZWNmYmRjNDQzNTIyMzAuLmMyYmZjNTU5NmE1YWMwMWVjZWNmN2Ew
ZTE1ZDUwNWU3N2U3MWFmMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCkBAIC01OSwx
OCArNTksMTggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopIG92ZXJyaWRlIHsgbV9lbmFibGVkID0g
dHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKikgb3ZlcnJpZGUg
eyBtX2VuYWJsZWQgPSBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBwYXJzZShFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGlt
ZTo6U3ludGF4RXJyb3JUeXBlKiByZXN1bHQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1
dDxTdHJpbmc+KiBtZXNzYWdlLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6
RXJyb3JSYW5nZT4mKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgZXZhbHVhdGUo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogb2Jq
ZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCog
ZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBpbnQqIGV4ZWN1dGlv
bkNvbnRleHRJZCwgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJh
dGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Ro
cm93bikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGNhbGxGdW5jdGlvbk9uKEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNz
aW9uLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4qIG9wdGlvbmFsQXJn
dW1lbnRzLCBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUs
IGNvbnN0IGJvb2wqIHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3Vs
dCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pIG92ZXJy
aWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlT2JqZWN0KEVycm9yU3RyaW5nKiwg
Y29uc3QgRXJyb3JTdHJpbmcmIG9iamVjdElkKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQs
IGNvbnN0IGJvb2wqIG93blByb3BlcnRpZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYg
cmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9w
ZXJ0aWVzKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZU9iamVjdEdy
b3VwKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCkgb3ZlcnJpZGUgZmlu
YWw7Ci0gICAgdmlydHVhbCB2b2lkIHJ1bihFcnJvclN0cmluZyopIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMoRXJyb3JTdHJp
bmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mIGxvY2F0aW9ucywg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1
bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj4+Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGVu
YWJsZVR5cGVQcm9maWxlcihFcnJvclN0cmluZyopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBkaXNhYmxlVHlwZVByb2ZpbGVyKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlIHsgbV9lbmFibGVkID0gdHJ1ZTsg
fQorICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGUgeyBtX2Vu
YWJsZWQgPSBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBwYXJzZShFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3lu
dGF4RXJyb3JUeXBlKiByZXN1bHQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJp
bmc+KiBtZXNzYWdlLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6RXJyb3JS
YW5nZT4mKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgZXZhbHVhdGUoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogb2JqZWN0R3Jv
dXAsIGNvbnN0IGJvb2wqIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogZG9Ob3RQ
YXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRl
eHRJZCwgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2
aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYg
cmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikg
b3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIGNhbGxGdW5jdGlvbk9uKEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4qIG9wdGlvbmFsQXJndW1lbnRz
LCBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0
IGJvb2wqIHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5z
cGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pIG92ZXJyaWRlIGZp
bmFsOworICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlT2JqZWN0KEVycm9yU3RyaW5nJiwgY29uc3Qg
RXJyb3JTdHJpbmcmIG9iamVjdElkKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQg
Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0
IGJvb2wqIG93blByb3BlcnRpZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcmVzdWx0
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9wZXJ0aWVz
KSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZU9iamVjdEdyb3VwKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCkgb3ZlcnJpZGUgZmluYWw7Cisg
ICAgdmlydHVhbCB2b2lkIHJ1bihFcnJvclN0cmluZyYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBnZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMoRXJyb3JTdHJpbmcmLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mIGxvY2F0aW9ucywgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6
OlR5cGVEZXNjcmlwdGlvbj4+Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGVuYWJsZVR5
cGVQcm9maWxlcihFcnJvclN0cmluZyYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaXNh
YmxlVHlwZVByb2ZpbGVyKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgCiAgICAgdm9pZCBz
ZXRTY3JpcHREZWJ1Z1NlcnZlcihTY3JpcHREZWJ1Z1NlcnZlciogc2NyaXB0RGVidWdTZXJ2ZXIp
IHsgbV9zY3JpcHREZWJ1Z1NlcnZlciA9IHNjcmlwdERlYnVnU2VydmVyOyB9CiAKQEAgLTgyLDcg
KzgyLDcgQEAgcHJvdGVjdGVkOgogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKCkgeyByZXR1cm4gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7IH0KIAogICAg
IHZpcnR1YWwgSlNDOjpWTSYgZ2xvYmFsVk0oKSA9IDA7Ci0gICAgdmlydHVhbCBJbmplY3RlZFNj
cmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcqLCBjb25zdCBpbnQqIGV4ZWN1
dGlvbkNvbnRleHRJZCkgPSAwOworICAgIHZpcnR1YWwgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRT
Y3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQp
ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBtdXRlQ29uc29sZSgpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgdW5tdXRlQ29uc29sZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0Q29uc29s
ZUFnZW50LmNwcAppbmRleCBmYWQ1MDc1ZmM2NjM3MGRlYWM3YjJkZjEzNGY1NGYxYTgyYTJhMWIw
Li43ZDQ4ZDAzN2YyNTY5YTU2MWRjNmJkZGQwMTE2YjFjZWMyY2UxZGNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdENvbnNv
bGVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQuY3BwCkBAIC0zNSwxNCArMzUsMTQgQEAgSlNHbG9i
YWxPYmplY3RDb25zb2xlQWdlbnQ6OkpTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50KEluamVjdGVk
U2NyaXB0TWFuYWdlciogaW4KIHsKIH0KIAotdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVBZ2Vu
dDo6c2V0TW9uaXRvcmluZ1hIUkVuYWJsZWQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBib29s
KQordm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudDo6c2V0TW9uaXRvcmluZ1hIUkVuYWJs
ZWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBib29sKQogewotICAgICplcnJvclN0cmluZyA9
IEFTQ0lJTGl0ZXJhbCgiTm90IHN1cHBvcnRlZCBmb3IgSmF2YVNjcmlwdCBjb250ZXh0Iik7Cisg
ICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vdCBzdXBwb3J0ZWQgZm9yIEphdmFTY3Jp
cHQgY29udGV4dCIpOwogfQogCi12b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50OjphZGRJ
bnNwZWN0ZWROb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50KQordm9pZCBKU0dsb2Jh
bE9iamVjdENvbnNvbGVBZ2VudDo6YWRkSW5zcGVjdGVkTm9kZShFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGludCkKIHsKLSAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vdCBzdXBw
b3J0ZWQgZm9yIEphdmFTY3JpcHQgY29udGV4dCIpOworICAgIGVycm9yU3RyaW5nID0gQVNDSUlM
aXRlcmFsKCJOb3Qgc3VwcG9ydGVkIGZvciBKYXZhU2NyaXB0IGNvbnRleHQiKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQu
aAppbmRleCA3YWE0OGRlNDExZDljNWY2YzRmZDhkYTliMDQyMDA3MDVmZmM4Mzk2Li5iN2UxYjMw
YWM0Y2Q3YWE2MjMzZTVhYzk5OGFkNWQxZGVkMDhjMTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2Jq
ZWN0Q29uc29sZUFnZW50LmgKQEAgLTQxLDggKzQxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
fkpTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50KCkgeyB9CiAKICAgICAvLyBGSVhNRTogWEhScyBh
bmQgTm9kZXMgb25seSBtYWtlcyBzZW5zZSBkZWJ1Z2dpbmcgYSBXZWIgY29udGV4dC4gQ2FuIHRo
aXMgYmUgbW92ZWQgdG8gYSBkaWZmZXJlbnQgYWdlbnQ/Ci0gICAgdmlydHVhbCB2b2lkIHNldE1v
bml0b3JpbmdYSFJFbmFibGVkKEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgYWRkSW5zcGVjdGVkTm9kZShFcnJvclN0cmluZyosIGludCBub2Rl
SWQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRNb25pdG9yaW5nWEhSRW5hYmxlZChF
cnJvclN0cmluZyYsIGJvb2wgZW5hYmxlZCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGFk
ZEluc3BlY3RlZE5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkKSBvdmVycmlkZTsKIAogICAg
IHZpcnR1YWwgYm9vbCBpc1dvcmtlckFnZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcAppbmRl
eCBjMDg3ZTgxZTk3Y2M0MWU4ZWVmNGYxNGEyOTU4YWRlODI1ZTQyZmIwLi5iYTNkMzE4YTUyMWNh
MTI1MzkwMDVhNDU4MTg3ZTc3YzBhYzNiNWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0
RGVidWdnZXJBZ2VudC5jcHAKQEAgLTU2LDEwICs1NiwxMCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
RGVidWdnZXJBZ2VudDo6c3RvcExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKGJvb2wgaXNCZWlu
Z0RlcwogICAgIHNjcmlwdERlYnVnU2VydmVyKCkucmVtb3ZlTGlzdGVuZXIodGhpcywgaXNCZWlu
Z0Rlc3Ryb3llZCk7CiB9CiAKLUluamVjdGVkU2NyaXB0IEpTR2xvYmFsT2JqZWN0RGVidWdnZXJB
Z2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgaW50
KiBleGVjdXRpb25Db250ZXh0SWQpCitJbmplY3RlZFNjcmlwdCBKU0dsb2JhbE9iamVjdERlYnVn
Z2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYgZXJyb3IsIGNvbnN0
IGludCogZXhlY3V0aW9uQ29udGV4dElkKQogewogICAgIGlmIChleGVjdXRpb25Db250ZXh0SWQp
IHsKLSAgICAgICAgKmVycm9yID0gQVNDSUlMaXRlcmFsKCJFeGVjdXRpb24gY29udGV4dCBpZCBp
cyBub3Qgc3VwcG9ydGVkIGZvciBKU0NvbnRleHQgaW5zcGVjdGlvbiBhcyB0aGVyZSBpcyBvbmx5
IG9uZSBleGVjdXRpb24gY29udGV4dC4iKTsKKyAgICAgICAgZXJyb3IgPSBBU0NJSUxpdGVyYWwo
IkV4ZWN1dGlvbiBjb250ZXh0IGlkIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIEpTQ29udGV4dCBpbnNw
ZWN0aW9uIGFzIHRoZXJlIGlzIG9ubHkgb25lIGV4ZWN1dGlvbiBjb250ZXh0LiIpOwogICAgICAg
ICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2Vu
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dlckFnZW50LmgKaW5kZXggMjdlZTZhY2UxMjVkM2NmNjM1ZGVmYjAzYWVhNmYwNGI0
NDgyZDA4Yi4uOGMxZjY1MTE0MzE0NGE0OTEwNjMwODJiMTQ4NWIyZmM2ODY0ZTI4NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0TGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIo
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcExpc3RlbmluZ1NjcmlwdERlYnVnU2Vy
dmVyKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBJbmplY3Rl
ZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcqLCBjb25zdCBpbnQqIGV4
ZWN1dGlvbkNvbnRleHRJZCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBJbmplY3RlZFNjcmlwdCBp
bmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNv
bnRleHRJZCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgYnJlYWtwb2ludEFjdGlvbkxv
ZyhKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1
bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9K
U0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggZTk4ODVmOTFiZWU0Yjc4MzkxYmE2
ZWRjYjg0NGNjOTNlZDE4ZGU0My4uNzQwNjFjNTk3MTlhMjM1OTBiMzRhZTc1OThmNzdhNDUxMmUw
ZmU0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNwcApAQCAtNjEs
MTQgKzYxLDE0IEBAIFZNJiBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudDo6Z2xvYmFsVk0oKQog
ICAgIHJldHVybiBtX2dsb2JhbE9iamVjdC52bSgpOwogfQogCi1JbmplY3RlZFNjcmlwdCBKU0ds
b2JhbE9iamVjdFJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpCitJbmplY3RlZFNj
cmlwdCBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpCiB7
CiAgICAgQVNTRVJUX1VOVVNFRChleGVjdXRpb25Db250ZXh0SWQsICFleGVjdXRpb25Db250ZXh0
SWQpOwogCiAgICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gbV9nbG9iYWxPYmplY3Qu
Z2xvYmFsRXhlYygpOwogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKCktPmluamVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKICAgICBp
ZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQotICAgICAgICAqZXJyb3JTdHJpbmcgPSBB
U0NJSUxpdGVyYWwoIkludGVybmFsIGVycm9yOiBtYWluIHdvcmxkIGV4ZWN1dGlvbiBjb250ZXh0
IG5vdCBmb3VuZC4iKTsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkludGVy
bmFsIGVycm9yOiBtYWluIHdvcmxkIGV4ZWN1dGlvbiBjb250ZXh0IG5vdCBmb3VuZC4iKTsKIAog
ICAgIHJldHVybiBpbmplY3RlZFNjcmlwdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRp
bWVBZ2VudC5oCmluZGV4IDBlNzJlMDliMjc4YzY3YzcwYTMwNmQyYTRmNWJiZDZmYTlmNDBkNmIu
LmZmZDI2NzczN2MxOTgzMzVkNmM2ZTk3ZDQ0OGZhNjcyYjBlZGY2NTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGlt
ZUFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNH
bG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nv
bm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBKU0M6OlZNJiBnbG9iYWxWTSgp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JF
dmFsKEVycm9yU3RyaW5nKiwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9y
U3RyaW5nJiwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpIG92ZXJyaWRlOwogCiAgICAg
Ly8gTk9URTogSmF2YVNjcmlwdCBpbnNwZWN0b3IgZG9lcyBub3QgeWV0IG5lZWQgdG8gbXV0ZSBh
IGNvbnNvbGUgYmVjYXVzZSBubyBtZXNzYWdlcwogICAgIC8vIGFyZSBzZW50IHRvIHRoZSBjb25z
b2xlIG91dHNpZGUgb2YgdGhlIEFQSSBib3VuZGFyeSBvciBjb25zb2xlIG9iamVjdC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dl
bmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJf
aGVhZGVyLnB5CmluZGV4IGMwZmVmNjY1Y2I2ZTQyMTBhZWQ3ZTZhMjU2ZjI0YmY0NmE3YmEwZmQu
LmMxZmYwZDViYWRhNDMzYTk2OGY5YTFmMGIyNGJiYjE2OTIxYTY4NjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2Jh
Y2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRl
ci5weQpAQCAtMTEyLDcgKzExMiw3IEBAIGNsYXNzIEJhY2tlbmREaXNwYXRjaGVySGVhZGVyR2Vu
ZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZ2VuZXJhdGVfYXN5
bmNfaGFuZGxlcl9kZWNsYXJhdGlvbl9mb3JfY29tbWFuZChjb21tYW5kKQogCiAgICAgICAgIGxp
bmVzID0gW10KLSAgICAgICAgcGFyYW1ldGVycyA9IFsnRXJyb3JTdHJpbmcqJ10KKyAgICAgICAg
cGFyYW1ldGVycyA9IFsnRXJyb3JTdHJpbmcmJ10KICAgICAgICAgZm9yIF9wYXJhbWV0ZXIgaW4g
Y29tbWFuZC5jYWxsX3BhcmFtZXRlcnM6CiAgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZCgi
JXMgaW5fJXMiICUgKEdlbmVyYXRvci50eXBlX3N0cmluZ19mb3JfdW5jaGVja2VkX2Zvcm1hbF9p
bl9wYXJhbWV0ZXIoX3BhcmFtZXRlciksIF9wYXJhbWV0ZXIucGFyYW1ldGVyX25hbWUpKQogCkBA
IC0xNDAsNyArMTQwLDcgQEAgY2xhc3MgQmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3Io
R2VuZXJhdG9yKToKICAgICBkZWYgX2dlbmVyYXRlX2FzeW5jX2hhbmRsZXJfZGVjbGFyYXRpb25f
Zm9yX2NvbW1hbmQoc2VsZiwgY29tbWFuZCk6CiAgICAgICAgIGNhbGxiYWNrTmFtZSA9ICIlc0Nh
bGxiYWNrIiAlIHVjZmlyc3QoY29tbWFuZC5jb21tYW5kX25hbWUpCiAKLSAgICAgICAgaW5fcGFy
YW1ldGVycyA9IFsnRXJyb3JTdHJpbmcqJ10KKyAgICAgICAgaW5fcGFyYW1ldGVycyA9IFsnRXJy
b3JTdHJpbmcmJ10KICAgICAgICAgZm9yIF9wYXJhbWV0ZXIgaW4gY29tbWFuZC5jYWxsX3BhcmFt
ZXRlcnM6CiAgICAgICAgICAgICBpbl9wYXJhbWV0ZXJzLmFwcGVuZCgiJXMgaW5fJXMiICUgKEdl
bmVyYXRvci50eXBlX3N0cmluZ19mb3JfdW5jaGVja2VkX2Zvcm1hbF9pbl9wYXJhbWV0ZXIoX3Bh
cmFtZXRlciksIF9wYXJhbWV0ZXIucGFyYW1ldGVyX25hbWUpKQogICAgICAgICBpbl9wYXJhbWV0
ZXJzLmFwcGVuZCgiUGFzc1JlZlB0cjwlcz4gY2FsbGJhY2siICUgY2FsbGJhY2tOYW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
Z2VuZXJhdGVfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfYmFja2VuZF9k
aXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CmluZGV4IDY4ZjIxNDAzMWY5NGUyMGM5YjQxZmFm
OWNjODA2NTA2ZTZkNjBhY2MuLjhmNTFkYjA0OTJhNmE1ZWYzMzNkZjQ3ZDBmNmJiNDI3ZjZmNjg3
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL2dlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0
ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKQEAgLTE2NCw3ICsxNjQsNyBA
QCBjbGFzcyBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEdlbmVyYXRv
cik6CiAgICAgICAgIGluX3BhcmFtZXRlcl9kZWNsYXJhdGlvbnMgPSBbXQogICAgICAgICBvdXRf
cGFyYW1ldGVyX2RlY2xhcmF0aW9ucyA9IFtdCiAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdu
bWVudHMgPSBbXQotICAgICAgICBtZXRob2RfcGFyYW1ldGVycyA9IFsnJmVycm9yJ10KKyAgICAg
ICAgbWV0aG9kX3BhcmFtZXRlcnMgPSBbJ2Vycm9yJ10KIAogICAgICAgICBmb3IgcGFyYW1ldGVy
IGluIGNvbW1hbmQuY2FsbF9wYXJhbWV0ZXJzOgogICAgICAgICAgICAgb3V0X3N1Y2Nlc3NfYXJn
dW1lbnQgPSAnbnVsbHB0cicKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0
ZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdApp
bmRleCA0ZTE5YWRiMWRhYjUzZTMyMTg2ZTYwNTZmYjk3YzY5ZmE3M2EwNDI4Li40MTE3OTg5YjI0
YzIzZTk5NTRkMzA2NDU2ZWUwZGFkM2QxYmYzZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1h
c3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmli
dXRlLmpzb24tcmVzdWx0CkBAIC05OCwyMCArOTgsMjAgQEAgcHVibGljOgogICAgICAgICBZZWxs
b3cgPSA1LAogICAgICAgICBCbGFjayA9IDYsCiAgICAgfTsgLy8gZW51bSBjbGFzcyBQcmludENv
bG9yCi0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMo
RXJyb3JTdHJpbmcqLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVyeSwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiBvcHRfb3V0X2NvbHVt
bk5hbWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogb3B0X291dF9u
b3RlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4qIG9wdF9vdXRfdGlt
ZXN0YW1wLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+KiBvcHRfb3V0X3ZhbHVlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0
PEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+KiBvcHRfb3V0X3BheWxvYWQsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBvcHRfb3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiBvcHRfb3V0X3NxbEVycm9yLCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3B0X291dF9zY3JlZW5D
b2xvciwgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29s
b3IqIG9wdF9vdXRfcHJpbnRDb2xvcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FM
U3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKEVycm9yU3RyaW5nJiwgaW50IGluX2RhdGFiYXNlSWQs
IGNvbnN0IFN0cmluZyYgaW5fcXVlcnksIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxTdHJpbmc+PiYgb3B0X291dF9jb2x1bW5OYW1lcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0
T3V0cHV0PFN0cmluZz4qIG9wdF9vdXRfbm90ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91
dHB1dDxkb3VibGU+KiBvcHRfb3V0X3RpbWVzdGFtcCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0
T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piogb3B0X291dF92YWx1ZXMsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiogb3B0
X291dF9wYXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piogb3B0X291
dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9y
PiYgb3B0X291dF9zcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1h
cnlDb2xvcnMqIG9wdF9vdXRfc2NyZWVuQ29sb3IsIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvcHRfb3V0X3ByaW50Q29sb3IpID0gMDsKICAg
ICBjbGFzcyBFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrIDogcHVi
bGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZSB7
CiAgICAgcHVibGljOgogICAgICAgICBFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVl
c0NhbGxiYWNrKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cj4sIGludCBpZCk7CiAgICAgICAgIHZvaWQgc2VuZFN1Y2Nlc3MoUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBjb2x1bW5OYW1lcywgSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG5vdGVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRP
dXRwdXQ8ZG91YmxlPiogdGltZXN0YW1wLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiB2YWx1ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiogcGF5bG9hZCwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIGRhdGFiYXNlSWQsIFBhc3NSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBzcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIHNjcmVlbkNvbG9yLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpPcHRPdXRwdXQ8U3RyaW5nPiogcHJpbnRDb2xvcik7CiAgICAgfTsKLSAgICB2aXJ0dWFsIHZv
aWQgZXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMoRXJyb3JTdHJpbmcqLCBpbnQg
aW5fZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVyeSwgUGFzc1JlZlB0cjxFeGVjdXRl
U1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrPiBjYWxsYmFjaykgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMU3luYyhFcnJvclN0cmluZyosIGludCBpbl9kYXRhYmFz
ZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8U3RyaW5nPj4mIG91dF9jb2x1bW5OYW1lcywgU3RyaW5nKiBvdXRfbm90ZXMsIGRvdWJs
ZSogb3V0X3RpbWVzdGFtcCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIG91dF92YWx1ZXMs
IEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIG91dF9wYXlsb2FkLCBpbnQqIG91dF9kYXRhYmFz
ZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3V0X3Nx
bEVycm9yLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3V0
X3NjcmVlbkNvbG9yLCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6
UHJpbnRDb2xvciogb3V0X3ByaW50Q29sb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0
ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMoRXJyb3JTdHJpbmcmLCBpbnQgaW5fZGF0YWJh
c2VJZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVyeSwgUGFzc1JlZlB0cjxFeGVjdXRlU1FMQXN5bmNP
cHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrPiBjYWxsYmFjaykgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBleGVjdXRlU1FMU3luYyhFcnJvclN0cmluZyYsIGludCBpbl9kYXRhYmFzZUlkLCBjb25z
dCBTdHJpbmcmIGluX3F1ZXJ5LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3Ry
aW5nPj4mIG91dF9jb2x1bW5OYW1lcywgU3RyaW5nKiBvdXRfbm90ZXMsIGRvdWJsZSogb3V0X3Rp
bWVzdGFtcCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIG91dF92YWx1ZXMsIEluc3BlY3Rv
cjo6SW5zcGVjdG9yVmFsdWUqIG91dF9wYXlsb2FkLCBpbnQqIG91dF9kYXRhYmFzZUlkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3V0X3NxbEVycm9yLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3V0X3NjcmVlbkNv
bG9yLCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xv
ciogb3V0X3ByaW50Q29sb3IpID0gMDsKICAgICBjbGFzcyBFeGVjdXRlU1FMQXN5bmNDYWxsYmFj
ayA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFj
a0Jhc2UgewogICAgIHB1YmxpYzoKICAgICAgICAgRXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2soUGFz
c1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiwgaW50IGlkKTsK
ICAgICAgICAgdm9pZCBzZW5kU3VjY2VzcyhQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PFN0cmluZz4+IGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG5vdGVzLCBkb3VibGUg
dGltZXN0YW1wLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCB2YWx1ZXMsIEluc3BlY3Rvcjo6
SW5zcGVjdG9yVmFsdWUgcGF5bG9hZCwgaW50IGRhdGFiYXNlSWQsIFBhc3NSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBzcWxFcnJvciwgY29uc3QgU3RyaW5nJiBz
Y3JlZW5Db2xvciwgY29uc3QgU3RyaW5nJiBwcmludENvbG9yKTsKICAgICB9OwotICAgIHZpcnR1
YWwgdm9pZCBleGVjdXRlU1FMQXN5bmMoRXJyb3JTdHJpbmcqLCBpbnQgaW5fZGF0YWJhc2VJZCwg
Y29uc3QgU3RyaW5nJiBpbl9xdWVyeSwgUGFzc1JlZlB0cjxFeGVjdXRlU1FMQXN5bmNDYWxsYmFj
az4gY2FsbGJhY2spID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNRTEFzeW5jKEVycm9y
U3RyaW5nJiwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnksIFBhc3NS
ZWZQdHI8RXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2s+IGNhbGxiYWNrKSA9IDA7CiBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIo
KTsKIH07CkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVyOjpleGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcKICAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBvdXRfc3FsRXJyb3I7
CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMgb3V0X3Nj
cmVlbkNvbG9yOwogICAgIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
OjpQcmludENvbG9yIG91dF9wcmludENvbG9yOwotICAgIG1fYWdlbnQtPmV4ZWN1dGVTUUxTeW5j
T3B0aW9uYWxSZXR1cm5WYWx1ZXMoJmVycm9yLCBpbl9kYXRhYmFzZUlkLCBpbl9xdWVyeSwgb3V0
X2NvbHVtbk5hbWVzLCAmb3V0X25vdGVzLCAmb3V0X3RpbWVzdGFtcCwgb3V0X3ZhbHVlcywgJm91
dF9wYXlsb2FkLCAmb3V0X2RhdGFiYXNlSWQsIG91dF9zcWxFcnJvciwgJm91dF9zY3JlZW5Db2xv
ciwgJm91dF9wcmludENvbG9yKTsKKyAgICBtX2FnZW50LT5leGVjdXRlU1FMU3luY09wdGlvbmFs
UmV0dXJuVmFsdWVzKGVycm9yLCBpbl9kYXRhYmFzZUlkLCBpbl9xdWVyeSwgb3V0X2NvbHVtbk5h
bWVzLCAmb3V0X25vdGVzLCAmb3V0X3RpbWVzdGFtcCwgb3V0X3ZhbHVlcywgJm91dF9wYXlsb2Fk
LCAmb3V0X2RhdGFiYXNlSWQsIG91dF9zcWxFcnJvciwgJm91dF9zY3JlZW5Db2xvciwgJm91dF9w
cmludENvbG9yKTsKIAogICAgIGlmICghZXJyb3IubGVuZ3RoKCkpIHsKICAgICAgICAgaWYgKG91
dF9jb2x1bW5OYW1lcykKQEAgLTMwMiw3ICszMDIsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxv
bgogICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJl
c3VsdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPEluc3BlY3RvckRh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJl
dHVyblZhbHVlc0NhbGxiYWNrPiBjYWxsYmFjayA9IGFkb3B0UmVmKG5ldyBJbnNwZWN0b3JEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1
cm5WYWx1ZXNDYWxsYmFjayhtX2JhY2tlbmREaXNwYXRjaGVyLGNhbGxJZCkpOwotICAgIG1fYWdl
bnQtPmV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKCZlcnJvciwgaW5fZGF0YWJh
c2VJZCwgaW5fcXVlcnksIGNhbGxiYWNrKTsKKyAgICBtX2FnZW50LT5leGVjdXRlU1FMQXN5bmNP
cHRpb25hbFJldHVyblZhbHVlcyhlcnJvciwgaW5fZGF0YWJhc2VJZCwgaW5fcXVlcnksIGNhbGxi
YWNrKTsKIAogICAgIGlmIChlcnJvci5sZW5ndGgoKSkgewogICAgICAgICBjYWxsYmFjay0+ZGlz
YWJsZSgpOwpAQCAtMzM2LDcgKzMzNiw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlCiAgICAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gb3V0X3NxbEVycm9y
OwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzIG91dF9z
Y3JlZW5Db2xvcjsKICAgICBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
cjo6UHJpbnRDb2xvciBvdXRfcHJpbnRDb2xvcjsKLSAgICBtX2FnZW50LT5leGVjdXRlU1FMU3lu
YygmZXJyb3IsIGluX2RhdGFiYXNlSWQsIGluX3F1ZXJ5LCBvdXRfY29sdW1uTmFtZXMsICZvdXRf
bm90ZXMsICZvdXRfdGltZXN0YW1wLCBvdXRfdmFsdWVzLCAmb3V0X3BheWxvYWQsICZvdXRfZGF0
YWJhc2VJZCwgb3V0X3NxbEVycm9yLCAmb3V0X3NjcmVlbkNvbG9yLCAmb3V0X3ByaW50Q29sb3Ip
OworICAgIG1fYWdlbnQtPmV4ZWN1dGVTUUxTeW5jKGVycm9yLCBpbl9kYXRhYmFzZUlkLCBpbl9x
dWVyeSwgb3V0X2NvbHVtbk5hbWVzLCAmb3V0X25vdGVzLCAmb3V0X3RpbWVzdGFtcCwgb3V0X3Zh
bHVlcywgJm91dF9wYXlsb2FkLCAmb3V0X2RhdGFiYXNlSWQsIG91dF9zcWxFcnJvciwgJm91dF9z
Y3JlZW5Db2xvciwgJm91dF9wcmludENvbG9yKTsKIAogICAgIGlmICghZXJyb3IubGVuZ3RoKCkp
IHsKICAgICAgICAgcmVzdWx0LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVzIiks
IG91dF9jb2x1bW5OYW1lcyk7CkBAIC0zODYsNyArMzg2LDcgQEAgdm9pZCBJbnNwZWN0b3JEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMQXN5bmMobG9uZyBjYWxsSWQsIGNvbnN0
IEluc3AKICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiByZXN1bHQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxJbnNwZWN0
b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jQ2FsbGJh
Y2s+IGNhbGxiYWNrID0gYWRvcHRSZWYobmV3IEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNDYWxsYmFjayhtX2JhY2tlbmREaXNwYXRjaGVy
LGNhbGxJZCkpOwotICAgIG1fYWdlbnQtPmV4ZWN1dGVTUUxBc3luYygmZXJyb3IsIGluX2RhdGFi
YXNlSWQsIGluX3F1ZXJ5LCBjYWxsYmFjayk7CisgICAgbV9hZ2VudC0+ZXhlY3V0ZVNRTEFzeW5j
KGVycm9yLCBpbl9kYXRhYmFzZUlkLCBpbl9xdWVyeSwgY2FsbGJhY2spOwogCiAgICAgaWYgKGVy
cm9yLmxlbmd0aCgpKSB7CiAgICAgICAgIGNhbGxiYWNrLT5kaXNhYmxlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
Y29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3Vs
dAppbmRleCAwNTEwYWVjMDQzMWZkNjM4ZWZkOTZhYWE2YmZiZmY0Y2RhMjZjMDQ0Li43MDdiNTQ4
ODI3MDQ1NmM3ZDAyMzNmNDc5MGQzNzFmMTJkODQ1ZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0
aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5k
cy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKQEAgLTk1
LDggKzk1LDggQEAgcHVibGljOgogICAgICAgICBZZWxsb3cgPSA1LAogICAgICAgICBCbGFjayA9
IDYsCiAgICAgfTsgLy8gZW51bSBjbGFzcyBQcmludENvbG9yCi0gICAgdmlydHVhbCB2b2lkIGV4
ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JBcnJheT4qIGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIGlu
X25vdGVzLCBjb25zdCBkb3VibGUqIGluX3RpbWVzdGFtcCwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0PiogaW5fdmFsdWVzLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rv
clZhbHVlKiBpbl9wYXlsb2FkLCBjb25zdCBpbnQqIGluX2RhdGFiYXNlSWQsIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcq
IGluX3NjcmVlbkNvbG9yLCBjb25zdCBTdHJpbmcqIGluX3ByaW50Q29sb3IsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgb3B0X291dF9jb2x1bW5OYW1lcywgSW5z
cGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG9wdF9vdXRfbm90ZXMsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+KiBvcHRfb3V0X3RpbWVzdGFtcCwgSW5z
cGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piog
b3B0X291dF92YWx1ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6
Okluc3BlY3RvclZhbHVlPiogb3B0X291dF9wYXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpP
cHRPdXRwdXQ8aW50Piogb3B0X291dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3B0X291dF9zcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMqIG9wdF9vdXRfc2NyZWVuQ29sb3IsIEluc3Bl
Y3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvcHRfb3V0
X3ByaW50Q29sb3IpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZU5vT3B0aW9uYWxQYXJh
bWV0ZXJzKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJy
YXk+JiBpbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBpbl9ub3RlcywgZG91YmxlIGluX3Rp
bWVzdGFtcCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgaW5fdmFs
dWVzLCBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlIGluX3BheWxvYWQsIGludCBpbl9kYXRhYmFz
ZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBpbl9zcWxFcnJv
ciwgY29uc3QgU3RyaW5nJiBpbl9zY3JlZW5Db2xvciwgY29uc3QgU3RyaW5nJiBpbl9wcmludENv
bG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIG91dF9jb2x1
bW5OYW1lcywgU3RyaW5nKiBvdXRfbm90ZXMsIGRvdWJsZSogb3V0X3RpbWVzdGFtcCwgSW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3QqIG91dF92YWx1ZXMsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFs
dWUqIG91dF9wYXlsb2FkLCBpbnQqIG91dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3V0X3NxbEVycm9yLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3V0X3NjcmVlbkNvbG9yLCBJbnNwZWN0b3JE
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciogb3V0X3ByaW50Q29s
b3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhF
cnJvclN0cmluZyYsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiogaW5f
Y29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyogaW5fbm90ZXMsIGNvbnN0IGRvdWJsZSogaW5fdGlt
ZXN0YW1wLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBpbl92YWx1
ZXMsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIGluX3BheWxvYWQsIGNvbnN0IGlu
dCogaW5fZGF0YWJhc2VJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiogaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyogaW5fc2NyZWVuQ29sb3IsIGNvbnN0IFN0cmlu
ZyogaW5fcHJpbnRDb2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmlu
Zz4+JiBvcHRfb3V0X2NvbHVtbk5hbWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8
U3RyaW5nPiogb3B0X291dF9ub3RlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRv
dWJsZT4qIG9wdF9vdXRfdGltZXN0YW1wLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvcHRfb3V0X3ZhbHVlcywgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+KiBvcHRfb3V0X3Bh
eWxvYWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBvcHRfb3V0X2RhdGFi
YXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiBvcHRf
b3V0X3NxbEVycm9yLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9y
cyogb3B0X291dF9zY3JlZW5Db2xvciwgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXI6OlByaW50Q29sb3IqIG9wdF9vdXRfcHJpbnRDb2xvcikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMoRXJyb3JTdHJpbmcmLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mIGluX2NvbHVtbk5hbWVzLCBjb25zdCBT
dHJpbmcmIGluX25vdGVzLCBkb3VibGUgaW5fdGltZXN0YW1wLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBpbl92YWx1ZXMsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFs
dWUgaW5fcGF5bG9hZCwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdD4mIGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcmIGluX3NjcmVlbkNv
bG9yLCBjb25zdCBTdHJpbmcmIGluX3ByaW50Q29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxTdHJpbmc+PiYgb3V0X2NvbHVtbk5hbWVzLCBTdHJpbmcqIG91dF9ub3Rlcywg
ZG91YmxlKiBvdXRfdGltZXN0YW1wLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogb3V0X3Zh
bHVlcywgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogb3V0X3BheWxvYWQsIGludCogb3V0X2Rh
dGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiBv
dXRfc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3Jz
KiBvdXRfc2NyZWVuQ29sb3IsIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyOjpQcmludENvbG9yKiBvdXRfcHJpbnRDb2xvcikgPSAwOwogcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgfkluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKCk7CiB9OwpA
QCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hl
cjo6ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJCiAgICAgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gb3V0X3NxbEVycm9yOwogICAgIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzIG91dF9zY3JlZW5Db2xv
cjsKICAgICBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRD
b2xvciBvdXRfcHJpbnRDb2xvcjsKLSAgICBtX2FnZW50LT5leGVjdXRlQWxsT3B0aW9uYWxQYXJh
bWV0ZXJzKCZlcnJvciwgY29sdW1uTmFtZXNfdmFsdWVGb3VuZCA/ICZpbl9jb2x1bW5OYW1lcyA6
IG51bGxwdHIsIG5vdGVzX3ZhbHVlRm91bmQgPyAmaW5fbm90ZXMgOiBudWxscHRyLCB0aW1lc3Rh
bXBfdmFsdWVGb3VuZCA/ICZpbl90aW1lc3RhbXAgOiBudWxscHRyLCB2YWx1ZXNfdmFsdWVGb3Vu
ZCA/ICZpbl92YWx1ZXMgOiBudWxscHRyLCBwYXlsb2FkX3ZhbHVlRm91bmQgPyAmaW5fcGF5bG9h
ZCA6IG51bGxwdHIsIGRhdGFiYXNlSWRfdmFsdWVGb3VuZCA/ICZpbl9kYXRhYmFzZUlkIDogbnVs
bHB0ciwgc3FsRXJyb3JfdmFsdWVGb3VuZCA/ICZpbl9zcWxFcnJvciA6IG51bGxwdHIsIHNjcmVl
bkNvbG9yX3ZhbHVlRm91bmQgPyAmaW5fc2NyZWVuQ29sb3IgOiBudWxscHRyLCBwcmludENvbG9y
X3ZhbHVlRm91bmQgPyAmaW5fcHJpbnRDb2xvciA6IG51bGxwdHIsIG91dF9jb2x1bW5OYW1lcywg
Jm91dF9ub3RlcywgJm91dF90aW1lc3RhbXAsIG91dF92YWx1ZXMsICZvdXRfcGF5bG9hZCwgJm91
dF9kYXRhYmFzZUlkLCBvdXRfc3FsRXJyb3IsICZvdXRfc2NyZWVuQ29sb3IsICZvdXRfcHJpbnRD
b2xvcik7CisgICAgbV9hZ2VudC0+ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhlcnJvciwg
Y29sdW1uTmFtZXNfdmFsdWVGb3VuZCA/ICZpbl9jb2x1bW5OYW1lcyA6IG51bGxwdHIsIG5vdGVz
X3ZhbHVlRm91bmQgPyAmaW5fbm90ZXMgOiBudWxscHRyLCB0aW1lc3RhbXBfdmFsdWVGb3VuZCA/
ICZpbl90aW1lc3RhbXAgOiBudWxscHRyLCB2YWx1ZXNfdmFsdWVGb3VuZCA/ICZpbl92YWx1ZXMg
OiBudWxscHRyLCBwYXlsb2FkX3ZhbHVlRm91bmQgPyAmaW5fcGF5bG9hZCA6IG51bGxwdHIsIGRh
dGFiYXNlSWRfdmFsdWVGb3VuZCA/ICZpbl9kYXRhYmFzZUlkIDogbnVsbHB0ciwgc3FsRXJyb3Jf
dmFsdWVGb3VuZCA/ICZpbl9zcWxFcnJvciA6IG51bGxwdHIsIHNjcmVlbkNvbG9yX3ZhbHVlRm91
bmQgPyAmaW5fc2NyZWVuQ29sb3IgOiBudWxscHRyLCBwcmludENvbG9yX3ZhbHVlRm91bmQgPyAm
aW5fcHJpbnRDb2xvciA6IG51bGxwdHIsIG91dF9jb2x1bW5OYW1lcywgJm91dF9ub3RlcywgJm91
dF90aW1lc3RhbXAsIG91dF92YWx1ZXMsICZvdXRfcGF5bG9hZCwgJm91dF9kYXRhYmFzZUlkLCBv
dXRfc3FsRXJyb3IsICZvdXRfc2NyZWVuQ29sb3IsICZvdXRfcHJpbnRDb2xvcik7CiAKICAgICBp
ZiAoIWVycm9yLmxlbmd0aCgpKSB7CiAgICAgICAgIGlmIChvdXRfY29sdW1uTmFtZXMpCkBAIC0y
ODYsNyArMjg2LDcgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpl
eGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSWQKICAgICBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBvdXRfc3FsRXJyb3I7CiAgICAgSW5zcGVj
dG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMgb3V0X3NjcmVlbkNvbG9yOwog
ICAgIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9y
IG91dF9wcmludENvbG9yOwotICAgIG1fYWdlbnQtPmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVy
cygmZXJyb3IsIGluX2NvbHVtbk5hbWVzLCBpbl9ub3RlcywgaW5fdGltZXN0YW1wLCBpbl92YWx1
ZXMsIGluX3BheWxvYWQsIGluX2RhdGFiYXNlSWQsIGluX3NxbEVycm9yLCBpbl9zY3JlZW5Db2xv
ciwgaW5fcHJpbnRDb2xvciwgb3V0X2NvbHVtbk5hbWVzLCAmb3V0X25vdGVzLCAmb3V0X3RpbWVz
dGFtcCwgb3V0X3ZhbHVlcywgJm91dF9wYXlsb2FkLCAmb3V0X2RhdGFiYXNlSWQsIG91dF9zcWxF
cnJvciwgJm91dF9zY3JlZW5Db2xvciwgJm91dF9wcmludENvbG9yKTsKKyAgICBtX2FnZW50LT5l
eGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMoZXJyb3IsIGluX2NvbHVtbk5hbWVzLCBpbl9ub3Rl
cywgaW5fdGltZXN0YW1wLCBpbl92YWx1ZXMsIGluX3BheWxvYWQsIGluX2RhdGFiYXNlSWQsIGlu
X3NxbEVycm9yLCBpbl9zY3JlZW5Db2xvciwgaW5fcHJpbnRDb2xvciwgb3V0X2NvbHVtbk5hbWVz
LCAmb3V0X25vdGVzLCAmb3V0X3RpbWVzdGFtcCwgb3V0X3ZhbHVlcywgJm91dF9wYXlsb2FkLCAm
b3V0X2RhdGFiYXNlSWQsIG91dF9zcWxFcnJvciwgJm91dF9zY3JlZW5Db2xvciwgJm91dF9wcmlu
dENvbG9yKTsKIAogICAgIGlmICghZXJyb3IubGVuZ3RoKCkpIHsKICAgICAgICAgcmVzdWx0LT5z
ZXRBcnJheShBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVzIiksIG91dF9jb2x1bW5OYW1lcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9k
b21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0CmluZGV4IDVkMjcz
ZDVlNDNkYTBjNjgxZGZhMDM0MGJjNjhmZWQ4NjYwODRmZjEuLjU1ZGJkNTI1NmNjYzkxZThmMzQw
ZTgwMmNlYzBkM2IzYWE0NDFkMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21t
YW5kLXNpemVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNp
emVzLmpzb24tcmVzdWx0CkBAIC04OSwyMCArODksMjAgQEAgdHlwZWRlZiBTdHJpbmcgRXJyb3JT
dHJpbmc7CiAKIGNsYXNzIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlMShFcnJvclN0cmluZyop
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlMShFcnJvclN0cmluZyYpID0gMDsK
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlcigpOwogfTsKIAogY2xhc3MgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UxKEVy
cm9yU3RyaW5nKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UyKEVycm9yU3Ry
aW5nKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UzKEVycm9yU3RyaW5nKikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2U0KEVycm9yU3RyaW5nKikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2U1KEVycm9yU3RyaW5nKikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBsb2FkUmVzb3VyY2U2KEVycm9yU3RyaW5nKikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBsb2FkUmVzb3VyY2U3KEVycm9yU3RyaW5nKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBs
b2FkUmVzb3VyY2UxKEVycm9yU3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVz
b3VyY2UyKEVycm9yU3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2Uz
KEVycm9yU3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2U0KEVycm9y
U3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2U1KEVycm9yU3RyaW5n
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2U2KEVycm9yU3RyaW5nJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2U3KEVycm9yU3RyaW5nJikgPSAwOwogcHJv
dGVjdGVkOgogICAgIHZpcnR1YWwgfkluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyKCk7CiB9OwpAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29yazFC
YWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlMShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVj
CiB7CiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
cmVzdWx0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBtX2FnZW50LT5sb2FkUmVz
b3VyY2UxKCZlcnJvcik7CisgICAgbV9hZ2VudC0+bG9hZFJlc291cmNlMShlcnJvcik7CiAKICAg
ICBtX2JhY2tlbmREaXNwYXRjaGVyLT5zZW5kUmVzcG9uc2UoY2FsbElkLCByZXN1bHQucmVsZWFz
ZSgpLCBlcnJvcik7CiB9CkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3Jr
M0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UxKGxvbmcgY2FsbElkLCBjb25zdCBJbnNw
ZWMKIHsKICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiByZXN1bHQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1fYWdlbnQtPmxvYWRS
ZXNvdXJjZTEoJmVycm9yKTsKKyAgICBtX2FnZW50LT5sb2FkUmVzb3VyY2UxKGVycm9yKTsKIAog
ICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNlbmRSZXNwb25zZShjYWxsSWQsIHJlc3VsdC5yZWxl
YXNlKCksIGVycm9yKTsKIH0KQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdv
cmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTIobG9uZyBjYWxsSWQsIGNvbnN0IElu
c3BlYwogewogICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IHJlc3VsdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgbV9hZ2VudC0+bG9h
ZFJlc291cmNlMigmZXJyb3IpOworICAgIG1fYWdlbnQtPmxvYWRSZXNvdXJjZTIoZXJyb3IpOwog
CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJlc3BvbnNlKGNhbGxJZCwgcmVzdWx0LnJl
bGVhc2UoKSwgZXJyb3IpOwogfQpAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0
d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlMyhsb25nIGNhbGxJZCwgY29uc3Qg
SW5zcGVjCiB7CiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gcmVzdWx0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBtX2FnZW50LT5s
b2FkUmVzb3VyY2UzKCZlcnJvcik7CisgICAgbV9hZ2VudC0+bG9hZFJlc291cmNlMyhlcnJvcik7
CiAKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5zZW5kUmVzcG9uc2UoY2FsbElkLCByZXN1bHQu
cmVsZWFzZSgpLCBlcnJvcik7CiB9CkBAIC0yOTUsNyArMjk1LDcgQEAgdm9pZCBJbnNwZWN0b3JO
ZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2U0KGxvbmcgY2FsbElkLCBjb25z
dCBJbnNwZWMKIHsKICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiByZXN1bHQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1fYWdlbnQt
PmxvYWRSZXNvdXJjZTQoJmVycm9yKTsKKyAgICBtX2FnZW50LT5sb2FkUmVzb3VyY2U0KGVycm9y
KTsKIAogICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNlbmRSZXNwb25zZShjYWxsSWQsIHJlc3Vs
dC5yZWxlYXNlKCksIGVycm9yKTsKIH0KQEAgLTMwNCw3ICszMDQsNyBAQCB2b2lkIEluc3BlY3Rv
ck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTUobG9uZyBjYWxsSWQsIGNv
bnN0IEluc3BlYwogewogICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IHJlc3VsdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgbV9hZ2Vu
dC0+bG9hZFJlc291cmNlNSgmZXJyb3IpOworICAgIG1fYWdlbnQtPmxvYWRSZXNvdXJjZTUoZXJy
b3IpOwogCiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJlc3BvbnNlKGNhbGxJZCwgcmVz
dWx0LnJlbGVhc2UoKSwgZXJyb3IpOwogfQpAQCAtMzEzLDcgKzMxMyw3IEBAIHZvaWQgSW5zcGVj
dG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNihsb25nIGNhbGxJZCwg
Y29uc3QgSW5zcGVjCiB7CiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gcmVzdWx0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBtX2Fn
ZW50LT5sb2FkUmVzb3VyY2U2KCZlcnJvcik7CisgICAgbV9hZ2VudC0+bG9hZFJlc291cmNlNihl
cnJvcik7CiAKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5zZW5kUmVzcG9uc2UoY2FsbElkLCBy
ZXN1bHQucmVsZWFzZSgpLCBlcnJvcik7CiB9CkBAIC0zMjIsNyArMzIyLDcgQEAgdm9pZCBJbnNw
ZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2U3KGxvbmcgY2FsbElk
LCBjb25zdCBJbnNwZWMKIHsKICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiByZXN1bHQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1f
YWdlbnQtPmxvYWRSZXNvdXJjZTcoJmVycm9yKTsKKyAgICBtX2FnZW50LT5sb2FkUmVzb3VyY2U3
KGVycm9yKTsKIAogICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNlbmRSZXNwb25zZShjYWxsSWQs
IHJlc3VsdC5yZWxlYXNlKCksIGVycm9yKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5z
LXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZl
YXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CmluZGV4IDA0MzJjZjQzMmMyNDNmZmM4ZTc5ODZmOTFm
ODY3MjZjYTk4MTBmZjguLmEyMmNhYmE4ZWZjZTNlMjc0Mzg2NTcwYzFlODcyNDljZjM3OWI1NTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1
bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdApA
QCAtODUsNyArODUsNyBAQCB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKICNpZiBQTEFURk9S
TShXRUJfQ09NTUFORFMpCiBjbGFzcyBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZShFcnJvclN0
cmluZyopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlKEVycm9yU3RyaW5nJikg
PSAwOwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyKCk7CiB9OwpAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgSW5zcGVjdG9y
TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlKGxvbmcgY2FsbElkLCBjb25z
dCBJbnNwZWN0CiB7CiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gcmVzdWx0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBtX2FnZW50
LT5sb2FkUmVzb3VyY2UoJmVycm9yKTsKKyAgICBtX2FnZW50LT5sb2FkUmVzb3VyY2UoZXJyb3Ip
OwogCiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJlc3BvbnNlKGNhbGxJZCwgcmVzdWx0
LnJlbGVhc2UoKSwgZXJyb3IpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29t
bWFuZExpbmVBUElIb3N0LmNwcAppbmRleCAyNDhiMDA4NDBhZWY0YTA5OTdlM2IyY2MyYWIwYmVj
YmRkN2YyNDZiLi45NDZhOTFmYWNmZjkxODVhZTFkMDg1ZDY4Y2EwMmM4MzgwY2I1MWJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcApAQCAt
MTE0LDggKzExNCw4IEBAIHZvaWQgQ29tbWFuZExpbmVBUElIb3N0OjpnZXRFdmVudExpc3RlbmVy
c0ltcGwoTm9kZSogbm9kZSwgVmVjdG9yPEV2ZW50TGlzdGVuZXJJCiB2b2lkIENvbW1hbmRMaW5l
QVBJSG9zdDo6Y2xlYXJDb25zb2xlTWVzc2FnZXMoKQogewogICAgIGlmIChtX2NvbnNvbGVBZ2Vu
dCkgewotICAgICAgICBFcnJvclN0cmluZyBlcnJvcjsKLSAgICAgICAgbV9jb25zb2xlQWdlbnQt
PmNsZWFyTWVzc2FnZXMoJmVycm9yKTsKKyAgICAgICAgRXJyb3JTdHJpbmcgdW51c2VkOworICAg
ICAgICBtX2NvbnNvbGVBZ2VudC0+Y2xlYXJNZXNzYWdlcyh1bnVzZWQpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcAppbmRleCA1YTIzODE5YTRhMzllMDZh
ZjJlYTIwN2NiNDEzMWQzMTUyZjM4ZDcwLi4wYmE2Njg5ZDE2ZjUzOTBmZGIwOTFhOWRlYmU0YWNl
M2NjNjYzOWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcApAQCAtMzk2
LDE1ICszOTYsMTUgQEAgYm9vbCBET01FZGl0b3I6OnNldE5vZGVWYWx1ZShOb2RlKiBub2RlLCBj
b25zdCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICByZXR1cm4gbV9oaXN0
b3J5LT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0Tm9kZVZhbHVlQWN0aW9uPihub2RlLCB2
YWx1ZSksIGVjKTsKIH0KIAotc3RhdGljIHZvaWQgcG9wdWxhdGVFcnJvclN0cmluZyhjb25zdCBF
eGNlcHRpb25Db2RlJiBlYywgRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nKQorc3RhdGljIHZvaWQg
cG9wdWxhdGVFcnJvclN0cmluZyhjb25zdCBFeGNlcHRpb25Db2RlJiBlYywgRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nKQogewogICAgIGlmIChlYykgewogICAgICAgICBFeGNlcHRpb25Db2RlRGVz
Y3JpcHRpb24gZGVzY3JpcHRpb24oZWMpOwotICAgICAgICAqZXJyb3JTdHJpbmcgPSBkZXNjcmlw
dGlvbi5uYW1lOworICAgICAgICBlcnJvclN0cmluZyA9IGRlc2NyaXB0aW9uLm5hbWU7CiAgICAg
fQogfQogCi1ib29sIERPTUVkaXRvcjo6aW5zZXJ0QmVmb3JlKE5vZGUqIHBhcmVudE5vZGUsIFBh
c3NSZWZQdHI8Tm9kZT4gbm9kZSwgTm9kZSogYW5jaG9yTm9kZSwgRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nKQorYm9vbCBET01FZGl0b3I6Omluc2VydEJlZm9yZShOb2RlKiBwYXJlbnROb2RlLCBQ
YXNzUmVmUHRyPE5vZGU+IG5vZGUsIE5vZGUqIGFuY2hvck5vZGUsIEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZykKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBib29sIHJlc3VsdCA9
IGluc2VydEJlZm9yZShwYXJlbnROb2RlLCBub2RlLCBhbmNob3JOb2RlLCBlYyk7CkBAIC00MTIs
NyArNDEyLDcgQEAgYm9vbCBET01FZGl0b3I6Omluc2VydEJlZm9yZShOb2RlKiBwYXJlbnROb2Rl
LCBQYXNzUmVmUHRyPE5vZGU+IG5vZGUsIE5vZGUqIGFuY2gKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1ib29sIERPTUVkaXRvcjo6cmVtb3ZlQ2hpbGQoTm9kZSogcGFyZW50Tm9kZSwgTm9kZSog
bm9kZSwgRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nKQorYm9vbCBET01FZGl0b3I6OnJlbW92ZUNo
aWxkKE5vZGUqIHBhcmVudE5vZGUsIE5vZGUqIG5vZGUsIEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZykKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBib29sIHJlc3VsdCA9IHJlbW92
ZUNoaWxkKHBhcmVudE5vZGUsIG5vZGUsIGVjKTsKQEAgLTQyMCw3ICs0MjAsNyBAQCBib29sIERP
TUVkaXRvcjo6cmVtb3ZlQ2hpbGQoTm9kZSogcGFyZW50Tm9kZSwgTm9kZSogbm9kZSwgRXJyb3JT
dHJpbmcqIGVycm9yU3RyaQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgRE9NRWRpdG9y
OjpzZXRBdHRyaWJ1dGUoRWxlbWVudCogZWxlbWVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIHZhbHVlLCBFcnJvclN0cmluZyogZXJyb3JTdHJpbmcpCitib29sIERPTUVkaXRv
cjo6c2V0QXR0cmlidXRlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiB2YWx1ZSwgRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogewogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogICAgIGJvb2wgcmVzdWx0ID0gc2V0QXR0cmlidXRlKGVsZW1lbnQs
IG5hbWUsIHZhbHVlLCBlYyk7CkBAIC00MjgsNyArNDI4LDcgQEAgYm9vbCBET01FZGl0b3I6OnNl
dEF0dHJpYnV0ZShFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIERPTUVkaXRvcjo6cmVtb3ZlQXR0
cmlidXRlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nKQorYm9vbCBET01FZGl0b3I6OnJlbW92ZUF0dHJpYnV0ZShFbGVtZW50KiBl
bGVtZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKIHsK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBib29sIHJlc3VsdCA9IHJlbW92ZUF0dHJp
YnV0ZShlbGVtZW50LCBuYW1lLCBlYyk7CkBAIC00MzYsNyArNDM2LDcgQEAgYm9vbCBET01FZGl0
b3I6OnJlbW92ZUF0dHJpYnV0ZShFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIG5hbWUs
IEVycm9yU3RyaW4KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIERPTUVkaXRvcjo6c2V0
T3V0ZXJIVE1MKE5vZGUmIG5vZGUsIGNvbnN0IFN0cmluZyYgaHRtbCwgTm9kZSoqIG5ld05vZGUs
IEVycm9yU3RyaW5nKiBlcnJvclN0cmluZykKK2Jvb2wgRE9NRWRpdG9yOjpzZXRPdXRlckhUTUwo
Tm9kZSYgbm9kZSwgY29uc3QgU3RyaW5nJiBodG1sLCBOb2RlKiogbmV3Tm9kZSwgRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGJvb2wg
cmVzdWx0ID0gc2V0T3V0ZXJIVE1MKG5vZGUsIGh0bWwsIG5ld05vZGUsIGVjKTsKQEAgLTQ0NCw3
ICs0NDQsNyBAQCBib29sIERPTUVkaXRvcjo6c2V0T3V0ZXJIVE1MKE5vZGUmIG5vZGUsIGNvbnN0
IFN0cmluZyYgaHRtbCwgTm9kZSoqIG5ld05vZGUsIEVycgogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLWJvb2wgRE9NRWRpdG9yOjpyZXBsYWNlV2hvbGVUZXh0KFRleHQqIHRleHROb2RlLCBjb25z
dCBTdHJpbmcmIHRleHQsIEVycm9yU3RyaW5nKiBlcnJvclN0cmluZykKK2Jvb2wgRE9NRWRpdG9y
OjpyZXBsYWNlV2hvbGVUZXh0KFRleHQqIHRleHROb2RlLCBjb25zdCBTdHJpbmcmIHRleHQsIEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZykKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICBib29sIHJlc3VsdCA9IHJlcGxhY2VXaG9sZVRleHQodGV4dE5vZGUsIHRleHQsIGVjKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuaAppbmRleCA4Y2M0NDFmMTg4MWQ2MjAxYTFiOWNi
NWQ3MzFhMzhlNTQxMzI5N2NjLi4yOTRkMTkwMDgwYWE1YmEwMTIyNDE2ZGVkMWVmN2Y3NTE5MmU2
ZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5oCkBAIC02MSwxMiArNjEsMTIg
QEAgcHVibGljOgogICAgIGJvb2wgcmVwbGFjZUNoaWxkKE5vZGUqIHBhcmVudE5vZGUsIFBhc3NS
ZWZQdHI8Tm9kZT4gbmV3Tm9kZSwgTm9kZSogb2xkTm9kZSwgRXhjZXB0aW9uQ29kZSYpOwogICAg
IGJvb2wgc2V0Tm9kZVZhbHVlKE5vZGUqIHBhcmVudE5vZGUsIGNvbnN0IFN0cmluZyYgdmFsdWUs
IEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIGJvb2wgaW5zZXJ0QmVmb3JlKE5vZGUqIHBhcmVudE5v
ZGUsIFBhc3NSZWZQdHI8Tm9kZT4sIE5vZGUqIGFuY2hvck5vZGUsIEVycm9yU3RyaW5nKik7Ci0g
ICAgYm9vbCByZW1vdmVDaGlsZChOb2RlKiBwYXJlbnROb2RlLCBOb2RlKiwgRXJyb3JTdHJpbmcq
KTsKLSAgICBib29sIHNldEF0dHJpYnV0ZShFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIHZhbHVlLCBFcnJvclN0cmluZyopOwotICAgIGJvb2wgcmVtb3ZlQXR0cmli
dXRlKEVsZW1lbnQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIEVycm9yU3RyaW5nKik7Ci0gICAgYm9v
bCBzZXRPdXRlckhUTUwoTm9kZSYsIGNvbnN0IFN0cmluZyYgaHRtbCwgTm9kZSoqIG5ld05vZGUs
IEVycm9yU3RyaW5nKik7Ci0gICAgYm9vbCByZXBsYWNlV2hvbGVUZXh0KFRleHQqLCBjb25zdCBT
dHJpbmcmIHRleHQsIEVycm9yU3RyaW5nKik7CisgICAgYm9vbCBpbnNlcnRCZWZvcmUoTm9kZSog
cGFyZW50Tm9kZSwgUGFzc1JlZlB0cjxOb2RlPiwgTm9kZSogYW5jaG9yTm9kZSwgRXJyb3JTdHJp
bmcmKTsKKyAgICBib29sIHJlbW92ZUNoaWxkKE5vZGUqIHBhcmVudE5vZGUsIE5vZGUqLCBFcnJv
clN0cmluZyYpOworICAgIGJvb2wgc2V0QXR0cmlidXRlKEVsZW1lbnQqLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIEVycm9yU3RyaW5nJik7CisgICAgYm9vbCByZW1v
dmVBdHRyaWJ1dGUoRWxlbWVudCosIGNvbnN0IFN0cmluZyYgbmFtZSwgRXJyb3JTdHJpbmcmKTsK
KyAgICBib29sIHNldE91dGVySFRNTChOb2RlJiwgY29uc3QgU3RyaW5nJiBodG1sLCBOb2RlKiog
bmV3Tm9kZSwgRXJyb3JTdHJpbmcmKTsKKyAgICBib29sIHJlcGxhY2VXaG9sZVRleHQoVGV4dCos
IGNvbnN0IFN0cmluZyYgdGV4dCwgRXJyb3JTdHJpbmcmKTsKIAogcHJpdmF0ZToKICAgICBjbGFz
cyBET01BY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCmluZGV4IDYxMzRkN2MzODEwYmM0ZDQ4
YjQ3ZDZhNDIzYTk3MDUxZDViY2Q3MTQuLmQ3NTVlZmNhMmUzNWY5ZTYyZWY0NzMzZTQwZTFlZWVj
OTNlZTNhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQg
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3JEaXNjCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQobnVsbHB0cik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcqKQordm9pZCBJbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYpCiB7CiAgICAgbV9pbnN0
cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQodGhpcyk7
CiAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6
Om5ldHdvcmtTdGF0ZUNoYW5nZWQoKQogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5uZXR3b3Jr
U3RhdGVVcGRhdGVkKGlzTm93T25saW5lKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQ6OmdldEZyYW1lc1dpdGhNYW5pZmVzdHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRp
b25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+PiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQ6OmdldEZyYW1lc1dpdGhNYW5pZmVzdHMoRXJyb3JTdHJpbmcmLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBw
bGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+PiYgcmVzdWx0KQogewogICAgIHJlc3Vs
dCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxp
Y2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlmZXN0Pjo6Y3JlYXRlKCk7CiAKQEAgLTExNyw3ICsx
MTcsNyBAQCB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0RnJhbWVzV2l0
aE1hbmlmZXN0cyhFcnJvclN0cmluZyosIFJlZlB0cgogICAgIH0KIH0KIAotRG9jdW1lbnRMb2Fk
ZXIqIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6YXNzZXJ0RnJhbWVXaXRoRG9jdW1l
bnRMb2FkZXIoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBTdHJpbmcgZnJhbWVJZCkKK0RvY3Vt
ZW50TG9hZGVyKiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmFzc2VydEZyYW1lV2l0
aERvY3VtZW50TG9hZGVyKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgU3RyaW5nIGZyYW1lSWQp
CiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlQWdlbnQtPmFzc2VydEZyYW1lKGVycm9yU3Ry
aW5nLCBmcmFtZUlkKTsKICAgICBpZiAoIWZyYW1lKQpAQCAtMTI2LDcgKzEyNiw3IEBAIERvY3Vt
ZW50TG9hZGVyKiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmFzc2VydEZyYW1lV2l0
aERvY3VtZW50TG9hZGVyKEVyCiAgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6YXNzZXJ0
RG9jdW1lbnRMb2FkZXIoZXJyb3JTdHJpbmcsIGZyYW1lKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmdldE1hbmlmZXN0Rm9yRnJhbWUoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIFN0cmluZyogbWFuaWZlc3RVUkwpCit2
b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0TWFuaWZlc3RGb3JGcmFtZShF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgU3RyaW5nKiBt
YW5pZmVzdFVSTCkKIHsKICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBhc3Nl
cnRGcmFtZVdpdGhEb2N1bWVudExvYWRlcihlcnJvclN0cmluZywgZnJhbWVJZCk7CiAgICAgaWYg
KCFkb2N1bWVudExvYWRlcikKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIEluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudDo6Z2V0TWFuaWZlc3RGb3JGcmFtZShFcnJvclN0cmluZyogZXJyb3JT
dHJpbgogICAgICptYW5pZmVzdFVSTCA9IGluZm8ubV9tYW5pZmVzdC5zdHJpbmcoKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmdldEFwcGxpY2F0aW9uQ2FjaGVG
b3JGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9u
Q2FjaGU+JiBhcHBsaWNhdGlvbkNhY2hlKQordm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQ6OmdldEFwcGxpY2F0aW9uQ2FjaGVGb3JGcmFtZShFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFw
cGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+JiBhcHBsaWNhdGlvbkNhY2hlKQogewog
ICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGFzc2VydEZyYW1lV2l0aERvY3Vt
ZW50TG9hZGVyKGVycm9yU3RyaW5nLCBmcmFtZUlkKTsKICAgICBpZiAoIWRvY3VtZW50TG9hZGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudC5oCmluZGV4IGFlOTRkMDIxNDdkYTIzMjIzOWUxOTgxZGZlZWQwYjY4
NzVlY2JmN2IuLjdlYzc3MmM4NTVlY2Y4ZjIwMjk2YjdlNmEyNzI5ZjgyZGI0N2UzMWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50LmgKQEAgLTYxLDE3ICs2MSwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRh
dGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKEZyYW1lKik7CiAgICAgdm9pZCBuZXR3b3JrU3RhdGVD
aGFuZ2VkKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldEZyYW1lc1dpdGhNYW5pZmVzdHMoRXJyb3JTdHJpbmcq
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+PiYgcmVzdWx0KSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0TWFuaWZlc3RGb3JGcmFtZShFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgZnJhbWVJZCwgU3RyaW5nKiBtYW5pZmVzdFVSTCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGdldEFwcGxpY2F0aW9uQ2FjaGVGb3JGcmFtZShFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgZnJhbWVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9u
Q2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGVu
YWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBnZXRGcmFtZXNX
aXRoTWFuaWZlc3RzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlm
ZXN0Pj4mIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGdldE1hbmlmZXN0Rm9y
RnJhbWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIFN0cmluZyogbWFuaWZl
c3RVUkwpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBnZXRBcHBsaWNhdGlvbkNhY2hlRm9y
RnJhbWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlPiYpIG92ZXJy
aWRlOwogCiBwcml2YXRlOgogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBw
bGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZT4gYnVpbGRPYmplY3RGb3JBcHBsaWNhdGlv
bkNhY2hlKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0JiwgY29u
c3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OkNhY2hlSW5mbyYpOwogICAgIFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25D
YWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPj4gYnVpbGRBcnJheUZvckFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZXMoY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mb0xp
c3QmKTsKICAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2Fj
aGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gYnVpbGRPYmplY3RGb3JBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UoY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mbyYpOwog
Ci0gICAgRG9jdW1lbnRMb2FkZXIqIGFzc2VydEZyYW1lV2l0aERvY3VtZW50TG9hZGVyKEVycm9y
U3RyaW5nKiwgU3RyaW5nIGZyYW1lSWQpOworICAgIERvY3VtZW50TG9hZGVyKiBhc3NlcnRGcmFt
ZVdpdGhEb2N1bWVudExvYWRlcihFcnJvclN0cmluZyYsIFN0cmluZyBmcmFtZUlkKTsKIAogICAg
IEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9m
cm9udGVuZERpc3BhdGNoZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNTU0FnZW50LmNwcAppbmRleCA1YWFjMTc0NzA4MmEyMjQyOTI1YTQzNmM3YTE4ODhlYzQ4YTE4
NDM2Li5mMWMyZmIxMGUzZGY4N2VjYTliYWNmZDQ2MmY0NjUzYjBlZWJlNTY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTQ4NSwxMiAr
NDg1LDEyIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnJlc2V0Tm9uUGVyc2lzdGVudERhdGEo
KQogICAgIHJlc2V0UHNldWRvU3RhdGVzKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OmVuYWJsZShFcnJvclN0cmluZyopCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjplbmFibGUoRXJy
b3JTdHJpbmcmKQogewogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yQ1NT
QWdlbnQodGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpc2FibGUoRXJyb3JT
dHJpbmcqKQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCiB7
CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JDU1NBZ2VudChudWxscHRy
KTsKIH0KQEAgLTUwNyw4ICs1MDcsOCBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRDcmVh
dGVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cqCiAgICAgaWYg
KCFkb2N1bWVudE5vZGVJZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRXJyb3JTdHJpbmcgZXJy
b3JTdHJpbmc7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPm5hbWVkRmxvd0NyZWF0ZWQoYnVp
bGRPYmplY3RGb3JOYW1lZEZsb3coJmVycm9yU3RyaW5nLCBuYW1lZEZsb3csIGRvY3VtZW50Tm9k
ZUlkKSk7CisgICAgRXJyb3JTdHJpbmcgdW51c2VkOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVy
LT5uYW1lZEZsb3dDcmVhdGVkKGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KHVudXNlZCwgbmFtZWRG
bG93LCBkb2N1bWVudE5vZGVJZCkpOwogfQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojp3aWxs
UmVtb3ZlTmFtZWRGbG93KERvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93KiBuYW1l
ZEZsb3cpCkBAIC01MzksMTAgKzUzOSwxMCBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpyZWdp
b25PdmVyc2V0Q2hhbmdlZChXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdywgaW50IGRvYwogICAg
IGlmIChuYW1lZEZsb3ctPmZsb3dTdGF0ZSgpID09IFdlYktpdE5hbWVkRmxvdzo6Rmxvd1N0YXRl
TnVsbCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7Cisg
ICAgRXJyb3JTdHJpbmcgdW51c2VkOwogICAgIFJlZjxXZWJLaXROYW1lZEZsb3c+IHByb3RlY3Qo
Km5hbWVkRmxvdyk7CiAKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVnaW9uT3ZlcnNldENo
YW5nZWQoYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coJmVycm9yU3RyaW5nLCBuYW1lZEZsb3csIGRv
Y3VtZW50Tm9kZUlkKSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlZ2lvbk92ZXJzZXRD
aGFuZ2VkKGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KHVudXNlZCwgbmFtZWRGbG93LCBkb2N1bWVu
dE5vZGVJZCkpOwogfQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRSZWdpc3Rlck5hbWVk
Rmxvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93KiBu
YW1lZEZsb3csIE5vZGUqIGNvbnRlbnRFbGVtZW50LCBOb2RlKiBuZXh0Q29udGVudEVsZW1lbnQp
CkBAIC01NTEsOSArNTUxLDkgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkUmVnaXN0ZXJO
YW1lZEZsb3dDb250ZW50RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIFcKICAgICBpZiAoIWRv
Y3VtZW50Tm9kZUlkKQogICAgICAgICByZXR1cm47CiAKLSAgICBFcnJvclN0cmluZyBlcnJvclN0
cmluZzsKLSAgICBpbnQgY29udGVudEVsZW1lbnROb2RlSWQgPSBtX2RvbUFnZW50LT5wdXNoTm9k
ZVRvRnJvbnRlbmQoJmVycm9yU3RyaW5nLCBkb2N1bWVudE5vZGVJZCwgY29udGVudEVsZW1lbnQp
OwotICAgIGludCBuZXh0Q29udGVudEVsZW1lbnROb2RlSWQgPSBuZXh0Q29udGVudEVsZW1lbnQg
PyBtX2RvbUFnZW50LT5wdXNoTm9kZVRvRnJvbnRlbmQoJmVycm9yU3RyaW5nLCBkb2N1bWVudE5v
ZGVJZCwgbmV4dENvbnRlbnRFbGVtZW50KSA6IDA7CisgICAgRXJyb3JTdHJpbmcgdW51c2VkOwor
ICAgIGludCBjb250ZW50RWxlbWVudE5vZGVJZCA9IG1fZG9tQWdlbnQtPnB1c2hOb2RlVG9Gcm9u
dGVuZCh1bnVzZWQsIGRvY3VtZW50Tm9kZUlkLCBjb250ZW50RWxlbWVudCk7CisgICAgaW50IG5l
eHRDb250ZW50RWxlbWVudE5vZGVJZCA9IG5leHRDb250ZW50RWxlbWVudCA/IG1fZG9tQWdlbnQt
PnB1c2hOb2RlVG9Gcm9udGVuZCh1bnVzZWQsIGRvY3VtZW50Tm9kZUlkLCBuZXh0Q29udGVudEVs
ZW1lbnQpIDogMDsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVnaXN0ZXJlZE5hbWVkRmxv
d0NvbnRlbnRFbGVtZW50KGRvY3VtZW50Tm9kZUlkLCBuYW1lZEZsb3ctPm5hbWUoKS5zdHJpbmco
KSwgY29udGVudEVsZW1lbnROb2RlSWQsIG5leHRDb250ZW50RWxlbWVudE5vZGVJZCk7CiB9CiAK
QEAgLTU2Myw4ICs1NjMsOCBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRVbnJlZ2lzdGVy
TmFtZWRGbG93Q29udGVudEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LAogICAgIGlmICghZG9j
dW1lbnROb2RlSWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEVycm9yU3RyaW5nIGVycm9yU3Ry
aW5nOwotICAgIGludCBjb250ZW50RWxlbWVudE5vZGVJZCA9IG1fZG9tQWdlbnQtPnB1c2hOb2Rl
VG9Gcm9udGVuZCgmZXJyb3JTdHJpbmcsIGRvY3VtZW50Tm9kZUlkLCBjb250ZW50RWxlbWVudCk7
CisgICAgRXJyb3JTdHJpbmcgdW51c2VkOworICAgIGludCBjb250ZW50RWxlbWVudE5vZGVJZCA9
IG1fZG9tQWdlbnQtPnB1c2hOb2RlVG9Gcm9udGVuZCh1bnVzZWQsIGRvY3VtZW50Tm9kZUlkLCBj
b250ZW50RWxlbWVudCk7CiAgICAgaWYgKCFjb250ZW50RWxlbWVudE5vZGVJZCkgewogICAgICAg
ICAvLyBXZSd2ZSBhbHJlYWR5IG5vdGlmaWVkIHRoYXQgdGhlIERPTSBub2RlIHdhcyByZW1vdmVk
IGZyb20gdGhlIERPTSwgc28gdGhlcmUncyBubyBuZWVkIHRvIHNlbmQgYW5vdGhlciBldmVudC4K
ICAgICAgICAgcmV0dXJuOwpAQCAtNjAwLDcgKzYwMCw3IEBAIGJvb2wgSW5zcGVjdG9yQ1NTQWdl
bnQ6OmZvcmNlUHNldWRvU3RhdGUoRWxlbWVudCogZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsCiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVz
Rm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IGJvb2wq
IGluY2x1ZGVQc2V1ZG8sIGNvbnN0IGJvb2wqIGluY2x1ZGVJbmhlcml0ZWQsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRj
aD4+JiBtYXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4+JiBwc2V1ZG9JZE1hdGNo
ZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+PiYgaW5oZXJpdGVkRW50cmllcykKK3ZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgYm9vbCogaW5jbHVkZVBzZXVkbywgY29uc3QgYm9v
bCogaW5jbHVkZUluaGVyaXRlZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4mIG1hdGNoZWRDU1NSdWxlcywgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
UHNldWRvSWRNYXRjaGVzPj4mIHBzZXVkb0lkTWF0Y2hlcywgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRy
eT4+JiBpbmhlcml0ZWRFbnRyaWVzKQogewogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50
Rm9ySWQoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CiAgICAgaWYgKCFlbGVtZW50KQpAQCAtNjUwLDcg
KzY1MCw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2Rl
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vCiAgICAgfQogfQogCi12b2lkIEluc3Bl
Y3RvckNTU0FnZW50OjpnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5
bGU+JiBpbmxpbmVTdHlsZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5
bGU+JiBhdHRyaWJ1dGVzU3R5bGUpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRJbmxpbmVT
dHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+JiBpbmxpbmVTdHlsZSwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+JiBhdHRyaWJ1dGVzU3R5bGUpCiB7
CiAgICAgRWxlbWVudCogZWxlbWVudCA9IGVsZW1lbnRGb3JJZChlcnJvclN0cmluZywgbm9kZUlk
KTsKICAgICBpZiAoIWVsZW1lbnQpCkBAIC02NjUsNyArNjY1LDcgQEAgdm9pZCBJbnNwZWN0b3JD
U1NBZ2VudDo6Z2V0SW5saW5lU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGludCBub2QKICAgICBhdHRyaWJ1dGVzU3R5bGUgPSBhdHRyaWJ1dGVzID8gYXR0cmlidXRlcy5y
ZWxlYXNlKCkgOiBudWxscHRyOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRDb21w
dXRlZFN0eWxlRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+JiBzdHlsZSkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdl
bnQ6OmdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50
IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4mIHN0eWxlKQogewogICAgIEVs
ZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50Rm9ySWQoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CiAgICAg
aWYgKCFlbGVtZW50KQpAQCAtNjc2LDcgKzY3Niw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OmdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5v
CiAgICAgc3R5bGUgPSBpbnNwZWN0b3JTdHlsZS0+YnVpbGRBcnJheUZvckNvbXB1dGVkU3R5bGUo
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0QWxsU3R5bGVTaGVldHMoRXJyb3JT
dHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPj4mIHN0eWxlSW5mb3MpCit2b2lkIEluc3Bl
Y3RvckNTU0FnZW50OjpnZXRBbGxTdHlsZVNoZWV0cyhFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxl
U2hlZXRIZWFkZXI+PiYgc3R5bGVJbmZvcykKIHsKICAgICBzdHlsZUluZm9zID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0
SGVhZGVyPjo6Y3JlYXRlKCk7CiAgICAgVmVjdG9yPERvY3VtZW50Kj4gZG9jdW1lbnRzID0gbV9k
b21BZ2VudC0+ZG9jdW1lbnRzKCk7CkBAIC02OTAsNyArNjkwLDcgQEAgdm9pZCBJbnNwZWN0b3JD
U1NBZ2VudDo6Z2V0QWxsU3R5bGVTaGVldHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2MKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN0eWxlU2hl
ZXQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+JiBzdHls
ZVNoZWV0T2JqZWN0KQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3R5bGVTaGVldChFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4mIHN0eWxlU2hlZXRP
YmplY3QpCiB7CiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogaW5zcGVjdG9yU3R5bGVTaGVldCA9
IGFzc2VydFN0eWxlU2hlZXRGb3JJZChlcnJvclN0cmluZywgc3R5bGVTaGVldElkKTsKICAgICBp
ZiAoIWluc3BlY3RvclN0eWxlU2hlZXQpCkBAIC02OTksNyArNjk5LDcgQEAgdm9pZCBJbnNwZWN0
b3JDU1NBZ2VudDo6Z2V0U3R5bGVTaGVldChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgc3QKICAgICBzdHlsZVNoZWV0T2JqZWN0ID0gaW5zcGVjdG9yU3R5bGVTaGVldC0+
YnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OmdldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiBzdHlsZVNoZWV0SWQsIFN0cmluZyogcmVzdWx0KQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6
Z2V0U3R5bGVTaGVldFRleHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHN0eWxlU2hlZXRJZCwgU3RyaW5nKiByZXN1bHQpCiB7CiAgICAgSW5zcGVjdG9yU3R5bGVTaGVl
dCogaW5zcGVjdG9yU3R5bGVTaGVldCA9IGFzc2VydFN0eWxlU2hlZXRGb3JJZChlcnJvclN0cmlu
Zywgc3R5bGVTaGVldElkKTsKICAgICBpZiAoIWluc3BlY3RvclN0eWxlU2hlZXQpCkBAIC03MDgs
NyArNzA4LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3R5bGVTaGVldFRleHQoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcKICAgICBpbnNwZWN0b3JTdHlsZVNo
ZWV0LT5nZXRUZXh0KHJlc3VsdCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0
eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzdHls
ZVNoZWV0SWQsIGNvbnN0IFN0cmluZyYgdGV4dCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNl
dFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBz
dHlsZVNoZWV0SWQsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBJbnNwZWN0b3JTdHlsZVNo
ZWV0KiBpbnNwZWN0b3JTdHlsZVNoZWV0ID0gYXNzZXJ0U3R5bGVTaGVldEZvcklkKGVycm9yU3Ry
aW5nLCBzdHlsZVNoZWV0SWQpOwogICAgIGlmICghaW5zcGVjdG9yU3R5bGVTaGVldCkKQEAgLTcx
NiwxMCArNzE2LDEwIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlU2hlZXRUZXh0
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nCiAKICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKICAgICBtX2RvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oc3RkOjptYWtl
X3VuaXF1ZTxTZXRTdHlsZVNoZWV0VGV4dEFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgdGV4
dCksIGVjKTsKLSAgICAqZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0
cmluZyhlYyk7CisgICAgZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0
cmluZyhlYyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlVGV4dChFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBmdWxs
U3R5bGVJZCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpDU1NTdHlsZT4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxl
VGV4dChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+JiBmdWxsU3R5bGVJZCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4mIHJlc3VsdCkKIHsKICAgICBJbnNwZWN0b3JDU1NJZCBj
b21wb3VuZElkKGZ1bGxTdHlsZUlkKTsKICAgICBBU1NFUlQoIWNvbXBvdW5kSWQuaXNFbXB0eSgp
KTsKQEAgLTczMiwxMCArNzMyLDEwIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxl
VGV4dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwCiAgICAgYm9v
bCBzdWNjZXNzID0gbV9kb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlx
dWU8U2V0U3R5bGVUZXh0QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3VuZElkLCB0
ZXh0KSwgZWMpOwogICAgIGlmIChzdWNjZXNzKQogICAgICAgICByZXN1bHQgPSBpbnNwZWN0b3JT
dHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclN0eWxlKGluc3BlY3RvclN0eWxlU2hlZXQtPnN0eWxl
Rm9ySWQoY29tcG91bmRJZCkpOwotICAgICplcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50
Ojp0b0Vycm9yU3RyaW5nKGVjKTsKKyAgICBlcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50
Ojp0b0Vycm9yU3RyaW5nKGVjKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UHJv
cGVydHlUZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4mIGZ1bGxTdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwgY29uc3QgU3RyaW5nJiB0
ZXh0LCBib29sIG92ZXJ3cml0ZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NT
U3R5bGU+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRQcm9wZXJ0eVRleHQo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYg
ZnVsbFN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4LCBjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wg
b3ZlcndyaXRlLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4mIHJl
c3VsdCkKIHsKICAgICBJbnNwZWN0b3JDU1NJZCBjb21wb3VuZElkKGZ1bGxTdHlsZUlkKTsKICAg
ICBBU1NFUlQoIWNvbXBvdW5kSWQuaXNFbXB0eSgpKTsKQEAgLTc0OCwxMCArNzQ4LDEwIEBAIHZv
aWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFByb3BlcnR5VGV4dChFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGNvbnN0IFJlZlB0cjxJCiAgICAgYm9vbCBzdWNjZXNzID0gbV9kb21BZ2VudC0+aGlz
dG9yeSgpLT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0UHJvcGVydHlUZXh0QWN0aW9uPihp
bnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3VuZElkLCBwcm9wZXJ0eUluZGV4LCB0ZXh0LCBvdmVy
d3JpdGUpLCBlYyk7CiAgICAgaWYgKHN1Y2Nlc3MpCiAgICAgICAgIHJlc3VsdCA9IGluc3BlY3Rv
clN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yU3R5bGUoaW5zcGVjdG9yU3R5bGVTaGVldC0+c3R5
bGVGb3JJZChjb21wb3VuZElkKSk7Ci0gICAgKmVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdl
bnQ6OnRvRXJyb3JTdHJpbmcoZWMpOworICAgIGVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdl
bnQ6OnRvRXJyb3JTdHJpbmcoZWMpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50Ojp0b2dn
bGVQcm9wZXJ0eShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+JiBmdWxsU3R5bGVJZCwgaW50IHByb3BlcnR5SW5kZXgsIGJvb2wgZGlzYWJsZSwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpCit2b2lk
IEluc3BlY3RvckNTU0FnZW50Ojp0b2dnbGVQcm9wZXJ0eShFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBmdWxsU3R5bGVJZCwgaW50IHByb3Bl
cnR5SW5kZXgsIGJvb2wgZGlzYWJsZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
Q1NTU3R5bGU+JiByZXN1bHQpCiB7CiAgICAgSW5zcGVjdG9yQ1NTSWQgY29tcG91bmRJZChmdWxs
U3R5bGVJZCk7CiAgICAgQVNTRVJUKCFjb21wb3VuZElkLmlzRW1wdHkoKSk7CkBAIC03NjQsMTAg
Kzc2NCwxMCBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojp0b2dnbGVQcm9wZXJ0eShFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbgogICAgIGJvb2wgc3VjY2VzcyA9IG1f
ZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFRvZ2dsZVByb3Bl
cnR5QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3VuZElkLCBwcm9wZXJ0eUluZGV4
LCBkaXNhYmxlKSwgZWMpOwogICAgIGlmIChzdWNjZXNzKQogICAgICAgICByZXN1bHQgPSBpbnNw
ZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclN0eWxlKGluc3BlY3RvclN0eWxlU2hlZXQt
PnN0eWxlRm9ySWQoY29tcG91bmRJZCkpOwotICAgICplcnJvclN0cmluZyA9IEluc3BlY3RvckRP
TUFnZW50Ojp0b0Vycm9yU3RyaW5nKGVjKTsKKyAgICBlcnJvclN0cmluZyA9IEluc3BlY3RvckRP
TUFnZW50Ojp0b0Vycm9yU3RyaW5nKGVjKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6
c2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4mIGZ1bGxSdWxlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+JiByZXN1bHQpCit2b2lkIEluc3Bl
Y3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgZnVsbFJ1bGVJZCwgY29uc3QgU3RyaW5nJiBz
ZWxlY3RvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4mIHJlc3Vs
dCkKIHsKICAgICBJbnNwZWN0b3JDU1NJZCBjb21wb3VuZElkKGZ1bGxSdWxlSWQpOwogICAgIEFT
U0VSVCghY29tcG91bmRJZC5pc0VtcHR5KCkpOwpAQCAtNzgxLDEwICs3ODEsMTAgQEAgdm9pZCBJ
bnNwZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgY29uc3QgUmVmUHRyPEkKIAogICAgIGlmIChzdWNjZXNzKQogICAgICAgICByZXN1bHQgPSBp
bnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclJ1bGUoaW5zcGVjdG9yU3R5bGVTaGVl
dC0+cnVsZUZvcklkKGNvbXBvdW5kSWQpKTsKLSAgICAqZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JE
T01BZ2VudDo6dG9FcnJvclN0cmluZyhlYyk7CisgICAgZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JE
T01BZ2VudDo6dG9FcnJvclN0cmluZyhlYyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OmFkZFJ1bGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBpbnQgY29udGV4dE5vZGVJ
ZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6Q1NTUnVsZT4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUoRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBpbnQgY29udGV4dE5vZGVJZCwgY29uc3QgU3Ry
aW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4m
IHJlc3VsdCkKIHsKICAgICBOb2RlKiBub2RlID0gbV9kb21BZ2VudC0+YXNzZXJ0Tm9kZShlcnJv
clN0cmluZywgY29udGV4dE5vZGVJZCk7CiAgICAgaWYgKCFub2RlKQpAQCAtNzkyLDcgKzc5Miw3
IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBjb25zdCBpbnQgY29udGV4dE5vZGVJCiAKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBp
bnNwZWN0b3JTdHlsZVNoZWV0ID0gdmlhSW5zcGVjdG9yU3R5bGVTaGVldCgmbm9kZS0+ZG9jdW1l
bnQoKSwgdHJ1ZSk7CiAgICAgaWYgKCFpbnNwZWN0b3JTdHlsZVNoZWV0KSB7Ci0gICAgICAgICpl
cnJvclN0cmluZyA9ICJObyB0YXJnZXQgc3R5bGVzaGVldCBmb3VuZCI7CisgICAgICAgIGVycm9y
U3RyaW5nID0gQVNDSUlMaXRlcmFsKCJObyB0YXJnZXQgc3R5bGVzaGVldCBmb3VuZCIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC04MDEsNyArODAxLDcgQEAgdm9pZCBJbnNwZWN0b3JD
U1NBZ2VudDo6YWRkUnVsZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IGludCBjb250
ZXh0Tm9kZUkKICAgICBBZGRSdWxlQWN0aW9uKiByYXdBY3Rpb24gPSBhY3Rpb24uZ2V0KCk7CiAg
ICAgYm9vbCBzdWNjZXNzID0gbV9kb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKFdURjo6bW92
ZShhY3Rpb24pLCBlYyk7CiAgICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICAgICplcnJvclN0cmlu
ZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKGVjKTsKKyAgICAgICAgZXJyb3JT
dHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhlYyk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTgxMCw3ICs4MTAsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50
OjphZGRSdWxlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgaW50IGNvbnRleHROb2Rl
SQogICAgIHJlc3VsdCA9IGluc3BlY3RvclN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yUnVsZShy
dWxlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3VwcG9ydGVkQ1NTUHJvcGVy
dGllcyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4+JiBjc3NQcm9wZXJ0aWVzKQor
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3VwcG9ydGVkQ1NTUHJvcGVydGllcyhFcnJvclN0
cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4+JiBjc3NQcm9wZXJ0aWVzKQogewogICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNT
U1Byb3BlcnR5SW5mbz4+IHByb3BlcnRpZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz46OmNyZWF0ZSgpOwogICAg
IGZvciAoaW50IGkgPSBmaXJzdENTU1Byb3BlcnR5OyBpIDw9IGxhc3RDU1NQcm9wZXJ0eTsgKytp
KSB7CkBAIC04MzQsNyArODM0LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3VwcG9y
dGVkQ1NTUHJvcGVydGllcyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3IKICAgICBjc3NQ
cm9wZXJ0aWVzID0gcHJvcGVydGllcy5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NT
QWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9k
ZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBmb3JjZWRQc2V1ZG9DbGFzc2VzKQor
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Zm9yY2VQc2V1ZG9TdGF0ZShFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGZvcmNl
ZFBzZXVkb0NsYXNzZXMpCiB7CiAgICAgRWxlbWVudCogZWxlbWVudCA9IG1fZG9tQWdlbnQtPmFz
c2VydEVsZW1lbnQoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CiAgICAgaWYgKCFlbGVtZW50KQpAQCAt
ODU0LDcgKzg1NCw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjCiAgICAgZWxlbWVudC0+ZG9j
dW1lbnQoKS5zdHlsZVJlc29sdmVyQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29sbGVjdGlvbihFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGludCBkb2N1bWVudE5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6TmFtZWRGbG93Pj4mIHJl
c3VsdCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgZG9jdW1lbnROb2RlSWQsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6Ok5hbWVkRmxvdz4+
JiByZXN1bHQpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9kb21BZ2VudC0+YXNzZXJ0
RG9jdW1lbnQoZXJyb3JTdHJpbmcsIGRvY3VtZW50Tm9kZUlkKTsKICAgICBpZiAoIWRvY3VtZW50
KQpAQCAtODg5LDE1ICs4ODksMTUgQEAgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxl
KiBJbnNwZWN0b3JDU1NBZ2VudDo6YXNJbnNwZWN0b3JTdHlsZVNoZWV0KEVsZW0KICAgICByZXR1
cm4gaXQtPnZhbHVlLmdldCgpOwogfQogCi1FbGVtZW50KiBJbnNwZWN0b3JDU1NBZ2VudDo6ZWxl
bWVudEZvcklkKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCkKK0VsZW1lbnQq
IEluc3BlY3RvckNTU0FnZW50OjplbGVtZW50Rm9ySWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBpbnQgbm9kZUlkKQogewogICAgIE5vZGUqIG5vZGUgPSBtX2RvbUFnZW50LT5ub2RlRm9ySWQo
bm9kZUlkKTsKICAgICBpZiAoIW5vZGUpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIk5vIG5v
ZGUgd2l0aCBnaXZlbiBpZCBmb3VuZCI7CisgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRl
cmFsKCJObyBub2RlIHdpdGggZ2l2ZW4gaWQgZm91bmQiKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogICAgIGlmICghbm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7Ci0gICAgICAgICpl
cnJvclN0cmluZyA9ICJOb3QgYW4gZWxlbWVudCBub2RlIjsKKyAgICAgICAgZXJyb3JTdHJpbmcg
PSBBU0NJSUxpdGVyYWwoIk5vdCBhbiBlbGVtZW50IG5vZGUiKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7CkBAIC05OTAsMTEgKzk5
MCwxMSBAQCBJbnNwZWN0b3JTdHlsZVNoZWV0KiBJbnNwZWN0b3JDU1NBZ2VudDo6dmlhSW5zcGVj
dG9yU3R5bGVTaGVldChEb2N1bWVudCogZG9jdW1lbgogICAgIHJldHVybiBpbnNwZWN0b3JTdHls
ZVNoZWV0LmdldCgpOwogfQogCi1JbnNwZWN0b3JTdHlsZVNoZWV0KiBJbnNwZWN0b3JDU1NBZ2Vu
dDo6YXNzZXJ0U3R5bGVTaGVldEZvcklkKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBzdHlsZVNoZWV0SWQpCitJbnNwZWN0b3JTdHlsZVNoZWV0KiBJbnNwZWN0b3JDU1NB
Z2VudDo6YXNzZXJ0U3R5bGVTaGVldEZvcklkKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQpCiB7CiAgICAgSWRUb0luc3BlY3RvclN0eWxlU2hlZXQ6
Oml0ZXJhdG9yIGl0ID0gbV9pZFRvSW5zcGVjdG9yU3R5bGVTaGVldC5maW5kKHN0eWxlU2hlZXRJ
ZCk7CiAgICAgaWYgKGl0ID09IG1faWRUb0luc3BlY3RvclN0eWxlU2hlZXQuZW5kKCkpIHsKLSAg
ICAgICAgKmVycm9yU3RyaW5nID0gIk5vIHN0eWxlIHNoZWV0IHdpdGggZ2l2ZW4gaWQgZm91bmQi
OworICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiTm8gc3R5bGUgc2hlZXQgd2l0
aCBnaXZlbiBpZCBmb3VuZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAg
cmV0dXJuIGl0LT52YWx1ZS5nZXQoKTsKQEAgLTExMDEsNyArMTEwMSw3IEBAIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1
aWxkT2JqZWN0Rm9yCiAgICAgcmV0dXJuIGluc3BlY3RvclN0eWxlLT5idWlsZE9iamVjdEZvclN0
eWxlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpSZWdpb24+PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJh
eUZvclJlZ2lvbnMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBQYXNzUmVmUHRyPE5vZGVMaXN0
PiByZWdpb25MaXN0LCBpbnQgZG9jdW1lbnROb2RlSWQpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UmVnaW9uPj4gSW5zcGVj
dG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JSZWdpb25zKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgUGFzc1JlZlB0cjxOb2RlTGlzdD4gcmVnaW9uTGlzdCwgaW50IGRvY3VtZW50Tm9kZUlkKQog
ewogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OlJlZ2lvbj4+IHJlZ2lvbnMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJlZ2lvbj46OmNyZWF0ZSgpOwogCkBAIC0xMTM2LDcg
KzExMzYsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6UmVnaW9uPj4gSW5zcGVjdAogICAgIHJldHVybiByZWdpb25zLnJl
bGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6Ok5hbWVk
Rmxvdz4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgV2ViS2l0TmFtZWRGbG93KiB3ZWJraXROYW1lZEZsb3csIGludCBk
b2N1bWVudE5vZGVJZCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpOYW1l
ZEZsb3c+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvck5hbWVkRmxvdyhFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIFdlYktpdE5hbWVkRmxvdyogd2Via2l0TmFtZWRGbG93LCBpbnQg
ZG9jdW1lbnROb2RlSWQpCiB7CiAgICAgUmVmUHRyPE5vZGVMaXN0PiBjb250ZW50TGlzdCA9IHdl
YmtpdE5hbWVkRmxvdy0+Z2V0Q29udGVudCgpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxpbnQ+PiBjb250ZW50ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50
Pjo6Y3JlYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5oCmluZGV4IGVkY2FmMTcyZTUyNGQ2YjlhODIxYWYyMTdlMmRhZGE3NDY0MDhhMjQuLjA4YTg4
OGJiYTZjYzJmZGU4ZmUwZWI5MzQ0ZDlkM2E5NzkwNDI3YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC05OCw4ICs5OCw4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkQWdlbnQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRp
c2FibGUoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVy
cm9yU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJp
bmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc2V0KCk7CiAgICAgdm9pZCBtZWRpYVF1ZXJ5UmVz
dWx0Q2hhbmdlZCgpOwogICAgIHZvaWQgZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50KiwgV2Vi
S2l0TmFtZWRGbG93Kik7CkBAIC0xMDksMjEgKzEwOSwyMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aWRSZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50KiwgV2ViS2l0TmFtZWRG
bG93KiwgTm9kZSogY29udGVudEVsZW1lbnQsIE5vZGUqIG5leHRDb250ZW50RWxlbWVudCA9IG51
bGxwdHIpOwogICAgIHZvaWQgZGlkVW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KERv
Y3VtZW50KiwgV2ViS2l0TmFtZWRGbG93KiwgTm9kZSogY29udGVudEVsZW1lbnQpOwogCi0gICAg
dmlydHVhbCB2b2lkIGdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5v
ZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4mKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0SW5saW5lU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiYgaW5saW5lU3R5bGUs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiYgYXR0cmlidXRlcykg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9y
U3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgYm9vbCogaW5jbHVkZVBzZXVkbywgY29uc3QgYm9v
bCogaW5jbHVkZUluaGVyaXRlZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4mIG1hdGNoZWRDU1NSdWxlcywgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
UHNldWRvSWRNYXRjaGVzPj4mIHBzZXVkb0lkTWF0Y2hlcywgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRy
eT4+JiBpbmhlcml0ZWRFbnRyaWVzKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QWxs
U3R5bGVTaGVldHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPj4mIHN0eWxl
U2hlZXRJbmZvcykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldFN0eWxlU2hlZXQoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+JiByZXN1bHQpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgc3R5bGVTaGVldElkLCBTdHJpbmcqIHJlc3VsdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzdHlsZVNo
ZWV0SWQsIGNvbnN0IFN0cmluZyYgdGV4dCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFN0eWxlVGV4dChFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4mIHN0eWxlSWQsIGNvbnN0IFN0cmluZyYgdGV4dCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q+JiBzdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwgY29uc3QgU3Ry
aW5nJiB0ZXh0LCBib29sIG92ZXJ3cml0ZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6Q1NTU3R5bGU+JiByZXN1bHQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVQ
cm9wZXJ0eShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4mIHN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4LCBib29sIGRpc2FibGUsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgcnVsZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVj
dG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkUnVsZShFcnJvclN0cmluZyosIGludCBjb250
ZXh0Tm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0U3VwcG9ydGVkQ1NTUHJvcGVydGllcyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5SW5m
bz4+JiByZXN1bHQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBmb3JjZVBzZXVkb1N0YXRl
KEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yQXJyYXk+JiBmb3JjZWRQc2V1ZG9DbGFzc2VzKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0TmFtZWRGbG93Q29sbGVjdGlvbihFcnJvclN0cmluZyosIGludCBkb2N1bWVudE5vZGVJ
ZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6TmFtZWRGbG93Pj4mIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGdl
dENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29t
cHV0ZWRTdHlsZVByb3BlcnR5Pj4mKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5s
aW5lU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiYgaW5saW5lU3R5bGUsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiYgYXR0cmlidXRlcykgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIGdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5v
ZGVJZCwgY29uc3QgYm9vbCogaW5jbHVkZVBzZXVkbywgY29uc3QgYm9vbCogaW5jbHVkZUluaGVy
aXRlZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6UnVsZU1hdGNoPj4mIG1hdGNoZWRDU1NSdWxlcywgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UHNldWRvSWRNYXRjaGVz
Pj4mIHBzZXVkb0lkTWF0Y2hlcywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4+JiBpbmhlcml0ZWRF
bnRyaWVzKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0QWxsU3R5bGVTaGVldHMoRXJy
b3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPj4mIHN0eWxlU2hlZXRJbmZvcykgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGdldFN0eWxlU2hlZXQoRXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
Q1NTU3R5bGVTaGVldEJvZHk+JiByZXN1bHQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBn
ZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElk
LCBTdHJpbmcqIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldFN0eWxlU2hl
ZXRUZXh0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIGNvbnN0IFN0
cmluZyYgdGV4dCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldFN0eWxlVGV4dChFcnJv
clN0cmluZyYsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHN0eWxl
SWQsIGNvbnN0IFN0cmluZyYgdGV4dCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
Q1NTU3R5bGU+JiByZXN1bHQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9wZXJ0
eVRleHQoRXJyb3JTdHJpbmcmLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+JiBzdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBib29s
IG92ZXJ3cml0ZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+JiBy
ZXN1bHQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVQcm9wZXJ0eShFcnJvclN0
cmluZyYsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHN0eWxlSWQs
IGludCBwcm9wZXJ0eUluZGV4LCBib29sIGRpc2FibGUsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nJiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiYgcnVsZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgYWRkUnVsZShFcnJvclN0cmluZyYsIGludCBjb250ZXh0Tm9kZUlkLCBjb25z
dCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NS
dWxlPiYgcmVzdWx0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0U3VwcG9ydGVkQ1NT
UHJvcGVydGllcyhFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4+JiByZXN1bHQpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBmb3JjZVBzZXVkb1N0YXRlKEVycm9yU3RyaW5nJiwg
aW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiBmb3Jj
ZWRQc2V1ZG9DbGFzc2VzKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0TmFtZWRGbG93
Q29sbGVjdGlvbihFcnJvclN0cmluZyYsIGludCBkb2N1bWVudE5vZGVJZCwgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6TmFtZWRGbG93
Pj4mIHJlc3VsdCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgY2xhc3MgU3R5bGVTaGVldEFj
dGlvbjsKQEAgLTE0MiwxMyArMTQyLDEzIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlc2V0Tm9u
UGVyc2lzdGVudERhdGEoKTsKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUq
IGFzSW5zcGVjdG9yU3R5bGVTaGVldChFbGVtZW50KiBlbGVtZW50KTsKLSAgICBFbGVtZW50KiBl
bGVtZW50Rm9ySWQoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkKTsKKyAgICBFbGVtZW50KiBlbGVt
ZW50Rm9ySWQoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkKTsKICAgICBpbnQgZG9jdW1lbnROb2Rl
V2l0aFJlcXVlc3RlZEZsb3dzSWQoRG9jdW1lbnQqKTsKICAgICB2b2lkIGNvbGxlY3RTdHlsZVNo
ZWV0cyhDU1NTdHlsZVNoZWV0KiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPiopOwogCiAgICAgSW5zcGVjdG9y
U3R5bGVTaGVldCogYmluZFN0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCopOwogICAgIEluc3BlY3Rv
clN0eWxlU2hlZXQqIHZpYUluc3BlY3RvclN0eWxlU2hlZXQoRG9jdW1lbnQqLCBib29sIGNyZWF0
ZUlmQWJzZW50KTsKLSAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBhc3NlcnRTdHlsZVNoZWV0Rm9y
SWQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmKTsKKyAgICBJbnNwZWN0b3JTdHlsZVNoZWV0
KiBhc3NlcnRTdHlsZVNoZWV0Rm9ySWQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKICAg
ICBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW4gZGV0ZWN0T3JpZ2lu
KENTU1N0eWxlU2hlZXQqIHBhZ2VTdHlsZVNoZWV0LCBEb2N1bWVudCogb3duZXJEb2N1bWVudCk7
CiAKICAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gYnVp
bGRPYmplY3RGb3JSdWxlKFN0eWxlUnVsZSosIFN0eWxlUmVzb2x2ZXImKTsKQEAgLTE1Niw4ICsx
NTYsOCBAQCBwcml2YXRlOgogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPj4gYnVpbGRBcnJheUZvclJ1bGVM
aXN0KENTU1J1bGVMaXN0Kik7CiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IGJ1aWxkQXJyYXlGb3JN
YXRjaGVkUnVsZUxpc3QoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiYsIFN0eWxlUmVz
b2x2ZXImLCBFbGVtZW50Kik7CiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OkNTU1N0eWxlPiBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShFbGVtZW50Kik7Ci0g
ICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OlJlZ2lvbj4+IGJ1aWxkQXJyYXlGb3JSZWdpb25zKEVycm9yU3RyaW5nKiwgUGFz
c1JlZlB0cjxOb2RlTGlzdD4sIGludCBkb2N1bWVudE5vZGVJZCk7Ci0gICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6Ok5hbWVkRmxvdz4gYnVpbGRPYmplY3RGb3JOYW1lZEZs
b3coRXJyb3JTdHJpbmcqLCBXZWJLaXROYW1lZEZsb3cqLCBpbnQgZG9jdW1lbnROb2RlSWQpOwor
ICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpSZWdpb24+PiBidWlsZEFycmF5Rm9yUmVnaW9ucyhFcnJvclN0cmluZyYsIFBh
c3NSZWZQdHI8Tm9kZUxpc3Q+LCBpbnQgZG9jdW1lbnROb2RlSWQpOworICAgIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpOYW1lZEZsb3c+IGJ1aWxkT2JqZWN0Rm9yTmFtZWRG
bG93KEVycm9yU3RyaW5nJiwgV2ViS2l0TmFtZWRGbG93KiwgaW50IGRvY3VtZW50Tm9kZUlkKTsK
IAogICAgIC8vIEluc3BlY3RvckRPTUFnZW50OjpET01MaXN0ZW5lciBpbXBsZW1lbnRhdGlvbgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVEb2N1bWVudChEb2N1bWVudCopIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmlu
ZGV4IDViNmViMjUzNWJlYmQwODRiNTM3ZTIyMmYxNjRjYTY5OWJiZTBjYjEuLjI4MTQ2YmM2ZjQ3
MzNlM2EwOGNiZWU5ZmQ0ODUxOTkzNzdjYzMyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTM2Miw4ICszNjIsOCBAQCB2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aGlkZUhpZ2hsaWdo
dCgpCiB7Ci0gICAgRXJyb3JTdHJpbmcgZXJyb3I7Ci0gICAgbV9kb21BZ2VudC0+aGlkZUhpZ2hs
aWdodCgmZXJyb3IpOworICAgIEVycm9yU3RyaW5nIHVudXNlZDsKKyAgICBtX2RvbUFnZW50LT5o
aWRlSGlnaGxpZ2h0KHVudXNlZCk7CiB9CiAKIE5vZGUqIEluc3BlY3RvckNvbnRyb2xsZXI6Omhp
Z2hsaWdodGVkTm9kZSgpIGNvbnN0CkBAIC0zOTAsMjAgKzM5MCwyMiBAQCBib29sIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OnByb2ZpbGVyRW5hYmxlZCgpIGNvbnN0CiAKIHZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6c2V0UHJvZmlsZXJFbmFibGVkKGJvb2wgZW5hYmxlKQogeworICAgIEVycm9yU3Ry
aW5nIHVudXNlZDsKKwogICAgIGlmIChlbmFibGUpIHsKICAgICAgICAgbV9pbnN0cnVtZW50aW5n
QWdlbnRzLT5zZXRQZXJzaXN0ZW50SW5zcGVjdG9yVGltZWxpbmVBZ2VudChtX3RpbWVsaW5lQWdl
bnQpOwotICAgICAgICBtX3RpbWVsaW5lQWdlbnQtPnN0YXJ0KCk7CisgICAgICAgIG1fdGltZWxp
bmVBZ2VudC0+c3RhcnQodW51c2VkKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2luc3RydW1l
bnRpbmdBZ2VudHMtPnNldFBlcnNpc3RlbnRJbnNwZWN0b3JUaW1lbGluZUFnZW50KG51bGxwdHIp
OwotICAgICAgICBtX3RpbWVsaW5lQWdlbnQtPnN0b3AoKTsKKyAgICAgICAgbV90aW1lbGluZUFn
ZW50LT5zdG9wKHVudXNlZCk7CiAgICAgfQogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OnJlc3VtZSgpCiB7CiAgICAgaWYgKG1fZGVidWdnZXJBZ2VudCkgewotICAgICAgICBFcnJvclN0
cmluZyBlcnJvcjsKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5yZXN1bWUoJmVycm9yKTsKKyAg
ICAgICAgRXJyb3JTdHJpbmcgdW51c2VkOworICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPnJlc3Vt
ZSh1bnVzZWQpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHAKaW5kZXggZDI0OWI5ZTdjMTQxMWNhNDg0M2FkYjMyNDI1M2JjMjk2
MzVhNDYyOC4uMzUxODUwNzY2NzU0MTFjZjhjMjgwOTAwMTZjYTdmMDJmMWFkNDlkYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0yNTEs
OSArMjUxLDkgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikKICAgICBtX2hpc3RvcnkucmVzZXQo
KTsKICAgICBtX2RvbUVkaXRvci5yZXNldCgpOwogCi0gICAgRXJyb3JTdHJpbmcgZXJyb3I7Ci0g
ICAgc2V0U2VhcmNoaW5nRm9yTm9kZSgmZXJyb3IsIGZhbHNlLCAwKTsKLSAgICBoaWRlSGlnaGxp
Z2h0KCZlcnJvcik7CisgICAgRXJyb3JTdHJpbmcgdW51c2VkOworICAgIHNldFNlYXJjaGluZ0Zv
ck5vZGUodW51c2VkLCBmYWxzZSwgMCk7CisgICAgaGlkZUhpZ2hsaWdodCh1bnVzZWQpOwogCiAg
ICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JET01BZ2VudCgwKTsKICAgICBt
X2RvY3VtZW50UmVxdWVzdGVkID0gZmFsc2U7CkBAIC0zNjAsNzAgKzM2MCw3MCBAQCB2b2lkIElu
c3BlY3RvckRPTUFnZW50Ojp1bmJpbmQoTm9kZSogbm9kZSwgTm9kZVRvSWRNYXAqIG5vZGVzTWFw
KQogICAgIH0KIH0KIAotTm9kZSogSW5zcGVjdG9yRE9NQWdlbnQ6OmFzc2VydE5vZGUoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkKQorTm9kZSogSW5zcGVjdG9yRE9NQWdlbnQ6
OmFzc2VydE5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkKQogewogICAg
IE5vZGUqIG5vZGUgPSBub2RlRm9ySWQobm9kZUlkKTsKICAgICBpZiAoIW5vZGUpIHsKLSAgICAg
ICAgKmVycm9yU3RyaW5nID0gIkNvdWxkIG5vdCBmaW5kIG5vZGUgd2l0aCBnaXZlbiBpZCI7Cisg
ICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJDb3VsZCBub3QgZmluZCBub2RlIHdp
dGggZ2l2ZW4gaWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIHJldHVy
biBub2RlOwogfQogCi1Eb2N1bWVudCogSW5zcGVjdG9yRE9NQWdlbnQ6OmFzc2VydERvY3VtZW50
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCkKK0RvY3VtZW50KiBJbnNwZWN0
b3JET01BZ2VudDo6YXNzZXJ0RG9jdW1lbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQg
bm9kZUlkKQogewogICAgIE5vZGUqIG5vZGUgPSBhc3NlcnROb2RlKGVycm9yU3RyaW5nLCBub2Rl
SWQpOwogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFp
czxEb2N1bWVudD4obm9kZSkpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIkRvY3VtZW50IGlz
IG5vdCBhdmFpbGFibGUiOworICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiRG9j
dW1lbnQgaXMgbm90IGF2YWlsYWJsZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAgICAgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50Pihub2RlKTsKIH0KIAotRWxlbWVudCogSW5z
cGVjdG9yRE9NQWdlbnQ6OmFzc2VydEVsZW1lbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBp
bnQgbm9kZUlkKQorRWxlbWVudCogSW5zcGVjdG9yRE9NQWdlbnQ6OmFzc2VydEVsZW1lbnQoRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkKQogewogICAgIE5vZGUqIG5vZGUgPSBh
c3NlcnROb2RlKGVycm9yU3RyaW5nLCBub2RlSWQpOwogICAgIGlmICghbm9kZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkpIHsKLSAgICAg
ICAgKmVycm9yU3RyaW5nID0gIk5vZGUgaXMgbm90IGFuIEVsZW1lbnQiOworICAgICAgICBlcnJv
clN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiTm9kZSBpcyBub3QgYW4gRWxlbWVudCIpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgcmV0dXJuIHRvRWxlbWVudChub2RlKTsKIH0K
IAotTm9kZSogSW5zcGVjdG9yRE9NQWdlbnQ6OmFzc2VydEVkaXRhYmxlTm9kZShFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQpCitOb2RlKiBJbnNwZWN0b3JET01BZ2VudDo6YXNz
ZXJ0RWRpdGFibGVOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCkKIHsK
ICAgICBOb2RlKiBub2RlID0gYXNzZXJ0Tm9kZShlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBp
ZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChub2RlLT5pc0luU2hh
ZG93VHJlZSgpKSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9ICJDYW4gbm90IGVkaXQgbm9kZXMg
ZnJvbSBzaGFkb3cgdHJlZXMiOworICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgi
Q2FuIG5vdCBlZGl0IG5vZGVzIGZyb20gc2hhZG93IHRyZWVzIik7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KICAgICByZXR1cm4gbm9kZTsKIH0KIAotRWxlbWVudCogSW5zcGVjdG9y
RE9NQWdlbnQ6OmFzc2VydEVkaXRhYmxlRWxlbWVudChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGludCBub2RlSWQpCitFbGVtZW50KiBJbnNwZWN0b3JET01BZ2VudDo6YXNzZXJ0RWRpdGFibGVF
bGVtZW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCkKIHsKICAgICBFbGVt
ZW50KiBlbGVtZW50ID0gYXNzZXJ0RWxlbWVudChlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBp
ZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChlbGVtZW50LT5p
c0luU2hhZG93VHJlZSgpKSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9ICJDYW4gbm90IGVkaXQg
ZWxlbWVudHMgZnJvbSBzaGFkb3cgdHJlZXMiOworICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJ
TGl0ZXJhbCgiQ2FuIG5vdCBlZGl0IGVsZW1lbnRzIGZyb20gc2hhZG93IHRyZWVzIik7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICByZXR1cm4gZWxlbWVudDsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0RG9jdW1lbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPiYgcm9vdCkKK3ZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OmdldERvY3VtZW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4mIHJvb3QpCiB7CiAgICAgbV9kb2N1
bWVudFJlcXVlc3RlZCA9IHRydWU7CiAKICAgICBpZiAoIW1fZG9jdW1lbnQpIHsKLSAgICAgICAg
KmVycm9yU3RyaW5nID0gIkRvY3VtZW50IGlzIG5vdCBhdmFpbGFibGUiOworICAgICAgICBlcnJv
clN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiRG9jdW1lbnQgaXMgbm90IGF2YWlsYWJsZSIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NzIsMTMgKzQ3MiwxMyBAQCB2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpkaXNjYXJkQmluZGluZ3MoKQogICAgIG1fbm9kZUdyb3VwVG9CYWNrZW5kSWRN
YXAuY2xlYXIoKTsKIH0KIAotaW50IEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVRvRnJvbnRl
bmQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgZG9jdW1lbnROb2RlSWQsIE5vZGUqIG5v
ZGVUb1B1c2gpCitpbnQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlVG9Gcm9udGVuZChFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBkb2N1bWVudE5vZGVJZCwgTm9kZSogbm9kZVRvUHVz
aCkKIHsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBhc3NlcnREb2N1bWVudChlcnJvclN0cmlu
ZywgZG9jdW1lbnROb2RlSWQpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiAw
OwogICAgIGlmICgmbm9kZVRvUHVzaC0+ZG9jdW1lbnQoKSAhPSBkb2N1bWVudCkgewotICAgICAg
ICAqZXJyb3JTdHJpbmcgPSAiTm9kZSBpcyBub3QgcGFydCBvZiB0aGUgZG9jdW1lbnQgd2l0aCBn
aXZlbiBpZCI7CisgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJOb2RlIGlzIG5v
dCBwYXJ0IG9mIHRoZSBkb2N1bWVudCB3aXRoIGdpdmVuIGlkIik7CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KIApAQCAtNDk2LDcgKzQ5Niw3IEBAIE5vZGUqIEluc3BlY3RvckRPTUFnZW50Ojpu
b2RlRm9ySWQoaW50IGlkKQogICAgIHJldHVybiAwOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpyZXF1ZXN0Q2hpbGROb2RlcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2Rl
SWQsIGNvbnN0IGludCogZGVwdGgpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZXF1ZXN0Q2hp
bGROb2RlcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IGludCog
ZGVwdGgpCiB7CiAgICAgaW50IHNhbml0aXplZERlcHRoOwogCkBAIC01MDcsMTQgKzUwNywxNCBA
QCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZXF1ZXN0Q2hpbGROb2RlcyhFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGludCBub2RlSWQsCiAgICAgZWxzZSBpZiAoKmRlcHRoID4gMCkKICAgICAg
ICAgc2FuaXRpemVkRGVwdGggPSAqZGVwdGg7CiAgICAgZWxzZSB7Ci0gICAgICAgICplcnJvclN0
cmluZyA9ICJQbGVhc2UgcHJvdmlkZSBhIHBvc2l0aXZlIGludGVnZXIgYXMgYSBkZXB0aCBvciAt
MSBmb3IgZW50aXJlIHN1YnRyZWUiOworICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJh
bCgiUGxlYXNlIHByb3ZpZGUgYSBwb3NpdGl2ZSBpbnRlZ2VyIGFzIGEgZGVwdGggb3IgLTEgZm9y
IGVudGlyZSBzdWJ0cmVlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBwdXNoQ2hp
bGROb2Rlc1RvRnJvbnRlbmQobm9kZUlkLCBzYW5pdGl6ZWREZXB0aCk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OnF1ZXJ5U2VsZWN0b3IoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBp
bnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgaW50KiBlbGVtZW50SWQpCit2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpxdWVyeVNlbGVjdG9yKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIGludCogZWxlbWVudElkKQog
ewogICAgICplbGVtZW50SWQgPSAwOwogICAgIE5vZGUqIG5vZGUgPSBhc3NlcnROb2RlKGVycm9y
U3RyaW5nLCBub2RlSWQpOwpAQCAtNTI4LDcgKzUyOCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OnF1ZXJ5U2VsZWN0b3IoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBj
b25zCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1l
bnQgPSB0b0NvbnRhaW5lck5vZGUobm9kZSktPnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3JzLCBlYyk7
CiAgICAgaWYgKGVjKSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9ICJET00gRXJyb3Igd2hpbGUg
cXVlcnlpbmciOworICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiRE9NIEVycm9y
IHdoaWxlIHF1ZXJ5aW5nIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTUzNiw3ICs1
MzYsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpxdWVyeVNlbGVjdG9yKEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29ucwogICAgICAgICAqZWxlbWVudElkID0gcHVz
aE5vZGVQYXRoVG9Gcm9udGVuZChlbGVtZW50LmdldCgpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6cXVlcnlTZWxlY3RvckFsbChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBu
b2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8aW50Pj4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnF1ZXJ5U2Vs
ZWN0b3JBbGwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJp
bmcmIHNlbGVjdG9ycywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+JiBy
ZXN1bHQpCiB7CiAgICAgTm9kZSogbm9kZSA9IGFzc2VydE5vZGUoZXJyb3JTdHJpbmcsIG5vZGVJ
ZCk7CiAgICAgaWYgKCFub2RlKQpAQCAtNTQ5LDcgKzU0OSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OnF1ZXJ5U2VsZWN0b3JBbGwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9k
ZUlkLCBjCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgUmVmUHRyPE5vZGVMaXN0PiBu
b2RlcyA9IHRvQ29udGFpbmVyTm9kZShub2RlKS0+cXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcnMs
IGVjKTsKICAgICBpZiAoZWMpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIkRPTSBFcnJvciB3
aGlsZSBxdWVyeWluZyI7CisgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJET00g
RXJyb3Igd2hpbGUgcXVlcnlpbmciKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjMw
LDcgKzYzMCw3IEBAIEJhY2tlbmROb2RlSWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmJhY2tlbmROb2Rl
SWRGb3JOb2RlKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gaWQ7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlbGVhc2VCYWNrZW5kTm9kZUlkcyhFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgbm9kZUdyb3VwKQordm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6cmVsZWFzZUJhY2tlbmROb2RlSWRzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiBub2RlR3JvdXApCiB7CiAgICAgaWYgKG1fbm9kZUdyb3VwVG9CYWNrZW5k
SWRNYXAuY29udGFpbnMobm9kZUdyb3VwKSkgewogICAgICAgICBOb2RlVG9CYWNrZW5kSWRNYXAm
IG1hcCA9IG1fbm9kZUdyb3VwVG9CYWNrZW5kSWRNYXAuZmluZChub2RlR3JvdXApLT52YWx1ZTsK
QEAgLTYzOSwxMCArNjM5LDEwIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlbGVhc2VCYWNr
ZW5kTm9kZUlkcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0CiAgICAgICAgIG1f
bm9kZUdyb3VwVG9CYWNrZW5kSWRNYXAucmVtb3ZlKG5vZGVHcm91cCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgKmVycm9yU3RyaW5nID0gIkdyb3VwIG5hbWUgbm90IGZvdW5kIjsKKyAg
ICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiR3JvdXAgbmFtZSBub3QgZm91bmQiKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0QXR0cmlidXRlVmFsdWUoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBpbnQgZWxlbWVudElkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgdmFsdWUpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRBdHRyaWJ1dGVWYWx1ZShF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gYXNzZXJ0
RWRpdGFibGVFbGVtZW50KGVycm9yU3RyaW5nLCBlbGVtZW50SWQpOwogICAgIGlmICghZWxlbWVu
dCkKQEAgLTY1MSw3ICs2NTEsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRBdHRyaWJ1
dGVWYWx1ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBlbGVtZW50SQogICAgIG1fZG9t
RWRpdG9yLT5zZXRBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUsIGVycm9yU3RyaW5nKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0QXR0cmlidXRlc0FzVGV4dChFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGludCBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29u
c3QgU3RyaW5nKiBjb25zdCBuYW1lKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0QXR0cmli
dXRlc0FzVGV4dChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBlbGVtZW50SWQsIGNvbnN0
IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nKiBjb25zdCBuYW1lKQogewogICAgIEVsZW1lbnQq
IGVsZW1lbnQgPSBhc3NlcnRFZGl0YWJsZUVsZW1lbnQoZXJyb3JTdHJpbmcsIGVsZW1lbnRJZCk7
CiAgICAgaWYgKCFlbGVtZW50KQpAQCAtNjYxLDEzICs2NjEsMTMgQEAgdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6c2V0QXR0cmlidXRlc0FzVGV4dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGlu
dCBlbGVtZW4KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBwYXJzZWRFbGVtZW50Lmdl
dCgpLT5zZXRJbm5lckhUTUwoIjxzcGFuICIgKyB0ZXh0ICsgIj48L3NwYW4+IiwgZWMpOwogICAg
IGlmIChlYykgewotICAgICAgICAqZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9F
cnJvclN0cmluZyhlYyk7CisgICAgICAgIGVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6
OnRvRXJyb3JTdHJpbmcoZWMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgTm9kZSog
Y2hpbGQgPSBwYXJzZWRFbGVtZW50LT5maXJzdENoaWxkKCk7CiAgICAgaWYgKCFjaGlsZCkgewot
ICAgICAgICAqZXJyb3JTdHJpbmcgPSAiQ291bGQgbm90IHBhcnNlIHZhbHVlIGFzIGF0dHJpYnV0
ZXMiOworICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IHBhcnNl
IHZhbHVlIGFzIGF0dHJpYnV0ZXMiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjg5
LDcgKzY4OSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEF0dHJpYnV0ZXNBc1RleHQo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgZWxlbWVuCiAgICAgICAgIG1fZG9tRWRpdG9y
LT5yZW1vdmVBdHRyaWJ1dGUoZWxlbWVudCwgKm5hbWUsIGVycm9yU3RyaW5nKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6cmVtb3ZlQXR0cmlidXRlKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgaW50IGVsZW1lbnRJZCwgY29uc3QgU3RyaW5nJiBuYW1lKQordm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6cmVtb3ZlQXR0cmlidXRlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGVs
ZW1lbnRJZCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBh
c3NlcnRFZGl0YWJsZUVsZW1lbnQoZXJyb3JTdHJpbmcsIGVsZW1lbnRJZCk7CiAgICAgaWYgKCFl
bGVtZW50KQpAQCAtNjk4LDcgKzY5OCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlbW92
ZUF0dHJpYnV0ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBlbGVtZW50SWQsCiAgICAg
bV9kb21FZGl0b3ItPnJlbW92ZUF0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCBlcnJvclN0cmluZyk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlbW92ZU5vZGUoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBpbnQgbm9kZUlkKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVtb3ZlTm9k
ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQpCiB7CiAgICAgTm9kZSogbm9k
ZSA9IGFzc2VydEVkaXRhYmxlTm9kZShlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBpZiAoIW5v
ZGUpCkBAIC03MDYsMTQgKzcwNiwxNCBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZW1vdmVO
b2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCkKIAogICAgIENvbnRhaW5l
ck5vZGUqIHBhcmVudE5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CiAgICAgaWYgKCFwYXJlbnRO
b2RlKSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9ICJDYW4gbm90IHJlbW92ZSBkZXRhY2hlZCBu
b2RlIjsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkNhbiBub3QgcmVtb3Zl
IGRldGFjaGVkIG5vZGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fZG9tRWRp
dG9yLT5yZW1vdmVDaGlsZChwYXJlbnROb2RlLCBub2RlLCBlcnJvclN0cmluZyk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldE5vZGVOYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB0YWdOYW1lLCBpbnQqIG5ld0lkKQordm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6c2V0Tm9kZU5hbWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBp
bnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHRhZ05hbWUsIGludCogbmV3SWQpCiB7CiAgICAgKm5l
d0lkID0gMDsKIApAQCAtNzQ4LDcgKzc0OCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNl
dE5vZGVOYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QKICAg
ICAgICAgcHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKCpuZXdJZCk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmdldE91dGVySFRNTChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBu
b2RlSWQsIFdURjo6U3RyaW5nKiBvdXRlckhUTUwpCit2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpn
ZXRPdXRlckhUTUwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBXVEY6OlN0
cmluZyogb3V0ZXJIVE1MKQogewogICAgIE5vZGUqIG5vZGUgPSBhc3NlcnROb2RlKGVycm9yU3Ry
aW5nLCBub2RlSWQpOwogICAgIGlmICghbm9kZSkKQEAgLTc1Nyw3ICs3NTcsNyBAQCB2b2lkIElu
c3BlY3RvckRPTUFnZW50OjpnZXRPdXRlckhUTUwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBp
bnQgbm9kZUlkLCBXVEY6OgogICAgICpvdXRlckhUTUwgPSBjcmVhdGVNYXJrdXAoKm5vZGUpOwog
fQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRPdXRlckhUTUwoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIG91dGVySFRNTCkKK3ZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OnNldE91dGVySFRNTChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGlu
dCBub2RlSWQsIGNvbnN0IFN0cmluZyYgb3V0ZXJIVE1MKQogewogICAgIGlmICghbm9kZUlkKSB7
CiAgICAgICAgIERPTVBhdGNoU3VwcG9ydCBkb21QYXRjaFN1cHBvcnQobV9kb21FZGl0b3IuZ2V0
KCksIG1fZG9jdW1lbnQuZ2V0KCkpOwpAQCAtNzcxLDcgKzc3MSw3IEBAIHZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OnNldE91dGVySFRNTChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2Rl
SWQsIGNvbnN0CiAKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBub2RlLT5kb2N1bWVudCgpOwog
ICAgIGlmICghZG9jdW1lbnQuaXNIVE1MRG9jdW1lbnQoKSAmJiAhZG9jdW1lbnQuaXNYSFRNTERv
Y3VtZW50KCkgJiYgIWRvY3VtZW50LmlzU1ZHRG9jdW1lbnQoKSkgewotICAgICAgICAqZXJyb3JT
dHJpbmcgPSAiTm90IGFuIEhUTUwvWE1MIGRvY3VtZW50IjsKKyAgICAgICAgZXJyb3JTdHJpbmcg
PSBBU0NJSUxpdGVyYWwoIk5vdCBhbiBIVE1ML1hNTCBkb2N1bWVudCIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC03OTEsMjEgKzc5MSwyMSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50
OjpzZXRPdXRlckhUTUwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25z
dAogICAgICAgICBwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQobmV3SWQpOwogfQogCi12b2lkIElu
c3BlY3RvckRPTUFnZW50OjpzZXROb2RlVmFsdWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBp
bnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
c2V0Tm9kZVZhbHVlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIHsKICAgICBOb2RlKiBub2RlID0gYXNzZXJ0RWRpdGFibGVOb2RlKGVy
cm9yU3RyaW5nLCBub2RlSWQpOwogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKG5vZGUtPm5vZGVUeXBlKCkgIT0gTm9kZTo6VEVYVF9OT0RFKSB7Ci0gICAgICAgICpl
cnJvclN0cmluZyA9ICJDYW4gb25seSBzZXQgdmFsdWUgb2YgdGV4dCBub2RlcyI7CisgICAgICAg
IGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJDYW4gb25seSBzZXQgdmFsdWUgb2YgdGV4dCBu
b2RlcyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9kb21FZGl0b3ItPnJlcGxh
Y2VXaG9sZVRleHQoZG93bmNhc3Q8VGV4dD4obm9kZSksIHZhbHVlLCBlcnJvclN0cmluZyk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3Jv
dXAsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpET006OkV2ZW50TGlzdGVuZXI+PiYgbGlzdGVuZXJzQXJyYXkpCit2b2lkIEluc3BlY3RvckRP
TUFnZW50OjpnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVy
Pj4mIGxpc3RlbmVyc0FycmF5KQogewogICAgIGxpc3RlbmVyc0FycmF5ID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPjo6
Y3JlYXRlKCk7CiAgICAgTm9kZSogbm9kZSA9IGFzc2VydE5vZGUoZXJyb3JTdHJpbmcsIG5vZGVJ
ZCk7CkBAIC04NzIsNyArODcyLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0RXZlbnRM
aXN0ZW5lcnMoTm9kZSogbm9kZSwgVmVjdG9yPEV2ZW50TGlzdGVuZXJJbmZvPiYKICAgICB9CiB9
CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzRm9y
Tm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiYgYXhQcm9wZXJ0aWVz
KQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0QWNjZXNzaWJpbGl0eVByb3BlcnRpZXNGb3JO
b2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+JiBheFByb3BlcnRpZXMp
CiB7CiAgICAgTm9kZSogbm9kZSA9IGFzc2VydE5vZGUoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CiAg
ICAgaWYgKCFub2RlKQpAQCAtODgxLDcgKzg4MSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OmdldEFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJp
CiAgICAgYXhQcm9wZXJ0aWVzID0gYnVpbGRPYmplY3RGb3JBY2Nlc3NpYmlsaXR5UHJvcGVydGll
cyhub2RlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cGVyZm9ybVNlYXJjaChFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVy
eSwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5Piogbm9kZUlkcywgU3RyaW5nKiBzZWFyY2hJ
ZCwgaW50KiByZXN1bHRDb3VudCkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnBlcmZvcm1TZWFy
Y2goRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHdoaXRlc3BhY2VUcmlt
bWVkUXVlcnksIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIG5vZGVJZHMsIFN0cmluZyog
c2VhcmNoSWQsIGludCogcmVzdWx0Q291bnQpCiB7CiAgICAgLy8gRklYTUU6IFNlYXJjaCB3b3Jr
cyB3aXRoIG5vZGUgZ3JhbnVsYXJpdHkgLSBudW1iZXIgb2YgbWF0Y2hlcyB3aXRoaW4gbm9kZSBp
cyBub3QgY2FsY3VsYXRlZC4KICAgICBJbnNwZWN0b3JOb2RlRmluZGVyIGZpbmRlcih3aGl0ZXNw
YWNlVHJpbW1lZFF1ZXJ5KTsKQEAgLTg5MSwxOCArODkxLDE4IEBAIHZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OnBlcmZvcm1TZWFyY2goRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHdoCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBub2RlSWRzUmVmLT5sZW5n
dGgoKTsgKytpKSB7CiAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IG5vZGVWYWx1
ZSA9IG5vZGVJZHNSZWYtPmdldChpKTsKICAgICAgICAgICAgIGlmICghbm9kZVZhbHVlKSB7Ci0g
ICAgICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gIkludmFsaWQgbm9kZUlkcyBpdGVtLiI7Cisg
ICAgICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkludmFsaWQgbm9kZUlk
cyBpdGVtLiIpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGludCBub2RlSWQgPSAwOwogICAgICAgICAgICAgaWYgKCFub2RlVmFsdWUtPmFzSW50
ZWdlcihub2RlSWQpKSB7Ci0gICAgICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gIkludmFsaWQg
bm9kZUlkcyBpdGVtIHR5cGUuIEV4cGVjdGluZyBpbnRlZ2VyIHR5cGVzLiI7CisgICAgICAgICAg
ICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkludmFsaWQgbm9kZUlkcyBpdGVtIHR5
cGUuIEV4cGVjdGluZyBpbnRlZ2VyIHR5cGVzLiIpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBhc3NlcnROb2RlKGVycm9y
U3RyaW5nLCBub2RlSWQpOwogICAgICAgICAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgICAgICAg
ICAgLy8gYXNzZXJ0Tm9kZSBzaG91bGQgaGF2ZSBmaWxsZWQgdGhlIGVycm9yU3RyaW5nIGZvciB1
cy4KLSAgICAgICAgICAgICAgICBBU1NFUlQoZXJyb3JTdHJpbmctPmxlbmd0aCgpKTsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQoZXJyb3JTdHJpbmcubGVuZ3RoKCkpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZpbmRlci5wZXJmb3JtU2VhcmNo
KG5vZGUpOwpAQCAtOTIyLDE3ICs5MjIsMTcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cGVy
Zm9ybVNlYXJjaChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgd2gKICAg
ICAqcmVzdWx0Q291bnQgPSByZXN1bHRzVmVjdG9yLnNpemUoKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6Z2V0U2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0IFN0cmluZyYgc2VhcmNoSWQsIGludCBmcm9tSW5kZXgsIGludCB0b0luZGV4LCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pj4mIG5vZGVJZHMpCit2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpnZXRTZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiBzZWFyY2hJZCwgaW50IGZyb21JbmRleCwgaW50IHRvSW5kZXgsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiYgbm9kZUlkcykKIHsKICAgICBTZWFyY2hS
ZXN1bHRzOjppdGVyYXRvciBpdCA9IG1fc2VhcmNoUmVzdWx0cy5maW5kKHNlYXJjaElkKTsKICAg
ICBpZiAoaXQgPT0gbV9zZWFyY2hSZXN1bHRzLmVuZCgpKSB7Ci0gICAgICAgICplcnJvclN0cmlu
ZyA9ICJObyBzZWFyY2ggc2Vzc2lvbiB3aXRoIGdpdmVuIGlkIGZvdW5kIjsKKyAgICAgICAgZXJy
b3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vIHNlYXJjaCBzZXNzaW9uIHdpdGggZ2l2ZW4gaWQg
Zm91bmQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGludCBzaXplID0gaXQtPnZh
bHVlLnNpemUoKTsKICAgICBpZiAoZnJvbUluZGV4IDwgMCB8fCB0b0luZGV4ID4gc2l6ZSB8fCBm
cm9tSW5kZXggPj0gdG9JbmRleCkgewotICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW52YWxpZCBz
ZWFyY2ggcmVzdWx0IHJhbmdlIjsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwo
IkludmFsaWQgc2VhcmNoIHJlc3VsdCByYW5nZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC05NDEsNyArOTQxLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0U2VhcmNoUmVz
dWx0cyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYKICAgICAgICAgbm9k
ZUlkcy0+YWRkSXRlbShwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKChpdC0+dmFsdWUpW2ldLmdldCgp
KSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpc2NhcmRTZWFyY2hSZXN1bHRzKEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OmRpc2NhcmRTZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzZWFy
Y2hJZCkKIHsKICAgICBtX3NlYXJjaFJlc3VsdHMucmVtb3ZlKHNlYXJjaElkKTsKIH0KQEAgLTk3
Miw5ICs5NzIsOSBAQCBib29sIEluc3BlY3RvckRPTUFnZW50OjpoYW5kbGVUb3VjaEV2ZW50KE5v
ZGUqIG5vZGUpCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Omluc3BlY3QoTm9kZSogaW5zcGVj
dGVkTm9kZSkKIHsKLSAgICBFcnJvclN0cmluZyBlcnJvcjsKKyAgICBFcnJvclN0cmluZyB1bnVz
ZWQ7CiAgICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBpbnNwZWN0ZWROb2RlOwotICAgIHNldFNlYXJj
aGluZ0Zvck5vZGUoJmVycm9yLCBmYWxzZSwgMCk7CisgICAgc2V0U2VhcmNoaW5nRm9yTm9kZSh1
bnVzZWQsIGZhbHNlLCAwKTsKIAogICAgIGlmIChub2RlLT5ub2RlVHlwZSgpICE9IE5vZGU6OkVM
RU1FTlRfTk9ERSAmJiBub2RlLT5ub2RlVHlwZSgpICE9IE5vZGU6OkRPQ1VNRU5UX05PREUpCiAg
ICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CkBAIC0xMDE3LDcgKzEwMTcsNyBAQCB2
b2lkIEluc3BlY3RvckRPTUFnZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRU
ZXN0UmVzdWx0JiByZXN1bHQsIHVucwogICAgICAgICBtX292ZXJsYXktPmhpZ2hsaWdodE5vZGUo
bm9kZSwgKm1faW5zcGVjdE1vZGVIaWdobGlnaHRDb25maWcpOwogfQogCi12b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpzZXRTZWFyY2hpbmdGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Ym9vbCBlbmFibGVkLCBJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCkK
K3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldFNlYXJjaGluZ0Zvck5vZGUoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBib29sIGVuYWJsZWQsIEluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0SW5z
cGVjdG9yT2JqZWN0KQogewogICAgIGlmIChtX3NlYXJjaGluZ0Zvck5vZGUgPT0gZW5hYmxlZCkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTAzMiwxMCArMTAzMiwxMCBAQCB2b2lkIEluc3BlY3RvckRP
TUFnZW50OjpzZXRTZWFyY2hpbmdGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgYm9v
bCBlbmFibAogICAgIG1fb3ZlcmxheS0+ZGlkU2V0U2VhcmNoaW5nRm9yTm9kZShtX3NlYXJjaGlu
Z0Zvck5vZGUpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SGlnaGxpZ2h0Q29uZmlnPiBJbnNwZWN0
b3JET01BZ2VudDo6aGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rvck9iamVjdChFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIEluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0
KQorc3RkOjp1bmlxdWVfcHRyPEhpZ2hsaWdodENvbmZpZz4gSW5zcGVjdG9yRE9NQWdlbnQ6Omhp
Z2hsaWdodENvbmZpZ0Zyb21JbnNwZWN0b3JPYmplY3QoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCkKIHsKICAgICBpZiAo
IWhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCkgewotICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50
ZXJuYWwgZXJyb3I6IGhpZ2hsaWdodCBjb25maWd1cmF0aW9uIHBhcmFtZXRlciBpcyBtaXNzaW5n
IjsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkludGVybmFsIGVycm9yOiBo
aWdobGlnaHQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgaXMgbWlzc2luZyIpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTEwNTEsMjIgKzEwNTEsMjIgQEAgc3RkOjp1bmlx
dWVfcHRyPEhpZ2hsaWdodENvbmZpZz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodENvbmZp
Z0Zyb21JbnNwZWN0b3IKICAgICByZXR1cm4gaGlnaGxpZ2h0Q29uZmlnOwogfQogCi12b2lkIElu
c3BlY3RvckRPTUFnZW50OjpzZXRJbnNwZWN0TW9kZUVuYWJsZWQoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBib29sIGVuYWJsZWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBoaWdo
bGlnaHRDb25maWcpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRJbnNwZWN0TW9kZUVuYWJs
ZWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBib29sIGVuYWJsZWQsIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+KiBoaWdobGlnaHRDb25maWcpCiB7CiAgICAgc2V0U2VhcmNoaW5nRm9y
Tm9kZShlcnJvclN0cmluZywgZW5hYmxlZCwgaGlnaGxpZ2h0Q29uZmlnID8gaGlnaGxpZ2h0Q29u
ZmlnLT5nZXQoKSA6IDApOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRS
ZWN0KEVycm9yU3RyaW5nKiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4qIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKQor
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UmVjdChFcnJvclN0cmluZyYsIGludCB4
LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3Is
IGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcykKIHsKICAgICBhdXRvIHF1YWQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEZsb2F0UXVhZD4oRmxvYXRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsK
ICAgICBpbm5lckhpZ2hsaWdodFF1YWQoV1RGOjptb3ZlKHF1YWQpLCBjb2xvciwgb3V0bGluZUNv
bG9yLCB1c2VQYWdlQ29vcmRpbmF0ZXMpOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50Ojpo
aWdobGlnaHRRdWFkKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiYgcXVhZEFycmF5LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogY29s
b3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJv
b2wqIHVzZVBhZ2VDb29yZGluYXRlcykKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdo
dFF1YWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+JiBxdWFkQXJyYXksIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNl
UGFnZUNvb3JkaW5hdGVzKQogewogICAgIGF1dG8gcXVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8Rmxv
YXRRdWFkPigpOwogICAgIGlmICghcGFyc2VRdWFkKHF1YWRBcnJheSwgcXVhZC5nZXQoKSkpIHsK
LSAgICAgICAgKmVycm9yU3RyaW5nID0gIkludmFsaWQgUXVhZCBmb3JtYXQiOworICAgICAgICBl
cnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBRdWFkIGZvcm1hdCIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIGlubmVySGlnaGxpZ2h0UXVhZChXVEY6Om1vdmUocXVhZCks
IGNvbG9yLCBvdXRsaW5lQ29sb3IsIHVzZVBhZ2VDb29yZGluYXRlcyk7CkBAIC0xMDgxLDcgKzEw
ODEsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojppbm5lckhpZ2hsaWdodFF1YWQoc3RkOjp1
bmlxdWVfcHRyPEZsb2F0UXVhZD4gcXVhZCwgY29ucwogICAgIG1fb3ZlcmxheS0+aGlnaGxpZ2h0
UXVhZChXVEY6Om1vdmUocXVhZCksICpoaWdobGlnaHRDb25maWcpOwogfQogCi12b2lkIEluc3Bl
Y3RvckRPTUFnZW50OjpoaWdobGlnaHROb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29u
c3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCwgY29u
c3QgaW50KiBub2RlSWQsIGNvbnN0IFN0cmluZyogb2JqZWN0SWQpCit2b2lkIEluc3BlY3RvckRP
TUFnZW50OjpoaWdobGlnaHROb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4mIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCwgY29uc3QgaW50
KiBub2RlSWQsIGNvbnN0IFN0cmluZyogb2JqZWN0SWQpCiB7CiAgICAgTm9kZSogbm9kZSA9IDA7
CiAgICAgaWYgKG5vZGVJZCkgewpAQCAtMTA4OSw5ICsxMDg5LDkgQEAgdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6aGlnaGxpZ2h0Tm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJl
ZlB0cjxJbnMKICAgICB9IGVsc2UgaWYgKG9iamVjdElkKSB7CiAgICAgICAgIG5vZGUgPSBub2Rl
Rm9yT2JqZWN0SWQoKm9iamVjdElkKTsKICAgICAgICAgaWYgKCFub2RlKQotICAgICAgICAgICAg
KmVycm9yU3RyaW5nID0gIk5vZGUgZm9yIGdpdmVuIG9iamVjdElkIG5vdCBmb3VuZCI7CisgICAg
ICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiTm9kZSBmb3IgZ2l2ZW4gb2JqZWN0
SWQgbm90IGZvdW5kIik7CiAgICAgfSBlbHNlCi0gICAgICAgICplcnJvclN0cmluZyA9ICJFaXRo
ZXIgbm9kZUlkIG9yIG9iamVjdElkIG11c3QgYmUgc3BlY2lmaWVkIjsKKyAgICAgICAgZXJyb3JT
dHJpbmcgPSBBU0NJSUxpdGVyYWwoIkVpdGhlciBub2RlSWQgb3Igb2JqZWN0SWQgbXVzdCBiZSBz
cGVjaWZpZWQiKTsKIAogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTEwMyw3
ICsxMTAzLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Tm9kZShFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnMKICAgICBtX292ZXJsYXktPmhpZ2hs
aWdodE5vZGUobm9kZSwgKmhpZ2hsaWdodENvbmZpZyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OmhpZ2hsaWdodEZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlk
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3IpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdo
bGlnaHRGcmFtZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
Piogb3V0bGluZUNvbG9yKQogewogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZUFnZW50LT5mcmFt
ZUZvcklkKGZyYW1lSWQpOwogICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+b3duZXJFbGVtZW50KCkp
IHsKQEAgLTExMTUsMTIgKzExMTUsMTIgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxp
Z2h0RnJhbWUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnMKICAgICB9
CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZGVIaWdobGlnaHQoRXJyb3JTdHJpbmcq
KQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlkZUhpZ2hsaWdodChFcnJvclN0cmluZyYpCiB7
CiAgICAgbV9vdmVybGF5LT5oaWRlSGlnaGxpZ2h0KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6Om1vdmVUbyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGludCB0
YXJnZXRFbGVtZW50SWQsIGNvbnN0IGludCogY29uc3QgYW5jaG9yTm9kZUlkLCBpbnQqIG5ld05v
ZGVJZCkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Om1vdmVUbyhFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGludCBub2RlSWQsIGludCB0YXJnZXRFbGVtZW50SWQsIGNvbnN0IGludCogY29uc3Qg
YW5jaG9yTm9kZUlkLCBpbnQqIG5ld05vZGVJZCkKIHsKICAgICBOb2RlKiBub2RlID0gYXNzZXJ0
RWRpdGFibGVOb2RlKGVycm9yU3RyaW5nLCBub2RlSWQpOwogICAgIGlmICghbm9kZSkKQEAgLTEx
MzYsNyArMTEzNiw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Om1vdmVUbyhFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGludCB0YXJnZXRFCiAgICAgICAgIGlmICghYW5j
aG9yTm9kZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKGFuY2hvck5vZGUtPnBh
cmVudE5vZGUoKSAhPSB0YXJnZXRFbGVtZW50KSB7Ci0gICAgICAgICAgICAqZXJyb3JTdHJpbmcg
PSAiQW5jaG9yIG5vZGUgbXVzdCBiZSBjaGlsZCBvZiB0aGUgdGFyZ2V0IGVsZW1lbnQiOworICAg
ICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkFuY2hvciBub2RlIG11c3QgYmUg
Y2hpbGQgb2YgdGhlIHRhcmdldCBlbGVtZW50Iik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICB9CkBAIC0xMTQ3LDU0ICsxMTQ3LDU0IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6Om1vdmVUbyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGludCB0YXJn
ZXRFCiAgICAgKm5ld05vZGVJZCA9IHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQobm9kZSk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnVuZG8oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nKQor
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6dW5kbyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiB7
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgbV9oaXN0b3J5LT51bmRvKGVjKTsKLSAg
ICAqZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhlYyk7Cisg
ICAgZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhlYyk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlZG8oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
KQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVkbyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcp
CiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgbV9oaXN0b3J5LT5yZWRvKGVjKTsK
LSAgICAqZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhlYyk7
CisgICAgZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhlYyk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Om1hcmtVbmRvYWJsZVN0YXRlKEVycm9yU3Ry
aW5nKikKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Om1hcmtVbmRvYWJsZVN0YXRlKEVycm9yU3Ry
aW5nJikKIHsKICAgICBtX2hpc3RvcnktPm1hcmtVbmRvYWJsZVN0YXRlKCk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OmZvY3VzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5v
ZGVJZCkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmZvY3VzKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgaW50IG5vZGVJZCkKIHsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gYXNzZXJ0RWxlbWVu
dChlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVy
bjsKICAgICBpZiAoIWVsZW1lbnQtPmlzRm9jdXNhYmxlKCkpIHsKLSAgICAgICAgKmVycm9yU3Ry
aW5nID0gIkVsZW1lbnQgaXMgbm90IGZvY3VzYWJsZSI7CisgICAgICAgIGVycm9yU3RyaW5nID0g
QVNDSUlMaXRlcmFsKCJFbGVtZW50IGlzIG5vdCBmb2N1c2FibGUiKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBlbGVtZW50LT5mb2N1cygpOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpyZXNvbHZlTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNv
bnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckRPTUFnZW50
OjpyZXNvbHZlTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0
IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpCiB7CiAgICAgU3RyaW5nIG9iamVjdEdyb3Vw
TmFtZSA9IG9iamVjdEdyb3VwID8gKm9iamVjdEdyb3VwIDogIiI7CiAgICAgTm9kZSogbm9kZSA9
IG5vZGVGb3JJZChub2RlSWQpOwogICAgIGlmICghbm9kZSkgewotICAgICAgICAqZXJyb3JTdHJp
bmcgPSAiTm8gbm9kZSB3aXRoIGdpdmVuIGlkIGZvdW5kIjsKKyAgICAgICAgZXJyb3JTdHJpbmcg
PSBBU0NJSUxpdGVyYWwoIk5vIG5vZGUgd2l0aCBnaXZlbiBpZCBmb3VuZCIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q+IG9iamVjdCA9IHJlc29sdmVOb2RlKG5vZGUsIG9iamVjdEdyb3VwTmFtZSk7
CiAgICAgaWYgKCFvYmplY3QpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIk5vZGUgd2l0aCBn
aXZlbiBpZCBkb2VzIG5vdCBiZWxvbmcgdG8gdGhlIGRvY3VtZW50IjsKKyAgICAgICAgZXJyb3JT
dHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vZGUgd2l0aCBnaXZlbiBpZCBkb2VzIG5vdCBiZWxvbmcg
dG8gdGhlIGRvY3VtZW50Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgcmVzdWx0ID0g
b2JqZWN0OwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRBdHRyaWJ1dGVzKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PFN0cmluZz4+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRB
dHRyaWJ1dGVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiByZXN1bHQpCiB7CiAgICAgRWxlbWVu
dCogZWxlbWVudCA9IGFzc2VydEVsZW1lbnQoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CiAgICAgaWYg
KCFlbGVtZW50KQpAQCAtMTIwMyw3ICsxMjAzLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
Z2V0QXR0cmlidXRlcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIFJlZlAK
ICAgICByZXN1bHQgPSBidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMoZWxlbWVudCk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlcXVlc3ROb2RlKEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBvYmplY3RJZCwgaW50KiBub2RlSWQpCit2b2lkIEluc3BlY3RvckRPTUFnZW50
OjpyZXF1ZXN0Tm9kZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGludCog
bm9kZUlkKQogewogICAgIE5vZGUqIG5vZGUgPSBub2RlRm9yT2JqZWN0SWQob2JqZWN0SWQpOwog
ICAgIGlmIChub2RlKQpAQCAtMTk1NiwxOCArMTk1NiwxOCBAQCBOb2RlKiBJbnNwZWN0b3JET01B
Z2VudDo6bm9kZUZvck9iamVjdElkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpCiAgICAgcmV0dXJu
IEluc3BlY3RvckRPTUFnZW50OjpzY3JpcHRWYWx1ZUFzTm9kZSh2YWx1ZSk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZChFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGF0aCwgaW50KiBub2RlSWQpCit2b2lkIEluc3Bl
Y3RvckRPTUFnZW50OjpwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhdGgsIGludCogbm9kZUlkKQogewogICAgIGlmIChOb2Rl
KiBub2RlID0gbm9kZUZvclBhdGgocGF0aCkpCiAgICAgICAgICpub2RlSWQgPSBwdXNoTm9kZVBh
dGhUb0Zyb250ZW5kKG5vZGUpOwogICAgIGVsc2UKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIk5v
IG5vZGUgd2l0aCBnaXZlbiBwYXRoIGZvdW5kIjsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJ
SUxpdGVyYWwoIk5vIG5vZGUgd2l0aCBnaXZlbiBwYXRoIGZvdW5kIik7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlQnlCYWNrZW5kSWRUb0Zyb250ZW5kKEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgQmFja2VuZE5vZGVJZCBiYWNrZW5kTm9kZUlkLCBpbnQqIG5vZGVJZCkK
K3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlQnlCYWNrZW5kSWRUb0Zyb250ZW5kKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgQmFja2VuZE5vZGVJZCBiYWNrZW5kTm9kZUlkLCBpbnQq
IG5vZGVJZCkKIHsKICAgICBpZiAoIW1fYmFja2VuZElkVG9Ob2RlLmNvbnRhaW5zKGJhY2tlbmRO
b2RlSWQpKSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9ICJObyBub2RlIHdpdGggZ2l2ZW4gYmFj
a2VuZCBpZCBmb3VuZCI7CisgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJObyBu
b2RlIHdpdGggZ2l2ZW4gYmFja2VuZCBpZCBmb3VuZCIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4
IGQ5N2VkYjcwYTk5YWM2ZmJiNDExMDdmMjFiMGExMDAyYWI3NjRmMTcuLjMxYzljZTcyYTI4Y2U0
NjlmMTU1ZmFkN2E2YWQ0ZDFjOTFlNTQ5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC0xMTgsNDEgKzExOCw0MSBAQCBwdWJsaWM6CiAgICAg
dm9pZCByZXNldCgpOwogCiAgICAgLy8gTWV0aG9kcyBjYWxsZWQgZnJvbSB0aGUgZnJvbnRlbmQg
Zm9yIERPTSBub2RlcyBpbnNwZWN0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBxdWVyeVNlbGVjdG9y
KEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIGludCog
ZWxlbWVudElkKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcXVlcnlTZWxlY3RvckFsbChF
cnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pj4mIHJlc3VsdCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGdldERvY3VtZW50KEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRPTTo6Tm9kZT4mIHJvb3QpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0Q2hpbGROb2RlcyhFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IGludCogZGVw
dGgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRBdHRyaWJ1dGVWYWx1ZShFcnJvclN0
cmluZyosIGludCBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEF0dHJpYnV0ZXNBc1RleHQoRXJy
b3JTdHJpbmcqLCBpbnQgZWxlbWVudElkLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmlu
ZyogbmFtZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUF0dHJpYnV0ZShFcnJv
clN0cmluZyosIGludCBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgbmFtZSkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHJlbW92ZU5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9kZU5hbWUoRXJyb3JTdHJpbmcqLCBpbnQgbm9k
ZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGludCogbmV3SWQpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRPdXRlckhUTUwoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBXVEY6OlN0cmlu
Zyogb3V0ZXJIVE1MKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0T3V0ZXJIVE1MKEVy
cm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBvdXRlckhUTUwpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBzZXROb2RlVmFsdWUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlk
LCBjb25zdCBTdHJpbmcmIHZhbHVlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RXZl
bnRMaXN0ZW5lcnNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgV1RGOjpT
dHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPj4mIGxpc3RlbmVyc0FycmF5KSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QWNjZXNzaWJpbGl0eVByb3BlcnRpZXNGb3JO
b2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+JiBheFByb3BlcnRpZXMpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtU2VhcmNoKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiB3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JBcnJheT4qIG5vZGVJZHMsIFN0cmluZyogc2VhcmNoSWQsIGludCogcmVzdWx0Q291bnQpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBzZWFyY2hJZCwgaW50IGZyb21JbmRleCwgaW50IHRvSW5kZXgsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiYpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBkaXNjYXJkU2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
c2VhcmNoSWQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlTm9kZShFcnJvclN0
cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRBdHRyaWJ1dGVzKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJ
ZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiByZXN1bHQpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRJbnNwZWN0TW9kZUVuYWJsZWQoRXJyb3JTdHJp
bmcqLCBib29sIGVuYWJsZWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4qIGhpZ2hsaWdodENvbmZpZykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RO
b2RlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgaW50KiBub2RlSWQpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIHBhdGgsIGludCogbm9kZUlkKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgcHVzaE5vZGVCeUJhY2tlbmRJZFRvRnJvbnRlbmQoRXJyb3JTdHJpbmcqLCBC
YWNrZW5kTm9kZUlkLCBpbnQqIG5vZGVJZCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJl
bGVhc2VCYWNrZW5kTm9kZUlkcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgbm9kZUdyb3Vw
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodChFcnJvclN0cmluZyop
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHRSZWN0KEVycm9yU3RyaW5nKiwg
aW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRl
cykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodFF1YWQoRXJyb3JTdHJpbmcq
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mIHF1YWQsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBh
Z2VDb29yZGluYXRlcykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodE5vZGUo
RXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBo
aWdobGlnaHRDb25maWcsIGNvbnN0IGludCogbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVjdElk
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0RnJhbWUoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
KiBvdXRsaW5lQ29sb3IpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIG1vdmVUbyhFcnJv
clN0cmluZyosIGludCBub2RlSWQsIGludCB0YXJnZXROb2RlSWQsIGNvbnN0IGludCogYW5jaG9y
Tm9kZUlkLCBpbnQqIG5ld05vZGVJZCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHVuZG8o
RXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVkbyhFcnJvclN0cmlu
ZyopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBtYXJrVW5kb2FibGVTdGF0ZShFcnJvclN0
cmluZyopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBmb2N1cyhFcnJvclN0cmluZyosIGlu
dCBub2RlSWQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBxdWVyeVNlbGVjdG9yKEVycm9y
U3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIGludCogZWxlbWVu
dElkKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcXVlcnlTZWxlY3RvckFsbChFcnJvclN0
cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pj4mIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGdldERvY3VtZW50KEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRPTTo6Tm9kZT4mIHJvb3QpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
Q2hpbGROb2RlcyhFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IGludCogZGVwdGgpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRBdHRyaWJ1dGVWYWx1ZShFcnJvclN0cmluZyYs
IGludCBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldEF0dHJpYnV0ZXNBc1RleHQoRXJyb3JTdHJp
bmcmLCBpbnQgZWxlbWVudElkLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyogbmFt
ZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUF0dHJpYnV0ZShFcnJvclN0cmlu
ZyYsIGludCBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgbmFtZSkgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIHJlbW92ZU5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9kZU5hbWUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGludCogbmV3SWQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBnZXRPdXRlckhUTUwoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBXVEY6OlN0cmluZyogb3V0
ZXJIVE1MKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0T3V0ZXJIVE1MKEVycm9yU3Ry
aW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBvdXRlckhUTUwpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBzZXROb2RlVmFsdWUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25z
dCBTdHJpbmcmIHZhbHVlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RXZlbnRMaXN0
ZW5lcnNGb3JOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgV1RGOjpTdHJpbmcq
IG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPj4mIGxpc3RlbmVyc0FycmF5KSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0QWNjZXNzaWJpbGl0eVByb3BlcnRpZXNGb3JOb2RlKEVy
cm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6
QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+JiBheFByb3BlcnRpZXMpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBwZXJmb3JtU2VhcmNoKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB3aGl0
ZXNwYWNlVHJpbW1lZFF1ZXJ5LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJh
eT4qIG5vZGVJZHMsIFN0cmluZyogc2VhcmNoSWQsIGludCogcmVzdWx0Q291bnQpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBnZXRTZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBzZWFyY2hJZCwgaW50IGZyb21JbmRleCwgaW50IHRvSW5kZXgsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBkaXNjYXJkU2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgc2VhcmNo
SWQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlTm9kZShFcnJvclN0cmluZyYs
IGludCBub2RlSWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBnZXRBdHRyaWJ1dGVzKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiByZXN1bHQpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBzZXRJbnNwZWN0TW9kZUVuYWJsZWQoRXJyb3JTdHJpbmcmLCBi
b29sIGVuYWJsZWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIGhp
Z2hsaWdodENvbmZpZykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3ROb2RlKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgaW50KiBub2RlSWQpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIHBhdGgsIGludCogbm9kZUlkKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgcHVzaE5vZGVCeUJhY2tlbmRJZFRvRnJvbnRlbmQoRXJyb3JTdHJpbmcmLCBCYWNrZW5k
Tm9kZUlkLCBpbnQqIG5vZGVJZCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VC
YWNrZW5kTm9kZUlkcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgbm9kZUdyb3VwKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodChFcnJvclN0cmluZyYpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHRSZWN0KEVycm9yU3RyaW5nJiwgaW50IHgs
IGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcykgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodFF1YWQoRXJyb3JTdHJpbmcmLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mIHF1YWQsIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29y
ZGluYXRlcykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodE5vZGUoRXJyb3JT
dHJpbmcmLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBoaWdobGln
aHRDb25maWcsIGNvbnN0IGludCogbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVjdElkKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0RnJhbWUoRXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvdXRs
aW5lQ29sb3IpIG92ZXJyaWRlOworCisgICAgdmlydHVhbCB2b2lkIG1vdmVUbyhFcnJvclN0cmlu
ZyYsIGludCBub2RlSWQsIGludCB0YXJnZXROb2RlSWQsIGNvbnN0IGludCogYW5jaG9yTm9kZUlk
LCBpbnQqIG5ld05vZGVJZCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHVuZG8oRXJyb3JT
dHJpbmcmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVkbyhFcnJvclN0cmluZyYpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBtYXJrVW5kb2FibGVTdGF0ZShFcnJvclN0cmluZyYp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBmb2N1cyhFcnJvclN0cmluZyYsIGludCBub2Rl
SWQpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBnZXRFdmVudExpc3RlbmVycyhOb2RlKiwgVmVjdG9y
PEV2ZW50TGlzdGVuZXJJbmZvPiYgbGlzdGVuZXJzQXJyYXksIGJvb2wgaW5jbHVkZUFuY2VzdG9y
cyk7CiAKQEAgLTE3NSw3ICsxNzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsUG9wU2hhZG93
Um9vdChFbGVtZW50KiBob3N0LCBTaGFkb3dSb290Kik7CiAgICAgdm9pZCBmcmFtZURvY3VtZW50
VXBkYXRlZChGcmFtZSopOwogCi0gICAgaW50IHB1c2hOb2RlVG9Gcm9udGVuZChFcnJvclN0cmlu
ZyosIGludCBkb2N1bWVudE5vZGVJZCwgTm9kZSopOworICAgIGludCBwdXNoTm9kZVRvRnJvbnRl
bmQoRXJyb3JTdHJpbmcmLCBpbnQgZG9jdW1lbnROb2RlSWQsIE5vZGUqKTsKICAgICBOb2RlKiBu
b2RlRm9ySWQoaW50IG5vZGVJZCk7CiAgICAgaW50IGJvdW5kTm9kZUlkKE5vZGUqKTsKICAgICB2
b2lkIHNldERPTUxpc3RlbmVyKERPTUxpc3RlbmVyKik7CkBAIC0yMDEsOSArMjAxLDkgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBOb2RlKiBpbm5lclBhcmVudE5vZGUoTm9kZSopOwogICAgIHN0YXRp
YyBib29sIGlzV2hpdGVzcGFjZShOb2RlKik7CiAKLSAgICBOb2RlKiBhc3NlcnROb2RlKEVycm9y
U3RyaW5nKiwgaW50IG5vZGVJZCk7Ci0gICAgRWxlbWVudCogYXNzZXJ0RWxlbWVudChFcnJvclN0
cmluZyosIGludCBub2RlSWQpOwotICAgIERvY3VtZW50KiBhc3NlcnREb2N1bWVudChFcnJvclN0
cmluZyosIGludCBub2RlSWQpOworICAgIE5vZGUqIGFzc2VydE5vZGUoRXJyb3JTdHJpbmcmLCBp
bnQgbm9kZUlkKTsKKyAgICBFbGVtZW50KiBhc3NlcnRFbGVtZW50KEVycm9yU3RyaW5nJiwgaW50
IG5vZGVJZCk7CisgICAgRG9jdW1lbnQqIGFzc2VydERvY3VtZW50KEVycm9yU3RyaW5nJiwgaW50
IG5vZGVJZCk7CiAKICAgICBzdGF0aWMgTm9kZSogc2NyaXB0VmFsdWVBc05vZGUoRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUpOwogICAgIHN0YXRpYyBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBub2Rl
QXNTY3JpcHRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIE5vZGUqKTsKQEAgLTIxMiwxNiArMjEyLDE2
IEBAIHB1YmxpYzoKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCgpIHsgcmV0dXJu
IG1fcGFnZUFnZW50OyB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBzZXRTZWFyY2hpbmdGb3JOb2Rl
KEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCog
aGlnaGxpZ2h0Q29uZmlnKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SGlnaGxpZ2h0Q29uZmlnPiBo
aWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9yT2JqZWN0KEVycm9yU3RyaW5nKiwgSW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7CisgICAgdm9pZCBz
ZXRTZWFyY2hpbmdGb3JOb2RlKEVycm9yU3RyaW5nJiwgYm9vbCBlbmFibGVkLCBJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
SGlnaGxpZ2h0Q29uZmlnPiBoaWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9yT2JqZWN0KEVycm9y
U3RyaW5nJiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodEluc3BlY3Rvck9i
amVjdCk7CiAKICAgICAvLyBOb2RlLXJlbGF0ZWQgbWV0aG9kcy4KICAgICB0eXBlZGVmIEhhc2hN
YXA8UmVmUHRyPE5vZGU+LCBpbnQ+IE5vZGVUb0lkTWFwOwogICAgIGludCBiaW5kKE5vZGUqLCBO
b2RlVG9JZE1hcCopOwogICAgIHZvaWQgdW5iaW5kKE5vZGUqLCBOb2RlVG9JZE1hcCopOwogCi0g
ICAgTm9kZSogYXNzZXJ0RWRpdGFibGVOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCk7Ci0g
ICAgRWxlbWVudCogYXNzZXJ0RWRpdGFibGVFbGVtZW50KEVycm9yU3RyaW5nKiwgaW50IG5vZGVJ
ZCk7CisgICAgTm9kZSogYXNzZXJ0RWRpdGFibGVOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJ
ZCk7CisgICAgRWxlbWVudCogYXNzZXJ0RWRpdGFibGVFbGVtZW50KEVycm9yU3RyaW5nJiwgaW50
IG5vZGVJZCk7CiAKICAgICBpbnQgcHVzaE5vZGVQYXRoVG9Gcm9udGVuZChOb2RlKik7CiAgICAg
dm9pZCBwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQoaW50IG5vZGVJZCwgaW50IGRlcHRoID0gMSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudC5jcHAKaW5kZXggNGMwZmRkOTEyNWFiZmYwYjkzMGU2MWQ4NWVhZmUxOTc4YzMyOTdi
My4uMmYyZTY2NDQyYTg3NWE5MDk3ZmFlZGU1NDQwNTMzYTM0NGYxNTU1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNw
cApAQCAtMTI4LDQwICsxMjgsNDAgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojpk
aXNjYXJkQmluZGluZ3MoKQogICAgIG1fZG9tQnJlYWtwb2ludHMuY2xlYXIoKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRFdmVudExpc3RlbmVyQnJlYWtwb2ludChF
cnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKQordm9pZCBJbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50OjpzZXRFdmVudExpc3RlbmVyQnJlYWtwb2ludChFcnJvclN0cmlu
ZyYgZXJyb3IsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKQogewogICAgIHNldEJyZWFrcG9pbnQo
ZXJyb3IsIFN0cmluZyhsaXN0ZW5lckV2ZW50Q2F0ZWdvcnlUeXBlKSArIGV2ZW50TmFtZSk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0SW5zdHJ1bWVudGF0aW9uQnJl
YWtwb2ludChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKQordm9p
ZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRJbnN0cnVtZW50YXRpb25CcmVha3BvaW50
KEVycm9yU3RyaW5nJiBlcnJvciwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUpCiB7CiAgICAgc2V0
QnJlYWtwb2ludChlcnJvciwgU3RyaW5nKGluc3RydW1lbnRhdGlvbkV2ZW50Q2F0ZWdvcnlUeXBl
KSArIGV2ZW50TmFtZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0
QnJlYWtwb2ludChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKQor
dm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50KEVycm9yU3RyaW5n
JiBlcnJvciwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUpCiB7CiAgICAgaWYgKGV2ZW50TmFtZS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgKmVycm9yID0gIkV2ZW50IG5hbWUgaXMgZW1wdHkiOworICAg
ICAgICBlcnJvciA9IEFTQ0lJTGl0ZXJhbCgiRXZlbnQgbmFtZSBpcyBlbXB0eSIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgbV9ldmVudExpc3RlbmVyQnJlYWtwb2ludHMuYWRkKGV2
ZW50TmFtZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlRXZl
bnRMaXN0ZW5lckJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIGV2
ZW50TmFtZSkKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlRXZlbnRMaXN0
ZW5lckJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFt
ZSkKIHsKICAgICByZW1vdmVCcmVha3BvaW50KGVycm9yLCBTdHJpbmcobGlzdGVuZXJFdmVudENh
dGVnb3J5VHlwZSkgKyBldmVudE5hbWUpOwogfQogCi12b2lkIEluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQ6OnJlbW92ZUluc3RydW1lbnRhdGlvbkJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqIGVycm9y
LCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSkKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dDo6cmVtb3ZlSW5zdHJ1bWVudGF0aW9uQnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3IsIGNv
bnN0IFN0cmluZyYgZXZlbnROYW1lKQogewogICAgIHJlbW92ZUJyZWFrcG9pbnQoZXJyb3IsIFN0
cmluZyhpbnN0cnVtZW50YXRpb25FdmVudENhdGVnb3J5VHlwZSkgKyBldmVudE5hbWUpOwogfQog
Ci12b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnJlbW92ZUJyZWFrcG9pbnQoRXJyb3JT
dHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSkKK3ZvaWQgSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudDo6cmVtb3ZlQnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3IsIGNvbnN0
IFN0cmluZyYgZXZlbnROYW1lKQogewogICAgIGlmIChldmVudE5hbWUuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICplcnJvciA9ICJFdmVudCBuYW1lIGlzIGVtcHR5IjsKKyAgICAgICAgZXJyb3IgPSBB
U0NJSUxpdGVyYWwoIkV2ZW50IG5hbWUgaXMgZW1wdHkiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6
ZGlkUmVtb3ZlRE9NTm9kZShOb2RlKiBub2RlKQogICAgIH0KIH0KIAotc3RhdGljIGludCBkb21U
eXBlRm9yTmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgdHlwZVN0
cmluZykKK3N0YXRpYyBpbnQgZG9tVHlwZUZvck5hbWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcpCiB7CiAgICAgaWYgKHR5cGVTdHJpbmcgPT0gInN1
YnRyZWUtbW9kaWZpZWQiKQogICAgICAgICByZXR1cm4gU3VidHJlZU1vZGlmaWVkOwpAQCAtMjEz
LDcgKzIxMyw3IEBAIHN0YXRpYyBpbnQgZG9tVHlwZUZvck5hbWUoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcpCiAgICAgICAgIHJldHVybiBBdHRyaWJ1
dGVNb2RpZmllZDsKICAgICBpZiAodHlwZVN0cmluZyA9PSAibm9kZS1yZW1vdmVkIikKICAgICAg
ICAgcmV0dXJuIE5vZGVSZW1vdmVkOwotICAgICplcnJvclN0cmluZyA9IG1ha2VTdHJpbmcoIlVu
a25vd24gRE9NIGJyZWFrcG9pbnQgdHlwZTogIiwgdHlwZVN0cmluZyk7CisgICAgZXJyb3JTdHJp
bmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIERPTSBicmVha3BvaW50IHR5cGU6ICIsIHR5cGVTdHJp
bmcpOwogICAgIHJldHVybiAtMTsKIH0KIApAQCAtMjI4LDcgKzIyOCw3IEBAIHN0YXRpYyBTdHJp
bmcgZG9tVHlwZU5hbWUoaW50IHR5cGUpCiAgICAgcmV0dXJuICIiOwogfQogCi12b2lkIEluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldERPTUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcpCit2b2lkIEluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldERPTUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcpCiB7CiAgICAgTm9k
ZSogbm9kZSA9IG1fZG9tQWdlbnQtPmFzc2VydE5vZGUoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CiAg
ICAgaWYgKCFub2RlKQpAQCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudDo6c2V0RE9NQnJlYWtwb2ludChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBu
CiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnJlbW92ZURPTUJy
ZWFrcG9pbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJp
bmcmIHR5cGVTdHJpbmcpCit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnJlbW92ZURP
TUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBT
dHJpbmcmIHR5cGVTdHJpbmcpCiB7CiAgICAgTm9kZSogbm9kZSA9IG1fZG9tQWdlbnQtPmFzc2Vy
dE5vZGUoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CiAgICAgaWYgKCFub2RlKQpAQCAtMzc1LDcgKzM3
NSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cGF1c2VPbk5hdGl2ZUV2ZW50
SWZOZWVkZWQoYm9vbCBpc0RPTUV2ZW50LCBjb25zCiAgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+
c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlz
cGF0Y2hlcjo6UmVhc29uOjpFdmVudExpc3RlbmVyLCBldmVudERhdGEucmVsZWFzZSgpKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRYSFJCcmVha3BvaW50KEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1cmwpCit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQ6OnNldFhIUkJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCkKIHsK
ICAgICBpZiAodXJsLmlzRW1wdHkoKSkgewogICAgICAgICBtX3BhdXNlT25BbGxYSFJzRW5hYmxl
ZCA9IHRydWU7CkBAIC0zODUsNyArMzg1LDcgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50OjpzZXRYSFJCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1cmwKICAg
ICBtX3hockJyZWFrcG9pbnRzLmFkZCh1cmwpOwogfQogCi12b2lkIEluc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQ6OnJlbW92ZVhIUkJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IHVybCkKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlWEhSQnJlYWtwb2lu
dChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIGlmICh1cmwuaXNFbXB0
eSgpKSB7CiAgICAgICAgIG1fcGF1c2VPbkFsbFhIUnNFbmFibGVkID0gZmFsc2U7CkBAIC0zOTks
NyArMzk5LDcgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsU2VuZFhNTEh0
dHBSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIFN0cmluZyBicmVha3BvaW50VVJM
OwogICAgIGlmIChtX3BhdXNlT25BbGxYSFJzRW5hYmxlZCkKLSAgICAgICAgYnJlYWtwb2ludFVS
TCA9ICIiOworICAgICAgICBicmVha3BvaW50VVJMID0gZW1wdHlTdHJpbmcoKTsKICAgICBlbHNl
IHsKICAgICAgICAgZm9yIChhdXRvIGl0ID0gbV94aHJCcmVha3BvaW50cy5iZWdpbigpLCBlbmQg
PSBtX3hockJyZWFrcG9pbnRzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAg
IGlmICh1cmwuY29udGFpbnMoKml0KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKaW5kZXggMDU2ZTI1ZTNmYzE3YTdkYTYx
YzJlNGRlY2Q4ODJmMzhiMjZjOTY3NS4uNzlhODFiMTU5YzBiNjRmMDYxNjFkMzJlZDk4ZjhjZTU4
ZTI1YjhkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudC5oCkBAIC02MSwxNCArNjEsMTQgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgfkluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoKTsKIAogICAgIC8vIERPTURlYnVnZ2VyIEFQ
SQotICAgIHZpcnR1YWwgdm9pZCBzZXRYSFJCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJiB1cmwpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVYSFJCcmVha3Bv
aW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1cmwpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRFdmVudExpc3RlbmVyQnJlYWtwb2ludChFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgZXZlbnROYW1lKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRXZlbnRM
aXN0ZW5lckJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEluc3RydW1lbnRhdGlvbkJyZWFrcG9pbnQo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHJlbW92ZUluc3RydW1lbnRhdGlvbkJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIGV2ZW50TmFtZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldERP
TUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHR5cGUp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVET01CcmVha3BvaW50KEVycm9yU3Ry
aW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB0eXBlKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0WEhSQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJs
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlWEhSQnJlYWtwb2ludChFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
RXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGV2ZW50
TmFtZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXJCcmVh
a3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRJbnN0cnVtZW50YXRpb25CcmVha3BvaW50KEVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVJbnN0cnVtZW50YXRpb25CcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBldmVudE5hbWUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRET01CcmVha3BvaW50
KEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB0eXBlKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRE9NQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGludCBu
b2RlSWQsIGNvbnN0IFN0cmluZyYgdHlwZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24gQVBJCiAgICAgdm9pZCB3aWxsSW5zZXJ0RE9NTm9kZShOb2RlKiBwYXJl
bnQpOwpAQCAtOTYsOCArOTYsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlU3VidHJlZUJy
ZWFrcG9pbnRzKE5vZGUqLCB1aW50MzJfdCByb290TWFzaywgYm9vbCBzZXQpOwogICAgIGJvb2wg
aGFzQnJlYWtwb2ludChOb2RlKiwgaW50IHR5cGUpOwogICAgIHZvaWQgZGlzY2FyZEJpbmRpbmdz
KCk7Ci0gICAgdm9pZCBzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBl
dmVudE5hbWUpOwotICAgIHZvaWQgcmVtb3ZlQnJlYWtwb2ludChFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgZXZlbnROYW1lKTsKKyAgICB2b2lkIHNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSk7CisgICAgdm9pZCByZW1vdmVCcmVha3BvaW50KEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUpOwogCiAgICAgdm9pZCBjbGVhcigp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQuY3BwCmluZGV4IDJlODdiZTA1NWVlZDkwMWE5M2FkMTUzZDEyYWZjMTNiODM0NTlm
MTAuLmZmOTRlYzhkNzg3OTI2YzA4NjQxMTRjNDQ3OWEyOTcyYmUwYWY3YmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3Bw
CkBAIC04MSwyNiArODEsMjYgQEAgdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OndpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3QKICAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigp
OwogCi0gICAgZGlzYWJsZShudWxscHRyKTsKKyAgICBFcnJvclN0cmluZyB1bnVzZWQ7CisgICAg
ZGlzYWJsZSh1bnVzZWQpOwogfQogCi12b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZW5h
YmxlKEVycm9yU3RyaW5nKikKK3ZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjplbmFibGUo
RXJyb3JTdHJpbmcmKQogewogICAgIG1fZW5hYmxlZCA9IHRydWU7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKK3ZvaWQgSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJikKIHsKICAgICBtX2VuYWJsZWQg
PSBmYWxzZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmdldERPTVN0b3Jh
Z2VJdGVtcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+JiBzdG9yYWdlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+Pj4mIGl0ZW1zKQordm9pZCBJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQ6OmdldERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+
Pj4mIGl0ZW1zKQogewogICAgIEZyYW1lKiBmcmFtZTsKICAgICBSZWZQdHI8U3RvcmFnZUFyZWE+
IHN0b3JhZ2VBcmVhID0gZmluZFN0b3JhZ2VBcmVhKGVycm9yU3RyaW5nLCBzdG9yYWdlSWQsIGZy
YW1lKTsKICAgICBpZiAoIXN0b3JhZ2VBcmVhKSB7Ci0gICAgICAgIGlmIChlcnJvclN0cmluZykK
LSAgICAgICAgICAgICplcnJvclN0cmluZyA9ICJObyBTdG9yYWdlQXJlYSBmb3IgZ2l2ZW4gc3Rv
cmFnZUlkIjsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vIFN0b3JhZ2VB
cmVhIGZvciBnaXZlbiBzdG9yYWdlSWQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
MTE5LDI3ICsxMTksMjcgQEAgdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmdldERPTVN0
b3JhZ2VJdGVtcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnMKICAgICBpdGVtcyA9IHN0
b3JhZ2VJdGVtcy5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50
OjpzZXRET01TdG9yYWdlSXRlbShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBT
dHJpbmcmIHZhbHVlKQordm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OnNldERPTVN0b3Jh
Z2VJdGVtKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4mIHN0b3JhZ2VJZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUp
CiB7CiAgICAgRnJhbWUqIGZyYW1lOwotICAgIFJlZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFy
ZWEgPSBmaW5kU3RvcmFnZUFyZWEobnVsbHB0ciwgc3RvcmFnZUlkLCBmcmFtZSk7CisgICAgUmVm
UHRyPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYSA9IGZpbmRTdG9yYWdlQXJlYShlcnJvclN0cmlu
Zywgc3RvcmFnZUlkLCBmcmFtZSk7CiAgICAgaWYgKCFzdG9yYWdlQXJlYSkgewotICAgICAgICAq
ZXJyb3JTdHJpbmcgPSAiU3RvcmFnZSBub3QgZm91bmQiOworICAgICAgICBlcnJvclN0cmluZyA9
IEFTQ0lJTGl0ZXJhbCgiU3RvcmFnZSBub3QgZm91bmQiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIGJvb2wgcXVvdGFFeGNlcHRpb24gPSBmYWxzZTsKICAgICBzdG9yYWdlQXJlYS0+
c2V0SXRlbShmcmFtZSwga2V5LCB2YWx1ZSwgcXVvdGFFeGNlcHRpb24pOwogICAgIGlmIChxdW90
YUV4Y2VwdGlvbikKLSAgICAgICAgKmVycm9yU3RyaW5nID0gRXhjZXB0aW9uQ29kZURlc2NyaXB0
aW9uKFFVT1RBX0VYQ0VFREVEX0VSUikubmFtZTsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBFeGNl
cHRpb25Db2RlRGVzY3JpcHRpb24oUVVPVEFfRVhDRUVERURfRVJSKS5uYW1lOwogfQogCi12b2lk
IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6cmVtb3ZlRE9NU3RvcmFnZUl0ZW0oRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3RvcmFnZUlk
LCBjb25zdCBTdHJpbmcmIGtleSkKK3ZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpyZW1v
dmVET01TdG9yYWdlSXRlbShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5KQogewogICAgIEZy
YW1lKiBmcmFtZTsKLSAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhID0gZmluZFN0
b3JhZ2VBcmVhKG51bGxwdHIsIHN0b3JhZ2VJZCwgZnJhbWUpOworICAgIFJlZlB0cjxTdG9yYWdl
QXJlYT4gc3RvcmFnZUFyZWEgPSBmaW5kU3RvcmFnZUFyZWEoZXJyb3JTdHJpbmcsIHN0b3JhZ2VJ
ZCwgZnJhbWUpOwogICAgIGlmICghc3RvcmFnZUFyZWEpIHsKLSAgICAgICAgKmVycm9yU3RyaW5n
ID0gIlN0b3JhZ2Ugbm90IGZvdW5kIjsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVy
YWwoIlN0b3JhZ2Ugbm90IGZvdW5kIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE4
MiwyNCArMTgyLDIyIEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWREaXNwYXRj
aERPTVN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uCiAgICAgICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyLT5kb21TdG9yYWdlSXRlbVVwZGF0ZWQoaWQsIGtleSwgb2xkVmFsdWUsIG5l
d1ZhbHVlKTsKIH0KIAotUGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4gSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50OjpmaW5kU3RvcmFnZUFyZWEoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3RvcmFnZUlkLCBGcmFtZSomIHRhcmdldEZyYW1lKQor
UGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4gSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpmaW5kU3Rv
cmFnZUFyZWEoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiYgc3RvcmFnZUlkLCBGcmFtZSomIHRhcmdldEZyYW1lKQogewogICAgIFN0cmluZyBz
ZWN1cml0eU9yaWdpbjsKICAgICBib29sIGlzTG9jYWxTdG9yYWdlID0gZmFsc2U7Ci0gICAgYm9v
bCBzdWNjZXNzID0gc3RvcmFnZUlkLT5nZXRTdHJpbmcoInNlY3VyaXR5T3JpZ2luIiwgc2VjdXJp
dHlPcmlnaW4pOworICAgIGJvb2wgc3VjY2VzcyA9IHN0b3JhZ2VJZC0+Z2V0U3RyaW5nKEFTQ0lJ
TGl0ZXJhbCgic2VjdXJpdHlPcmlnaW4iKSwgc2VjdXJpdHlPcmlnaW4pOwogICAgIGlmIChzdWNj
ZXNzKQotICAgICAgICBzdWNjZXNzID0gc3RvcmFnZUlkLT5nZXRCb29sZWFuKCJpc0xvY2FsU3Rv
cmFnZSIsIGlzTG9jYWxTdG9yYWdlKTsKKyAgICAgICAgc3VjY2VzcyA9IHN0b3JhZ2VJZC0+Z2V0
Qm9vbGVhbihBU0NJSUxpdGVyYWwoImlzTG9jYWxTdG9yYWdlIiksIGlzTG9jYWxTdG9yYWdlKTsK
ICAgICBpZiAoIXN1Y2Nlc3MpIHsKLSAgICAgICAgaWYgKGVycm9yU3RyaW5nKQotICAgICAgICAg
ICAgKmVycm9yU3RyaW5nID0gIkludmFsaWQgc3RvcmFnZUlkIGZvcm1hdCI7CisgICAgICAgIGVy
cm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJJbnZhbGlkIHN0b3JhZ2VJZCBmb3JtYXQiKTsKICAg
ICAgICAgdGFyZ2V0RnJhbWUgPSBudWxscHRyOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKICAgICB0YXJnZXRGcmFtZSA9IG1fcGFnZUFnZW50LT5maW5kRnJhbWVXaXRoU2VjdXJp
dHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pOwogICAgIGlmICghdGFyZ2V0RnJhbWUpIHsKLSAgICAg
ICAgaWYgKGVycm9yU3RyaW5nKQotICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gIkZyYW1lIG5v
dCBmb3VuZCBmb3IgdGhlIGdpdmVuIHNlY3VyaXR5IG9yaWdpbiI7CisgICAgICAgIGVycm9yU3Ry
aW5nID0gQVNDSUlMaXRlcmFsKCJGcmFtZSBub3QgZm91bmQgZm9yIHRoZSBnaXZlbiBzZWN1cml0
eSBvcmlnaW4iKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKaW5kZXgg
MjgyMGYxMTc1MWYyMWFiZjk4ZTA2ZTI5MGIzMzJjYjk5YmFjODIwZi4uYmZmZmEyMjFkZTQ0MTVm
YzEzZTA5Nzc1YTE3Mzg0MDFlMDExMzlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaApAQCAtNjEsMTEgKzYxLDExIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIC8vIENh
bGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCi0gICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0
cmluZyopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmlu
ZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHN0b3JhZ2VJZCwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PFN0cmluZz4+PiYgaXRlbXMpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRET01T
dG9yYWdlSXRlbShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4mIHN0b3JhZ2VJZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFs
dWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVET01TdG9yYWdlSXRlbShFcnJv
clN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHN0b3Jh
Z2VJZCwgY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBlbmFi
bGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJv
clN0cmluZyYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBnZXRET01TdG9yYWdlSXRlbXMo
RXJyb3JTdHJpbmcmLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBz
dG9yYWdlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxTdHJpbmc+Pj4mIGl0ZW1zKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0RE9NU3RvcmFnZUl0ZW0oRXJyb3JTdHJpbmcmLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBT
dHJpbmcmIHZhbHVlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRE9NU3RvcmFn
ZUl0ZW0oRXJyb3JTdHJpbmcmLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+JiBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5KSBvdmVycmlkZTsKIAogICAgIC8vIENh
bGxlZCBmcm9tIHRoZSBpbmplY3RlZCBzY3JpcHQuCiAgICAgU3RyaW5nIHN0b3JhZ2VJZChTdG9y
YWdlKik7CkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZERpc3BhdGNoRE9N
U3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBj
b25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdlVHlwZSwgU2VjdXJpdHlPcmlnaW4qLCBQYWdl
Kik7CiAKIHByaXZhdGU6Ci0gICAgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4gZmluZFN0b3JhZ2VB
cmVhKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiYsIEZyYW1lKiYpOworICAgIFBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+IGZpbmRTdG9yYWdlQXJl
YShFcnJvclN0cmluZyYsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4m
LCBGcmFtZSomKTsKIAogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yRE9NU3RvcmFnZUZyb250ZW5kRGlz
cGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKaW5kZXggMzA5OWQ2NTZlZDBiOTIw
ZmMzOTYyYjhkZTI4YTdjYjdhYzUzYjUxOC4uODg5MWVmYzVhNzc0MWQ1MTFiNjU1NWJjZjFkYjc2
ZDdmYTJmMzUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRhdGFiYXNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEYXRhYmFzZUFnZW50LmNwcApAQCAtMjMzLDEwICsyMzMsMTEgQEAgdm9pZCBJbnNwZWN0b3JE
YXRhYmFzZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNj
b25uZWN0UmUKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAgICAgbV9iYWNr
ZW5kRGlzcGF0Y2hlci5jbGVhcigpOwogCi0gICAgZGlzYWJsZShudWxscHRyKTsKKyAgICBFcnJv
clN0cmluZyB1bnVzZWQ7CisgICAgZGlzYWJsZSh1bnVzZWQpOwogfQogCi12b2lkIEluc3BlY3Rv
ckRhdGFiYXNlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCit2b2lkIEluc3BlY3RvckRhdGFi
YXNlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYpCiB7CiAgICAgaWYgKG1fZW5hYmxlZCkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjQ3LDE3ICsyNDgsMTcgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcqKQogICAgICAgICBpdC0+dmFsdWUtPmJpbmQobV9m
cm9udGVuZERpc3BhdGNoZXIuZ2V0KCkpOwogfQogCi12b2lkIEluc3BlY3RvckRhdGFiYXNlQWdl
bnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQordm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50Ojpk
aXNhYmxlKEVycm9yU3RyaW5nJikKIHsKICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgcmV0
dXJuOwogICAgIG1fZW5hYmxlZCA9IGZhbHNlOwogfQogCi12b2lkIEluc3BlY3RvckRhdGFiYXNl
QWdlbnQ6OmdldERhdGFiYXNlVGFibGVOYW1lcyhFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0
cmluZyYgZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmlu
Zz4+JiBuYW1lcykKK3ZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6Z2V0RGF0YWJhc2VUYWJs
ZU5hbWVzKEVycm9yU3RyaW5nJiBlcnJvciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIG5hbWVzKQogewogICAgIGlm
ICghbV9lbmFibGVkKSB7Ci0gICAgICAgICplcnJvciA9ICJEYXRhYmFzZSBhZ2VudCBpcyBub3Qg
ZW5hYmxlZCI7CisgICAgICAgIGVycm9yID0gQVNDSUlMaXRlcmFsKCJEYXRhYmFzZSBhZ2VudCBp
cyBub3QgZW5hYmxlZCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNzIsNyArMjcz
LDcgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpnZXREYXRhYmFzZVRhYmxlTmFtZXMo
RXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHIKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9y
RGF0YWJhc2VBZ2VudDo6ZXhlY3V0ZVNRTChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZGF0
YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgUGFzc1JlZlB0cjxFeGVjdXRlU1FMQ2FsbGJh
Y2s+IHBycFJlcXVlc3RDYWxsYmFjaykKK3ZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZXhl
Y3V0ZVNRTChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZCwgY29uc3QgU3Ry
aW5nJiBxdWVyeSwgUGFzc1JlZlB0cjxFeGVjdXRlU1FMQ2FsbGJhY2s+IHBycFJlcXVlc3RDYWxs
YmFjaykKIHsKICAgICBSZWZQdHI8RXhlY3V0ZVNRTENhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2sg
PSBwcnBSZXF1ZXN0Q2FsbGJhY2s7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCmluZGV4IGEzNTVhZmMwYTZlZGYxYjI3MzVjMjI0OWJl
ZGRmOTQxMjYyMmM4MzUuLmRiY2RkY2I4N2I3Mzg1NGZmMGE5ZGU5ZmZhYTY4ZWU2ZmU0MTdmMTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdl
bnQuaApAQCAtNjEsMTAgKzYxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyUmVzb3VyY2Vz
KCk7CiAKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgZnJvbnQtZW5kLgotICAgIHZpcnR1YWwgdm9p
ZCBlbmFibGUoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzYWJs
ZShFcnJvclN0cmluZyopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZVRh
YmxlTmFtZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWQsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgbmFtZXMpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBkYXRh
YmFzZUlkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBQYXNzUmVmUHRyPEV4ZWN1dGVTUUxDYWxsYmFj
az4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxT
dHJpbmc+PiYgbmFtZXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5
LCBQYXNzUmVmUHRyPEV4ZWN1dGVTUUxDYWxsYmFjaz4pIG92ZXJyaWRlOwogCiAgICAgLy8gQ2Fs
bGVkIGZyb20gdGhlIGluamVjdGVkIHNjcmlwdC4KICAgICBTdHJpbmcgZGF0YWJhc2VJZChEYXRh
YmFzZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
ZGV4ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5jcHAKaW5kZXggNTdhNWM4NjkzYjFiOTQ4YzBhZTM2N2NlMTY4YzQzMTQyOGUw
NTRjZS4uYzI3ODNmNzQ3ZTExNzc4MjNkZDg4MjEyZjM3ZGI0MTQ2OTdmNmY1MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3Bw
CkBAIC01NzAsNDEgKzU3MCw0MiBAQCB2b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50Ojp3aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UgogewogICAgIG1f
YmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKIAotICAgIGRpc2FibGUobnVsbHB0cik7CisgICAg
RXJyb3JTdHJpbmcgdW51c2VkOworICAgIGRpc2FibGUodW51c2VkKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JJbmRleGVkREJBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKK3ZvaWQgSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYpCiB7CiB9CiAKLXZvaWQgSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQordm9pZCBJbnNwZWN0b3JJ
bmRleGVkREJBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCiB7CiB9CiAKLXN0YXRpYyBEb2N1
bWVudCogYXNzZXJ0RG9jdW1lbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBGcmFtZSogZnJh
bWUpCitzdGF0aWMgRG9jdW1lbnQqIGFzc2VydERvY3VtZW50KEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgRnJhbWUqIGZyYW1lKQogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lID8g
ZnJhbWUtPmRvY3VtZW50KCkgOiBudWxscHRyOwogICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAg
ICplcnJvclN0cmluZyA9ICJObyBkb2N1bWVudCBmb3IgZ2l2ZW4gZnJhbWUgZm91bmQiOworICAg
ICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiTm8gZG9jdW1lbnQgZm9yIGdpdmVuIGZy
YW1lIGZvdW5kIik7CiAgICAgcmV0dXJuIGRvY3VtZW50OwogfQogCi1zdGF0aWMgSURCRmFjdG9y
eSogYXNzZXJ0SURCRmFjdG9yeShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIERvY3VtZW50KiBk
b2N1bWVudCkKK3N0YXRpYyBJREJGYWN0b3J5KiBhc3NlcnRJREJGYWN0b3J5KEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIERPTVdpbmRvdyogZG9t
V2luZG93ID0gZG9jdW1lbnQtPmRvbVdpbmRvdygpOwogICAgIGlmICghZG9tV2luZG93KSB7Ci0g
ICAgICAgICplcnJvclN0cmluZyA9ICJObyBJbmRleGVkREIgZmFjdG9yeSBmb3IgZ2l2ZW4gZnJh
bWUgZm91bmQiOworICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiTm8gSW5kZXhl
ZERCIGZhY3RvcnkgZm9yIGdpdmVuIGZyYW1lIGZvdW5kIik7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIAogICAgIElEQkZhY3RvcnkqIGlkYkZhY3RvcnkgPSBET01XaW5kb3dJbmRl
eGVkRGF0YWJhc2U6OmluZGV4ZWREQihkb21XaW5kb3cpOwogICAgIGlmICghaWRiRmFjdG9yeSkK
LSAgICAgICAgKmVycm9yU3RyaW5nID0gIk5vIEluZGV4ZWREQiBmYWN0b3J5IGZvciBnaXZlbiBm
cmFtZSBmb3VuZCI7CisgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJObyBJbmRl
eGVkREIgZmFjdG9yeSBmb3IgZ2l2ZW4gZnJhbWUgZm91bmQiKTsKIAogICAgIHJldHVybiBpZGJG
YWN0b3J5OwogfQogCi12b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YWJh
c2VOYW1lcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlP
cmlnaW4sIFBhc3NSZWZQdHI8UmVxdWVzdERhdGFiYXNlTmFtZXNDYWxsYmFjaz4gcmVxdWVzdENh
bGxiYWNrKQordm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGFiYXNlTmFt
ZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2lu
LCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFj
aykKIHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2VBZ2VudC0+ZmluZEZyYW1lV2l0aFNlY3Vy
aXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBhc3Nl
cnREb2N1bWVudChlcnJvclN0cmluZywgZnJhbWUpOwpAQCAtNjI1LDcgKzYyNiw3IEBAIHZvaWQg
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhYmFzZU5hbWVzKEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgY29uCiAgICAgaWRiUmVxdWVzdC0+YWRkRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkuc3VjY2Vzc0V2ZW50LCBHZXREYXRhYmFzZU5hbWVzQ2FsbGJhY2s6OmNyZWF0ZShy
ZXF1ZXN0Q2FsbGJhY2ssIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT50b1Jhd1N0cmluZygp
KSwgZmFsc2UpOwogfQogCi12b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0
YWJhc2UoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3Jp
Z2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YWJh
c2VDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrKQordm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dDo6cmVxdWVzdERhdGFiYXNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIFBhc3NSZWZQdHI8
UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykKIHsKICAgICBGcmFtZSog
ZnJhbWUgPSBtX3BhZ2VBZ2VudC0+ZmluZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5
T3JpZ2luKTsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBhc3NlcnREb2N1bWVudChlcnJvclN0
cmluZywgZnJhbWUpOwpAQCAtNjQwLDcgKzY0MSw3IEBAIHZvaWQgSW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQ6OnJlcXVlc3REYXRhYmFzZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0
CiAgICAgZGF0YWJhc2VMb2FkZXItPnN0YXJ0KGlkYkZhY3RvcnksIGRvY3VtZW50LT5zZWN1cml0
eU9yaWdpbigpLCBkYXRhYmFzZU5hbWUpOwogfQogCi12b2lkIEluc3BlY3RvckluZGV4ZWREQkFn
ZW50OjpyZXF1ZXN0RGF0YShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYg
c2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcm
IG9iamVjdFN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIGludCBza2lwQ291bnQs
IGludCBwYWdlU2l6ZSwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGtleVJhbmdlLCBQ
YXNzUmVmUHRyPFJlcXVlc3REYXRhQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykKK3ZvaWQgSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5h
bWUsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGluZGV4TmFt
ZSwgaW50IHNraXBDb3VudCwgaW50IHBhZ2VTaXplLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0Pioga2V5UmFuZ2UsIFBhc3NSZWZQdHI8UmVxdWVzdERhdGFDYWxsYmFjaz4gcmVxdWVzdENh
bGxiYWNrKQogewogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZUFnZW50LT5maW5kRnJhbWVXaXRo
U2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pOwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IGFzc2VydERvY3VtZW50KGVycm9yU3RyaW5nLCBmcmFtZSk7CkBAIC02NTUsNyArNjU2LDcgQEAg
dm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGEoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcKIAogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4gaWRiS2V5
UmFuZ2UgPSBrZXlSYW5nZSA/IGlkYktleVJhbmdlRnJvbUtleVJhbmdlKGtleVJhbmdlLT5nZXQo
KSkgOiBudWxscHRyOwogICAgIGlmIChrZXlSYW5nZSAmJiAhaWRiS2V5UmFuZ2UpIHsKLSAgICAg
ICAgKmVycm9yU3RyaW5nID0gIkNhbiBub3QgcGFyc2Uga2V5IHJhbmdlLiI7CisgICAgICAgIGVy
cm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJDYW4gbm90IHBhcnNlIGtleSByYW5nZS4iKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzQ2LDcgKzc0Nyw3IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPENsZWFyT2JqZWN0U3RvcmVDYWxsYmFjaz4gbV9yZXF1ZXN0Q2FsbGJhY2s7CiB9Owog
Ci12b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpjbGVhck9iamVjdFN0b3JlKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBQYXNzUmVm
UHRyPENsZWFyT2JqZWN0U3RvcmVDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrKQordm9pZCBJbnNw
ZWN0b3JJbmRleGVkREJBZ2VudDo6Y2xlYXJPYmplY3RTdG9yZShFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VOYW1lLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgUGFzc1JlZlB0cjxDbGVhck9i
amVjdFN0b3JlQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykKIHsKICAgICBGcmFtZSogZnJhbWUg
PSBtX3BhZ2VBZ2VudC0+ZmluZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2lu
KTsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBhc3NlcnREb2N1bWVudChlcnJvclN0cmluZywg
ZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
ZGV4ZWREQkFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQuaAppbmRleCBhYWYxZmQ5M2JjNDUyNzFmZDg1OWNiN2E0MTJjZjIxMTQ5Yzc1NzI2
Li42NzRiYzM2NmJhOTA3ODFkNGNmMTY3ZDU1ODc3MjVkMGQ0MDgxNThiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaApAQCAtNTYs
MTIgKzU2LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlk
ZTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCi0gICAgdmlydHVhbCB2b2lk
IGVuYWJsZShFcnJvclN0cmluZyopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxl
KEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3REYXRhYmFz
ZU5hbWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgUGFzc1Jl
ZlB0cjxSZXF1ZXN0RGF0YWJhc2VOYW1lc0NhbGxiYWNrPikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHJlcXVlc3REYXRhYmFzZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2VjdXJp
dHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBQYXNzUmVmUHRyPFJlcXVlc3RE
YXRhYmFzZUNhbGxiYWNrPikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3REYXRh
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5n
JiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBjb25zdCBTdHJp
bmcmIGluZGV4TmFtZSwgaW50IHNraXBDb3VudCwgaW50IHBhZ2VTaXplLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxSZXF1ZXN0
RGF0YUNhbGxiYWNrPikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyT2JqZWN0U3Rv
cmUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGluX3NlY3VyaXR5T3JpZ2luLCBjb25zdCBT
dHJpbmcmIGluX2RhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBpbl9vYmplY3RTdG9yZU5hbWUs
IFBhc3NSZWZQdHI8Q2xlYXJPYmplY3RTdG9yZUNhbGxiYWNrPikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJlcXVl
c3REYXRhYmFzZU5hbWVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdp
biwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YWJhc2VOYW1lc0NhbGxiYWNrPikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3REYXRhYmFzZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBQYXNzUmVmUHRy
PFJlcXVlc3REYXRhYmFzZUNhbGxiYWNrPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJl
cXVlc3REYXRhKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgY29u
c3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBj
b25zdCBTdHJpbmcmIGluZGV4TmFtZSwgaW50IHNraXBDb3VudCwgaW50IHBhZ2VTaXplLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBrZXlSYW5nZSwgUGFzc1JlZlB0
cjxSZXF1ZXN0RGF0YUNhbGxiYWNrPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNsZWFy
T2JqZWN0U3RvcmUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGluX3NlY3VyaXR5T3JpZ2lu
LCBjb25zdCBTdHJpbmcmIGluX2RhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBpbl9vYmplY3RT
dG9yZU5hbWUsIFBhc3NSZWZQdHI8Q2xlYXJPYmplY3RTdG9yZUNhbGxiYWNrPikgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKaW5kZXggOTdkZmE0MDJiODEwZjZlZmRmNmViYTI0
NDA0YjM5ODRlNjNhYzFiZi4uZTk4M2YwN2UxZWRiMDI2OWU2YmI2Nzc5YmEyZTM2MDA1MzIwNzky
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJl
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuY3BwCkBAIC03MCw3ICs3MCw4IEBAIHZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSCiAg
ICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAgIG1fYmFja2VuZERpc3BhdGNo
ZXIuY2xlYXIoKTsKIAotICAgIGRpc2FibGUobnVsbHB0cik7CisgICAgRXJyb3JTdHJpbmcgdW51
c2VkOworICAgIGRpc2FibGUodW51c2VkKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JMYXllclRyZWVB
Z2VudDo6cmVzZXQoKQpAQCAtODEsMTIgKzgyLDEyIEBAIHZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQ6OnJlc2V0KCkKICAgICBtX2lkVG9Qc2V1ZG9FbGVtZW50LmNsZWFyKCk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCit2b2lkIElu
c3BlY3RvckxheWVyVHJlZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcmKQogewogICAgIG1faW5z
dHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQodGhpcyk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQordm9p
ZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCiB7CiAgICAg
bV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JMYXllclRyZWVBZ2VudChudWxscHRy
KTsKIH0KQEAgLTEwNiwyNiArMTA3LDI2IEBAIHZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6
OnBzZXVkb0VsZW1lbnREZXN0cm95ZWQoUHNldWRvRWxlbWVudCogcHNldWRvRWxlbWVuCiAgICAg
dW5iaW5kUHNldWRvRWxlbWVudChwc2V1ZG9FbGVtZW50KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JM
YXllclRyZWVBZ2VudDo6bGF5ZXJzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGlu
dCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpMYXllclRyZWU6OkxheWVyPj4mIGxheWVycykKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQ6OmxheWVyc0Zvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9k
ZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6TGF5ZXJUcmVlOjpMYXllcj4+JiBsYXllcnMpCiB7CiAgICAgbGF5ZXJzID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj46
OmNyZWF0ZSgpOwogCiAgICAgTm9kZSogbm9kZSA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy0+aW5z
cGVjdG9yRE9NQWdlbnQoKS0+bm9kZUZvcklkKG5vZGVJZCk7CiAgICAgaWYgKCFub2RlKSB7Ci0g
ICAgICAgICplcnJvclN0cmluZyA9ICJQcm92aWRlZCBub2RlIGlkIGRvZXNuJ3QgbWF0Y2ggYW55
IGtub3duIG5vZGUiOworICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiUHJvdmlk
ZWQgbm9kZSBpZCBkb2Vzbid0IG1hdGNoIGFueSBrbm93biBub2RlIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIo
KTsKICAgICBpZiAoIXJlbmRlcmVyKSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9ICJOb2RlIGZv
ciBwcm92aWRlZCBub2RlIGlkIGRvZXNuJ3QgaGF2ZSBhIHJlbmRlcmVyIjsKKyAgICAgICAgZXJy
b3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vZGUgZm9yIHByb3ZpZGVkIG5vZGUgaWQgZG9lc24n
dCBoYXZlIGEgcmVuZGVyZXIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGdhdGhl
ckxheWVyc1VzaW5nUmVuZGVyT2JqZWN0SGllcmFyY2h5KGVycm9yU3RyaW5nLCByZW5kZXJlciwg
bGF5ZXJzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6Z2F0aGVyTGF5ZXJz
VXNpbmdSZW5kZXJPYmplY3RIaWVyYXJjaHkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4+JiBsYXllcnMpCit2b2lkIEluc3Bl
Y3RvckxheWVyVHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNo
eShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlbmRlck9iamVjdCogcmVuZGVyZXIsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRy
ZWU6OkxheWVyPj4mIGxheWVycykKIHsKICAgICBpZiAocmVuZGVyZXItPmhhc0xheWVyKCkpIHsK
ICAgICAgICAgZ2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJMYXllckhpZXJhcmNoeShlcnJvclN0cmlu
ZywgdG9SZW5kZXJMYXllck1vZGVsT2JqZWN0KHJlbmRlcmVyKS0+bGF5ZXIoKSwgbGF5ZXJzKTsK
QEAgLTEzNiw3ICsxMzcsNyBAQCB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpnYXRoZXJM
YXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeShFcnJvclN0cmluZwogICAgICAgICBnYXRo
ZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeShlcnJvclN0cmluZywgcmVuZGVyZXIs
IGxheWVycyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmdhdGhlckxheWVy
c1VzaW5nUmVuZGVyTGF5ZXJIaWVyYXJjaHkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBSZW5k
ZXJMYXllciogcmVuZGVyTGF5ZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPj4mIGxheWVycykKK3ZvaWQgSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmdhdGhlckxheWVyc1VzaW5nUmVuZGVyTGF5ZXJIaWVyYXJj
aHkoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXll
clRyZWU6OkxheWVyPj4mIGxheWVycykKIHsKICAgICBpZiAocmVuZGVyTGF5ZXItPmlzQ29tcG9z
aXRlZCgpKQogICAgICAgICBsYXllcnMtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JMYXllcihlcnJv
clN0cmluZywgcmVuZGVyTGF5ZXIpKTsKQEAgLTE0NSw3ICsxNDYsNyBAQCB2b2lkIEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlckxheWVySGllcmFyY2h5KEVy
cm9yU3RyaW5nKgogICAgICAgICBnYXRoZXJMYXllcnNVc2luZ1JlbmRlckxheWVySGllcmFyY2h5
KGVycm9yU3RyaW5nLCByZW5kZXJMYXllciwgbGF5ZXJzKTsKIH0KIAotUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPiBJbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dDo6YnVpbGRPYmplY3RGb3JMYXllcihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFJlbmRlckxh
eWVyKiByZW5kZXJMYXllcikKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJU
cmVlOjpMYXllcj4gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTGF5ZXIo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIpCiB7CiAg
ICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9ICZyZW5kZXJMYXllci0+cmVuZGVyZXIoKTsKICAg
ICBSZW5kZXJMYXllckJhY2tpbmcqIGJhY2tpbmcgPSByZW5kZXJMYXllci0+YmFja2luZygpOwpA
QCAtMjAzLDcgKzIwNCw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJU
cmVlOjpMYXllcj4gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkCiAgICAgcmV0dXJuIGxh
eWVyT2JqZWN0OwogfQogCi1pbnQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmlkRm9yTm9kZShF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIE5vZGUqIG5vZGUpCitpbnQgSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQ6OmlkRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIE5vZGUqIG5vZGUp
CiB7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gMDsKQEAgLTIyNiwxMiArMjI3LDEy
IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpJbnRSZWN0PiBJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnVpCiAgICAgICAgIC5zZXRIZWlnaHQocmVjdC5oZWln
aHQoKSkucmVsZWFzZSgpOwogfQogCi12b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpyZWFz
b25zRm9yQ29tcG9zaXRpbmdMYXllcihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgbGF5ZXJJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJlZTo6Q29t
cG9zaXRpbmdSZWFzb25zPiYgY29tcG9zaXRpbmdSZWFzb25zKQordm9pZCBJbnNwZWN0b3JMYXll
clRyZWVBZ2VudDo6cmVhc29uc0ZvckNvbXBvc2l0aW5nTGF5ZXIoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIGxheWVySWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpMYXllclRyZWU6OkNvbXBvc2l0aW5nUmVhc29ucz4mIGNvbXBvc2l0aW5nUmVhc29ucykKIHsK
ICAgICBjb25zdCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIgPSBtX2lkVG9MYXllci5nZXQobGF5
ZXJJZCk7CiAKICAgICBpZiAoIXJlbmRlckxheWVyKSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9
ICJDb3VsZCBub3QgZmluZCBhIGJvdW5kIGxheWVyIGZvciB0aGUgcHJvdmlkZWQgaWQiOworICAg
ICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IGZpbmQgYSBib3VuZCBs
YXllciBmb3IgdGhlIHByb3ZpZGVkIGlkIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgK
aW5kZXggNmQ4NGM5YmMwYTE3ZWFlNTc2MzUxMWQ1OWM1NWZlMTRjNWFlYTQwZS4uODVhOWM0NmY1
YTAzMjk3ZDliZmYxZjcyNzc3ZmUzZmQ5ZDc3ZjNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKQEAgLTYxLDIzICs2MSwyMyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBwc2V1ZG9FbGVtZW50RGVzdHJveWVkKFBzZXVkb0VsZW1lbnQq
KTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCi0gICAgdmlydHVhbCB2b2lk
IGVuYWJsZShFcnJvclN0cmluZyopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxl
KEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGxheWVyc0Zvck5vZGUo
RXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4+Jikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHJlYXNvbnNGb3JDb21wb3NpdGluZ0xheWVyKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBsYXllcklkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJU
cmVlOjpDb21wb3NpdGluZ1JlYXNvbnM+Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGVu
YWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVy
cm9yU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGxheWVyc0Zvck5vZGUoRXJy
b3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4+Jikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIHJlYXNvbnNGb3JDb21wb3NpdGluZ0xheWVyKEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBsYXllcklkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVl
OjpDb21wb3NpdGluZ1JlYXNvbnM+Jikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgLy8gUmVu
ZGVyTGF5ZXItcmVsYXRlZCBtZXRob2RzLgogICAgIFN0cmluZyBiaW5kKGNvbnN0IFJlbmRlckxh
eWVyKik7CiAgICAgdm9pZCB1bmJpbmQoY29uc3QgUmVuZGVyTGF5ZXIqKTsKIAotICAgIHZvaWQg
Z2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJPYmplY3RIaWVyYXJjaHkoRXJyb3JTdHJpbmcqLCBSZW5k
ZXJPYmplY3QqLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4+Jik7Ci0gICAgdm9pZCBnYXRoZXJMYXllcnNVc2lu
Z1JlbmRlckxheWVySGllcmFyY2h5KEVycm9yU3RyaW5nKiwgUmVuZGVyTGF5ZXIqLCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVl
OjpMYXllcj4+Jik7CisgICAgdm9pZCBnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJh
cmNoeShFcnJvclN0cmluZyYsIFJlbmRlck9iamVjdCosIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPj4mKTsKKyAg
ICB2b2lkIGdhdGhlckxheWVyc1VzaW5nUmVuZGVyTGF5ZXJIaWVyYXJjaHkoRXJyb3JTdHJpbmcm
LCBSZW5kZXJMYXllciosIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPj4mKTsKIAotICAgIFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4gYnVpbGRPYmplY3RGb3JMYXllcihF
cnJvclN0cmluZyosIFJlbmRlckxheWVyKik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpMYXllclRyZWU6OkxheWVyPiBidWlsZE9iamVjdEZvckxheWVyKEVycm9yU3RyaW5n
JiwgUmVuZGVyTGF5ZXIqKTsKICAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Okxh
eWVyVHJlZTo6SW50UmVjdD4gYnVpbGRPYmplY3RGb3JJbnRSZWN0KGNvbnN0IEludFJlY3QmKTsK
IAotICAgIGludCBpZEZvck5vZGUoRXJyb3JTdHJpbmcqLCBOb2RlKik7CisgICAgaW50IGlkRm9y
Tm9kZShFcnJvclN0cmluZyYsIE5vZGUqKTsKIAogICAgIFN0cmluZyBiaW5kUHNldWRvRWxlbWVu
dChQc2V1ZG9FbGVtZW50Kik7CiAgICAgdm9pZCB1bmJpbmRQc2V1ZG9FbGVtZW50KFBzZXVkb0Vs
ZW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQ
YWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAKaW5kZXggZjdjNWIxODA0NGZlNjQ1Zjc2OGEzMTM2NTBlYWQ4MTM3MjE4YWVhOS4uNDA5
OWIyOWY0MzcxOTY4MWIxYzRmNDhjZjdkMWFlMzIwMTU4NGQyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTE1NSw3ICsxNTUsNyBA
QCBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KENhY2hlZFJl
c291cmNlKiBjYWNoZWRSZXNvdXJjZSwgUwogICAgIH0KIAogICAgIGlmIChoYXNaZXJvU2l6ZSkg
ewotICAgICAgICAqcmVzdWx0ID0gIiI7CisgICAgICAgICpyZXN1bHQgPSBlbXB0eVN0cmluZygp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTIxMyw3ICsyMTMsNyBAQCBib29s
IEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoY29uc3QgY2hhciogZGF0YSwgdW5zaWdu
ZWQgc2l6ZSwgY29uc3QgU3RyaQogfQogCiAvLyBzdGF0aWMKLXZvaWQgSW5zcGVjdG9yUGFnZUFn
ZW50OjpyZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBGcmFtZSogZnJh
bWUsIGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcqIHJlc3VsdCwgYm9vbCogYmFzZTY0RW5jb2RlZCkK
K3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcqIHJlc3VsdCwg
Ym9vbCogYmFzZTY0RW5jb2RlZCkKIHsKICAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gYXNz
ZXJ0RG9jdW1lbnRMb2FkZXIoZXJyb3JTdHJpbmcsIGZyYW1lKTsKICAgICBpZiAoIWxvYWRlcikK
QEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VDb250
ZW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgRnJhbWUqIGZyYW1lLAogICAgICAgICBzdWNj
ZXNzID0gY2FjaGVkUmVzb3VyY2VDb250ZW50KGNhY2hlZFJlc291cmNlKGZyYW1lLCB1cmwpLCBy
ZXN1bHQsIGJhc2U2NEVuY29kZWQpOwogCiAgICAgaWYgKCFzdWNjZXNzKQotICAgICAgICAqZXJy
b3JTdHJpbmcgPSAiTm8gcmVzb3VyY2Ugd2l0aCBnaXZlbiBVUkwgZm91bmQiOworICAgICAgICBl
cnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiTm8gcmVzb3VyY2Ugd2l0aCBnaXZlbiBVUkwgZm91
bmQiKTsKIH0KIAogLy9zdGF0aWMKQEAgLTM1NCwxNCArMzU0LDE0IEBAIHZvaWQgSW5zcGVjdG9y
UGFnZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25u
ZWN0UmVhc29uCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAgIG1fYmFj
a2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKIAotICAgIEVycm9yU3RyaW5nIGVycm9yOwotICAgIGRp
c2FibGUoJmVycm9yKTsKKyAgICBFcnJvclN0cmluZyB1bnVzZWQ7CisgICAgZGlzYWJsZSh1bnVz
ZWQpOwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgdXBkYXRlVG91Y2hFdmVudEVtdWxh
dGlvbkluUGFnZShmYWxzZSk7CiAjZW5kaWYKIH0KIAotdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OmVuYWJsZShFcnJvclN0cmluZyopCit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZW5hYmxlKEVy
cm9yU3RyaW5nJikKIHsKICAgICBtX2VuYWJsZWQgPSB0cnVlOwogICAgIG1faW5zdHJ1bWVudGlu
Z0FnZW50cy0+c2V0SW5zcGVjdG9yUGFnZUFnZW50KHRoaXMpOwpAQCAtMzcwLDIxICszNzAsMjIg
QEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCiAgICAgICAg
IG1fb3JpZ2luYWxTY3JpcHRFeGVjdXRpb25EaXNhYmxlZCA9ICFmcmFtZS0+c2V0dGluZ3MoKS5p
c1NjcmlwdEVuYWJsZWQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpc2FibGUo
RXJyb3JTdHJpbmcqKQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJp
bmcmKQogewogICAgIG1fZW5hYmxlZCA9IGZhbHNlOwogICAgIG1fc2NyaXB0c1RvRXZhbHVhdGVP
bkxvYWQuY2xlYXIoKTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvclBh
Z2VBZ2VudChudWxscHRyKTsKIAotICAgIHNldFNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkKG51bGxw
dHIsIG1fb3JpZ2luYWxTY3JpcHRFeGVjdXRpb25EaXNhYmxlZCk7Ci0gICAgc2V0U2hvd1BhaW50
UmVjdHMobnVsbHB0ciwgZmFsc2UpOwotICAgIHNldFNob3dEZWJ1Z0JvcmRlcnMobnVsbHB0ciwg
ZmFsc2UpOwotICAgIHNldFNob3dGUFNDb3VudGVyKG51bGxwdHIsIGZhbHNlKTsKLSAgICBzZXRF
bXVsYXRlZE1lZGlhKG51bGxwdHIsICIiKTsKLSAgICBzZXRDb250aW51b3VzUGFpbnRpbmdFbmFi
bGVkKG51bGxwdHIsIGZhbHNlKTsKKyAgICBFcnJvclN0cmluZyB1bnVzZWQ7CisgICAgc2V0U2Ny
aXB0RXhlY3V0aW9uRGlzYWJsZWQodW51c2VkLCBtX29yaWdpbmFsU2NyaXB0RXhlY3V0aW9uRGlz
YWJsZWQpOworICAgIHNldFNob3dQYWludFJlY3RzKHVudXNlZCwgZmFsc2UpOworICAgIHNldFNo
b3dEZWJ1Z0JvcmRlcnModW51c2VkLCBmYWxzZSk7CisgICAgc2V0U2hvd0ZQU0NvdW50ZXIodW51
c2VkLCBmYWxzZSk7CisgICAgc2V0RW11bGF0ZWRNZWRpYSh1bnVzZWQsIGVtcHR5U3RyaW5nKCkp
OworICAgIHNldENvbnRpbnVvdXNQYWludGluZ0VuYWJsZWQodW51c2VkLCBmYWxzZSk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjphZGRTY3JpcHRUb0V2YWx1YXRlT25Mb2FkKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIFN0cmluZyogaWRlbnRpZmllcikKK3ZvaWQg
SW5zcGVjdG9yUGFnZUFnZW50OjphZGRTY3JpcHRUb0V2YWx1YXRlT25Mb2FkKEVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIFN0cmluZyogaWRlbnRpZmllcikKIHsKICAgICBpZiAo
IW1fc2NyaXB0c1RvRXZhbHVhdGVPbkxvYWQpCiAgICAgICAgIG1fc2NyaXB0c1RvRXZhbHVhdGVP
bkxvYWQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwpAQCAtMzk4LDIzICszOTksMjMgQEAg
dm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmFkZFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIHMKICAgICBtX3NjcmlwdHNUb0V2YWx1YXRlT25Mb2FkLT5z
ZXRTdHJpbmcoKmlkZW50aWZpZXIsIHNvdXJjZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFn
ZW50OjpyZW1vdmVTY3JpcHRUb0V2YWx1YXRlT25Mb2FkKEVycm9yU3RyaW5nKiBlcnJvciwgY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyKQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbW92ZVNj
cmlwdFRvRXZhbHVhdGVPbkxvYWQoRXJyb3JTdHJpbmcmIGVycm9yLCBjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIpCiB7CiAgICAgaWYgKCFtX3NjcmlwdHNUb0V2YWx1YXRlT25Mb2FkIHx8IG1fc2Ny
aXB0c1RvRXZhbHVhdGVPbkxvYWQtPmZpbmQoaWRlbnRpZmllcikgPT0gbV9zY3JpcHRzVG9FdmFs
dWF0ZU9uTG9hZC0+ZW5kKCkpIHsKLSAgICAgICAgKmVycm9yID0gIlNjcmlwdCBub3QgZm91bmQi
OworICAgICAgICBlcnJvciA9IEFTQ0lJTGl0ZXJhbCgiU2NyaXB0IG5vdCBmb3VuZCIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9zY3JpcHRzVG9FdmFsdWF0ZU9uTG9hZC0+cmVt
b3ZlKGlkZW50aWZpZXIpOwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVsb2FkKEVy
cm9yU3RyaW5nKiwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJZ25vcmVDYWNoZSwgY29uc3Qg
U3RyaW5nKiBvcHRpb25hbFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQpCit2b2lkIEluc3BlY3RvclBh
Z2VBZ2VudDo6cmVsb2FkKEVycm9yU3RyaW5nJiwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJ
Z25vcmVDYWNoZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQp
CiB7CiAgICAgbV9wZW5kaW5nU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZE9uY2UgPSBvcHRpb25hbFNj
cmlwdFRvRXZhbHVhdGVPbkxvYWQgPyAqb3B0aW9uYWxTY3JpcHRUb0V2YWx1YXRlT25Mb2FkIDog
IiI7CiAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5yZWxvYWQob3B0aW9uYWxJZ25v
cmVDYWNoZSA/ICpvcHRpb25hbElnbm9yZUNhY2hlIDogZmFsc2UpOwogfQogCi12b2lkIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6bmF2aWdhdGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVybCkK
K3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpuYXZpZ2F0ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgdXJsKQogewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvcihEZWZpbml0
ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPm1h
aW5GcmFtZSgpOwpAQCAtNDg2LDcgKzQ4Nyw3IEBAIHN0YXRpYyBWZWN0b3I8VVJMPiBhbGxSZXNv
dXJjZXNVUkxzRm9yRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRDb29raWVzKEVycm9yU3RyaW5nKiwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkNv
b2tpZT4+JiBjb29raWVzKQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMoRXJy
b3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UGFnZTo6Q29va2llPj4mIGNvb2tpZXMpCiB7CiAgICAgLy8gSWYgd2UgY2FuIGdl
dCByYXcgY29va2llcy4KICAgICBMaXN0SGFzaFNldDxDb29raWU+IHJhd0Nvb2tpZXNMaXN0OwpA
QCAtNTI4LDE5ICs1MjksMTkgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMo
RXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXIKICAgICAgICAgY29v
a2llcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBh
Z2U6OkNvb2tpZT46OmNyZWF0ZSgpOwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGVs
ZXRlQ29va2llKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lLCBjb25zdCBT
dHJpbmcmIHVybCkKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkZWxldGVDb29raWUoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUsIGNvbnN0IFN0cmluZyYgdXJsKQogewog
ICAgIFVSTCBwYXJzZWRVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpOwogICAgIGZvciAoRnJhbWUq
IGZyYW1lID0gJm1fcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVl
KCkudHJhdmVyc2VOZXh0KCZtX3BhZ2UtPm1haW5GcmFtZSgpKSkKICAgICAgICAgV2ViQ29yZTo6
ZGVsZXRlQ29va2llKGZyYW1lLT5kb2N1bWVudCgpLCBwYXJzZWRVUkwsIGNvb2tpZU5hbWUpOwog
fQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0UmVzb3VyY2VUcmVlKEVycm9yU3RyaW5n
KiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiYg
b2JqZWN0KQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldFJlc291cmNlVHJlZShFcnJvclN0
cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpGcmFtZVJlc291cmNlVHJl
ZT4mIG9iamVjdCkKIHsKICAgICBvYmplY3QgPSBidWlsZE9iamVjdEZvckZyYW1lVHJlZSgmbV9w
YWdlLT5tYWluRnJhbWUoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRSZXNv
dXJjZUNvbnRlbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1l
SWQsIGNvbnN0IFN0cmluZyYgdXJsLCBTdHJpbmcqIGNvbnRlbnQsIGJvb2wqIGJhc2U2NEVuY29k
ZWQpCit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0UmVzb3VyY2VDb250ZW50KEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVy
bCwgU3RyaW5nKiBjb250ZW50LCBib29sKiBiYXNlNjRFbmNvZGVkKQogewogICAgIEZyYW1lKiBm
cmFtZSA9IGFzc2VydEZyYW1lKGVycm9yU3RyaW5nLCBmcmFtZUlkKTsKICAgICBpZiAoIWZyYW1l
KQpAQCAtNTYyLDcgKzU2Myw3IEBAIHN0YXRpYyBib29sIHRleHRDb250ZW50Rm9yQ2FjaGVkUmVz
b3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlLCBTdHJpbmcqCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJjZShF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2
ZSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hN
YXRjaD4+JiByZXN1bHRzKQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3Vy
Y2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5z
aXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2Vh
cmNoTWF0Y2g+PiYgcmVzdWx0cykKIHsKICAgICByZXN1bHRzID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD46
OmNyZWF0ZSgpOwogCkBAIC02MDUsNyArNjA2LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0PiBidWlsZE9iamVjdEZvclNlYXJjaFIK
ICAgICAgICAgLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJj
aEluUmVzb3VyY2VzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBib29s
KiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFs
SXNSZWdleCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3VsdD4+JiByZXN1bHRzKQordm9pZCBJbnNwZWN0b3JQYWdl
QWdlbnQ6OnNlYXJjaEluUmVzb3VyY2VzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB0ZXh0
LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNv
bnN0IG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3VsdD4+JiByZXN1bHRzKQogewogICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQ
YWdlOjpTZWFyY2hSZXN1bHQ+PiBzZWFyY2hSZXN1bHRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pjo6Y3JlYXRlKCk7
CiAKQEAgLTYzNCw3ICs2MzUsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5S
ZXNvdXJjZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbgogICAgIHJlc3Vs
dHMgPSBzZWFyY2hSZXN1bHRzOwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0RG9j
dW1lbnRDb250ZW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFt
ZUlkLCBjb25zdCBTdHJpbmcmIGh0bWwpCit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0RG9j
dW1lbnRDb250ZW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFt
ZUlkLCBjb25zdCBTdHJpbmcmIGh0bWwpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gYXNzZXJ0RnJh
bWUoZXJyb3JTdHJpbmcsIGZyYW1lSWQpOwogICAgIGlmICghZnJhbWUpCkBAIC02NDIsNDEgKzY0
Myw0MSBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0RG9jdW1lbnRDb250ZW50KEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaQogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkgewotICAgICAgICAqZXJy
b3JTdHJpbmcgPSAiTm8gRG9jdW1lbnQgaW5zdGFuY2UgdG8gc2V0IEhUTUwgZm9yIjsKKyAgICAg
ICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vIERvY3VtZW50IGluc3RhbmNlIHRvIHNl
dCBIVE1MIGZvciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIERPTVBhdGNoU3VwcG9y
dDo6cGF0Y2hEb2N1bWVudChkb2N1bWVudCwgaHRtbCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpzZXRTaG93UGFpbnRSZWN0cyhFcnJvclN0cmluZyosIGJvb2wgc2hvdykKK3ZvaWQg
SW5zcGVjdG9yUGFnZUFnZW50OjpzZXRTaG93UGFpbnRSZWN0cyhFcnJvclN0cmluZyYsIGJvb2wg
c2hvdykKIHsKICAgICBtX3Nob3dQYWludFJlY3RzID0gc2hvdzsKICAgICBtX2NsaWVudC0+c2V0
U2hvd1BhaW50UmVjdHMoc2hvdyk7Ci0gICAgCisKICAgICBpZiAobV9jbGllbnQtPm92ZXJyaWRl
c1Nob3dQYWludFJlY3RzKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fb3ZlcmxheS0+c2V0
U2hvd2luZ1BhaW50UmVjdHMoc2hvdyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpj
YW5TaG93RGVidWdCb3JkZXJzKEVycm9yU3RyaW5nKiwgYm9vbCogb3V0UGFyYW0pCit2b2lkIElu
c3BlY3RvclBhZ2VBZ2VudDo6Y2FuU2hvd0RlYnVnQm9yZGVycyhFcnJvclN0cmluZyYsIGJvb2wq
IG91dFBhcmFtKQogewogICAgICpvdXRQYXJhbSA9IG1fY2xpZW50LT5jYW5TaG93RGVidWdCb3Jk
ZXJzKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZXRTaG93RGVidWdCb3JkZXJz
KEVycm9yU3RyaW5nKiwgYm9vbCBzaG93KQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldFNo
b3dEZWJ1Z0JvcmRlcnMoRXJyb3JTdHJpbmcmLCBib29sIHNob3cpCiB7CiAgICAgbV9jbGllbnQt
PnNldFNob3dEZWJ1Z0JvcmRlcnMoc2hvdyk7CiAgICAgaWYgKG1haW5GcmFtZSgpICYmIG1haW5G
cmFtZSgpLT52aWV3KCkpCiAgICAgICAgIG1haW5GcmFtZSgpLT52aWV3KCktPmludmFsaWRhdGUo
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmNhblNob3dGUFNDb3VudGVyKEVycm9y
U3RyaW5nKiwgYm9vbCogb3V0UGFyYW0pCit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FuU2hv
d0ZQU0NvdW50ZXIoRXJyb3JTdHJpbmcmLCBib29sKiBvdXRQYXJhbSkKIHsKICAgICAqb3V0UGFy
YW0gPSBtX2NsaWVudC0+Y2FuU2hvd0ZQU0NvdW50ZXIoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OnNldFNob3dGUFNDb3VudGVyKEVycm9yU3RyaW5nKiwgYm9vbCBzaG93KQordm9p
ZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldFNob3dGUFNDb3VudGVyKEVycm9yU3RyaW5nJiwgYm9v
bCBzaG93KQogewogICAgIG1fY2xpZW50LT5zZXRTaG93RlBTQ291bnRlcihzaG93KTsKIApAQCAt
Njg0LDEyICs2ODUsMTIgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldFNob3dGUFNDb3Vu
dGVyKEVycm9yU3RyaW5nKiwgYm9vbCBzaG93KQogICAgICAgICBtYWluRnJhbWUoKS0+dmlldygp
LT5pbnZhbGlkYXRlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpjYW5Db250aW51
b3VzbHlQYWludChFcnJvclN0cmluZyosIGJvb2wqIG91dFBhcmFtKQordm9pZCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmNhbkNvbnRpbnVvdXNseVBhaW50KEVycm9yU3RyaW5nJiwgYm9vbCogb3V0UGFy
YW0pCiB7CiAgICAgKm91dFBhcmFtID0gbV9jbGllbnQtPmNhbkNvbnRpbnVvdXNseVBhaW50KCk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZXRDb250aW51b3VzUGFpbnRpbmdFbmFi
bGVkKEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkKQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OnNldENvbnRpbnVvdXNQYWludGluZ0VuYWJsZWQoRXJyb3JTdHJpbmcmLCBib29sIGVuYWJsZWQp
CiB7CiAgICAgbV9jbGllbnQtPnNldENvbnRpbnVvdXNQYWludGluZ0VuYWJsZWQoZW5hYmxlZCk7
CiAKQEAgLTY5Nyw3ICs2OTgsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0Q29udGlu
dW91c1BhaW50aW5nRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wgZW5hYmxlZAogICAgICAgICBt
YWluRnJhbWUoKS0+dmlldygpLT5pbnZhbGlkYXRlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpnZXRTY3JpcHRFeGVjdXRpb25TdGF0dXMoRXJyb3JTdHJpbmcqLCBJbnNwZWN0b3JQ
YWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXN1bHQqIHN0YXR1cykKK3ZvaWQgSW5zcGVj
dG9yUGFnZUFnZW50OjpnZXRTY3JpcHRFeGVjdXRpb25TdGF0dXMoRXJyb3JTdHJpbmcmLCBJbnNw
ZWN0b3JQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXN1bHQqIHN0YXR1cykKIHsKICAg
ICBib29sIGRpc2FibGVkQnlTY3JpcHRDb250cm9sbGVyID0gZmFsc2U7CiAgICAgYm9vbCBkaXNh
YmxlZEluU2V0dGluZ3MgPSBmYWxzZTsKQEAgLTcxOCw3ICs3MTksNyBAQCB2b2lkIEluc3BlY3Rv
clBhZ2VBZ2VudDo6Z2V0U2NyaXB0RXhlY3V0aW9uU3RhdHVzKEVycm9yU3RyaW5nKiwgSW5zcGVj
dG9yUGFnZUJhYwogICAgICAgICAqc3RhdHVzID0gSW5zcGVjdG9yUGFnZUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlcjo6UmVzdWx0OjpGb3JiaWRkZW47CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFn
ZW50OjpzZXRTY3JpcHRFeGVjdXRpb25EaXNhYmxlZChFcnJvclN0cmluZyosIGJvb2wgdmFsdWUp
Cit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2NyaXB0RXhlY3V0aW9uRGlzYWJsZWQoRXJy
b3JTdHJpbmcmLCBib29sIHZhbHVlKQogewogICAgIGlmICghbWFpbkZyYW1lKCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTgyOSwyMSArODMwLDIxIEBAIEZyYW1lKiBJbnNwZWN0b3JQYWdlQWdlbnQ6
OmZpbmRGcmFtZVdpdGhTZWN1cml0eU9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpblJhd1N0CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUZyYW1lKiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmFzc2Vy
dEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZUlkKQor
RnJhbWUqIEluc3BlY3RvclBhZ2VBZ2VudDo6YXNzZXJ0RnJhbWUoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gZnJh
bWVGb3JJZChmcmFtZUlkKTsKICAgICBpZiAoIWZyYW1lKQotICAgICAgICAqZXJyb3JTdHJpbmcg
PSAiTm8gZnJhbWUgZm9yIGdpdmVuIGlkIGZvdW5kIjsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBB
U0NJSUxpdGVyYWwoIk5vIGZyYW1lIGZvciBnaXZlbiBpZCBmb3VuZCIpOwogICAgIHJldHVybiBm
cmFtZTsKIH0KIAogLy8gc3RhdGljCi1Eb2N1bWVudExvYWRlciogSW5zcGVjdG9yUGFnZUFnZW50
Ojphc3NlcnREb2N1bWVudExvYWRlcihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIEZyYW1lKiBm
cmFtZSkKK0RvY3VtZW50TG9hZGVyKiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmFzc2VydERvY3VtZW50
TG9hZGVyKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgRnJhbWUqIGZyYW1lKQogewogICAgIEZy
YW1lTG9hZGVyJiBmcmFtZUxvYWRlciA9IGZyYW1lLT5sb2FkZXIoKTsKICAgICBEb2N1bWVudExv
YWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZUxvYWRlci5kb2N1bWVudExvYWRlcigpOwogICAg
IGlmICghZG9jdW1lbnRMb2FkZXIpCi0gICAgICAgICplcnJvclN0cmluZyA9ICJObyBkb2N1bWVu
dExvYWRlciBmb3IgZ2l2ZW4gZnJhbWUgZm91bmQiOworICAgICAgICBlcnJvclN0cmluZyA9IEFT
Q0lJTGl0ZXJhbCgiTm8gZG9jdW1lbnRMb2FkZXIgZm9yIGdpdmVuIGZyYW1lIGZvdW5kIik7CiAg
ICAgcmV0dXJuIGRvY3VtZW50TG9hZGVyOwogfQogCkBAIC05OTgsMTggKzk5OSwxOCBAQCB2b2lk
IEluc3BlY3RvclBhZ2VBZ2VudDo6dXBkYXRlVG91Y2hFdmVudEVtdWxhdGlvbkluUGFnZShib29s
IGVuYWJsZWQpCiB9CiAjZW5kaWYKIAotdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldFRvdWNo
RW11bGF0aW9uRW5hYmxlZChFcnJvclN0cmluZyogZXJyb3IsIGJvb2wgZW5hYmxlZCkKK3ZvaWQg
SW5zcGVjdG9yUGFnZUFnZW50OjpzZXRUb3VjaEVtdWxhdGlvbkVuYWJsZWQoRXJyb3JTdHJpbmcm
IGVycm9yLCBib29sIGVuYWJsZWQpCiB7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBV
TlVTRURfUEFSQU0oZXJyb3IpOwogICAgIHVwZGF0ZVRvdWNoRXZlbnRFbXVsYXRpb25JblBhZ2Uo
ZW5hYmxlZCk7CiAjZWxzZQotICAgICplcnJvciA9ICJUb3VjaCBldmVudHMgZW11bGF0aW9uIG5v
dCBzdXBwb3J0ZWQiOworICAgIGVycm9yID0gQVNDSUlMaXRlcmFsKCJUb3VjaCBldmVudHMgZW11
bGF0aW9uIG5vdCBzdXBwb3J0ZWQiKTsKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CiAjZW5k
aWYKIH0KIAotdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldEVtdWxhdGVkTWVkaWEoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIG1lZGlhKQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNl
dEVtdWxhdGVkTWVkaWEoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG1lZGlhKQogewogICAg
IGlmIChtZWRpYSA9PSBtX2VtdWxhdGVkTWVkaWEpCiAgICAgICAgIHJldHVybjsKQEAgLTEwMjgs
MTggKzEwMjksMTggQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmFwcGx5RW11bGF0ZWRNZWRp
YShTdHJpbmcqIG1lZGlhKQogICAgICAgICAqbWVkaWEgPSBtX2VtdWxhdGVkTWVkaWE7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlKEVy
cm9yU3RyaW5nKiwgYm9vbCogb3V0UGFyYW0pCit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0
Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShFcnJvclN0cmluZyYsIGJvb2wqIG91dFBhcmFtKQog
ewogICAgICpvdXRQYXJhbSA9IG1fcGFnZS0+c2V0dGluZ3MoKS5zaG93RGVidWdCb3JkZXJzKCkg
fHwgbV9wYWdlLT5zZXR0aW5ncygpLnNob3dSZXBhaW50Q291bnRlcigpOwogfQogCi12b2lkIElu
c3BlY3RvclBhZ2VBZ2VudDo6c2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShFcnJvclN0cmlu
ZyosIGJvb2wgdmlzaWJsZSkKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZXRDb21wb3NpdGlu
Z0JvcmRlcnNWaXNpYmxlKEVycm9yU3RyaW5nJiwgYm9vbCB2aXNpYmxlKQogewogICAgIG1fcGFn
ZS0+c2V0dGluZ3MoKS5zZXRTaG93RGVidWdCb3JkZXJzKHZpc2libGUpOwogICAgIG1fcGFnZS0+
c2V0dGluZ3MoKS5zZXRTaG93UmVwYWludENvdW50ZXIodmlzaWJsZSk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yUGFnZUFnZW50OjpzbmFwc2hvdE5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBp
bnQgbm9kZUlkLCBTdHJpbmcqIG91dERhdGFVUkwpCit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6
c25hcHNob3ROb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgU3RyaW5n
KiBvdXREYXRhVVJMKQogewogICAgIEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOwogICAgIEFT
U0VSVChmcmFtZSk7CkBAIC0xMDUyLDE0ICsxMDUzLDE0IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFn
ZW50OjpzbmFwc2hvdE5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBT
dHJpCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90ID0gV2ViQ29y
ZTo6c25hcHNob3ROb2RlKCpmcmFtZSwgKm5vZGUpOwogICAgIGlmICghc25hcHNob3QpIHsKLSAg
ICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJDb3VsZCBub3QgY2FwdHVyZSBzbmFw
c2hvdCIpOworICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IGNh
cHR1cmUgc25hcHNob3QiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgICpvdXREYXRh
VVJMID0gc25hcHNob3QtPnRvRGF0YVVSTChBU0NJSUxpdGVyYWwoImltYWdlL3BuZyIpKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNuYXBzaG90UmVjdChFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25zdCBTdHJp
bmcmIGNvb3JkaW5hdGVTeXN0ZW0sIFN0cmluZyogb3V0RGF0YVVSTCkKK3ZvaWQgSW5zcGVjdG9y
UGFnZUFnZW50OjpzbmFwc2hvdFJlY3QoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgeCwg
aW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgY29uc3QgU3RyaW5nJiBjb29yZGluYXRlU3lz
dGVtLCBTdHJpbmcqIG91dERhdGFVUkwpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1l
KCk7CiAgICAgQVNTRVJUKGZyYW1lKTsKQEAgLTEwNzIsMzEgKzEwNzMsMzEgQEAgdm9pZCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OnNuYXBzaG90UmVjdChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGlu
dCB4LCBpbnQgeSwgaW4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90
ID0gc25hcHNob3RGcmFtZVJlY3QoKmZyYW1lLCByZWN0YW5nbGUsIG9wdGlvbnMpOwogCiAgICAg
aWYgKCFzbmFwc2hvdCkgewotICAgICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkNv
dWxkIG5vdCBjYXB0dXJlIHNuYXBzaG90Iik7CisgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlM
aXRlcmFsKCJDb3VsZCBub3QgY2FwdHVyZSBzbmFwc2hvdCIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgKm91dERhdGFVUkwgPSBzbmFwc2hvdC0+dG9EYXRhVVJMKEFTQ0lJTGl0ZXJh
bCgiaW1hZ2UvcG5nIikpOwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6aGFuZGxlSmF2
YVNjcmlwdERpYWxvZyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGJvb2wgYWNjZXB0LCBjb25z
dCBTdHJpbmcqIHByb21wdFRleHQpCit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6aGFuZGxlSmF2
YVNjcmlwdERpYWxvZyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGJvb2wgYWNjZXB0LCBjb25z
dCBTdHJpbmcqIHByb21wdFRleHQpCiB7CiAgICAgaWYgKCFtX2NsaWVudC0+aGFuZGxlSmF2YVNj
cmlwdERpYWxvZyhhY2NlcHQsIHByb21wdFRleHQpKQotICAgICAgICAqZXJyb3JTdHJpbmcgPSAi
Q291bGQgbm90IGhhbmRsZSBKYXZhU2NyaXB0IGRpYWxvZyI7CisgICAgICAgIGVycm9yU3RyaW5n
ID0gQVNDSUlMaXRlcmFsKCJDb3VsZCBub3QgaGFuZGxlIEphdmFTY3JpcHQgZGlhbG9nIik7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjphcmNoaXZlKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgU3RyaW5nKiBkYXRhKQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmFyY2hpdmUoRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBTdHJpbmcqIGRhdGEpCiB7CiAgICAgRnJhbWUqIGZyYW1l
ID0gbWFpbkZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkgewotICAgICAgICAqZXJyb3JTdHJpbmcg
PSAiTm8gbWFpbiBmcmFtZSI7CisgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJO
byBtYWluIGZyYW1lIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICNpZiBFTkFCTEUoV0VC
X0FSQ0hJVkUpICYmIFVTRShDRikKICAgICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2
ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShmcmFtZSk7CiAgICAgaWYgKCFhcmNoaXZlKSB7
Ci0gICAgICAgICplcnJvclN0cmluZyA9ICJDb3VsZCBub3QgY3JlYXRlIHdlYiBhcmNoaXZlIGZv
ciBtYWluIGZyYW1lIjsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkNvdWxk
IG5vdCBjcmVhdGUgd2ViIGFyY2hpdmUgZm9yIG1haW4gZnJhbWUiKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMTEwNCw3ICsxMTA1LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OmFyY2hpdmUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBTdHJpbmcqIGRhdGEpCiAgICAgKmRh
dGEgPSBiYXNlNjRFbmNvZGUoQ0ZEYXRhR2V0Qnl0ZVB0cihidWZmZXIuZ2V0KCkpLCBDRkRhdGFH
ZXRMZW5ndGgoYnVmZmVyLmdldCgpKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShkYXRhKTsK
LSAgICAqZXJyb3JTdHJpbmcgPSAiTm8gc3VwcG9ydCBmb3IgY3JlYXRpbmcgYXJjaGl2ZXMiOwor
ICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJObyBzdXBwb3J0IGZvciBjcmVhdGluZyBh
cmNoaXZlcyIpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuaAppbmRleCAyNWZlMWQ1YTYwM2FlMTMyMDdlMTRiMzQzMDgxZTY3ZDdi
ZTJlYWU3Li4xOGRjYzNmYTE5MGE3NWEyZDhjNTU1NWQzNDAzNWRmMThjMWI5MjhkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC04NSw3ICs4
NSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGNhY2hlZFJlc291cmNlQ29udGVudChD
YWNoZWRSZXNvdXJjZSosIFN0cmluZyogcmVzdWx0LCBib29sKiBiYXNlNjRFbmNvZGVkKTsKICAg
ICBzdGF0aWMgYm9vbCBzaGFyZWRCdWZmZXJDb250ZW50KFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUs
IFN0cmluZyogcmVzdWx0KTsKLSAgICBzdGF0aWMgdm9pZCByZXNvdXJjZUNvbnRlbnQoRXJyb3JT
dHJpbmcqLCBGcmFtZSosIGNvbnN0IFVSTCYsIFN0cmluZyogcmVzdWx0LCBib29sKiBiYXNlNjRF
bmNvZGVkKTsKKyAgICBzdGF0aWMgdm9pZCByZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJpbmcmLCBG
cmFtZSosIGNvbnN0IFVSTCYsIFN0cmluZyogcmVzdWx0LCBib29sKiBiYXNlNjRFbmNvZGVkKTsK
ICAgICBzdGF0aWMgU3RyaW5nIHNvdXJjZU1hcFVSTEZvclJlc291cmNlKENhY2hlZFJlc291cmNl
Kik7CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YShG
cmFtZSosIGNvbnN0IFVSTCYsIFN0cmluZyogdGV4dEVuY29kaW5nTmFtZSk7CkBAIC05NSwzNiAr
OTUsMzYgQEAgcHVibGljOgogICAgIHN0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpS
ZXNvdXJjZVR5cGUgY2FjaGVkUmVzb3VyY2VUeXBlSnNvbihjb25zdCBDYWNoZWRSZXNvdXJjZSYp
OwogCiAgICAgLy8gUGFnZSBBUEkgZm9yIEluc3BlY3RvckZyb250ZW5kCi0gICAgdmlydHVhbCB2
b2lkIGVuYWJsZShFcnJvclN0cmluZyopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaXNh
YmxlKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFkZFNjcmlwdFRv
RXZhbHVhdGVPbkxvYWQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgU3RyaW5n
KiByZXN1bHQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTY3JpcHRUb0V2YWx1
YXRlT25Mb2FkKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVsb2FkKEVycm9yU3RyaW5nKiwgY29uc3QgYm9vbCogb3B0
aW9uYWxJZ25vcmVDYWNoZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFNjcmlwdFRvRXZhbHVhdGVP
bkxvYWQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBuYXZpZ2F0ZShFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgdXJsKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q29va2ll
cyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpQYWdlOjpDb29raWU+PiYgY29va2llcykgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgY29va2ll
TmFtZSwgY29uc3QgU3RyaW5nJiB1cmwpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXRS
ZXNvdXJjZVRyZWUoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFn
ZTo6RnJhbWVSZXNvdXJjZVRyZWU+Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldFJl
c291cmNlQ29udGVudChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3Qg
U3RyaW5nJiB1cmwsIFN0cmluZyogY29udGVudCwgYm9vbCogYmFzZTY0RW5jb2RlZCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNlYXJjaEluUmVzb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1ZXJ5
LCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFs
SXNSZWdleCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBzZWFyY2hJblJlc291cmNlcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYsIGNv
bnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGlzUmVnZXgsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hS
ZXN1bHQ+PiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXREb2N1bWVudENvbnRlbnQo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgaHRtbCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNob3dQYWludFJlY3RzKEVycm9yU3RyaW5n
KiwgYm9vbCBzaG93KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FuU2hvd0RlYnVnQm9y
ZGVycyhFcnJvclN0cmluZyosIGJvb2wqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
U2hvd0RlYnVnQm9yZGVycyhFcnJvclN0cmluZyosIGJvb2wgc2hvdykgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGNhblNob3dGUFNDb3VudGVyKEVycm9yU3RyaW5nKiwgYm9vbCopIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93RlBTQ291bnRlcihFcnJvclN0cmluZyosIGJv
b2wgc2hvdykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNhbkNvbnRpbnVvdXNseVBhaW50
KEVycm9yU3RyaW5nKiwgYm9vbCopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250
aW51b3VzUGFpbnRpbmdFbmFibGVkKEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2NyaXB0RXhlY3V0aW9uU3RhdHVzKEVycm9yU3RyaW5n
KiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXN1
bHQqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2NyaXB0RXhlY3V0aW9uRGlzYWJs
ZWQoRXJyb3JTdHJpbmcqLCBib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VG91
Y2hFbXVsYXRpb25FbmFibGVkKEVycm9yU3RyaW5nKiwgYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHNldEVtdWxhdGVkTWVkaWEoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShF
cnJvclN0cmluZyosIGJvb2wqIG91dF9wYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHNldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUoRXJyb3JTdHJpbmcqLCBib29sKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgc25hcHNob3ROb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJ
ZCwgU3RyaW5nKiBvdXREYXRhVVJMKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc25hcHNo
b3RSZWN0KEVycm9yU3RyaW5nKiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQs
IGNvbnN0IFN0cmluZyYgY29vcmRpbmF0ZVN5c3RlbSwgU3RyaW5nKiBvdXREYXRhVVJMKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlSmF2YVNjcmlwdERpYWxvZyhFcnJvclN0cmlu
ZyosIGJvb2wgYWNjZXB0LCBjb25zdCBTdHJpbmcqIHByb21wdFRleHQpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBhcmNoaXZlKEVycm9yU3RyaW5nKiwgU3RyaW5nKiBkYXRhKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgc291cmNlLCBTdHJpbmcqIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJl
bW92ZVNjcmlwdFRvRXZhbHVhdGVPbkxvYWQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCByZWxvYWQoRXJyb3JTdHJpbmcm
LCBjb25zdCBib29sKiBvcHRpb25hbElnbm9yZUNhY2hlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFs
U2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIG5hdmln
YXRlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCBnZXRDb29raWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkNvb2tpZT4+JiBjb29raWVzKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBjb29raWVOYW1lLCBjb25zdCBTdHJpbmcmIHVybCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIGdldFJlc291cmNlVHJlZShFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4mKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0UmVzb3VyY2VDb250ZW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgU3RyaW5nKiBjb250ZW50LCBib29sKiBiYXNl
NjRFbmNvZGVkKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoSW5SZXNvdXJjZShF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29u
c3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+Jikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNlYXJjaEluUmVzb3VyY2VzKEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogaXNS
ZWdleCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlBhZ2U6OlNlYXJjaFJlc3VsdD4+Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNl
dERvY3VtZW50Q29udGVudChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29u
c3QgU3RyaW5nJiBodG1sKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd1BhaW50
UmVjdHMoRXJyb3JTdHJpbmcmLCBib29sIHNob3cpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBjYW5TaG93RGVidWdCb3JkZXJzKEVycm9yU3RyaW5nJiwgYm9vbCopIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBzZXRTaG93RGVidWdCb3JkZXJzKEVycm9yU3RyaW5nJiwgYm9vbCBzaG93
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuU2hvd0ZQU0NvdW50ZXIoRXJyb3JTdHJp
bmcmLCBib29sKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldFNob3dGUFNDb3VudGVy
KEVycm9yU3RyaW5nJiwgYm9vbCBzaG93KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY2Fu
Q29udGludW91c2x5UGFpbnQoRXJyb3JTdHJpbmcmLCBib29sKikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIHNldENvbnRpbnVvdXNQYWludGluZ0VuYWJsZWQoRXJyb3JTdHJpbmcmLCBib29s
IGVuYWJsZWQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBnZXRTY3JpcHRFeGVjdXRpb25T
dGF0dXMoRXJyb3JTdHJpbmcmLCBJbnNwZWN0b3I6Okluc3BlY3RvclBhZ2VCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXI6OlJlc3VsdCopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRTY3Jp
cHRFeGVjdXRpb25EaXNhYmxlZChFcnJvclN0cmluZyYsIGJvb2wpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBzZXRUb3VjaEVtdWxhdGlvbkVuYWJsZWQoRXJyb3JTdHJpbmcmLCBib29sKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RW11bGF0ZWRNZWRpYShFcnJvclN0cmluZyYs
IGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBnZXRDb21wb3NpdGlu
Z0JvcmRlcnNWaXNpYmxlKEVycm9yU3RyaW5nJiwgYm9vbCogb3V0X3BhcmFtKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShFcnJvclN0cmlu
ZyYsIGJvb2wpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzbmFwc2hvdE5vZGUoRXJyb3JT
dHJpbmcmLCBpbnQgbm9kZUlkLCBTdHJpbmcqIG91dERhdGFVUkwpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBzbmFwc2hvdFJlY3QoRXJyb3JTdHJpbmcmLCBpbnQgeCwgaW50IHksIGludCB3
aWR0aCwgaW50IGhlaWdodCwgY29uc3QgU3RyaW5nJiBjb29yZGluYXRlU3lzdGVtLCBTdHJpbmcq
IG91dERhdGFVUkwpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVKYXZhU2NyaXB0
RGlhbG9nKEVycm9yU3RyaW5nJiwgYm9vbCBhY2NlcHQsIGNvbnN0IFN0cmluZyogcHJvbXB0VGV4
dCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGFyY2hpdmUoRXJyb3JTdHJpbmcmLCBTdHJp
bmcqIGRhdGEpIG92ZXJyaWRlOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uIEFQ
SQogICAgIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lKiwgRE9NV3JhcHBl
cldvcmxkJik7CkBAIC0xNTksOCArMTU5LDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzSWRGb3JG
cmFtZShGcmFtZSopIGNvbnN0OwogICAgIFN0cmluZyBsb2FkZXJJZChEb2N1bWVudExvYWRlciop
OwogICAgIEZyYW1lKiBmaW5kRnJhbWVXaXRoU2VjdXJpdHlPcmlnaW4oY29uc3QgU3RyaW5nJiBv
cmlnaW5SYXdTdHJpbmcpOwotICAgIEZyYW1lKiBhc3NlcnRGcmFtZShFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgZnJhbWVJZCk7Ci0gICAgc3RhdGljIERvY3VtZW50TG9hZGVyKiBhc3NlcnRE
b2N1bWVudExvYWRlcihFcnJvclN0cmluZyosIEZyYW1lKik7CisgICAgRnJhbWUqIGFzc2VydEZy
YW1lKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkKTsKKyAgICBzdGF0aWMgRG9j
dW1lbnRMb2FkZXIqIGFzc2VydERvY3VtZW50TG9hZGVyKEVycm9yU3RyaW5nJiwgRnJhbWUqKTsK
IAogcHJpdmF0ZToKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAKaW5kZXggZjA4ZmI4MjdkNDhl
MWU4MmIwYjhlZGEzZDlmOTYzMjZiNDFlNGI5MC4uYTcxYjA2ZjJmNWVlNDY0MTYwYWE0MmFiMjg3
Y2Q2YzVhNGFkNTM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlcGxheUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVwbGF5QWdlbnQuY3BwCkBAIC0zMTcsODMgKzMxNyw4MyBAQCB2b2lkIEluc3BlY3RvclJl
cGxheUFnZW50OjpwbGF5YmFja0ZpbmlzaGVkKCkKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+
cGxheWJhY2tGaW5pc2hlZCgpOwogfQogCi12b2lkIEluc3BlY3RvclJlcGxheUFnZW50OjpzdGFy
dENhcHR1cmluZyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcpCit2b2lkIEluc3BlY3RvclJlcGxh
eUFnZW50OjpzdGFydENhcHR1cmluZyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiB7CiAgICAg
aWYgKHNlc3Npb25TdGF0ZSgpICE9IFdlYkNvcmU6OlNlc3Npb25TdGF0ZTo6SW5hY3RpdmUpIHsK
LSAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJDYW4ndCBzdGFydCBjYXB0dXJp
bmcgaWYgdGhlIHNlc3Npb24gaXMgYWxyZWFkeSBjYXB0dXJpbmcgb3IgcmVwbGF5aW5nLiIpOwor
ICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiQ2FuJ3Qgc3RhcnQgY2FwdHVyaW5n
IGlmIHRoZSBzZXNzaW9uIGlzIGFscmVhZHkgY2FwdHVyaW5nIG9yIHJlcGxheWluZy4iKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fcGFnZS5yZXBsYXlDb250cm9sbGVyKCkuc3Rh
cnRDYXB0dXJpbmcoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6c3RvcENhcHR1
cmluZyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcpCit2b2lkIEluc3BlY3RvclJlcGxheUFnZW50
OjpzdG9wQ2FwdHVyaW5nKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKIHsKICAgICBpZiAoc2Vz
c2lvblN0YXRlKCkgIT0gV2ViQ29yZTo6U2Vzc2lvblN0YXRlOjpDYXB0dXJpbmcpIHsKLSAgICAg
ICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJDYW4ndCBzdG9wIGNhcHR1cmluZyBpZiBj
YXB0dXJlIGlzIG5vdCBpbiBwcm9ncmVzcy4iKTsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJ
SUxpdGVyYWwoIkNhbid0IHN0b3AgY2FwdHVyaW5nIGlmIGNhcHR1cmUgaXMgbm90IGluIHByb2dy
ZXNzLiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9wYWdlLnJlcGxheUNvbnRy
b2xsZXIoKS5zdG9wQ2FwdHVyaW5nKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6
OnJlcGxheVRvUG9zaXRpb24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiYgcG9zaXRpb25PYmplY3QsIGJvb2wgZmFzdFJlcGxheSkKK3ZvaWQg
SW5zcGVjdG9yUmVwbGF5QWdlbnQ6OnJlcGxheVRvUG9zaXRpb24oRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcG9zaXRpb25PYmplY3QsIGJv
b2wgZmFzdFJlcGxheSkKIHsKICAgICBSZXBsYXlQb3NpdGlvbiBwb3NpdGlvbjsKICAgICBpZiAo
IXBvc2l0aW9uT2JqZWN0LT5nZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgic2VnbWVudE9mZnNldCIp
LCBwb3NpdGlvbi5zZWdtZW50T2Zmc2V0KSkgewotICAgICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJ
SUxpdGVyYWwoIkNvdWxkbid0IGRlY29kZSBSZXBsYXlQb3NpdGlvbiBzZWdtZW50IG9mZnNldCBw
cm92aWRlZCB0byBSZXBsYXlBZ2VudC5yZXBsYXlUb1Bvc2l0aW9uLiIpOworICAgICAgICBlcnJv
clN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiQ291bGRuJ3QgZGVjb2RlIFJlcGxheVBvc2l0aW9uIHNl
Z21lbnQgb2Zmc2V0IHByb3ZpZGVkIHRvIFJlcGxheUFnZW50LnJlcGxheVRvUG9zaXRpb24uIik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIXBvc2l0aW9uT2JqZWN0LT5nZXRJ
bnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiaW5wdXRPZmZzZXQiKSwgcG9zaXRpb24uaW5wdXRPZmZzZXQp
KSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiQ291bGRuJ3QgZGVjb2Rl
IFJlcGxheVBvc2l0aW9uIGlucHV0IG9mZnNldCBwcm92aWRlZCB0byBSZXBsYXlBZ2VudC5yZXBs
YXlUb1Bvc2l0aW9uLiIpOworICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiQ291
bGRuJ3QgZGVjb2RlIFJlcGxheVBvc2l0aW9uIGlucHV0IG9mZnNldCBwcm92aWRlZCB0byBSZXBs
YXlBZ2VudC5yZXBsYXlUb1Bvc2l0aW9uLiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgaWYgKHNlc3Npb25TdGF0ZSgpID09IFdlYkNvcmU6OlNlc3Npb25TdGF0ZTo6Q2FwdHVyaW5n
KSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiQ2FuJ3Qgc3RhcnQgcmVw
bGF5IHdoaWxlIGNhcHR1cmUgaXMgaW4gcHJvZ3Jlc3MuIik7CisgICAgICAgIGVycm9yU3RyaW5n
ID0gQVNDSUlMaXRlcmFsKCJDYW4ndCBzdGFydCByZXBsYXkgd2hpbGUgY2FwdHVyZSBpcyBpbiBw
cm9ncmVzcy4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fcGFnZS5yZXBsYXlD
b250cm9sbGVyKCkucmVwbGF5VG9Qb3NpdGlvbihwb3NpdGlvbiwgKGZhc3RSZXBsYXkpID8gRGlz
cGF0Y2hTcGVlZDo6RmFzdEZvcndhcmQgOiBEaXNwYXRjaFNwZWVkOjpSZWFsVGltZSk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OnJlcGxheVRvQ29tcGxldGlvbihFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGJvb2wgZmFzdFJlcGxheSkKK3ZvaWQgSW5zcGVjdG9yUmVwbGF5QWdl
bnQ6OnJlcGxheVRvQ29tcGxldGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGJvb2wgZmFz
dFJlcGxheSkKIHsKICAgICBpZiAoc2Vzc2lvblN0YXRlKCkgPT0gV2ViQ29yZTo6U2Vzc2lvblN0
YXRlOjpDYXB0dXJpbmcpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJD
YW4ndCBzdGFydCByZXBsYXkgd2hpbGUgY2FwdHVyZSBpcyBpbiBwcm9ncmVzcy4iKTsKKyAgICAg
ICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkNhbid0IHN0YXJ0IHJlcGxheSB3aGlsZSBj
YXB0dXJlIGlzIGluIHByb2dyZXNzLiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
bV9wYWdlLnJlcGxheUNvbnRyb2xsZXIoKS5yZXBsYXlUb0NvbXBsZXRpb24oKGZhc3RSZXBsYXkp
ID8gRGlzcGF0Y2hTcGVlZDo6RmFzdEZvcndhcmQgOiBEaXNwYXRjaFNwZWVkOjpSZWFsVGltZSk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OnBhdXNlUGxheWJhY2soRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nKQordm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6cGF1c2VQbGF5YmFj
ayhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiB7CiAgICAgaWYgKHNlc3Npb25TdGF0ZSgpICE9
IFdlYkNvcmU6OlNlc3Npb25TdGF0ZTo6UmVwbGF5aW5nKSB7Ci0gICAgICAgICplcnJvclN0cmlu
ZyA9IEFTQ0lJTGl0ZXJhbCgiQ2FuJ3QgcGF1c2UgcGxheWJhY2sgaWYgcGxheWJhY2sgaXMgbm90
IGluIHByb2dyZXNzLiIpOworICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiQ2Fu
J3QgcGF1c2UgcGxheWJhY2sgaWYgcGxheWJhY2sgaXMgbm90IGluIHByb2dyZXNzLiIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9wYWdlLnJlcGxheUNvbnRyb2xsZXIoKS5wYXVz
ZVBsYXliYWNrKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmNhbmNlbFBsYXli
YWNrKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZykKK3ZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6
OmNhbmNlbFBsYXliYWNrKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKIHsKICAgICBpZiAoc2Vz
c2lvblN0YXRlKCkgPT0gV2ViQ29yZTo6U2Vzc2lvblN0YXRlOjpDYXB0dXJpbmcpIHsKLSAgICAg
ICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJDYW4ndCBjYW5jZWwgcGxheWJhY2sgaWYg
Y2FwdHVyZSBpcyBpbiBwcm9ncmVzcy4iKTsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxp
dGVyYWwoIkNhbid0IGNhbmNlbCBwbGF5YmFjayBpZiBjYXB0dXJlIGlzIGluIHByb2dyZXNzLiIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9wYWdlLnJlcGxheUNvbnRyb2xsZXIo
KS5jYW5jZWxQbGF5YmFjaygpOwogfQogCi12b2lkIEluc3BlY3RvclJlcGxheUFnZW50Ojpzd2l0
Y2hTZXNzaW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgSW5zcGVjdG9yOjpQcm90b2NvbDo6
UmVwbGF5OjpTZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBJbnNwZWN0b3JSZXBs
YXlBZ2VudDo6c3dpdGNoU2Vzc2lvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vzc2lvbklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAg
ICBBU1NFUlQoaWRlbnRpZmllciA+IDApOwogCiAgICAgaWYgKHNlc3Npb25TdGF0ZSgpICE9IFdl
YkNvcmU6OlNlc3Npb25TdGF0ZTo6SW5hY3RpdmUpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0g
QVNDSUlMaXRlcmFsKCJDYW4ndCBzd2l0Y2ggc2Vzc2lvbnMgdW5sZXNzIHRoZSBzZXNzaW9uIGlz
IG5laXRoZXIgY2FwdHVyaW5nIG9yIHJlcGxheWluZy4iKTsKKyAgICAgICAgZXJyb3JTdHJpbmcg
PSBBU0NJSUxpdGVyYWwoIkNhbid0IHN3aXRjaCBzZXNzaW9ucyB1bmxlc3MgdGhlIHNlc3Npb24g
aXMgbmVpdGhlciBjYXB0dXJpbmcgb3IgcmVwbGF5aW5nLiIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC00MDQsNyArNDA0LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6c3dp
dGNoU2Vzc2lvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIEluc3BlY3Rvcjo6UHIKICAgICBt
X3BhZ2UucmVwbGF5Q29udHJvbGxlcigpLnN3aXRjaFNlc3Npb24oc2Vzc2lvbik7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6Omluc2VydFNlc3Npb25TZWdtZW50KEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZXNzaW9uSWRlbnRp
ZmllciBzZXNzaW9uSWRlbnRpZmllciwgU2VnbWVudElkZW50aWZpZXIgc2VnbWVudElkZW50aWZp
ZXIsIGludCBzZWdtZW50SW5kZXgpCit2b2lkIEluc3BlY3RvclJlcGxheUFnZW50OjppbnNlcnRT
ZXNzaW9uU2VnbWVudChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJlcGxheTo6U2Vzc2lvbklkZW50aWZpZXIgc2Vzc2lvbklkZW50aWZpZXIsIFNlZ21lbnRJ
ZGVudGlmaWVyIHNlZ21lbnRJZGVudGlmaWVyLCBpbnQgc2VnbWVudEluZGV4KQogewogICAgIEFT
U0VSVChzZXNzaW9uSWRlbnRpZmllciA+IDApOwogICAgIEFTU0VSVChzZWdtZW50SWRlbnRpZmll
ciA+IDApOwpAQCAtNDE3LDEyICs0MTcsMTIgQEAgdm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6
aW5zZXJ0U2Vzc2lvblNlZ21lbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBJbnNwZWMKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4oc2VnbWVudEluZGV4
KSA+IHNlc3Npb24tPnNpemUoKSkgewotICAgICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVy
YWwoIkludmFsaWQgc2VnbWVudCBpbmRleC4iKTsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJ
SUxpdGVyYWwoIkludmFsaWQgc2VnbWVudCBpbmRleC4iKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIGlmIChzZXNzaW9uID09IG1fcGFnZS5yZXBsYXlDb250cm9sbGVyKCkubG9hZGVk
U2Vzc2lvbigpICYmIHNlc3Npb25TdGF0ZSgpICE9IFdlYkNvcmU6OlNlc3Npb25TdGF0ZTo6SW5h
Y3RpdmUpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJDYW4ndCBtb2Rp
ZnkgYSBsb2FkZWQgc2Vzc2lvbiB1bmxlc3MgdGhlIHNlc3Npb24gaXMgaW5hY3RpdmUuIik7Cisg
ICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJDYW4ndCBtb2RpZnkgYSBsb2FkZWQg
c2Vzc2lvbiB1bmxlc3MgdGhlIHNlc3Npb24gaXMgaW5hY3RpdmUuIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTQzMCw3ICs0MzAsNyBAQCB2b2lkIEluc3BlY3RvclJlcGxheUFnZW50
OjppbnNlcnRTZXNzaW9uU2VnbWVudChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIEluc3BlYwog
ICAgIHNlc3Npb25Nb2RpZmllZChzZXNzaW9uKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSZXBsYXlB
Z2VudDo6cmVtb3ZlU2Vzc2lvblNlZ21lbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIGlu
dCBzZWdtZW50SW5kZXgpCit2b2lkIEluc3BlY3RvclJlcGxheUFnZW50OjpyZW1vdmVTZXNzaW9u
U2VnbWVudChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJl
cGxheTo6U2Vzc2lvbklkZW50aWZpZXIgaWRlbnRpZmllciwgaW50IHNlZ21lbnRJbmRleCkKIHsK
ICAgICBBU1NFUlQoaWRlbnRpZmllciA+IDApOwogICAgIEFTU0VSVChzZWdtZW50SW5kZXggPj0g
MCk7CkBAIC00NDEsMTIgKzQ0MSwxMiBAQCB2b2lkIEluc3BlY3RvclJlcGxheUFnZW50OjpyZW1v
dmVTZXNzaW9uU2VnbWVudChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIEluc3BlYwogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihzZWdtZW50SW5kZXgpID49
IHNlc3Npb24tPnNpemUoKSkgewotICAgICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwo
IkludmFsaWQgc2VnbWVudCBpbmRleC4iKTsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxp
dGVyYWwoIkludmFsaWQgc2VnbWVudCBpbmRleC4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIGlmIChzZXNzaW9uID09IG1fcGFnZS5yZXBsYXlDb250cm9sbGVyKCkubG9hZGVkU2Vz
c2lvbigpICYmIHNlc3Npb25TdGF0ZSgpICE9IFdlYkNvcmU6OlNlc3Npb25TdGF0ZTo6SW5hY3Rp
dmUpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJDYW4ndCBtb2RpZnkg
YSBsb2FkZWQgc2Vzc2lvbiB1bmxlc3MgdGhlIHNlc3Npb24gaXMgaW5hY3RpdmUuIik7CisgICAg
ICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJDYW4ndCBtb2RpZnkgYSBsb2FkZWQgc2Vz
c2lvbiB1bmxlc3MgdGhlIHNlc3Npb24gaXMgaW5hY3RpdmUuIik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTQ1NCwzMyArNDU0LDMzIEBAIHZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6
OnJlbW92ZVNlc3Npb25TZWdtZW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgSW5zcGVjCiAg
ICAgc2Vzc2lvbk1vZGlmaWVkKHNlc3Npb24pOwogfQogCi1QYXNzUmVmUHRyPFJlcGxheVNlc3Np
b24+IEluc3BlY3RvclJlcGxheUFnZW50OjpmaW5kU2Vzc2lvbihFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIFNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCitQYXNzUmVmUHRyPFJlcGxheVNl
c3Npb24+IEluc3BlY3RvclJlcGxheUFnZW50OjpmaW5kU2Vzc2lvbihFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIFNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKGlk
ZW50aWZpZXIgPiAwKTsKIAogICAgIGF1dG8gaXQgPSBtX3Nlc3Npb25zTWFwLmZpbmQoaWRlbnRp
Zmllcik7CiAgICAgaWYgKGl0ID09IG1fc2Vzc2lvbnNNYXAuZW5kKCkpIHsKLSAgICAgICAgKmVy
cm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJDb3VsZG4ndCBmaW5kIHNlc3Npb24gd2l0aCBzcGVj
aWZpZWQgaWRlbnRpZmllciIpOworICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgi
Q291bGRuJ3QgZmluZCBzZXNzaW9uIHdpdGggc3BlY2lmaWVkIGlkZW50aWZpZXIiKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgcmV0dXJuIGl0LT52YWx1ZTsKIH0KIAot
UGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4gSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmZp
bmRTZWdtZW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgU2VnbWVudElkZW50aWZpZXIgaWRl
bnRpZmllcikKK1Bhc3NSZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+IEluc3BlY3RvclJlcGxh
eUFnZW50OjpmaW5kU2VnbWVudChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFNlZ21lbnRJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKGlkZW50aWZpZXIgPiAwKTsKIAogICAg
IGF1dG8gaXQgPSBtX3NlZ21lbnRzTWFwLmZpbmQoaWRlbnRpZmllcik7CiAgICAgaWYgKGl0ID09
IG1fc2VnbWVudHNNYXAuZW5kKCkpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRl
cmFsKCJDb3VsZG4ndCBmaW5kIHNlZ21lbnQgd2l0aCBzcGVjaWZpZWQgaWRlbnRpZmllciIpOwor
ICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiQ291bGRuJ3QgZmluZCBzZWdtZW50
IHdpdGggc3BlY2lmaWVkIGlkZW50aWZpZXIiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCiAgICAgcmV0dXJuIGl0LT52YWx1ZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSZXBsYXlB
Z2VudDo6Y3VycmVudFJlcGxheVN0YXRlKEVycm9yU3RyaW5nKiwgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6UmVwbGF5OjpTZXNzaW9uSWRlbnRpZmllciogc2Vzc2lvbklkZW50aWZpZXIsIEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlZ21l
bnRJZGVudGlmaWVyPiogc2VnbWVudElkZW50aWZpZXIsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJl
cGxheTo6U2Vzc2lvblN0YXRlKiBzZXNzaW9uU3RhdGUsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJl
cGxheTo6U2VnbWVudFN0YXRlKiBzZWdtZW50U3RhdGUsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSZXBsYXk6OlJlcGxheVBvc2l0aW9uPiYgcmVwbGF5UG9zaXRpb24pCit2b2lkIEluc3Bl
Y3RvclJlcGxheUFnZW50OjpjdXJyZW50UmVwbGF5U3RhdGUoRXJyb3JTdHJpbmcmLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlc3Npb25JZGVudGlmaWVyKiBzZXNzaW9uSWRlbnRpZmll
ciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJl
cGxheTo6U2VnbWVudElkZW50aWZpZXI+KiBzZWdtZW50SWRlbnRpZmllciwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6UmVwbGF5OjpTZXNzaW9uU3RhdGUqIHNlc3Npb25TdGF0ZSwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6UmVwbGF5OjpTZWdtZW50U3RhdGUqIHNlZ21lbnRTdGF0ZSwgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6UmVwbGF5UG9zaXRpb24+JiByZXBsYXlQb3NpdGlvbikK
IHsKICAgICAqc2Vzc2lvblN0YXRlID0gYnVpbGRJbnNwZWN0b3JPYmplY3RGb3JTZXNzaW9uU3Rh
dGUobV9wYWdlLnJlcGxheUNvbnRyb2xsZXIoKS5zZXNzaW9uU3RhdGUoKSk7CiAgICAgKnNlZ21l
bnRTdGF0ZSA9IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yU2VnbWVudFN0YXRlKG1fcGFnZS5yZXBs
YXlDb250cm9sbGVyKCkuc2VnbWVudFN0YXRlKCkpOwpAQCAtNDkyLDI5ICs0OTIsMjkgQEAgdm9p
ZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6Y3VycmVudFJlcGxheVN0YXRlKEVycm9yU3RyaW5nKiwg
SW5zcGVjdG9yOjpQcm90b2NvbDoKICAgICByZXBsYXlQb3NpdGlvbiA9IGJ1aWxkSW5zcGVjdG9y
T2JqZWN0Rm9yUG9zaXRpb24obV9wYWdlLnJlcGxheUNvbnRyb2xsZXIoKS5jdXJyZW50UG9zaXRp
b24oKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmdldEF2YWlsYWJsZVNlc3Np
b25zKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFNlc3Np
b25JZGVudGlmaWVyPj4mIHNlc3Npb25zTGlzdCkKK3ZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6
OmdldEF2YWlsYWJsZVNlc3Npb25zKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PFNlc3Npb25JZGVudGlmaWVyPj4mIHNlc3Npb25zTGlzdCkKIHsKICAgICBz
ZXNzaW9uc0xpc3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSZXBsYXk6OlNlc3Npb25JZGVudGlmaWVyPjo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRv
JiBwYWlyIDogbV9zZXNzaW9uc01hcCkKICAgICAgICAgc2Vzc2lvbnNMaXN0LT5hZGRJdGVtKHBh
aXIua2V5KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6Z2V0U2Vzc2lvbkRhdGEo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNl
c3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpS
ZXBsYXk6OlJlcGxheVNlc3Npb24+JiBzZXJpYWxpemVkT2JqZWN0KQordm9pZCBJbnNwZWN0b3JS
ZXBsYXlBZ2VudDo6Z2V0U2Vzc2lvbkRhdGEoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlJlcGxheVNlc3Npb24+JiBzZXJpYWxp
emVkT2JqZWN0KQogewogICAgIFJlZlB0cjxSZXBsYXlTZXNzaW9uPiBzZXNzaW9uID0gZmluZFNl
c3Npb24oZXJyb3JTdHJpbmcsIGlkZW50aWZpZXIpOwogICAgIGlmICghc2Vzc2lvbikgewotICAg
ICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkNvdWxkbid0IGZpbmQgdGhlIHNwZWNp
ZmllZCBzZXNzaW9uLiIpOworICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiQ291
bGRuJ3QgZmluZCB0aGUgc3BlY2lmaWVkIHNlc3Npb24uIik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBzZXJpYWxpemVkT2JqZWN0ID0gYnVpbGRJbnNwZWN0b3JPYmplY3RGb3JTZXNz
aW9uKHNlc3Npb24pOwogfQogCi12b2lkIEluc3BlY3RvclJlcGxheUFnZW50OjpnZXRTZWdtZW50
RGF0YShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxh
eTo6U2VnbWVudElkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJlcGxheTo6U2Vzc2lvblNlZ21lbnQ+JiBzZXJpYWxpemVkT2JqZWN0KQordm9pZCBJbnNw
ZWN0b3JSZXBsYXlBZ2VudDo6Z2V0U2VnbWVudERhdGEoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlZ21lbnRJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlc3Npb25TZWdtZW50PiYg
c2VyaWFsaXplZE9iamVjdCkKIHsKICAgICBSZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+IHNl
Z21lbnQgPSBmaW5kU2VnbWVudChlcnJvclN0cmluZywgaWRlbnRpZmllcik7CiAgICAgaWYgKCFz
ZWdtZW50KSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiQ291bGRuJ3Qg
ZmluZCB0aGUgc3BlY2lmaWVkIHNlZ21lbnQuIik7CisgICAgICAgIGVycm9yU3RyaW5nID0gQVND
SUlMaXRlcmFsKCJDb3VsZG4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgc2VnbWVudC4iKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclJlcGxheUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVwbGF5QWdlbnQuaAppbmRleCAwMmNjN2UwNzRlYmYwNzhkNjY2NTc0NjNlZTNlZTg0ODU2
MWI3ZWQ3Li4xMmMxODQ2Yjc1MWFmMDg3MmM1Nzc0YWFkNDBjMTAwYWUxYWU4NTFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuaApAQCAtOTIs
MjYgKzkyLDI2IEBAIHB1YmxpYzoKICAgICB2b2lkIHBsYXliYWNrRmluaXNoZWQoKTsKIAogICAg
IC8vIENhbGxzIGZyb20gdGhlIEluc3BlY3RvciBmcm9udGVuZC4KLSAgICB2aXJ0dWFsIHZvaWQg
c3RhcnRDYXB0dXJpbmcoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
c3RvcENhcHR1cmluZyhFcnJvclN0cmluZyopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBz
dGFydENhcHR1cmluZyhFcnJvclN0cmluZyYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBz
dG9wQ2FwdHVyaW5nKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
cmVwbGF5VG9Qb3NpdGlvbihFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4mLCBib29sIHNob3VsZEZhc3RGb3J3YXJkKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgcmVwbGF5VG9Db21wbGV0aW9uKEVycm9yU3RyaW5nKiwgYm9vbCBzaG91bGRG
YXN0Rm9yd2FyZCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhdXNlUGxheWJhY2soRXJy
b3JTdHJpbmcqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGxheWJhY2soRXJy
b3JTdHJpbmcqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVwbGF5VG9Qb3NpdGlvbihF
cnJvclN0cmluZyYsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mLCBi
b29sIHNob3VsZEZhc3RGb3J3YXJkKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVwbGF5
VG9Db21wbGV0aW9uKEVycm9yU3RyaW5nJiwgYm9vbCBzaG91bGRGYXN0Rm9yd2FyZCkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIHBhdXNlUGxheWJhY2soRXJyb3JTdHJpbmcmKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGxheWJhY2soRXJyb3JTdHJpbmcmKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzd2l0Y2hTZXNzaW9uKEVycm9yU3RyaW5nKiwgU2Vzc2lv
bklkZW50aWZpZXIpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRTZXNzaW9uU2Vn
bWVudChFcnJvclN0cmluZyosIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vzc2lvbklk
ZW50aWZpZXIsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2VnbWVudElkZW50aWZpZXIs
IGludCBzZWdtZW50SW5kZXgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTZXNz
aW9uU2VnbWVudChFcnJvclN0cmluZyosIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vz
c2lvbklkZW50aWZpZXIsIGludCBzZWdtZW50SW5kZXgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBzd2l0Y2hTZXNzaW9uKEVycm9yU3RyaW5nJiwgU2Vzc2lvbklkZW50aWZpZXIpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRTZXNzaW9uU2VnbWVudChFcnJvclN0cmluZyYs
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vzc2lvbklkZW50aWZpZXIsIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJlcGxheTo6U2VnbWVudElkZW50aWZpZXIsIGludCBzZWdtZW50SW5kZXgp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTZXNzaW9uU2VnbWVudChFcnJvclN0
cmluZyYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vzc2lvbklkZW50aWZpZXIsIGlu
dCBzZWdtZW50SW5kZXgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGN1cnJlbnRSZXBs
YXlTdGF0ZShFcnJvclN0cmluZyosIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vzc2lv
bklkZW50aWZpZXIqLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UmVwbGF5OjpTZWdtZW50SWRlbnRpZmllcj4qLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpSZXBsYXk6OlNlc3Npb25TdGF0ZSosIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vn
bWVudFN0YXRlKiBzZWdtZW50U3RhdGUsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBs
YXk6OlJlcGxheVBvc2l0aW9uPiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXRBdmFp
bGFibGVTZXNzaW9ucyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlc3Npb25JZGVudGlmaWVyPj4mKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2Vzc2lvbkRhdGEoRXJyb3JTdHJpbmcqLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlc3Npb25JZGVudGlmaWVyLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpSZXBsYXlTZXNzaW9uPiYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRTZWdtZW50RGF0YShFcnJvclN0cmluZyosIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJlcGxheTo6U2VnbWVudElkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSZXBsYXk6OlNlc3Npb25TZWdtZW50PiYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBjdXJyZW50UmVwbGF5U3RhdGUoRXJyb3JTdHJpbmcmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpS
ZXBsYXk6OlNlc3Npb25JZGVudGlmaWVyKiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2VnbWVudElkZW50aWZpZXI+KiwgSW5zcGVj
dG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZXNzaW9uU3RhdGUqLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpSZXBsYXk6OlNlZ21lbnRTdGF0ZSogc2VnbWVudFN0YXRlLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UmVwbGF5OjpSZXBsYXlQb3NpdGlvbj4mKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0QXZhaWxhYmxlU2Vzc2lvbnMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZXNzaW9uSWRl
bnRpZmllcj4+Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGdldFNlc3Npb25EYXRhKEVy
cm9yU3RyaW5nJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZXNzaW9uSWRlbnRpZmll
ciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6UmVwbGF5U2Vzc2lvbj4mKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0U2VnbWVudERhdGEoRXJyb3JTdHJpbmcmLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlZ21lbnRJZGVudGlmaWVyLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZXNzaW9uU2VnbWVudD4mKSBvdmVycmlkZTsKIAog
cHJpdmF0ZToKLSAgICBQYXNzUmVmUHRyPFJlcGxheVNlc3Npb24+IGZpbmRTZXNzaW9uKEVycm9y
U3RyaW5nKiwgU2Vzc2lvbklkZW50aWZpZXIpOwotICAgIFBhc3NSZWZQdHI8UmVwbGF5U2Vzc2lv
blNlZ21lbnQ+IGZpbmRTZWdtZW50KEVycm9yU3RyaW5nKiwgU2VnbWVudElkZW50aWZpZXIpOwor
ICAgIFBhc3NSZWZQdHI8UmVwbGF5U2Vzc2lvbj4gZmluZFNlc3Npb24oRXJyb3JTdHJpbmcmLCBT
ZXNzaW9uSWRlbnRpZmllcik7CisgICAgUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4g
ZmluZFNlZ21lbnQoRXJyb3JTdHJpbmcmLCBTZWdtZW50SWRlbnRpZmllcik7CiAgICAgV2ViQ29y
ZTo6U2Vzc2lvblN0YXRlIHNlc3Npb25TdGF0ZSgpIGNvbnN0OwogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yUmVwbGF5RnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250
ZW5kRGlzcGF0Y2hlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCAwZmFmNDVlYjlmNzlhNDRiZjAyZTNmNTEyZmQwZWYx
Y2Q3ODBlODlhLi4wNTEyMjQ5YzgzYTIzOTlhY2FkMDNlYmEzNmZlZDkwOTJhNjAxMGMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQu
Y3BwCkBAIC0xODgsOCArMTg4LDggQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmUKICAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVh
cigpOwogCi0gICAgRXJyb3JTdHJpbmcgZXJyb3I7Ci0gICAgZGlzYWJsZSgmZXJyb3IpOworICAg
IEVycm9yU3RyaW5nIHVudXNlZDsKKyAgICBkaXNhYmxlKHVudXNlZCk7CiB9CiAKIHN0YXRpYyBQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JIZWFkZXJzKGNvbnN0IEhU
VFBIZWFkZXJNYXAmIGhlYWRlcnMpCkBAIC0yNzAsOCArMjcwLDggQEAgc3RhdGljIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6Q2FjaGVkUmVzb3VyY2U+IGJ1aWxkT2Jq
ZWN0Rm9yQ2EKIEluc3BlY3RvclJlc291cmNlQWdlbnQ6On5JbnNwZWN0b3JSZXNvdXJjZUFnZW50
KCkKIHsKICAgICBpZiAobV9lbmFibGVkKSB7Ci0gICAgICAgIEVycm9yU3RyaW5nIGVycm9yOwot
ICAgICAgICBkaXNhYmxlKCZlcnJvcik7CisgICAgICAgIEVycm9yU3RyaW5nIHVudXNlZDsKKyAg
ICAgICAgZGlzYWJsZSh1bnVzZWQpOwogICAgIH0KICAgICBBU1NFUlQoIW1faW5zdHJ1bWVudGlu
Z0FnZW50cy0+aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKTsKIH0KQEAgLTYzMCw3ICs2MzAsNyBA
QCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUVy
cm9yKHVuc2lnbmVkIGxvbmcgaWRlbnRpZgogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRT
KQogCi12b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCit2
b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYpCiB7CiAgICAg
ZW5hYmxlKCk7CiB9CkBAIC02NDMsNyArNjQzLDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjplbmFibGUoKQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yUmVz
b3VyY2VBZ2VudCh0aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaXNh
YmxlKEVycm9yU3RyaW5nKikKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlzYWJsZShF
cnJvclN0cmluZyYpCiB7CiAgICAgbV9lbmFibGVkID0gZmFsc2U7CiAgICAgbV9pbnN0cnVtZW50
aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JSZXNvdXJjZUFnZW50KG51bGxwdHIpOwpAQCAtNjUxLDE2
ICs2NTEsMTYgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaXNhYmxlKEVycm9yU3Ry
aW5nKikKICAgICBtX2V4dHJhUmVxdWVzdEhlYWRlcnMuY2xlYXIoKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRFeHRyYUhUVFBIZWFkZXJzKEVycm9yU3RyaW5nKiwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGhlYWRlcnMpCit2b2lkIEluc3BlY3RvclJlc291
cmNlQWdlbnQ6OnNldEV4dHJhSFRUUEhlYWRlcnMoRXJyb3JTdHJpbmcmLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiYgaGVhZGVycykKIHsKICAgICBtX2V4dHJhUmVxdWVzdEhlYWRlcnMg
PSBoZWFkZXJzOwogfQogCi12b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmdldFJlc3BvbnNl
Qm9keShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBT
dHJpbmcqIGNvbnRlbnQsIGJvb2wqIGJhc2U2NEVuY29kZWQpCit2b2lkIEluc3BlY3RvclJlc291
cmNlQWdlbnQ6OmdldFJlc3BvbnNlQm9keShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkLCBTdHJpbmcqIGNvbnRlbnQsIGJvb2wqIGJhc2U2NEVuY29kZWQp
CiB7CiAgICAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogcmVzb3Vy
Y2VEYXRhID0gbV9yZXNvdXJjZXNEYXRhLT5kYXRhKHJlcXVlc3RJZCk7CiAgICAgaWYgKCFyZXNv
dXJjZURhdGEpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIk5vIHJlc291cmNlIHdpdGggZ2l2
ZW4gaWRlbnRpZmllciBmb3VuZCI7CisgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFs
KCJObyByZXNvdXJjZSB3aXRoIGdpdmVuIGlkZW50aWZpZXIgZm91bmQiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtNjcxLDcgKzY3MSw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudDo6Z2V0UmVzcG9uc2VCb2R5KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3Ry
CiAgICAgfQogCiAgICAgaWYgKHJlc291cmNlRGF0YS0+aXNDb250ZW50RXZpY3RlZCgpKSB7Ci0g
ICAgICAgICplcnJvclN0cmluZyA9ICJSZXF1ZXN0IGNvbnRlbnQgd2FzIGV2aWN0ZWQgZnJvbSBp
bnNwZWN0b3IgY2FjaGUiOworICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiUmVx
dWVzdCBjb250ZW50IHdhcyBldmljdGVkIGZyb20gaW5zcGVjdG9yIGNhY2hlIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTY4NiwxMCArNjg2LDEwIEBAIHZvaWQgSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6Z2V0UmVzcG9uc2VCb2R5KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29u
c3QgU3RyCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgKmVycm9yU3RyaW5nID0g
Ik5vIGRhdGEgZm91bmQgZm9yIHJlc291cmNlIHdpdGggZ2l2ZW4gaWRlbnRpZmllciI7CisgICAg
ZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vIGRhdGEgZm91bmQgZm9yIHJlc291cmNlIHdp
dGggZ2l2ZW4gaWRlbnRpZmllciIpOwogfQogCi12b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6
OnJlcGxheVhIUihFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKQordm9pZCBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpyZXBsYXlYSFIoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIHJlcXVlc3RJZCkKIHsKICAgICBSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IHhociA9IFhNTEh0
dHBSZXF1ZXN0OjpjcmVhdGUoKm1fcGFnZUFnZW50LT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKSk7
CiAgICAgU3RyaW5nIGFjdHVhbFJlcXVlc3RJZCA9IHJlcXVlc3RJZDsKQEAgLTcxMywzNCArNzEz
LDM0IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6cmVwbGF5WEhSKEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpCiAgICAgeGhyLT5zZW5kRm9ySW5zcGVjdG9yWEhS
UmVwbGF5KHhoclJlcGxheURhdGEtPmZvcm1EYXRhKCksIElHTk9SRV9FWENFUFRJT04pOwogfQog
Ci12b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmNhbkNsZWFyQnJvd3NlckNhY2hlKEVycm9y
U3RyaW5nKiwgYm9vbCogcmVzdWx0KQordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpjYW5D
bGVhckJyb3dzZXJDYWNoZShFcnJvclN0cmluZyYsIGJvb2wqIHJlc3VsdCkKIHsKICAgICAqcmVz
dWx0ID0gbV9jbGllbnQtPmNhbkNsZWFyQnJvd3NlckNhY2hlKCk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6Y2xlYXJCcm93c2VyQ2FjaGUoRXJyb3JTdHJpbmcqKQordm9pZCBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpjbGVhckJyb3dzZXJDYWNoZShFcnJvclN0cmluZyYpCiB7
CiAgICAgbV9jbGllbnQtPmNsZWFyQnJvd3NlckNhY2hlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6Y2FuQ2xlYXJCcm93c2VyQ29va2llcyhFcnJvclN0cmluZyosIGJvb2wq
IHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Y2FuQ2xlYXJCcm93c2VyQ29v
a2llcyhFcnJvclN0cmluZyYsIGJvb2wqIHJlc3VsdCkKIHsKICAgICAqcmVzdWx0ID0gbV9jbGll
bnQtPmNhbkNsZWFyQnJvd3NlckNvb2tpZXMoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpjbGVhckJyb3dzZXJDb29raWVzKEVycm9yU3RyaW5nKikKK3ZvaWQgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6Y2xlYXJCcm93c2VyQ29va2llcyhFcnJvclN0cmluZyYpCiB7CiAgICAg
bV9jbGllbnQtPmNsZWFyQnJvd3NlckNvb2tpZXMoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpzZXRDYWNoZURpc2FibGVkKEVycm9yU3RyaW5nKiwgYm9vbCBjYWNoZURpc2Fi
bGVkKQordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRDYWNoZURpc2FibGVkKEVycm9y
U3RyaW5nJiwgYm9vbCBjYWNoZURpc2FibGVkKQogewogICAgIG1fY2FjaGVEaXNhYmxlZCA9IGNh
Y2hlRGlzYWJsZWQ7CiAgICAgaWYgKGNhY2hlRGlzYWJsZWQpCiAgICAgICAgIG1lbW9yeUNhY2hl
KCktPmV2aWN0UmVzb3VyY2VzKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
bG9hZFJlc291cmNlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFt
ZUlkLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgUGFzc1JlZlB0cjxMb2FkUmVzb3VyY2VDYWxs
YmFjaz4gcHJwQ2FsbGJhY2spCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmxvYWRSZXNv
dXJjZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcsIFBhc3NSZWZQdHI8TG9hZFJlc291cmNlQ2FsbGJhY2s+IHBy
cENhbGxiYWNrKQogewogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZUFnZW50LT5hc3NlcnRGcmFt
ZShlcnJvclN0cmluZywgZnJhbWVJZCk7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTc0OCw3ICs3NDgs
NyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmxvYWRSZXNvdXJjZShFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZwogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
ZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkgewotICAgICAgICAqZXJyb3JT
dHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vIERvY3VtZW50IGluc3RhbmNlIGZvciB0aGUgc3BlY2lm
aWVkIGZyYW1lIik7CisgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJObyBEb2N1
bWVudCBpbnN0YW5jZSBmb3IgdGhlIHNwZWNpZmllZCBmcmFtZSIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuaAppbmRleCA5Y2E0ODNkZjdlY2I1Y2E0NmFmNjIxOGFmMjA0NzlhMzJkZTliZDVj
Li4yODM5MjBkZmU1NjMwNzkyMWQ0Njc0OWU2MTM0MDMwNGNjZjVjNmMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKQEAgLTEyMywx
NyArMTIzLDE3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gQ2FsbGVkIGZyb20gZnJvbnRl
bmQuCi0gICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHNldEV4dHJhSFRUUEhlYWRlcnMoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdl
dFJlc3BvbnNlQm9keShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBTdHJp
bmcqIGNvbnRlbnQsIGJvb2wqIGJhc2U2NEVuY29kZWQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCByZXBsYXlYSFIoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNhbkNsZWFyQnJvd3NlckNhY2hlKEVycm9yU3RyaW5n
KiwgYm9vbCopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhckJyb3dzZXJDYWNoZShF
cnJvclN0cmluZyopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjYW5DbGVhckJyb3dzZXJD
b29raWVzKEVycm9yU3RyaW5nKiwgYm9vbCopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBj
bGVhckJyb3dzZXJDb29raWVzKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHNldENhY2hlRGlzYWJsZWQoRXJyb3JTdHJpbmcqLCBib29sIGNhY2hlRGlzYWJsZWQpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBQYXNzUmVmUHRyPExvYWRSZXNv
dXJjZUNhbGxiYWNrPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0
cmluZyYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldEV4dHJhSFRUUEhlYWRlcnMoRXJyb3JTdHJp
bmcmLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+Jikgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIGdldFJlc3BvbnNlQm9keShFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBTdHJpbmcqIGNvbnRlbnQsIGJvb2wqIGJhc2U2NEVuY29kZWQpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCByZXBsYXlYSFIoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNhbkNsZWFyQnJv
d3NlckNhY2hlKEVycm9yU3RyaW5nJiwgYm9vbCopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBjbGVhckJyb3dzZXJDYWNoZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBjYW5DbGVhckJyb3dzZXJDb29raWVzKEVycm9yU3RyaW5nJiwgYm9vbCopIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBjbGVhckJyb3dzZXJDb29raWVzKEVycm9yU3RyaW5nJikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldENhY2hlRGlzYWJsZWQoRXJyb3JTdHJpbmcmLCBi
b29sIGNhY2hlRGlzYWJsZWQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3Vy
Y2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJs
LCBQYXNzUmVmUHRyPExvYWRSZXNvdXJjZUNhbGxiYWNrPikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
CiAgICAgdm9pZCBlbmFibGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCAyZGE5MWQxMmJkMWMwYmE0ZTZkMzIwMTYwYzljNWU5
YWU1NDIzODRhLi41NTI3YjdhNWI4MzBhZGZjYjIzMzljYjM2Mzk4NDQ0NzNiY2IyZWJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBA
IC0xMzc4LDcgKzEzNzgsNyBAQCBib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6OnJlc291cmNlU3R5
bGVTaGVldFRleHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0CiAKICAgICBTdHJpbmcgZXJyb3I7CiAg
ICAgYm9vbCBiYXNlNjRFbmNvZGVkOwotICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VD
b250ZW50KCZlcnJvciwgb3duZXJEb2N1bWVudCgpLT5mcmFtZSgpLCBVUkwoUGFyc2VkVVJMU3Ry
aW5nLCBtX3BhZ2VTdHlsZVNoZWV0LT5ocmVmKCkpLCByZXN1bHQsICZiYXNlNjRFbmNvZGVkKTsK
KyAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlQ29udGVudChlcnJvciwgb3duZXJEb2N1
bWVudCgpLT5mcmFtZSgpLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX3BhZ2VTdHlsZVNoZWV0LT5o
cmVmKCkpLCByZXN1bHQsICZiYXNlNjRFbmNvZGVkKTsKICAgICByZXR1cm4gZXJyb3IuaXNFbXB0
eSgpICYmICFiYXNlNjRFbmNvZGVkOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXggOTYzNGM2YWQ0NzRmMGQwYjQ3
ZDgzODhjY2UxMzQyNDQ4OWVlYjUwZS4uYTg2Y2E4OTkwNDc5ZDNlNjVkZjdmYjA1MjU0ZDBjZDI2
YzYyY2I4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRp
bWVsaW5lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JU
aW1lbGluZUFnZW50LmNwcApAQCAtOTMsMTggKzkzLDE4IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxp
bmVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVj
dFJlCiAgICAgICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLT5yZWNvbXBpbGVBbGxKU0Z1bmN0
aW9ucygpOwogICAgIH0KIAotICAgIEVycm9yU3RyaW5nIGVycm9yOwotICAgIHN0b3AoJmVycm9y
KTsKKyAgICBFcnJvclN0cmluZyB1bnVzZWQ7CisgICAgc3RvcCh1bnVzZWQpOwogfQogCi12b2lk
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0KEVycm9yU3RyaW5nKiwgY29uc3QgaW50KiBt
YXhDYWxsU3RhY2tEZXB0aCkKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RhcnQoRXJy
b3JTdHJpbmcmLCBjb25zdCBpbnQqIG1heENhbGxTdGFja0RlcHRoKQogewogICAgIG1fZW5hYmxl
ZEZyb21Gcm9udGVuZCA9IHRydWU7CiAKICAgICBpbnRlcm5hbFN0YXJ0KG1heENhbGxTdGFja0Rl
cHRoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzdG9wKEVycm9yU3RyaW5n
KikKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RvcChFcnJvclN0cmluZyYpCiB7CiAg
ICAgaW50ZXJuYWxTdG9wKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5oCmluZGV4IDUyNGY5NzI4Y2MwNTViNWM1M2NkM2U5NWZhOTgx
Y2RlZDEwMDcwZTMuLmE0Y2I0YzRlMmVmMjNlY2QzN2QwZWYwNGRjMTUzYTk4NmM2NWY0YmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQu
aApAQCAtMTQxLDggKzE0MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwg
SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3Bl
Y3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHN0YXJ0
KEVycm9yU3RyaW5nKiA9IG51bGxwdHIsIGNvbnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGggPSBu
dWxscHRyKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcChFcnJvclN0cmluZyogPSBu
dWxscHRyKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoRXJyb3JTdHJpbmcmLCBj
b25zdCBpbnQqIG1heENhbGxTdGFja0RlcHRoID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIHN0b3AoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKIAogICAgIGludCBpZCgpIGNv
bnN0IHsgcmV0dXJuIG1faWQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKaW5kZXggNTkzMWNhZWZiMDg2NjRhY2ZlNzZlZGU4NmJk
MWZmMWRmZjNjN2ZkNi4uZWU1YWJiMzI4NDk4ZTgwZmQ1MTVhZjFiNGViZGQzZTMxNTQxNzEyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQu
Y3BwCkBAIC0xMjYsMTMgKzEyNiwxNCBAQCB2b2lkIEluc3BlY3RvcldvcmtlckFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udAogdm9pZCBJ
bnNwZWN0b3JXb3JrZXJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yRGlzY29ubmVjdFJlYXNvbikKIHsKICAgICBtX3Nob3VsZFBhdXNlRGVkaWNhdGVkV29ya2Vy
T25TdGFydCA9IGZhbHNlOwotICAgIGRpc2FibGUobnVsbHB0cik7CisgICAgRXJyb3JTdHJpbmcg
dW51c2VkOworICAgIGRpc2FibGUodW51c2VkKTsKIAogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVy
ID0gbnVsbHB0cjsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yV29ya2VyQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCit2b2lkIEluc3BlY3Rv
cldvcmtlckFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcmKQogewogICAgIG1fZW5hYmxlZCA9IHRy
dWU7CiAgICAgaWYgKCFtX2Zyb250ZW5kRGlzcGF0Y2hlcikKQEAgLTE0MSw3ICsxNDIsNyBAQCB2
b2lkIEluc3BlY3RvcldvcmtlckFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcqKQogICAgIGNyZWF0
ZVdvcmtlckZyb250ZW5kQ2hhbm5lbHNGb3JFeGlzdGluZ1dvcmtlcnMoKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCit2b2lkIEluc3BlY3Rv
cldvcmtlckFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJikKIHsKICAgICBtX2VuYWJsZWQgPSBm
YWxzZTsKICAgICBpZiAoIW1fZnJvbnRlbmREaXNwYXRjaGVyKQpAQCAtMTUwLDM5ICsxNTEsMzkg
QEAgdm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiAgICAg
ZGVzdHJveVdvcmtlckZyb250ZW5kQ2hhbm5lbHMoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JXb3Jr
ZXJBZ2VudDo6Y2FuSW5zcGVjdFdvcmtlcnMoRXJyb3JTdHJpbmcqLCBib29sKiByZXN1bHQpCit2
b2lkIEluc3BlY3RvcldvcmtlckFnZW50OjpjYW5JbnNwZWN0V29ya2VycyhFcnJvclN0cmluZyYs
IGJvb2wqIHJlc3VsdCkKIHsKICAgICAqcmVzdWx0ID0gdHJ1ZTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JXb3JrZXJBZ2VudDo6Y29ubmVjdFRvV29ya2VyKEVycm9yU3RyaW5nKiBlcnJvciwgaW50IHdv
cmtlcklkKQordm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6Y29ubmVjdFRvV29ya2VyKEVycm9y
U3RyaW5nJiBlcnJvciwgaW50IHdvcmtlcklkKQogewogICAgIFdvcmtlckZyb250ZW5kQ2hhbm5l
bCogY2hhbm5lbCA9IG1faWRUb0NoYW5uZWwuZ2V0KHdvcmtlcklkKTsKICAgICBpZiAoY2hhbm5l
bCkKICAgICAgICAgY2hhbm5lbC0+Y29ubmVjdFRvV29ya2VyR2xvYmFsU2NvcGUoKTsKICAgICBl
bHNlCi0gICAgICAgICplcnJvciA9ICJXb3JrZXIgaXMgZ29uZSI7CisgICAgICAgIGVycm9yID0g
QVNDSUlMaXRlcmFsKCJXb3JrZXIgaXMgZ29uZSIpOwogfQogCi12b2lkIEluc3BlY3Rvcldvcmtl
ckFnZW50OjpkaXNjb25uZWN0RnJvbVdvcmtlcihFcnJvclN0cmluZyogZXJyb3IsIGludCB3b3Jr
ZXJJZCkKK3ZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpc2Nvbm5lY3RGcm9tV29ya2VyKEVy
cm9yU3RyaW5nJiBlcnJvciwgaW50IHdvcmtlcklkKQogewogICAgIFdvcmtlckZyb250ZW5kQ2hh
bm5lbCogY2hhbm5lbCA9IG1faWRUb0NoYW5uZWwuZ2V0KHdvcmtlcklkKTsKICAgICBpZiAoY2hh
bm5lbCkKICAgICAgICAgY2hhbm5lbC0+ZGlzY29ubmVjdEZyb21Xb3JrZXJHbG9iYWxTY29wZSgp
OwogICAgIGVsc2UKLSAgICAgICAgKmVycm9yID0gIldvcmtlciBpcyBnb25lIjsKKyAgICAgICAg
ZXJyb3IgPSBBU0NJSUxpdGVyYWwoIldvcmtlciBpcyBnb25lIik7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yV29ya2VyQWdlbnQ6OnNlbmRNZXNzYWdlVG9Xb3JrZXIoRXJyb3JTdHJpbmcqIGVycm9yLCBp
bnQgd29ya2VySWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBtZXNzYWdlKQordm9p
ZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6c2VuZE1lc3NhZ2VUb1dvcmtlcihFcnJvclN0cmluZyYg
ZXJyb3IsIGludCB3b3JrZXJJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIG1lc3Nh
Z2UpCiB7CiAgICAgV29ya2VyRnJvbnRlbmRDaGFubmVsKiBjaGFubmVsID0gbV9pZFRvQ2hhbm5l
bC5nZXQod29ya2VySWQpOwogICAgIGlmIChjaGFubmVsKQogICAgICAgICBjaGFubmVsLT5wcm94
eSgpLT5zZW5kTWVzc2FnZVRvSW5zcGVjdG9yKG1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKICAg
ICBlbHNlCi0gICAgICAgICplcnJvciA9ICJXb3JrZXIgaXMgZ29uZSI7CisgICAgICAgIGVycm9y
ID0gQVNDSUlMaXRlcmFsKCJXb3JrZXIgaXMgZ29uZSIpOwogfQogCi12b2lkIEluc3BlY3Rvcldv
cmtlckFnZW50OjpzZXRBdXRvY29ubmVjdFRvV29ya2VycyhFcnJvclN0cmluZyosIGJvb2wgdmFs
dWUpCit2b2lkIEluc3BlY3RvcldvcmtlckFnZW50OjpzZXRBdXRvY29ubmVjdFRvV29ya2VycyhF
cnJvclN0cmluZyYsIGJvb2wgdmFsdWUpCiB7CiAgICAgbV9zaG91bGRQYXVzZURlZGljYXRlZFdv
cmtlck9uU3RhcnQgPSB2YWx1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvcldvcmtlckFnZW50LmgKaW5kZXggYmM3YzhjNTEyODY3ZWZkMzY3OWE4YmU4ZWU0ODRh
Y2I1N2M3YWM1My4uNTE4NGYxZTY0ZWNmOWZhM2UxNjZkZjRlMmViZjIyZWFjZjk4ZWYzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmgKQEAg
LTYzLDEzICs2MywxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3b3JrZXJHbG9iYWxTY29wZVRlcm1p
bmF0ZWQoV29ya2VyR2xvYmFsU2NvcGVQcm94eSopOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIKLSAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3Ry
aW5nKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FuSW5zcGVjdFdvcmtlcnMoRXJyb3JTdHJpbmcq
LCBib29sKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvbm5lY3RUb1dvcmtlcihFcnJv
clN0cmluZyosIGludCB3b3JrZXJJZCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc2Nv
bm5lY3RGcm9tV29ya2VyKEVycm9yU3RyaW5nKiwgaW50IHdvcmtlcklkKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb1dvcmtlcihFcnJvclN0cmluZyosIGludCB3b3Jr
ZXJJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgbWVzc2FnZSkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEF1dG9jb25uZWN0VG9Xb3JrZXJzKEVycm9y
U3RyaW5nKiwgYm9vbCB2YWx1ZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGVuYWJsZShF
cnJvclN0cmluZyYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3Ry
aW5nJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNhbkluc3BlY3RXb3JrZXJzKEVycm9y
U3RyaW5nJiwgYm9vbCopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0VG9Xb3Jr
ZXIoRXJyb3JTdHJpbmcmLCBpbnQgd29ya2VySWQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBkaXNjb25uZWN0RnJvbVdvcmtlcihFcnJvclN0cmluZyYsIGludCB3b3JrZXJJZCkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlVG9Xb3JrZXIoRXJyb3JTdHJpbmcmLCBp
bnQgd29ya2VySWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIG1l
c3NhZ2UpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRBdXRvY29ubmVjdFRvV29ya2Vy
cyhFcnJvclN0cmluZyYsIGJvb2wgdmFsdWUpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHZv
aWQgY3JlYXRlV29ya2VyRnJvbnRlbmRDaGFubmVsc0ZvckV4aXN0aW5nV29ya2VycygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwCmluZGV4IDZmMWNj
MTIzNTZmMDYwYmQ3NDBjYTdhMGQ2YTM5MDhkMWVjNzNhMjAuLjBhYThjNTc3ODljNWJiMDc3ZDU4
NmI1MGQ3MGZhYTE5ZGVlY2E2NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9QYWdlQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFn
ZUNvbnNvbGVBZ2VudC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgUGFnZUNvbnNvbGVBZ2VudDo6UGFn
ZUNvbnNvbGVBZ2VudChXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFu
YWcKIHsKIH0KIAotdm9pZCBQYWdlQ29uc29sZUFnZW50OjpjbGVhck1lc3NhZ2VzKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZykKK3ZvaWQgUGFnZUNvbnNvbGVBZ2VudDo6Y2xlYXJNZXNzYWdlcyhF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiB7CiAgICAgbV9pbnNwZWN0b3JET01BZ2VudC0+cmVs
ZWFzZURhbmdsaW5nTm9kZXMoKTsKIApAQCAtNjYsMTEgKzY2LDExIEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPE5vZGU+IG1fbm9kZTsKIH07CiAKLXZvaWQgUGFnZUNvbnNvbGVBZ2VudDo6YWRkSW5z
cGVjdGVkTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQpCit2b2lkIFBh
Z2VDb25zb2xlQWdlbnQ6OmFkZEluc3BlY3RlZE5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBpbnQgbm9kZUlkKQogewogICAgIE5vZGUqIG5vZGUgPSBtX2luc3BlY3RvckRPTUFnZW50LT5u
b2RlRm9ySWQobm9kZUlkKTsKICAgICBpZiAoIW5vZGUgfHwgbm9kZS0+aXNJblNoYWRvd1RyZWUo
KSkgewotICAgICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIm5vZGVJZCBpcyBub3Qg
dmFsaWQiKTsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIm5vZGVJZCBpcyBu
b3QgdmFsaWQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmgKaW5kZXggZDYyY2M1MjZmNmVmZmFlMjViOTJlZTQw
YzZhZWRjZWNlMTA4NmRmYS4uYTczNmJhZTE0ZmFmZTE2NTU0ZDQ2ZTRmNzA1MWFhZDdjMTNiMTkx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5oCkBAIC00
OSw4ICs0OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNXb3JrZXJBZ2VudCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2
b2lkIGNsZWFyTWVzc2FnZXMoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgYWRkSW5zcGVjdGVkTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBjbGVhck1lc3NhZ2VzKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGFkZEluc3BlY3RlZE5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlk
KSBvdmVycmlkZTsKIAogICAgIEluc3BlY3RvckRPTUFnZW50KiBtX2luc3BlY3RvckRPTUFnZW50
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3Bw
CmluZGV4IDQ3NGNiODE5OTAwN2FjYzk0ODhhYjY4ZjYzMmNkYWUwYmU2MDQzMGEuLmQ1ZjE5ZDUz
NTVkNjk2NDM3M2U3ZjllNTE2OGUyNDIwODMzNWEzN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQg
UGFnZURlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2coSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IFN0cmluZyYKICAgICBtX3BhZ2VBZ2VudC0+cGFnZSgpLT5jb25zb2xlKCkuYWRk
TWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNy
ZWF0ZVNjcmlwdENhbGxTdGFjayhleGVjLCBTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1Np
emVUb0NhcHR1cmUpKTsKIH0KIAotSW5qZWN0ZWRTY3JpcHQgUGFnZURlYnVnZ2VyQWdlbnQ6Omlu
amVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IGludCog
ZXhlY3V0aW9uQ29udGV4dElkKQorSW5qZWN0ZWRTY3JpcHQgUGFnZURlYnVnZ2VyQWdlbnQ6Omlu
amVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IGludCog
ZXhlY3V0aW9uQ29udGV4dElkKQogewogICAgIGlmICghZXhlY3V0aW9uQ29udGV4dElkKSB7CiAg
ICAgICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IG1haW5Xb3JsZEV4ZWNTdGF0ZSht
X3BhZ2VBZ2VudC0+bWFpbkZyYW1lKCkpOwpAQCAtMTMwLDEyICsxMzAsMTIgQEAgSW5qZWN0ZWRT
Y3JpcHQgUGFnZURlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcKIAogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKCktPmluamVjdGVkU2NyaXB0Rm9ySWQoKmV4ZWN1dGlvbkNvbnRl
eHRJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKLSAgICAgICAgKmVy
cm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJFeGVjdXRpb24gY29udGV4dCB3aXRoIGdpdmVuIGlk
IG5vdCBmb3VuZC4iKTsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkV4ZWN1
dGlvbiBjb250ZXh0IHdpdGggZ2l2ZW4gaWQgbm90IGZvdW5kLiIpOwogCiAgICAgcmV0dXJuIGlu
amVjdGVkU2NyaXB0OwogfQogCi12b2lkIFBhZ2VEZWJ1Z2dlckFnZW50OjpzZXRPdmVybGF5TWVz
c2FnZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyogbWVzc2FnZSkKK3ZvaWQgUGFnZURlYnVn
Z2VyQWdlbnQ6OnNldE92ZXJsYXlNZXNzYWdlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nKiBt
ZXNzYWdlKQogewogICAgIG1fb3ZlcmxheS0+c2V0UGF1c2VkSW5EZWJ1Z2dlck1lc3NhZ2UobWVz
c2FnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVn
Z2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5o
CmluZGV4IGZlNDQ1NzA0Zjc0Y2JjNmY5NjM0NzIyYTExYjNjNWQ0NGU5YTk0NWMuLjgyMjk5OWU1
ZDFhMWQ0NDE5MDkxYmIzZWMyM2JhODIwZTliOTFjZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5oCkBAIC02OSw4ICs2OSw4IEBAIHByaXZhdGU6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgYnJlYWtwb2ludEFjdGlvbkxvZyhKU0M6OkV4ZWNTdGF0ZSosIGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBJbnNwZWN0b3I6OkluamVjdGVk
U2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyosIGNvbnN0IGludCogZXhl
Y3V0aW9uQ29udGV4dElkKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0T3ZlcmxheU1l
c3NhZ2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3Ry
aW5nJiwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCBzZXRPdmVybGF5TWVzc2FnZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyopIG92
ZXJyaWRlOwogCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBJbnNw
ZWN0b3JPdmVybGF5KiBtX292ZXJsYXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFn
ZVJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggOTZmMmVhYzAwMTFmMzMzNmE0ODliY2MxYWQ4OTliMWZh
YzExZjFlNS4uOTcxYmY5OGNmNTM4NjQzMDJhYTk4ZGZiNWI5MmY0ZmM1OTM0ODEzZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcApAQCAtNzIsMTMg
KzcyLDEzIEBAIHZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByCiAgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXIgPSBudWxscHRyOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKIAotICAgIFN0
cmluZyBlcnJvclN0cmluZzsKLSAgICBkaXNhYmxlKCZlcnJvclN0cmluZyk7CisgICAgU3RyaW5n
IHVudXNlZDsKKyAgICBkaXNhYmxlKHVudXNlZCk7CiAKICAgICBJbnNwZWN0b3JSdW50aW1lQWdl
bnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKHJlYXNvbik7CiB9CiAKLXZvaWQgUGFn
ZVJ1bnRpbWVBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZykKK3ZvaWQgUGFn
ZVJ1bnRpbWVBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKIHsKICAgICBp
ZiAoZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgUGFn
ZVJ1bnRpbWVBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZykKICAgICAgICAg
cmVwb3J0RXhlY3V0aW9uQ29udGV4dENyZWF0aW9uKCk7CiB9CiAKLXZvaWQgUGFnZVJ1bnRpbWVB
Z2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcpCit2b2lkIFBhZ2VSdW50aW1l
QWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogewogICAgIGlmICghZW5h
YmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMjgsMTkgKzEyOCwxOSBAQCBKU0M6OlZNJiBQ
YWdlUnVudGltZUFnZW50OjpnbG9iYWxWTSgpCiAgICAgcmV0dXJuIEpTRE9NV2luZG93QmFzZTo6
Y29tbW9uVk0oKTsKIH0KIAotSW5qZWN0ZWRTY3JpcHQgUGFnZVJ1bnRpbWVBZ2VudDo6aW5qZWN0
ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgaW50KiBleGVj
dXRpb25Db250ZXh0SWQpCitJbmplY3RlZFNjcmlwdCBQYWdlUnVudGltZUFnZW50OjppbmplY3Rl
ZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBpbnQqIGV4ZWN1
dGlvbkNvbnRleHRJZCkKIHsKICAgICBpZiAoIWV4ZWN1dGlvbkNvbnRleHRJZCkgewogICAgICAg
ICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUgPSBtYWluV29ybGRFeGVjU3RhdGUoJm1faW5z
cGVjdGVkUGFnZS0+bWFpbkZyYW1lKCkpOwogICAgICAgICBJbmplY3RlZFNjcmlwdCByZXN1bHQg
PSBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS0+aW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUp
OwogICAgICAgICBpZiAocmVzdWx0Lmhhc05vVmFsdWUoKSkKLSAgICAgICAgICAgICplcnJvclN0
cmluZyA9IEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwgZXJyb3I6IG1haW4gd29ybGQgZXhlY3V0aW9u
IGNvbnRleHQgbm90IGZvdW5kLiIpOworICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxp
dGVyYWwoIkludGVybmFsIGVycm9yOiBtYWluIHdvcmxkIGV4ZWN1dGlvbiBjb250ZXh0IG5vdCBm
b3VuZC4iKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICBJbmplY3RlZFNj
cmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0TWFuYWdlcigpLT5pbmplY3RlZFNj
cmlwdEZvcklkKCpleGVjdXRpb25Db250ZXh0SWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5o
YXNOb1ZhbHVlKCkpCi0gICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiRXhlY3V0
aW9uIGNvbnRleHQgd2l0aCBnaXZlbiBpZCBub3QgZm91bmQuIik7CisgICAgICAgIGVycm9yU3Ry
aW5nID0gQVNDSUlMaXRlcmFsKCJFeGVjdXRpb24gY29udGV4dCB3aXRoIGdpdmVuIGlkIG5vdCBm
b3VuZC4iKTsKICAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCmluZGV4IDFiMzBmNDY0NWNhYzBmZmVhNjQy
ZTU3YmYwMmY5ODgxMzAwNGQ1ODYuLmI2ZGJjMjE3NjU0YmFjYTZjYjEwYTk5MDE0OTBhODJmZTVh
YzUxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaApA
QCAtNjAsMTUgKzYwLDE1IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Oklu
c3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBlbmFi
bGUoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJv
clN0cmluZyopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcm
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJy
aWRlOwogCiAgICAgdm9pZCBkaWRDcmVhdGVNYWluV29ybGRDb250ZXh0KEZyYW1lKik7CiAgICAg
dm9pZCBkaWRDcmVhdGVJc29sYXRlZENvbnRleHQoRnJhbWUqLCBKU0M6OkV4ZWNTdGF0ZSosIFNl
Y3VyaXR5T3JpZ2luKik7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBKU0M6OlZNJiBnbG9iYWxW
TSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdCBpbmpl
Y3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcqLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRl
eHRJZCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0IGlu
amVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYsIGNvbnN0IGludCogZXhlY3V0aW9uQ29u
dGV4dElkKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgbXV0ZUNvbnNvbGUoKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgdW5tdXRlQ29uc29sZSgpIG92ZXJyaWRlOwogICAgIHZvaWQg
cmVwb3J0RXhlY3V0aW9uQ29udGV4dENyZWF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9XZWJDb25zb2xlQWdlbnQuY3BwCmluZGV4IDhkYTlhMWUyZTRjMzk0MzIwYjZlMzRlY2Mx
NTIzNWExMzIxNjk0NzguLmI4YzMwYTEzNTlkODA4ZTE1OTg0YzZjYTMyOTlhYTAxZDJlZGNmZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJDb25zb2xlQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJDb25zb2xlQWdlbnQuY3BwCkBAIC00
OSw3ICs0OSw3IEBAIFdlYkNvbnNvbGVBZ2VudDo6V2ViQ29uc29sZUFnZW50KFdlYkluamVjdGVk
U2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyCiB7CiB9CiAKLXZvaWQgV2ViQ29u
c29sZUFnZW50OjpzZXRNb25pdG9yaW5nWEhSRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wgZW5h
YmxlZCkKK3ZvaWQgV2ViQ29uc29sZUFnZW50OjpzZXRNb25pdG9yaW5nWEhSRW5hYmxlZChFcnJv
clN0cmluZyYsIGJvb2wgZW5hYmxlZCkKIHsKICAgICBtX21vbml0b3JpbmdYSFJFbmFibGVkID0g
ZW5hYmxlZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJDb25z
b2xlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJDb25zb2xlQWdlbnQuaApp
bmRleCA3ZmQwMTExM2U5MGJlY2FkYmVhMjIwNTRjYmExMGJhY2E0NWVhODEzLi4yODFiOWI4YmRj
MDc4ODJhYTEwMmM5YjBmYWExZjBlN2E5MjI1NzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1dlYkNvbnNvbGVBZ2VudC5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBXZWJD
b25zb2xlQWdlbnQoV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7CiAgICAgdmlydHVhbCB+V2Vi
Q29uc29sZUFnZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TW9uaXRvcmluZ1hIUkVu
YWJsZWQoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQpIG92ZXJyaWRlIGZpbmFsOworICAgIHZp
cnR1YWwgdm9pZCBzZXRNb25pdG9yaW5nWEhSRW5hYmxlZChFcnJvclN0cmluZyYsIGJvb2wgZW5h
YmxlZCkgb3ZlcnJpZGUgZmluYWw7CiAKICAgICB2b2lkIGZyYW1lV2luZG93RGlzY2FyZGVkKERP
TVdpbmRvdyopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
Q29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJDb25zb2xl
QWdlbnQuY3BwCmluZGV4IGNiMmJiZTIwYjExZDQ5NTU0OTRiMjQwMmJjMWNiMDZiNjNhN2FmNmIu
LmJiMzBhZjdhMzYzYmRkZWVjMmNhYWRjYmI3NjIwYzRmNjk4OTRkMWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwCkBAIC00Myw5ICs0Myw5
IEBAIFdvcmtlckNvbnNvbGVBZ2VudDo6V29ya2VyQ29uc29sZUFnZW50KFdlYkluamVjdGVkU2Ny
aXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNCiB7CiB9CiAKLXZvaWQgV29ya2VyQ29uc29sZUFn
ZW50OjphZGRJbnNwZWN0ZWROb2RlKEVycm9yU3RyaW5nKiBlcnJvciwgaW50KQordm9pZCBXb3Jr
ZXJDb25zb2xlQWdlbnQ6OmFkZEluc3BlY3RlZE5vZGUoRXJyb3JTdHJpbmcmIGVycm9yLCBpbnQp
CiB7Ci0gICAgKmVycm9yID0gQVNDSUlMaXRlcmFsKCJhZGRJbnNwZWN0ZWROb2RlIGlzIG5vdCBz
dXBwb3J0ZWQgZm9yIHdvcmtlcnMiKTsKKyAgICBlcnJvciA9IEFTQ0lJTGl0ZXJhbCgiYWRkSW5z
cGVjdGVkTm9kZSBpcyBub3Qgc3VwcG9ydGVkIGZvciB3b3JrZXJzIik7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3Jr
ZXJDb25zb2xlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJDb25zb2xl
QWdlbnQuaAppbmRleCAzZjY3YWFmNGYwMjIzYjgzOGM2N2Q4MjMxODkyOGZkNjgzZmRiMGFlLi5m
MGYxYjQ1OTZjYTViMDcxNzM4MDk3ZjVmZjJlYzVlMTM4NDVlMzZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1dvcmtlckNvbnNvbGVBZ2VudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNXb3JrZXJBZ2VudCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgYWRkSW5zcGVjdGVk
Tm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBhZGRJbnNwZWN0ZWROb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCkgb3ZlcnJpZGU7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggMDQzMzY1NzQ3MTZiODBhNWVmZGZjM2U0
ZmQxNzk5ZWZkZjkwOGFhMi4uODA1ZjgyYTZiNTUwMWRjMDRjYjNiNWNmNDA5ZDdhYTMzYTk0YTEw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50
LmNwcApAQCAtMTM3LDEwICsxMzcsMTAgQEAgV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXImIFdvcmtl
ckRlYnVnZ2VyQWdlbnQ6OnNjcmlwdERlYnVnU2VydmVyKCkKICAgICByZXR1cm4gbV9zY3JpcHRE
ZWJ1Z1NlcnZlcjsKIH0KIAotSW5qZWN0ZWRTY3JpcHQgV29ya2VyRGVidWdnZXJBZ2VudDo6aW5q
ZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgaW50KiBleGVjdXRp
b25Db250ZXh0SWQpCitJbmplY3RlZFNjcmlwdCBXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3Rl
ZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmIGVycm9yLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNv
bnRleHRJZCkKIHsKICAgICBpZiAoZXhlY3V0aW9uQ29udGV4dElkKSB7Ci0gICAgICAgICplcnJv
ciA9IEFTQ0lJTGl0ZXJhbCgiRXhlY3V0aW9uIGNvbnRleHQgaWQgaXMgbm90IHN1cHBvcnRlZCBm
b3Igd29ya2VycyBhcyB0aGVyZSBpcyBvbmx5IG9uZSBleGVjdXRpb24gY29udGV4dC4iKTsKKyAg
ICAgICAgZXJyb3IgPSBBU0NJSUxpdGVyYWwoIkV4ZWN1dGlvbiBjb250ZXh0IGlkIGlzIG5vdCBz
dXBwb3J0ZWQgZm9yIHdvcmtlcnMgYXMgdGhlcmUgaXMgb25seSBvbmUgZXhlY3V0aW9uIGNvbnRl
eHQuIik7CiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmgKaW5kZXggNmQ0MWFh
NTg4NjA0YjdlYjE1ZGRiYWUzZTY1OTRkMWJjNDA3NmQ3My4uY2NiZGFhNDI3Nzk3Y2NmMWZjZWYx
MTUzMDkyOTkyMGZhYWQzNWMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dvcmtlckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29y
a2VyRGVidWdnZXJBZ2VudC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc3RhcnRMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcigpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBzdG9wTGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIoYm9vbCBpc0JlaW5nRGVz
dHJveWVkKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdvcmtlclNjcmlwdERlYnVnU2VydmVyJiBz
Y3JpcHREZWJ1Z1NlcnZlcigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpJbmpl
Y3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcqLCBjb25zdCBpbnQq
IGV4ZWN1dGlvbkNvbnRleHRJZCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBJbnNwZWN0b3I6Oklu
amVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYsIGNvbnN0IGlu
dCogZXhlY3V0aW9uQ29udGV4dElkKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgbXV0ZUNv
bnNvbGUoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdW5tdXRlQ29uc29sZSgpIG92ZXJy
aWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKaW5kZXggZmI5Y2ZlMjMyZDEyOThhMjYzMTkzODEwYTAyZTI4NTA1
YmYzNzUwMi4uNjAwZWE4M2NjNWYwODliODQxYjAxOTk3Yjg0Yjc2YTUzMTY1NWNlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyLmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxl
cjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnCiB2b2lk
IFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OnJlc3VtZSgpCiB7CiAgICAgRXJyb3JTdHJpbmcg
dW51c2VkOwotICAgIG1fcnVudGltZUFnZW50LT5ydW4oJnVudXNlZCk7CisgICAgbV9ydW50aW1l
QWdlbnQtPnJ1bih1bnVzZWQpOwogfQogCiBJbnNwZWN0b3JGdW5jdGlvbkNhbGxIYW5kbGVyIFdv
cmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcAppbmRleCBm
ZDFhMWUzMWY2YmRiNThhNGJlYzZjYjg3NjVkNmE0OWFhZDg4MjM2Li4yMWQ0MzAxYjYxYTc3ZWUz
YTgzNGZiMTc0YmRlZThlZTI0OGY4NGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvV29ya2VyUnVudGltZUFnZW50LmNwcApAQCAtNjYsMTAgKzY2LDEwIEBAIHZvaWQgV29ya2Vy
UnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNj
b25uZWN0UmVhc29uCiAgICAgSW5zcGVjdG9yUnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZChyZWFzb24pOwogfQogCi1JbmplY3RlZFNjcmlwdCBXb3JrZXJSdW50aW1l
QWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IGlu
dCogZXhlY3V0aW9uQ29udGV4dElkKQorSW5qZWN0ZWRTY3JpcHQgV29ya2VyUnVudGltZUFnZW50
OjppbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmIGVycm9yLCBjb25zdCBpbnQqIGV4
ZWN1dGlvbkNvbnRleHRJZCkKIHsKICAgICBpZiAoZXhlY3V0aW9uQ29udGV4dElkKSB7Ci0gICAg
ICAgICplcnJvciA9IEFTQ0lJTGl0ZXJhbCgiRXhlY3V0aW9uIGNvbnRleHQgaWQgaXMgbm90IHN1
cHBvcnRlZCBmb3Igd29ya2VycyBhcyB0aGVyZSBpcyBvbmx5IG9uZSBleGVjdXRpb24gY29udGV4
dC4iKTsKKyAgICAgICAgZXJyb3IgPSBBU0NJSUxpdGVyYWwoIkV4ZWN1dGlvbiBjb250ZXh0IGlk
IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHdvcmtlcnMgYXMgdGhlcmUgaXMgb25seSBvbmUgZXhlY3V0
aW9uIGNvbnRleHQuIik7CiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogICAgIH0K
IApAQCAtODcsNyArODcsNyBAQCB2b2lkIFdvcmtlclJ1bnRpbWVBZ2VudDo6dW5tdXRlQ29uc29s
ZSgpCiAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBtdXRlIGNvbnNvbGUgZm9yIHdvcmtlcnMuCiB9
CiAKLXZvaWQgV29ya2VyUnVudGltZUFnZW50OjpydW4oRXJyb3JTdHJpbmcqKQordm9pZCBXb3Jr
ZXJSdW50aW1lQWdlbnQ6OnJ1bihFcnJvclN0cmluZyYpCiB7CiAgICAgbV9wYXVzZWQgPSBmYWxz
ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1l
QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaApp
bmRleCAyNzRlNjcwYjk0MjA2NDAwNTgxNTI3YzQ2NTU0MTVhZTJhYzVkZTBhLi5jYjgyYzNiYzc3
NTIwMTBhZTU5YTczN2QyNGVkY2MyZDcxYTBhNGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oCkBAIC00OCwxMyArNDgsMTMgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcnVuKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIHJ1bihFcnJvclN0cmluZyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBwYXVzZVdv
cmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlKik7CiAKIHByaXZhdGU6CiAgICAgdmly
dHVhbCBKU0M6OlZNJiBnbG9iYWxWTSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW5zcGVjdG9y
OjpJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcqLCBjb25z
dCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBJbnNwZWN0
b3I6OkluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYsIGNv
bnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
bXV0ZUNvbnNvbGUoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdW5tdXRlQ29uc29sZSgp
IG92ZXJyaWRlOwogICAgIFdvcmtlckdsb2JhbFNjb3BlKiBtX3dvcmtlckdsb2JhbFNjb3BlOwo=
</data>
<flag name="review"
          id="263662"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>