<?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>140557</bug_id>
          
          <creation_ts>2015-01-16 12:36:34 -0800</creation_ts>
          <short_desc>Web Inspector: code generator should introduce typedefs for protocol types that are arrays</short_desc>
          <delta_ts>2015-01-16 15:17:44 -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>jonowells</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1061901</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-01-16 12:36:34 -0800</bug_when>
    <thetext>Example: say I want the following situation:

{
    &quot;domain&quot;: &quot;OverlayTypes&quot;,
    &quot;description&quot;: &quot;Exposes types to be used by the inspector overlay.&quot;,
    &quot;types&quot;: [
        {
            &quot;id&quot;: &quot;Point&quot;,
            &quot;type&quot;: &quot;object&quot;,
            &quot;properties&quot;: [
                { &quot;name&quot;: &quot;x&quot;, &quot;type&quot;: &quot;number&quot; },
                { &quot;name&quot;: &quot;y&quot;, &quot;type&quot;: &quot;number&quot; }
            ]
        },
        {
            &quot;id&quot;: &quot;Quad&quot;,
            &quot;description&quot;: &quot;A quad is a collection of 4 points, often representing a transformed rectangle. When initialized from a rect, the points are in clockwise order from top left.&quot;,
            &quot;type&quot;: &quot;array&quot;,
            &quot;items&quot;: { &quot;type&quot;: &quot;Point&quot; }
        }
    ]
}


Currently, there is no generated type name for Inspector::Protocol::OverlayTypes::Quad. Instead, you have to do Inspector::Protocol::Array&lt;Inspector::Protocol::OverlayTypes::Point&gt;. This is longwinded and makes the code hard to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061902</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-01-16 12:36:56 -0800</bug_when>
    <thetext>&lt;rdar://problem/19502481&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061939</commentid>
    <comment_count>2</comment_count>
      <attachid>244799</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-01-16 13:21:09 -0800</bug_when>
    <thetext>Created attachment 244799
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061942</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-16 13:24:16 -0800</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>1061964</commentid>
    <comment_count>4</comment_count>
      <attachid>244799</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-01-16 14:17:50 -0800</bug_when>
    <thetext>Comment on attachment 244799
Patch

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

Nice. r=me

&gt; Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_protocol_types_header.py:154
&gt; +            if len(declaration.description) &gt; 0:
&gt; +                typedef_lines.append(&apos;/* %s */&apos; % declaration.description)

I see this is copied from the primitive typedef, is it useful in either case? I&apos;ll be honest, I don&apos;t think I ever noticed these comments before.

&gt; Source/JavaScriptCore/inspector/scripts/tests/expected/type-declaration-array-type.json-result:368
&gt; +typedef Inspector::Protocol::Array&lt;int&gt; LuckyNumbers;
&gt; +
&gt; +typedef Inspector::Protocol::Array&lt;String&gt; BabyNames;
&gt; +
&gt; +typedef Inspector::Protocol::Array&lt;Inspector::Protocol::Runtime::ObjectId&gt; NewObjects;
&gt; +
&gt; +typedef Inspector::Protocol::Array&lt;Inspector::Protocol::Debugger::BreakpointId&gt; OldObjects;
&gt; +
&gt; +typedef Inspector::Protocol::Array&lt;Inspector::Protocol::Debugger::Reason&gt; StopReasons;

Hmm, why are there newlines between these? They are all defined in the same domain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061967</commentid>
    <comment_count>5</comment_count>
      <attachid>244799</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-01-16 14:19:40 -0800</bug_when>
    <thetext>Comment on attachment 244799
Patch

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

&gt;&gt; Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_protocol_types_header.py:154
&gt;&gt; +                typedef_lines.append(&apos;/* %s */&apos; % declaration.description)
&gt; 
&gt; I see this is copied from the primitive typedef, is it useful in either case? I&apos;ll be honest, I don&apos;t think I ever noticed these comments before.

It is a vestige from the old generator. I think the idea is that you will see a description if you use &quot;go to definition&quot; in an IDE.

&gt;&gt; Source/JavaScriptCore/inspector/scripts/tests/expected/type-declaration-array-type.json-result:368
&gt;&gt; +typedef Inspector::Protocol::Array&lt;Inspector::Protocol::Debugger::Reason&gt; StopReasons;
&gt; 
&gt; Hmm, why are there newlines between these? They are all defined in the same domain.

I&apos;ll fix that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061990</commentid>
    <comment_count>6</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-01-16 15:17:44 -0800</bug_when>
    <thetext>Committed r178606: &lt;http://trac.webkit.org/changeset/178606&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244799</attachid>
            <date>2015-01-16 13:21:09 -0800</date>
            <delta_ts>2015-01-16 14:17:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140557-20150116132033.patch</filename>
            <type>text/plain</type>
            <size>102518</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc4NDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MjNkNTg4OTE2NWU4YWMwOWZhMTIzOGZjMGU2YmZkODIyNWZjNGM3Li5lODA4OGJmYWFlYjRjMjAw
N2I5YjJhNzM0MmUyYzY3MGUzNDUzOTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw0MiBAQAogMjAxNS0wMS0xNiAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogY29kZSBnZW5lcmF0b3Igc2hvdWxkIGlu
dHJvZHVjZSB0eXBlZGVmcyBmb3IgcHJvdG9jb2wgdHlwZXMgdGhhdCBhcmUgYXJyYXlzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDA1NTcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHksIHRo
ZXJlIGlzIG5vIGdlbmVyYXRlZCB0eXBlIG5hbWUgZm9yICJhcnJheSIgdHlwZSBkZWNsYXJhdGlv
bnMgc3VjaCBhcyBDb25zb2xlLkNhbGxTdGFjay4KKyAgICAgICAgVGhpcyBtYWtlcyBpdCBsb25n
d2luZGVkIGFuZCBjb25mdXNpbmcgdG8gdXNlIHRoZSB0eXBlIGluIEMrKyBjb2RlLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWRkcyBhIHR5cGVkZWYgZm9yIGFycmF5IHR5cGUgZGVjbGFyYXRpb25z
LCBzbyB0eXBlcyBzdWNoIGFzIENvbnNvbGU6OkNhbGxTdGFjaworICAgICAgICBjYW4gYmUgcmVm
ZXJyZWQgdG8gZGlyZWN0bHksIHJhdGhlciB0aGFuIHVzaW5nIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PENvbnNvbGU6OkNhbGxGcmFtZT4uCisKKyAgICAgICAgU29tZSB0ZXN0cyB3ZXJlIHVw
ZGF0ZWQgdG8gY292ZXIgYXJyYXkgdHlwZSBkZWNsYXJhdGlvbnMgdXNlZCBhcyBwYXJhbWV0ZXJz
IGFuZCB0eXBlIG1lbWJlcnMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNr
LmNwcDogVXNlIHRoZSBuZXcgdHlwZWRlZi4KKyAgICAgICAgKEluc3BlY3Rvcjo6U2NyaXB0Q2Fs
bFN0YWNrOjpidWlsZEluc3BlY3RvckFycmF5KToKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0
Q2FsbFN0YWNrLmg6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2Vu
ZXJhdG9yLnB5OgorICAgICAgICAoQ3BwR2VuZXJhdG9yLmNwcF9wcm90b2NvbF90eXBlX2Zvcl90
eXBlKTogSWYgYW4gQXJyYXlUeXBlIGlzIG5vbWluYWwsIHVzZSB0aGUgdHlwZWRlZidkIG5hbWUg
aW5zdGVhZC4KKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2Nw
cF9wcm90b2NvbF90eXBlc19oZWFkZXIucHk6CisgICAgICAgIChfZ2VuZXJhdGVfdHlwZWRlZnNf
Zm9yX2RvbWFpbik6IEFsc28gZ2VuZXJhdGUgdHlwZWRlZnMgZm9yIGFycmF5IHR5cGUgZGVjbGFy
YXRpb25zLgorICAgICAgICAoX2dlbmVyYXRlX3R5cGVkZWZzX2Zvcl9kb21haW4uSW5zcGVjdG9y
KToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL21vZGVscy5weTogU2F2ZSB0
aGUgbmFtZSBvZiBhbiBBcnJheVR5cGUgd2hlbiBpdCBpcyBhIHR5cGUgZGVjbGFyYXRpb24uCisg
ICAgICAgIChBcnJheVR5cGUuX19pbml0X18pOgorICAgICAgICAoUHJvdG9jb2wucmVzb2x2ZV90
eXBlcyk6CisgICAgICAgIChQcm90b2NvbC5sb29rdXBfdHlwZV9yZWZlcmVuY2UpOgorICAgICAg
ICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRl
Lmpzb246CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvY29tbWFuZHMtd2l0aC1v
cHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb246CisgICAgICAgICogaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uOgorICAg
ICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5
cGUuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21t
YW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0
dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3Vs
dDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xh
cmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3Vs
dDoKKworMjAxNS0wMS0xNiAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+
CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogY29kZSBnZW5lcmF0b3Igc2hvdWxkIGZhaWwgb24g
ZHVwbGljYXRlIHBhcmFtZXRlciBhbmQgbWVtYmVyIG5hbWVzCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDA1NTUKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCmluZGV4IGFhNDUyYWQ3
MGRhMmY2YmIzNmI5NDdiYjhiOGI0MmUzMzg1MzJiNjkuLjk5ZGY4MzZlMTkzYzMwNDkzMjEyNzFh
ZDRmZTQ0NjNlZjIyMjZmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAKQEAgLTEwNyw5ICsxMDcsOSBAQCBib29sIFNjcmlw
dENhbGxTdGFjazo6aXNFcXVhbChTY3JpcHRDYWxsU3RhY2sqIG8pIGNvbnN0CiB9CiAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQotUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNhbGxGcmFtZT4+IFNjcmlwdENhbGxTdGFjazo6YnVpbGRJ
bnNwZWN0b3JBcnJheSgpIGNvbnN0CitSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6
U3RhY2tUcmFjZT4gU2NyaXB0Q2FsbFN0YWNrOjpidWlsZEluc3BlY3RvckFycmF5KCkgY29uc3QK
IHsKLSAgICBhdXRvIGZyYW1lcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOworICAgIGF1dG8gZnJh
bWVzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6U3RhY2tUcmFjZTo6Y3JlYXRlKCk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2ZyYW1lcy5zaXplKCk7IGkrKykKICAgICAg
ICAgZnJhbWVzLT5hZGRJdGVtKG1fZnJhbWVzLmF0KGkpLmJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkp
OwogICAgIHJldHVybiBXVEY6Om1vdmUoZnJhbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oCmluZGV4IDZkYjdkZTg2NjI4ZGM5Zjhm
OWMzNTMwYzAyZjQwNTJlNmUzNzRlMzEuLjI1M2Q4NTIyNDc1MTllODc0YjRjYWY2ZjViZWVlMzlh
YTk1MmM4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2Ny
aXB0Q2FsbFN0YWNrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3Jp
cHRDYWxsU3RhY2suaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VxdWFs
KFNjcmlwdENhbGxTdGFjayopIGNvbnN0OwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBS
ZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29s
ZTo6Q2FsbEZyYW1lPj4gYnVpbGRJbnNwZWN0b3JBcnJheSgpIGNvbnN0OworICAgIFJlZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpTdGFja1RyYWNlPiBidWlsZEluc3BlY3RvckFycmF5
KCkgY29uc3Q7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3IucHkgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9y
LnB5CmluZGV4IGJhNDkxMGQ5ODRiMmJhMTdlOTM2MGJmMDA0OTlhYzMxZWIwNTlmMTQuLjAyMTE1
YWUxYmZmMzM2MGQyMjY0ZjBhNDAxZGVjYjE0ZjhlYzQ1NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3IucHkK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3Bw
X2dlbmVyYXRvci5weQpAQCAtOTMsMTAgKzkzLDExIEBAIGNsYXNzIENwcEdlbmVyYXRvcjoKICAg
ICBkZWYgY3BwX3Byb3RvY29sX3R5cGVfZm9yX3R5cGUoX3R5cGUpOgogICAgICAgICBpZiBpc2lu
c3RhbmNlKF90eXBlLCBPYmplY3RUeXBlKSBhbmQgbGVuKF90eXBlLm1lbWJlcnMpID09IDA6CiAg
ICAgICAgICAgICByZXR1cm4gJ0luc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JwotICAgICAgICBp
ZiBpc2luc3RhbmNlKF90eXBlLCAoT2JqZWN0VHlwZSwgQWxpYXNlZFR5cGUsIEVudW1UeXBlKSk6
Ci0gICAgICAgICAgICByZXR1cm4gJ0luc3BlY3Rvcjo6UHJvdG9jb2w6OiVzOjolcycgJSAoX3R5
cGUudHlwZV9kb21haW4oKS5kb21haW5fbmFtZSwgX3R5cGUucmF3X25hbWUoKSkKICAgICAgICAg
aWYgaXNpbnN0YW5jZShfdHlwZSwgQXJyYXlUeXBlKToKLSAgICAgICAgICAgIHJldHVybiAnSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8JXM+JyAlIENwcEdlbmVyYXRvci5jcHBfcHJvdG9jb2xf
dHlwZV9mb3JfdHlwZShfdHlwZS5lbGVtZW50X3R5cGUpCisgICAgICAgICAgICBpZiBfdHlwZS5y
YXdfbmFtZSgpIGlzIE5vbmU6ICAjIE90aGVyd2lzZSwgZmFsbCB0aHJvdWdoIGFuZCB1c2UgdHlw
ZWRlZidkIG5hbWUuCisgICAgICAgICAgICAgICAgcmV0dXJuICdJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTwlcz4nICUgQ3BwR2VuZXJhdG9yLmNwcF9wcm90b2NvbF90eXBlX2Zvcl90eXBlKF90
eXBlLmVsZW1lbnRfdHlwZSkKKyAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgKE9iamVjdFR5
cGUsIEFsaWFzZWRUeXBlLCBFbnVtVHlwZSwgQXJyYXlUeXBlKSk6CisgICAgICAgICAgICByZXR1
cm4gJ0luc3BlY3Rvcjo6UHJvdG9jb2w6OiVzOjolcycgJSAoX3R5cGUudHlwZV9kb21haW4oKS5k
b21haW5fbmFtZSwgX3R5cGUucmF3X25hbWUoKSkKICAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlw
ZSwgUHJpbWl0aXZlVHlwZSk6CiAgICAgICAgICAgICByZXR1cm4gQ3BwR2VuZXJhdG9yLmNwcF9u
YW1lX2Zvcl9wcmltaXRpdmVfdHlwZShfdHlwZSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29s
X3R5cGVzX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19oZWFkZXIucHkKaW5kZXggOTYx
MTY1MGIxZWMxNTkxYzFmM2IxNTFlMWUxY2Q2N2QwZmZlZTcwNC4uM2M0YWU2OGZkNTNjZDUyMDk4
ZWRkN2Q0NzI0YjAwMTY1NTRmNGZlYSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2hl
YWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29k
ZWdlbi9nZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5CkBAIC0xMzQsNyArMTM0
LDggQEAgY2xhc3MgQ3BwUHJvdG9jb2xUeXBlc0hlYWRlckdlbmVyYXRvcihHZW5lcmF0b3IpOgog
CiAgICAgZGVmIF9nZW5lcmF0ZV90eXBlZGVmc19mb3JfZG9tYWluKHNlbGYsIGRvbWFpbik6CiAg
ICAgICAgIHByaW1pdGl2ZV9kZWNsYXJhdGlvbnMgPSBmaWx0ZXIobGFtYmRhIGRlY2w6IGlzaW5z
dGFuY2UoZGVjbC50eXBlLCBBbGlhc2VkVHlwZSksIGRvbWFpbi50eXBlX2RlY2xhcmF0aW9ucykK
LSAgICAgICAgaWYgbGVuKHByaW1pdGl2ZV9kZWNsYXJhdGlvbnMpID09IDA6CisgICAgICAgIGFy
cmF5X2RlY2xhcmF0aW9ucyA9IGZpbHRlcihsYW1iZGEgZGVjbDogaXNpbnN0YW5jZShkZWNsLnR5
cGUsIEFycmF5VHlwZSksIGRvbWFpbi50eXBlX2RlY2xhcmF0aW9ucykKKyAgICAgICAgaWYgbGVu
KHByaW1pdGl2ZV9kZWNsYXJhdGlvbnMpID09IDAgYW5kIGxlbihhcnJheV9kZWNsYXJhdGlvbnMp
ID09IDA6CiAgICAgICAgICAgICByZXR1cm4gJycKIAogICAgICAgICBzZWN0aW9ucyA9IFtdCkBA
IC0xNDYsNiArMTQ3LDE0IEBAIGNsYXNzIENwcFByb3RvY29sVHlwZXNIZWFkZXJHZW5lcmF0b3Io
R2VuZXJhdG9yKToKICAgICAgICAgICAgIHR5cGVkZWZfbGluZXMuYXBwZW5kKCd0eXBlZGVmICVz
ICVzOycgJSAocHJpbWl0aXZlX25hbWUsIGRlY2xhcmF0aW9uLnR5cGVfbmFtZSkpCiAgICAgICAg
ICAgICBzZWN0aW9ucy5hcHBlbmQoJ1xuJy5qb2luKHR5cGVkZWZfbGluZXMpKQogCisgICAgICAg
IGZvciBkZWNsYXJhdGlvbiBpbiBhcnJheV9kZWNsYXJhdGlvbnM6CisgICAgICAgICAgICBlbGVt
ZW50X3R5cGUgPSBDcHBHZW5lcmF0b3IuY3BwX3Byb3RvY29sX3R5cGVfZm9yX3R5cGUoZGVjbGFy
YXRpb24udHlwZS5lbGVtZW50X3R5cGUpCisgICAgICAgICAgICB0eXBlZGVmX2xpbmVzID0gW10K
KyAgICAgICAgICAgIGlmIGxlbihkZWNsYXJhdGlvbi5kZXNjcmlwdGlvbikgPiAwOgorICAgICAg
ICAgICAgICAgIHR5cGVkZWZfbGluZXMuYXBwZW5kKCcvKiAlcyAqLycgJSBkZWNsYXJhdGlvbi5k
ZXNjcmlwdGlvbikKKyAgICAgICAgICAgIHR5cGVkZWZfbGluZXMuYXBwZW5kKCd0eXBlZGVmIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PCVzPiAlczsnICUgKGVsZW1lbnRfdHlwZSwgZGVjbGFy
YXRpb24udHlwZV9uYW1lKSkKKyAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZCgnXG4nLmpvaW4o
dHlwZWRlZl9saW5lcykpCisKICAgICAgICAgbGluZXMgPSBbXQogICAgICAgICBsaW5lcy5hcHBl
bmQoJ25hbWVzcGFjZSAlcyB7JyAlIGRvbWFpbi5kb21haW5fbmFtZSkKICAgICAgICAgbGluZXMu
YXBwZW5kKCdcblxuJy5qb2luKHNlY3Rpb25zKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL21vZGVscy5weSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL21vZGVscy5weQppbmRleCBlODhj
MWE4YmEwOTA2MGIyMGI3ZGUxZWNkMzExOTllNTg5N2JiYzlhLi4yZGFiZGMwY2EyOWE2YWJlZGM0
ODU2ZDQ0OTRmNzEwOGIwMTQ5M2Q1IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9tb2RlbHMucHkKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vbW9kZWxzLnB5CkBAIC0yMjQsNyArMjI0
LDggQEAgY2xhc3MgRW51bVR5cGUoVHlwZSk6CiAKIAogY2xhc3MgQXJyYXlUeXBlKFR5cGUpOgot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlbGVtZW50X3R5cGVfcmVmLCBkb21haW4pOgorICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBlbGVtZW50X3R5cGVfcmVmLCBkb21haW4pOgorICAgICAg
ICBzZWxmLl9uYW1lID0gbmFtZQogICAgICAgICBzZWxmLl9kb21haW4gPSBkb21haW4KICAgICAg
ICAgc2VsZi5fZWxlbWVudF90eXBlX3JlZiA9IGVsZW1lbnRfdHlwZV9yZWYKICAgICAgICAgc2Vs
Zi5lbGVtZW50X3R5cGUgPSBOb25lCkBAIC00MjYsNyArNDI3LDcgQEAgY2xhc3MgUHJvdG9jb2w6
CiAgICAgICAgICAgICAgICAgICAgIHByaW1pdGl2ZV90eXBlX3JlZiA9IFR5cGVSZWZlcmVuY2Uo
ZGVjbGFyYXRpb24udHlwZV9yZWYudHlwZV9raW5kLCBOb25lLCBOb25lLCBOb25lKQogICAgICAg
ICAgICAgICAgICAgICB0eXBlX2luc3RhbmNlID0gRW51bVR5cGUoZGVjbGFyYXRpb24udHlwZV9u
YW1lLCBkb21haW4sIGRlY2xhcmF0aW9uLnR5cGVfcmVmLmVudW1fdmFsdWVzLCBwcmltaXRpdmVf
dHlwZV9yZWYpCiAgICAgICAgICAgICAgICAgZWxpZiBraW5kID09ICJhcnJheSI6Ci0gICAgICAg
ICAgICAgICAgICAgIHR5cGVfaW5zdGFuY2UgPSBBcnJheVR5cGUoZGVjbGFyYXRpb24udHlwZV9y
ZWYuYXJyYXlfdHlwZV9yZWYsIGRvbWFpbikKKyAgICAgICAgICAgICAgICAgICAgdHlwZV9pbnN0
YW5jZSA9IEFycmF5VHlwZShkZWNsYXJhdGlvbi50eXBlX25hbWUsIGRlY2xhcmF0aW9uLnR5cGVf
cmVmLmFycmF5X3R5cGVfcmVmLCBkb21haW4pCiAgICAgICAgICAgICAgICAgZWxpZiBraW5kID09
ICJvYmplY3QiOgogICAgICAgICAgICAgICAgICAgICB0eXBlX2luc3RhbmNlID0gT2JqZWN0VHlw
ZShkZWNsYXJhdGlvbi50eXBlX25hbWUsIGRvbWFpbiwgZGVjbGFyYXRpb24udHlwZV9tZW1iZXJz
KQogICAgICAgICAgICAgICAgIGVsc2U6CkBAIC00NTIsNyArNDUzLDcgQEAgY2xhc3MgUHJvdG9j
b2w6CiAgICAgZGVmIGxvb2t1cF90eXBlX3JlZmVyZW5jZShzZWxmLCB0eXBlX3JlZiwgZG9tYWlu
KToKICAgICAgICAgIyBJZiByZWZlcmVuY2UgaXMgdG8gYW4gYW5vbnltb3VzIGFycmF5IHR5cGUs
IGNyZWF0ZSBhIGZyZXNoIGluc3RhbmNlLgogICAgICAgICBpZiB0eXBlX3JlZi50eXBlX2tpbmQg
PT0gImFycmF5IjoKLSAgICAgICAgICAgIHR5cGVfaW5zdGFuY2UgPSBBcnJheVR5cGUodHlwZV9y
ZWYuYXJyYXlfdHlwZV9yZWYsIGRvbWFpbikKKyAgICAgICAgICAgIHR5cGVfaW5zdGFuY2UgPSBB
cnJheVR5cGUoTm9uZSwgdHlwZV9yZWYuYXJyYXlfdHlwZV9yZWYsIGRvbWFpbikKICAgICAgICAg
ICAgIHR5cGVfaW5zdGFuY2UucmVzb2x2ZV90eXBlX3JlZmVyZW5jZXMoc2VsZikKICAgICAgICAg
ICAgIGxvZy5kZWJ1ZygiPCBDcmVhdGVkIGZyZXNoIHR5cGUgaW5zdGFuY2UgZm9yIGFub255bW91
cyBhcnJheSB0eXBlOiAlcyIgJSB0eXBlX2luc3RhbmNlLnF1YWxpZmllZF9uYW1lKCkpCiAgICAg
ICAgICAgICByZXR1cm4gdHlwZV9pbnN0YW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmli
dXRlLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
Y29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbgppbmRleCA1NjFiNWNlYWIxNGM3YWMz
N2VlNTFhOWJkN2M5MjAzZmM1YmFiMTBiLi4xMTI2MmU4ODlmYTViZDBiNGFlNTdlNWY3ZjFiYWM2
Y2ZmM2ZlOTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbgorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvY29tbWFuZHMtd2l0aC1h
c3luYy1hdHRyaWJ1dGUuanNvbgpAQCAtMTIsNiArMTIsMTEgQEAKICAgICAgICAgICAgICJlbnVt
IjogWyJyZWQiLCAiZ3JlZW4iLCAiYmx1ZSJdCiAgICAgICAgIH0sCiAgICAgICAgIHsKKyAgICAg
ICAgICAgICJpZCI6ICJDb2xvckxpc3QiLAorICAgICAgICAgICAgInR5cGUiOiAiYXJyYXkiLAor
ICAgICAgICAgICAgIml0ZW1zIjogeyAiJHJlZiI6ICJQcmltYXJ5Q29sb3JzIiB9CisgICAgICAg
IH0sCisgICAgICAgIHsKICAgICAgICAgICAgICJpZCI6ICJFcnJvciIsCiAgICAgICAgICAgICAi
dHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRhdGFiYXNlIGVy
cm9yLiIsCkBAIC0zNyw2ICs0Miw3IEBACiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkYXRh
YmFzZUlkIiwgIiRyZWYiOiAiRGF0YWJhc2VJZCIsICJvcHRpb25hbCI6IHRydWUgfSwKICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogInNxbEVycm9yIiwgIiRyZWYiOiAiRXJyb3IiLCAib3B0aW9u
YWwiOiB0cnVlIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzY3JlZW5Db2xvciIsICIk
cmVmIjogIlByaW1hcnlDb2xvcnMiLCAib3B0aW9uYWwiOiB0cnVlIH0sCisgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJhbHRlcm5hdGVDb2xvcnMiLCAiJHJlZiI6ICJDb2xvckxpc3QiLCAib3B0
aW9uYWwiOiB0cnVlIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwcmludENvbG9yIiwg
InR5cGUiOiAic3RyaW5nIiwgImVudW0iOiBbImN5YW4iLCAibWFnZW50YSIsICJ5ZWxsb3ciLCAi
YmxhY2siXSwgIm9wdGlvbmFsIjogdHJ1ZSB9CiAgICAgICAgICAgICBdCiAgICAgICAgIH0sCkBA
IC01Niw2ICs2Miw3IEBACiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkYXRhYmFzZUlkIiwg
IiRyZWYiOiAiRGF0YWJhc2VJZCIsICJvcHRpb25hbCI6IHRydWUgfSwKICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInNxbEVycm9yIiwgIiRyZWYiOiAiRXJyb3IiLCAib3B0aW9uYWwiOiB0cnVl
IH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzY3JlZW5Db2xvciIsICIkcmVmIjogIlBy
aW1hcnlDb2xvcnMiLCAib3B0aW9uYWwiOiB0cnVlIH0sCisgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJhbHRlcm5hdGVDb2xvcnMiLCAiJHJlZiI6ICJDb2xvckxpc3QiLCAib3B0aW9uYWwiOiB0
cnVlIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwcmludENvbG9yIiwgInR5cGUiOiAi
c3RyaW5nIiwgImVudW0iOiBbImN5YW4iLCAibWFnZW50YSIsICJ5ZWxsb3ciLCAiYmxhY2siXSwg
Im9wdGlvbmFsIjogdHJ1ZSB9CiAgICAgICAgICAgICBdCiAgICAgICAgIH0sCkBAIC03Myw2ICs4
MCw3IEBACiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwYXlsb2FkIiwgInR5cGUiOiAiYW55
IiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGF0YWJhc2VJZCIsICIkcmVmIjogIkRh
dGFiYXNlSWQiIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzcWxFcnJvciIsICIkcmVm
IjogIkVycm9yIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYWx0ZXJuYXRlQ29sb3Jz
IiwgIiRyZWYiOiAiQ29sb3JMaXN0IiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2Ny
ZWVuQ29sb3IiLCAiJHJlZiI6ICJQcmltYXJ5Q29sb3JzIiB9LAogICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAicHJpbnRDb2xvciIsICJ0eXBlIjogInN0cmluZyIsICJlbnVtIjogWyJjeWFuIiwg
Im1hZ2VudGEiLCAieWVsbG93IiwgImJsYWNrIl0gfQogICAgICAgICAgICAgXQpAQCAtOTMsNiAr
MTAxLDcgQEAKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRhdGFiYXNlSWQiLCAiJHJlZiI6
ICJEYXRhYmFzZUlkIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3FsRXJyb3IiLCAi
JHJlZiI6ICJFcnJvciIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNjcmVlbkNvbG9y
IiwgIiRyZWYiOiAiUHJpbWFyeUNvbG9ycyIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImFsdGVybmF0ZUNvbG9ycyIsICIkcmVmIjogIkNvbG9yTGlzdCIgfSwKICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInByaW50Q29sb3IiLCAidHlwZSI6ICJzdHJpbmciLCAiZW51bSI6IFsiY3lh
biIsICJtYWdlbnRhIiwgInllbGxvdyIsICJibGFjayJdIH0KICAgICAgICAgICAgIF0KICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29u
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2NvbW1hbmRz
LXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uCmluZGV4IDM4NTYxZTcz
NDU3NTU3Yjk1MGNhYmNjZGMyZTk5YTlhM2MxOTM0MGMuLjM2MWQ1N2Q4MjBkZTkxNmE3M2NiZGQ5
ODM4M2QxMjY0MjAzOThmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBh
cmFtZXRlcnMuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpz
b24KQEAgLTEyLDYgKzEyLDExIEBACiAgICAgICAgICAgICAiZW51bSI6IFsicmVkIiwgImdyZWVu
IiwgImJsdWUiXQogICAgICAgICB9LAogICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiQ29s
b3JMaXN0IiwKKyAgICAgICAgICAgICJ0eXBlIjogImFycmF5IiwKKyAgICAgICAgICAgICJpdGVt
cyI6IHsgIiRyZWYiOiAiUHJpbWFyeUNvbG9ycyIgfQorICAgICAgICB9LAorICAgICAgICB7CiAg
ICAgICAgICAgICAiaWQiOiAiRXJyb3IiLAogICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwK
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEYXRhYmFzZSBlcnJvci4iLApAQCAtMzMsNiAr
MzgsNyBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGF0YWJhc2VJZCIsICIkcmVmIjog
IkRhdGFiYXNlSWQiLCAib3B0aW9uYWwiOiB0cnVlIH0sCiAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJzcWxFcnJvciIsICIkcmVmIjogIkVycm9yIiwgIm9wdGlvbmFsIjogdHJ1ZSB9LAogICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAic2NyZWVuQ29sb3IiLCAiJHJlZiI6ICJQcmltYXJ5Q29s
b3JzIiwgIm9wdGlvbmFsIjogdHJ1ZSB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYWx0
ZXJuYXRlQ29sb3JzIiwgIiRyZWYiOiAiQ29sb3JMaXN0IiwgIm9wdGlvbmFsIjogdHJ1ZSB9LAog
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJpbnRDb2xvciIsICJ0eXBlIjogInN0cmluZyIs
ICJlbnVtIjogWyJjeWFuIiwgIm1hZ2VudGEiLCAieWVsbG93IiwgImJsYWNrIl0sICJvcHRpb25h
bCI6IHRydWUgfQogICAgICAgICAgICAgXSwKICAgICAgICAgICAgICJyZXR1cm5zIjogWwpAQCAt
NDQsNiArNTAsNyBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGF0YWJhc2VJZCIsICIk
cmVmIjogIkRhdGFiYXNlSWQiLCAib3B0aW9uYWwiOiB0cnVlIH0sCiAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJzcWxFcnJvciIsICIkcmVmIjogIkVycm9yIiwgIm9wdGlvbmFsIjogdHJ1ZSB9
LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2NyZWVuQ29sb3IiLCAiJHJlZiI6ICJQcmlt
YXJ5Q29sb3JzIiwgIm9wdGlvbmFsIjogdHJ1ZSB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiYWx0ZXJuYXRlQ29sb3JzIiwgIiRyZWYiOiAiQ29sb3JMaXN0IiwgIm9wdGlvbmFsIjogdHJ1
ZSB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJpbnRDb2xvciIsICJ0eXBlIjogInN0
cmluZyIsICJlbnVtIjogWyJjeWFuIiwgIm1hZ2VudGEiLCAieWVsbG93IiwgImJsYWNrIl0sICJv
cHRpb25hbCI6IHRydWUgfQogICAgICAgICAgICAgXQogICAgICAgICB9LApAQCAtNTgsNiArNjUs
NyBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGF0YWJhc2VJZCIsICIkcmVmIjogIkRh
dGFiYXNlSWQiIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzcWxFcnJvciIsICIkcmVm
IjogIkVycm9yIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2NyZWVuQ29sb3IiLCAi
JHJlZiI6ICJQcmltYXJ5Q29sb3JzIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYWx0
ZXJuYXRlQ29sb3JzIiwgIiRyZWYiOiAiQ29sb3JMaXN0IiB9LAogICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAicHJpbnRDb2xvciIsICJ0eXBlIjogInN0cmluZyIsICJlbnVtIjogWyJjeWFuIiwg
Im1hZ2VudGEiLCAieWVsbG93IiwgImJsYWNrIl0gfQogICAgICAgICAgICAgXSwKICAgICAgICAg
ICAgICJyZXR1cm5zIjogWwpAQCAtNjksNiArNzcsNyBAQAogICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiZGF0YWJhc2VJZCIsICIkcmVmIjogIkRhdGFiYXNlSWQiIH0sCiAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJzcWxFcnJvciIsICIkcmVmIjogIkVycm9yIiB9LAogICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAic2NyZWVuQ29sb3IiLCAiJHJlZiI6ICJQcmltYXJ5Q29sb3JzIiB9LAor
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYWx0ZXJuYXRlQ29sb3JzIiwgIiRyZWYiOiAiQ29s
b3JMaXN0IiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJpbnRDb2xvciIsICJ0eXBl
IjogInN0cmluZyIsICJlbnVtIjogWyJjeWFuIiwgIm1hZ2VudGEiLCAieWVsbG93IiwgImJsYWNr
Il0gfQogICAgICAgICAgICAgXQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFy
YW1ldGVycy5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbgppbmRleCA1ZWZjN2NiMzE5
YjBiMzZmYTk1YzQ3MTQwMzA1Mzc3ODYyNGFmYzEzLi5jYWJiZjEwYjgzNmY5ZmY3Y2Q5OTI1ZGI0
ZDZiNDFjNWRmYTg3YjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9ldmVudHMt
d2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24KQEAgLTEyLDYgKzEyLDExIEBACiAgICAgICAg
ICAgICAidmFsdWVzIjogWyJyZWQiLCAiZ3JlZW4iLCAiYmx1ZSJdCiAgICAgICAgIH0sCiAgICAg
ICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJDb2xvckxpc3QiLAorICAgICAgICAgICAgInR5cGUi
OiAiYXJyYXkiLAorICAgICAgICAgICAgIml0ZW1zIjogeyAiJHJlZiI6ICJQcmltYXJ5Q29sb3Jz
IiB9CisgICAgICAgIH0sCisgICAgICAgIHsKICAgICAgICAgICAgICJpZCI6ICJFcnJvciIsCiAg
ICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IkRhdGFiYXNlIGVycm9yLiIsCkBAIC0zMiw2ICszNyw3IEBACiAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJwYXlsb2FkIiwgInR5cGUiOiAiYW55IiwgIm9wdGlvbmFsIjogdHJ1ZSB9LAogICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAic3FsRXJyb3IiLCAiJHJlZiI6ICJFcnJvciIsICJvcHRp
b25hbCI6IHRydWUgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNjcmVlbkNvbG9yIiwg
IiRyZWYiOiAiUHJpbWFyeUNvbG9ycyIsICJvcHRpb25hbCI6IHRydWUgfSwKKyAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImFsdGVybmF0ZUNvbG9ycyIsICIkcmVmIjogIkNvbG9yTGlzdCIsICJv
cHRpb25hbCI6IHRydWUgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInByaW50Q29sb3Ii
LCAidHlwZSI6ICJzdHJpbmciLCAidmFsdWVzIjogWyJjeWFuIiwgIm1hZ2VudGEiLCAieWVsbG93
IiwgImJsYWNrIl0sICJvcHRpb25hbCI6IHRydWUgfQogICAgICAgICAgICAgXQogICAgICAgICB9
LApAQCAtNDUsNiArNTEsNyBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicGF5bG9hZCIs
ICJ0eXBlIjogImFueSIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNxbEVycm9yIiwg
IiRyZWYiOiAiRXJyb3IiIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzY3JlZW5Db2xv
ciIsICIkcmVmIjogIlByaW1hcnlDb2xvcnMiIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJhbHRlcm5hdGVDb2xvcnMiLCAiJHJlZiI6ICJDb2xvckxpc3QiIH0sCiAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJwcmludENvbG9yIiwgInR5cGUiOiAic3RyaW5nIiwgInZhbHVlcyI6IFsi
Y3lhbiIsICJtYWdlbnRhIiwgInllbGxvdyIsICJibGFjayJdIH0KICAgICAgICAgICAgIF0KICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVz
dWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CmluZGV4IGMzNjQx
NTg3MmRlZjU0ZWU4Y2IzMTYyZDE5NDIzMWE5MTA3YWZjMzUuLjM0NWY0ZGQ0Mzg4YzFhZGRkZDhi
ZmVhYjNiNzczNWZiNTU5M2I0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJp
YnV0ZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1y
ZXN1bHQKQEAgLTk4LDEwICs5OCwxMCBAQCBwdWJsaWM6CiAvLyBEYXRhYmFzZS4KIEluc3BlY3Rv
ckJhY2tlbmQucmVnaXN0ZXJEYXRhYmFzZURpc3BhdGNoZXIgPSBJbnNwZWN0b3JCYWNrZW5kLnJl
Z2lzdGVyRG9tYWluRGlzcGF0Y2hlci5iaW5kKEluc3BlY3RvckJhY2tlbmQsICJEYXRhYmFzZSIp
OwogSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckVudW0oIkRhdGFiYXNlLlByaW1hcnlDb2xvcnMi
LCB7UmVkOiAicmVkIiwgR3JlZW46ICJncmVlbiIsIEJsdWU6ICJibHVlIn0pOwotSW5zcGVjdG9y
QmFja2VuZC5yZWdpc3RlckNvbW1hbmQoIkRhdGFiYXNlLmV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxS
ZXR1cm5WYWx1ZXMiLCBbeyJuYW1lIjogImRhdGFiYXNlSWQiLCAidHlwZSI6ICJudW1iZXIiLCAi
b3B0aW9uYWwiOiBmYWxzZX0sIHsibmFtZSI6ICJxdWVyeSIsICJ0eXBlIjogInN0cmluZyIsICJv
cHRpb25hbCI6IGZhbHNlfV0sIFsiY29sdW1uTmFtZXMiLCAibm90ZXMiLCAidGltZXN0YW1wIiwg
InZhbHVlcyIsICJwYXlsb2FkIiwgImRhdGFiYXNlSWQiLCAic3FsRXJyb3IiLCAic2NyZWVuQ29s
b3IiLCAicHJpbnRDb2xvciJdKTsKLUluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDb21tYW5kKCJE
YXRhYmFzZS5leGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlcyIsIFt7Im5hbWUiOiAi
ZGF0YWJhc2VJZCIsICJ0eXBlIjogIm51bWJlciIsICJvcHRpb25hbCI6IGZhbHNlfSwgeyJuYW1l
IjogInF1ZXJ5IiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogZmFsc2V9XSwgWyJjb2x1
bW5OYW1lcyIsICJub3RlcyIsICJ0aW1lc3RhbXAiLCAidmFsdWVzIiwgInBheWxvYWQiLCAiZGF0
YWJhc2VJZCIsICJzcWxFcnJvciIsICJzY3JlZW5Db2xvciIsICJwcmludENvbG9yIl0pOwotSW5z
cGVjdG9yQmFja2VuZC5yZWdpc3RlckNvbW1hbmQoIkRhdGFiYXNlLmV4ZWN1dGVTUUxTeW5jIiwg
W3sibmFtZSI6ICJkYXRhYmFzZUlkIiwgInR5cGUiOiAibnVtYmVyIiwgIm9wdGlvbmFsIjogZmFs
c2V9LCB7Im5hbWUiOiAicXVlcnkiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiBmYWxz
ZX1dLCBbImNvbHVtbk5hbWVzIiwgIm5vdGVzIiwgInRpbWVzdGFtcCIsICJ2YWx1ZXMiLCAicGF5
bG9hZCIsICJkYXRhYmFzZUlkIiwgInNxbEVycm9yIiwgInNjcmVlbkNvbG9yIiwgInByaW50Q29s
b3IiXSk7Ci1JbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyQ29tbWFuZCgiRGF0YWJhc2UuZXhlY3V0
ZVNRTEFzeW5jIiwgW3sibmFtZSI6ICJkYXRhYmFzZUlkIiwgInR5cGUiOiAibnVtYmVyIiwgIm9w
dGlvbmFsIjogZmFsc2V9LCB7Im5hbWUiOiAicXVlcnkiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0
aW9uYWwiOiBmYWxzZX1dLCBbImNvbHVtbk5hbWVzIiwgIm5vdGVzIiwgInRpbWVzdGFtcCIsICJ2
YWx1ZXMiLCAicGF5bG9hZCIsICJkYXRhYmFzZUlkIiwgInNxbEVycm9yIiwgInNjcmVlbkNvbG9y
IiwgInByaW50Q29sb3IiXSk7CitJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyQ29tbWFuZCgiRGF0
YWJhc2UuZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyIsIFt7Im5hbWUiOiAiZGF0
YWJhc2VJZCIsICJ0eXBlIjogIm51bWJlciIsICJvcHRpb25hbCI6IGZhbHNlfSwgeyJuYW1lIjog
InF1ZXJ5IiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogZmFsc2V9XSwgWyJjb2x1bW5O
YW1lcyIsICJub3RlcyIsICJ0aW1lc3RhbXAiLCAidmFsdWVzIiwgInBheWxvYWQiLCAiZGF0YWJh
c2VJZCIsICJzcWxFcnJvciIsICJzY3JlZW5Db2xvciIsICJhbHRlcm5hdGVDb2xvcnMiLCAicHJp
bnRDb2xvciJdKTsKK0luc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDb21tYW5kKCJEYXRhYmFzZS5l
eGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlcyIsIFt7Im5hbWUiOiAiZGF0YWJhc2VJ
ZCIsICJ0eXBlIjogIm51bWJlciIsICJvcHRpb25hbCI6IGZhbHNlfSwgeyJuYW1lIjogInF1ZXJ5
IiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogZmFsc2V9XSwgWyJjb2x1bW5OYW1lcyIs
ICJub3RlcyIsICJ0aW1lc3RhbXAiLCAidmFsdWVzIiwgInBheWxvYWQiLCAiZGF0YWJhc2VJZCIs
ICJzcWxFcnJvciIsICJzY3JlZW5Db2xvciIsICJhbHRlcm5hdGVDb2xvcnMiLCAicHJpbnRDb2xv
ciJdKTsKK0luc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDb21tYW5kKCJEYXRhYmFzZS5leGVjdXRl
U1FMU3luYyIsIFt7Im5hbWUiOiAiZGF0YWJhc2VJZCIsICJ0eXBlIjogIm51bWJlciIsICJvcHRp
b25hbCI6IGZhbHNlfSwgeyJuYW1lIjogInF1ZXJ5IiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlv
bmFsIjogZmFsc2V9XSwgWyJjb2x1bW5OYW1lcyIsICJub3RlcyIsICJ0aW1lc3RhbXAiLCAidmFs
dWVzIiwgInBheWxvYWQiLCAiZGF0YWJhc2VJZCIsICJzcWxFcnJvciIsICJhbHRlcm5hdGVDb2xv
cnMiLCAic2NyZWVuQ29sb3IiLCAicHJpbnRDb2xvciJdKTsKK0luc3BlY3RvckJhY2tlbmQucmVn
aXN0ZXJDb21tYW5kKCJEYXRhYmFzZS5leGVjdXRlU1FMQXN5bmMiLCBbeyJuYW1lIjogImRhdGFi
YXNlSWQiLCAidHlwZSI6ICJudW1iZXIiLCAib3B0aW9uYWwiOiBmYWxzZX0sIHsibmFtZSI6ICJx
dWVyeSIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IGZhbHNlfV0sIFsiY29sdW1uTmFt
ZXMiLCAibm90ZXMiLCAidGltZXN0YW1wIiwgInZhbHVlcyIsICJwYXlsb2FkIiwgImRhdGFiYXNl
SWQiLCAic3FsRXJyb3IiLCAic2NyZWVuQ29sb3IiLCAiYWx0ZXJuYXRlQ29sb3JzIiwgInByaW50
Q29sb3IiXSk7CiBJbnNwZWN0b3JCYWNrZW5kLmFjdGl2YXRlRG9tYWluKCJEYXRhYmFzZSIpOwog
IyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMKIApAQCAtMTY4LDE4ICsx
NjgsMTggQEAgcHVibGljOgogICAgICAgICBZZWxsb3cgPSA1LAogICAgICAgICBCbGFjayA9IDYs
CiAgICAgfTsgLy8gZW51bSBjbGFzcyBQcmludENvbG9yCi0gICAgdmlydHVhbCB2b2lkIGV4ZWN1
dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMoRXJyb3JTdHJpbmcmLCBpbnQgaW5fZGF0YWJh
c2VJZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVyeSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PFN0cmluZz4+JiBvcHRfb3V0X2NvbHVtbk5hbWVzLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpPcHRPdXRwdXQ8U3RyaW5nPiogb3B0X291dF9ub3RlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6
T3B0T3V0cHV0PGRvdWJsZT4qIG9wdF9vdXRfdGltZXN0YW1wLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvcHRfb3V0X3ZhbHVlcywg
SW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+
KiBvcHRfb3V0X3BheWxvYWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBv
cHRfb3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6
RXJyb3I+JiBvcHRfb3V0X3NxbEVycm9yLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6
UHJpbWFyeUNvbG9ycyogb3B0X291dF9zY3JlZW5Db2xvciwgSW5zcGVjdG9yRGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3IqIG9wdF9vdXRfcHJpbnRDb2xvcikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKEVy
cm9yU3RyaW5nJiwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnksIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgb3B0X291dF9jb2x1bW5O
YW1lcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG9wdF9vdXRfbm90
ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+KiBvcHRfb3V0X3RpbWVz
dGFtcCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0Piogb3B0X291dF92YWx1ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJ
bnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiogb3B0X291dF9wYXlsb2FkLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpPcHRPdXRwdXQ8aW50Piogb3B0X291dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3B0X291dF9zcWxFcnJvciwgSW5zcGVj
dG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMqIG9wdF9vdXRfc2NyZWVuQ29s
b3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYgb3B0
X291dF9hbHRlcm5hdGVDb2xvcnMsIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyOjpQcmludENvbG9yKiBvcHRfb3V0X3ByaW50Q29sb3IpID0gMDsKICAgICBjbGFzcyBF
eGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrIDogcHVibGljIEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZSB7CiAgICAgcHVi
bGljOgogICAgICAgICBFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNr
KFJlZjxJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmLCBpbnQgaWQpOwot
ICAgICAgICB2b2lkIHNlbmRTdWNjZXNzKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxTdHJpbmc+PiYmIGNvbHVtbk5hbWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8
U3RyaW5nPiogbm90ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+KiB0
aW1lc3RhbXAsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdD4qIHZhbHVlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yVmFsdWU+KiBwYXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRP
dXRwdXQ8aW50PiogZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFi
YXNlOjpFcnJvcj4mJiBzcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0
cmluZz4qIHNjcmVlbkNvbG9yLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5n
PiogcHJpbnRDb2xvcik7CisgICAgICAgIHZvaWQgc2VuZFN1Y2Nlc3MoUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiYgY29sdW1uTmFtZXMsIEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBub3RlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0
T3V0cHV0PGRvdWJsZT4qIHRpbWVzdGFtcCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiogdmFsdWVzLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4qIHBheWxvYWQsIEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBkYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYmIHNxbEVycm9yLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYmIGFsdGVybmF0ZUNvbG9ycywgSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIHByaW50Q29sb3IpOwogICAgIH07CiAgICAg
dmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKEVycm9yU3Ry
aW5nJiwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnksIFJlZjxFeGVj
dXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrPiYmIGNhbGxiYWNrKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxTeW5jKEVycm9yU3RyaW5nJiwgaW50IGluX2Rh
dGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnksIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxTdHJpbmc+PiYgb3V0X2NvbHVtbk5hbWVzLCBTdHJpbmcqIG91dF9ub3Rlcywg
ZG91YmxlKiBvdXRfdGltZXN0YW1wLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogb3V0X3Zh
bHVlcywgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogb3V0X3BheWxvYWQsIGludCogb3V0X2Rh
dGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiBv
dXRfc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3Jz
KiBvdXRfc2NyZWVuQ29sb3IsIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyOjpQcmludENvbG9yKiBvdXRfcHJpbnRDb2xvcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBl
eGVjdXRlU1FMU3luYyhFcnJvclN0cmluZyYsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBTdHJp
bmcmIGluX3F1ZXJ5LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4m
IG91dF9jb2x1bW5OYW1lcywgU3RyaW5nKiBvdXRfbm90ZXMsIGRvdWJsZSogb3V0X3RpbWVzdGFt
cCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIG91dF92YWx1ZXMsIEluc3BlY3Rvcjo6SW5z
cGVjdG9yVmFsdWUqIG91dF9wYXlsb2FkLCBpbnQqIG91dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3V0X3NxbEVycm9yLCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mIG91dF9hbHRlcm5hdGVD
b2xvcnMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBvdXRf
c2NyZWVuQ29sb3IsIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQ
cmludENvbG9yKiBvdXRfcHJpbnRDb2xvcikgPSAwOwogICAgIGNsYXNzIEV4ZWN1dGVTUUxBc3lu
Y0NhbGxiYWNrIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6
OkNhbGxiYWNrQmFzZSB7CiAgICAgcHVibGljOgogICAgICAgICBFeGVjdXRlU1FMQXN5bmNDYWxs
YmFjayhSZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4mJiwgaW50IGlk
KTsKLSAgICAgICAgdm9pZCBzZW5kU3VjY2VzcyhSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8U3RyaW5nPj4mJiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBub3RlcywgZG91Ymxl
IHRpbWVzdGFtcCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QgdmFsdWVzLCBJbnNwZWN0b3I6
Okluc3BlY3RvclZhbHVlIHBheWxvYWQsIGludCBkYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYmIHNxbEVycm9yLCBjb25zdCBTdHJpbmcmIHNj
cmVlbkNvbG9yLCBjb25zdCBTdHJpbmcmIHByaW50Q29sb3IpOworICAgICAgICB2b2lkIHNlbmRT
dWNjZXNzKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYmIGNvbHVt
bk5hbWVzLCBjb25zdCBTdHJpbmcmIG5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdCB2YWx1ZXMsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUgcGF5bG9h
ZCwgaW50IGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6
RXJyb3I+JiYgc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYmIGFsdGVybmF0ZUNvbG9ycywg
Y29uc3QgU3RyaW5nJiBwcmludENvbG9yKTsKICAgICB9OwogICAgIHZpcnR1YWwgdm9pZCBleGVj
dXRlU1FMQXN5bmMoRXJyb3JTdHJpbmcmLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5n
JiBpbl9xdWVyeSwgUmVmPEV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrPiYmIGNhbGxiYWNrKSA9IDA7
CiBwcm90ZWN0ZWQ6CkBAIC0zMjIsOCArMzIyLDkgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJh
Y2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcK
ICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGF0YWJhc2U6OkRhdGFiYXNlSWQ+IG91dF9kYXRhYmFzZUlkOwogICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IG91dF9zcWxFcnJvcjsKICAgICBJbnNwZWN0
b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyBvdXRfc2NyZWVuQ29sb3I7Cisg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+IG91dF9h
bHRlcm5hdGVDb2xvcnM7CiAgICAgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXI6OlByaW50Q29sb3Igb3V0X3ByaW50Q29sb3I7Ci0gICAgbV9hZ2VudC0+ZXhlY3V0ZVNR
TFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhlcnJvciwgaW5fZGF0YWJhc2VJZCwgaW5fcXVlcnks
IG91dF9jb2x1bW5OYW1lcywgJm91dF9ub3RlcywgJm91dF90aW1lc3RhbXAsIG91dF92YWx1ZXMs
ICZvdXRfcGF5bG9hZCwgJm91dF9kYXRhYmFzZUlkLCBvdXRfc3FsRXJyb3IsICZvdXRfc2NyZWVu
Q29sb3IsICZvdXRfcHJpbnRDb2xvcik7CisgICAgbV9hZ2VudC0+ZXhlY3V0ZVNRTFN5bmNPcHRp
b25hbFJldHVyblZhbHVlcyhlcnJvciwgaW5fZGF0YWJhc2VJZCwgaW5fcXVlcnksIG91dF9jb2x1
bW5OYW1lcywgJm91dF9ub3RlcywgJm91dF90aW1lc3RhbXAsIG91dF92YWx1ZXMsICZvdXRfcGF5
bG9hZCwgJm91dF9kYXRhYmFzZUlkLCBvdXRfc3FsRXJyb3IsICZvdXRfc2NyZWVuQ29sb3IsIG91
dF9hbHRlcm5hdGVDb2xvcnMsICZvdXRfcHJpbnRDb2xvcik7CiAKICAgICBpZiAoIWVycm9yLmxl
bmd0aCgpKSB7CiAgICAgICAgIGlmIChvdXRfY29sdW1uTmFtZXMpCkBAIC0zNDIsNiArMzQzLDgg
QEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMU3lu
Y09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcKICAgICAgICAgICAgIHJlc3VsdC0+c2V0T2JqZWN0
KEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgb3V0X3NxbEVycm9yKTsKICAgICAgICAgaWYgKG91
dF9zY3JlZW5Db2xvci5pc0Fzc2lnbmVkKCkpCiAgICAgICAgICAgICByZXN1bHQtPnNldFN0cmlu
ZyhBU0NJSUxpdGVyYWwoInNjcmVlbkNvbG9yIiksIG91dF9zY3JlZW5Db2xvci5nZXRWYWx1ZSgp
KTsKKyAgICAgICAgaWYgKG91dF9hbHRlcm5hdGVDb2xvcnMpCisgICAgICAgICAgICByZXN1bHQt
PnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiYWx0ZXJuYXRlQ29sb3JzIiksIG91dF9hbHRlcm5hdGVD
b2xvcnMpOwogICAgICAgICBpZiAob3V0X3ByaW50Q29sb3IuaXNBc3NpZ25lZCgpKQogICAgICAg
ICAgICAgcmVzdWx0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmludENvbG9yIiksIG91dF9w
cmludENvbG9yLmdldFZhbHVlKCkpOwogICAgIH0KQEAgLTM1MCw3ICszNTMsNyBAQCB2b2lkIElu
c3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxS
ZXR1cm5WYWx1ZXMobG9uZwogCiBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlcjo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjazo6RXhlY3V0
ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjayhSZWY8SW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI+JiYgYmFja2VuZERpc3BhdGNoZXIsIGludCBpZCkgOiBJbnNwZWN0b3I6Oklu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UoV1RGOjptb3ZlKGJhY2tlbmRE
aXNwYXRjaGVyKSwgaWQpIHsgfQogCi12b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNr
OjpzZW5kU3VjY2VzcyhSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4m
JiBjb2x1bW5OYW1lcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG5v
dGVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8ZG91YmxlPiogdGltZXN0YW1wLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
KiB2YWx1ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3Bl
Y3RvclZhbHVlPiogcGF5bG9hZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4q
IGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+
JiYgc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBzY3Jl
ZW5Db2xvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIHByaW50Q29s
b3IpCit2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVj
dXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrOjpzZW5kU3VjY2VzcyhSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mJiBjb2x1bW5OYW1lcywgSW5z
cGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG5vdGVzLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpPcHRPdXRwdXQ8ZG91YmxlPiogdGltZXN0YW1wLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiB2YWx1ZXMsIEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiogcGF5bG9h
ZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIGRhdGFiYXNlSWQsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiYgc3FsRXJyb3IsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBzY3JlZW5Db2xvciwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiYgYWx0ZXJuYXRlQ29sb3Jz
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogcHJpbnRDb2xvcikKIHsK
ICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBqc29uTWVzc2FnZSA9IEluc3BlY3Rvck9iamVjdDo6
Y3JlYXRlKCk7CiAgICAgaWYgKGNvbHVtbk5hbWVzKQpAQCAtMzY5LDYgKzM3Miw4IEBAIHZvaWQg
SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3lu
Y09wdGlvbmFsUmV0dXJuVmFsCiAgICAgICAgIGpzb25NZXNzYWdlLT5zZXRPYmplY3QoQVNDSUlM
aXRlcmFsKCJzcWxFcnJvciIpLCBzcWxFcnJvcik7CiAgICAgaWYgKHNjcmVlbkNvbG9yLmlzQXNz
aWduZWQoKSkKICAgICAgICAganNvbk1lc3NhZ2UtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInNj
cmVlbkNvbG9yIiksIHNjcmVlbkNvbG9yLmdldFZhbHVlKCkpOworICAgIGlmIChhbHRlcm5hdGVD
b2xvcnMpCisgICAgICAgIGpzb25NZXNzYWdlLT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImFsdGVy
bmF0ZUNvbG9ycyIpLCBhbHRlcm5hdGVDb2xvcnMpOwogICAgIGlmIChwcmludENvbG9yLmlzQXNz
aWduZWQoKSkKICAgICAgICAganNvbk1lc3NhZ2UtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInBy
aW50Q29sb3IiKSwgcHJpbnRDb2xvci5nZXRWYWx1ZSgpKTsKICAgICBzZW5kSWZBY3RpdmUoV1RG
Ojptb3ZlKGpzb25NZXNzYWdlKSwgRXJyb3JTdHJpbmcoKSk7CkBAIC00MzUsOSArNDQwLDEwIEBA
IHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmMo
bG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlCiAgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSBv
dXRfcGF5bG9hZDsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RGF0YWJhc2VJ
ZCBvdXRfZGF0YWJhc2VJZDsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJh
c2U6OkVycm9yPiBvdXRfc3FsRXJyb3I7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpDb2xvckxpc3Q+IG91dF9hbHRlcm5hdGVDb2xvcnM7CiAgICAgSW5zcGVjdG9y
OjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMgb3V0X3NjcmVlbkNvbG9yOwogICAg
IEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yIG91
dF9wcmludENvbG9yOwotICAgIG1fYWdlbnQtPmV4ZWN1dGVTUUxTeW5jKGVycm9yLCBpbl9kYXRh
YmFzZUlkLCBpbl9xdWVyeSwgb3V0X2NvbHVtbk5hbWVzLCAmb3V0X25vdGVzLCAmb3V0X3RpbWVz
dGFtcCwgb3V0X3ZhbHVlcywgJm91dF9wYXlsb2FkLCAmb3V0X2RhdGFiYXNlSWQsIG91dF9zcWxF
cnJvciwgJm91dF9zY3JlZW5Db2xvciwgJm91dF9wcmludENvbG9yKTsKKyAgICBtX2FnZW50LT5l
eGVjdXRlU1FMU3luYyhlcnJvciwgaW5fZGF0YWJhc2VJZCwgaW5fcXVlcnksIG91dF9jb2x1bW5O
YW1lcywgJm91dF9ub3RlcywgJm91dF90aW1lc3RhbXAsIG91dF92YWx1ZXMsICZvdXRfcGF5bG9h
ZCwgJm91dF9kYXRhYmFzZUlkLCBvdXRfc3FsRXJyb3IsIG91dF9hbHRlcm5hdGVDb2xvcnMsICZv
dXRfc2NyZWVuQ29sb3IsICZvdXRfcHJpbnRDb2xvcik7CiAKICAgICBpZiAoIWVycm9yLmxlbmd0
aCgpKSB7CiAgICAgICAgIHJlc3VsdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1l
cyIpLCBvdXRfY29sdW1uTmFtZXMpOwpAQCAtNDQ3LDYgKzQ1Myw3IEBAIHZvaWQgSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmMobG9uZyBjYWxsSWQsIGNv
bnN0IEluc3BlCiAgICAgICAgIHJlc3VsdC0+c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJwYXlsb2Fk
IiksIG91dF9wYXlsb2FkKTsKICAgICAgICAgcmVzdWx0LT5zZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJh
bCgiZGF0YWJhc2VJZCIpLCBvdXRfZGF0YWJhc2VJZCk7CiAgICAgICAgIHJlc3VsdC0+c2V0T2Jq
ZWN0KEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgb3V0X3NxbEVycm9yKTsKKyAgICAgICAgcmVz
dWx0LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImFsdGVybmF0ZUNvbG9ycyIpLCBvdXRfYWx0ZXJu
YXRlQ29sb3JzKTsKICAgICAgICAgcmVzdWx0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzY3Jl
ZW5Db2xvciIpLCBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShvdXRf
c2NyZWVuQ29sb3IpKTsKICAgICAgICAgcmVzdWx0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJw
cmludENvbG9yIiksIEluc3BlY3Rvcjo6UHJvdG9jb2w6OmdldEVudW1Db25zdGFudFZhbHVlKG91
dF9wcmludENvbG9yKSk7CiAgICAgfQpAQCAtNDU1LDcgKzQ2Miw3IEBAIHZvaWQgSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmMobG9uZyBjYWxsSWQsIGNv
bnN0IEluc3BlCiAKIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpF
eGVjdXRlU1FMQXN5bmNDYWxsYmFjazo6RXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2soUmVmPEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyPiYmIGJhY2tlbmREaXNwYXRjaGVyLCBpbnQgaWQpIDogSW5z
cGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlKFdURjo6bW92
ZShiYWNrZW5kRGlzcGF0Y2hlciksIGlkKSB7IH0KIAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2s6OnNlbmRTdWNj
ZXNzKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYmIGNvbHVtbk5h
bWVzLCBjb25zdCBTdHJpbmcmIG5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdCB2YWx1ZXMsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUgcGF5bG9hZCwg
aW50IGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJy
b3I+JiYgc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgc2NyZWVuQ29sb3IsIGNvbnN0IFN0cmluZyYg
cHJpbnRDb2xvcikKK3ZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXI6OkV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrOjpzZW5kU3VjY2VzcyhSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mJiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBu
b3RlcywgZG91YmxlIHRpbWVzdGFtcCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QgdmFsdWVz
LCBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlIHBheWxvYWQsIGludCBkYXRhYmFzZUlkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYmIHNxbEVycm9yLCBjb25z
dCBTdHJpbmcmIHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJh
c2U6OkNvbG9yTGlzdD4mJiBhbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgcHJpbnRDb2xv
cikKIHsKICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBqc29uTWVzc2FnZSA9IEluc3BlY3Rvck9i
amVjdDo6Y3JlYXRlKCk7CiAgICAganNvbk1lc3NhZ2UtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgi
Y29sdW1uTmFtZXMiKSwgY29sdW1uTmFtZXMpOwpAQCAtNDY2LDYgKzQ3Myw3IEBAIHZvaWQgSW5z
cGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY0Nh
bGxiYWNrOjpzZW5kU3VjCiAgICAganNvbk1lc3NhZ2UtPnNldEludGVnZXIoQVNDSUlMaXRlcmFs
KCJkYXRhYmFzZUlkIiksIGRhdGFiYXNlSWQpOwogICAgIGpzb25NZXNzYWdlLT5zZXRPYmplY3Qo
QVNDSUlMaXRlcmFsKCJzcWxFcnJvciIpLCBzcWxFcnJvcik7CiAgICAganNvbk1lc3NhZ2UtPnNl
dFN0cmluZyhBU0NJSUxpdGVyYWwoInNjcmVlbkNvbG9yIiksIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OmdldEVudW1Db25zdGFudFZhbHVlKHNjcmVlbkNvbG9yKSk7CisgICAganNvbk1lc3NhZ2UtPnNl
dEFycmF5KEFTQ0lJTGl0ZXJhbCgiYWx0ZXJuYXRlQ29sb3JzIiksIGFsdGVybmF0ZUNvbG9ycyk7
CiAgICAganNvbk1lc3NhZ2UtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwg
SW5zcGVjdG9yOjpQcm90b2NvbDo6Z2V0RW51bUNvbnN0YW50VmFsdWUocHJpbnRDb2xvcikpOwog
ICAgIHNlbmRJZkFjdGl2ZShXVEY6Om1vdmUoanNvbk1lc3NhZ2UpLCBFcnJvclN0cmluZygpKTsK
IH0KQEAgLTY2Myw2ICs2NzEsOCBAQCBlbnVtIGNsYXNzIFByaW1hcnlDb2xvcnM7CiBuYW1lc3Bh
Y2UgRGF0YWJhc2UgewogLyogVW5pcXVlIGlkZW50aWZpZXIgb2YgRGF0YWJhc2Ugb2JqZWN0LiAq
LwogdHlwZWRlZiBpbnQgRGF0YWJhc2VJZDsKKwordHlwZWRlZiBJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycz4gQ29s
b3JMaXN0OwogfSAvLyBEYXRhYmFzZQogLy8gRW5kIG9mIHR5cGVkZWZzLgogCkBAIC0xMDU0LDEz
ICsxMDY0LDE0IEBAIHZvaWQgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6
OmV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMoCiAgICAgICAgIGJhY2tlbmREaXNw
YXRjaGVyKCktPnNlbmRSZXNwb25zZShjYWxsSWQsIEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCks
IGVycm9yKTsKICAgICB9OwogCi0gICAgaWQgc3VjY2Vzc0NhbGxiYWNrID0gXihOU0FycmF5Lyo8
TlNTdHJpbmc+Ki8gKipjb2x1bW5OYW1lcywgTlNTdHJpbmcgKipub3RlcywgZG91YmxlICp0aW1l
c3RhbXAsIFJXSVByb3RvY29sSlNPTk9iamVjdCAqKnZhbHVlcywgUldJUHJvdG9jb2xKU09OT2Jq
ZWN0ICoqcGF5bG9hZCwgaW50ICpkYXRhYmFzZUlkLCBSV0lQcm90b2NvbERhdGFiYXNlRXJyb3Ig
KipzcWxFcnJvciwgUldJUHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgKnNjcmVlbkNvbG9y
LCBSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlc1By
aW50Q29sb3IgKnByaW50Q29sb3IpIHsKKyAgICBpZCBzdWNjZXNzQ2FsbGJhY2sgPSBeKE5TQXJy
YXkvKjxOU1N0cmluZz4qLyAqKmNvbHVtbk5hbWVzLCBOU1N0cmluZyAqKm5vdGVzLCBkb3VibGUg
KnRpbWVzdGFtcCwgUldJUHJvdG9jb2xKU09OT2JqZWN0ICoqdmFsdWVzLCBSV0lQcm90b2NvbEpT
T05PYmplY3QgKipwYXlsb2FkLCBpbnQgKmRhdGFiYXNlSWQsIFJXSVByb3RvY29sRGF0YWJhc2VF
cnJvciAqKnNxbEVycm9yLCBSV0lQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyAqc2NyZWVu
Q29sb3IsIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKmFsdGVybmF0ZUNvbG9ycywgUldJUHJvdG9j
b2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yICpw
cmludENvbG9yKSB7CiAgICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdE9iamVjdCA9
IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1Jf
QkFEX09QVElPTkFMX1BBUkFNRVRFUihjb2x1bW5OYW1lcywgQCJjb2x1bW5OYW1lcyIpOwogICAg
ICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9PUFRJT05BTF9QQVJBTUVURVIobm90ZXMsIEAi
bm90ZXMiKTsKICAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfT1BUSU9OQUxfUEFSQU1F
VEVSKHZhbHVlcywgQCJ2YWx1ZXMiKTsKICAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURf
T1BUSU9OQUxfUEFSQU1FVEVSKHBheWxvYWQsIEAicGF5bG9hZCIpOwogICAgICAgICBUSFJPV19F
WENFUFRJT05fRk9SX0JBRF9PUFRJT05BTF9QQVJBTUVURVIoc3FsRXJyb3IsIEAic3FsRXJyb3Ii
KTsKKyAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfT1BUSU9OQUxfUEFSQU1FVEVSKGFs
dGVybmF0ZUNvbG9ycywgQCJhbHRlcm5hdGVDb2xvcnMiKTsKICAgICAgICAgaWYgKGNvbHVtbk5h
bWVzKQogICAgICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImNv
bHVtbk5hbWVzIiksIGluc3BlY3RvclN0cmluZ0FycmF5KCpjb2x1bW5OYW1lcykpOwogICAgICAg
ICBpZiAobm90ZXMpCkBAIC0xMDc3LDYgKzEwODgsOCBAQCB2b2lkIE9iakNJbnNwZWN0b3JEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVz
KAogICAgICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJzcWxF
cnJvciIpLCBbKnNxbEVycm9yIHRvSW5zcGVjdG9yT2JqZWN0XSk7CiAgICAgICAgIGlmIChzY3Jl
ZW5Db2xvcikKICAgICAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJh
bCgic2NyZWVuQ29sb3IiKSwgdG9Qcm90b2NvbFN0cmluZygqc2NyZWVuQ29sb3IpKTsKKyAgICAg
ICAgaWYgKGFsdGVybmF0ZUNvbG9ycykKKyAgICAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0QXJy
YXkoQVNDSUlMaXRlcmFsKCJhbHRlcm5hdGVDb2xvcnMiKSwgaW5zcGVjdG9yU3RyaW5nQXJyYXko
KmFsdGVybmF0ZUNvbG9ycykpOwogICAgICAgICBpZiAocHJpbnRDb2xvcikKICAgICAgICAgICAg
IHJlc3VsdE9iamVjdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCB0b1By
b3RvY29sU3RyaW5nKCpwcmludENvbG9yKSk7CiAgICAgICAgIGJhY2tlbmREaXNwYXRjaGVyKCkt
PnNlbmRSZXNwb25zZShjYWxsSWQsIFdURjo6bW92ZShyZXN1bHRPYmplY3QpLCBTdHJpbmcoKSk7
CkBAIC0xMDk0LDEzICsxMTA3LDE0IEBAIHZvaWQgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzCiAgICAgICAg
IGJhY2tlbmREaXNwYXRjaGVyKCktPnNlbmRSZXNwb25zZShjYWxsSWQsIEluc3BlY3Rvck9iamVj
dDo6Y3JlYXRlKCksIGVycm9yKTsKICAgICB9OwogCi0gICAgaWQgc3VjY2Vzc0NhbGxiYWNrID0g
XihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKipjb2x1bW5OYW1lcywgTlNTdHJpbmcgKipub3Rlcywg
ZG91YmxlICp0aW1lc3RhbXAsIFJXSVByb3RvY29sSlNPTk9iamVjdCAqKnZhbHVlcywgUldJUHJv
dG9jb2xKU09OT2JqZWN0ICoqcGF5bG9hZCwgaW50ICpkYXRhYmFzZUlkLCBSV0lQcm90b2NvbERh
dGFiYXNlRXJyb3IgKipzcWxFcnJvciwgUldJUHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMg
KnNjcmVlbkNvbG9yLCBSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxS
ZXR1cm5WYWx1ZXNQcmludENvbG9yICpwcmludENvbG9yKSB7CisgICAgaWQgc3VjY2Vzc0NhbGxi
YWNrID0gXihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKipjb2x1bW5OYW1lcywgTlNTdHJpbmcgKipu
b3RlcywgZG91YmxlICp0aW1lc3RhbXAsIFJXSVByb3RvY29sSlNPTk9iamVjdCAqKnZhbHVlcywg
UldJUHJvdG9jb2xKU09OT2JqZWN0ICoqcGF5bG9hZCwgaW50ICpkYXRhYmFzZUlkLCBSV0lQcm90
b2NvbERhdGFiYXNlRXJyb3IgKipzcWxFcnJvciwgUldJUHJvdG9jb2xEYXRhYmFzZVByaW1hcnlD
b2xvcnMgKnNjcmVlbkNvbG9yLCBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiphbHRlcm5hdGVDb2xv
cnMsIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVl
c1ByaW50Q29sb3IgKnByaW50Q29sb3IpIHsKICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4g
cmVzdWx0T2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgVEhST1df
RVhDRVBUSU9OX0ZPUl9CQURfT1BUSU9OQUxfUEFSQU1FVEVSKGNvbHVtbk5hbWVzLCBAImNvbHVt
bk5hbWVzIik7CiAgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX09QVElPTkFMX1BBUkFN
RVRFUihub3RlcywgQCJub3RlcyIpOwogICAgICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9P
UFRJT05BTF9QQVJBTUVURVIodmFsdWVzLCBAInZhbHVlcyIpOwogICAgICAgICBUSFJPV19FWENF
UFRJT05fRk9SX0JBRF9PUFRJT05BTF9QQVJBTUVURVIocGF5bG9hZCwgQCJwYXlsb2FkIik7CiAg
ICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX09QVElPTkFMX1BBUkFNRVRFUihzcWxFcnJv
ciwgQCJzcWxFcnJvciIpOworICAgICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9PUFRJT05B
TF9QQVJBTUVURVIoYWx0ZXJuYXRlQ29sb3JzLCBAImFsdGVybmF0ZUNvbG9ycyIpOwogICAgICAg
ICBpZiAoY29sdW1uTmFtZXMpCiAgICAgICAgICAgICByZXN1bHRPYmplY3QtPnNldEFycmF5KEFT
Q0lJTGl0ZXJhbCgiY29sdW1uTmFtZXMiKSwgaW5zcGVjdG9yU3RyaW5nQXJyYXkoKmNvbHVtbk5h
bWVzKSk7CiAgICAgICAgIGlmIChub3RlcykKQEAgLTExMTcsNiArMTEzMSw4IEBAIHZvaWQgT2Jq
Q0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxBc3luY09wdGlv
bmFsUmV0dXJuVmFsdWVzCiAgICAgICAgICAgICByZXN1bHRPYmplY3QtPnNldE9iamVjdChBU0NJ
SUxpdGVyYWwoInNxbEVycm9yIiksIFsqc3FsRXJyb3IgdG9JbnNwZWN0b3JPYmplY3RdKTsKICAg
ICAgICAgaWYgKHNjcmVlbkNvbG9yKQogICAgICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRTdHJp
bmcoQVNDSUlMaXRlcmFsKCJzY3JlZW5Db2xvciIpLCB0b1Byb3RvY29sU3RyaW5nKCpzY3JlZW5D
b2xvcikpOworICAgICAgICBpZiAoYWx0ZXJuYXRlQ29sb3JzKQorICAgICAgICAgICAgcmVzdWx0
T2JqZWN0LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImFsdGVybmF0ZUNvbG9ycyIpLCBpbnNwZWN0
b3JTdHJpbmdBcnJheSgqYWx0ZXJuYXRlQ29sb3JzKSk7CiAgICAgICAgIGlmIChwcmludENvbG9y
KQogICAgICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmlu
dENvbG9yIiksIHRvUHJvdG9jb2xTdHJpbmcoKnByaW50Q29sb3IpKTsKICAgICAgICAgYmFja2Vu
ZERpc3BhdGNoZXIoKS0+c2VuZFJlc3BvbnNlKGNhbGxJZCwgV1RGOjptb3ZlKHJlc3VsdE9iamVj
dCksIFN0cmluZygpKTsKQEAgLTExMzQsMTMgKzExNTAsMTQgQEAgdm9pZCBPYmpDSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmMobG9uZyBjYWxsSWQsIGlu
dCBpbl8KICAgICAgICAgYmFja2VuZERpc3BhdGNoZXIoKS0+c2VuZFJlc3BvbnNlKGNhbGxJZCwg
SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSwgZXJyb3IpOwogICAgIH07CiAKLSAgICBpZCBzdWNj
ZXNzQ2FsbGJhY2sgPSBeKE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqY29sdW1uTmFtZXMsIE5TU3Ry
aW5nICpub3RlcywgZG91YmxlIHRpbWVzdGFtcCwgUldJUHJvdG9jb2xKU09OT2JqZWN0ICp2YWx1
ZXMsIFJXSVByb3RvY29sSlNPTk9iamVjdCAqcGF5bG9hZCwgaW50IGRhdGFiYXNlSWQsIFJXSVBy
b3RvY29sRGF0YWJhc2VFcnJvciAqc3FsRXJyb3IsIFJXSVByb3RvY29sRGF0YWJhc2VQcmltYXJ5
Q29sb3JzIHNjcmVlbkNvbG9yLCBSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNQcmlu
dENvbG9yIHByaW50Q29sb3IpIHsKKyAgICBpZCBzdWNjZXNzQ2FsbGJhY2sgPSBeKE5TQXJyYXkv
KjxOU1N0cmluZz4qLyAqY29sdW1uTmFtZXMsIE5TU3RyaW5nICpub3RlcywgZG91YmxlIHRpbWVz
dGFtcCwgUldJUHJvdG9jb2xKU09OT2JqZWN0ICp2YWx1ZXMsIFJXSVByb3RvY29sSlNPTk9iamVj
dCAqcGF5bG9hZCwgaW50IGRhdGFiYXNlSWQsIFJXSVByb3RvY29sRGF0YWJhc2VFcnJvciAqc3Fs
RXJyb3IsIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqYWx0ZXJuYXRlQ29sb3JzLCBSV0lQcm90b2Nv
bERhdGFiYXNlUHJpbWFyeUNvbG9ycyBzY3JlZW5Db2xvciwgUldJUHJvdG9jb2xEYXRhYmFzZUV4
ZWN1dGVTUUxTeW5jUHJpbnRDb2xvciBwcmludENvbG9yKSB7CiAgICAgICAgIFJlZjxJbnNwZWN0
b3JPYmplY3Q+IHJlc3VsdE9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAg
ICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUEFSQU1FVEVSKGNvbHVtbk5hbWVzLCBA
ImNvbHVtbk5hbWVzIik7CiAgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUEFS
QU1FVEVSKG5vdGVzLCBAIm5vdGVzIik7CiAgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVR
VUlSRURfUEFSQU1FVEVSKHZhbHVlcywgQCJ2YWx1ZXMiKTsKICAgICAgICAgVEhST1dfRVhDRVBU
SU9OX0ZPUl9SRVFVSVJFRF9QQVJBTUVURVIocGF5bG9hZCwgQCJwYXlsb2FkIik7CiAgICAgICAg
IFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUEFSQU1FVEVSKHNxbEVycm9yLCBAInNxbEVy
cm9yIik7CisgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUEFSQU1FVEVSKGFs
dGVybmF0ZUNvbG9ycywgQCJhbHRlcm5hdGVDb2xvcnMiKTsKICAgICAgICAgcmVzdWx0T2JqZWN0
LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVzIiksIGluc3BlY3RvclN0cmluZ0Fy
cmF5KGNvbHVtbk5hbWVzKSk7CiAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0U3RyaW5nKEFTQ0lJ
TGl0ZXJhbCgibm90ZXMiKSwgbm90ZXMpOwogICAgICAgICByZXN1bHRPYmplY3QtPnNldERvdWJs
ZShBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCB0aW1lc3RhbXApOwpAQCAtMTE0OCw2ICsxMTY1
LDcgQEAgdm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0
ZVNRTFN5bmMobG9uZyBjYWxsSWQsIGludCBpbl8KICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRW
YWx1ZShBU0NJSUxpdGVyYWwoInBheWxvYWQiKSwgW3BheWxvYWQgdG9JbnNwZWN0b3JPYmplY3Rd
KTsKICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiZGF0YWJh
c2VJZCIpLCBkYXRhYmFzZUlkKTsKICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRPYmplY3QoQVND
SUlMaXRlcmFsKCJzcWxFcnJvciIpLCBbc3FsRXJyb3IgdG9JbnNwZWN0b3JPYmplY3RdKTsKKyAg
ICAgICAgcmVzdWx0T2JqZWN0LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImFsdGVybmF0ZUNvbG9y
cyIpLCBpbnNwZWN0b3JTdHJpbmdBcnJheShhbHRlcm5hdGVDb2xvcnMpKTsKICAgICAgICAgcmVz
dWx0T2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzY3JlZW5Db2xvciIpLCB0b1Byb3Rv
Y29sU3RyaW5nKHNjcmVlbkNvbG9yKSk7CiAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0U3RyaW5n
KEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCB0b1Byb3RvY29sU3RyaW5nKHByaW50Q29sb3Ip
KTsKICAgICAgICAgYmFja2VuZERpc3BhdGNoZXIoKS0+c2VuZFJlc3BvbnNlKGNhbGxJZCwgV1RG
Ojptb3ZlKHJlc3VsdE9iamVjdCksIFN0cmluZygpKTsKQEAgLTExNjUsMTMgKzExODMsMTQgQEAg
dm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTEFz
eW5jKGxvbmcgY2FsbElkLCBpbnQgaW4KICAgICAgICAgYmFja2VuZERpc3BhdGNoZXIoKS0+c2Vu
ZFJlc3BvbnNlKGNhbGxJZCwgSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSwgZXJyb3IpOwogICAg
IH07CiAKLSAgICBpZCBzdWNjZXNzQ2FsbGJhY2sgPSBeKE5TQXJyYXkvKjxOU1N0cmluZz4qLyAq
Y29sdW1uTmFtZXMsIE5TU3RyaW5nICpub3RlcywgZG91YmxlIHRpbWVzdGFtcCwgUldJUHJvdG9j
b2xKU09OT2JqZWN0ICp2YWx1ZXMsIFJXSVByb3RvY29sSlNPTk9iamVjdCAqcGF5bG9hZCwgaW50
IGRhdGFiYXNlSWQsIFJXSVByb3RvY29sRGF0YWJhc2VFcnJvciAqc3FsRXJyb3IsIFJXSVByb3Rv
Y29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzIHNjcmVlbkNvbG9yLCBSV0lQcm90b2NvbERhdGFiYXNl
RXhlY3V0ZVNRTEFzeW5jUHJpbnRDb2xvciBwcmludENvbG9yKSB7CisgICAgaWQgc3VjY2Vzc0Nh
bGxiYWNrID0gXihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKmNvbHVtbk5hbWVzLCBOU1N0cmluZyAq
bm90ZXMsIGRvdWJsZSB0aW1lc3RhbXAsIFJXSVByb3RvY29sSlNPTk9iamVjdCAqdmFsdWVzLCBS
V0lQcm90b2NvbEpTT05PYmplY3QgKnBheWxvYWQsIGludCBkYXRhYmFzZUlkLCBSV0lQcm90b2Nv
bERhdGFiYXNlRXJyb3IgKnNxbEVycm9yLCBSV0lQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9y
cyBzY3JlZW5Db2xvciwgTlNBcnJheS8qPE5TU3RyaW5nPiovICphbHRlcm5hdGVDb2xvcnMsIFJX
SVByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9yIHByaW50Q29sb3IpIHsK
ICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0T2JqZWN0ID0gSW5zcGVjdG9yT2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QQVJB
TUVURVIoY29sdW1uTmFtZXMsIEAiY29sdW1uTmFtZXMiKTsKICAgICAgICAgVEhST1dfRVhDRVBU
SU9OX0ZPUl9SRVFVSVJFRF9QQVJBTUVURVIobm90ZXMsIEAibm90ZXMiKTsKICAgICAgICAgVEhS
T1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QQVJBTUVURVIodmFsdWVzLCBAInZhbHVlcyIpOwog
ICAgICAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BBUkFNRVRFUihwYXlsb2FkLCBA
InBheWxvYWQiKTsKICAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QQVJBTUVU
RVIoc3FsRXJyb3IsIEAic3FsRXJyb3IiKTsKKyAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9S
RVFVSVJFRF9QQVJBTUVURVIoYWx0ZXJuYXRlQ29sb3JzLCBAImFsdGVybmF0ZUNvbG9ycyIpOwog
ICAgICAgICByZXN1bHRPYmplY3QtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiY29sdW1uTmFtZXMi
KSwgaW5zcGVjdG9yU3RyaW5nQXJyYXkoY29sdW1uTmFtZXMpKTsKICAgICAgICAgcmVzdWx0T2Jq
ZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJub3RlcyIpLCBub3Rlcyk7CiAgICAgICAgIHJl
c3VsdE9iamVjdC0+c2V0RG91YmxlKEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksIHRpbWVzdGFt
cCk7CkBAIC0xMTgwLDYgKzExOTksNyBAQCB2b2lkIE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVyOjpleGVjdXRlU1FMQXN5bmMobG9uZyBjYWxsSWQsIGludCBpbgogICAgICAg
ICByZXN1bHRPYmplY3QtPnNldEludGVnZXIoQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIGRh
dGFiYXNlSWQpOwogICAgICAgICByZXN1bHRPYmplY3QtPnNldE9iamVjdChBU0NJSUxpdGVyYWwo
InNxbEVycm9yIiksIFtzcWxFcnJvciB0b0luc3BlY3Rvck9iamVjdF0pOwogICAgICAgICByZXN1
bHRPYmplY3QtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInNjcmVlbkNvbG9yIiksIHRvUHJvdG9j
b2xTdHJpbmcoc2NyZWVuQ29sb3IpKTsKKyAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRBcnJheShB
U0NJSUxpdGVyYWwoImFsdGVybmF0ZUNvbG9ycyIpLCBpbnNwZWN0b3JTdHJpbmdBcnJheShhbHRl
cm5hdGVDb2xvcnMpKTsKICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRl
cmFsKCJwcmludENvbG9yIiksIHRvUHJvdG9jb2xTdHJpbmcocHJpbnRDb2xvcikpOwogICAgICAg
ICBiYWNrZW5kRGlzcGF0Y2hlcigpLT5zZW5kUmVzcG9uc2UoY2FsbElkLCBXVEY6Om1vdmUocmVz
dWx0T2JqZWN0KSwgU3RyaW5nKCkpOwogICAgIH07CkBAIC0xNTA3LDEwICsxNTI3LDEwIEBAIF9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogCiBAcHJvdG9jb2wgUldJUHJv
dG9jb2xEYXRhYmFzZURvbWFpbkhhbmRsZXIgPE5TT2JqZWN0PgogQHJlcXVpcmVkCi0tICh2b2lk
KWV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNXaXRoRXJyb3JDYWxsYmFjazoodm9p
ZCheKShOU1N0cmluZyAqZXJyb3IpKWVycm9yQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrOih2b2lk
KF4pKE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKmNvbHVtbk5hbWVzLCBOU1N0cmluZyAqKm5vdGVz
LCBkb3VibGUgKnRpbWVzdGFtcCwgUldJUHJvdG9jb2xKU09OT2JqZWN0ICoqdmFsdWVzLCBSV0lQ
cm90b2NvbEpTT05PYmplY3QgKipwYXlsb2FkLCBpbnQgKmRhdGFiYXNlSWQsIFJXSVByb3RvY29s
RGF0YWJhc2VFcnJvciAqKnNxbEVycm9yLCBSV0lQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9y
cyAqc2NyZWVuQ29sb3IsIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY09wdGlvbmFs
UmV0dXJuVmFsdWVzUHJpbnRDb2xvciAqcHJpbnRDb2xvcikpc3VjY2Vzc0NhbGxiYWNrIGRhdGFi
YXNlSWQ6KGludClkYXRhYmFzZUlkIHF1ZXJ5OihOU1N0cmluZyAqKXF1ZXJ5OwotLSAodm9pZCll
eGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc1dpdGhFcnJvckNhbGxiYWNrOih2b2lk
KF4pKE5TU3RyaW5nICplcnJvcikpZXJyb3JDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2s6KHZvaWQo
XikoTlNBcnJheS8qPE5TU3RyaW5nPiovICoqY29sdW1uTmFtZXMsIE5TU3RyaW5nICoqbm90ZXMs
IGRvdWJsZSAqdGltZXN0YW1wLCBSV0lQcm90b2NvbEpTT05PYmplY3QgKip2YWx1ZXMsIFJXSVBy
b3RvY29sSlNPTk9iamVjdCAqKnBheWxvYWQsIGludCAqZGF0YWJhc2VJZCwgUldJUHJvdG9jb2xE
YXRhYmFzZUVycm9yICoqc3FsRXJyb3IsIFJXSVByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3Jz
ICpzY3JlZW5Db2xvciwgUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY09wdGlvbmFs
UmV0dXJuVmFsdWVzUHJpbnRDb2xvciAqcHJpbnRDb2xvcikpc3VjY2Vzc0NhbGxiYWNrIGRhdGFi
YXNlSWQ6KGludClkYXRhYmFzZUlkIHF1ZXJ5OihOU1N0cmluZyAqKXF1ZXJ5OwotLSAodm9pZCll
eGVjdXRlU1FMU3luY1dpdGhFcnJvckNhbGxiYWNrOih2b2lkKF4pKE5TU3RyaW5nICplcnJvcikp
ZXJyb3JDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2s6KHZvaWQoXikoTlNBcnJheS8qPE5TU3RyaW5n
PiovICpjb2x1bW5OYW1lcywgTlNTdHJpbmcgKm5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBSV0lQ
cm90b2NvbEpTT05PYmplY3QgKnZhbHVlcywgUldJUHJvdG9jb2xKU09OT2JqZWN0ICpwYXlsb2Fk
LCBpbnQgZGF0YWJhc2VJZCwgUldJUHJvdG9jb2xEYXRhYmFzZUVycm9yICpzcWxFcnJvciwgUldJ
UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgc2NyZWVuQ29sb3IsIFJXSVByb3RvY29sRGF0
YWJhc2VFeGVjdXRlU1FMU3luY1ByaW50Q29sb3IgcHJpbnRDb2xvcikpc3VjY2Vzc0NhbGxiYWNr
IGRhdGFiYXNlSWQ6KGludClkYXRhYmFzZUlkIHF1ZXJ5OihOU1N0cmluZyAqKXF1ZXJ5OwotLSAo
dm9pZClleGVjdXRlU1FMQXN5bmNXaXRoRXJyb3JDYWxsYmFjazoodm9pZCheKShOU1N0cmluZyAq
ZXJyb3IpKWVycm9yQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrOih2b2lkKF4pKE5TQXJyYXkvKjxO
U1N0cmluZz4qLyAqY29sdW1uTmFtZXMsIE5TU3RyaW5nICpub3RlcywgZG91YmxlIHRpbWVzdGFt
cCwgUldJUHJvdG9jb2xKU09OT2JqZWN0ICp2YWx1ZXMsIFJXSVByb3RvY29sSlNPTk9iamVjdCAq
cGF5bG9hZCwgaW50IGRhdGFiYXNlSWQsIFJXSVByb3RvY29sRGF0YWJhc2VFcnJvciAqc3FsRXJy
b3IsIFJXSVByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzIHNjcmVlbkNvbG9yLCBSV0lQcm90
b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRDb2xvciBwcmludENvbG9yKSlzdWNjZXNz
Q2FsbGJhY2sgZGF0YWJhc2VJZDooaW50KWRhdGFiYXNlSWQgcXVlcnk6KE5TU3RyaW5nICopcXVl
cnk7CistICh2b2lkKWV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNXaXRoRXJyb3JD
YWxsYmFjazoodm9pZCheKShOU1N0cmluZyAqZXJyb3IpKWVycm9yQ2FsbGJhY2sgc3VjY2Vzc0Nh
bGxiYWNrOih2b2lkKF4pKE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKmNvbHVtbk5hbWVzLCBOU1N0
cmluZyAqKm5vdGVzLCBkb3VibGUgKnRpbWVzdGFtcCwgUldJUHJvdG9jb2xKU09OT2JqZWN0ICoq
dmFsdWVzLCBSV0lQcm90b2NvbEpTT05PYmplY3QgKipwYXlsb2FkLCBpbnQgKmRhdGFiYXNlSWQs
IFJXSVByb3RvY29sRGF0YWJhc2VFcnJvciAqKnNxbEVycm9yLCBSV0lQcm90b2NvbERhdGFiYXNl
UHJpbWFyeUNvbG9ycyAqc2NyZWVuQ29sb3IsIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKmFsdGVy
bmF0ZUNvbG9ycywgUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1
cm5WYWx1ZXNQcmludENvbG9yICpwcmludENvbG9yKSlzdWNjZXNzQ2FsbGJhY2sgZGF0YWJhc2VJ
ZDooaW50KWRhdGFiYXNlSWQgcXVlcnk6KE5TU3RyaW5nICopcXVlcnk7CistICh2b2lkKWV4ZWN1
dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzV2l0aEVycm9yQ2FsbGJhY2s6KHZvaWQoXiko
TlNTdHJpbmcgKmVycm9yKSllcnJvckNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjazoodm9pZCheKShO
U0FycmF5Lyo8TlNTdHJpbmc+Ki8gKipjb2x1bW5OYW1lcywgTlNTdHJpbmcgKipub3RlcywgZG91
YmxlICp0aW1lc3RhbXAsIFJXSVByb3RvY29sSlNPTk9iamVjdCAqKnZhbHVlcywgUldJUHJvdG9j
b2xKU09OT2JqZWN0ICoqcGF5bG9hZCwgaW50ICpkYXRhYmFzZUlkLCBSV0lQcm90b2NvbERhdGFi
YXNlRXJyb3IgKipzcWxFcnJvciwgUldJUHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgKnNj
cmVlbkNvbG9yLCBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiphbHRlcm5hdGVDb2xvcnMsIFJXSVBy
b3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29s
b3IgKnByaW50Q29sb3IpKXN1Y2Nlc3NDYWxsYmFjayBkYXRhYmFzZUlkOihpbnQpZGF0YWJhc2VJ
ZCBxdWVyeTooTlNTdHJpbmcgKilxdWVyeTsKKy0gKHZvaWQpZXhlY3V0ZVNRTFN5bmNXaXRoRXJy
b3JDYWxsYmFjazoodm9pZCheKShOU1N0cmluZyAqZXJyb3IpKWVycm9yQ2FsbGJhY2sgc3VjY2Vz
c0NhbGxiYWNrOih2b2lkKF4pKE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqY29sdW1uTmFtZXMsIE5T
U3RyaW5nICpub3RlcywgZG91YmxlIHRpbWVzdGFtcCwgUldJUHJvdG9jb2xKU09OT2JqZWN0ICp2
YWx1ZXMsIFJXSVByb3RvY29sSlNPTk9iamVjdCAqcGF5bG9hZCwgaW50IGRhdGFiYXNlSWQsIFJX
SVByb3RvY29sRGF0YWJhc2VFcnJvciAqc3FsRXJyb3IsIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAq
YWx0ZXJuYXRlQ29sb3JzLCBSV0lQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyBzY3JlZW5D
b2xvciwgUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jUHJpbnRDb2xvciBwcmludENv
bG9yKSlzdWNjZXNzQ2FsbGJhY2sgZGF0YWJhc2VJZDooaW50KWRhdGFiYXNlSWQgcXVlcnk6KE5T
U3RyaW5nICopcXVlcnk7CistICh2b2lkKWV4ZWN1dGVTUUxBc3luY1dpdGhFcnJvckNhbGxiYWNr
Oih2b2lkKF4pKE5TU3RyaW5nICplcnJvcikpZXJyb3JDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2s6
KHZvaWQoXikoTlNBcnJheS8qPE5TU3RyaW5nPiovICpjb2x1bW5OYW1lcywgTlNTdHJpbmcgKm5v
dGVzLCBkb3VibGUgdGltZXN0YW1wLCBSV0lQcm90b2NvbEpTT05PYmplY3QgKnZhbHVlcywgUldJ
UHJvdG9jb2xKU09OT2JqZWN0ICpwYXlsb2FkLCBpbnQgZGF0YWJhc2VJZCwgUldJUHJvdG9jb2xE
YXRhYmFzZUVycm9yICpzcWxFcnJvciwgUldJUHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMg
c2NyZWVuQ29sb3IsIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqYWx0ZXJuYXRlQ29sb3JzLCBSV0lQ
cm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRDb2xvciBwcmludENvbG9yKSlzdWNj
ZXNzQ2FsbGJhY2sgZGF0YWJhc2VJZDooaW50KWRhdGFiYXNlSWQgcXVlcnk6KE5TU3RyaW5nICop
cXVlcnk7CiBAZW5kCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1y
ZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwt
cmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggMjBjMTAyY2VjYzk2NjRhMWM5ODlj
ODdiNmE4MThmMGIxOTQ0NTZiYS4uZjljZjJiNDgzMGU5YzZhNjBkMzA0N2JlMTI2NTAxNjQ2NTZi
MGFiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1l
dGVycy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1w
YXJhbWV0ZXJzLmpzb24tcmVzdWx0CkBAIC01MSw4ICs1MSw4IEBAIHByaXZhdGU6CiBjbGFzcyBB
bHRlcm5hdGVJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIEFsdGVy
bmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5B
bHRlcm5hdGVJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKCkgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIGV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSWQsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIGluX2NvbHVtbk5hbWVzLCBjb25z
dCBTdHJpbmcqIGluX25vdGVzLCBjb25zdCBkb3VibGUqIGluX3RpbWVzdGFtcCwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGluX3ZhbHVlcywgY29uc3QgSW5zcGVj
dG9yOjpJbnNwZWN0b3JWYWx1ZSogaW5fcGF5bG9hZCwgY29uc3QgaW50KiBpbl9kYXRhYmFzZUlk
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5fc3FsRXJyb3Is
IGNvbnN0IFN0cmluZyogaW5fc2NyZWVuQ29sb3IsIGNvbnN0IFN0cmluZyogaW5fcHJpbnRDb2xv
cikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMobG9u
ZyBjYWxsSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIGluX2Nv
bHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIGluX25vdGVzLCBkb3VibGUgaW5fdGltZXN0YW1wLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5fdmFsdWVzLCBJbnNw
ZWN0b3I6Okluc3BlY3RvclZhbHVlIGluX3BheWxvYWQsIGludCBpbl9kYXRhYmFzZUlkLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5fc3FsRXJyb3IsIGNvbnN0
IFN0cmluZyYgaW5fc2NyZWVuQ29sb3IsIGNvbnN0IFN0cmluZyYgaW5fcHJpbnRDb2xvcikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2Fs
bElkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mJiBpbl9jb2x1bW5O
YW1lcywgY29uc3QgU3RyaW5nKiBpbl9ub3RlcywgY29uc3QgZG91YmxlKiBpbl90aW1lc3RhbXAs
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBpbl92YWx1ZXMsIGNv
bnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIGluX3BheWxvYWQsIGNvbnN0IGludCogaW5f
ZGF0YWJhc2VJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGlu
X3NxbEVycm9yLCBjb25zdCBTdHJpbmcqIGluX3NjcmVlbkNvbG9yLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mJiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmlu
ZyogaW5fcHJpbnRDb2xvcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlTm9PcHRpb25h
bFBhcmFtZXRlcnMobG9uZyBjYWxsSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ckFycmF5PiYmIGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIGluX25vdGVzLCBkb3VibGUg
aW5fdGltZXN0YW1wLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYg
aW5fdmFsdWVzLCBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlIGluX3BheWxvYWQsIGludCBpbl9k
YXRhYmFzZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5f
c3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgaW5fc2NyZWVuQ29sb3IsIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIGluX2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5n
JiBpbl9wcmludENvbG9yKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKQEAg
LTk1LDggKzk1LDggQEAgcHVibGljOgogCiAvLyBEYXRhYmFzZS4KIEluc3BlY3RvckJhY2tlbmQu
cmVnaXN0ZXJFbnVtKCJEYXRhYmFzZS5QcmltYXJ5Q29sb3JzIiwge1JlZDogInJlZCIsIEdyZWVu
OiAiZ3JlZW4iLCBCbHVlOiAiYmx1ZSJ9KTsKLUluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDb21t
YW5kKCJEYXRhYmFzZS5leGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzIiwgW3sibmFtZSI6ICJj
b2x1bW5OYW1lcyIsICJ0eXBlIjogIm9iamVjdCIsICJvcHRpb25hbCI6IHRydWV9LCB7Im5hbWUi
OiAibm90ZXMiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlfSwgeyJuYW1lIjog
InRpbWVzdGFtcCIsICJ0eXBlIjogIm51bWJlciIsICJvcHRpb25hbCI6IHRydWV9LCB7Im5hbWUi
OiAidmFsdWVzIiwgInR5cGUiOiAib2JqZWN0IiwgIm9wdGlvbmFsIjogdHJ1ZX0sIHsibmFtZSI6
ICJwYXlsb2FkIiwgInR5cGUiOiAib2JqZWN0IiwgIm9wdGlvbmFsIjogdHJ1ZX0sIHsibmFtZSI6
ICJkYXRhYmFzZUlkIiwgInR5cGUiOiAibnVtYmVyIiwgIm9wdGlvbmFsIjogdHJ1ZX0sIHsibmFt
ZSI6ICJzcWxFcnJvciIsICJ0eXBlIjogIm9iamVjdCIsICJvcHRpb25hbCI6IHRydWV9LCB7Im5h
bWUiOiAic2NyZWVuQ29sb3IiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlfSwg
eyJuYW1lIjogInByaW50Q29sb3IiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVl
fV0sIFsiY29sdW1uTmFtZXMiLCAibm90ZXMiLCAidGltZXN0YW1wIiwgInZhbHVlcyIsICJwYXls
b2FkIiwgImRhdGFiYXNlSWQiLCAic3FsRXJyb3IiLCAic2NyZWVuQ29sb3IiLCAicHJpbnRDb2xv
ciJdKTsKLUluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDb21tYW5kKCJEYXRhYmFzZS5leGVjdXRl
Tm9PcHRpb25hbFBhcmFtZXRlcnMiLCBbeyJuYW1lIjogImNvbHVtbk5hbWVzIiwgInR5cGUiOiAi
b2JqZWN0IiwgIm9wdGlvbmFsIjogZmFsc2V9LCB7Im5hbWUiOiAibm90ZXMiLCAidHlwZSI6ICJz
dHJpbmciLCAib3B0aW9uYWwiOiBmYWxzZX0sIHsibmFtZSI6ICJ0aW1lc3RhbXAiLCAidHlwZSI6
ICJudW1iZXIiLCAib3B0aW9uYWwiOiBmYWxzZX0sIHsibmFtZSI6ICJ2YWx1ZXMiLCAidHlwZSI6
ICJvYmplY3QiLCAib3B0aW9uYWwiOiBmYWxzZX0sIHsibmFtZSI6ICJwYXlsb2FkIiwgInR5cGUi
OiAib2JqZWN0IiwgIm9wdGlvbmFsIjogZmFsc2V9LCB7Im5hbWUiOiAiZGF0YWJhc2VJZCIsICJ0
eXBlIjogIm51bWJlciIsICJvcHRpb25hbCI6IGZhbHNlfSwgeyJuYW1lIjogInNxbEVycm9yIiwg
InR5cGUiOiAib2JqZWN0IiwgIm9wdGlvbmFsIjogZmFsc2V9LCB7Im5hbWUiOiAic2NyZWVuQ29s
b3IiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiBmYWxzZX0sIHsibmFtZSI6ICJwcmlu
dENvbG9yIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogZmFsc2V9XSwgWyJjb2x1bW5O
YW1lcyIsICJub3RlcyIsICJ0aW1lc3RhbXAiLCAidmFsdWVzIiwgInBheWxvYWQiLCAiZGF0YWJh
c2VJZCIsICJzcWxFcnJvciIsICJzY3JlZW5Db2xvciIsICJwcmludENvbG9yIl0pOworSW5zcGVj
dG9yQmFja2VuZC5yZWdpc3RlckNvbW1hbmQoIkRhdGFiYXNlLmV4ZWN1dGVBbGxPcHRpb25hbFBh
cmFtZXRlcnMiLCBbeyJuYW1lIjogImNvbHVtbk5hbWVzIiwgInR5cGUiOiAib2JqZWN0IiwgIm9w
dGlvbmFsIjogdHJ1ZX0sIHsibmFtZSI6ICJub3RlcyIsICJ0eXBlIjogInN0cmluZyIsICJvcHRp
b25hbCI6IHRydWV9LCB7Im5hbWUiOiAidGltZXN0YW1wIiwgInR5cGUiOiAibnVtYmVyIiwgIm9w
dGlvbmFsIjogdHJ1ZX0sIHsibmFtZSI6ICJ2YWx1ZXMiLCAidHlwZSI6ICJvYmplY3QiLCAib3B0
aW9uYWwiOiB0cnVlfSwgeyJuYW1lIjogInBheWxvYWQiLCAidHlwZSI6ICJvYmplY3QiLCAib3B0
aW9uYWwiOiB0cnVlfSwgeyJuYW1lIjogImRhdGFiYXNlSWQiLCAidHlwZSI6ICJudW1iZXIiLCAi
b3B0aW9uYWwiOiB0cnVlfSwgeyJuYW1lIjogInNxbEVycm9yIiwgInR5cGUiOiAib2JqZWN0Iiwg
Im9wdGlvbmFsIjogdHJ1ZX0sIHsibmFtZSI6ICJzY3JlZW5Db2xvciIsICJ0eXBlIjogInN0cmlu
ZyIsICJvcHRpb25hbCI6IHRydWV9LCB7Im5hbWUiOiAiYWx0ZXJuYXRlQ29sb3JzIiwgInR5cGUi
OiAib2JqZWN0IiwgIm9wdGlvbmFsIjogdHJ1ZX0sIHsibmFtZSI6ICJwcmludENvbG9yIiwgInR5
cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZX1dLCBbImNvbHVtbk5hbWVzIiwgIm5vdGVz
IiwgInRpbWVzdGFtcCIsICJ2YWx1ZXMiLCAicGF5bG9hZCIsICJkYXRhYmFzZUlkIiwgInNxbEVy
cm9yIiwgInNjcmVlbkNvbG9yIiwgImFsdGVybmF0ZUNvbG9ycyIsICJwcmludENvbG9yIl0pOwor
SW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNvbW1hbmQoIkRhdGFiYXNlLmV4ZWN1dGVOb09wdGlv
bmFsUGFyYW1ldGVycyIsIFt7Im5hbWUiOiAiY29sdW1uTmFtZXMiLCAidHlwZSI6ICJvYmplY3Qi
LCAib3B0aW9uYWwiOiBmYWxzZX0sIHsibmFtZSI6ICJub3RlcyIsICJ0eXBlIjogInN0cmluZyIs
ICJvcHRpb25hbCI6IGZhbHNlfSwgeyJuYW1lIjogInRpbWVzdGFtcCIsICJ0eXBlIjogIm51bWJl
ciIsICJvcHRpb25hbCI6IGZhbHNlfSwgeyJuYW1lIjogInZhbHVlcyIsICJ0eXBlIjogIm9iamVj
dCIsICJvcHRpb25hbCI6IGZhbHNlfSwgeyJuYW1lIjogInBheWxvYWQiLCAidHlwZSI6ICJvYmpl
Y3QiLCAib3B0aW9uYWwiOiBmYWxzZX0sIHsibmFtZSI6ICJkYXRhYmFzZUlkIiwgInR5cGUiOiAi
bnVtYmVyIiwgIm9wdGlvbmFsIjogZmFsc2V9LCB7Im5hbWUiOiAic3FsRXJyb3IiLCAidHlwZSI6
ICJvYmplY3QiLCAib3B0aW9uYWwiOiBmYWxzZX0sIHsibmFtZSI6ICJzY3JlZW5Db2xvciIsICJ0
eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IGZhbHNlfSwgeyJuYW1lIjogImFsdGVybmF0ZUNv
bG9ycyIsICJ0eXBlIjogIm9iamVjdCIsICJvcHRpb25hbCI6IGZhbHNlfSwgeyJuYW1lIjogInBy
aW50Q29sb3IiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiBmYWxzZX1dLCBbImNvbHVt
bk5hbWVzIiwgIm5vdGVzIiwgInRpbWVzdGFtcCIsICJ2YWx1ZXMiLCAicGF5bG9hZCIsICJkYXRh
YmFzZUlkIiwgInNxbEVycm9yIiwgInNjcmVlbkNvbG9yIiwgImFsdGVybmF0ZUNvbG9ycyIsICJw
cmludENvbG9yIl0pOwogSW5zcGVjdG9yQmFja2VuZC5hY3RpdmF0ZURvbWFpbigiRGF0YWJhc2Ui
KTsKICMjIyBFbmQgRmlsZTogSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCiAKQEAgLTE2Myw4
ICsxNjMsOCBAQCBwdWJsaWM6CiAgICAgICAgIFllbGxvdyA9IDUsCiAgICAgICAgIEJsYWNrID0g
NiwKICAgICB9OyAvLyBlbnVtIGNsYXNzIFByaW50Q29sb3IKLSAgICB2aXJ0dWFsIHZvaWQgZXhl
Y3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhFcnJvclN0cmluZyYsIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIGlu
X25vdGVzLCBjb25zdCBkb3VibGUqIGluX3RpbWVzdGFtcCwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0PiYmIGluX3ZhbHVlcywgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0
b3JWYWx1ZSogaW5fcGF5bG9hZCwgY29uc3QgaW50KiBpbl9kYXRhYmFzZUlkLCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmlu
ZyogaW5fc2NyZWVuQ29sb3IsIGNvbnN0IFN0cmluZyogaW5fcHJpbnRDb2xvciwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiBvcHRfb3V0X2NvbHVtbk5hbWVzLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogb3B0X291dF9ub3RlcywgSW5z
cGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4qIG9wdF9vdXRfdGltZXN0YW1wLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
KiBvcHRfb3V0X3ZhbHVlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rv
cjo6SW5zcGVjdG9yVmFsdWU+KiBvcHRfb3V0X3BheWxvYWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok9wdE91dHB1dDxpbnQ+KiBvcHRfb3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiBvcHRfb3V0X3NxbEVycm9yLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3B0X291dF9zY3JlZW5Db2xvciwgSW5z
cGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3IqIG9wdF9v
dXRfcHJpbnRDb2xvcikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlTm9PcHRpb25hbFBh
cmFtZXRlcnMoRXJyb3JTdHJpbmcmLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JB
cnJheT4mJiBpbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBpbl9ub3RlcywgZG91YmxlIGlu
X3RpbWVzdGFtcCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGlu
X3ZhbHVlcywgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSBpbl9wYXlsb2FkLCBpbnQgaW5fZGF0
YWJhc2VJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGluX3Nx
bEVycm9yLCBjb25zdCBTdHJpbmcmIGluX3NjcmVlbkNvbG9yLCBjb25zdCBTdHJpbmcmIGluX3By
aW50Q29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgb3V0
X2NvbHVtbk5hbWVzLCBTdHJpbmcqIG91dF9ub3RlcywgZG91YmxlKiBvdXRfdGltZXN0YW1wLCBJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogb3V0X3ZhbHVlcywgSW5zcGVjdG9yOjpJbnNwZWN0
b3JWYWx1ZSogb3V0X3BheWxvYWQsIGludCogb3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiBvdXRfc3FsRXJyb3IsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBvdXRfc2NyZWVuQ29sb3IsIEluc3Bl
Y3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvdXRfcHJp
bnRDb2xvcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0
ZXJzKEVycm9yU3RyaW5nJiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+
JiYgaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyogaW5fbm90ZXMsIGNvbnN0IGRvdWJsZSog
aW5fdGltZXN0YW1wLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYg
aW5fdmFsdWVzLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiBpbl9wYXlsb2FkLCBj
b25zdCBpbnQqIGluX2RhdGFiYXNlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4mJiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nKiBpbl9zY3JlZW5Db2xvciwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYgaW5fYWx0ZXJuYXRlQ29sb3Jz
LCBjb25zdCBTdHJpbmcqIGluX3ByaW50Q29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxTdHJpbmc+PiYgb3B0X291dF9jb2x1bW5OYW1lcywgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6T3B0T3V0cHV0PFN0cmluZz4qIG9wdF9vdXRfbm90ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok9wdE91dHB1dDxkb3VibGU+KiBvcHRfb3V0X3RpbWVzdGFtcCwgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piogb3B0X291dF92YWx1ZXMs
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVl
Piogb3B0X291dF9wYXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piog
b3B0X291dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6
OkVycm9yPiYgb3B0X291dF9zcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6
OlByaW1hcnlDb2xvcnMqIG9wdF9vdXRfc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYgb3B0X291dF9hbHRlcm5hdGVDb2xvcnMsIElu
c3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvcHRf
b3V0X3ByaW50Q29sb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZU5vT3B0aW9uYWxQ
YXJhbWV0ZXJzKEVycm9yU3RyaW5nJiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
QXJyYXk+JiYgaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgaW5fbm90ZXMsIGRvdWJsZSBp
bl90aW1lc3RhbXAsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBp
bl92YWx1ZXMsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUgaW5fcGF5bG9hZCwgaW50IGluX2Rh
dGFiYXNlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBpbl9z
cWxFcnJvciwgY29uc3QgU3RyaW5nJiBpbl9zY3JlZW5Db2xvciwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYgaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcm
IGluX3ByaW50Q29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+
PiYgb3V0X2NvbHVtbk5hbWVzLCBTdHJpbmcqIG91dF9ub3RlcywgZG91YmxlKiBvdXRfdGltZXN0
YW1wLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogb3V0X3ZhbHVlcywgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JWYWx1ZSogb3V0X3BheWxvYWQsIGludCogb3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiBvdXRfc3FsRXJyb3IsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBvdXRfc2NyZWVuQ29sb3Is
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYgb3V0X2Fs
dGVybmF0ZUNvbG9ycywgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6
OlByaW50Q29sb3IqIG91dF9wcmludENvbG9yKSA9IDA7CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCB+SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKTsKIH07CkBAIC0y
OTAsNiArMjkwLDggQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpl
eGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbEkKICAgICBSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3Q+IGluX3NxbEVycm9yID0gSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI6OmdldE9iamVjdChwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgic3Fs
RXJyb3IiKSwgJnNxbEVycm9yX3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKICAg
ICBib29sIHNjcmVlbkNvbG9yX3ZhbHVlRm91bmQgPSBmYWxzZTsKICAgICBTdHJpbmcgaW5fc2Ny
ZWVuQ29sb3IgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0Nv
bnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJzY3JlZW5Db2xvciIpLCAmc2NyZWVuQ29sb3Jf
dmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIGJvb2wgYWx0ZXJuYXRlQ29s
b3JzX3ZhbHVlRm91bmQgPSBmYWxzZTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JB
cnJheT4gaW5fYWx0ZXJuYXRlQ29sb3JzID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Omdl
dEFycmF5KHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJhbHRlcm5hdGVDb2xv
cnMiKSwgJmFsdGVybmF0ZUNvbG9yc192YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7
CiAgICAgYm9vbCBwcmludENvbG9yX3ZhbHVlRm91bmQgPSBmYWxzZTsKICAgICBTdHJpbmcgaW5f
cHJpbnRDb2xvciA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFyYW1z
Q29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgJnByaW50Q29sb3Jf
dmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwogICAgIGlmIChwcm90b2NvbEVycm9y
cy0+bGVuZ3RoKCkpIHsKQEAgLTMwMCw3ICszMDIsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxs
SQogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAgaWYg
KG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcikgewotICAgICAgICBtX2FsdGVybmF0ZURpc3BhdGNoZXIt
PmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMoY2FsbElkLCBjb2x1bW5OYW1lc192YWx1ZUZv
dW5kID8gaW5fY29sdW1uTmFtZXMuY29weVJlZigpIDogbnVsbHB0ciwgbm90ZXNfdmFsdWVGb3Vu
ZCA/ICZpbl9ub3RlcyA6IG51bGxwdHIsIHRpbWVzdGFtcF92YWx1ZUZvdW5kID8gJmluX3RpbWVz
dGFtcCA6IG51bGxwdHIsIHZhbHVlc192YWx1ZUZvdW5kID8gaW5fdmFsdWVzLmNvcHlSZWYoKSA6
IG51bGxwdHIsIHBheWxvYWRfdmFsdWVGb3VuZCA/IGluX3BheWxvYWQuY29weVJlZigpIDogbnVs
bHB0ciwgZGF0YWJhc2VJZF92YWx1ZUZvdW5kID8gJmluX2RhdGFiYXNlSWQgOiBudWxscHRyLCBz
cWxFcnJvcl92YWx1ZUZvdW5kID8gaW5fc3FsRXJyb3IuY29weVJlZigpIDogbnVsbHB0ciwgc2Ny
ZWVuQ29sb3JfdmFsdWVGb3VuZCA/ICZpbl9zY3JlZW5Db2xvciA6IG51bGxwdHIsIHByaW50Q29s
b3JfdmFsdWVGb3VuZCA/ICZpbl9wcmludENvbG9yIDogbnVsbHB0cik7CisgICAgICAgIG1fYWx0
ZXJuYXRlRGlzcGF0Y2hlci0+ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhjYWxsSWQsIGNv
bHVtbk5hbWVzX3ZhbHVlRm91bmQgPyBpbl9jb2x1bW5OYW1lcy5jb3B5UmVmKCkgOiBudWxscHRy
LCBub3Rlc192YWx1ZUZvdW5kID8gJmluX25vdGVzIDogbnVsbHB0ciwgdGltZXN0YW1wX3ZhbHVl
Rm91bmQgPyAmaW5fdGltZXN0YW1wIDogbnVsbHB0ciwgdmFsdWVzX3ZhbHVlRm91bmQgPyBpbl92
YWx1ZXMuY29weVJlZigpIDogbnVsbHB0ciwgcGF5bG9hZF92YWx1ZUZvdW5kID8gaW5fcGF5bG9h
ZC5jb3B5UmVmKCkgOiBudWxscHRyLCBkYXRhYmFzZUlkX3ZhbHVlRm91bmQgPyAmaW5fZGF0YWJh
c2VJZCA6IG51bGxwdHIsIHNxbEVycm9yX3ZhbHVlRm91bmQgPyBpbl9zcWxFcnJvci5jb3B5UmVm
KCkgOiBudWxscHRyLCBzY3JlZW5Db2xvcl92YWx1ZUZvdW5kID8gJmluX3NjcmVlbkNvbG9yIDog
bnVsbHB0ciwgYWx0ZXJuYXRlQ29sb3JzX3ZhbHVlRm91bmQgPyBpbl9hbHRlcm5hdGVDb2xvcnMu
Y29weVJlZigpIDogbnVsbHB0ciwgcHJpbnRDb2xvcl92YWx1ZUZvdW5kID8gJmluX3ByaW50Q29s
b3IgOiBudWxscHRyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpAQCAtMzE1LDgg
KzMxNyw5IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0
ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJCiAgICAgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpEYXRhYmFzZUlkPiBv
dXRfZGF0YWJhc2VJZDsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6
OkVycm9yPiBvdXRfc3FsRXJyb3I7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6
OlByaW1hcnlDb2xvcnMgb3V0X3NjcmVlbkNvbG9yOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBvdXRfYWx0ZXJuYXRlQ29sb3JzOwogICAgIElu
c3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yIG91dF9w
cmludENvbG9yOwotICAgIG1fYWdlbnQtPmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMoZXJy
b3IsIGNvbHVtbk5hbWVzX3ZhbHVlRm91bmQgPyBpbl9jb2x1bW5OYW1lcy5jb3B5UmVmKCkgOiBu
dWxscHRyLCBub3Rlc192YWx1ZUZvdW5kID8gJmluX25vdGVzIDogbnVsbHB0ciwgdGltZXN0YW1w
X3ZhbHVlRm91bmQgPyAmaW5fdGltZXN0YW1wIDogbnVsbHB0ciwgdmFsdWVzX3ZhbHVlRm91bmQg
PyBpbl92YWx1ZXMuY29weVJlZigpIDogbnVsbHB0ciwgcGF5bG9hZF92YWx1ZUZvdW5kID8gaW5f
cGF5bG9hZC5jb3B5UmVmKCkgOiBudWxscHRyLCBkYXRhYmFzZUlkX3ZhbHVlRm91bmQgPyAmaW5f
ZGF0YWJhc2VJZCA6IG51bGxwdHIsIHNxbEVycm9yX3ZhbHVlRm91bmQgPyBpbl9zcWxFcnJvci5j
b3B5UmVmKCkgOiBudWxscHRyLCBzY3JlZW5Db2xvcl92YWx1ZUZvdW5kID8gJmluX3NjcmVlbkNv
bG9yIDogbnVsbHB0ciwgcHJpbnRDb2xvcl92YWx1ZUZvdW5kID8gJmluX3ByaW50Q29sb3IgOiBu
dWxscHRyLCBvdXRfY29sdW1uTmFtZXMsICZvdXRfbm90ZXMsICZvdXRfdGltZXN0YW1wLCBvdXRf
dmFsdWVzLCAmb3V0X3BheWxvYWQsICZvdXRfZGF0YWJhc2VJZCwgb3V0X3NxbEVycm9yLCAmb3V0
X3NjcmVlbkNvbG9yLCAmb3V0X3ByaW50Q29sb3IpOworICAgIG1fYWdlbnQtPmV4ZWN1dGVBbGxP
cHRpb25hbFBhcmFtZXRlcnMoZXJyb3IsIGNvbHVtbk5hbWVzX3ZhbHVlRm91bmQgPyBpbl9jb2x1
bW5OYW1lcy5jb3B5UmVmKCkgOiBudWxscHRyLCBub3Rlc192YWx1ZUZvdW5kID8gJmluX25vdGVz
IDogbnVsbHB0ciwgdGltZXN0YW1wX3ZhbHVlRm91bmQgPyAmaW5fdGltZXN0YW1wIDogbnVsbHB0
ciwgdmFsdWVzX3ZhbHVlRm91bmQgPyBpbl92YWx1ZXMuY29weVJlZigpIDogbnVsbHB0ciwgcGF5
bG9hZF92YWx1ZUZvdW5kID8gaW5fcGF5bG9hZC5jb3B5UmVmKCkgOiBudWxscHRyLCBkYXRhYmFz
ZUlkX3ZhbHVlRm91bmQgPyAmaW5fZGF0YWJhc2VJZCA6IG51bGxwdHIsIHNxbEVycm9yX3ZhbHVl
Rm91bmQgPyBpbl9zcWxFcnJvci5jb3B5UmVmKCkgOiBudWxscHRyLCBzY3JlZW5Db2xvcl92YWx1
ZUZvdW5kID8gJmluX3NjcmVlbkNvbG9yIDogbnVsbHB0ciwgYWx0ZXJuYXRlQ29sb3JzX3ZhbHVl
Rm91bmQgPyBpbl9hbHRlcm5hdGVDb2xvcnMuY29weVJlZigpIDogbnVsbHB0ciwgcHJpbnRDb2xv
cl92YWx1ZUZvdW5kID8gJmluX3ByaW50Q29sb3IgOiBudWxscHRyLCBvdXRfY29sdW1uTmFtZXMs
ICZvdXRfbm90ZXMsICZvdXRfdGltZXN0YW1wLCBvdXRfdmFsdWVzLCAmb3V0X3BheWxvYWQsICZv
dXRfZGF0YWJhc2VJZCwgb3V0X3NxbEVycm9yLCAmb3V0X3NjcmVlbkNvbG9yLCBvdXRfYWx0ZXJu
YXRlQ29sb3JzLCAmb3V0X3ByaW50Q29sb3IpOwogCiAgICAgaWYgKCFlcnJvci5sZW5ndGgoKSkg
ewogICAgICAgICBpZiAob3V0X2NvbHVtbk5hbWVzKQpAQCAtMzM1LDYgKzMzOCw4IEBAIHZvaWQg
SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZUFsbE9wdGlvbmFsUGFy
YW1ldGVycyhsb25nIGNhbGxJCiAgICAgICAgICAgICByZXN1bHQtPnNldE9iamVjdChBU0NJSUxp
dGVyYWwoInNxbEVycm9yIiksIG91dF9zcWxFcnJvcik7CiAgICAgICAgIGlmIChvdXRfc2NyZWVu
Q29sb3IuaXNBc3NpZ25lZCgpKQogICAgICAgICAgICAgcmVzdWx0LT5zZXRTdHJpbmcoQVNDSUlM
aXRlcmFsKCJzY3JlZW5Db2xvciIpLCBvdXRfc2NyZWVuQ29sb3IuZ2V0VmFsdWUoKSk7CisgICAg
ICAgIGlmIChvdXRfYWx0ZXJuYXRlQ29sb3JzKQorICAgICAgICAgICAgcmVzdWx0LT5zZXRBcnJh
eShBU0NJSUxpdGVyYWwoImFsdGVybmF0ZUNvbG9ycyIpLCBvdXRfYWx0ZXJuYXRlQ29sb3JzKTsK
ICAgICAgICAgaWYgKG91dF9wcmludENvbG9yLmlzQXNzaWduZWQoKSkKICAgICAgICAgICAgIHJl
c3VsdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCBvdXRfcHJpbnRDb2xv
ci5nZXRWYWx1ZSgpKTsKICAgICB9CkBAIC0zNTQsNiArMzU5LDcgQEAgdm9pZCBJbnNwZWN0b3JE
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMobG9u
ZyBjYWxsSWQKICAgICBpbnQgaW5fZGF0YWJhc2VJZCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOjpnZXRJbnRlZ2VyKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJkYXRh
YmFzZUlkIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKICAgICBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGluX3NxbEVycm9yID0gSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI6OmdldE9iamVjdChwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgi
c3FsRXJyb3IiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwogICAgIFN0cmluZyBp
bl9zY3JlZW5Db2xvciA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFy
YW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInNjcmVlbkNvbG9yIiksIG51bGxwdHIs
IHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JB
cnJheT4gaW5fYWx0ZXJuYXRlQ29sb3JzID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Omdl
dEFycmF5KHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJhbHRlcm5hdGVDb2xv
cnMiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwogICAgIFN0cmluZyBpbl9wcmlu
dENvbG9yID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250
YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCBudWxscHRyLCBwcm90b2Nv
bEVycm9ycy5nZXQoKSk7CiAgICAgaWYgKHByb3RvY29sRXJyb3JzLT5sZW5ndGgoKSkgewogICAg
ICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlNvbWUgYXJndW1lbnRz
IG9mIG1ldGhvZCAnJXMnIGNhbid0IGJlIHByb2Nlc3NlZCIsICJEYXRhYmFzZS5leGVjdXRlTm9P
cHRpb25hbFBhcmFtZXRlcnMiKTsKQEAgLTM2Myw3ICszNjksNyBAQCB2b2lkIEluc3BlY3RvckRh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25n
IGNhbGxJZAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAg
ICAgaWYgKG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcikgewotICAgICAgICBtX2FsdGVybmF0ZURpc3Bh
dGNoZXItPmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhjYWxsSWQsIGluX2NvbHVtbk5hbWVz
LmNvcHlSZWYoKSwgaW5fbm90ZXMsIGluX3RpbWVzdGFtcCwgaW5fdmFsdWVzLmNvcHlSZWYoKSwg
aW5fcGF5bG9hZC5jb3B5UmVmKCksIGluX2RhdGFiYXNlSWQsIGluX3NxbEVycm9yLmNvcHlSZWYo
KSwgaW5fc2NyZWVuQ29sb3IsIGluX3ByaW50Q29sb3IpOworICAgICAgICBtX2FsdGVybmF0ZURp
c3BhdGNoZXItPmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhjYWxsSWQsIGluX2NvbHVtbk5h
bWVzLmNvcHlSZWYoKSwgaW5fbm90ZXMsIGluX3RpbWVzdGFtcCwgaW5fdmFsdWVzLmNvcHlSZWYo
KSwgaW5fcGF5bG9hZC5jb3B5UmVmKCksIGluX2RhdGFiYXNlSWQsIGluX3NxbEVycm9yLmNvcHlS
ZWYoKSwgaW5fc2NyZWVuQ29sb3IsIGluX2FsdGVybmF0ZUNvbG9ycy5jb3B5UmVmKCksIGluX3By
aW50Q29sb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCkBAIC0zNzgsOCArMzg0
LDkgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlTm9P
cHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSWQKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpE
YXRhYmFzZTo6RGF0YWJhc2VJZCBvdXRfZGF0YWJhc2VJZDsKICAgICBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBvdXRfc3FsRXJyb3I7CiAgICAgSW5zcGVjdG9y
OjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMgb3V0X3NjcmVlbkNvbG9yOworICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBvdXRfYWx0
ZXJuYXRlQ29sb3JzOwogICAgIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyOjpQcmludENvbG9yIG91dF9wcmludENvbG9yOwotICAgIG1fYWdlbnQtPmV4ZWN1dGVOb09w
dGlvbmFsUGFyYW1ldGVycyhlcnJvciwgaW5fY29sdW1uTmFtZXMuY29weVJlZigpLCBpbl9ub3Rl
cywgaW5fdGltZXN0YW1wLCBpbl92YWx1ZXMuY29weVJlZigpLCBpbl9wYXlsb2FkLmNvcHlSZWYo
KSwgaW5fZGF0YWJhc2VJZCwgaW5fc3FsRXJyb3IuY29weVJlZigpLCBpbl9zY3JlZW5Db2xvciwg
aW5fcHJpbnRDb2xvciwgb3V0X2NvbHVtbk5hbWVzLCAmb3V0X25vdGVzLCAmb3V0X3RpbWVzdGFt
cCwgb3V0X3ZhbHVlcywgJm91dF9wYXlsb2FkLCAmb3V0X2RhdGFiYXNlSWQsIG91dF9zcWxFcnJv
ciwgJm91dF9zY3JlZW5Db2xvciwgJm91dF9wcmludENvbG9yKTsKKyAgICBtX2FnZW50LT5leGVj
dXRlTm9PcHRpb25hbFBhcmFtZXRlcnMoZXJyb3IsIGluX2NvbHVtbk5hbWVzLmNvcHlSZWYoKSwg
aW5fbm90ZXMsIGluX3RpbWVzdGFtcCwgaW5fdmFsdWVzLmNvcHlSZWYoKSwgaW5fcGF5bG9hZC5j
b3B5UmVmKCksIGluX2RhdGFiYXNlSWQsIGluX3NxbEVycm9yLmNvcHlSZWYoKSwgaW5fc2NyZWVu
Q29sb3IsIGluX2FsdGVybmF0ZUNvbG9ycy5jb3B5UmVmKCksIGluX3ByaW50Q29sb3IsIG91dF9j
b2x1bW5OYW1lcywgJm91dF9ub3RlcywgJm91dF90aW1lc3RhbXAsIG91dF92YWx1ZXMsICZvdXRf
cGF5bG9hZCwgJm91dF9kYXRhYmFzZUlkLCBvdXRfc3FsRXJyb3IsICZvdXRfc2NyZWVuQ29sb3Is
IG91dF9hbHRlcm5hdGVDb2xvcnMsICZvdXRfcHJpbnRDb2xvcik7CiAKICAgICBpZiAoIWVycm9y
Lmxlbmd0aCgpKSB7CiAgICAgICAgIHJlc3VsdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjb2x1
bW5OYW1lcyIpLCBvdXRfY29sdW1uTmFtZXMpOwpAQCAtMzkwLDYgKzM5Nyw3IEBAIHZvaWQgSW5z
cGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0
ZXJzKGxvbmcgY2FsbElkCiAgICAgICAgIHJlc3VsdC0+c2V0SW50ZWdlcihBU0NJSUxpdGVyYWwo
ImRhdGFiYXNlSWQiKSwgb3V0X2RhdGFiYXNlSWQpOwogICAgICAgICByZXN1bHQtPnNldE9iamVj
dChBU0NJSUxpdGVyYWwoInNxbEVycm9yIiksIG91dF9zcWxFcnJvcik7CiAgICAgICAgIHJlc3Vs
dC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2NyZWVuQ29sb3IiKSwgSW5zcGVjdG9yOjpQcm90
b2NvbDo6Z2V0RW51bUNvbnN0YW50VmFsdWUob3V0X3NjcmVlbkNvbG9yKSk7CisgICAgICAgIHJl
c3VsdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJhbHRlcm5hdGVDb2xvcnMiKSwgb3V0X2FsdGVy
bmF0ZUNvbG9ycyk7CiAgICAgICAgIHJlc3VsdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJp
bnRDb2xvciIpLCBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShvdXRf
cHJpbnRDb2xvcikpOwogICAgIH0KICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5zZW5kUmVzcG9u
c2UoY2FsbElkLCBXVEY6Om1vdmUocmVzdWx0KSwgZXJyb3IpOwpAQCAtNTU2LDYgKzU2NCw4IEBA
IGVudW0gY2xhc3MgUHJpbWFyeUNvbG9yczsKIG5hbWVzcGFjZSBEYXRhYmFzZSB7CiAvKiBVbmlx
dWUgaWRlbnRpZmllciBvZiBEYXRhYmFzZSBvYmplY3QuICovCiB0eXBlZGVmIGludCBEYXRhYmFz
ZUlkOworCit0eXBlZGVmIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPiBDb2xvckxpc3Q7CiB9IC8vIERhdGFiYXNl
CiAvLyBFbmQgb2YgdHlwZWRlZnMuCiAKQEAgLTc1OSw4ICs3NjksOCBAQCBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIGNsYXNzIE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyIGZp
bmFsIDogcHVibGljIEFsdGVybmF0ZUluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIg
ewogcHVibGljOgogICAgIE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKGlk
PFJXSVByb3RvY29sRGF0YWJhc2VEb21haW5IYW5kbGVyPiBoYW5kbGVyKSB7IG1fZGVsZWdhdGUg
PSBoYW5kbGVyOyB9Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRl
cnMobG9uZyBjYWxsSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYm
IGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIGluX25vdGVzLCBjb25zdCBkb3VibGUqIGlu
X3RpbWVzdGFtcCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGlu
X3ZhbHVlcywgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogaW5fcGF5bG9hZCwgY29u
c3QgaW50KiBpbl9kYXRhYmFzZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+JiYgaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyogaW5fc2NyZWVuQ29sb3IsIGNvbnN0
IFN0cmluZyogaW5fcHJpbnRDb2xvcikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1
dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yQXJyYXk+JiYgaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgaW5fbm90
ZXMsIGRvdWJsZSBpbl90aW1lc3RhbXAsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4mJiBpbl92YWx1ZXMsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUgaW5fcGF5bG9h
ZCwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4mJiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nJiBpbl9zY3JlZW5Db2xvciwgY29uc3Qg
U3RyaW5nJiBpbl9wcmludENvbG9yKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0
ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yQXJyYXk+JiYgaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyogaW5fbm90
ZXMsIGNvbnN0IGRvdWJsZSogaW5fdGltZXN0YW1wLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q+JiYgaW5fdmFsdWVzLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvclZh
bHVlKiBpbl9wYXlsb2FkLCBjb25zdCBpbnQqIGluX2RhdGFiYXNlSWQsIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nKiBp
bl9zY3JlZW5Db2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYg
aW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcqIGluX3ByaW50Q29sb3IpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxs
SWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIGluX2NvbHVtbk5h
bWVzLCBjb25zdCBTdHJpbmcmIGluX25vdGVzLCBkb3VibGUgaW5fdGltZXN0YW1wLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5fdmFsdWVzLCBJbnNwZWN0b3I6
Okluc3BlY3RvclZhbHVlIGluX3BheWxvYWQsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmlu
ZyYgaW5fc2NyZWVuQ29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5
PiYmIGluX2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBpbl9wcmludENvbG9yKSBvdmVy
cmlkZTsKIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPGlkPFJXSVByb3RvY29sRGF0YWJhc2VEb21h
aW5IYW5kbGVyPj4gbV9kZWxlZ2F0ZTsKIH07CkBAIC05MzksMTkgKzk0OSwyMCBAQCBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7
CiAKLXZvaWQgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVB
bGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3RvckFycmF5PiYmIGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIGluX25vdGVz
LCBjb25zdCBkb3VibGUqIGluX3RpbWVzdGFtcCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiYmIGluX3ZhbHVlcywgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1
ZSogaW5fcGF5bG9hZCwgY29uc3QgaW50KiBpbl9kYXRhYmFzZUlkLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyogaW5f
c2NyZWVuQ29sb3IsIGNvbnN0IFN0cmluZyogaW5fcHJpbnRDb2xvcikKK3ZvaWQgT2JqQ0luc3Bl
Y3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRl
cnMobG9uZyBjYWxsSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYm
IGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIGluX25vdGVzLCBjb25zdCBkb3VibGUqIGlu
X3RpbWVzdGFtcCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGlu
X3ZhbHVlcywgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogaW5fcGF5bG9hZCwgY29u
c3QgaW50KiBpbl9kYXRhYmFzZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+JiYgaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyogaW5fc2NyZWVuQ29sb3IsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIGluX2FsdGVybmF0ZUNvbG9ycywg
Y29uc3QgU3RyaW5nKiBpbl9wcmludENvbG9yKQogewogICAgIGlkIGVycm9yQ2FsbGJhY2sgPSBe
KE5TU3RyaW5nICplcnJvcikgewogICAgICAgICBiYWNrZW5kRGlzcGF0Y2hlcigpLT5zZW5kUmVz
cG9uc2UoY2FsbElkLCBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpLCBlcnJvcik7CiAgICAgfTsK
IAotICAgIGlkIHN1Y2Nlc3NDYWxsYmFjayA9IF4oTlNBcnJheS8qPE5TU3RyaW5nPiovICoqY29s
dW1uTmFtZXMsIE5TU3RyaW5nICoqbm90ZXMsIGRvdWJsZSAqdGltZXN0YW1wLCBSV0lQcm90b2Nv
bEpTT05PYmplY3QgKip2YWx1ZXMsIFJXSVByb3RvY29sSlNPTk9iamVjdCAqKnBheWxvYWQsIGlu
dCAqZGF0YWJhc2VJZCwgUldJUHJvdG9jb2xEYXRhYmFzZUVycm9yICoqc3FsRXJyb3IsIFJXSVBy
b3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzICpzY3JlZW5Db2xvciwgUldJUHJvdG9jb2xEYXRh
YmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yICpwcmludENvbG9yKSB7
CisgICAgaWQgc3VjY2Vzc0NhbGxiYWNrID0gXihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKipjb2x1
bW5OYW1lcywgTlNTdHJpbmcgKipub3RlcywgZG91YmxlICp0aW1lc3RhbXAsIFJXSVByb3RvY29s
SlNPTk9iamVjdCAqKnZhbHVlcywgUldJUHJvdG9jb2xKU09OT2JqZWN0ICoqcGF5bG9hZCwgaW50
ICpkYXRhYmFzZUlkLCBSV0lQcm90b2NvbERhdGFiYXNlRXJyb3IgKipzcWxFcnJvciwgUldJUHJv
dG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgKnNjcmVlbkNvbG9yLCBOU0FycmF5Lyo8TlNTdHJp
bmc+Ki8gKiphbHRlcm5hdGVDb2xvcnMsIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0
aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvciAqcHJpbnRDb2xvcikgewogICAgICAgICBSZWY8SW5z
cGVjdG9yT2JqZWN0PiByZXN1bHRPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwog
ICAgICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9PUFRJT05BTF9QQVJBTUVURVIoY29sdW1u
TmFtZXMsIEAiY29sdW1uTmFtZXMiKTsKICAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURf
T1BUSU9OQUxfUEFSQU1FVEVSKG5vdGVzLCBAIm5vdGVzIik7CiAgICAgICAgIFRIUk9XX0VYQ0VQ
VElPTl9GT1JfQkFEX09QVElPTkFMX1BBUkFNRVRFUih2YWx1ZXMsIEAidmFsdWVzIik7CiAgICAg
ICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX09QVElPTkFMX1BBUkFNRVRFUihwYXlsb2FkLCBA
InBheWxvYWQiKTsKICAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfT1BUSU9OQUxfUEFS
QU1FVEVSKHNxbEVycm9yLCBAInNxbEVycm9yIik7CisgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9G
T1JfQkFEX09QVElPTkFMX1BBUkFNRVRFUihhbHRlcm5hdGVDb2xvcnMsIEAiYWx0ZXJuYXRlQ29s
b3JzIik7CiAgICAgICAgIGlmIChjb2x1bW5OYW1lcykKICAgICAgICAgICAgIHJlc3VsdE9iamVj
dC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1lcyIpLCBpbnNwZWN0b3JTdHJpbmdB
cnJheSgqY29sdW1uTmFtZXMpKTsKICAgICAgICAgaWYgKG5vdGVzKQpAQCAtOTY4LDYgKzk3OSw4
IEBAIHZvaWQgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVB
bGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjCiAgICAgICAgICAgICByZXN1bHRPYmplY3QtPnNl
dE9iamVjdChBU0NJSUxpdGVyYWwoInNxbEVycm9yIiksIFsqc3FsRXJyb3IgdG9JbnNwZWN0b3JP
YmplY3RdKTsKICAgICAgICAgaWYgKHNjcmVlbkNvbG9yKQogICAgICAgICAgICAgcmVzdWx0T2Jq
ZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzY3JlZW5Db2xvciIpLCB0b1Byb3RvY29sU3Ry
aW5nKCpzY3JlZW5Db2xvcikpOworICAgICAgICBpZiAoYWx0ZXJuYXRlQ29sb3JzKQorICAgICAg
ICAgICAgcmVzdWx0T2JqZWN0LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImFsdGVybmF0ZUNvbG9y
cyIpLCBpbnNwZWN0b3JTdHJpbmdBcnJheSgqYWx0ZXJuYXRlQ29sb3JzKSk7CiAgICAgICAgIGlm
IChwcmludENvbG9yKQogICAgICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlM
aXRlcmFsKCJwcmludENvbG9yIiksIHRvUHJvdG9jb2xTdHJpbmcoKnByaW50Q29sb3IpKTsKICAg
ICAgICAgYmFja2VuZERpc3BhdGNoZXIoKS0+c2VuZFJlc3BvbnNlKGNhbGxJZCwgV1RGOjptb3Zl
KHJlc3VsdE9iamVjdCksIFN0cmluZygpKTsKQEAgLTk5NywyNiArMTAxMCwzMCBAQCB2b2lkIE9i
akNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlQWxsT3B0aW9uYWxQ
YXJhbWV0ZXJzKGxvbmcgYwogICAgIFJXSVByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzIG9f
aW5fc2NyZWVuQ29sb3I7CiAgICAgaWYgKGluX3NjcmVlbkNvbG9yKQogICAgICAgICBvX2luX3Nj
cmVlbkNvbG9yID0gZnJvbVByb3RvY29sU3RyaW5nPFJXSVByb3RvY29sRGF0YWJhc2VQcmltYXJ5
Q29sb3JzPigqaW5fc2NyZWVuQ29sb3IpOworICAgIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqb19p
bl9hbHRlcm5hdGVDb2xvcnM7CisgICAgaWYgKGluX2FsdGVybmF0ZUNvbG9ycykKKyAgICAgICAg
b19pbl9hbHRlcm5hdGVDb2xvcnMgPSBvYmpjU3RyaW5nQXJyYXkoaW5fYWx0ZXJuYXRlQ29sb3Jz
LmNvcHlSZWYoKSk7CiAgICAgUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBh
cmFtZXRlcnNQcmludENvbG9yIG9faW5fcHJpbnRDb2xvcjsKICAgICBpZiAoaW5fcHJpbnRDb2xv
cikKICAgICAgICAgb19pbl9wcmludENvbG9yID0gZnJvbVByb3RvY29sU3RyaW5nPFJXSVByb3Rv
Y29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvcj4oKmluX3By
aW50Q29sb3IpOwogCi0gICAgW21fZGVsZWdhdGUgZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVy
c1dpdGhFcnJvckNhbGxiYWNrOmVycm9yQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrOnN1Y2Nlc3ND
YWxsYmFjayBjb2x1bW5OYW1lczooaW5fY29sdW1uTmFtZXMgPyAmb19pbl9jb2x1bW5OYW1lcyA6
IG5pbCkgbm90ZXM6KGluX25vdGVzID8gJm9faW5fbm90ZXMgOiBuaWwpIHRpbWVzdGFtcDooaW5f
dGltZXN0YW1wID8gJm9faW5fdGltZXN0YW1wIDogbmlsKSB2YWx1ZXM6KGluX3ZhbHVlcyA/ICZv
X2luX3ZhbHVlcyA6IG5pbCkgcGF5bG9hZDooaW5fcGF5bG9hZCA/ICZvX2luX3BheWxvYWQgOiBu
aWwpIGRhdGFiYXNlSWQ6KGluX2RhdGFiYXNlSWQgPyAmb19pbl9kYXRhYmFzZUlkIDogbmlsKSBz
cWxFcnJvcjooaW5fc3FsRXJyb3IgPyAmb19pbl9zcWxFcnJvciA6IG5pbCkgc2NyZWVuQ29sb3I6
KGluX3NjcmVlbkNvbG9yID8gJm9faW5fc2NyZWVuQ29sb3IgOiBuaWwpIHByaW50Q29sb3I6KGlu
X3ByaW50Q29sb3IgPyAmb19pbl9wcmludENvbG9yIDogbmlsKV07CisgICAgW21fZGVsZWdhdGUg
ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1dpdGhFcnJvckNhbGxiYWNrOmVycm9yQ2FsbGJh
Y2sgc3VjY2Vzc0NhbGxiYWNrOnN1Y2Nlc3NDYWxsYmFjayBjb2x1bW5OYW1lczooaW5fY29sdW1u
TmFtZXMgPyAmb19pbl9jb2x1bW5OYW1lcyA6IG5pbCkgbm90ZXM6KGluX25vdGVzID8gJm9faW5f
bm90ZXMgOiBuaWwpIHRpbWVzdGFtcDooaW5fdGltZXN0YW1wID8gJm9faW5fdGltZXN0YW1wIDog
bmlsKSB2YWx1ZXM6KGluX3ZhbHVlcyA/ICZvX2luX3ZhbHVlcyA6IG5pbCkgcGF5bG9hZDooaW5f
cGF5bG9hZCA/ICZvX2luX3BheWxvYWQgOiBuaWwpIGRhdGFiYXNlSWQ6KGluX2RhdGFiYXNlSWQg
PyAmb19pbl9kYXRhYmFzZUlkIDogbmlsKSBzcWxFcnJvcjooaW5fc3FsRXJyb3IgPyAmb19pbl9z
cWxFcnJvciA6IG5pbCkgc2NyZWVuQ29sb3I6KGluX3NjcmVlbkNvbG9yID8gJm9faW5fc2NyZWVu
Q29sb3IgOiBuaWwpIGFsdGVybmF0ZUNvbG9yczooaW5fYWx0ZXJuYXRlQ29sb3JzID8gJm9faW5f
YWx0ZXJuYXRlQ29sb3JzIDogbmlsKSBwcmludENvbG9yOihpbl9wcmludENvbG9yID8gJm9faW5f
cHJpbnRDb2xvciA6IG5pbCldOwogfQogCi12b2lkIE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVyOjpleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSWQsIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIGluX2NvbHVtbk5hbWVzLCBj
b25zdCBTdHJpbmcmIGluX25vdGVzLCBkb3VibGUgaW5fdGltZXN0YW1wLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5fdmFsdWVzLCBJbnNwZWN0b3I6Okluc3Bl
Y3RvclZhbHVlIGluX3BheWxvYWQsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgaW5f
c2NyZWVuQ29sb3IsIGNvbnN0IFN0cmluZyYgaW5fcHJpbnRDb2xvcikKK3ZvaWQgT2JqQ0luc3Bl
Y3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVy
cyhsb25nIGNhbGxJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYg
aW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgaW5fbm90ZXMsIGRvdWJsZSBpbl90aW1lc3Rh
bXAsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBpbl92YWx1ZXMs
IEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUgaW5fcGF5bG9hZCwgaW50IGluX2RhdGFiYXNlSWQs
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBpbl9zcWxFcnJvciwg
Y29uc3QgU3RyaW5nJiBpbl9zY3JlZW5Db2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yQXJyYXk+JiYgaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIGluX3ByaW50
Q29sb3IpCiB7CiAgICAgaWQgZXJyb3JDYWxsYmFjayA9IF4oTlNTdHJpbmcgKmVycm9yKSB7CiAg
ICAgICAgIGJhY2tlbmREaXNwYXRjaGVyKCktPnNlbmRSZXNwb25zZShjYWxsSWQsIEluc3BlY3Rv
ck9iamVjdDo6Y3JlYXRlKCksIGVycm9yKTsKICAgICB9OwogCi0gICAgaWQgc3VjY2Vzc0NhbGxi
YWNrID0gXihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKmNvbHVtbk5hbWVzLCBOU1N0cmluZyAqbm90
ZXMsIGRvdWJsZSB0aW1lc3RhbXAsIFJXSVByb3RvY29sSlNPTk9iamVjdCAqdmFsdWVzLCBSV0lQ
cm90b2NvbEpTT05PYmplY3QgKnBheWxvYWQsIGludCBkYXRhYmFzZUlkLCBSV0lQcm90b2NvbERh
dGFiYXNlRXJyb3IgKnNxbEVycm9yLCBSV0lQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyBz
Y3JlZW5Db2xvciwgUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVy
c1ByaW50Q29sb3IgcHJpbnRDb2xvcikgeworICAgIGlkIHN1Y2Nlc3NDYWxsYmFjayA9IF4oTlNB
cnJheS8qPE5TU3RyaW5nPiovICpjb2x1bW5OYW1lcywgTlNTdHJpbmcgKm5vdGVzLCBkb3VibGUg
dGltZXN0YW1wLCBSV0lQcm90b2NvbEpTT05PYmplY3QgKnZhbHVlcywgUldJUHJvdG9jb2xKU09O
T2JqZWN0ICpwYXlsb2FkLCBpbnQgZGF0YWJhc2VJZCwgUldJUHJvdG9jb2xEYXRhYmFzZUVycm9y
ICpzcWxFcnJvciwgUldJUHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgc2NyZWVuQ29sb3Is
IE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqYWx0ZXJuYXRlQ29sb3JzLCBSV0lQcm90b2NvbERhdGFi
YXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvciBwcmludENvbG9yKSB7CiAg
ICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdE9iamVjdCA9IEluc3BlY3Rvck9iamVj
dDo6Y3JlYXRlKCk7CiAgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUEFSQU1F
VEVSKGNvbHVtbk5hbWVzLCBAImNvbHVtbk5hbWVzIik7CiAgICAgICAgIFRIUk9XX0VYQ0VQVElP
Tl9GT1JfUkVRVUlSRURfUEFSQU1FVEVSKG5vdGVzLCBAIm5vdGVzIik7CiAgICAgICAgIFRIUk9X
X0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUEFSQU1FVEVSKHZhbHVlcywgQCJ2YWx1ZXMiKTsKICAg
ICAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QQVJBTUVURVIocGF5bG9hZCwgQCJw
YXlsb2FkIik7CiAgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUEFSQU1FVEVS
KHNxbEVycm9yLCBAInNxbEVycm9yIik7CisgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVR
VUlSRURfUEFSQU1FVEVSKGFsdGVybmF0ZUNvbG9ycywgQCJhbHRlcm5hdGVDb2xvcnMiKTsKICAg
ICAgICAgcmVzdWx0T2JqZWN0LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVzIiks
IGluc3BlY3RvclN0cmluZ0FycmF5KGNvbHVtbk5hbWVzKSk7CiAgICAgICAgIHJlc3VsdE9iamVj
dC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibm90ZXMiKSwgbm90ZXMpOwogICAgICAgICByZXN1
bHRPYmplY3QtPnNldERvdWJsZShBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCB0aW1lc3RhbXAp
OwpAQCAtMTAyNSw2ICsxMDQyLDcgQEAgdm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlcjo6ZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2EKICAgICAgICAg
cmVzdWx0T2JqZWN0LT5zZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBkYXRh
YmFzZUlkKTsKICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJz
cWxFcnJvciIpLCBbc3FsRXJyb3IgdG9JbnNwZWN0b3JPYmplY3RdKTsKICAgICAgICAgcmVzdWx0
T2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzY3JlZW5Db2xvciIpLCB0b1Byb3RvY29s
U3RyaW5nKHNjcmVlbkNvbG9yKSk7CisgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0QXJyYXkoQVND
SUlMaXRlcmFsKCJhbHRlcm5hdGVDb2xvcnMiKSwgaW5zcGVjdG9yU3RyaW5nQXJyYXkoYWx0ZXJu
YXRlQ29sb3JzKSk7CiAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJh
bCgicHJpbnRDb2xvciIpLCB0b1Byb3RvY29sU3RyaW5nKHByaW50Q29sb3IpKTsKICAgICAgICAg
YmFja2VuZERpc3BhdGNoZXIoKS0+c2VuZFJlc3BvbnNlKGNhbGxJZCwgV1RGOjptb3ZlKHJlc3Vs
dE9iamVjdCksIFN0cmluZygpKTsKICAgICB9OwpAQCAtMTAzNyw5ICsxMDU1LDEwIEBAIHZvaWQg
T2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVOb09wdGlvbmFs
UGFyYW1ldGVycyhsb25nIGNhCiAgICAgaW50IG9faW5fZGF0YWJhc2VJZCA9IGluX2RhdGFiYXNl
SWQ7CiAgICAgUldJUHJvdG9jb2xEYXRhYmFzZUVycm9yICpvX2luX3NxbEVycm9yID0gW1tbUldJ
UHJvdG9jb2xEYXRhYmFzZUVycm9yIGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVjdDppbl9z
cWxFcnJvci5jb3B5UmVmKCldIGF1dG9yZWxlYXNlXTsKICAgICBSV0lQcm90b2NvbERhdGFiYXNl
UHJpbWFyeUNvbG9ycyBvX2luX3NjcmVlbkNvbG9yID0gZnJvbVByb3RvY29sU3RyaW5nPFJXSVBy
b3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzPihpbl9zY3JlZW5Db2xvcik7CisgICAgTlNBcnJh
eS8qPE5TU3RyaW5nPiovICpvX2luX2FsdGVybmF0ZUNvbG9ycyA9IG9iamNTdHJpbmdBcnJheShp
bl9hbHRlcm5hdGVDb2xvcnMuY29weVJlZigpKTsKICAgICBSV0lQcm90b2NvbERhdGFiYXNlRXhl
Y3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvciBvX2luX3ByaW50Q29sb3IgPSBmcm9t
UHJvdG9jb2xTdHJpbmc8UldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1l
dGVyc1ByaW50Q29sb3I+KGluX3ByaW50Q29sb3IpOwogCi0gICAgW21fZGVsZWdhdGUgZXhlY3V0
ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzV2l0aEVycm9yQ2FsbGJhY2s6ZXJyb3JDYWxsYmFjayBzdWNj
ZXNzQ2FsbGJhY2s6c3VjY2Vzc0NhbGxiYWNrIGNvbHVtbk5hbWVzOm9faW5fY29sdW1uTmFtZXMg
bm90ZXM6b19pbl9ub3RlcyB0aW1lc3RhbXA6b19pbl90aW1lc3RhbXAgdmFsdWVzOm9faW5fdmFs
dWVzIHBheWxvYWQ6b19pbl9wYXlsb2FkIGRhdGFiYXNlSWQ6b19pbl9kYXRhYmFzZUlkIHNxbEVy
cm9yOm9faW5fc3FsRXJyb3Igc2NyZWVuQ29sb3I6b19pbl9zY3JlZW5Db2xvciBwcmludENvbG9y
Om9faW5fcHJpbnRDb2xvcl07CisgICAgW21fZGVsZWdhdGUgZXhlY3V0ZU5vT3B0aW9uYWxQYXJh
bWV0ZXJzV2l0aEVycm9yQ2FsbGJhY2s6ZXJyb3JDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2s6c3Vj
Y2Vzc0NhbGxiYWNrIGNvbHVtbk5hbWVzOm9faW5fY29sdW1uTmFtZXMgbm90ZXM6b19pbl9ub3Rl
cyB0aW1lc3RhbXA6b19pbl90aW1lc3RhbXAgdmFsdWVzOm9faW5fdmFsdWVzIHBheWxvYWQ6b19p
bl9wYXlsb2FkIGRhdGFiYXNlSWQ6b19pbl9kYXRhYmFzZUlkIHNxbEVycm9yOm9faW5fc3FsRXJy
b3Igc2NyZWVuQ29sb3I6b19pbl9zY3JlZW5Db2xvciBhbHRlcm5hdGVDb2xvcnM6b19pbl9hbHRl
cm5hdGVDb2xvcnMgcHJpbnRDb2xvcjpvX2luX3ByaW50Q29sb3JdOwogfQogCiAKQEAgLTEzNTks
OCArMTM3OCw4IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogCiBA
cHJvdG9jb2wgUldJUHJvdG9jb2xEYXRhYmFzZURvbWFpbkhhbmRsZXIgPE5TT2JqZWN0PgogQHJl
cXVpcmVkCi0tICh2b2lkKWV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNXaXRoRXJyb3JDYWxs
YmFjazoodm9pZCheKShOU1N0cmluZyAqZXJyb3IpKWVycm9yQ2FsbGJhY2sgc3VjY2Vzc0NhbGxi
YWNrOih2b2lkKF4pKE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKmNvbHVtbk5hbWVzLCBOU1N0cmlu
ZyAqKm5vdGVzLCBkb3VibGUgKnRpbWVzdGFtcCwgUldJUHJvdG9jb2xKU09OT2JqZWN0ICoqdmFs
dWVzLCBSV0lQcm90b2NvbEpTT05PYmplY3QgKipwYXlsb2FkLCBpbnQgKmRhdGFiYXNlSWQsIFJX
SVByb3RvY29sRGF0YWJhc2VFcnJvciAqKnNxbEVycm9yLCBSV0lQcm90b2NvbERhdGFiYXNlUHJp
bWFyeUNvbG9ycyAqc2NyZWVuQ29sb3IsIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0
aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvciAqcHJpbnRDb2xvcikpc3VjY2Vzc0NhbGxiYWNrIGNv
bHVtbk5hbWVzOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiopY29sdW1uTmFtZXMgbm90ZXM6KE5T
U3RyaW5nICoqKW5vdGVzIHRpbWVzdGFtcDooZG91YmxlICopdGltZXN0YW1wIHZhbHVlczooUldJ
UHJvdG9jb2xKU09OT2JqZWN0ICoqKXZhbHVlcyBwYXlsb2FkOihSV0lQcm90b2NvbEpTT05PYmpl
Y3QgKiopcGF5bG9hZCBkYXRhYmFzZUlkOihpbnQgKilkYXRhYmFzZUlkIHNxbEVycm9yOihSV0lQ
cm90b2NvbERhdGFiYXNlRXJyb3IgKiopc3FsRXJyb3Igc2NyZWVuQ29sb3I6KFJXSVByb3RvY29s
RGF0YWJhc2VQcmltYXJ5Q29sb3JzICopc2NyZWVuQ29sb3IgcHJpbnRDb2xvcjooUldJUHJvdG9j
b2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yICopcHJpbnRD
b2xvcjsKLS0gKHZvaWQpZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzV2l0aEVycm9yQ2FsbGJh
Y2s6KHZvaWQoXikoTlNTdHJpbmcgKmVycm9yKSllcnJvckNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFj
azoodm9pZCheKShOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKmNvbHVtbk5hbWVzLCBOU1N0cmluZyAq
bm90ZXMsIGRvdWJsZSB0aW1lc3RhbXAsIFJXSVByb3RvY29sSlNPTk9iamVjdCAqdmFsdWVzLCBS
V0lQcm90b2NvbEpTT05PYmplY3QgKnBheWxvYWQsIGludCBkYXRhYmFzZUlkLCBSV0lQcm90b2Nv
bERhdGFiYXNlRXJyb3IgKnNxbEVycm9yLCBSV0lQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9y
cyBzY3JlZW5Db2xvciwgUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1l
dGVyc1ByaW50Q29sb3IgcHJpbnRDb2xvcikpc3VjY2Vzc0NhbGxiYWNrIGNvbHVtbk5hbWVzOihO
U0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiljb2x1bW5OYW1lcyBub3RlczooTlNTdHJpbmcgKilub3Rl
cyB0aW1lc3RhbXA6KGRvdWJsZSl0aW1lc3RhbXAgdmFsdWVzOihSV0lQcm90b2NvbEpTT05PYmpl
Y3QgKil2YWx1ZXMgcGF5bG9hZDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopcGF5bG9hZCBkYXRh
YmFzZUlkOihpbnQpZGF0YWJhc2VJZCBzcWxFcnJvcjooUldJUHJvdG9jb2xEYXRhYmFzZUVycm9y
ICopc3FsRXJyb3Igc2NyZWVuQ29sb3I6KFJXSVByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3Jz
KXNjcmVlbkNvbG9yIHByaW50Q29sb3I6KFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRp
b25hbFBhcmFtZXRlcnNQcmludENvbG9yKXByaW50Q29sb3I7CistICh2b2lkKWV4ZWN1dGVBbGxP
cHRpb25hbFBhcmFtZXRlcnNXaXRoRXJyb3JDYWxsYmFjazoodm9pZCheKShOU1N0cmluZyAqZXJy
b3IpKWVycm9yQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrOih2b2lkKF4pKE5TQXJyYXkvKjxOU1N0
cmluZz4qLyAqKmNvbHVtbk5hbWVzLCBOU1N0cmluZyAqKm5vdGVzLCBkb3VibGUgKnRpbWVzdGFt
cCwgUldJUHJvdG9jb2xKU09OT2JqZWN0ICoqdmFsdWVzLCBSV0lQcm90b2NvbEpTT05PYmplY3Qg
KipwYXlsb2FkLCBpbnQgKmRhdGFiYXNlSWQsIFJXSVByb3RvY29sRGF0YWJhc2VFcnJvciAqKnNx
bEVycm9yLCBSV0lQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyAqc2NyZWVuQ29sb3IsIE5T
QXJyYXkvKjxOU1N0cmluZz4qLyAqKmFsdGVybmF0ZUNvbG9ycywgUldJUHJvdG9jb2xEYXRhYmFz
ZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yICpwcmludENvbG9yKSlzdWNj
ZXNzQ2FsbGJhY2sgY29sdW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKiljb2x1bW5O
YW1lcyBub3RlczooTlNTdHJpbmcgKiopbm90ZXMgdGltZXN0YW1wOihkb3VibGUgKil0aW1lc3Rh
bXAgdmFsdWVzOihSV0lQcm90b2NvbEpTT05PYmplY3QgKiopdmFsdWVzIHBheWxvYWQ6KFJXSVBy
b3RvY29sSlNPTk9iamVjdCAqKilwYXlsb2FkIGRhdGFiYXNlSWQ6KGludCAqKWRhdGFiYXNlSWQg
c3FsRXJyb3I6KFJXSVByb3RvY29sRGF0YWJhc2VFcnJvciAqKilzcWxFcnJvciBzY3JlZW5Db2xv
cjooUldJUHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgKilzY3JlZW5Db2xvciBhbHRlcm5h
dGVDb2xvcnM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKilhbHRlcm5hdGVDb2xvcnMgcHJpbnRD
b2xvcjooUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmlu
dENvbG9yICopcHJpbnRDb2xvcjsKKy0gKHZvaWQpZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJz
V2l0aEVycm9yQ2FsbGJhY2s6KHZvaWQoXikoTlNTdHJpbmcgKmVycm9yKSllcnJvckNhbGxiYWNr
IHN1Y2Nlc3NDYWxsYmFjazoodm9pZCheKShOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKmNvbHVtbk5h
bWVzLCBOU1N0cmluZyAqbm90ZXMsIGRvdWJsZSB0aW1lc3RhbXAsIFJXSVByb3RvY29sSlNPTk9i
amVjdCAqdmFsdWVzLCBSV0lQcm90b2NvbEpTT05PYmplY3QgKnBheWxvYWQsIGludCBkYXRhYmFz
ZUlkLCBSV0lQcm90b2NvbERhdGFiYXNlRXJyb3IgKnNxbEVycm9yLCBSV0lQcm90b2NvbERhdGFi
YXNlUHJpbWFyeUNvbG9ycyBzY3JlZW5Db2xvciwgTlNBcnJheS8qPE5TU3RyaW5nPiovICphbHRl
cm5hdGVDb2xvcnMsIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRl
cnNQcmludENvbG9yIHByaW50Q29sb3IpKXN1Y2Nlc3NDYWxsYmFjayBjb2x1bW5OYW1lczooTlNB
cnJheS8qPE5TU3RyaW5nPiovICopY29sdW1uTmFtZXMgbm90ZXM6KE5TU3RyaW5nICopbm90ZXMg
dGltZXN0YW1wOihkb3VibGUpdGltZXN0YW1wIHZhbHVlczooUldJUHJvdG9jb2xKU09OT2JqZWN0
ICopdmFsdWVzIHBheWxvYWQ6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXBheWxvYWQgZGF0YWJh
c2VJZDooaW50KWRhdGFiYXNlSWQgc3FsRXJyb3I6KFJXSVByb3RvY29sRGF0YWJhc2VFcnJvciAq
KXNxbEVycm9yIHNjcmVlbkNvbG9yOihSV0lQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycylz
Y3JlZW5Db2xvciBhbHRlcm5hdGVDb2xvcnM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKWFsdGVy
bmF0ZUNvbG9ycyBwcmludENvbG9yOihSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9u
YWxQYXJhbWV0ZXJzUHJpbnRDb2xvcilwcmludENvbG9yOwogQGVuZAogCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9l
dmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9w
dGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggZTQ2ZTIyNjdmNzk3OTVlOWE2MTlm
M2EwMGFjMmU3MGE2MTg4YmNlNS4uZDY2ZWQxMmRiY2FmYTkyYTAyYzU4NjczMzk1Njc1ZTFlNDQ5
YmEzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1
bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKQEAgLTkw
LDggKzkwLDggQEAgcHJpdmF0ZToKIAogLy8gRGF0YWJhc2UuCiBJbnNwZWN0b3JCYWNrZW5kLnJl
Z2lzdGVyRGF0YWJhc2VEaXNwYXRjaGVyID0gSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckRvbWFp
bkRpc3BhdGNoZXIuYmluZChJbnNwZWN0b3JCYWNrZW5kLCAiRGF0YWJhc2UiKTsKLUluc3BlY3Rv
ckJhY2tlbmQucmVnaXN0ZXJFdmVudCgiRGF0YWJhc2UuZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1l
dGVycyIsIFsiY29sdW1uTmFtZXMiLCAibm90ZXMiLCAidGltZXN0YW1wIiwgInZhbHVlcyIsICJw
YXlsb2FkIiwgInNxbEVycm9yIiwgInNjcmVlbkNvbG9yIiwgInByaW50Q29sb3IiXSk7Ci1JbnNw
ZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRXZlbnQoIkRhdGFiYXNlLmRpZEV4ZWN1dGVOb09wdGlvbmFs
UGFyYW1ldGVycyIsIFsiY29sdW1uTmFtZXMiLCAibm90ZXMiLCAidGltZXN0YW1wIiwgInZhbHVl
cyIsICJwYXlsb2FkIiwgInNxbEVycm9yIiwgInNjcmVlbkNvbG9yIiwgInByaW50Q29sb3IiXSk7
CitJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRXZlbnQoIkRhdGFiYXNlLmRpZEV4ZWN1dGVPcHRp
b25hbFBhcmFtZXRlcnMiLCBbImNvbHVtbk5hbWVzIiwgIm5vdGVzIiwgInRpbWVzdGFtcCIsICJ2
YWx1ZXMiLCAicGF5bG9hZCIsICJzcWxFcnJvciIsICJzY3JlZW5Db2xvciIsICJhbHRlcm5hdGVD
b2xvcnMiLCAicHJpbnRDb2xvciJdKTsKK0luc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJFdmVudCgi
RGF0YWJhc2UuZGlkRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzIiwgWyJjb2x1bW5OYW1lcyIs
ICJub3RlcyIsICJ0aW1lc3RhbXAiLCAidmFsdWVzIiwgInBheWxvYWQiLCAic3FsRXJyb3IiLCAi
c2NyZWVuQ29sb3IiLCAiYWx0ZXJuYXRlQ29sb3JzIiwgInByaW50Q29sb3IiXSk7CiBJbnNwZWN0
b3JCYWNrZW5kLmFjdGl2YXRlRG9tYWluKCJEYXRhYmFzZSIpOwogIyMjIEVuZCBGaWxlOiBJbnNw
ZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMKIApAQCAtMjUwLDggKzI1MCw4IEBAIG5hbWVzcGFjZSBJ
bnNwZWN0b3IgewogY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXIgewog
cHVibGljOgogICAgIEluc3BlY3RvckRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyKEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSA6IG1faW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgeyB9Ci0gICAgdm9pZCBk
aWRFeGVjdXRlT3B0aW9uYWxQYXJhbWV0ZXJzKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxTdHJpbmc+PiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nKiBjb25zdCBub3RlcywgY29u
c3QgZG91YmxlKiBjb25zdCB0aW1lc3RhbXAsIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4gdmFsdWVzLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gcGF5bG9hZCwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3IsIGNv
bnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBjb25zdCBz
Y3JlZW5Db2xvciwgY29uc3QgU3RyaW5nKiBjb25zdCBwcmludENvbG9yKTsKLSAgICB2b2lkIGRp
ZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8U3RyaW5nPj4gY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgbm90ZXMsIGRvdWJsZSB0
aW1lc3RhbXAsIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gdmFsdWVzLCBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gcGF5bG9hZCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3IsIGNvbnN0IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzJiBzY3JlZW5Db2xvciwgY29uc3QgU3RyaW5n
JiBwcmludENvbG9yKTsKKyAgICB2b2lkIGRpZEV4ZWN1dGVPcHRpb25hbFBhcmFtZXRlcnMoUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGNvbHVtbk5hbWVzLCBjb25z
dCBTdHJpbmcqIGNvbnN0IG5vdGVzLCBjb25zdCBkb3VibGUqIGNvbnN0IHRpbWVzdGFtcCwgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZXMsIFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3RvclZhbHVlPiBwYXlsb2FkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0
YWJhc2U6OkVycm9yPiBzcWxFcnJvciwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJh
c2U6OlByaW1hcnlDb2xvcnMqIGNvbnN0IHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4gYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJp
bmcqIGNvbnN0IHByaW50Q29sb3IpOworICAgIHZvaWQgZGlkRXhlY3V0ZU5vT3B0aW9uYWxQYXJh
bWV0ZXJzKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBjb2x1bW5O
YW1lcywgY29uc3QgU3RyaW5nJiBub3RlcywgZG91YmxlIHRpbWVzdGFtcCwgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZXMsIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
clZhbHVlPiBwYXlsb2FkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVy
cm9yPiBzcWxFcnJvciwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1h
cnlDb2xvcnMmIHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJh
c2U6OkNvbG9yTGlzdD4gYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIHByaW50Q29sb3Ip
OwogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsOwogfTsKQEAgLTMwMyw3ICszMDMsNyBAQCBwcml2YXRlOgogCiBuYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hl
cjo6ZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8U3RyaW5nPj4gY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyogY29uc3Qgbm90ZXMs
IGNvbnN0IGRvdWJsZSogY29uc3QgdGltZXN0YW1wLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+IHZhbHVlcywgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHBheWxv
YWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IHNxbEVycm9y
LCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogY29u
c3Qgc2NyZWVuQ29sb3IsIGNvbnN0IFN0cmluZyogY29uc3QgcHJpbnRDb2xvcikKK3ZvaWQgSW5z
cGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI6OmRpZEV4ZWN1dGVPcHRpb25hbFBhcmFt
ZXRlcnMoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGNvbHVtbk5h
bWVzLCBjb25zdCBTdHJpbmcqIGNvbnN0IG5vdGVzLCBjb25zdCBkb3VibGUqIGNvbnN0IHRpbWVz
dGFtcCwgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZXMsIFJlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiBwYXlsb2FkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBzcWxFcnJvciwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMqIGNvbnN0IHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4gYWx0ZXJuYXRlQ29sb3JzLCBj
b25zdCBTdHJpbmcqIGNvbnN0IHByaW50Q29sb3IpCiB7CiAgICAgUmVmPEluc3BlY3Rvck9iamVj
dD4ganNvbk1lc3NhZ2UgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGpzb25NZXNz
YWdlLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJtZXRob2QiKSwgQVNDSUlMaXRlcmFsKCJEYXRh
YmFzZS5kaWRFeGVjdXRlT3B0aW9uYWxQYXJhbWV0ZXJzIikpOwpAQCAtMzIyLDYgKzMyMiw4IEBA
IHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI6OmRpZEV4ZWN1dGVPcHRp
b25hbFBhcmFtZXRlcnMoUmVmUHRyPEluCiAgICAgICAgIHBhcmFtc09iamVjdC0+c2V0T2JqZWN0
KEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgc3FsRXJyb3IpOwogICAgIGlmIChzY3JlZW5Db2xv
cikKICAgICAgICAgcGFyYW1zT2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzY3JlZW5D
b2xvciIpLCAqc2NyZWVuQ29sb3IpOworICAgIGlmIChhbHRlcm5hdGVDb2xvcnMpCisgICAgICAg
IHBhcmFtc09iamVjdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJhbHRlcm5hdGVDb2xvcnMiKSwg
YWx0ZXJuYXRlQ29sb3JzKTsKICAgICBpZiAocHJpbnRDb2xvcikKICAgICAgICAgcGFyYW1zT2Jq
ZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmludENvbG9yIiksICpwcmludENvbG9yKTsK
ICAgICBqc29uTWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgicGFyYW1zIiksIFdURjo6
bW92ZShwYXJhbXNPYmplY3QpKTsKQEAgLTMyOSw3ICszMzEsNyBAQCB2b2lkIEluc3BlY3RvckRh
dGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyOjpkaWRFeGVjdXRlT3B0aW9uYWxQYXJhbWV0ZXJzKFJl
ZlB0cjxJbgogICAgIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJv
bnRlbmQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JE
YXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcjo6ZGlkRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJz
KFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBjb2x1bW5OYW1lcywg
Y29uc3QgU3RyaW5nJiBub3RlcywgZG91YmxlIHRpbWVzdGFtcCwgUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZXMsIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVl
PiBwYXlsb2FkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBz
cWxFcnJvciwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xv
cnMmIHNjcmVlbkNvbG9yLCBjb25zdCBTdHJpbmcmIHByaW50Q29sb3IpCit2b2lkIEluc3BlY3Rv
ckRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyOjpkaWRFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRl
cnMoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGNvbHVtbk5hbWVz
LCBjb25zdCBTdHJpbmcmIG5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q+IHZhbHVlcywgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFs
dWU+IHBheWxvYWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+
IHNxbEVycm9yLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNv
bG9ycyYgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6
Q29sb3JMaXN0PiBhbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgcHJpbnRDb2xvcikKIHsK
ICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBqc29uTWVzc2FnZSA9IEluc3BlY3Rvck9iamVjdDo6
Y3JlYXRlKCk7CiAgICAganNvbk1lc3NhZ2UtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm1ldGhv
ZCIpLCBBU0NJSUxpdGVyYWwoIkRhdGFiYXNlLmRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVy
cyIpKTsKQEAgLTM0MSw2ICszNDMsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlRnJvbnRlbmRE
aXNwYXRjaGVyOjpkaWRFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMoUmVmUHRyPAogICAgIHBh
cmFtc09iamVjdC0+c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksIHBheWxvYWQpOwog
ICAgIHBhcmFtc09iamVjdC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgc3Fs
RXJyb3IpOwogICAgIHBhcmFtc09iamVjdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2NyZWVu
Q29sb3IiKSwgc2NyZWVuQ29sb3IpOworICAgIHBhcmFtc09iamVjdC0+c2V0QXJyYXkoQVNDSUlM
aXRlcmFsKCJhbHRlcm5hdGVDb2xvcnMiKSwgYWx0ZXJuYXRlQ29sb3JzKTsKICAgICBwYXJhbXNP
YmplY3QtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgcHJpbnRDb2xvcik7
CiAgICAganNvbk1lc3NhZ2UtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInBhcmFtcyIpLCBXVEY6
Om1vdmUocGFyYW1zT2JqZWN0KSk7CiAKQEAgLTQxMSw2ICs0MTQsOCBAQCBuYW1lc3BhY2UgRGF0
YWJhc2UgewogdHlwZWRlZiBTdHJpbmcgRGF0YWJhc2VJZDsKIAogdHlwZWRlZiBTdHJpbmcgUHJp
bWFyeUNvbG9yczsKKwordHlwZWRlZiBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycz4gQ29sb3JMaXN0OwogfSAvLyBE
YXRhYmFzZQogLy8gRW5kIG9mIHR5cGVkZWZzLgogCkBAIC04NjgsNyArODczLDcgQEAgdXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClkaWRF
eGVjdXRlT3B0aW9uYWxQYXJhbWV0ZXJzV2l0aENvbHVtbk5hbWVzOihOU0FycmF5Lyo8TlNTdHJp
bmc+Ki8gKiopY29sdW1uTmFtZXMgbm90ZXM6KE5TU3RyaW5nICoqKW5vdGVzIHRpbWVzdGFtcDoo
ZG91YmxlICopdGltZXN0YW1wIHZhbHVlczooUldJUHJvdG9jb2xKU09OT2JqZWN0ICoqKXZhbHVl
cyBwYXlsb2FkOihSV0lQcm90b2NvbEpTT05PYmplY3QgKiopcGF5bG9hZCBzcWxFcnJvcjooUldJ
UHJvdG9jb2xEYXRhYmFzZUVycm9yICoqKXNxbEVycm9yIHNjcmVlbkNvbG9yOihOU1N0cmluZyAq
KilzY3JlZW5Db2xvciBwcmludENvbG9yOihOU1N0cmluZyAqKilwcmludENvbG9yCistICh2b2lk
KWRpZEV4ZWN1dGVPcHRpb25hbFBhcmFtZXRlcnNXaXRoQ29sdW1uTmFtZXM6KE5TQXJyYXkvKjxO
U1N0cmluZz4qLyAqKiljb2x1bW5OYW1lcyBub3RlczooTlNTdHJpbmcgKiopbm90ZXMgdGltZXN0
YW1wOihkb3VibGUgKil0aW1lc3RhbXAgdmFsdWVzOihSV0lQcm90b2NvbEpTT05PYmplY3QgKiop
dmFsdWVzIHBheWxvYWQ6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKilwYXlsb2FkIHNxbEVycm9y
OihSV0lQcm90b2NvbERhdGFiYXNlRXJyb3IgKiopc3FsRXJyb3Igc2NyZWVuQ29sb3I6KE5TU3Ry
aW5nICoqKXNjcmVlbkNvbG9yIGFsdGVybmF0ZUNvbG9yczooTlNBcnJheS8qPE5TU3RyaW5nPiov
ICoqKWFsdGVybmF0ZUNvbG9ycyBwcmludENvbG9yOihOU1N0cmluZyAqKilwcmludENvbG9yCiB7
CiAgICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBfY29udHJv
bGxlci0+ZnJvbnRlbmRDaGFubmVsKCk7CiAgICAgaWYgKCFmcm9udGVuZENoYW5uZWwpCkBAIC04
ODAsNiArODg1LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBUSFJPV19FWENF
UFRJT05fRk9SX0JBRF9PUFRJT05BTF9QQVJBTUVURVIocGF5bG9hZCwgQCJwYXlsb2FkIik7CiAg
ICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfT1BUSU9OQUxfUEFSQU1FVEVSKHNxbEVycm9yLCBA
InNxbEVycm9yIik7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfT1BUSU9OQUxfUEFSQU1F
VEVSKHNjcmVlbkNvbG9yLCBAInNjcmVlbkNvbG9yIik7CisgICAgVEhST1dfRVhDRVBUSU9OX0ZP
Ul9CQURfT1BUSU9OQUxfUEFSQU1FVEVSKGFsdGVybmF0ZUNvbG9ycywgQCJhbHRlcm5hdGVDb2xv
cnMiKTsKICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9PUFRJT05BTF9QQVJBTUVURVIocHJp
bnRDb2xvciwgQCJwcmludENvbG9yIik7CiAKICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBqc29u
TWVzc2FnZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CkBAIC04OTksMTMgKzkwNSwxNSBA
QCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgICAgICBwYXJhbXNPYmplY3QtPnNldE9i
amVjdChBU0NJSUxpdGVyYWwoInNxbEVycm9yIiksIFsoKnNxbEVycm9yKSB0b0luc3BlY3Rvck9i
amVjdF0pOwogICAgIGlmIChzY3JlZW5Db2xvcikKICAgICAgICAgcGFyYW1zT2JqZWN0LT5zZXRT
dHJpbmcoQVNDSUlMaXRlcmFsKCJzY3JlZW5Db2xvciIpLCAoKnNjcmVlbkNvbG9yKSk7CisgICAg
aWYgKGFsdGVybmF0ZUNvbG9ycykKKyAgICAgICAgcGFyYW1zT2JqZWN0LT5zZXRBcnJheShBU0NJ
SUxpdGVyYWwoImFsdGVybmF0ZUNvbG9ycyIpLCBpbnNwZWN0b3JTdHJpbmdBcnJheSgoKmFsdGVy
bmF0ZUNvbG9ycykpKTsKICAgICBpZiAocHJpbnRDb2xvcikKICAgICAgICAgcGFyYW1zT2JqZWN0
LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmludENvbG9yIiksICgqcHJpbnRDb2xvcikpOwog
ICAgIGpzb25NZXNzYWdlLT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJwYXJhbXMiKSwgV1RGOjpt
b3ZlKHBhcmFtc09iamVjdCkpOwogICAgIGZyb250ZW5kQ2hhbm5lbC0+c2VuZE1lc3NhZ2VUb0Zy
b250ZW5kKGpzb25NZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CiB9CiAKLS0gKHZvaWQpZGlkRXhl
Y3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzV2l0aENvbHVtbk5hbWVzOihOU0FycmF5Lyo8TlNTdHJp
bmc+Ki8gKiljb2x1bW5OYW1lcyBub3RlczooTlNTdHJpbmcgKilub3RlcyB0aW1lc3RhbXA6KGRv
dWJsZSl0aW1lc3RhbXAgdmFsdWVzOihSV0lQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMgcGF5
bG9hZDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopcGF5bG9hZCBzcWxFcnJvcjooUldJUHJvdG9j
b2xEYXRhYmFzZUVycm9yICopc3FsRXJyb3Igc2NyZWVuQ29sb3I6KE5TU3RyaW5nICopc2NyZWVu
Q29sb3IgcHJpbnRDb2xvcjooTlNTdHJpbmcgKilwcmludENvbG9yCistICh2b2lkKWRpZEV4ZWN1
dGVOb09wdGlvbmFsUGFyYW1ldGVyc1dpdGhDb2x1bW5OYW1lczooTlNBcnJheS8qPE5TU3RyaW5n
PiovICopY29sdW1uTmFtZXMgbm90ZXM6KE5TU3RyaW5nICopbm90ZXMgdGltZXN0YW1wOihkb3Vi
bGUpdGltZXN0YW1wIHZhbHVlczooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopdmFsdWVzIHBheWxv
YWQ6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXBheWxvYWQgc3FsRXJyb3I6KFJXSVByb3RvY29s
RGF0YWJhc2VFcnJvciAqKXNxbEVycm9yIHNjcmVlbkNvbG9yOihOU1N0cmluZyAqKXNjcmVlbkNv
bG9yIGFsdGVybmF0ZUNvbG9yczooTlNBcnJheS8qPE5TU3RyaW5nPiovICopYWx0ZXJuYXRlQ29s
b3JzIHByaW50Q29sb3I6KE5TU3RyaW5nICopcHJpbnRDb2xvcgogewogICAgIEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gX2NvbnRyb2xsZXItPmZyb250ZW5kQ2hh
bm5lbCgpOwogICAgIGlmICghZnJvbnRlbmRDaGFubmVsKQpAQCAtOTE3LDYgKzkyNSw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJF
RF9QQVJBTUVURVIocGF5bG9hZCwgQCJwYXlsb2FkIik7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZP
Ul9SRVFVSVJFRF9QQVJBTUVURVIoc3FsRXJyb3IsIEAic3FsRXJyb3IiKTsKICAgICBUSFJPV19F
WENFUFRJT05fRk9SX1JFUVVJUkVEX1BBUkFNRVRFUihzY3JlZW5Db2xvciwgQCJzY3JlZW5Db2xv
ciIpOworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUEFSQU1FVEVSKGFsdGVybmF0
ZUNvbG9ycywgQCJhbHRlcm5hdGVDb2xvcnMiKTsKICAgICBUSFJPV19FWENFUFRJT05fRk9SX1JF
UVVJUkVEX1BBUkFNRVRFUihwcmludENvbG9yLCBAInByaW50Q29sb3IiKTsKIAogICAgIFJlZjxJ
bnNwZWN0b3JPYmplY3Q+IGpzb25NZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsK
QEAgLTkyOSw2ICs5MzgsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIHBhcmFt
c09iamVjdC0+c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksIFtwYXlsb2FkIHRvSW5z
cGVjdG9yT2JqZWN0XSk7CiAgICAgcGFyYW1zT2JqZWN0LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFs
KCJzcWxFcnJvciIpLCBbc3FsRXJyb3IgdG9JbnNwZWN0b3JPYmplY3RdKTsKICAgICBwYXJhbXNP
YmplY3QtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInNjcmVlbkNvbG9yIiksIHNjcmVlbkNvbG9y
KTsKKyAgICBwYXJhbXNPYmplY3QtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiYWx0ZXJuYXRlQ29s
b3JzIiksIGluc3BlY3RvclN0cmluZ0FycmF5KGFsdGVybmF0ZUNvbG9ycykpOwogICAgIHBhcmFt
c09iamVjdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCBwcmludENvbG9y
KTsKICAgICBqc29uTWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgicGFyYW1zIiksIFdU
Rjo6bW92ZShwYXJhbXNPYmplY3QpKTsKICAgICBmcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdl
VG9Gcm9udGVuZChqc29uTWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOwpAQCAtOTkxLDggKzEwMDEs
OCBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIAogX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBAaW50ZXJmYWNlIFJXSVByb3RvY29sRGF0
YWJhc2VEb21haW5FdmVudERpc3BhdGNoZXIgOiBOU09iamVjdAotLSAodm9pZClkaWRFeGVjdXRl
T3B0aW9uYWxQYXJhbWV0ZXJzV2l0aENvbHVtbk5hbWVzOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8g
KiopY29sdW1uTmFtZXMgbm90ZXM6KE5TU3RyaW5nICoqKW5vdGVzIHRpbWVzdGFtcDooZG91Ymxl
ICopdGltZXN0YW1wIHZhbHVlczooUldJUHJvdG9jb2xKU09OT2JqZWN0ICoqKXZhbHVlcyBwYXls
b2FkOihSV0lQcm90b2NvbEpTT05PYmplY3QgKiopcGF5bG9hZCBzcWxFcnJvcjooUldJUHJvdG9j
b2xEYXRhYmFzZUVycm9yICoqKXNxbEVycm9yIHNjcmVlbkNvbG9yOihOU1N0cmluZyAqKilzY3Jl
ZW5Db2xvciBwcmludENvbG9yOihOU1N0cmluZyAqKilwcmludENvbG9yOwotLSAodm9pZClkaWRF
eGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNXaXRoQ29sdW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0
cmluZz4qLyAqKWNvbHVtbk5hbWVzIG5vdGVzOihOU1N0cmluZyAqKW5vdGVzIHRpbWVzdGFtcDoo
ZG91YmxlKXRpbWVzdGFtcCB2YWx1ZXM6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXZhbHVlcyBw
YXlsb2FkOihSV0lQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2FkIHNxbEVycm9yOihSV0lQcm90
b2NvbERhdGFiYXNlRXJyb3IgKilzcWxFcnJvciBzY3JlZW5Db2xvcjooTlNTdHJpbmcgKilzY3Jl
ZW5Db2xvciBwcmludENvbG9yOihOU1N0cmluZyAqKXByaW50Q29sb3I7CistICh2b2lkKWRpZEV4
ZWN1dGVPcHRpb25hbFBhcmFtZXRlcnNXaXRoQ29sdW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0cmlu
Zz4qLyAqKiljb2x1bW5OYW1lcyBub3RlczooTlNTdHJpbmcgKiopbm90ZXMgdGltZXN0YW1wOihk
b3VibGUgKil0aW1lc3RhbXAgdmFsdWVzOihSV0lQcm90b2NvbEpTT05PYmplY3QgKiopdmFsdWVz
IHBheWxvYWQ6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKilwYXlsb2FkIHNxbEVycm9yOihSV0lQ
cm90b2NvbERhdGFiYXNlRXJyb3IgKiopc3FsRXJyb3Igc2NyZWVuQ29sb3I6KE5TU3RyaW5nICoq
KXNjcmVlbkNvbG9yIGFsdGVybmF0ZUNvbG9yczooTlNBcnJheS8qPE5TU3RyaW5nPiovICoqKWFs
dGVybmF0ZUNvbG9ycyBwcmludENvbG9yOihOU1N0cmluZyAqKilwcmludENvbG9yOworLSAodm9p
ZClkaWRFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNXaXRoQ29sdW1uTmFtZXM6KE5TQXJyYXkv
KjxOU1N0cmluZz4qLyAqKWNvbHVtbk5hbWVzIG5vdGVzOihOU1N0cmluZyAqKW5vdGVzIHRpbWVz
dGFtcDooZG91YmxlKXRpbWVzdGFtcCB2YWx1ZXM6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXZh
bHVlcyBwYXlsb2FkOihSV0lQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2FkIHNxbEVycm9yOihS
V0lQcm90b2NvbERhdGFiYXNlRXJyb3IgKilzcWxFcnJvciBzY3JlZW5Db2xvcjooTlNTdHJpbmcg
KilzY3JlZW5Db2xvciBhbHRlcm5hdGVDb2xvcnM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKWFs
dGVybmF0ZUNvbG9ycyBwcmludENvbG9yOihOU1N0cmluZyAqKXByaW50Q29sb3I7CiBAZW5kCiAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBl
LWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQKaW5kZXggNjczM2IzN2ZiODk0M2Jh
ZjBlNjBjMjdiNjJkZjg3ZDVlOGQyMmMyNi4uZDcwZjA1YWI1MTYwM2I0MWQ0MzY2Mjc5YmQ5Y2I2
YzBhODAxMTc3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJl
c3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0CkBAIC0zNTYs
NiArMzU2LDE2IEBAIHR5cGVkZWYgaW50IEJyZWFrcG9pbnRJZDsKIAogbmFtZXNwYWNlIFJ1bnRp
bWUgewogdHlwZWRlZiBpbnQgT2JqZWN0SWQ7CisKK3R5cGVkZWYgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8aW50PiBMdWNreU51bWJlcnM7CisKK3R5cGVkZWYgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8U3RyaW5nPiBCYWJ5TmFtZXM7CisKK3R5cGVkZWYgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6T2JqZWN0SWQ+IE5ld09iamVj
dHM7CisKK3R5cGVkZWYgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZD4gT2xkT2JqZWN0czsKKwordHlwZWRlZiBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6UmVh
c29uPiBTdG9wUmVhc29uczsKIH0gLy8gUnVudGltZQogLy8gRW5kIG9mIHR5cGVkZWZzLgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRl
Y2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0CmluZGV4IGM3NzQwMzRjNDcyODEzNzM5
OGU2MDgxOGU3NGI5NzNiZTc2MTAyODguLjNhNWJmMDgzNGVkZDAxZmQ4NjQ1OWMwOTEwMmZlNGJm
Yzc1Yzk0YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVz
dWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0CkBAIC0zNTQs
NyArMzU0LDExIEBAIGNsYXNzIFBhcmFtZXRlckJ1bmRsZTsKIC8vIEVuZCBvZiBmb3J3YXJkIGRl
Y2xhcmF0aW9ucy4KIAogCi0KKy8vIFR5cGVkZWZzLgorbmFtZXNwYWNlIERhdGFiYXNlIHsKK3R5
cGVkZWYgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0
YWJhc2U6OkVycm9yPiBFcnJvckxpc3Q7Cit9IC8vIERhdGFiYXNlCisvLyBFbmQgb2YgdHlwZWRl
ZnMuCiAKIFN0cmluZyBnZXRFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSk7CiAKQEAgLTUwMyw2
ICs1MDcsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgSW5zcGVjdG9yT2JqZWN0QmFzZTo6
c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgiZXJyb3IiKSwgV1RGOjptb3ZlKHZhbHVlKSk7CiAgICAg
fQorCisgICAgdm9pZCBzZXRFcnJvckxpc3QoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRh
dGFiYXNlOjpFcnJvckxpc3Q+IHZhbHVlKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yT2JqZWN0
QmFzZTo6c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJlcnJvckxpc3QiKSwgV1RGOjptb3ZlKHZhbHVl
KSk7CisgICAgfQogfTsKIAogY2xhc3MgUGFyYW1ldGVyQnVuZGxlIDogcHVibGljIEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0QmFzZSB7CkBAIC01MTUsNyArNTI0LDggQEAgcHVibGljOgogICAg
ICAgICBWYWx1ZXNTZXQgPSAxIDw8IDMsCiAgICAgICAgIFBheWxvYWRTZXQgPSAxIDw8IDQsCiAg
ICAgICAgIEVycm9yU2V0ID0gMSA8PCA1LAotICAgICAgICBBbGxGaWVsZHNTZXQgPSAoQ29sdW1u
TmFtZXNTZXQgfCBOb3Rlc1NldCB8IFRpbWVzdGFtcFNldCB8IFZhbHVlc1NldCB8IFBheWxvYWRT
ZXQgfCBFcnJvclNldCkKKyAgICAgICAgRXJyb3JMaXN0U2V0ID0gMSA8PCA2LAorICAgICAgICBB
bGxGaWVsZHNTZXQgPSAoQ29sdW1uTmFtZXNTZXQgfCBOb3Rlc1NldCB8IFRpbWVzdGFtcFNldCB8
IFZhbHVlc1NldCB8IFBheWxvYWRTZXQgfCBFcnJvclNldCB8IEVycm9yTGlzdFNldCkKICAgICB9
OwogCiAgICAgdGVtcGxhdGU8aW50IFNUQVRFPgpAQCAtNTc4LDYgKzU4OCwxMyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXR1cm4gY2FzdFN0YXRlPEVycm9yU2V0PigpOwogICAgICAgICB9CiAK
KyAgICAgICAgQnVpbGRlcjxTVEFURSB8IEVycm9yTGlzdFNldD4mIHNldEVycm9yTGlzdChSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yTGlzdD4gdmFsdWUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKCEoU1RBVEUgJiBFcnJvckxpc3RTZXQp
LCBwcm9wZXJ0eV9lcnJvckxpc3RfYWxyZWFkeV9zZXQpOworICAgICAgICAgICAgbV9yZXN1bHQt
PnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiZXJyb3JMaXN0IiksIHZhbHVlKTsKKyAgICAgICAgICAg
IHJldHVybiBjYXN0U3RhdGU8RXJyb3JMaXN0U2V0PigpOworICAgICAgICB9CisKICAgICAgICAg
UmVmPFBhcmFtZXRlckJ1bmRsZT4gcmVsZWFzZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIENP
TVBJTEVfQVNTRVJUKFNUQVRFID09IEFsbEZpZWxkc1NldCwgcmVzdWx0X2lzX25vdF9yZWFkeSk7
CkBAIC01OTcsNiArNjE0LDcgQEAgcHVibGljOgogICAgICAqICAgICAuc2V0VmFsdWVzKC4uLikK
ICAgICAgKiAgICAgLnNldFBheWxvYWQoLi4uKQogICAgICAqICAgICAuc2V0RXJyb3IoLi4uKQor
ICAgICAqICAgICAuc2V0RXJyb3JMaXN0KC4uLikKICAgICAgKiAgICAgLnJlbGVhc2UoKTsKICAg
ICAgKi8KICAgICBzdGF0aWMgQnVpbGRlcjxOb0ZpZWxkc1NldD4gY3JlYXRlKCkKQEAgLTEyMzAs
MTcgKzEyNDgsMTkgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiAv
KiBvcHRpb25hbCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBSV0lQcm90b2NvbEpT
T05PYmplY3QgKnZhbHVlczsKIC8qIG9wdGlvbmFsICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZXRhaW4pIFJXSVByb3RvY29sSlNPTk9iamVjdCAqcGF5bG9hZDsKIC8qIG9wdGlvbmFsICovIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIFJXSVByb3RvY29sRGF0YWJhc2VFcnJvciAqZXJy
b3I7CisvKiBvcHRpb25hbCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNBcnJheS8q
PFJXSVByb3RvY29sRGF0YWJhc2VFcnJvcj4qLyAqZXJyb3JMaXN0OwogQGVuZAogCiBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIEBpbnRlcmZhY2UgUldJUHJvdG9jb2xE
YXRhYmFzZVBhcmFtZXRlckJ1bmRsZSA6IFJXSVByb3RvY29sSlNPTk9iamVjdAotLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoQ29sdW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKWNvbHVt
bk5hbWVzIG5vdGVzOihOU1N0cmluZyAqKW5vdGVzIHRpbWVzdGFtcDooZG91YmxlKXRpbWVzdGFt
cCB2YWx1ZXM6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXZhbHVlcyBwYXlsb2FkOihSV0lQcm90
b2NvbEpTT05PYmplY3QgKilwYXlsb2FkIGVycm9yOihSV0lQcm90b2NvbERhdGFiYXNlRXJyb3Ig
KillcnJvcjsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbHVtbk5hbWVzOihOU0FycmF5Lyo8
TlNTdHJpbmc+Ki8gKiljb2x1bW5OYW1lcyBub3RlczooTlNTdHJpbmcgKilub3RlcyB0aW1lc3Rh
bXA6KGRvdWJsZSl0aW1lc3RhbXAgdmFsdWVzOihSV0lQcm90b2NvbEpTT05PYmplY3QgKil2YWx1
ZXMgcGF5bG9hZDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopcGF5bG9hZCBlcnJvcjooUldJUHJv
dG9jb2xEYXRhYmFzZUVycm9yICopZXJyb3IgZXJyb3JMaXN0OihOU0FycmF5Lyo8UldJUHJvdG9j
b2xEYXRhYmFzZUVycm9yPiovICopZXJyb3JMaXN0OwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5
IChub25hdG9taWMsIGNvcHkpIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqY29sdW1uTmFtZXM7CiAv
KiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKm5vdGVz
OwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgZG91YmxlIHRp
bWVzdGFtcDsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIFJX
SVByb3RvY29sSlNPTk9iamVjdCAqdmFsdWVzOwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChu
b25hdG9taWMsIHJldGFpbikgUldJUHJvdG9jb2xKU09OT2JqZWN0ICpwYXlsb2FkOwogLyogcmVx
dWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikgUldJUHJvdG9jb2xEYXRhYmFz
ZUVycm9yICplcnJvcjsKKy8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
KSBOU0FycmF5Lyo8UldJUHJvdG9jb2xEYXRhYmFzZUVycm9yPiovICplcnJvckxpc3Q7CiBAZW5k
CiAKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQpAQCAtMTQxNiwxMSAr
MTQzNiwyMiBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIHJldHVybiAoUldJUHJv
dG9jb2xEYXRhYmFzZUVycm9yICopW3N1cGVyIG9iamVjdEZvcktleTpAImVycm9yIl07CiB9CiAK
Ky0gKHZvaWQpc2V0RXJyb3JMaXN0OihOU0FycmF5Lyo8UldJUHJvdG9jb2xEYXRhYmFzZUVycm9y
PiovICopZXJyb3JMaXN0Cit7CisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQRV9JTl9B
UlJBWShlcnJvckxpc3QsIFtSV0lQcm90b2NvbERhdGFiYXNlRXJyb3IgY2xhc3NdKTsKKyAgICBb
c3VwZXIgc2V0SW5zcGVjdG9yQXJyYXk6aW5zcGVjdG9yT2JqZWN0QXJyYXkoZXJyb3JMaXN0KSBm
b3JLZXk6QCJlcnJvckxpc3QiXTsKK30KKworLSAoTlNBcnJheS8qPFJXSVByb3RvY29sRGF0YWJh
c2VFcnJvcj4qLyAqKWVycm9yTGlzdAoreworICAgIHJldHVybiBvYmpjQXJyYXk8UldJUHJvdG9j
b2xEYXRhYmFzZUVycm9yPihbc3VwZXIgaW5zcGVjdG9yQXJyYXlGb3JLZXk6QCJlcnJvckxpc3Qi
XSk7Cit9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFJXSVByb3RvY29sRGF0YWJhc2VQYXJh
bWV0ZXJCdW5kbGUKIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29sdW1uTmFtZXM6KE5TQXJy
YXkvKjxOU1N0cmluZz4qLyAqKWNvbHVtbk5hbWVzIG5vdGVzOihOU1N0cmluZyAqKW5vdGVzIHRp
bWVzdGFtcDooZG91YmxlKXRpbWVzdGFtcCB2YWx1ZXM6KFJXSVByb3RvY29sSlNPTk9iamVjdCAq
KXZhbHVlcyBwYXlsb2FkOihSV0lQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2FkIGVycm9yOihS
V0lQcm90b2NvbERhdGFiYXNlRXJyb3IgKillcnJvcjsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0
aENvbHVtbk5hbWVzOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiljb2x1bW5OYW1lcyBub3Rlczoo
TlNTdHJpbmcgKilub3RlcyB0aW1lc3RhbXA6KGRvdWJsZSl0aW1lc3RhbXAgdmFsdWVzOihSV0lQ
cm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMgcGF5bG9hZDooUldJUHJvdG9jb2xKU09OT2JqZWN0
ICopcGF5bG9hZCBlcnJvcjooUldJUHJvdG9jb2xEYXRhYmFzZUVycm9yICopZXJyb3IgZXJyb3JM
aXN0OihOU0FycmF5Lyo8UldJUHJvdG9jb2xEYXRhYmFzZUVycm9yPiovICopZXJyb3JMaXN0Owog
ewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQpAQCAtMTQzMSw2ICsx
NDYyLDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBUSFJPV19FWENFUFRJT05f
Rk9SX1JFUVVJUkVEX1BST1BFUlRZKHZhbHVlcywgQCJ2YWx1ZXMiKTsKICAgICBUSFJPV19FWENF
UFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKHBheWxvYWQsIEAicGF5bG9hZCIpOwogICAgIFRI
Uk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUFJPUEVSVFkoZXJyb3IsIEAiZXJyb3IiKTsKKyAg
ICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKGVycm9yTGlzdCwgQCJlcnJv
ckxpc3QiKTsKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9UWVBFX0lOX0FSUkFZKGVycm9y
TGlzdCwgW1JXSVByb3RvY29sRGF0YWJhc2VFcnJvciBjbGFzc10pOwogCiAgICAgc2VsZi5jb2x1
bW5OYW1lcyA9IGNvbHVtbk5hbWVzOwogICAgIHNlbGYubm90ZXMgPSBub3RlczsKQEAgLTE0Mzgs
NiArMTQ3MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgc2VsZi52YWx1ZXMg
PSB2YWx1ZXM7CiAgICAgc2VsZi5wYXlsb2FkID0gcGF5bG9hZDsKICAgICBzZWxmLmVycm9yID0g
ZXJyb3I7CisgICAgc2VsZi5lcnJvckxpc3QgPSBlcnJvckxpc3Q7CiAKICAgICByZXR1cm4gc2Vs
ZjsKIH0KQEAgLTE1MDIsNiArMTUzNiwxNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwog
ICAgIHJldHVybiAoUldJUHJvdG9jb2xEYXRhYmFzZUVycm9yICopW3N1cGVyIG9iamVjdEZvcktl
eTpAImVycm9yIl07CiB9CiAKKy0gKHZvaWQpc2V0RXJyb3JMaXN0OihOU0FycmF5Lyo8UldJUHJv
dG9jb2xEYXRhYmFzZUVycm9yPiovICopZXJyb3JMaXN0Cit7CisgICAgVEhST1dfRVhDRVBUSU9O
X0ZPUl9CQURfVFlQRV9JTl9BUlJBWShlcnJvckxpc3QsIFtSV0lQcm90b2NvbERhdGFiYXNlRXJy
b3IgY2xhc3NdKTsKKyAgICBbc3VwZXIgc2V0SW5zcGVjdG9yQXJyYXk6aW5zcGVjdG9yT2JqZWN0
QXJyYXkoZXJyb3JMaXN0KSBmb3JLZXk6QCJlcnJvckxpc3QiXTsKK30KKworLSAoTlNBcnJheS8q
PFJXSVByb3RvY29sRGF0YWJhc2VFcnJvcj4qLyAqKWVycm9yTGlzdAoreworICAgIHJldHVybiBv
YmpjQXJyYXk8UldJUHJvdG9jb2xEYXRhYmFzZUVycm9yPihbc3VwZXIgaW5zcGVjdG9yQXJyYXlG
b3JLZXk6QCJlcnJvckxpc3QiXSk7Cit9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFJXSVBy
b3RvY29sRGF0YWJhc2VPYmplY3RXaXRoUHJvcGVydHlOYW1lQ29uZmxpY3RzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvdHlwZS1kZWNs
YXJhdGlvbi1vYmplY3QtdHlwZS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbgppbmRleCA0
ZThhNzc5MTYyZWYxYzZmMGI4OTY0MmQ2ODE4ZmU3ODIzYmFkNzkzLi4xNzgzMDkxOTczYmNmMzc1
NDVjZDc1OTYwOTE4NjdmOGNhMjVkODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5q
c29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy90
eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24KQEAgLTEzLDYgKzEzLDExIEBACiAgICAg
ICAgICAgICBdCiAgICAgICAgIH0sCiAgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJFcnJv
ckxpc3QiLAorICAgICAgICAgICAgInR5cGUiOiAiYXJyYXkiLAorICAgICAgICAgICAgIml0ZW1z
IjogeyAiJHJlZiI6ICJFcnJvciIgfQorICAgICAgICB9LAorICAgICAgICB7CiAgICAgICAgICAg
ICAiaWQiOiAiT3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGUiLAogICAgICAgICAgICAgInR5cGUiOiAi
b2JqZWN0IiwKICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWwpAQCAtMjEsNyArMjYsOCBAQAog
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidGltZXN0YW1wIiwgInR5cGUiOiAibnVtYmVyIiwg
Im9wdGlvbmFsIjogdHJ1ZSB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidmFsdWVzIiwg
InR5cGUiOiAib2JqZWN0IiwgIm9wdGlvbmFsIjogdHJ1ZSB9LAogICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAicGF5bG9hZCIsICJ0eXBlIjogImFueSIsICJvcHRpb25hbCI6IHRydWUgfSwKLSAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImVycm9yIiwgIiRyZWYiOiAiRXJyb3IiLCAib3B0aW9u
YWwiOiB0cnVlIH0KKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVycm9yIiwgIiRyZWYiOiAi
RXJyb3IiLCAib3B0aW9uYWwiOiB0cnVlIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJl
cnJvckxpc3QiLCAiJHJlZiI6ICJFcnJvckxpc3QiLCAib3B0aW9uYWwiOiB0cnVlIH0KICAgICAg
ICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewpAQCAtMzMsNyArMzksOCBAQAogICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAidGltZXN0YW1wIiwgInR5cGUiOiAibnVtYmVyIiB9LAogICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAidmFsdWVzIiwgInR5cGUiOiAib2JqZWN0IiB9LAogICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAicGF5bG9hZCIsICJ0eXBlIjogImFueSIgfSwKLSAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogImVycm9yIiwgIiRyZWYiOiAiRXJyb3IiIH0KKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImVycm9yIiwgIiRyZWYiOiAiRXJyb3IiIH0sCisgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJlcnJvckxpc3QiLCAiJHJlZiI6ICJFcnJvckxpc3QiIH0KICAgICAg
ICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewo=
</data>
<flag name="review"
          id="269726"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>