<?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>233454</bug_id>
          
          <creation_ts>2021-11-23 15:29:39 -0800</creation_ts>
          <short_desc>Make webpushd &quot;fake registration for testing&quot; much more complicated by adding a &quot;mock app bundle&quot; install</short_desc>
          <delta_ts>2021-11-29 16:22:21 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1817529</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-11-23 15:29:39 -0800</bug_when>
    <thetext>Make webpushd &quot;fake registration for testing&quot; much more complicated by adding a &quot;mock app bundle&quot; install

This replaces the `m_inMemoryOriginStringsWithPermissionForTesting` with a much more complicated `MockAppBundleForTesting` and `MockAppBundleRegistry`.

The effect is the same, but it makes the next patch much easier to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817682</commentid>
    <comment_count>1</comment_count>
      <attachid>445104</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-11-24 12:20:41 -0800</bug_when>
    <thetext>Created attachment 445104
EWS v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817698</commentid>
    <comment_count>2</comment_count>
      <attachid>445108</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-11-24 13:24:01 -0800</bug_when>
    <thetext>Created attachment 445108
EWS v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817709</commentid>
    <comment_count>3</comment_count>
      <attachid>445112</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-11-24 14:48:02 -0800</bug_when>
    <thetext>Created attachment 445112
EWS v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817723</commentid>
    <comment_count>4</comment_count>
      <attachid>445115</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-11-24 17:31:30 -0800</bug_when>
    <thetext>Created attachment 445115
EWS v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818274</commentid>
    <comment_count>5</comment_count>
      <attachid>445115</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-11-29 10:12:10 -0800</bug_when>
    <thetext>Comment on attachment 445115
EWS v4

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

&gt; Source/WebKit/webpushd/AppBundleRequest.h:55
&gt; +    ClientConnection* m_connection;

Let&apos;s not store a raw pointer.  Can this be a WeakPtr?

&gt; Source/WebKit/webpushd/MockAppBundleForTesting.mm:43
&gt; +

extra space, could use =default;

&gt; Source/WebKit/webpushd/PushAppBundle.h:34
&gt; +enum class PushAppBundleExists {

: bool

&gt; Source/WebKit/webpushd/PushAppBundle.h:39
&gt; +enum class PushAppBundleCreationResult {

: bool</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818330</commentid>
    <comment_count>6</comment_count>
      <attachid>445303</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-11-29 11:15:47 -0800</bug_when>
    <thetext>Created attachment 445303
PFL v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818359</commentid>
    <comment_count>7</comment_count>
      <attachid>445312</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-11-29 11:41:58 -0800</bug_when>
    <thetext>Created attachment 445312
PFL v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818534</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-29 16:21:03 -0800</bug_when>
    <thetext>Committed r286273 (244634@main): &lt;https://commits.webkit.org/244634@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 445312.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818535</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-29 16:22:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/85840549&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445104</attachid>
            <date>2021-11-24 12:20:41 -0800</date>
            <delta_ts>2021-11-24 13:24:01 -0800</delta_ts>
            <desc>EWS v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>50505</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZTZhODNlZDgwNzkyLi42NmY5NGQ4OTk3ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsOTYgQEAKKzIwMjEtMTEtMjQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2Ugd2VicHVzaGQgImZha2UgcmVnaXN0cmF0aW9uIGZvciB0ZXN0aW5nIiBt
dWNoIG1vcmUgY29tcGxpY2F0ZWQgYnkgYWRkaW5nIGEgIm1vY2sgYXBwIGJ1bmRsZSIgaW5zdGFs
bAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDU0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJl
ZCBieSBBUEkgdGVzdHMuCisgICAgICAgIAorICAgICAgICBCZWZvcmUgdGhpcyBwYXRjaCwgd2Vi
cHVzaGQgcmVtZW1iZXJlZCAicmVnaXN0cmF0aW9ucyIgdXNpbmcgYSBzaW1wbGUgaW4tbWVtb3J5
IEhhc2hNYXAuCisgICAgICAgIAorICAgICAgICBJbiB0aGUgbmVhciBmdXR1cmUsIHJlZ2lzdHJh
dGlvbnMgd2lsbCBhY3R1YWxseSBiZSByZXByZXNlbnRlZCB3aXRoIGEgcGxhY2Vob2xkZXIgYXBw
IGJ1bmRsZSBvbiBkaXNrLgorICAgICAgICAKKyAgICAgICAgVGhlIHByb2Nlc3Mgb2YgaW5zdGFs
bGluZyBwbGFjZWhvbGRlcnMgKGFuZCBjaGVja2luZyBmb3IgZXhpc3Rpbmcgb25lcykgaXMgY29t
cGxpY2F0ZWQgYW5kIGFzeW5jaHJvbm91cy4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2gg
c2hpZnRzIHRoZSBpbi1tZW1vcnkgdGVzdGluZyBpbXBsZW1lbnRhdGlvbiBmcm9tIGEgc2ltcGxl
IEhhc2hNYXAgdG8gYSAiY29tcGxpY2F0ZWQgYW5kIGFzeW5jaHJvbm91cyIKKyAgICAgICAgcmVn
aXN0cmF0aW9uIG1lY2hhbmlzbSB0aGF0IHNpbXVsYXRlcyBob3cgYXBwLWJ1bmRsZSBpbnN0YWxs
cyB3aWxsIHdvcmsuCisgICAgICAgIAorICAgICAgICBPbmNlIHRoZSAicmVhbCIgbWVjaGFuaXNt
cyBhcmUgaW4gcGxhY2UgdGhlcmUgd2lsbCBiZSBtdWNoIG1vcmUgaW4tZGVwdGggdGVzdGluZyB0
aGF0IHdlIGNhbiBkby4KKyAgICAgICAgRm9yIG5vdywgdGhpcyBpcyBhICJubyBiZWhhdmlvciBj
aGFuZ2UiIHBhdGNoLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9D
b2NvYS9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQdXNoRDo6Q29ubmVjdGlvbjo6Y29ubmVjdGlvblJlY2VpdmVkRXZlbnQgY29uc3QpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oOgorCisgICAg
ICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgIlB1c2hB
cHBCdW5kbGUiIGlzIGFuIGFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIHJlcHJlc2VudGluZyBhIHBs
YWNlaG9sZGVyIGFwcGxpY2F0aW9uIGJ1bmRsZSBmb3IgYSByZWdpc3RyYXRpb24uCisgICAgICAg
IEV2ZW50dWFsbHkgdGhlcmUgd2lsbCBiZSBhIG5hdGl2ZSBvbmUgZm9yIGVhY2ggcGxhdGZvcm0g
dGhhdCBhY3R1YWxseSBkb2VzIHN5c3RlbSBvcGVyYXRpb25zLgorICAgICAgICBGb3Igbm93LCB0
aGUgY29uY3JldGUgaW1wbGVtZW50YXRpb24gaXMgdGhlIGluLW1lbW9yeSAiTW9jayIgYXBwIGJ1
bmRsZS4KKworICAgICAgICAqIHdlYnB1c2hkL1B1c2hBcHBCdW5kbGUuaDogQ29waWVkIGZyb20g
U291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5oLgorICAgICAgICAq
IHdlYnB1c2hkL1B1c2hBcHBCdW5kbGUubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvd2Vi
cHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24uaC4KKyAgICAgICAgKFdlYlB1c2hEOjpQdXNoQXBw
QnVuZGxlQ2xpZW50Ojp+UHVzaEFwcEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXZWJQdXNoRDo6
UHVzaEFwcEJ1bmRsZTo6UHVzaEFwcEJ1bmRsZSk6CisgICAgICAgIChXZWJQdXNoRDo6UHVzaEFw
cEJ1bmRsZTo6flB1c2hBcHBCdW5kbGUpOgorICAgICAgICAoV2ViUHVzaEQ6OlB1c2hBcHBCdW5k
bGU6OmRldGFjaEZyb21DbGllbnQpOgorICAgICAgICAKKyAgICAgICAgQW4gIkFwcEJ1bmRsZVJl
cXVlc3QiIGlzIGEgcXVlYWJsZSBvcGVyYXRpb24gbWVhbnQgdG8gZG8gc29tZXRoaW5nIHdpdGgg
YW4gIkFwcCBidW5kbGUiLgorICAgICAgICBGb3Igbm93IHRoZSBvcGVyYXRpb25zIGFyZSAiY3Jl
YXRlIiBhbmQgImRlbGV0ZSIKKyAgICAgICAgCisgICAgICAgICogd2VicHVzaGQvQXBwQnVuZGxl
UmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYlB1c2hEOjpBcHBCdW5kbGVSZXF1ZXN0SW1w
bDo6QXBwQnVuZGxlUmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRsZVJl
cXVlc3RJbXBsOjp+QXBwQnVuZGxlUmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViUHVzaEQ6OkFw
cEJ1bmRsZVJlcXVlc3RJbXBsOjpjYWxsQ29tcGxldGlvbkhhbmRsZXJBbmRDbGVhbnVwKToKKyAg
ICAgICAgKFdlYlB1c2hEOjpBcHBCdW5kbGVQZXJtaXNzaW9uc1JlcXVlc3Q6OkFwcEJ1bmRsZVBl
cm1pc3Npb25zUmVxdWVzdCk6CisgICAgICAgIChXZWJQdXNoRDo6QXBwQnVuZGxlRGVsZXRpb25S
ZXF1ZXN0OjpBcHBCdW5kbGVEZWxldGlvblJlcXVlc3QpOgorICAgICAgICAqIHdlYnB1c2hkL0Fw
cEJ1bmRsZVJlcXVlc3QubW06IEFkZGVkLgorICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRsZVJl
cXVlc3Q6OkFwcEJ1bmRsZVJlcXVlc3QpOgorICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRsZVJl
cXVlc3Q6On5BcHBCdW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYlB1c2hEOjpBcHBCdW5kbGVS
ZXF1ZXN0OjpzdGFydCk6CisgICAgICAgIChXZWJQdXNoRDo6QXBwQnVuZGxlUmVxdWVzdDo6Y2Fu
Y2VsKToKKyAgICAgICAgKFdlYlB1c2hEOjpBcHBCdW5kbGVSZXF1ZXN0OjpjbGVhbnVwQWZ0ZXJD
b21wbGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJQdXNoRDo6QXBwQnVuZGxlUGVybWlzc2lv
bnNSZXF1ZXN0OjpzdGFydEludGVybmFsKToKKyAgICAgICAgKFdlYlB1c2hEOjpBcHBCdW5kbGVQ
ZXJtaXNzaW9uc1JlcXVlc3Q6OmRpZENoZWNrRm9yRXhpc3RpbmdCdW5kbGUpOgorICAgICAgICAo
V2ViUHVzaEQ6OkFwcEJ1bmRsZVBlcm1pc3Npb25zUmVxdWVzdDo6ZGlkQ3JlYXRlQXBwQnVuZGxl
KToKKyAgICAgICAgKFdlYlB1c2hEOjpBcHBCdW5kbGVEZWxldGlvblJlcXVlc3Q6OnN0YXJ0SW50
ZXJuYWwpOgorICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRsZURlbGV0aW9uUmVxdWVzdDo6ZGlk
RGVsZXRlRXhpc3RpbmdCdW5kbGVXaXRoRXJyb3IpOgorCisgICAgICAgICogd2VicHVzaGQvTW9j
a0FwcEJ1bmRsZUZvclRlc3RpbmcuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5oLgorICAgICAgICAoV2ViUHVzaEQ6Ok1vY2tBcHBCdW5k
bGVGb3JUZXN0aW5nOjpjcmVhdGUpOgorICAgICAgICAqIHdlYnB1c2hkL01vY2tBcHBCdW5kbGVG
b3JUZXN0aW5nLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYlB1c2hEOjpNb2NrQXBwQnVuZGxlRm9y
VGVzdGluZzo6TW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViUHVzaEQ6Ok1v
Y2tBcHBCdW5kbGVGb3JUZXN0aW5nOjp+TW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcpOgorICAgICAg
ICAoV2ViUHVzaEQ6Ok1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nOjpjaGVja0ZvckV4aXN0aW5nQnVu
ZGxlKToKKyAgICAgICAgKFdlYlB1c2hEOjpNb2NrQXBwQnVuZGxlRm9yVGVzdGluZzo6ZGVsZXRl
RXhpc3RpbmdCdW5kbGUpOgorICAgICAgICAoV2ViUHVzaEQ6Ok1vY2tBcHBCdW5kbGVGb3JUZXN0
aW5nOjpjcmVhdGVCdW5kbGUpOgorICAgICAgICAoV2ViUHVzaEQ6Ok1vY2tBcHBCdW5kbGVGb3JU
ZXN0aW5nOjpzdG9wKToKKworICAgICAgICAqIHdlYnB1c2hkL01vY2tBcHBCdW5kbGVSZWdpc3Ry
eS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0
aW9uLmguCisgICAgICAgICogd2VicHVzaGQvTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1tOiBBZGRl
ZC4KKyAgICAgICAgKFdlYlB1c2hEOjpNb2NrQXBwQnVuZGxlUmVnaXN0cnk6OnNpbmdsZXRvbik6
CisgICAgICAgIChXZWJQdXNoRDo6TW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5OjpnZXRPcmlnaW5zV2l0
aFJlZ2lzdHJhdGlvbnMpOgorICAgICAgICAoV2ViUHVzaEQ6Ok1vY2tBcHBCdW5kbGVSZWdpc3Ry
eTo6ZG9lc0J1bmRsZUV4aXN0KToKKyAgICAgICAgKFdlYlB1c2hEOjpNb2NrQXBwQnVuZGxlUmVn
aXN0cnk6OmNyZWF0ZUJ1bmRsZSk6CisgICAgICAgIChXZWJQdXNoRDo6TW9ja0FwcEJ1bmRsZVJl
Z2lzdHJ5OjpkZWxldGVCdW5kbGUpOgorCisgICAgICAgICogd2VicHVzaGQvUHVzaENsaWVudENv
bm5lY3Rpb24uaDoKKyAgICAgICAgKiB3ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbToK
KyAgICAgICAgKFdlYlB1c2hEOjpDbGllbnRDb25uZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
V2ViUHVzaEQ6OkNsaWVudENvbm5lY3Rpb246OmVucXVldWVBcHBCdW5kbGVSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYlB1c2hEOjpDbGllbnRDb25uZWN0aW9uOjptYXliZVN0YXJ0TmV4dEFwcEJ1bmRs
ZVJlcXVlc3QpOgorICAgICAgICAoV2ViUHVzaEQ6OkNsaWVudENvbm5lY3Rpb246OmRpZENvbXBs
ZXRlQXBwQnVuZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJQdXNoRDo6Q2xpZW50Q29ubmVjdGlv
bjo6Y29ubmVjdGlvbkNsb3NlZCk6CisKKyAgICAgICAgKiB3ZWJwdXNoZC9XZWJQdXNoRGFlbW9u
Lmg6CisgICAgICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbToKKyAgICAgICAgKFdlYlB1
c2hEOjpEYWVtb246OmNvbm5lY3Rpb25BZGRlZCk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9u
Ojpjb25uZWN0aW9uUmVtb3ZlZCk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpyZXF1ZXN0
U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbik6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9u
OjpnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyk6CisgICAgICAg
IChXZWJQdXNoRDo6RGFlbW9uOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9u
KToKKwogMjAyMS0xMS0xOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgTW9yZSB3ZWJwdXNoZCBhcmNoaXRlY3R1cmUgd29yawpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL0NvY29hL1dlYlB1c2hEYWVtb25D
b25uZWN0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNh
dGlvbnMvQ29jb2EvV2ViUHVzaERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbQppbmRleCBiZDYxOWEz
YzM0MzguLjExNDdkYzQ0MDE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL0NvY29hL1dlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL0NvY29hL1dl
YlB1c2hEYWVtb25Db25uZWN0aW9uQ29jb2EubW0KQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBDb25u
ZWN0aW9uOjpjb25uZWN0aW9uUmVjZWl2ZWRFdmVudCh4cGNfb2JqZWN0X3QgcmVxdWVzdCkgY29u
c3QKICAgICBpZiAoIWRlYnVnTWVzc2FnZSkKICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8gbWVz
c2FnZUxldmVsID0gc3RhdGljX2Nhc3Q8SlNDOjpNZXNzYWdlTGV2ZWw+KHhwY19kaWN0aW9uYXJ5
X2dldF91aW50NjQocmVxdWVzdCwgcHJvdG9jb2xEZWJ1Z01lc3NhZ2VMZXZlbEtleSkpOwotICAg
IG5ldHdvcmtTZXNzaW9uKCkubmV0d29ya1Byb2Nlc3MoKS5icm9hZGNhc3RDb25zb2xlTWVzc2Fn
ZShuZXR3b3JrU2Vzc2lvbigpLnNlc3Npb25JRCgpLCBNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCwgbWVzc2FnZUxldmVsLCBTdHJpbmc6OmZyb21VVEY4KGRlYnVnTWVzc2Fn
ZSkpOworICAgIG5ldHdvcmtTZXNzaW9uKCkubmV0d29ya1Byb2Nlc3MoKS5icm9hZGNhc3RDb25z
b2xlTWVzc2FnZShuZXR3b3JrU2Vzc2lvbigpLnNlc3Npb25JRCgpLCBNZXNzYWdlU291cmNlOjpP
dGhlciwgbWVzc2FnZUxldmVsLCBTdHJpbmc6OmZyb21VVEY4KGRlYnVnTWVzc2FnZSkpOwogfQog
CiBSZXRhaW5QdHI8eHBjX29iamVjdF90PiBDb25uZWN0aW9uOjpkaWN0aW9uYXJ5RnJvbU1lc3Nh
Z2UoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYgbWVzc2FnZSkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVs
ZWdhdGVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURl
bGVnYXRlUHJpdmF0ZS5oCmluZGV4IDQ0Mzc4ZjY2MjY2ZC4uMjdmNzM5M2U0NTUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQ
cml2YXRlLmgKQEAgLTE1OSw3ICsxNTksNyBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogLSAodm9p
ZClfd2ViVmlld0RpZERpc2FibGVJbnNwZWN0b3JCcm93c2VyRG9tYWluOihXS1dlYlZpZXcgKil3
ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7CiAKIC0gKHZv
aWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRYUlNlc3Npb25XaXRoQ29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxB
QkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwotLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyByZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2lu
OihXS1NlY3VyaXR5T3JpZ2luICopc2VjdXJpdHlPcmlnaW4gZGVjaXNpb25IYW5kbGVyOih2b2lk
ICheKShCT09MKSlkZWNpc2lvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40
KSk7CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3ROb3RpZmlj
YXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilzZWN1
cml0eU9yaWdpbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWRlY2lzaW9uSGFuZGxl
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiAj
aWYgVEFSR0VUX09TX0lQSE9ORQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBlYjlmYzNlMjkxNGQuLjQxZWY4M2VlNDU0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05OTYs
NiArOTk2LDEyIEBACiAJCTUxNUJFMUFCMUQ1NTVBQTAwMEREN0M2OCAvKiBXZWJHYW1lcGFkLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTFBMDFE
NTUwQUIwMDBERDdDNjggLyogV2ViR2FtZXBhZC5oICovOyB9OwogCQk1MTVCRTFCMzFENTkwMkRE
MDBERDdDNjggLyogR2FtZXBhZERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxNUJFMUIwMUQ1OTAwNjkwMEREN0M2OCAvKiBHYW1lcGFkRGF0YS5o
ICovOyB9OwogCQk1MTVCRTFCNTFENTkxN0ZGMDBERDdDNjggLyogVUlHYW1lcGFkLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTFBRDFENTU1QzUx
MDBERDdDNjggLyogVUlHYW1lcGFkLmggKi87IH07CisJCTUxNjBFOTU1Mjc0Qjg4NzIwMDU2NzM4
OCAvKiBBcHBCdW5kbGVSZXF1ZXN0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE2MEU5NTMyNzRCODg3MTAwNTY3Mzg4IC8qIEFwcEJ1bmRsZVJlcXVl
c3QubW0gKi87IH07CisJCTUxNjBFOTU2Mjc0Qjg4NzIwMDU2NzM4OCAvKiBBcHBCdW5kbGVSZXF1
ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTYw
RTk1NDI3NEI4ODcxMDA1NjczODggLyogQXBwQnVuZGxlUmVxdWVzdC5oICovOyB9OworCQk1MTYw
RTk1OTI3NEMwRDg5MDA1NjczODggLyogUHVzaEFwcEJ1bmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2MEU5NTcyNzRDMEQ4ODAwNTY3Mzg4IC8q
IFB1c2hBcHBCdW5kbGUuaCAqLzsgfTsKKwkJNTE2MEU5NUEyNzRDMEQ4OTAwNTY3Mzg4IC8qIFB1
c2hBcHBCdW5kbGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTYwRTk1ODI3NEMwRDg4MDA1NjczODggLyogUHVzaEFwcEJ1bmRsZS5tbSAqLzsgfTsK
KwkJNTE2MEU5NUUyNzRDMkEwMzAwNTY3Mzg4IC8qIE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2MEU5NUMyNzRD
MkEwMzAwNTY3Mzg4IC8qIE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5oICovOyB9OworCQk1MTYwRTk2
MDI3NEMyQTQwMDA1NjczODggLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2MEU5NUYyNzRDMkEzRjAwNTY3
Mzg4IC8qIE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5tbSAqLzsgfTsKIAkJNTE2MzE5OTQxNjI4OUE2
MDAwRTIyRjAwIC8qIE5ldHdvcmtQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUNDOTM0MTYyODA2NDgwMDM0
MjU1MCAvKiBOZXR3b3JrUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUxNjMx
OTk1MTYyODlBNjMwMEUyMkYwMCAvKiBOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFDQzkzNTE2MjgwNjQ4MDAz
NDI1NTAgLyogTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oICovOyB9OwogCQk1MTZBNEE1RDEyMEEy
Q0NEMDBDMDVCN0YgLyogQVBJRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxNkE0QTVCMTIwQTJDQ0QwMEMwNUI3RiAvKiBBUElFcnJvci5oICov
OyB9OwpAQCAtMTA0Nyw2ICsxMDUzLDggQEAKIAkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODJFIC8q
IE5ldHdvcmtSVENQcm92aWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYwNjBERDE2NTQzMTc1MDBGMzI4MkUgLyog
TmV0d29ya1JUQ1Byb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNTFGMDYwRTEx
NjU0MzE4NTAwRjMyODJGIC8qIFdlYk1ETlNSZWdpc3Rlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYwNjBERDE2NTQz
MTc1MDBGMzI4MkYgLyogV2ViTUROU1JlZ2lzdGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsK
IAkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODNGIC8qIE5ldHdvcmtNRE5TUmVnaXN0ZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFGMDYwREQxNjU0MzE3NTAwRjMyODNGIC8qIE5ldHdvcmtNRE5TUmVnaXN0ZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwICovOyB9OworCQk1MUY3QkI3NjI3NDQ5OEJCMDBDNDVBNzIgLyogTW9ja0Fw
cEJ1bmRsZUZvclRlc3RpbmcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUY3QkI3NDI3NDQ5OEJBMDBDNDVBNzIgLyogTW9ja0FwcEJ1bmRsZUZvclRl
c3RpbmcubW0gKi87IH07CisJCTUxRjdCQjc3Mjc0NDk4QkIwMEM0NUE3MiAvKiBNb2NrQXBwQnVu
ZGxlRm9yVGVzdGluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFGN0JCNzUyNzQ0OThCQjAwQzQ1QTcyIC8qIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5n
LmggKi87IH07CiAJCTUxRjdCQjdCMjc0NEM1MDcwMEM0NUE3MiAvKiBQdXNoQ2xpZW50Q29ubmVj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFG
N0JCNzkyNzQ0QzUwNzAwQzQ1QTcyIC8qIFB1c2hDbGllbnRDb25uZWN0aW9uLmggKi87IH07CiAJ
CTUxRjdCQjdDMjc0NEM1MDcwMEM0NUE3MiAvKiBQdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjdCQjdBMjc0NEM1
MDcwMEM0NUE3MiAvKiBQdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSAqLzsgfTsKIAkJNTFGN0JCN0Qy
NzQ1NjQwNDAwQzQ1QTcyIC8qIENvZGVTaWduaW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxMUFENEYxQ0JDNDdGODAwNjgxRUU1IC8qIENvZGVT
aWduaW5nLm1tICovOyB9OwpAQCAtNDE1Miw2ICs0MTYwLDEyIEBACiAJCTUxNUM0MTVBMjA3RDc0
RTAwMDcyNkUwMiAvKiBTdXNwZW5kZWRQYWdlUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU3VzcGVuZGVkUGFnZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTE1QzQxNUIyMDdENzRFMTAwNzI2RTAyIC8qIFN1c3BlbmRlZFBhZ2VQ
cm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdXNwZW5kZWRQYWdlUHJv
eHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2MEJGRTAxMzM4MURGOTAwOTE4
OTk5IC8qIExvZ2dpbmdGb3VuZGF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gTG9nZ2luZ0ZvdW5kYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUxNjBFOTUzMjc0Qjg4NzEwMDU2NzM4OCAvKiBBcHBCdW5kbGVSZXF1ZXN0Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXBwQnVuZGxlUmVxdWVzdC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE2MEU5NTQyNzRCODg3MTAwNTY3Mzg4
IC8qIEFwcEJ1bmRsZVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QXBwQnVuZGxlUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTYwRTk1
NzI3NEMwRDg4MDA1NjczODggLyogUHVzaEFwcEJ1bmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQdXNoQXBwQnVuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUxNjBFOTU4Mjc0QzBEODgwMDU2NzM4OCAvKiBQdXNoQXBwQnVuZGxlLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHVzaEFwcEJ1bmRsZS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE2MEU5NUMyNzRDMkEwMzAwNTY3Mzg4IC8qIE1vY2tB
cHBCdW5kbGVSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2Nr
QXBwQnVuZGxlUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE2MEU5
NUYyNzRDMkEzRjAwNTY3Mzg4IC8qIE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2NEMwOTQxQjA1Qjc1NzAwNEYxMDJBIC8q
IEF1eGlsaWFyeVByb2Nlc3MubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXV4
aWxpYXJ5UHJvY2Vzcy5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTE2QTRBNUIxMjBBMkNDRDAwQzA1QjdGIC8qIEFQSUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFQSUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxN0EzM0IzMTMwQjMwOEMwMEY4MENCNSAvKiBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLQXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI1OSw2ICs0Mjcz
LDggQEAKIAkJNTFGMDYwREQxNjU0MzE3NTAwRjMyODJGIC8qIFdlYk1ETlNSZWdpc3Rlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJNRE5TUmVnaXN0ZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJNRE5TUmVnaXN0
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwogCQk1MUYwNjBERDE2NTQzMTc1MDBGMzI4M0YgLyogTmV0d29ya01ETlNSZWdpc3Rlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrTUROU1JlZ2lzdGVyTWVz
c2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvTmV0d29ya01E
TlNSZWdpc3Rlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCTUxRjA2MERFMTY1NDMxNzUwMEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxvYWRl
ck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlJlc291cmNlTG9hZGVyTWVzc2FnZXMuaDsg
cGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5o
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MUY3QkI3NDI3NDQ5OEJB
MDBDNDVBNzIgLyogTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFGN0JCNzUyNzQ0OThCQjAwQzQ1QTcyIC8qIE1vY2tB
cHBCdW5kbGVGb3JUZXN0aW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1v
Y2tBcHBCdW5kbGVGb3JUZXN0aW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
RjdCQjc5Mjc0NEM1MDcwMEM0NUE3MiAvKiBQdXNoQ2xpZW50Q29ubmVjdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoQ2xpZW50Q29ubmVjdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MUY3QkI3QTI3NDRDNTA3MDBDNDVBNzIgLyogUHVzaENs
aWVudENvbm5lY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBQdXNoQ2xpZW50Q29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTFGN0JCN0UyNzQ1NjRBMTAwQzQ1QTcyIC8qIFNlY3VyaXR5LmZyYW1ld29yayAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3Jr
OyBuYW1lID0gU2VjdXJpdHkuZnJhbWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9TZWN1cml0eS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwpAQCAtOTYw
NCw2ICs5NjIwLDE0IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJ
CTVDQkI2RDREMjcxRjY3Q0MwMEZEMUE1RCAvKiBjb20uYXBwbGUud2Via2l0LndlYnB1c2hkLnBs
aXN0ICovLAorCQkJCTUxNjBFOTU0Mjc0Qjg4NzEwMDU2NzM4OCAvKiBBcHBCdW5kbGVSZXF1ZXN0
LmggKi8sCisJCQkJNTE2MEU5NTMyNzRCODg3MTAwNTY3Mzg4IC8qIEFwcEJ1bmRsZVJlcXVlc3Qu
bW0gKi8sCisJCQkJNTFGN0JCNzUyNzQ0OThCQjAwQzQ1QTcyIC8qIE1vY2tBcHBCdW5kbGVGb3JU
ZXN0aW5nLmggKi8sCisJCQkJNTFGN0JCNzQyNzQ0OThCQTAwQzQ1QTcyIC8qIE1vY2tBcHBCdW5k
bGVGb3JUZXN0aW5nLm1tICovLAorCQkJCTUxNjBFOTVDMjc0QzJBMDMwMDU2NzM4OCAvKiBNb2Nr
QXBwQnVuZGxlUmVnaXN0cnkuaCAqLywKKwkJCQk1MTYwRTk1RjI3NEMyQTNGMDA1NjczODggLyog
TW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1tICovLAorCQkJCTUxNjBFOTU3Mjc0QzBEODgwMDU2NzM4
OCAvKiBQdXNoQXBwQnVuZGxlLmggKi8sCisJCQkJNTE2MEU5NTgyNzRDMEQ4ODAwNTY3Mzg4IC8q
IFB1c2hBcHBCdW5kbGUubW0gKi8sCiAJCQkJNTFGN0JCNzkyNzQ0QzUwNzAwQzQ1QTcyIC8qIFB1
c2hDbGllbnRDb25uZWN0aW9uLmggKi8sCiAJCQkJNTFGN0JCN0EyNzQ0QzUwNzAwQzQ1QTcyIC8q
IFB1c2hDbGllbnRDb25uZWN0aW9uLm1tICovLAogCQkJCTUxMkNENjlEMjcyMzM5M0EwMEY3RjhF
QyAvKiBXZWJQdXNoRGFlbW9uLmggKi8sCkBAIC0xMjA3OSw5ICsxMjEwMywxMyBAQAogCQkJaXNh
ID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3
OwogCQkJZmlsZXMgPSAoCisJCQkJNTE2MEU5NTkyNzRDMEQ4OTAwNTY3Mzg4IC8qIFB1c2hBcHBC
dW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjdCQjdCMjc0NEM1MDcwMEM0NUE3MiAvKiBQ
dXNoQ2xpZW50Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE2MEU5NUUyNzRDMkEw
MzAwNTY3Mzg4IC8qIE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NUMxNTc5RkMyNzE3QUY1MDAwRUQ1MjgwIC8qIERhZW1vblV0aWxpdGllcy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTE2MEU5NTYyNzRCODg3MjAwNTY3Mzg4IC8qIEFwcEJ1bmRsZVJlcXVlc3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxMkNENjlGMjcyMzM5M0EwMEY3RjhFQyAvKiBXZWJQdXNoRGFl
bW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUY3QkI3NzI3NDQ5OEJCMDBDNDVBNzIgLyogTW9j
a0FwcEJ1bmRsZUZvclRlc3RpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTQ1NjAsNyArMTQ1ODgs
MTEgQEAKIAkJCWZpbGVzID0gKAogCQkJCTUxRjdCQjdEMjc0NTY0MDQwMEM0NUE3MiAvKiBDb2Rl
U2lnbmluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDMTU3QTAxMjcxN0I3RkIwMEVENTI4MCAv
KiBBcmd1bWVudENvZGVycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUY3QkI3NjI3NDQ5OEJC
MDBDNDVBNzIgLyogTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcubW0gaW4gU291cmNlcyAqLywKKwkJ
CQk1MTYwRTk1NTI3NEI4ODcyMDA1NjczODggLyogQXBwQnVuZGxlUmVxdWVzdC5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDMTU3OUZGMjcxN0I2RDIwMEVENTI4MCAvKiBEYWVtb25EZWNvZGVyLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTUxNjBFOTVBMjc0QzBEODkwMDU2NzM4OCAvKiBQdXNoQXBw
QnVuZGxlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTE2MEU5NjAyNzRDMkE0MDAwNTY3Mzg4IC8q
IE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxRjdCQjdDMjc0
NEM1MDcwMEM0NUE3MiAvKiBQdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTVDMTU3OUZFMjcxN0I2QzEwMEVENTI4MCAvKiBEYWVtb25FbmNvZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDMTU3OUZCMjcxN0FGNTAwMEVENTI4MCAvKiBEYWVtb25VdGlsaXRpZXMu
bW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvQXBw
QnVuZGxlUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9BcHBCdW5kbGVSZXF1ZXN0
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40ZjdmYmY5NDg0OWMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL0FwcEJ1bmRsZVJlcXVl
c3QuaApAQCAtMCwwICsxLDEyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1w
b3J0ICJQdXNoQXBwQnVuZGxlLmgiCisjaW1wb3J0ICJQdXNoQ2xpZW50Q29ubmVjdGlvbi5oIgor
I2ltcG9ydCA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW1wb3J0IDx3dGYvT1NPYmplY3RQ
dHIuaD4KKyNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgorI2ltcG9ydCA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJQdXNoRCB7CisKK2NsYXNzIFB1c2hBcHBC
dW5kbGU7CitjbGFzcyBDbGllbnRDb25uZWN0aW9uOworCitjbGFzcyBBcHBCdW5kbGVSZXF1ZXN0
IDogcHVibGljIFB1c2hBcHBCdW5kbGVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIHZpcnR1YWwgfkFwcEJ1bmRsZVJlcXVlc3QoKTsKKworICAgIHZp
cnR1YWwgY29uc3QgY2hhciogdHJhbnNhY3Rpb25EZXNjcmlwdGlvbigpIGNvbnN0ID0gMDsKKwor
ICAgIHZvaWQgc3RhcnQoKTsKKyAgICB2b2lkIGNhbmNlbCgpOworCitwcm90ZWN0ZWQ6CisgICAg
QXBwQnVuZGxlUmVxdWVzdChDbGllbnRDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBvcmlnaW5T
dHJpbmcpOworCisgICAgdm9pZCBjbGVhbnVwQWZ0ZXJDb21wbGV0aW9uSGFuZGxlcigpOworCisg
ICAgQ2xpZW50Q29ubmVjdGlvbiogbV9jb25uZWN0aW9uOworICAgIFN0cmluZyBtX29yaWdpblN0
cmluZzsKKyAgICBSZWZQdHI8UHVzaEFwcEJ1bmRsZT4gbV9hcHBCdW5kbGU7CisgICAgT1NPYmpl
Y3RQdHI8b3NfdHJhbnNhY3Rpb25fdD4gbV90cmFuc2FjdGlvbjsKKworcHJpdmF0ZToKKyAgICB2
aXJ0dWFsIHZvaWQgc3RhcnRJbnRlcm5hbCgpID0gMDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1l
IENvbXBsZXRpb25UeXBlPgorY2xhc3MgQXBwQnVuZGxlUmVxdWVzdEltcGwgOiBwdWJsaWMgQXBw
QnVuZGxlUmVxdWVzdCB7Citwcm90ZWN0ZWQ6CisgICAgQXBwQnVuZGxlUmVxdWVzdEltcGwoQ2xp
ZW50Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoQ29tcGxldGlvblR5cGUpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgICAgICA6IEFwcEJ1bmRsZVJlcXVlc3QoY29ubmVjdGlvbiwgb3JpZ2luU3RyaW5nKQor
ICAgICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
CisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfkFwcEJ1bmRsZVJlcXVlc3RJbXBsKCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVCghbV9hcHBCdW5kbGUpOworICAgIH0KKworICAgIHZvaWQgY2Fs
bENvbXBsZXRpb25IYW5kbGVyQW5kQ2xlYW51cChDb21wbGV0aW9uVHlwZSByZXN1bHQpCisgICAg
eworICAgICAgICBBU1NFUlQobV9jb21wbGV0aW9uSGFuZGxlcik7CisgICAgICAgIG1fY29tcGxl
dGlvbkhhbmRsZXIocmVzdWx0KTsKKworICAgICAgICBjbGVhbnVwQWZ0ZXJDb21wbGV0aW9uSGFu
ZGxlcigpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBzdGFydEludGVybmFsKCkgPSAwOwor
ICAgIHZpcnR1YWwgY29uc3QgY2hhciogdHJhbnNhY3Rpb25EZXNjcmlwdGlvbigpIGNvbnN0ID0g
MDsKKworcHJpdmF0ZToKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKENvbXBsZXRpb25UeXBl
KT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKK307CisKK2NsYXNzIEFwcEJ1bmRsZVBlcm1pc3Npb25z
UmVxdWVzdCA6IHB1YmxpYyBBcHBCdW5kbGVSZXF1ZXN0SW1wbDxib29sPgoreworcHVibGljOgor
ICAgIEFwcEJ1bmRsZVBlcm1pc3Npb25zUmVxdWVzdChDbGllbnRDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgOiBBcHBCdW5kbGVSZXF1ZXN0SW1w
bChjb25uZWN0aW9uLCBvcmlnaW5TdHJpbmcsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQor
ICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgY29uc3QgY2hhciogdHJhbnNhY3Rpb25EZXNj
cmlwdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJXZWJQdXNoIFBlcm1pc3Npb25zIEJ1bmRs
ZSBSZXF1ZXN0IjsgfQorCisgICAgdm9pZCBzdGFydEludGVybmFsKCkgZmluYWw7CisgICAgdm9p
ZCBkaWRDaGVja0ZvckV4aXN0aW5nQnVuZGxlKFB1c2hBcHBCdW5kbGUmLCBQdXNoQXBwQnVuZGxl
RXhpc3RzKSBmaW5hbDsKKyAgICB2b2lkIGRpZERlbGV0ZUV4aXN0aW5nQnVuZGxlV2l0aEVycm9y
KFB1c2hBcHBCdW5kbGUmLCBOU0Vycm9yICopIGZpbmFsIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQorICAgIHZvaWQgZGlkQ3JlYXRlQXBwQnVuZGxlKFB1c2hBcHBCdW5kbGUmLCBQ
dXNoQXBwQnVuZGxlQ3JlYXRpb25SZXN1bHQpIGZpbmFsOworfTsKKworY2xhc3MgQXBwQnVuZGxl
RGVsZXRpb25SZXF1ZXN0IDogcHVibGljIEFwcEJ1bmRsZVJlcXVlc3RJbXBsPGNvbnN0IFN0cmlu
ZyY+Cit7CitwdWJsaWM6CisgICAgQXBwQnVuZGxlRGVsZXRpb25SZXF1ZXN0KENsaWVudENvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAg
ICA6IEFwcEJ1bmRsZVJlcXVlc3RJbXBsKGNvbm5lY3Rpb24sIG9yaWdpblN0cmluZywgIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgY29u
c3QgY2hhciogdHJhbnNhY3Rpb25EZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJX
ZWJQdXNoIEJ1bmRsZSBEZWxldGlvbiBSZXF1ZXN0IjsgfQorCisgICAgdm9pZCBzdGFydEludGVy
bmFsKCkgZmluYWw7CisgICAgdm9pZCBkaWRDaGVja0ZvckV4aXN0aW5nQnVuZGxlKFB1c2hBcHBC
dW5kbGUmLCBQdXNoQXBwQnVuZGxlRXhpc3RzKSBmaW5hbCAgeyBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9CisgICAgdm9pZCBkaWREZWxldGVFeGlzdGluZ0J1bmRsZVdpdGhFcnJvcihQ
dXNoQXBwQnVuZGxlJiwgTlNFcnJvciAqKSBmaW5hbDsKKyAgICB2b2lkIGRpZENyZWF0ZUFwcEJ1
bmRsZShQdXNoQXBwQnVuZGxlJiwgUHVzaEFwcEJ1bmRsZUNyZWF0aW9uUmVzdWx0KSBmaW5hbCAg
eyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJQdXNoRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9BcHBCdW5kbGVSZXF1
ZXN0Lm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9BcHBCdW5kbGVSZXF1ZXN0Lm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2FlMDUyMzczZWI0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9BcHBCdW5kbGVSZXF1ZXN0Lm1tCkBA
IC0wLDAgKzEsMTIzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJBcHBCdW5kbGVSZXF1ZXN0LmgiCisKKyNpbXBvcnQgIk1vY2tBcHBCdW5kbGVGb3JUZXN0aW5n
LmgiCisjaW1wb3J0ICJXZWJQdXNoRGFlbW9uLmgiCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9D
b25zb2xlVHlwZXMuaD4KKworbmFtZXNwYWNlIFdlYlB1c2hEIHsKKworQXBwQnVuZGxlUmVxdWVz
dDo6QXBwQnVuZGxlUmVxdWVzdChDbGllbnRDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBT
dHJpbmcmIG9yaWdpblN0cmluZykKKyAgICA6IG1fY29ubmVjdGlvbigmY29ubmVjdGlvbikKKyAg
ICAsIG1fb3JpZ2luU3RyaW5nKG9yaWdpblN0cmluZykKK3sKK30KKworQXBwQnVuZGxlUmVxdWVz
dDo6fkFwcEJ1bmRsZVJlcXVlc3QoKQoreworICAgIEFTU0VSVCghbV9hcHBCdW5kbGUpOworfQor
Cit2b2lkIEFwcEJ1bmRsZVJlcXVlc3Q6OnN0YXJ0KCkKK3sKKyAgICBBU1NFUlQobV9jb25uZWN0
aW9uKTsKKworICAgIG1fdHJhbnNhY3Rpb24gPSBhZG9wdE9TT2JqZWN0KG9zX3RyYW5zYWN0aW9u
X2NyZWF0ZSh0cmFuc2FjdGlvbkRlc2NyaXB0aW9uKCkpKTsKKworICAgIG1fYXBwQnVuZGxlID0g
TW9ja0FwcEJ1bmRsZUZvclRlc3Rpbmc6OmNyZWF0ZShtX29yaWdpblN0cmluZywgbV9jb25uZWN0
aW9uLT5ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKCksICp0aGlzKTsKKyAgICBzdGFydElu
dGVybmFsKCk7Cit9CisKK3ZvaWQgQXBwQnVuZGxlUmVxdWVzdDo6Y2FuY2VsKCkKK3sKKyAgICBB
U1NFUlQobV9jb25uZWN0aW9uKTsKKworICAgIGlmIChtX2FwcEJ1bmRsZSkgeworICAgICAgICBt
X2FwcEJ1bmRsZS0+c3RvcCgpOworICAgICAgICBtX2FwcEJ1bmRsZSA9IG51bGxwdHI7CisgICAg
fQorfQorCit2b2lkIEFwcEJ1bmRsZVJlcXVlc3Q6OmNsZWFudXBBZnRlckNvbXBsZXRpb25IYW5k
bGVyKCkKK3sKKyAgICBpZiAobV9hcHBCdW5kbGUpIHsKKyAgICAgICAgbV9hcHBCdW5kbGUtPmRl
dGFjaEZyb21DbGllbnQoKTsKKyAgICAgICAgbV9hcHBCdW5kbGUgPSBudWxscHRyOworICAgIH0K
KworICAgIG1fdHJhbnNhY3Rpb24gPSBudWxscHRyOworCisgICAgaWYgKG1fY29ubmVjdGlvbikK
KyAgICAgICAgbV9jb25uZWN0aW9uLT5kaWRDb21wbGV0ZUFwcEJ1bmRsZVJlcXVlc3QoKnRoaXMp
OworfQorCisvLyBBcHAgYnVuZGxlIHBlcm1pc3Npb25zCisKK3ZvaWQgQXBwQnVuZGxlUGVybWlz
c2lvbnNSZXF1ZXN0OjpzdGFydEludGVybmFsKCkKK3sKKyAgICBtX2FwcEJ1bmRsZS0+Y2hlY2tG
b3JFeGlzdGluZ0J1bmRsZSgpOworfQorCit2b2lkIEFwcEJ1bmRsZVBlcm1pc3Npb25zUmVxdWVz
dDo6ZGlkQ2hlY2tGb3JFeGlzdGluZ0J1bmRsZShQdXNoQXBwQnVuZGxlJiBidW5kbGUsIFB1c2hB
cHBCdW5kbGVFeGlzdHMgZXhpc3RzKQoreworICAgIEFTU0VSVF9VTlVTRUQoYnVuZGxlLCAmYnVu
ZGxlID09IG1fYXBwQnVuZGxlLmdldCgpKTsKKworICAgIGlmIChleGlzdHMgPT0gUHVzaEFwcEJ1
bmRsZUV4aXN0czo6WWVzKQorICAgICAgICByZXR1cm4gY2FsbENvbXBsZXRpb25IYW5kbGVyQW5k
Q2xlYW51cCh0cnVlKTsKKworICAgIG1fYXBwQnVuZGxlLT5jcmVhdGVCdW5kbGUoKTsKK30KKwor
dm9pZCBBcHBCdW5kbGVQZXJtaXNzaW9uc1JlcXVlc3Q6OmRpZENyZWF0ZUFwcEJ1bmRsZShQdXNo
QXBwQnVuZGxlJiBidW5kbGUsIFB1c2hBcHBCdW5kbGVDcmVhdGlvblJlc3VsdCByZXN1bHQpCit7
CisgICAgQVNTRVJUX1VOVVNFRChidW5kbGUsICZidW5kbGUgPT0gbV9hcHBCdW5kbGUuZ2V0KCkp
OworCisgICAgaWYgKHJlc3VsdCA9PSBQdXNoQXBwQnVuZGxlQ3JlYXRpb25SZXN1bHQ6OkZhaWx1
cmUpCisgICAgICAgIHJldHVybiBjYWxsQ29tcGxldGlvbkhhbmRsZXJBbmRDbGVhbnVwKGZhbHNl
KTsKKworICAgIGNhbGxDb21wbGV0aW9uSGFuZGxlckFuZENsZWFudXAodHJ1ZSk7Cit9CisKKy8v
IEFwcCBidW5kbGUgZGVsZXRpb24KKwordm9pZCBBcHBCdW5kbGVEZWxldGlvblJlcXVlc3Q6OnN0
YXJ0SW50ZXJuYWwoKQoreworICAgIG1fYXBwQnVuZGxlLT5kZWxldGVFeGlzdGluZ0J1bmRsZSgp
OworfQorCit2b2lkIEFwcEJ1bmRsZURlbGV0aW9uUmVxdWVzdDo6ZGlkRGVsZXRlRXhpc3RpbmdC
dW5kbGVXaXRoRXJyb3IoUHVzaEFwcEJ1bmRsZSYgYnVuZGxlLCBOU0Vycm9yICplcnJvcikKK3sK
KyAgICBBU1NFUlRfVU5VU0VEKGJ1bmRsZSwgJmJ1bmRsZSA9PSBtX2FwcEJ1bmRsZS5nZXQoKSk7
CisKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIERhZW1vbjo6c2luZ2xldG9uKCkuYnJvYWRjYXN0
RGVidWdNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6SW5mbywgbWFrZVN0cmluZygiRmFpbGVkIHRvIGRl
bGV0ZSBhcHAgYnVuZGxlOiAiLCBTdHJpbmcoW2Vycm9yIGRlc2NyaXB0aW9uXSkpKTsKKworICAg
IGNhbGxDb21wbGV0aW9uSGFuZGxlckFuZENsZWFudXAoZXJyb3IgPyBTdHJpbmcoW2Vycm9yIGRl
c2NyaXB0aW9uXSkgOiAiIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYlB1c2hECmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL01vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLmggYi9T
b3VyY2UvV2ViS2l0L3dlYnB1c2hkL01vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43MWNmZDA2MTFlZWQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL01vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLmgK
QEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
UHVzaEFwcEJ1bmRsZS5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYlB1c2hEIHsKKworY2xhc3MgTW9ja0Fw
cEJ1bmRsZUZvclRlc3RpbmcgOiBwdWJsaWMgUHVzaEFwcEJ1bmRsZSB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxNb2NrQXBwQnVuZGxlRm9y
VGVzdGluZz4gY3JlYXRlKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGhvc3RBcHBCdW5kbGVJZGVudGlmaWVyLCBQdXNoQXBwQnVuZGxlQ2xpZW50JiBjbGllbnQpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2NrQXBwQnVuZGxlRm9yVGVzdGlu
ZyhvcmlnaW5TdHJpbmcsIGhvc3RBcHBCdW5kbGVJZGVudGlmaWVyLCBjbGllbnQpKTsKKyAgICB9
CisKKyAgICB+TW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAg
ICBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZyhjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgY29u
c3QgU3RyaW5nJiBob3N0QXBwQnVuZGxlSWRlbnRpZmllciwgUHVzaEFwcEJ1bmRsZUNsaWVudCYp
OworCisgICAgdm9pZCBjaGVja0ZvckV4aXN0aW5nQnVuZGxlKCkgZmluYWw7CisgICAgdm9pZCBk
ZWxldGVFeGlzdGluZ0J1bmRsZSgpIGZpbmFsOworICAgIHZvaWQgY3JlYXRlQnVuZGxlKCkgZmlu
YWw7CisgICAgdm9pZCBzdG9wKCkgZmluYWw7CisKKyAgICBTdHJpbmcgbV9vcmlnaW5TdHJpbmc7
CisgICAgU3RyaW5nIG1faG9zdEFwcEJ1bmRsZUlkZW50aWZpZXI7Cit9OworCisKK30gLy8gbmFt
ZXNwYWNlIFdlYlB1c2hECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL01vY2tB
cHBCdW5kbGVGb3JUZXN0aW5nLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9Nb2NrQXBwQnVu
ZGxlRm9yVGVzdGluZy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LmUxZWYwYWNmMmVlYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQv
TW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcubW0KQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcuaCIK
KworI2ltcG9ydCAiTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5LmgiCisjaW1wb3J0IDx3dGYvTWFpblRo
cmVhZC5oPgorCituYW1lc3BhY2UgV2ViUHVzaEQgeworCitNb2NrQXBwQnVuZGxlRm9yVGVzdGlu
Zzo6TW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcoY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIGNv
bnN0IFN0cmluZyYgaG9zdEFwcEJ1bmRsZUlkZW50aWZpZXIsIFB1c2hBcHBCdW5kbGVDbGllbnQm
IGNsaWVudCkKKyAgICA6IFB1c2hBcHBCdW5kbGUoY2xpZW50KQorICAgICwgbV9vcmlnaW5TdHJp
bmcob3JpZ2luU3RyaW5nKQorICAgICwgbV9ob3N0QXBwQnVuZGxlSWRlbnRpZmllcihob3N0QXBw
QnVuZGxlSWRlbnRpZmllcikKK3sKK30KKworTW9ja0FwcEJ1bmRsZUZvclRlc3Rpbmc6On5Nb2Nr
QXBwQnVuZGxlRm9yVGVzdGluZygpCit7CisKK30KKwordm9pZCBNb2NrQXBwQnVuZGxlRm9yVGVz
dGluZzo6Y2hlY2tGb3JFeGlzdGluZ0J1bmRsZSgpCit7CisgICAgY2FsbE9uTWFpblJ1bkxvb3Ao
W3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0aGlzXSB7CisgICAgICAgIGJvb2wgZXhp
c3RzID0gTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5kb2VzQnVuZGxlRXhpc3Qo
bV9ob3N0QXBwQnVuZGxlSWRlbnRpZmllciwgbV9vcmlnaW5TdHJpbmcpOworICAgICAgICBpZiAo
bV9jbGllbnQpCisgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQ2hlY2tGb3JFeGlzdGluZ0J1bmRs
ZSgqdGhpcywgZXhpc3RzID8gUHVzaEFwcEJ1bmRsZUV4aXN0czo6WWVzIDogUHVzaEFwcEJ1bmRs
ZUV4aXN0czo6Tm8pOworICAgIH0pOworfQorCit2b2lkIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5n
OjpkZWxldGVFeGlzdGluZ0J1bmRsZSgpCit7CisgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3Byb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0aGlzXSB7CisgICAgICAgIE1vY2tBcHBCdW5kbGVS
ZWdpc3RyeTo6c2luZ2xldG9uKCkuZGVsZXRlQnVuZGxlKG1faG9zdEFwcEJ1bmRsZUlkZW50aWZp
ZXIsIG1fb3JpZ2luU3RyaW5nKTsKKyAgICAgICAgaWYgKG1fY2xpZW50KQorICAgICAgICAgICAg
bV9jbGllbnQtPmRpZERlbGV0ZUV4aXN0aW5nQnVuZGxlV2l0aEVycm9yKCp0aGlzLCBuaWwpOwor
ICAgIH0pOworfQorCit2b2lkIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nOjpjcmVhdGVCdW5kbGUo
KQoreworICAgIGNhbGxPbk1haW5SdW5Mb29wKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgdGhpc10geworICAgICAgICBNb2NrQXBwQnVuZGxlUmVnaXN0cnk6OnNpbmdsZXRvbigpLmNy
ZWF0ZUJ1bmRsZShtX2hvc3RBcHBCdW5kbGVJZGVudGlmaWVyLCBtX29yaWdpblN0cmluZyk7Cisg
ICAgICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgICAgIG1fY2xpZW50LT5kaWRDcmVhdGVBcHBC
dW5kbGUoKnRoaXMsIFB1c2hBcHBCdW5kbGVDcmVhdGlvblJlc3VsdDo6U3VjY2Vzcyk7CisgICAg
fSk7Cit9CisKK3ZvaWQgTW9ja0FwcEJ1bmRsZUZvclRlc3Rpbmc6OnN0b3AoKQoreworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJQdXNoRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9Nb2NrQXBwQnVuZGxlUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvTW9ja0Fw
cEJ1bmRsZVJlZ2lzdHJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li40MzY3NjQ1NmMwN2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hk
L01vY2tBcHBCdW5kbGVSZWdpc3RyeS5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJQdXNoRCB7CisKK2NsYXNzIE1vY2tB
cHBCdW5kbGVGb3JUZXN0aW5nOworCitjbGFzcyBNb2NrQXBwQnVuZGxlUmVnaXN0cnkgeworICAg
IGZyaWVuZCBjbGFzcyBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZzsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5JiBzaW5nbGV0b24oKTsKKworICAgIFZlY3RvcjxTdHJp
bmc+IGdldE9yaWdpbnNXaXRoUmVnaXN0cmF0aW9ucyhjb25zdCBTdHJpbmcmIGhvc3RBcHBCdW5k
bGVJZGVudGlmaWVyKTsKKworcHJpdmF0ZToKKyAgICBib29sIGRvZXNCdW5kbGVFeGlzdChjb25z
dCBTdHJpbmcmIGhvc3RBcHBCdW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpblN0
cmluZyk7CisgICAgdm9pZCBjcmVhdGVCdW5kbGUoY29uc3QgU3RyaW5nJiBob3N0QXBwQnVuZGxl
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcpOworICAgIHZvaWQgZGVsZXRl
QnVuZGxlKGNvbnN0IFN0cmluZyYgaG9zdEFwcEJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luU3RyaW5nKTsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBIYXNoU2V0PFN0cmluZz4+
IG1fcmVnaXN0ZXJlZEJ1bmRsZU1hcDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYlB1c2hECmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL01vY2tBcHBCdW5kbGVSZWdpc3RyeS5t
bSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDU2NjU0ODU3OTcwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9Nb2NrQXBwQnVuZGxlUmVnaXN0cnku
bW0KQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5LmgiCisKKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgorCituYW1lc3BhY2UgV2ViUHVzaEQgeworCitNb2NrQXBwQnVuZGxlUmVnaXN0cnkm
IE1vY2tBcHBCdW5kbGVSZWdpc3RyeTo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8TW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5PiByZWdpc3RyeTsKKyAgICByZXR1cm4gcmVn
aXN0cnk7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IE1vY2tBcHBCdW5kbGVSZWdpc3RyeTo6Z2V0T3Jp
Z2luc1dpdGhSZWdpc3RyYXRpb25zKGNvbnN0IFN0cmluZyYgaG9zdEFwcEJ1bmRsZUlkZW50aWZp
ZXIpCit7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0czsKKyAgICBhdXRvIGl0ZXJhdG9yID0g
bV9yZWdpc3RlcmVkQnVuZGxlTWFwLmZpbmQoaG9zdEFwcEJ1bmRsZUlkZW50aWZpZXIpOworICAg
IGlmIChpdGVyYXRvciAhPSBtX3JlZ2lzdGVyZWRCdW5kbGVNYXAuZW5kKCkpCisgICAgICAgIHJl
c3VsdHMgPSBjb3B5VG9WZWN0b3IoaXRlcmF0b3ItPnZhbHVlKTsKKyAgICByZXR1cm4gcmVzdWx0
czsKK30KKworYm9vbCBNb2NrQXBwQnVuZGxlUmVnaXN0cnk6OmRvZXNCdW5kbGVFeGlzdChjb25z
dCBTdHJpbmcmIGhvc3RBcHBCdW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpblN0
cmluZykKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9yZWdpc3RlcmVkQnVuZGxlTWFwLmZpbmQo
aG9zdEFwcEJ1bmRsZUlkZW50aWZpZXIpOworICAgIHJldHVybiBpdGVyYXRvciAhPSBtX3JlZ2lz
dGVyZWRCdW5kbGVNYXAuZW5kKCkgJiYgaXRlcmF0b3ItPnZhbHVlLmNvbnRhaW5zKG9yaWdpblN0
cmluZyk7Cit9CisKK3ZvaWQgTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5OjpjcmVhdGVCdW5kbGUoY29u
c3QgU3RyaW5nJiBob3N0QXBwQnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW5T
dHJpbmcpCit7CisgICAgbV9yZWdpc3RlcmVkQnVuZGxlTWFwLmFkZChob3N0QXBwQnVuZGxlSWRl
bnRpZmllciwgSGFzaFNldDxTdHJpbmc+eyB9KS5pdGVyYXRvci0+dmFsdWUuYWRkKG9yaWdpblN0
cmluZyk7Cit9CisKK3ZvaWQgTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5OjpkZWxldGVCdW5kbGUoY29u
c3QgU3RyaW5nJiBob3N0QXBwQnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW5T
dHJpbmcpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fcmVnaXN0ZXJlZEJ1bmRsZU1hcC5maW5k
KGhvc3RBcHBCdW5kbGVJZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9yZWdpc3Rl
cmVkQnVuZGxlTWFwLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpdGVyYXRvci0+dmFs
dWUucmVtb3ZlKG9yaWdpblN0cmluZyk7CisKKyAgICBpZiAoaXRlcmF0b3ItPnZhbHVlLmlzRW1w
dHkoKSkKKyAgICAgICAgbV9yZWdpc3RlcmVkQnVuZGxlTWFwLnJlbW92ZShpdGVyYXRvcik7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYlB1c2hECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dl
YnB1c2hkL1B1c2hBcHBCdW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaEFwcEJ1
bmRsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2ZkNTc2ODI0
NWE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQXBwQnVu
ZGxlLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworQGNsYXNzIE5TRXJyb3I7CisKK25hbWVzcGFjZSBX
ZWJQdXNoRCB7CisKK2VudW0gY2xhc3MgUHVzaEFwcEJ1bmRsZUV4aXN0cyB7CisgICAgTm8sCisg
ICAgWWVzLAorfTsKKworZW51bSBjbGFzcyBQdXNoQXBwQnVuZGxlQ3JlYXRpb25SZXN1bHQgewor
ICAgIEZhaWx1cmUsCisgICAgU3VjY2VzcywKK307CisKK2NsYXNzIFB1c2hBcHBCdW5kbGU7CisK
K2NsYXNzIFB1c2hBcHBCdW5kbGVDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgflB1c2hB
cHBCdW5kbGVDbGllbnQoKTsKKworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGVja0ZvckV4aXN0aW5n
QnVuZGxlKFB1c2hBcHBCdW5kbGUmLCBQdXNoQXBwQnVuZGxlRXhpc3RzKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGRpZERlbGV0ZUV4aXN0aW5nQnVuZGxlV2l0aEVycm9yKFB1c2hBcHBCdW5kbGUm
LCBOU0Vycm9yICopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlQXBwQnVuZGxlKFB1
c2hBcHBCdW5kbGUmLCBQdXNoQXBwQnVuZGxlQ3JlYXRpb25SZXN1bHQpID0gMDsKK307CisKK2Ns
YXNzIFB1c2hBcHBCdW5kbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxQdXNoQXBwQnVuZGxlPiB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB+UHVzaEFwcEJ1bmRsZSgpOworICAgIHZvaWQgZGV0YWNoRnJv
bUNsaWVudCgpOworCisgICAgdmlydHVhbCB2b2lkIGNoZWNrRm9yRXhpc3RpbmdCdW5kbGUoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUV4aXN0aW5nQnVuZGxlKCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBjcmVhdGVCdW5kbGUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKSA9
IDA7CisKK3Byb3RlY3RlZDoKKyAgICBQdXNoQXBwQnVuZGxlKFB1c2hBcHBCdW5kbGVDbGllbnQm
KTsKKworICAgIFB1c2hBcHBCdW5kbGVDbGllbnQqIG1fY2xpZW50OworfTsKKworCit9IC8vIG5h
bWVzcGFjZSBXZWJQdXNoRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNo
QXBwQnVuZGxlLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQXBwQnVuZGxlLm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjgwMTA0YjAyMDQ4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQXBwQnVuZGxlLm1tCkBA
IC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQg
IlB1c2hBcHBCdW5kbGUuaCIKKworbmFtZXNwYWNlIFdlYlB1c2hEIHsKKworUHVzaEFwcEJ1bmRs
ZUNsaWVudDo6flB1c2hBcHBCdW5kbGVDbGllbnQoKQoreworfQorCitQdXNoQXBwQnVuZGxlOjpQ
dXNoQXBwQnVuZGxlKFB1c2hBcHBCdW5kbGVDbGllbnQmIGNsaWVudCkKKyAgICA6IG1fY2xpZW50
KCZjbGllbnQpCit7Cit9CisKK1B1c2hBcHBCdW5kbGU6On5QdXNoQXBwQnVuZGxlKCkKK3sKKyAg
ICBBU1NFUlQoIW1fY2xpZW50KTsKK30KKwordm9pZCBQdXNoQXBwQnVuZGxlOjpkZXRhY2hGcm9t
Q2xpZW50KCkKK3sKKyAgICBzdG9wKCk7CisgICAgbV9jbGllbnQgPSBudWxscHRyOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJQdXNoRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xp
ZW50Q29ubmVjdGlvbi5oCmluZGV4IGJlMGZmMDQyYzlkZS4uZDAwMmNiMzI4YmQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC0yNiwxNyAr
MjYsMjEgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8b3B0aW9uYWw+CisjaW5jbHVkZSA8
d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvT1NP
YmplY3RQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9z
cGkvZGFyd2luL1hQQ1NQSS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBu
YW1lc3BhY2UgV2ViUHVzaEQgewogCi1jbGFzcyBDbGllbnRDb25uZWN0aW9uIHsKK2NsYXNzIEFw
cEJ1bmRsZVJlcXVlc3Q7CisKK2NsYXNzIENsaWVudENvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291
bnRlZDxDbGllbnRDb25uZWN0aW9uPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgQ2xpZW50Q29ubmVjdGlvbih4cGNfY29ubmVjdGlvbl90KTsKKyAgICBzdGF0
aWMgUmVmPENsaWVudENvbm5lY3Rpb24+IGNyZWF0ZSh4cGNfY29ubmVjdGlvbl90KTsKIAogICAg
IGJvb2wgaGFzSG9zdEFwcEF1ZGl0VG9rZW4oKSBjb25zdCB7IHJldHVybiAhIW1faG9zdEFwcEF1
ZGl0VG9rZW47IH0KICAgICB2b2lkIHNldEhvc3RBcHBBdWRpdFRva2VuRGF0YShjb25zdCBWZWN0
b3I8dWludDhfdD4mKTsKQEAgLTQ3LDEzICs1MSwyNSBAQCBwdWJsaWM6CiAgICAgYm9vbCBkZWJ1
Z01vZGVJc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnTW9kZUVuYWJsZWQ7IH0KICAg
ICB2b2lkIHNldERlYnVnTW9kZUlzRW5hYmxlZChib29sKTsKIAorICAgIHZvaWQgZW5xdWV1ZUFw
cEJ1bmRsZVJlcXVlc3Qoc3RkOjp1bmlxdWVfcHRyPEFwcEJ1bmRsZVJlcXVlc3Q+JiYgcmVxdWVz
dCk7CisgICAgdm9pZCBkaWRDb21wbGV0ZUFwcEJ1bmRsZVJlcXVlc3QoQXBwQnVuZGxlUmVxdWVz
dCYpOworCisgICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkKCk7CisKIHByaXZhdGU6CisgICAgQ2xp
ZW50Q29ubmVjdGlvbih4cGNfY29ubmVjdGlvbl90KTsKKworICAgIHZvaWQgbWF5YmVTdGFydE5l
eHRBcHBCdW5kbGVSZXF1ZXN0KCk7CisgICAgCiAgICAgT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rp
b25fdD4gbV94cGNDb25uZWN0aW9uOwogCiAgICAgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90
PiBtX2hvc3RBcHBBdWRpdFRva2VuOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtX2hvc3RB
cHBDb2RlU2lnbmluZ0lkZW50aWZpZXI7CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX2hvc3RB
cHBIYXNQdXNoRW50aXRsZW1lbnQ7CiAKKyAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8QXBwQnVu
ZGxlUmVxdWVzdD4+IG1fcGVuZGluZ0J1bmRsZVJlcXVlc3RzOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxBcHBCdW5kbGVSZXF1ZXN0PiBtX2N1cnJlbnRCdW5kbGVSZXF1ZXN0OworCiAgICAgYm9vbCBt
X2RlYnVnTW9kZUVuYWJsZWQgeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2Vi
cHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KaW5kZXggNzgzZDg1MjU0OGU5Li42MDgyMzA3
Nzg0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5l
Y3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlv
bi5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJQdXNo
Q2xpZW50Q29ubmVjdGlvbi5oIgogCisjaW1wb3J0ICJBcHBCdW5kbGVSZXF1ZXN0LmgiCiAjaW1w
b3J0ICJDb2RlU2lnbmluZy5oIgogI2ltcG9ydCAiV2ViUHVzaERhZW1vbi5oIgogI2ltcG9ydCA8
SmF2YVNjcmlwdENvcmUvQ29uc29sZVR5cGVzLmg+CkBAIC0zNCw2ICszNSwxMSBAQAogCiBuYW1l
c3BhY2UgV2ViUHVzaEQgewogCitSZWY8Q2xpZW50Q29ubmVjdGlvbj4gQ2xpZW50Q29ubmVjdGlv
bjo6Y3JlYXRlKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDbGllbnRDb25uZWN0aW9uKGNvbm5lY3Rpb24pKTsKK30KKwogQ2xpZW50Q29u
bmVjdGlvbjo6Q2xpZW50Q29ubmVjdGlvbih4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24pCiAg
ICAgOiBtX3hwY0Nvbm5lY3Rpb24oY29ubmVjdGlvbikKIHsKQEAgLTkzLDQgKzk5LDQ5IEBAIHZv
aWQgQ2xpZW50Q29ubmVjdGlvbjo6c2V0RGVidWdNb2RlSXNFbmFibGVkKGJvb2wgZW5hYmxlZCkK
ICAgICBEYWVtb246OnNpbmdsZXRvbigpLmJyb2FkY2FzdERlYnVnTWVzc2FnZShNZXNzYWdlTGV2
ZWw6OkluZm8sIG1lc3NhZ2UpOwogfQogCit2b2lkIENsaWVudENvbm5lY3Rpb246OmVucXVldWVB
cHBCdW5kbGVSZXF1ZXN0KHN0ZDo6dW5pcXVlX3B0cjxBcHBCdW5kbGVSZXF1ZXN0PiYmIHJlcXVl
c3QpCit7CisgICAgUkVMRUFTRV9BU1NFUlQobV94cGNDb25uZWN0aW9uKTsKKyAgICBtX3BlbmRp
bmdCdW5kbGVSZXF1ZXN0cy5hcHBlbmQoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgbWF5YmVTdGFy
dE5leHRBcHBCdW5kbGVSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgQ2xpZW50Q29ubmVjdGlvbjo6bWF5
YmVTdGFydE5leHRBcHBCdW5kbGVSZXF1ZXN0KCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChtX3hw
Y0Nvbm5lY3Rpb24pOworCisgICAgaWYgKG1fY3VycmVudEJ1bmRsZVJlcXVlc3QgfHwgbV9wZW5k
aW5nQnVuZGxlUmVxdWVzdHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2N1
cnJlbnRCdW5kbGVSZXF1ZXN0ID0gbV9wZW5kaW5nQnVuZGxlUmVxdWVzdHMudGFrZUZpcnN0KCk7
CisgICAgbV9jdXJyZW50QnVuZGxlUmVxdWVzdC0+c3RhcnQoKTsKK30KKwordm9pZCBDbGllbnRD
b25uZWN0aW9uOjpkaWRDb21wbGV0ZUFwcEJ1bmRsZVJlcXVlc3QoQXBwQnVuZGxlUmVxdWVzdCYg
cmVxdWVzdCkKK3sKKyAgICAvLyBJZiBvdXIgY29ubmVjdGlvbiB3YXMgY2xvc2VkIHRoZXJlIHNo
b3VsZCBiZSBubyBpbi1wcm9ncmVzcyBidW5kbGUgcmVxdWVzdHMuCisgICAgUkVMRUFTRV9BU1NF
UlQobV94cGNDb25uZWN0aW9uKTsKKworICAgIEFTU0VSVChtX2N1cnJlbnRCdW5kbGVSZXF1ZXN0
ID09ICZyZXF1ZXN0KTsKKyAgICBtX2N1cnJlbnRCdW5kbGVSZXF1ZXN0ID0gbnVsbHB0cjsKKwor
ICAgIG1heWJlU3RhcnROZXh0QXBwQnVuZGxlUmVxdWVzdCgpOworfQorCit2b2lkIENsaWVudENv
bm5lY3Rpb246OmNvbm5lY3Rpb25DbG9zZWQoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG1feHBj
Q29ubmVjdGlvbik7CisgICAgbV94cGNDb25uZWN0aW9uID0gbnVsbHB0cjsKKworICAgIGlmICht
X2N1cnJlbnRCdW5kbGVSZXF1ZXN0KSB7CisgICAgICAgIG1fY3VycmVudEJ1bmRsZVJlcXVlc3Qt
PmNhbmNlbCgpOworICAgICAgICBtX2N1cnJlbnRCdW5kbGVSZXF1ZXN0ID0gbnVsbHB0cjsKKyAg
ICB9CisKKyAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8QXBwQnVuZGxlUmVxdWVzdD4+IHBlbmRp
bmdCdW5kbGVSZXF1ZXN0czsKKyAgICBwZW5kaW5nQnVuZGxlUmVxdWVzdHMuc3dhcChtX3BlbmRp
bmdCdW5kbGVSZXF1ZXN0cyk7CisgICAgZm9yIChhdXRvJiByZXF1c3QgOiBwZW5kaW5nQnVuZGxl
UmVxdWVzdHMpCisgICAgICAgIHJlcXVzdC0+Y2FuY2VsKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYlB1c2hECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVt
b24uaCBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5oCmluZGV4IDY5NWJi
YjI1ZTZlZC4uOTQyZTJmNWIzNjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hk
L1dlYlB1c2hEYWVtb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVt
b24uaApAQCAtNzEsMTAgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGNhblJlZ2lzdGVyRm9y
Tm90aWZpY2F0aW9ucyhDbGllbnRDb25uZWN0aW9uJik7CiAKICAgICBDbGllbnRDb25uZWN0aW9u
KiB0b0NsaWVudENvbm5lY3Rpb24oeHBjX2Nvbm5lY3Rpb25fdCk7Ci0KLSAgICBIYXNoU2V0PFN0
cmluZz4gbV9pbk1lbW9yeU9yaWdpblN0cmluZ3NXaXRoUGVybWlzc2lvbkZvclRlc3Rpbmc7Ci0K
LSAgICBIYXNoTWFwPHhwY19jb25uZWN0aW9uX3QsIHN0ZDo6dW5pcXVlX3B0cjxDbGllbnRDb25u
ZWN0aW9uPj4gbV9jb25uZWN0aW9uTWFwOworICAgIEhhc2hNYXA8eHBjX2Nvbm5lY3Rpb25fdCwg
UmVmPENsaWVudENvbm5lY3Rpb24+PiBtX2Nvbm5lY3Rpb25NYXA7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJQdXNoRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNo
RGFlbW9uLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCmluZGV4
IDlkNWIwN2IzYzE0ZS4uNzY1NTkwM2QyOWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dl
YnB1c2hkL1dlYlB1c2hEYWVtb24ubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQ
dXNoRGFlbW9uLm1tCkBAIC0yNiwxMCArMjYsMTIgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2lt
cG9ydCAiV2ViUHVzaERhZW1vbi5oIgogCisjaW1wb3J0ICJBcHBCdW5kbGVSZXF1ZXN0LmgiCiAj
aW1wb3J0ICJEYWVtb25EZWNvZGVyLmgiCiAjaW1wb3J0ICJEYWVtb25FbmNvZGVyLmgiCiAjaW1w
b3J0ICJEYWVtb25VdGlsaXRpZXMuaCIKICNpbXBvcnQgIkhhbmRsZU1lc3NhZ2UuaCIKKyNpbXBv
cnQgIk1vY2tBcHBCdW5kbGVSZWdpc3RyeS5oIgogI2ltcG9ydCAiV2ViUHVzaERhZW1vbkNvbnN0
YW50cy5oIgogCiAjaW1wb3J0IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KQEAgLTE4MCwxMyAr
MTgyLDE0IEBAIHZvaWQgRGFlbW9uOjpjb25uZWN0aW9uRXZlbnRIYW5kbGVyKHhwY19vYmplY3Rf
dCByZXF1ZXN0KQogdm9pZCBEYWVtb246OmNvbm5lY3Rpb25BZGRlZCh4cGNfY29ubmVjdGlvbl90
IGNvbm5lY3Rpb24pCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY29ubmVjdGlvbk1hcC5jb250
YWlucyhjb25uZWN0aW9uKSk7Ci0gICAgbV9jb25uZWN0aW9uTWFwLnNldChjb25uZWN0aW9uLCBX
VEY6Om1ha2VVbmlxdWU8Q2xpZW50Q29ubmVjdGlvbj4oY29ubmVjdGlvbikpOworICAgIG1fY29u
bmVjdGlvbk1hcC5zZXQoY29ubmVjdGlvbiwgQ2xpZW50Q29ubmVjdGlvbjo6Y3JlYXRlKGNvbm5l
Y3Rpb24pKTsKIH0KIAogdm9pZCBEYWVtb246OmNvbm5lY3Rpb25SZW1vdmVkKHhwY19jb25uZWN0
aW9uX3QgY29ubmVjdGlvbikKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Nvbm5lY3Rpb25NYXAu
Y29udGFpbnMoY29ubmVjdGlvbikpOwotICAgIG1fY29ubmVjdGlvbk1hcC5yZW1vdmUoY29ubmVj
dGlvbik7CisgICAgYXV0byBjbGllbnRDb25uZWN0aW9uID0gbV9jb25uZWN0aW9uTWFwLnRha2Uo
Y29ubmVjdGlvbik7CisgICAgY2xpZW50Q29ubmVjdGlvbi0+Y29ubmVjdGlvbkNsb3NlZCgpOwog
fQogCiBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEVuY29kZWRNZXNzYWdlJiYpPiBEYWVtb246OmNy
ZWF0ZVJlcGx5U2VuZGVyKE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBPU09iamVjdFB0cjx4cGNf
b2JqZWN0X3Q+JiYgcmVxdWVzdCkKQEAgLTI1MywxMCArMjU2LDcgQEAgdm9pZCBEYWVtb246OnJl
cXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKENsaWVudENvbm5lY3Rpb24qIGNvbm5l
Y3Rpb24sIGMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBUaGlzIGlz
IGZvciBhbiBBUEkgdGVzdGluZyBjaGVja3BvaW50Ci0gICAgLy8gTmV4dCBzdGVwIGlzIGFjdHVh
bGx5IHBlcmZvcm0gYSBwZXJzaXN0ZW50IHBlcm1pc3Npb25zIHJlcXVlc3Qgb24gYSBwZXItcGxh
dGZvcm0gYmFzaXMKLSAgICBtX2luTWVtb3J5T3JpZ2luU3RyaW5nc1dpdGhQZXJtaXNzaW9uRm9y
VGVzdGluZy5hZGQob3JpZ2luU3RyaW5nKTsKLSAgICByZXBseVNlbmRlcih0cnVlKTsKKyAgICBj
b25uZWN0aW9uLT5lbnF1ZXVlQXBwQnVuZGxlUmVxdWVzdChtYWtlVW5pcXVlPEFwcEJ1bmRsZVBl
cm1pc3Npb25zUmVxdWVzdD4oKmNvbm5lY3Rpb24sIG9yaWdpblN0cmluZywgV1RGTW92ZShyZXBs
eVNlbmRlcikpKTsKIH0KIAogdm9pZCBEYWVtb246OmdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlm
aWNhdGlvblBlcm1pc3Npb25zKENsaWVudENvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mKT4mJiByZXBseVNlbmRlcikKQEAg
LTI2Niw5ICsyNjYsOCBAQCB2b2lkIERhZW1vbjo6Z2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZp
Y2F0aW9uUGVybWlzc2lvbnMoQ2xpZW50Q29ubmVjdGlvbiogY29ubgogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFRoaXMgaXMgZm9yIGFuIEFQSSB0ZXN0aW5nIGNoZWNr
cG9pbnQKLSAgICAvLyBOZXh0IHN0ZXAgaXMgYWN0dWFsbHkgZ2F0aGVyIHBlcnNpc3RlbnQgcGVy
bWlzc2lvbnMgZnJvbSB0aGUgc3lzdGVtIG9uIGEgcGVyLXBsYXRmb3JtIGJhc2lzCi0gICAgcmVw
bHlTZW5kZXIoY29weVRvVmVjdG9yKG1faW5NZW1vcnlPcmlnaW5TdHJpbmdzV2l0aFBlcm1pc3Np
b25Gb3JUZXN0aW5nKSk7CisgICAgLy8gRklYTUU6IFRoaXMgd2lsbCBuZWVkIHBsYXRmb3JtLXNw
ZWNpZmljIGltcGxlbWVudGF0aW9ucyBmb3IgcmVhbCB3b3JsZCBidW5kbGVzIG9uY2UgaW1wbGVt
ZW50ZWQuCisgICAgcmVwbHlTZW5kZXIoTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5OjpzaW5nbGV0b24o
KS5nZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMoY29ubmVjdGlvbi0+aG9zdEFwcENvZGVTaWdu
aW5nSWRlbnRpZmllcigpKSk7CiB9CiAKIHZvaWQgRGFlbW9uOjpkZWxldGVQdXNoQW5kTm90aWZp
Y2F0aW9uUmVnaXN0cmF0aW9uKENsaWVudENvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IFN0
cmluZyYgb3JpZ2luU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYp
PiYmIHJlcGx5U2VuZGVyKQpAQCAtMjc4LDEyICsyNzcsNyBAQCB2b2lkIERhZW1vbjo6ZGVsZXRl
UHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihDbGllbnRDb25uZWN0aW9uKiBjb25uZWN0
aW9uLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFRoaXMgaXMgZm9y
IGFuIEFQSSB0ZXN0aW5nIGNoZWNrcG9pbnQKLSAgICAvLyBOZXh0IHN0ZXAgaXMgYWN0dWFsbHkg
ZGVsZXRlIGFueSBwZXJzaXN0ZW50IHBlcm1pc3Npb25zIG9uIGEgcGVyLXBsYXRmb3JtIGJhc2lz
Ci0gICAgaWYgKG1faW5NZW1vcnlPcmlnaW5TdHJpbmdzV2l0aFBlcm1pc3Npb25Gb3JUZXN0aW5n
LnJlbW92ZShvcmlnaW5TdHJpbmcpKQotICAgICAgICByZXBseVNlbmRlcigiIik7Ci0gICAgZWxz
ZQotICAgICAgICByZXBseVNlbmRlcihtYWtlU3RyaW5nKCJPcmlnaW4gIiwgb3JpZ2luU3RyaW5n
LCAiIG5vdCByZWdpc3RlcmVkIGZvciBwdXNoIG9yIG5vdGlmaWNhdGlvbnMiKSk7CisgICAgY29u
bmVjdGlvbi0+ZW5xdWV1ZUFwcEJ1bmRsZVJlcXVlc3QobWFrZVVuaXF1ZTxBcHBCdW5kbGVEZWxl
dGlvblJlcXVlc3Q+KCpjb25uZWN0aW9uLCBvcmlnaW5TdHJpbmcsIFdURk1vdmUocmVwbHlTZW5k
ZXIpKSk7CiB9CiAKIHZvaWQgRGFlbW9uOjpzZXRIb3N0QXBwQXVkaXRUb2tlbihDbGllbnRDb25u
ZWN0aW9uKiBjbGllbnRDb25uZWN0aW9uLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHRva2VuRGF0
YSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445108</attachid>
            <date>2021-11-24 13:24:01 -0800</date>
            <delta_ts>2021-11-24 14:48:02 -0800</delta_ts>
            <desc>EWS v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>50654</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggODAxYTc1MmJmYzVmLi4xMDFhMTIxYTEwNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsOTYgQEAKKzIwMjEtMTEtMjQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2Ugd2VicHVzaGQgImZha2UgcmVnaXN0cmF0aW9uIGZvciB0ZXN0aW5nIiBt
dWNoIG1vcmUgY29tcGxpY2F0ZWQgYnkgYWRkaW5nIGEgIm1vY2sgYXBwIGJ1bmRsZSIgaW5zdGFs
bAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDU0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJl
ZCBieSBBUEkgdGVzdHMuCisgICAgICAgIAorICAgICAgICBCZWZvcmUgdGhpcyBwYXRjaCwgd2Vi
cHVzaGQgcmVtZW1iZXJlZCAicmVnaXN0cmF0aW9ucyIgdXNpbmcgYSBzaW1wbGUgaW4tbWVtb3J5
IEhhc2hNYXAuCisgICAgICAgIAorICAgICAgICBJbiB0aGUgbmVhciBmdXR1cmUsIHJlZ2lzdHJh
dGlvbnMgd2lsbCBhY3R1YWxseSBiZSByZXByZXNlbnRlZCB3aXRoIGEgcGxhY2Vob2xkZXIgYXBw
IGJ1bmRsZSBvbiBkaXNrLgorICAgICAgICAKKyAgICAgICAgVGhlIHByb2Nlc3Mgb2YgaW5zdGFs
bGluZyBwbGFjZWhvbGRlcnMgKGFuZCBjaGVja2luZyBmb3IgZXhpc3Rpbmcgb25lcykgaXMgY29t
cGxpY2F0ZWQgYW5kIGFzeW5jaHJvbm91cy4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2gg
c2hpZnRzIHRoZSBpbi1tZW1vcnkgdGVzdGluZyBpbXBsZW1lbnRhdGlvbiBmcm9tIGEgc2ltcGxl
IEhhc2hNYXAgdG8gYSAiY29tcGxpY2F0ZWQgYW5kIGFzeW5jaHJvbm91cyIKKyAgICAgICAgcmVn
aXN0cmF0aW9uIG1lY2hhbmlzbSB0aGF0IHNpbXVsYXRlcyBob3cgYXBwLWJ1bmRsZSBpbnN0YWxs
cyB3aWxsIHdvcmsuCisgICAgICAgIAorICAgICAgICBPbmNlIHRoZSAicmVhbCIgbWVjaGFuaXNt
cyBhcmUgaW4gcGxhY2UgdGhlcmUgd2lsbCBiZSBtdWNoIG1vcmUgaW4tZGVwdGggdGVzdGluZyB0
aGF0IHdlIGNhbiBkby4KKyAgICAgICAgRm9yIG5vdywgdGhpcyBpcyBhICJubyBiZWhhdmlvciBj
aGFuZ2UiIHBhdGNoLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9D
b2NvYS9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQdXNoRDo6Q29ubmVjdGlvbjo6Y29ubmVjdGlvblJlY2VpdmVkRXZlbnQgY29uc3QpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oOgorCisgICAg
ICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgIlB1c2hB
cHBCdW5kbGUiIGlzIGFuIGFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIHJlcHJlc2VudGluZyBhIHBs
YWNlaG9sZGVyIGFwcGxpY2F0aW9uIGJ1bmRsZSBmb3IgYSByZWdpc3RyYXRpb24uCisgICAgICAg
IEV2ZW50dWFsbHkgdGhlcmUgd2lsbCBiZSBhIG5hdGl2ZSBvbmUgZm9yIGVhY2ggcGxhdGZvcm0g
dGhhdCBhY3R1YWxseSBkb2VzIHN5c3RlbSBvcGVyYXRpb25zLgorICAgICAgICBGb3Igbm93LCB0
aGUgY29uY3JldGUgaW1wbGVtZW50YXRpb24gaXMgdGhlIGluLW1lbW9yeSAiTW9jayIgYXBwIGJ1
bmRsZS4KKworICAgICAgICAqIHdlYnB1c2hkL1B1c2hBcHBCdW5kbGUuaDogQ29waWVkIGZyb20g
U291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5oLgorICAgICAgICAq
IHdlYnB1c2hkL1B1c2hBcHBCdW5kbGUubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvd2Vi
cHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24uaC4KKyAgICAgICAgKFdlYlB1c2hEOjpQdXNoQXBw
QnVuZGxlQ2xpZW50Ojp+UHVzaEFwcEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXZWJQdXNoRDo6
UHVzaEFwcEJ1bmRsZTo6UHVzaEFwcEJ1bmRsZSk6CisgICAgICAgIChXZWJQdXNoRDo6UHVzaEFw
cEJ1bmRsZTo6flB1c2hBcHBCdW5kbGUpOgorICAgICAgICAoV2ViUHVzaEQ6OlB1c2hBcHBCdW5k
bGU6OmRldGFjaEZyb21DbGllbnQpOgorICAgICAgICAKKyAgICAgICAgQW4gIkFwcEJ1bmRsZVJl
cXVlc3QiIGlzIGEgcXVlYWJsZSBvcGVyYXRpb24gbWVhbnQgdG8gZG8gc29tZXRoaW5nIHdpdGgg
YW4gIkFwcCBidW5kbGUiLgorICAgICAgICBGb3Igbm93IHRoZSBvcGVyYXRpb25zIGFyZSAiY3Jl
YXRlIiBhbmQgImRlbGV0ZSIKKyAgICAgICAgCisgICAgICAgICogd2VicHVzaGQvQXBwQnVuZGxl
UmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYlB1c2hEOjpBcHBCdW5kbGVSZXF1ZXN0SW1w
bDo6QXBwQnVuZGxlUmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRsZVJl
cXVlc3RJbXBsOjp+QXBwQnVuZGxlUmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViUHVzaEQ6OkFw
cEJ1bmRsZVJlcXVlc3RJbXBsOjpjYWxsQ29tcGxldGlvbkhhbmRsZXJBbmRDbGVhbnVwKToKKyAg
ICAgICAgKFdlYlB1c2hEOjpBcHBCdW5kbGVQZXJtaXNzaW9uc1JlcXVlc3Q6OkFwcEJ1bmRsZVBl
cm1pc3Npb25zUmVxdWVzdCk6CisgICAgICAgIChXZWJQdXNoRDo6QXBwQnVuZGxlRGVsZXRpb25S
ZXF1ZXN0OjpBcHBCdW5kbGVEZWxldGlvblJlcXVlc3QpOgorICAgICAgICAqIHdlYnB1c2hkL0Fw
cEJ1bmRsZVJlcXVlc3QubW06IEFkZGVkLgorICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRsZVJl
cXVlc3Q6OkFwcEJ1bmRsZVJlcXVlc3QpOgorICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRsZVJl
cXVlc3Q6On5BcHBCdW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYlB1c2hEOjpBcHBCdW5kbGVS
ZXF1ZXN0OjpzdGFydCk6CisgICAgICAgIChXZWJQdXNoRDo6QXBwQnVuZGxlUmVxdWVzdDo6Y2Fu
Y2VsKToKKyAgICAgICAgKFdlYlB1c2hEOjpBcHBCdW5kbGVSZXF1ZXN0OjpjbGVhbnVwQWZ0ZXJD
b21wbGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJQdXNoRDo6QXBwQnVuZGxlUGVybWlzc2lv
bnNSZXF1ZXN0OjpzdGFydEludGVybmFsKToKKyAgICAgICAgKFdlYlB1c2hEOjpBcHBCdW5kbGVQ
ZXJtaXNzaW9uc1JlcXVlc3Q6OmRpZENoZWNrRm9yRXhpc3RpbmdCdW5kbGUpOgorICAgICAgICAo
V2ViUHVzaEQ6OkFwcEJ1bmRsZVBlcm1pc3Npb25zUmVxdWVzdDo6ZGlkQ3JlYXRlQXBwQnVuZGxl
KToKKyAgICAgICAgKFdlYlB1c2hEOjpBcHBCdW5kbGVEZWxldGlvblJlcXVlc3Q6OnN0YXJ0SW50
ZXJuYWwpOgorICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRsZURlbGV0aW9uUmVxdWVzdDo6ZGlk
RGVsZXRlRXhpc3RpbmdCdW5kbGVXaXRoRXJyb3IpOgorCisgICAgICAgICogd2VicHVzaGQvTW9j
a0FwcEJ1bmRsZUZvclRlc3RpbmcuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5oLgorICAgICAgICAoV2ViUHVzaEQ6Ok1vY2tBcHBCdW5k
bGVGb3JUZXN0aW5nOjpjcmVhdGUpOgorICAgICAgICAqIHdlYnB1c2hkL01vY2tBcHBCdW5kbGVG
b3JUZXN0aW5nLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYlB1c2hEOjpNb2NrQXBwQnVuZGxlRm9y
VGVzdGluZzo6TW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViUHVzaEQ6Ok1v
Y2tBcHBCdW5kbGVGb3JUZXN0aW5nOjp+TW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcpOgorICAgICAg
ICAoV2ViUHVzaEQ6Ok1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nOjpjaGVja0ZvckV4aXN0aW5nQnVu
ZGxlKToKKyAgICAgICAgKFdlYlB1c2hEOjpNb2NrQXBwQnVuZGxlRm9yVGVzdGluZzo6ZGVsZXRl
RXhpc3RpbmdCdW5kbGUpOgorICAgICAgICAoV2ViUHVzaEQ6Ok1vY2tBcHBCdW5kbGVGb3JUZXN0
aW5nOjpjcmVhdGVCdW5kbGUpOgorICAgICAgICAoV2ViUHVzaEQ6Ok1vY2tBcHBCdW5kbGVGb3JU
ZXN0aW5nOjpzdG9wKToKKworICAgICAgICAqIHdlYnB1c2hkL01vY2tBcHBCdW5kbGVSZWdpc3Ry
eS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0
aW9uLmguCisgICAgICAgICogd2VicHVzaGQvTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1tOiBBZGRl
ZC4KKyAgICAgICAgKFdlYlB1c2hEOjpNb2NrQXBwQnVuZGxlUmVnaXN0cnk6OnNpbmdsZXRvbik6
CisgICAgICAgIChXZWJQdXNoRDo6TW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5OjpnZXRPcmlnaW5zV2l0
aFJlZ2lzdHJhdGlvbnMpOgorICAgICAgICAoV2ViUHVzaEQ6Ok1vY2tBcHBCdW5kbGVSZWdpc3Ry
eTo6ZG9lc0J1bmRsZUV4aXN0KToKKyAgICAgICAgKFdlYlB1c2hEOjpNb2NrQXBwQnVuZGxlUmVn
aXN0cnk6OmNyZWF0ZUJ1bmRsZSk6CisgICAgICAgIChXZWJQdXNoRDo6TW9ja0FwcEJ1bmRsZVJl
Z2lzdHJ5OjpkZWxldGVCdW5kbGUpOgorCisgICAgICAgICogd2VicHVzaGQvUHVzaENsaWVudENv
bm5lY3Rpb24uaDoKKyAgICAgICAgKiB3ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbToK
KyAgICAgICAgKFdlYlB1c2hEOjpDbGllbnRDb25uZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
V2ViUHVzaEQ6OkNsaWVudENvbm5lY3Rpb246OmVucXVldWVBcHBCdW5kbGVSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYlB1c2hEOjpDbGllbnRDb25uZWN0aW9uOjptYXliZVN0YXJ0TmV4dEFwcEJ1bmRs
ZVJlcXVlc3QpOgorICAgICAgICAoV2ViUHVzaEQ6OkNsaWVudENvbm5lY3Rpb246OmRpZENvbXBs
ZXRlQXBwQnVuZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJQdXNoRDo6Q2xpZW50Q29ubmVjdGlv
bjo6Y29ubmVjdGlvbkNsb3NlZCk6CisKKyAgICAgICAgKiB3ZWJwdXNoZC9XZWJQdXNoRGFlbW9u
Lmg6CisgICAgICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbToKKyAgICAgICAgKFdlYlB1
c2hEOjpEYWVtb246OmNvbm5lY3Rpb25BZGRlZCk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9u
Ojpjb25uZWN0aW9uUmVtb3ZlZCk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpyZXF1ZXN0
U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbik6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9u
OjpnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyk6CisgICAgICAg
IChXZWJQdXNoRDo6RGFlbW9uOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9u
KToKKwogMjAyMS0xMS0yMyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgog
CiAgICAgICAgIE5vbi11bmlmaWVkIGJ1aWxkIGZpeGVzLCBtaWQgTm92ZW1iZXIgMjAyMSBlZGl0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlv
bnMvQ29jb2EvV2ViUHVzaERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9Db2NvYS9XZWJQdXNoRGFlbW9uQ29ubmVjdGlv
bkNvY29hLm1tCmluZGV4IGJkNjE5YTNjMzQzOC4uMTE0N2RjNDQwMTRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvQ29jb2EvV2ViUHVzaERh
ZW1vbkNvbm5lY3Rpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05vdGlmaWNhdGlvbnMvQ29jb2EvV2ViUHVzaERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbQpAQCAt
NjEsNyArNjEsNyBAQCB2b2lkIENvbm5lY3Rpb246OmNvbm5lY3Rpb25SZWNlaXZlZEV2ZW50KHhw
Y19vYmplY3RfdCByZXF1ZXN0KSBjb25zdAogICAgIGlmICghZGVidWdNZXNzYWdlKQogICAgICAg
ICByZXR1cm47CiAgICAgYXV0byBtZXNzYWdlTGV2ZWwgPSBzdGF0aWNfY2FzdDxKU0M6Ok1lc3Nh
Z2VMZXZlbD4oeHBjX2RpY3Rpb25hcnlfZ2V0X3VpbnQ2NChyZXF1ZXN0LCBwcm90b2NvbERlYnVn
TWVzc2FnZUxldmVsS2V5KSk7Ci0gICAgbmV0d29ya1Nlc3Npb24oKS5uZXR3b3JrUHJvY2Vzcygp
LmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKG5ldHdvcmtTZXNzaW9uKCkuc2Vzc2lvbklEKCksIE1l
c3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBtZXNzYWdlTGV2ZWwsIFN0cmlu
Zzo6ZnJvbVVURjgoZGVidWdNZXNzYWdlKSk7CisgICAgbmV0d29ya1Nlc3Npb24oKS5uZXR3b3Jr
UHJvY2VzcygpLmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKG5ldHdvcmtTZXNzaW9uKCkuc2Vzc2lv
bklEKCksIE1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBtZXNzYWdlTGV2ZWwsIFN0cmluZzo6ZnJvbVVU
RjgoZGVidWdNZXNzYWdlKSk7CiB9CiAKIFJldGFpblB0cjx4cGNfb2JqZWN0X3Q+IENvbm5lY3Rp
b246OmRpY3Rpb25hcnlGcm9tTWVzc2FnZShNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgRW5jb2Rl
ZE1lc3NhZ2UmJiBtZXNzYWdlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggNDQzNzhmNjYyNjZk
Li4yN2Y3MzkzZTQ1NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaApAQCAtMTU5LDcgKzE1OSw3IEBAIHN0cnVj
dCBVSUVkZ2VJbnNldHM7CiAtICh2b2lkKV93ZWJWaWV3RGlkRGlzYWJsZUluc3BlY3RvckJyb3dz
ZXJEb21haW46KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4w
KSwgaW9zKDE1LjApKTsKIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBz
dGFydFhSU2Vzc2lvbldpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQpKWNvbXBsZXRp
b25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7Ci0tICh2
b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3ROb3RpZmljYXRpb25QZXJt
aXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilzZWN1cml0eU9yaWdp
biBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWRlY2lzaW9uSGFuZGxlciBXS19BUElf
QVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgcmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjoo
V0tTZWN1cml0eU9yaWdpbiAqKXNlY3VyaXR5T3JpZ2luIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAo
XikoQk9PTCkpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCks
IGlvcyhXS19JT1NfVEJBKSk7CiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY1NDBlYjBiY2Y2
Yy4uNzMzMTUxYjAwNjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTEwMDQsNiArMTAwNCwxMiBAQAogCQk1MTVCRTFBQjFENTU1QUEw
MDBERDdDNjggLyogV2ViR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE1QkUxQTAxRDU1MEFCMDAwREQ3QzY4IC8qIFdlYkdhbWVwYWQuaCAq
LzsgfTsKIAkJNTE1QkUxQjMxRDU5MDJERDAwREQ3QzY4IC8qIEdhbWVwYWREYXRhLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTFCMDFENTkwMDY5
MDBERDdDNjggLyogR2FtZXBhZERhdGEuaCAqLzsgfTsKIAkJNTE1QkUxQjUxRDU5MTdGRjAwREQ3
QzY4IC8qIFVJR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE1QkUxQUQxRDU1NUM1MTAwREQ3QzY4IC8qIFVJR2FtZXBhZC5oICovOyB9Owor
CQk1MTYwRTk1NTI3NEI4ODcyMDA1NjczODggLyogQXBwQnVuZGxlUmVxdWVzdC5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjBFOTUzMjc0Qjg4NzEw
MDU2NzM4OCAvKiBBcHBCdW5kbGVSZXF1ZXN0Lm1tICovOyB9OworCQk1MTYwRTk1NjI3NEI4ODcy
MDA1NjczODggLyogQXBwQnVuZGxlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2MEU5NTQyNzRCODg3MTAwNTY3Mzg4IC8qIEFwcEJ1bmRs
ZVJlcXVlc3QuaCAqLzsgfTsKKwkJNTE2MEU5NTkyNzRDMEQ4OTAwNTY3Mzg4IC8qIFB1c2hBcHBC
dW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
NjBFOTU3Mjc0QzBEODgwMDU2NzM4OCAvKiBQdXNoQXBwQnVuZGxlLmggKi87IH07CisJCTUxNjBF
OTVBMjc0QzBEODkwMDU2NzM4OCAvKiBQdXNoQXBwQnVuZGxlLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2MEU5NTgyNzRDMEQ4ODAwNTY3Mzg4IC8q
IFB1c2hBcHBCdW5kbGUubW0gKi87IH07CisJCTUxNjBFOTVFMjc0QzJBMDMwMDU2NzM4OCAvKiBN
b2NrQXBwQnVuZGxlUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxNjBFOTVDMjc0QzJBMDMwMDU2NzM4OCAvKiBNb2NrQXBwQnVuZGxlUmVn
aXN0cnkuaCAqLzsgfTsKKwkJNTE2MEU5NjAyNzRDMkE0MDAwNTY3Mzg4IC8qIE1vY2tBcHBCdW5k
bGVSZWdpc3RyeS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNjBFOTVGMjc0QzJBM0YwMDU2NzM4OCAvKiBNb2NrQXBwQnVuZGxlUmVnaXN0cnkubW0g
Ki87IH07CiAJCTUxNjMxOTk0MTYyODlBNjAwMEUyMkYwMCAvKiBOZXR3b3JrUHJvY2Vzc01lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUFDQzkzNDE2MjgwNjQ4MDAzNDI1NTAgLyogTmV0d29ya1Byb2Nlc3NNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovOyB9OwogCQk1MTYzMTk5NTE2Mjg5QTYzMDBFMjJGMDAgLyogTmV0d29ya1By
b2Nlc3NNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFBQ0M5MzUxNjI4MDY0ODAwMzQyNTUwIC8qIE5ldHdvcmtQcm9jZXNzTWVzc2FnZXMu
aCAqLzsgfTsKIAkJNTE2QTRBNUQxMjBBMkNDRDAwQzA1QjdGIC8qIEFQSUVycm9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTZBNEE1QjEyMEEyQ0NE
MDBDMDVCN0YgLyogQVBJRXJyb3IuaCAqLzsgfTsKQEAgLTEwNTUsNiArMTA2MSw4IEBACiAJCTUx
RjA2MEUxMTY1NDMxODUwMEYzMjgyRSAvKiBOZXR3b3JrUlRDUHJvdmlkZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFG
MDYwREQxNjU0MzE3NTAwRjMyODJFIC8qIE5ldHdvcmtSVENQcm92aWRlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi87IH07CiAJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgyRiAvKiBXZWJNRE5TUmVnaXN0
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFGMDYwREQxNjU0MzE3NTAwRjMyODJGIC8qIFdlYk1ETlNSZWdpc3Rlck1l
c3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgzRiAvKiBO
ZXR3b3JrTUROU1JlZ2lzdGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjA2MEREMTY1NDMxNzUwMEYzMjgzRiAvKiBO
ZXR3b3JrTUROU1JlZ2lzdGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJNTFGN0JCNzYy
NzQ0OThCQjAwQzQ1QTcyIC8qIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGN0JCNzQyNzQ0OThCQTAwQzQ1
QTcyIC8qIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLm1tICovOyB9OworCQk1MUY3QkI3NzI3NDQ5
OEJCMDBDNDVBNzIgLyogTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjdCQjc1Mjc0NDk4QkIwMEM0NUE3MiAv
KiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5oICovOyB9OwogCQk1MUY3QkI3QjI3NDRDNTA3MDBD
NDVBNzIgLyogUHVzaENsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjdCQjc5Mjc0NEM1MDcwMEM0NUE3MiAvKiBQdXNoQ2xp
ZW50Q29ubmVjdGlvbi5oICovOyB9OwogCQk1MUY3QkI3QzI3NDRDNTA3MDBDNDVBNzIgLyogUHVz
aENsaWVudENvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUY3QkI3QTI3NDRDNTA3MDBDNDVBNzIgLyogUHVzaENsaWVudENvbm5lY3Rp
b24ubW0gKi87IH07CiAJCTUxRjdCQjdEMjc0NTY0MDQwMEM0NUE3MiAvKiBDb2RlU2lnbmluZy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMTFBRDRG
MUNCQzQ3RjgwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5tbSAqLzsgfTsKQEAgLTQyMjgsNiArNDIz
NiwxMiBAQAogCQk1MTVDNDE1QTIwN0Q3NEUwMDA3MjZFMDIgLyogU3VzcGVuZGVkUGFnZVByb3h5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN1c3BlbmRlZFBhZ2VQ
cm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUM0MTVCMjA3RDc0RTEw
MDcyNkUwMiAvKiBTdXNwZW5kZWRQYWdlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3VzcGVuZGVkUGFnZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxNjBCRkUwMTMzODFERjkwMDkxODk5OSAvKiBMb2dnaW5nRm91bmRhdGlvbi5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvZ2dpbmdGb3VuZGF0aW9uLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTYwRTk1MzI3NEI4ODcxMDA1NjczODgg
LyogQXBwQnVuZGxlUmVxdWVzdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEFwcEJ1bmRsZVJlcXVlc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxNjBFOTU0Mjc0Qjg4NzEwMDU2NzM4OCAvKiBBcHBCdW5kbGVSZXF1ZXN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcEJ1bmRsZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTE2MEU5NTcyNzRDMEQ4ODAwNTY3Mzg4IC8qIFB1c2hBcHBCdW5k
bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHVzaEFwcEJ1bmRsZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTYwRTk1ODI3NEMwRDg4MDA1NjczODggLyog
UHVzaEFwcEJ1bmRsZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFB1c2hBcHBCdW5kbGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNjBFOTVD
Mjc0QzJBMDMwMDU2NzM4OCAvKiBNb2NrQXBwQnVuZGxlUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUxNjBFOTVGMjc0QzJBM0YwMDU2NzM4OCAvKiBNb2NrQXBwQnVu
ZGxlUmVnaXN0cnkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBN
b2NrQXBwQnVuZGxlUmVnaXN0cnkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
NjRDMDk0MUIwNUI3NTcwMDRGMTAyQSAvKiBBdXhpbGlhcnlQcm9jZXNzLm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IEF1eGlsaWFyeVByb2Nlc3MubWVzc2FnZXMuaW47IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNkE0QTVCMTIwQTJDQ0QwMEMwNUI3RiAvKiBBUElF
cnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElFcnJvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdBMzNCMzEzMEIzMDhDMDBGODBDQjUgLyogV0tB
cHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTQzMzUsNiArNDM0OSw4IEBACiAJCTUxRjA2MEREMTY1NDMxNzUwMEYzMjgy
RiAvKiBXZWJNRE5TUmVnaXN0ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gV2ViTUROU1JlZ2lzdGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvV2ViTUROU1JlZ2lzdGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNTFGMDYwREQxNjU0MzE3NTAwRjMyODNGIC8q
IE5ldHdvcmtNRE5TUmVnaXN0ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gTmV0d29ya01ETlNSZWdpc3Rlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVk
U291cmNlcy9XZWJLaXQyL05ldHdvcmtNRE5TUmVnaXN0ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1MUYwNjBERTE2NTQzMTc1MDBG
MzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJS
ZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dl
YlJlc291cmNlTG9hZGVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKKwkJNTFGN0JCNzQyNzQ0OThCQTAwQzQ1QTcyIC8qIE1vY2tBcHBCdW5kbGVGb3JUZXN0
aW5nLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTW9ja0FwcEJ1
bmRsZUZvclRlc3RpbmcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRjdCQjc1
Mjc0NDk4QkIwMEM0NUE3MiAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MUY3QkI3OTI3NDRDNTA3MDBDNDVBNzIgLyogUHVzaENs
aWVudENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHVzaENs
aWVudENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGN0JCN0Ey
NzQ0QzUwNzAwQzQ1QTcyIC8qIFB1c2hDbGllbnRDb25uZWN0aW9uLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHVzaENsaWVudENvbm5lY3Rpb24ubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRjdCQjdFMjc0NTY0QTEwMEM0NUE3MiAvKiBTZWN1
cml0eS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IFNlY3VyaXR5LmZyYW1ld29yazsgcGF0
aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrOyBzb3VyY2VU
cmVlID0gU0RLUk9PVDsgfTsKQEAgLTk3MzksNiArOTc1NSwxNCBAQAogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1Q0JCNkQ0RDI3MUY2N0NDMDBGRDFBNUQgLyogY29t
LmFwcGxlLndlYmtpdC53ZWJwdXNoZC5wbGlzdCAqLywKKwkJCQk1MTYwRTk1NDI3NEI4ODcxMDA1
NjczODggLyogQXBwQnVuZGxlUmVxdWVzdC5oICovLAorCQkJCTUxNjBFOTUzMjc0Qjg4NzEwMDU2
NzM4OCAvKiBBcHBCdW5kbGVSZXF1ZXN0Lm1tICovLAorCQkJCTUxRjdCQjc1Mjc0NDk4QkIwMEM0
NUE3MiAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5oICovLAorCQkJCTUxRjdCQjc0Mjc0NDk4
QkEwMEM0NUE3MiAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5tbSAqLywKKwkJCQk1MTYwRTk1
QzI3NEMyQTAzMDA1NjczODggLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5LmggKi8sCisJCQkJNTE2
MEU5NUYyNzRDMkEzRjAwNTY3Mzg4IC8qIE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5tbSAqLywKKwkJ
CQk1MTYwRTk1NzI3NEMwRDg4MDA1NjczODggLyogUHVzaEFwcEJ1bmRsZS5oICovLAorCQkJCTUx
NjBFOTU4Mjc0QzBEODgwMDU2NzM4OCAvKiBQdXNoQXBwQnVuZGxlLm1tICovLAogCQkJCTUxRjdC
Qjc5Mjc0NEM1MDcwMEM0NUE3MiAvKiBQdXNoQ2xpZW50Q29ubmVjdGlvbi5oICovLAogCQkJCTUx
RjdCQjdBMjc0NEM1MDcwMEM0NUE3MiAvKiBQdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSAqLywKIAkJ
CQk1MTJDRDY5RDI3MjMzOTNBMDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbi5oICovLApAQCAtMTIy
MTQsOSArMTIyMzgsMTMgQEAKIAkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAotCQkJCTVDMTU3OUZDMjcx
N0FGNTAwMEVENTI4MCAvKiBEYWVtb25VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUx
NjBFOTU5Mjc0QzBEODkwMDU2NzM4OCAvKiBQdXNoQXBwQnVuZGxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MUY3QkI3QjI3NDRDNTA3MDBDNDVBNzIgLyogUHVzaENsaWVudENvbm5lY3Rpb24uaCBp
biBIZWFkZXJzICovLAorCQkJCTUxNjBFOTVFMjc0QzJBMDMwMDU2NzM4OCAvKiBNb2NrQXBwQnVu
ZGxlUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTVDMTU3OUZDMjcxN0FGNTAwMEVENTI4
MCAvKiBEYWVtb25VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxNjBFOTU2Mjc0Qjg4
NzIwMDU2NzM4OCAvKiBBcHBCdW5kbGVSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJD
RDY5RjI3MjMzOTNBMDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTFGN0JCNzcyNzQ0OThCQjAwQzQ1QTcyIC8qIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLmgg
aW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKQEAgLTE0NzA2LDYgKzE0NzM0LDExIEBACiAJCQkJNUMxNTdBMDEyNzE3
QjdGQjAwRUQ1MjgwIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUx
RjdCQjdEMjc0NTY0MDQwMEM0NUE3MiAvKiBDb2RlU2lnbmluZy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTVDMTU3OUZGMjcxN0I2RDIwMEVENTI4MCAvKiBEYWVtb25EZWNvZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTUxRjdCQjc2Mjc0NDk4QkIwMEM0NUE3MiAvKiBNb2NrQXBwQnVuZGxlRm9y
VGVzdGluZy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxNjBFOTU1Mjc0Qjg4NzIwMDU2NzM4OCAv
KiBBcHBCdW5kbGVSZXF1ZXN0Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTE2MEU5NUEyNzRDMEQ4
OTAwNTY3Mzg4IC8qIFB1c2hBcHBCdW5kbGUubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTYwRTk2
MDI3NEMyQTQwMDA1NjczODggLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJNTFGN0JCN0MyNzQ0QzUwNzAwQzQ1QTcyIC8qIFB1c2hDbGllbnRDb25uZWN0aW9u
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNTc5RkUyNzE3QjZDMTAwRUQ1MjgwIC8qIERhZW1v
bkVuY29kZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNTc5RkIyNzE3QUY1MDAwRUQ1Mjgw
IC8qIERhZW1vblV0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxRjdCQjdDMjc0NEM1
MDcwMEM0NUE3MiAvKiBQdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9BcHBCdW5kbGVSZXF1ZXN0LmggYi9Tb3Vy
Y2UvV2ViS2l0L3dlYnB1c2hkL0FwcEJ1bmRsZVJlcXVlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjRmN2ZiZjk0ODQ5YwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2VicHVzaGQvQXBwQnVuZGxlUmVxdWVzdC5oCkBAIC0wLDAgKzEsMTI3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgIlB1c2hBcHBCdW5kbGUuaCIK
KyNpbXBvcnQgIlB1c2hDbGllbnRDb25uZWN0aW9uLmgiCisjaW1wb3J0IDx3dGYvQ29tcGxldGlv
bkhhbmRsZXIuaD4KKyNpbXBvcnQgPHd0Zi9PU09iamVjdFB0ci5oPgorI2ltcG9ydCA8d3RmL3Nw
aS9kYXJ3aW4vWFBDU1BJLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdlYlB1c2hEIHsKKworY2xhc3MgUHVzaEFwcEJ1bmRsZTsKK2NsYXNzIENsaWVudENv
bm5lY3Rpb247CisKK2NsYXNzIEFwcEJ1bmRsZVJlcXVlc3QgOiBwdWJsaWMgUHVzaEFwcEJ1bmRs
ZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdmly
dHVhbCB+QXBwQnVuZGxlUmVxdWVzdCgpOworCisgICAgdmlydHVhbCBjb25zdCBjaGFyKiB0cmFu
c2FjdGlvbkRlc2NyaXB0aW9uKCkgY29uc3QgPSAwOworCisgICAgdm9pZCBzdGFydCgpOworICAg
IHZvaWQgY2FuY2VsKCk7CisKK3Byb3RlY3RlZDoKKyAgICBBcHBCdW5kbGVSZXF1ZXN0KENsaWVu
dENvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZyk7CisKKyAgICB2b2lkIGNs
ZWFudXBBZnRlckNvbXBsZXRpb25IYW5kbGVyKCk7CisKKyAgICBDbGllbnRDb25uZWN0aW9uKiBt
X2Nvbm5lY3Rpb247CisgICAgU3RyaW5nIG1fb3JpZ2luU3RyaW5nOworICAgIFJlZlB0cjxQdXNo
QXBwQnVuZGxlPiBtX2FwcEJ1bmRsZTsKKyAgICBPU09iamVjdFB0cjxvc190cmFuc2FjdGlvbl90
PiBtX3RyYW5zYWN0aW9uOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBzdGFydEludGVy
bmFsKCkgPSAwOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ29tcGxldGlvblR5cGU+CitjbGFz
cyBBcHBCdW5kbGVSZXF1ZXN0SW1wbCA6IHB1YmxpYyBBcHBCdW5kbGVSZXF1ZXN0IHsKK3Byb3Rl
Y3RlZDoKKyAgICBBcHBCdW5kbGVSZXF1ZXN0SW1wbChDbGllbnRDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChD
b21wbGV0aW9uVHlwZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIDogQXBwQnVuZGxl
UmVxdWVzdChjb25uZWN0aW9uLCBvcmlnaW5TdHJpbmcpCisgICAgICAgICwgbV9jb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICB7CisgICAgfQorCisgICAg
dmlydHVhbCB+QXBwQnVuZGxlUmVxdWVzdEltcGwoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFt
X2FwcEJ1bmRsZSk7CisgICAgfQorCisgICAgdm9pZCBjYWxsQ29tcGxldGlvbkhhbmRsZXJBbmRD
bGVhbnVwKENvbXBsZXRpb25UeXBlIHJlc3VsdCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2Nv
bXBsZXRpb25IYW5kbGVyKTsKKyAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwor
CisgICAgICAgIGNsZWFudXBBZnRlckNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfQorCisgICAg
dmlydHVhbCB2b2lkIHN0YXJ0SW50ZXJuYWwoKSA9IDA7CisgICAgdmlydHVhbCBjb25zdCBjaGFy
KiB0cmFuc2FjdGlvbkRlc2NyaXB0aW9uKCkgY29uc3QgPSAwOworCitwcml2YXRlOgorICAgIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoQ29tcGxldGlvblR5cGUpPiBtX2NvbXBsZXRpb25IYW5kbGVy
OworfTsKKworY2xhc3MgQXBwQnVuZGxlUGVybWlzc2lvbnNSZXF1ZXN0IDogcHVibGljIEFwcEJ1
bmRsZVJlcXVlc3RJbXBsPGJvb2w+Cit7CitwdWJsaWM6CisgICAgQXBwQnVuZGxlUGVybWlzc2lv
bnNSZXF1ZXN0KENsaWVudENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgb3Jp
Z2luU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgICAgICA6IEFwcEJ1bmRsZVJlcXVlc3RJbXBsKGNvbm5lY3Rpb24sIG9yaWdpblN0
cmluZywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCisgICAgeworICAgIH0KKworcHJpdmF0
ZToKKyAgICBjb25zdCBjaGFyKiB0cmFuc2FjdGlvbkRlc2NyaXB0aW9uKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gIldlYlB1c2ggUGVybWlzc2lvbnMgQnVuZGxlIFJlcXVlc3QiOyB9CisKKyAgICB2
b2lkIHN0YXJ0SW50ZXJuYWwoKSBmaW5hbDsKKyAgICB2b2lkIGRpZENoZWNrRm9yRXhpc3RpbmdC
dW5kbGUoUHVzaEFwcEJ1bmRsZSYsIFB1c2hBcHBCdW5kbGVFeGlzdHMpIGZpbmFsOworICAgIHZv
aWQgZGlkRGVsZXRlRXhpc3RpbmdCdW5kbGVXaXRoRXJyb3IoUHVzaEFwcEJ1bmRsZSYsIE5TRXJy
b3IgKikgZmluYWwgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdm9pZCBk
aWRDcmVhdGVBcHBCdW5kbGUoUHVzaEFwcEJ1bmRsZSYsIFB1c2hBcHBCdW5kbGVDcmVhdGlvblJl
c3VsdCkgZmluYWw7Cit9OworCitjbGFzcyBBcHBCdW5kbGVEZWxldGlvblJlcXVlc3QgOiBwdWJs
aWMgQXBwQnVuZGxlUmVxdWVzdEltcGw8Y29uc3QgU3RyaW5nJj4KK3sKK3B1YmxpYzoKKyAgICBB
cHBCdW5kbGVEZWxldGlvblJlcXVlc3QoQ2xpZW50Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29u
c3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3Ry
aW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIDogQXBwQnVuZGxlUmVxdWVzdElt
cGwoY29ubmVjdGlvbiwgb3JpZ2luU3RyaW5nLCAgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
CisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBjaGFyKiB0cmFuc2FjdGlvbkRl
c2NyaXB0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIldlYlB1c2ggQnVuZGxlIERlbGV0aW9u
IFJlcXVlc3QiOyB9CisKKyAgICB2b2lkIHN0YXJ0SW50ZXJuYWwoKSBmaW5hbDsKKyAgICB2b2lk
IGRpZENoZWNrRm9yRXhpc3RpbmdCdW5kbGUoUHVzaEFwcEJ1bmRsZSYsIFB1c2hBcHBCdW5kbGVF
eGlzdHMpIGZpbmFsICB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2b2lk
IGRpZERlbGV0ZUV4aXN0aW5nQnVuZGxlV2l0aEVycm9yKFB1c2hBcHBCdW5kbGUmLCBOU0Vycm9y
ICopIGZpbmFsOworICAgIHZvaWQgZGlkQ3JlYXRlQXBwQnVuZGxlKFB1c2hBcHBCdW5kbGUmLCBQ
dXNoQXBwQnVuZGxlQ3JlYXRpb25SZXN1bHQpIGZpbmFsICB7IFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYlB1c2hECmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dlYnB1c2hkL0FwcEJ1bmRsZVJlcXVlc3QubW0gYi9Tb3VyY2UvV2ViS2l0
L3dlYnB1c2hkL0FwcEJ1bmRsZVJlcXVlc3QubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi5jYWUwNTIzNzNlYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3dlYnB1c2hkL0FwcEJ1bmRsZVJlcXVlc3QubW0KQEAgLTAsMCArMSwxMjMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkFwcEJ1bmRsZVJlcXVlc3QuaCIK
KworI2ltcG9ydCAiTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcuaCIKKyNpbXBvcnQgIldlYlB1c2hE
YWVtb24uaCIKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5oPgorCituYW1l
c3BhY2UgV2ViUHVzaEQgeworCitBcHBCdW5kbGVSZXF1ZXN0OjpBcHBCdW5kbGVSZXF1ZXN0KENs
aWVudENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nKQor
ICAgIDogbV9jb25uZWN0aW9uKCZjb25uZWN0aW9uKQorICAgICwgbV9vcmlnaW5TdHJpbmcob3Jp
Z2luU3RyaW5nKQoreworfQorCitBcHBCdW5kbGVSZXF1ZXN0Ojp+QXBwQnVuZGxlUmVxdWVzdCgp
Cit7CisgICAgQVNTRVJUKCFtX2FwcEJ1bmRsZSk7Cit9CisKK3ZvaWQgQXBwQnVuZGxlUmVxdWVz
dDo6c3RhcnQoKQoreworICAgIEFTU0VSVChtX2Nvbm5lY3Rpb24pOworCisgICAgbV90cmFuc2Fj
dGlvbiA9IGFkb3B0T1NPYmplY3Qob3NfdHJhbnNhY3Rpb25fY3JlYXRlKHRyYW5zYWN0aW9uRGVz
Y3JpcHRpb24oKSkpOworCisgICAgbV9hcHBCdW5kbGUgPSBNb2NrQXBwQnVuZGxlRm9yVGVzdGlu
Zzo6Y3JlYXRlKG1fb3JpZ2luU3RyaW5nLCBtX2Nvbm5lY3Rpb24tPmhvc3RBcHBDb2RlU2lnbmlu
Z0lkZW50aWZpZXIoKSwgKnRoaXMpOworICAgIHN0YXJ0SW50ZXJuYWwoKTsKK30KKwordm9pZCBB
cHBCdW5kbGVSZXF1ZXN0OjpjYW5jZWwoKQoreworICAgIEFTU0VSVChtX2Nvbm5lY3Rpb24pOwor
CisgICAgaWYgKG1fYXBwQnVuZGxlKSB7CisgICAgICAgIG1fYXBwQnVuZGxlLT5zdG9wKCk7Cisg
ICAgICAgIG1fYXBwQnVuZGxlID0gbnVsbHB0cjsKKyAgICB9Cit9CisKK3ZvaWQgQXBwQnVuZGxl
UmVxdWVzdDo6Y2xlYW51cEFmdGVyQ29tcGxldGlvbkhhbmRsZXIoKQoreworICAgIGlmIChtX2Fw
cEJ1bmRsZSkgeworICAgICAgICBtX2FwcEJ1bmRsZS0+ZGV0YWNoRnJvbUNsaWVudCgpOworICAg
ICAgICBtX2FwcEJ1bmRsZSA9IG51bGxwdHI7CisgICAgfQorCisgICAgbV90cmFuc2FjdGlvbiA9
IG51bGxwdHI7CisKKyAgICBpZiAobV9jb25uZWN0aW9uKQorICAgICAgICBtX2Nvbm5lY3Rpb24t
PmRpZENvbXBsZXRlQXBwQnVuZGxlUmVxdWVzdCgqdGhpcyk7Cit9CisKKy8vIEFwcCBidW5kbGUg
cGVybWlzc2lvbnMKKwordm9pZCBBcHBCdW5kbGVQZXJtaXNzaW9uc1JlcXVlc3Q6OnN0YXJ0SW50
ZXJuYWwoKQoreworICAgIG1fYXBwQnVuZGxlLT5jaGVja0ZvckV4aXN0aW5nQnVuZGxlKCk7Cit9
CisKK3ZvaWQgQXBwQnVuZGxlUGVybWlzc2lvbnNSZXF1ZXN0OjpkaWRDaGVja0ZvckV4aXN0aW5n
QnVuZGxlKFB1c2hBcHBCdW5kbGUmIGJ1bmRsZSwgUHVzaEFwcEJ1bmRsZUV4aXN0cyBleGlzdHMp
Cit7CisgICAgQVNTRVJUX1VOVVNFRChidW5kbGUsICZidW5kbGUgPT0gbV9hcHBCdW5kbGUuZ2V0
KCkpOworCisgICAgaWYgKGV4aXN0cyA9PSBQdXNoQXBwQnVuZGxlRXhpc3RzOjpZZXMpCisgICAg
ICAgIHJldHVybiBjYWxsQ29tcGxldGlvbkhhbmRsZXJBbmRDbGVhbnVwKHRydWUpOworCisgICAg
bV9hcHBCdW5kbGUtPmNyZWF0ZUJ1bmRsZSgpOworfQorCit2b2lkIEFwcEJ1bmRsZVBlcm1pc3Np
b25zUmVxdWVzdDo6ZGlkQ3JlYXRlQXBwQnVuZGxlKFB1c2hBcHBCdW5kbGUmIGJ1bmRsZSwgUHVz
aEFwcEJ1bmRsZUNyZWF0aW9uUmVzdWx0IHJlc3VsdCkKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGJ1
bmRsZSwgJmJ1bmRsZSA9PSBtX2FwcEJ1bmRsZS5nZXQoKSk7CisKKyAgICBpZiAocmVzdWx0ID09
IFB1c2hBcHBCdW5kbGVDcmVhdGlvblJlc3VsdDo6RmFpbHVyZSkKKyAgICAgICAgcmV0dXJuIGNh
bGxDb21wbGV0aW9uSGFuZGxlckFuZENsZWFudXAoZmFsc2UpOworCisgICAgY2FsbENvbXBsZXRp
b25IYW5kbGVyQW5kQ2xlYW51cCh0cnVlKTsKK30KKworLy8gQXBwIGJ1bmRsZSBkZWxldGlvbgor
Cit2b2lkIEFwcEJ1bmRsZURlbGV0aW9uUmVxdWVzdDo6c3RhcnRJbnRlcm5hbCgpCit7CisgICAg
bV9hcHBCdW5kbGUtPmRlbGV0ZUV4aXN0aW5nQnVuZGxlKCk7Cit9CisKK3ZvaWQgQXBwQnVuZGxl
RGVsZXRpb25SZXF1ZXN0OjpkaWREZWxldGVFeGlzdGluZ0J1bmRsZVdpdGhFcnJvcihQdXNoQXBw
QnVuZGxlJiBidW5kbGUsIE5TRXJyb3IgKmVycm9yKQoreworICAgIEFTU0VSVF9VTlVTRUQoYnVu
ZGxlLCAmYnVuZGxlID09IG1fYXBwQnVuZGxlLmdldCgpKTsKKworICAgIGlmIChlcnJvcikKKyAg
ICAgICAgRGFlbW9uOjpzaW5nbGV0b24oKS5icm9hZGNhc3REZWJ1Z01lc3NhZ2UoTWVzc2FnZUxl
dmVsOjpJbmZvLCBtYWtlU3RyaW5nKCJGYWlsZWQgdG8gZGVsZXRlIGFwcCBidW5kbGU6ICIsIFN0
cmluZyhbZXJyb3IgZGVzY3JpcHRpb25dKSkpOworCisgICAgY2FsbENvbXBsZXRpb25IYW5kbGVy
QW5kQ2xlYW51cChlcnJvciA/IFN0cmluZyhbZXJyb3IgZGVzY3JpcHRpb25dKSA6ICIiKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2Vi
cHVzaGQvTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcuaCBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQv
TW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLjcxY2ZkMDYxMWVlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2VicHVzaGQvTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcuaApAQCAtMCwwICsxLDU3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJQdXNoQXBwQnVuZGxlLmgiCisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgV2ViUHVzaEQgeworCitjbGFzcyBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZyA6IHB1
YmxpYyBQdXNoQXBwQnVuZGxlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUmVmPE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nPiBjcmVhdGUoY29uc3Qg
U3RyaW5nJiBvcmlnaW5TdHJpbmcsIGNvbnN0IFN0cmluZyYgaG9zdEFwcEJ1bmRsZUlkZW50aWZp
ZXIsIFB1c2hBcHBCdW5kbGVDbGllbnQmIGNsaWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nKG9yaWdpblN0cmluZywgaG9zdEFw
cEJ1bmRsZUlkZW50aWZpZXIsIGNsaWVudCkpOworICAgIH0KKworICAgIH5Nb2NrQXBwQnVuZGxl
Rm9yVGVzdGluZygpIGZpbmFsOworCitwcml2YXRlOgorICAgIE1vY2tBcHBCdW5kbGVGb3JUZXN0
aW5nKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBjb25zdCBTdHJpbmcmIGhvc3RBcHBCdW5k
bGVJZGVudGlmaWVyLCBQdXNoQXBwQnVuZGxlQ2xpZW50Jik7CisKKyAgICB2b2lkIGNoZWNrRm9y
RXhpc3RpbmdCdW5kbGUoKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZUV4aXN0aW5nQnVuZGxlKCkg
ZmluYWw7CisgICAgdm9pZCBjcmVhdGVCdW5kbGUoKSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBm
aW5hbDsKKworICAgIFN0cmluZyBtX29yaWdpblN0cmluZzsKKyAgICBTdHJpbmcgbV9ob3N0QXBw
QnVuZGxlSWRlbnRpZmllcjsKK307CisKKworfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcubW0g
Yi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL01vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTFlZjBhY2YyZWVjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9Nb2NrQXBwQnVuZGxlRm9yVGVzdGlu
Zy5tbQpAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5oIgorCisjaW1wb3J0ICJNb2NrQXBwQnVu
ZGxlUmVnaXN0cnkuaCIKKyNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisKK25hbWVzcGFjZSBX
ZWJQdXNoRCB7CisKK01vY2tBcHBCdW5kbGVGb3JUZXN0aW5nOjpNb2NrQXBwQnVuZGxlRm9yVGVz
dGluZyhjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgY29uc3QgU3RyaW5nJiBob3N0QXBwQnVu
ZGxlSWRlbnRpZmllciwgUHVzaEFwcEJ1bmRsZUNsaWVudCYgY2xpZW50KQorICAgIDogUHVzaEFw
cEJ1bmRsZShjbGllbnQpCisgICAgLCBtX29yaWdpblN0cmluZyhvcmlnaW5TdHJpbmcpCisgICAg
LCBtX2hvc3RBcHBCdW5kbGVJZGVudGlmaWVyKGhvc3RBcHBCdW5kbGVJZGVudGlmaWVyKQorewor
fQorCitNb2NrQXBwQnVuZGxlRm9yVGVzdGluZzo6fk1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nKCkK
K3sKKworfQorCit2b2lkIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nOjpjaGVja0ZvckV4aXN0aW5n
QnVuZGxlKCkKK3sKKyAgICBjYWxsT25NYWluUnVuTG9vcChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIHRoaXNdIHsKKyAgICAgICAgYm9vbCBleGlzdHMgPSBNb2NrQXBwQnVuZGxlUmVn
aXN0cnk6OnNpbmdsZXRvbigpLmRvZXNCdW5kbGVFeGlzdChtX2hvc3RBcHBCdW5kbGVJZGVudGlm
aWVyLCBtX29yaWdpblN0cmluZyk7CisgICAgICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgICAg
IG1fY2xpZW50LT5kaWRDaGVja0ZvckV4aXN0aW5nQnVuZGxlKCp0aGlzLCBleGlzdHMgPyBQdXNo
QXBwQnVuZGxlRXhpc3RzOjpZZXMgOiBQdXNoQXBwQnVuZGxlRXhpc3RzOjpObyk7CisgICAgfSk7
Cit9CisKK3ZvaWQgTW9ja0FwcEJ1bmRsZUZvclRlc3Rpbmc6OmRlbGV0ZUV4aXN0aW5nQnVuZGxl
KCkKK3sKKyAgICBjYWxsT25NYWluUnVuTG9vcChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIHRoaXNdIHsKKyAgICAgICAgTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5k
ZWxldGVCdW5kbGUobV9ob3N0QXBwQnVuZGxlSWRlbnRpZmllciwgbV9vcmlnaW5TdHJpbmcpOwor
ICAgICAgICBpZiAobV9jbGllbnQpCisgICAgICAgICAgICBtX2NsaWVudC0+ZGlkRGVsZXRlRXhp
c3RpbmdCdW5kbGVXaXRoRXJyb3IoKnRoaXMsIG5pbCk7CisgICAgfSk7Cit9CisKK3ZvaWQgTW9j
a0FwcEJ1bmRsZUZvclRlc3Rpbmc6OmNyZWF0ZUJ1bmRsZSgpCit7CisgICAgY2FsbE9uTWFpblJ1
bkxvb3AoW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0aGlzXSB7CisgICAgICAgIE1v
Y2tBcHBCdW5kbGVSZWdpc3RyeTo6c2luZ2xldG9uKCkuY3JlYXRlQnVuZGxlKG1faG9zdEFwcEJ1
bmRsZUlkZW50aWZpZXIsIG1fb3JpZ2luU3RyaW5nKTsKKyAgICAgICAgaWYgKG1fY2xpZW50KQor
ICAgICAgICAgICAgbV9jbGllbnQtPmRpZENyZWF0ZUFwcEJ1bmRsZSgqdGhpcywgUHVzaEFwcEJ1
bmRsZUNyZWF0aW9uUmVzdWx0OjpTdWNjZXNzKTsKKyAgICB9KTsKK30KKwordm9pZCBNb2NrQXBw
QnVuZGxlRm9yVGVzdGluZzo6c3RvcCgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYlB1c2hE
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL01vY2tBcHBCdW5kbGVSZWdpc3Ry
eS5oIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9Nb2NrQXBwQnVuZGxlUmVnaXN0cnkuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjQzNjc2NDU2YzA3YgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5
LmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYlB1c2hEIHsKKworY2xhc3MgTW9ja0FwcEJ1bmRsZUZvclRlc3Rpbmc7CisK
K2NsYXNzIE1vY2tBcHBCdW5kbGVSZWdpc3RyeSB7CisgICAgZnJpZW5kIGNsYXNzIE1vY2tBcHBC
dW5kbGVGb3JUZXN0aW5nOworcHVibGljOgorICAgIHN0YXRpYyBNb2NrQXBwQnVuZGxlUmVnaXN0
cnkmIHNpbmdsZXRvbigpOworCisgICAgVmVjdG9yPFN0cmluZz4gZ2V0T3JpZ2luc1dpdGhSZWdp
c3RyYXRpb25zKGNvbnN0IFN0cmluZyYgaG9zdEFwcEJ1bmRsZUlkZW50aWZpZXIpOworCitwcml2
YXRlOgorICAgIGJvb2wgZG9lc0J1bmRsZUV4aXN0KGNvbnN0IFN0cmluZyYgaG9zdEFwcEJ1bmRs
ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nKTsKKyAgICB2b2lkIGNyZWF0
ZUJ1bmRsZShjb25zdCBTdHJpbmcmIGhvc3RBcHBCdW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG9yaWdpblN0cmluZyk7CisgICAgdm9pZCBkZWxldGVCdW5kbGUoY29uc3QgU3RyaW5nJiBo
b3N0QXBwQnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcpOworCisg
ICAgSGFzaE1hcDxTdHJpbmcsIEhhc2hTZXQ8U3RyaW5nPj4gbV9yZWdpc3RlcmVkQnVuZGxlTWFw
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2VicHVzaGQvTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1tIGIvU291cmNlL1dlYktpdC93ZWJw
dXNoZC9Nb2NrQXBwQnVuZGxlUmVnaXN0cnkubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi4wNTY2NTQ4NTc5NzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3dlYnB1c2hkL01vY2tBcHBCdW5kbGVSZWdpc3RyeS5tbQpAQCAtMCwwICsxLDcxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJNb2NrQXBwQnVuZGxlUmVn
aXN0cnkuaCIKKworI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBX
ZWJQdXNoRCB7CisKK01vY2tBcHBCdW5kbGVSZWdpc3RyeSYgTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5
OjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNb2NrQXBwQnVuZGxl
UmVnaXN0cnk+IHJlZ2lzdHJ5OworICAgIHJldHVybiByZWdpc3RyeTsKK30KKworVmVjdG9yPFN0
cmluZz4gTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5OjpnZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMo
Y29uc3QgU3RyaW5nJiBob3N0QXBwQnVuZGxlSWRlbnRpZmllcikKK3sKKyAgICBWZWN0b3I8U3Ry
aW5nPiByZXN1bHRzOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX3JlZ2lzdGVyZWRCdW5kbGVNYXAu
ZmluZChob3N0QXBwQnVuZGxlSWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yICE9IG1fcmVn
aXN0ZXJlZEJ1bmRsZU1hcC5lbmQoKSkKKyAgICAgICAgcmVzdWx0cyA9IGNvcHlUb1ZlY3Rvcihp
dGVyYXRvci0+dmFsdWUpOworICAgIHJldHVybiByZXN1bHRzOworfQorCitib29sIE1vY2tBcHBC
dW5kbGVSZWdpc3RyeTo6ZG9lc0J1bmRsZUV4aXN0KGNvbnN0IFN0cmluZyYgaG9zdEFwcEJ1bmRs
ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nKQoreworICAgIGF1dG8gaXRl
cmF0b3IgPSBtX3JlZ2lzdGVyZWRCdW5kbGVNYXAuZmluZChob3N0QXBwQnVuZGxlSWRlbnRpZmll
cik7CisgICAgcmV0dXJuIGl0ZXJhdG9yICE9IG1fcmVnaXN0ZXJlZEJ1bmRsZU1hcC5lbmQoKSAm
JiBpdGVyYXRvci0+dmFsdWUuY29udGFpbnMob3JpZ2luU3RyaW5nKTsKK30KKwordm9pZCBNb2Nr
QXBwQnVuZGxlUmVnaXN0cnk6OmNyZWF0ZUJ1bmRsZShjb25zdCBTdHJpbmcmIGhvc3RBcHBCdW5k
bGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZykKK3sKKyAgICBtX3JlZ2lz
dGVyZWRCdW5kbGVNYXAuYWRkKGhvc3RBcHBCdW5kbGVJZGVudGlmaWVyLCBIYXNoU2V0PFN0cmlu
Zz57IH0pLml0ZXJhdG9yLT52YWx1ZS5hZGQob3JpZ2luU3RyaW5nKTsKK30KKwordm9pZCBNb2Nr
QXBwQnVuZGxlUmVnaXN0cnk6OmRlbGV0ZUJ1bmRsZShjb25zdCBTdHJpbmcmIGhvc3RBcHBCdW5k
bGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZykKK3sKKyAgICBhdXRvIGl0
ZXJhdG9yID0gbV9yZWdpc3RlcmVkQnVuZGxlTWFwLmZpbmQoaG9zdEFwcEJ1bmRsZUlkZW50aWZp
ZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX3JlZ2lzdGVyZWRCdW5kbGVNYXAuZW5kKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGl0ZXJhdG9yLT52YWx1ZS5yZW1vdmUob3JpZ2luU3RyaW5n
KTsKKworICAgIGlmIChpdGVyYXRvci0+dmFsdWUuaXNFbXB0eSgpKQorICAgICAgICBtX3JlZ2lz
dGVyZWRCdW5kbGVNYXAucmVtb3ZlKGl0ZXJhdG9yKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
UHVzaEQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaEFwcEJ1bmRsZS5o
IGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQXBwQnVuZGxlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jZmQ1NzY4MjQ1YTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hBcHBCdW5kbGUuaApAQCAtMCwwICsxLDcyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorCitAY2xhc3MgTlNFcnJvcjsKKworbmFtZXNwYWNlIFdlYlB1c2hEIHsKKworZW51bSBjbGFz
cyBQdXNoQXBwQnVuZGxlRXhpc3RzIHsKKyAgICBObywKKyAgICBZZXMsCit9OworCitlbnVtIGNs
YXNzIFB1c2hBcHBCdW5kbGVDcmVhdGlvblJlc3VsdCB7CisgICAgRmFpbHVyZSwKKyAgICBTdWNj
ZXNzLAorfTsKKworY2xhc3MgUHVzaEFwcEJ1bmRsZTsKKworY2xhc3MgUHVzaEFwcEJ1bmRsZUNs
aWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UHVzaEFwcEJ1bmRsZUNsaWVudCgpOworCisg
ICAgdmlydHVhbCB2b2lkIGRpZENoZWNrRm9yRXhpc3RpbmdCdW5kbGUoUHVzaEFwcEJ1bmRsZSYs
IFB1c2hBcHBCdW5kbGVFeGlzdHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGVsZXRlRXhp
c3RpbmdCdW5kbGVXaXRoRXJyb3IoUHVzaEFwcEJ1bmRsZSYsIE5TRXJyb3IgKikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVBcHBCdW5kbGUoUHVzaEFwcEJ1bmRsZSYsIFB1c2hBcHBC
dW5kbGVDcmVhdGlvblJlc3VsdCkgPSAwOworfTsKKworY2xhc3MgUHVzaEFwcEJ1bmRsZSA6IHB1
YmxpYyBSZWZDb3VudGVkPFB1c2hBcHBCdW5kbGU+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Q
dXNoQXBwQnVuZGxlKCk7CisgICAgdm9pZCBkZXRhY2hGcm9tQ2xpZW50KCk7CisKKyAgICB2aXJ0
dWFsIHZvaWQgY2hlY2tGb3JFeGlzdGluZ0J1bmRsZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlRXhpc3RpbmdCdW5kbGUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZUJ1bmRs
ZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsKKworcHJvdGVjdGVkOgorICAg
IFB1c2hBcHBCdW5kbGUoUHVzaEFwcEJ1bmRsZUNsaWVudCYpOworCisgICAgUHVzaEFwcEJ1bmRs
ZUNsaWVudCogbV9jbGllbnQ7Cit9OworCisKK30gLy8gbmFtZXNwYWNlIFdlYlB1c2hECmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hBcHBCdW5kbGUubW0gYi9Tb3VyY2Uv
V2ViS2l0L3dlYnB1c2hkL1B1c2hBcHBCdW5kbGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi5iODAxMDRiMDIwNDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dlYnB1c2hkL1B1c2hBcHBCdW5kbGUubW0KQEAgLTAsMCArMSw1MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUHVzaEFwcEJ1bmRsZS5oIgorCitu
YW1lc3BhY2UgV2ViUHVzaEQgeworCitQdXNoQXBwQnVuZGxlQ2xpZW50Ojp+UHVzaEFwcEJ1bmRs
ZUNsaWVudCgpCit7Cit9CisKK1B1c2hBcHBCdW5kbGU6OlB1c2hBcHBCdW5kbGUoUHVzaEFwcEJ1
bmRsZUNsaWVudCYgY2xpZW50KQorICAgIDogbV9jbGllbnQoJmNsaWVudCkKK3sKK30KKworUHVz
aEFwcEJ1bmRsZTo6flB1c2hBcHBCdW5kbGUoKQoreworICAgIEFTU0VSVCghbV9jbGllbnQpOwor
fQorCit2b2lkIFB1c2hBcHBCdW5kbGU6OmRldGFjaEZyb21DbGllbnQoKQoreworICAgIHN0b3Ao
KTsKKyAgICBtX2NsaWVudCA9IG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYlB1c2hE
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLmgKaW5kZXgg
YmUwZmYwNDJjOWRlLi5kMDAyY2IzMjhiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2Vi
cHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hk
L1B1c2hDbGllbnRDb25uZWN0aW9uLmgKQEAgLTI2LDE3ICsyNiwyMSBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlIDxvcHRpb25hbD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJQdXNoRCB7CiAK
LWNsYXNzIENsaWVudENvbm5lY3Rpb24geworY2xhc3MgQXBwQnVuZGxlUmVxdWVzdDsKKworY2xh
c3MgQ2xpZW50Q29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPENsaWVudENvbm5lY3Rpb24+
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBDbGllbnRDb25u
ZWN0aW9uKHhwY19jb25uZWN0aW9uX3QpOworICAgIHN0YXRpYyBSZWY8Q2xpZW50Q29ubmVjdGlv
bj4gY3JlYXRlKHhwY19jb25uZWN0aW9uX3QpOwogCiAgICAgYm9vbCBoYXNIb3N0QXBwQXVkaXRU
b2tlbigpIGNvbnN0IHsgcmV0dXJuICEhbV9ob3N0QXBwQXVkaXRUb2tlbjsgfQogICAgIHZvaWQg
c2V0SG9zdEFwcEF1ZGl0VG9rZW5EYXRhKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOwpAQCAtNDcs
MTMgKzUxLDI1IEBAIHB1YmxpYzoKICAgICBib29sIGRlYnVnTW9kZUlzRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGVidWdNb2RlRW5hYmxlZDsgfQogICAgIHZvaWQgc2V0RGVidWdNb2RlSXNF
bmFibGVkKGJvb2wpOwogCisgICAgdm9pZCBlbnF1ZXVlQXBwQnVuZGxlUmVxdWVzdChzdGQ6OnVu
aXF1ZV9wdHI8QXBwQnVuZGxlUmVxdWVzdD4mJiByZXF1ZXN0KTsKKyAgICB2b2lkIGRpZENvbXBs
ZXRlQXBwQnVuZGxlUmVxdWVzdChBcHBCdW5kbGVSZXF1ZXN0Jik7CisKKyAgICB2b2lkIGNvbm5l
Y3Rpb25DbG9zZWQoKTsKKwogcHJpdmF0ZToKKyAgICBDbGllbnRDb25uZWN0aW9uKHhwY19jb25u
ZWN0aW9uX3QpOworCisgICAgdm9pZCBtYXliZVN0YXJ0TmV4dEFwcEJ1bmRsZVJlcXVlc3QoKTsK
KyAgICAKICAgICBPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90PiBtX3hwY0Nvbm5lY3Rpb247
CiAKICAgICBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IG1faG9zdEFwcEF1ZGl0VG9rZW47
CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmll
cjsKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1faG9zdEFwcEhhc1B1c2hFbnRpdGxlbWVudDsK
IAorICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxBcHBCdW5kbGVSZXF1ZXN0Pj4gbV9wZW5kaW5n
QnVuZGxlUmVxdWVzdHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFwcEJ1bmRsZVJlcXVlc3Q+IG1f
Y3VycmVudEJ1bmRsZVJlcXVlc3Q7CisKICAgICBib29sIG1fZGVidWdNb2RlRW5hYmxlZCB7IGZh
bHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGll
bnRDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVj
dGlvbi5tbQppbmRleCA3ODNkODUyNTQ4ZTkuLjYwODIzMDc3ODRjMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlB1c2hDbGllbnRDb25uZWN0aW9uLmgiCiAK
KyNpbXBvcnQgIkFwcEJ1bmRsZVJlcXVlc3QuaCIKICNpbXBvcnQgIkNvZGVTaWduaW5nLmgiCiAj
aW1wb3J0ICJXZWJQdXNoRGFlbW9uLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9Db25zb2xl
VHlwZXMuaD4KQEAgLTM0LDYgKzM1LDExIEBACiAKIG5hbWVzcGFjZSBXZWJQdXNoRCB7CiAKK1Jl
ZjxDbGllbnRDb25uZWN0aW9uPiBDbGllbnRDb25uZWN0aW9uOjpjcmVhdGUoeHBjX2Nvbm5lY3Rp
b25fdCBjb25uZWN0aW9uKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENsaWVudENvbm5l
Y3Rpb24oY29ubmVjdGlvbikpOworfQorCiBDbGllbnRDb25uZWN0aW9uOjpDbGllbnRDb25uZWN0
aW9uKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikKICAgICA6IG1feHBjQ29ubmVjdGlvbihj
b25uZWN0aW9uKQogewpAQCAtOTMsNCArOTksNDkgQEAgdm9pZCBDbGllbnRDb25uZWN0aW9uOjpz
ZXREZWJ1Z01vZGVJc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIERhZW1vbjo6c2luZ2xldG9u
KCkuYnJvYWRjYXN0RGVidWdNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6SW5mbywgbWVzc2FnZSk7CiB9
CiAKK3ZvaWQgQ2xpZW50Q29ubmVjdGlvbjo6ZW5xdWV1ZUFwcEJ1bmRsZVJlcXVlc3Qoc3RkOjp1
bmlxdWVfcHRyPEFwcEJ1bmRsZVJlcXVlc3Q+JiYgcmVxdWVzdCkKK3sKKyAgICBSRUxFQVNFX0FT
U0VSVChtX3hwY0Nvbm5lY3Rpb24pOworICAgIG1fcGVuZGluZ0J1bmRsZVJlcXVlc3RzLmFwcGVu
ZChXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICBtYXliZVN0YXJ0TmV4dEFwcEJ1bmRsZVJlcXVlc3Qo
KTsKK30KKwordm9pZCBDbGllbnRDb25uZWN0aW9uOjptYXliZVN0YXJ0TmV4dEFwcEJ1bmRsZVJl
cXVlc3QoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG1feHBjQ29ubmVjdGlvbik7CisKKyAgICBp
ZiAobV9jdXJyZW50QnVuZGxlUmVxdWVzdCB8fCBtX3BlbmRpbmdCdW5kbGVSZXF1ZXN0cy5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY3VycmVudEJ1bmRsZVJlcXVlc3QgPSBt
X3BlbmRpbmdCdW5kbGVSZXF1ZXN0cy50YWtlRmlyc3QoKTsKKyAgICBtX2N1cnJlbnRCdW5kbGVS
ZXF1ZXN0LT5zdGFydCgpOworfQorCit2b2lkIENsaWVudENvbm5lY3Rpb246OmRpZENvbXBsZXRl
QXBwQnVuZGxlUmVxdWVzdChBcHBCdW5kbGVSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIC8vIElm
IG91ciBjb25uZWN0aW9uIHdhcyBjbG9zZWQgdGhlcmUgc2hvdWxkIGJlIG5vIGluLXByb2dyZXNz
IGJ1bmRsZSByZXF1ZXN0cy4KKyAgICBSRUxFQVNFX0FTU0VSVChtX3hwY0Nvbm5lY3Rpb24pOwor
CisgICAgQVNTRVJUKG1fY3VycmVudEJ1bmRsZVJlcXVlc3QgPT0gJnJlcXVlc3QpOworICAgIG1f
Y3VycmVudEJ1bmRsZVJlcXVlc3QgPSBudWxscHRyOworCisgICAgbWF5YmVTdGFydE5leHRBcHBC
dW5kbGVSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgQ2xpZW50Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkNs
b3NlZCgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQobV94cGNDb25uZWN0aW9uKTsKKyAgICBtX3hw
Y0Nvbm5lY3Rpb24gPSBudWxscHRyOworCisgICAgaWYgKG1fY3VycmVudEJ1bmRsZVJlcXVlc3Qp
IHsKKyAgICAgICAgbV9jdXJyZW50QnVuZGxlUmVxdWVzdC0+Y2FuY2VsKCk7CisgICAgICAgIG1f
Y3VycmVudEJ1bmRsZVJlcXVlc3QgPSBudWxscHRyOworICAgIH0KKworICAgIERlcXVlPHN0ZDo6
dW5pcXVlX3B0cjxBcHBCdW5kbGVSZXF1ZXN0Pj4gcGVuZGluZ0J1bmRsZVJlcXVlc3RzOworICAg
IHBlbmRpbmdCdW5kbGVSZXF1ZXN0cy5zd2FwKG1fcGVuZGluZ0J1bmRsZVJlcXVlc3RzKTsKKyAg
ICBmb3IgKGF1dG8mIHJlcXVzdCA6IHBlbmRpbmdCdW5kbGVSZXF1ZXN0cykKKyAgICAgICAgcmVx
dXN0LT5jYW5jZWwoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5oIGIvU291cmNlL1dlYktpdC93
ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmgKaW5kZXggNjk1YmJiMjVlNmVkLi45NDJlMmY1YjM2Nzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5oCkBAIC03MSwxMCArNzEsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgY2FuUmVnaXN0ZXJGb3JOb3RpZmljYXRpb25zKENsaWVudENv
bm5lY3Rpb24mKTsKIAogICAgIENsaWVudENvbm5lY3Rpb24qIHRvQ2xpZW50Q29ubmVjdGlvbih4
cGNfY29ubmVjdGlvbl90KTsKLQotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2luTWVtb3J5T3JpZ2lu
U3RyaW5nc1dpdGhQZXJtaXNzaW9uRm9yVGVzdGluZzsKLQotICAgIEhhc2hNYXA8eHBjX2Nvbm5l
Y3Rpb25fdCwgc3RkOjp1bmlxdWVfcHRyPENsaWVudENvbm5lY3Rpb24+PiBtX2Nvbm5lY3Rpb25N
YXA7CisgICAgSGFzaE1hcDx4cGNfY29ubmVjdGlvbl90LCBSZWY8Q2xpZW50Q29ubmVjdGlvbj4+
IG1fY29ubmVjdGlvbk1hcDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYlB1c2hECmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0KaW5kZXggOWQ1YjA3YjNjMTRlLi43NjU1OTAz
ZDI5YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0KQEAgLTI2LDEw
ICsyNiwxMiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJQdXNoRGFlbW9uLmgi
CiAKKyNpbXBvcnQgIkFwcEJ1bmRsZVJlcXVlc3QuaCIKICNpbXBvcnQgIkRhZW1vbkRlY29kZXIu
aCIKICNpbXBvcnQgIkRhZW1vbkVuY29kZXIuaCIKICNpbXBvcnQgIkRhZW1vblV0aWxpdGllcy5o
IgogI2ltcG9ydCAiSGFuZGxlTWVzc2FnZS5oIgorI2ltcG9ydCAiTW9ja0FwcEJ1bmRsZVJlZ2lz
dHJ5LmgiCiAjaW1wb3J0ICJXZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgiCiAKICNpbXBvcnQgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgpAQCAtMTgwLDEzICsxODIsMTQgQEAgdm9pZCBEYWVtb246
OmNvbm5lY3Rpb25FdmVudEhhbmRsZXIoeHBjX29iamVjdF90IHJlcXVlc3QpCiB2b2lkIERhZW1v
bjo6Y29ubmVjdGlvbkFkZGVkKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikKIHsKICAgICBS
RUxFQVNFX0FTU0VSVCghbV9jb25uZWN0aW9uTWFwLmNvbnRhaW5zKGNvbm5lY3Rpb24pKTsKLSAg
ICBtX2Nvbm5lY3Rpb25NYXAuc2V0KGNvbm5lY3Rpb24sIFdURjo6bWFrZVVuaXF1ZTxDbGllbnRD
b25uZWN0aW9uPihjb25uZWN0aW9uKSk7CisgICAgbV9jb25uZWN0aW9uTWFwLnNldChjb25uZWN0
aW9uLCBDbGllbnRDb25uZWN0aW9uOjpjcmVhdGUoY29ubmVjdGlvbikpOwogfQogCiB2b2lkIERh
ZW1vbjo6Y29ubmVjdGlvblJlbW92ZWQoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKQogewog
ICAgIFJFTEVBU0VfQVNTRVJUKG1fY29ubmVjdGlvbk1hcC5jb250YWlucyhjb25uZWN0aW9uKSk7
Ci0gICAgbV9jb25uZWN0aW9uTWFwLnJlbW92ZShjb25uZWN0aW9uKTsKKyAgICBhdXRvIGNsaWVu
dENvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25NYXAudGFrZShjb25uZWN0aW9uKTsKKyAgICBjbGll
bnRDb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2VkKCk7CiB9CiAKIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRW5jb2RlZE1lc3NhZ2UmJik+IERhZW1vbjo6Y3JlYXRlUmVwbHlTZW5kZXIoTWVzc2Fn
ZVR5cGUgbWVzc2FnZVR5cGUsIE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4mJiByZXF1ZXN0KQpA
QCAtMjUzLDEwICsyNTYsNyBAQCB2b2lkIERhZW1vbjo6cmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlv
blBlcm1pc3Npb24oQ2xpZW50Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgYwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFRoaXMgaXMgZm9yIGFuIEFQSSB0ZXN0aW5nIGNo
ZWNrcG9pbnQKLSAgICAvLyBOZXh0IHN0ZXAgaXMgYWN0dWFsbHkgcGVyZm9ybSBhIHBlcnNpc3Rl
bnQgcGVybWlzc2lvbnMgcmVxdWVzdCBvbiBhIHBlci1wbGF0Zm9ybSBiYXNpcwotICAgIG1faW5N
ZW1vcnlPcmlnaW5TdHJpbmdzV2l0aFBlcm1pc3Npb25Gb3JUZXN0aW5nLmFkZChvcmlnaW5TdHJp
bmcpOwotICAgIHJlcGx5U2VuZGVyKHRydWUpOworICAgIGNvbm5lY3Rpb24tPmVucXVldWVBcHBC
dW5kbGVSZXF1ZXN0KG1ha2VVbmlxdWU8QXBwQnVuZGxlUGVybWlzc2lvbnNSZXF1ZXN0PigqY29u
bmVjdGlvbiwgb3JpZ2luU3RyaW5nLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSkpOwogfQogCiB2b2lk
IERhZW1vbjo6Z2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoQ2xp
ZW50Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBW
ZWN0b3I8U3RyaW5nPiYpPiYmIHJlcGx5U2VuZGVyKQpAQCAtMjY2LDkgKzI2Niw4IEBAIHZvaWQg
RGFlbW9uOjpnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyhDbGll
bnRDb25uZWN0aW9uKiBjb25uCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBGSVhN
RTogVGhpcyBpcyBmb3IgYW4gQVBJIHRlc3RpbmcgY2hlY2twb2ludAotICAgIC8vIE5leHQgc3Rl
cCBpcyBhY3R1YWxseSBnYXRoZXIgcGVyc2lzdGVudCBwZXJtaXNzaW9ucyBmcm9tIHRoZSBzeXN0
ZW0gb24gYSBwZXItcGxhdGZvcm0gYmFzaXMKLSAgICByZXBseVNlbmRlcihjb3B5VG9WZWN0b3Io
bV9pbk1lbW9yeU9yaWdpblN0cmluZ3NXaXRoUGVybWlzc2lvbkZvclRlc3RpbmcpKTsKKyAgICAv
LyBGSVhNRTogVGhpcyB3aWxsIG5lZWQgcGxhdGZvcm0tc3BlY2lmaWMgaW1wbGVtZW50YXRpb25z
IGZvciByZWFsIHdvcmxkIGJ1bmRsZXMgb25jZSBpbXBsZW1lbnRlZC4KKyAgICByZXBseVNlbmRl
cihNb2NrQXBwQnVuZGxlUmVnaXN0cnk6OnNpbmdsZXRvbigpLmdldE9yaWdpbnNXaXRoUmVnaXN0
cmF0aW9ucyhjb25uZWN0aW9uLT5ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKCkpKTsKIH0K
IAogdm9pZCBEYWVtb246OmRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24oQ2xp
ZW50Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgcmVwbHlTZW5kZXIpCkBAIC0y
NzgsMTIgKzI3Nyw3IEBAIHZvaWQgRGFlbW9uOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVn
aXN0cmF0aW9uKENsaWVudENvbm5lY3Rpb24qIGNvbm5lY3Rpb24sCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBmb3IgYW4gQVBJIHRlc3RpbmcgY2hlY2tw
b2ludAotICAgIC8vIE5leHQgc3RlcCBpcyBhY3R1YWxseSBkZWxldGUgYW55IHBlcnNpc3RlbnQg
cGVybWlzc2lvbnMgb24gYSBwZXItcGxhdGZvcm0gYmFzaXMKLSAgICBpZiAobV9pbk1lbW9yeU9y
aWdpblN0cmluZ3NXaXRoUGVybWlzc2lvbkZvclRlc3RpbmcucmVtb3ZlKG9yaWdpblN0cmluZykp
Ci0gICAgICAgIHJlcGx5U2VuZGVyKCIiKTsKLSAgICBlbHNlCi0gICAgICAgIHJlcGx5U2VuZGVy
KG1ha2VTdHJpbmcoIk9yaWdpbiAiLCBvcmlnaW5TdHJpbmcsICIgbm90IHJlZ2lzdGVyZWQgZm9y
IHB1c2ggb3Igbm90aWZpY2F0aW9ucyIpKTsKKyAgICBjb25uZWN0aW9uLT5lbnF1ZXVlQXBwQnVu
ZGxlUmVxdWVzdChtYWtlVW5pcXVlPEFwcEJ1bmRsZURlbGV0aW9uUmVxdWVzdD4oKmNvbm5lY3Rp
b24sIG9yaWdpblN0cmluZywgV1RGTW92ZShyZXBseVNlbmRlcikpKTsKIH0KIAogdm9pZCBEYWVt
b246OnNldEhvc3RBcHBBdWRpdFRva2VuKENsaWVudENvbm5lY3Rpb24qIGNsaWVudENvbm5lY3Rp
b24sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdG9rZW5EYXRhKQo=
</data>
<flag name="commit-queue"
          id="470240"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445112</attachid>
            <date>2021-11-24 14:48:02 -0800</date>
            <delta_ts>2021-11-24 17:31:30 -0800</delta_ts>
            <desc>EWS v3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>50795</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggODAxYTc1MmJmYzVmLi4xMDFhMTIxYTEwNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsOTYgQEAKKzIwMjEtMTEtMjQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2Ugd2VicHVzaGQgImZha2UgcmVnaXN0cmF0aW9uIGZvciB0ZXN0aW5nIiBt
dWNoIG1vcmUgY29tcGxpY2F0ZWQgYnkgYWRkaW5nIGEgIm1vY2sgYXBwIGJ1bmRsZSIgaW5zdGFs
bAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDU0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJl
ZCBieSBBUEkgdGVzdHMuCisgICAgICAgIAorICAgICAgICBCZWZvcmUgdGhpcyBwYXRjaCwgd2Vi
cHVzaGQgcmVtZW1iZXJlZCAicmVnaXN0cmF0aW9ucyIgdXNpbmcgYSBzaW1wbGUgaW4tbWVtb3J5
IEhhc2hNYXAuCisgICAgICAgIAorICAgICAgICBJbiB0aGUgbmVhciBmdXR1cmUsIHJlZ2lzdHJh
dGlvbnMgd2lsbCBhY3R1YWxseSBiZSByZXByZXNlbnRlZCB3aXRoIGEgcGxhY2Vob2xkZXIgYXBw
IGJ1bmRsZSBvbiBkaXNrLgorICAgICAgICAKKyAgICAgICAgVGhlIHByb2Nlc3Mgb2YgaW5zdGFs
bGluZyBwbGFjZWhvbGRlcnMgKGFuZCBjaGVja2luZyBmb3IgZXhpc3Rpbmcgb25lcykgaXMgY29t
cGxpY2F0ZWQgYW5kIGFzeW5jaHJvbm91cy4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2gg
c2hpZnRzIHRoZSBpbi1tZW1vcnkgdGVzdGluZyBpbXBsZW1lbnRhdGlvbiBmcm9tIGEgc2ltcGxl
IEhhc2hNYXAgdG8gYSAiY29tcGxpY2F0ZWQgYW5kIGFzeW5jaHJvbm91cyIKKyAgICAgICAgcmVn
aXN0cmF0aW9uIG1lY2hhbmlzbSB0aGF0IHNpbXVsYXRlcyBob3cgYXBwLWJ1bmRsZSBpbnN0YWxs
cyB3aWxsIHdvcmsuCisgICAgICAgIAorICAgICAgICBPbmNlIHRoZSAicmVhbCIgbWVjaGFuaXNt
cyBhcmUgaW4gcGxhY2UgdGhlcmUgd2lsbCBiZSBtdWNoIG1vcmUgaW4tZGVwdGggdGVzdGluZyB0
aGF0IHdlIGNhbiBkby4KKyAgICAgICAgRm9yIG5vdywgdGhpcyBpcyBhICJubyBiZWhhdmlvciBj
aGFuZ2UiIHBhdGNoLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9D
b2NvYS9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQdXNoRDo6Q29ubmVjdGlvbjo6Y29ubmVjdGlvblJlY2VpdmVkRXZlbnQgY29uc3QpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oOgorCisgICAg
ICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgIlB1c2hB
cHBCdW5kbGUiIGlzIGFuIGFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIHJlcHJlc2VudGluZyBhIHBs
YWNlaG9sZGVyIGFwcGxpY2F0aW9uIGJ1bmRsZSBmb3IgYSByZWdpc3RyYXRpb24uCisgICAgICAg
IEV2ZW50dWFsbHkgdGhlcmUgd2lsbCBiZSBhIG5hdGl2ZSBvbmUgZm9yIGVhY2ggcGxhdGZvcm0g
dGhhdCBhY3R1YWxseSBkb2VzIHN5c3RlbSBvcGVyYXRpb25zLgorICAgICAgICBGb3Igbm93LCB0
aGUgY29uY3JldGUgaW1wbGVtZW50YXRpb24gaXMgdGhlIGluLW1lbW9yeSAiTW9jayIgYXBwIGJ1
bmRsZS4KKworICAgICAgICAqIHdlYnB1c2hkL1B1c2hBcHBCdW5kbGUuaDogQ29waWVkIGZyb20g
U291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5oLgorICAgICAgICAq
IHdlYnB1c2hkL1B1c2hBcHBCdW5kbGUubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvd2Vi
cHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24uaC4KKyAgICAgICAgKFdlYlB1c2hEOjpQdXNoQXBw
QnVuZGxlQ2xpZW50Ojp+UHVzaEFwcEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXZWJQdXNoRDo6
UHVzaEFwcEJ1bmRsZTo6UHVzaEFwcEJ1bmRsZSk6CisgICAgICAgIChXZWJQdXNoRDo6UHVzaEFw
cEJ1bmRsZTo6flB1c2hBcHBCdW5kbGUpOgorICAgICAgICAoV2ViUHVzaEQ6OlB1c2hBcHBCdW5k
bGU6OmRldGFjaEZyb21DbGllbnQpOgorICAgICAgICAKKyAgICAgICAgQW4gIkFwcEJ1bmRsZVJl
cXVlc3QiIGlzIGEgcXVlYWJsZSBvcGVyYXRpb24gbWVhbnQgdG8gZG8gc29tZXRoaW5nIHdpdGgg
YW4gIkFwcCBidW5kbGUiLgorICAgICAgICBGb3Igbm93IHRoZSBvcGVyYXRpb25zIGFyZSAiY3Jl
YXRlIiBhbmQgImRlbGV0ZSIKKyAgICAgICAgCisgICAgICAgICogd2VicHVzaGQvQXBwQnVuZGxl
UmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYlB1c2hEOjpBcHBCdW5kbGVSZXF1ZXN0SW1w
bDo6QXBwQnVuZGxlUmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRsZVJl
cXVlc3RJbXBsOjp+QXBwQnVuZGxlUmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViUHVzaEQ6OkFw
cEJ1bmRsZVJlcXVlc3RJbXBsOjpjYWxsQ29tcGxldGlvbkhhbmRsZXJBbmRDbGVhbnVwKToKKyAg
ICAgICAgKFdlYlB1c2hEOjpBcHBCdW5kbGVQZXJtaXNzaW9uc1JlcXVlc3Q6OkFwcEJ1bmRsZVBl
cm1pc3Npb25zUmVxdWVzdCk6CisgICAgICAgIChXZWJQdXNoRDo6QXBwQnVuZGxlRGVsZXRpb25S
ZXF1ZXN0OjpBcHBCdW5kbGVEZWxldGlvblJlcXVlc3QpOgorICAgICAgICAqIHdlYnB1c2hkL0Fw
cEJ1bmRsZVJlcXVlc3QubW06IEFkZGVkLgorICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRsZVJl
cXVlc3Q6OkFwcEJ1bmRsZVJlcXVlc3QpOgorICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRsZVJl
cXVlc3Q6On5BcHBCdW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYlB1c2hEOjpBcHBCdW5kbGVS
ZXF1ZXN0OjpzdGFydCk6CisgICAgICAgIChXZWJQdXNoRDo6QXBwQnVuZGxlUmVxdWVzdDo6Y2Fu
Y2VsKToKKyAgICAgICAgKFdlYlB1c2hEOjpBcHBCdW5kbGVSZXF1ZXN0OjpjbGVhbnVwQWZ0ZXJD
b21wbGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJQdXNoRDo6QXBwQnVuZGxlUGVybWlzc2lv
bnNSZXF1ZXN0OjpzdGFydEludGVybmFsKToKKyAgICAgICAgKFdlYlB1c2hEOjpBcHBCdW5kbGVQ
ZXJtaXNzaW9uc1JlcXVlc3Q6OmRpZENoZWNrRm9yRXhpc3RpbmdCdW5kbGUpOgorICAgICAgICAo
V2ViUHVzaEQ6OkFwcEJ1bmRsZVBlcm1pc3Npb25zUmVxdWVzdDo6ZGlkQ3JlYXRlQXBwQnVuZGxl
KToKKyAgICAgICAgKFdlYlB1c2hEOjpBcHBCdW5kbGVEZWxldGlvblJlcXVlc3Q6OnN0YXJ0SW50
ZXJuYWwpOgorICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRsZURlbGV0aW9uUmVxdWVzdDo6ZGlk
RGVsZXRlRXhpc3RpbmdCdW5kbGVXaXRoRXJyb3IpOgorCisgICAgICAgICogd2VicHVzaGQvTW9j
a0FwcEJ1bmRsZUZvclRlc3RpbmcuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5oLgorICAgICAgICAoV2ViUHVzaEQ6Ok1vY2tBcHBCdW5k
bGVGb3JUZXN0aW5nOjpjcmVhdGUpOgorICAgICAgICAqIHdlYnB1c2hkL01vY2tBcHBCdW5kbGVG
b3JUZXN0aW5nLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYlB1c2hEOjpNb2NrQXBwQnVuZGxlRm9y
VGVzdGluZzo6TW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViUHVzaEQ6Ok1v
Y2tBcHBCdW5kbGVGb3JUZXN0aW5nOjp+TW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcpOgorICAgICAg
ICAoV2ViUHVzaEQ6Ok1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nOjpjaGVja0ZvckV4aXN0aW5nQnVu
ZGxlKToKKyAgICAgICAgKFdlYlB1c2hEOjpNb2NrQXBwQnVuZGxlRm9yVGVzdGluZzo6ZGVsZXRl
RXhpc3RpbmdCdW5kbGUpOgorICAgICAgICAoV2ViUHVzaEQ6Ok1vY2tBcHBCdW5kbGVGb3JUZXN0
aW5nOjpjcmVhdGVCdW5kbGUpOgorICAgICAgICAoV2ViUHVzaEQ6Ok1vY2tBcHBCdW5kbGVGb3JU
ZXN0aW5nOjpzdG9wKToKKworICAgICAgICAqIHdlYnB1c2hkL01vY2tBcHBCdW5kbGVSZWdpc3Ry
eS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0
aW9uLmguCisgICAgICAgICogd2VicHVzaGQvTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1tOiBBZGRl
ZC4KKyAgICAgICAgKFdlYlB1c2hEOjpNb2NrQXBwQnVuZGxlUmVnaXN0cnk6OnNpbmdsZXRvbik6
CisgICAgICAgIChXZWJQdXNoRDo6TW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5OjpnZXRPcmlnaW5zV2l0
aFJlZ2lzdHJhdGlvbnMpOgorICAgICAgICAoV2ViUHVzaEQ6Ok1vY2tBcHBCdW5kbGVSZWdpc3Ry
eTo6ZG9lc0J1bmRsZUV4aXN0KToKKyAgICAgICAgKFdlYlB1c2hEOjpNb2NrQXBwQnVuZGxlUmVn
aXN0cnk6OmNyZWF0ZUJ1bmRsZSk6CisgICAgICAgIChXZWJQdXNoRDo6TW9ja0FwcEJ1bmRsZVJl
Z2lzdHJ5OjpkZWxldGVCdW5kbGUpOgorCisgICAgICAgICogd2VicHVzaGQvUHVzaENsaWVudENv
bm5lY3Rpb24uaDoKKyAgICAgICAgKiB3ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbToK
KyAgICAgICAgKFdlYlB1c2hEOjpDbGllbnRDb25uZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
V2ViUHVzaEQ6OkNsaWVudENvbm5lY3Rpb246OmVucXVldWVBcHBCdW5kbGVSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYlB1c2hEOjpDbGllbnRDb25uZWN0aW9uOjptYXliZVN0YXJ0TmV4dEFwcEJ1bmRs
ZVJlcXVlc3QpOgorICAgICAgICAoV2ViUHVzaEQ6OkNsaWVudENvbm5lY3Rpb246OmRpZENvbXBs
ZXRlQXBwQnVuZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJQdXNoRDo6Q2xpZW50Q29ubmVjdGlv
bjo6Y29ubmVjdGlvbkNsb3NlZCk6CisKKyAgICAgICAgKiB3ZWJwdXNoZC9XZWJQdXNoRGFlbW9u
Lmg6CisgICAgICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbToKKyAgICAgICAgKFdlYlB1
c2hEOjpEYWVtb246OmNvbm5lY3Rpb25BZGRlZCk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9u
Ojpjb25uZWN0aW9uUmVtb3ZlZCk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpyZXF1ZXN0
U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbik6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9u
OjpnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyk6CisgICAgICAg
IChXZWJQdXNoRDo6RGFlbW9uOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9u
KToKKwogMjAyMS0xMS0yMyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgog
CiAgICAgICAgIE5vbi11bmlmaWVkIGJ1aWxkIGZpeGVzLCBtaWQgTm92ZW1iZXIgMjAyMSBlZGl0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlv
bnMvQ29jb2EvV2ViUHVzaERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9Db2NvYS9XZWJQdXNoRGFlbW9uQ29ubmVjdGlv
bkNvY29hLm1tCmluZGV4IGJkNjE5YTNjMzQzOC4uMTE0N2RjNDQwMTRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvQ29jb2EvV2ViUHVzaERh
ZW1vbkNvbm5lY3Rpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05vdGlmaWNhdGlvbnMvQ29jb2EvV2ViUHVzaERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbQpAQCAt
NjEsNyArNjEsNyBAQCB2b2lkIENvbm5lY3Rpb246OmNvbm5lY3Rpb25SZWNlaXZlZEV2ZW50KHhw
Y19vYmplY3RfdCByZXF1ZXN0KSBjb25zdAogICAgIGlmICghZGVidWdNZXNzYWdlKQogICAgICAg
ICByZXR1cm47CiAgICAgYXV0byBtZXNzYWdlTGV2ZWwgPSBzdGF0aWNfY2FzdDxKU0M6Ok1lc3Nh
Z2VMZXZlbD4oeHBjX2RpY3Rpb25hcnlfZ2V0X3VpbnQ2NChyZXF1ZXN0LCBwcm90b2NvbERlYnVn
TWVzc2FnZUxldmVsS2V5KSk7Ci0gICAgbmV0d29ya1Nlc3Npb24oKS5uZXR3b3JrUHJvY2Vzcygp
LmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKG5ldHdvcmtTZXNzaW9uKCkuc2Vzc2lvbklEKCksIE1l
c3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBtZXNzYWdlTGV2ZWwsIFN0cmlu
Zzo6ZnJvbVVURjgoZGVidWdNZXNzYWdlKSk7CisgICAgbmV0d29ya1Nlc3Npb24oKS5uZXR3b3Jr
UHJvY2VzcygpLmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKG5ldHdvcmtTZXNzaW9uKCkuc2Vzc2lv
bklEKCksIE1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBtZXNzYWdlTGV2ZWwsIFN0cmluZzo6ZnJvbVVU
RjgoZGVidWdNZXNzYWdlKSk7CiB9CiAKIFJldGFpblB0cjx4cGNfb2JqZWN0X3Q+IENvbm5lY3Rp
b246OmRpY3Rpb25hcnlGcm9tTWVzc2FnZShNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgRW5jb2Rl
ZE1lc3NhZ2UmJiBtZXNzYWdlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggNDQzNzhmNjYyNjZk
Li4yN2Y3MzkzZTQ1NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaApAQCAtMTU5LDcgKzE1OSw3IEBAIHN0cnVj
dCBVSUVkZ2VJbnNldHM7CiAtICh2b2lkKV93ZWJWaWV3RGlkRGlzYWJsZUluc3BlY3RvckJyb3dz
ZXJEb21haW46KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4w
KSwgaW9zKDE1LjApKTsKIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBz
dGFydFhSU2Vzc2lvbldpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQpKWNvbXBsZXRp
b25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7Ci0tICh2
b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3ROb3RpZmljYXRpb25QZXJt
aXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilzZWN1cml0eU9yaWdp
biBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWRlY2lzaW9uSGFuZGxlciBXS19BUElf
QVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgcmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjoo
V0tTZWN1cml0eU9yaWdpbiAqKXNlY3VyaXR5T3JpZ2luIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAo
XikoQk9PTCkpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCks
IGlvcyhXS19JT1NfVEJBKSk7CiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY1NDBlYjBiY2Y2
Yy4uOTkwZmViN2Q3ZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTEwMDQsNiArMTAwNCwxMiBAQAogCQk1MTVCRTFBQjFENTU1QUEw
MDBERDdDNjggLyogV2ViR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE1QkUxQTAxRDU1MEFCMDAwREQ3QzY4IC8qIFdlYkdhbWVwYWQuaCAq
LzsgfTsKIAkJNTE1QkUxQjMxRDU5MDJERDAwREQ3QzY4IC8qIEdhbWVwYWREYXRhLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTFCMDFENTkwMDY5
MDBERDdDNjggLyogR2FtZXBhZERhdGEuaCAqLzsgfTsKIAkJNTE1QkUxQjUxRDU5MTdGRjAwREQ3
QzY4IC8qIFVJR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE1QkUxQUQxRDU1NUM1MTAwREQ3QzY4IC8qIFVJR2FtZXBhZC5oICovOyB9Owor
CQk1MTYwRTk1NTI3NEI4ODcyMDA1NjczODggLyogQXBwQnVuZGxlUmVxdWVzdC5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjBFOTUzMjc0Qjg4NzEw
MDU2NzM4OCAvKiBBcHBCdW5kbGVSZXF1ZXN0Lm1tICovOyB9OworCQk1MTYwRTk1NjI3NEI4ODcy
MDA1NjczODggLyogQXBwQnVuZGxlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2MEU5NTQyNzRCODg3MTAwNTY3Mzg4IC8qIEFwcEJ1bmRs
ZVJlcXVlc3QuaCAqLzsgfTsKKwkJNTE2MEU5NTkyNzRDMEQ4OTAwNTY3Mzg4IC8qIFB1c2hBcHBC
dW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
NjBFOTU3Mjc0QzBEODgwMDU2NzM4OCAvKiBQdXNoQXBwQnVuZGxlLmggKi87IH07CisJCTUxNjBF
OTVBMjc0QzBEODkwMDU2NzM4OCAvKiBQdXNoQXBwQnVuZGxlLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2MEU5NTgyNzRDMEQ4ODAwNTY3Mzg4IC8q
IFB1c2hBcHBCdW5kbGUubW0gKi87IH07CisJCTUxNjBFOTVFMjc0QzJBMDMwMDU2NzM4OCAvKiBN
b2NrQXBwQnVuZGxlUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxNjBFOTVDMjc0QzJBMDMwMDU2NzM4OCAvKiBNb2NrQXBwQnVuZGxlUmVn
aXN0cnkuaCAqLzsgfTsKKwkJNTE2MEU5NjAyNzRDMkE0MDAwNTY3Mzg4IC8qIE1vY2tBcHBCdW5k
bGVSZWdpc3RyeS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNjBFOTVGMjc0QzJBM0YwMDU2NzM4OCAvKiBNb2NrQXBwQnVuZGxlUmVnaXN0cnkubW0g
Ki87IH07CiAJCTUxNjMxOTk0MTYyODlBNjAwMEUyMkYwMCAvKiBOZXR3b3JrUHJvY2Vzc01lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUFDQzkzNDE2MjgwNjQ4MDAzNDI1NTAgLyogTmV0d29ya1Byb2Nlc3NNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovOyB9OwogCQk1MTYzMTk5NTE2Mjg5QTYzMDBFMjJGMDAgLyogTmV0d29ya1By
b2Nlc3NNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFBQ0M5MzUxNjI4MDY0ODAwMzQyNTUwIC8qIE5ldHdvcmtQcm9jZXNzTWVzc2FnZXMu
aCAqLzsgfTsKIAkJNTE2QTRBNUQxMjBBMkNDRDAwQzA1QjdGIC8qIEFQSUVycm9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTZBNEE1QjEyMEEyQ0NE
MDBDMDVCN0YgLyogQVBJRXJyb3IuaCAqLzsgfTsKQEAgLTEwNTUsNiArMTA2MSw4IEBACiAJCTUx
RjA2MEUxMTY1NDMxODUwMEYzMjgyRSAvKiBOZXR3b3JrUlRDUHJvdmlkZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFG
MDYwREQxNjU0MzE3NTAwRjMyODJFIC8qIE5ldHdvcmtSVENQcm92aWRlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi87IH07CiAJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgyRiAvKiBXZWJNRE5TUmVnaXN0
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFGMDYwREQxNjU0MzE3NTAwRjMyODJGIC8qIFdlYk1ETlNSZWdpc3Rlck1l
c3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgzRiAvKiBO
ZXR3b3JrTUROU1JlZ2lzdGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjA2MEREMTY1NDMxNzUwMEYzMjgzRiAvKiBO
ZXR3b3JrTUROU1JlZ2lzdGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJNTFGN0JCNzYy
NzQ0OThCQjAwQzQ1QTcyIC8qIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGN0JCNzQyNzQ0OThCQTAwQzQ1
QTcyIC8qIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLm1tICovOyB9OworCQk1MUY3QkI3NzI3NDQ5
OEJCMDBDNDVBNzIgLyogTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjdCQjc1Mjc0NDk4QkIwMEM0NUE3MiAv
KiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5oICovOyB9OwogCQk1MUY3QkI3QjI3NDRDNTA3MDBD
NDVBNzIgLyogUHVzaENsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjdCQjc5Mjc0NEM1MDcwMEM0NUE3MiAvKiBQdXNoQ2xp
ZW50Q29ubmVjdGlvbi5oICovOyB9OwogCQk1MUY3QkI3QzI3NDRDNTA3MDBDNDVBNzIgLyogUHVz
aENsaWVudENvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUY3QkI3QTI3NDRDNTA3MDBDNDVBNzIgLyogUHVzaENsaWVudENvbm5lY3Rp
b24ubW0gKi87IH07CiAJCTUxRjdCQjdEMjc0NTY0MDQwMEM0NUE3MiAvKiBDb2RlU2lnbmluZy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMTFBRDRG
MUNCQzQ3RjgwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5tbSAqLzsgfTsKQEAgLTQyMjgsNiArNDIz
NiwxMiBAQAogCQk1MTVDNDE1QTIwN0Q3NEUwMDA3MjZFMDIgLyogU3VzcGVuZGVkUGFnZVByb3h5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN1c3BlbmRlZFBhZ2VQ
cm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUM0MTVCMjA3RDc0RTEw
MDcyNkUwMiAvKiBTdXNwZW5kZWRQYWdlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3VzcGVuZGVkUGFnZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxNjBCRkUwMTMzODFERjkwMDkxODk5OSAvKiBMb2dnaW5nRm91bmRhdGlvbi5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvZ2dpbmdGb3VuZGF0aW9uLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTYwRTk1MzI3NEI4ODcxMDA1NjczODgg
LyogQXBwQnVuZGxlUmVxdWVzdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEFwcEJ1bmRsZVJlcXVlc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxNjBFOTU0Mjc0Qjg4NzEwMDU2NzM4OCAvKiBBcHBCdW5kbGVSZXF1ZXN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcEJ1bmRsZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTE2MEU5NTcyNzRDMEQ4ODAwNTY3Mzg4IC8qIFB1c2hBcHBCdW5k
bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHVzaEFwcEJ1bmRsZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTYwRTk1ODI3NEMwRDg4MDA1NjczODggLyog
UHVzaEFwcEJ1bmRsZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFB1c2hBcHBCdW5kbGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNjBFOTVD
Mjc0QzJBMDMwMDU2NzM4OCAvKiBNb2NrQXBwQnVuZGxlUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUxNjBFOTVGMjc0QzJBM0YwMDU2NzM4OCAvKiBNb2NrQXBwQnVu
ZGxlUmVnaXN0cnkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBN
b2NrQXBwQnVuZGxlUmVnaXN0cnkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
NjRDMDk0MUIwNUI3NTcwMDRGMTAyQSAvKiBBdXhpbGlhcnlQcm9jZXNzLm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IEF1eGlsaWFyeVByb2Nlc3MubWVzc2FnZXMuaW47IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNkE0QTVCMTIwQTJDQ0QwMEMwNUI3RiAvKiBBUElF
cnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElFcnJvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdBMzNCMzEzMEIzMDhDMDBGODBDQjUgLyogV0tB
cHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTQzMzUsNiArNDM0OSw4IEBACiAJCTUxRjA2MEREMTY1NDMxNzUwMEYzMjgy
RiAvKiBXZWJNRE5TUmVnaXN0ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gV2ViTUROU1JlZ2lzdGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvV2ViTUROU1JlZ2lzdGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNTFGMDYwREQxNjU0MzE3NTAwRjMyODNGIC8q
IE5ldHdvcmtNRE5TUmVnaXN0ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gTmV0d29ya01ETlNSZWdpc3Rlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVk
U291cmNlcy9XZWJLaXQyL05ldHdvcmtNRE5TUmVnaXN0ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1MUYwNjBERTE2NTQzMTc1MDBG
MzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJS
ZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dl
YlJlc291cmNlTG9hZGVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKKwkJNTFGN0JCNzQyNzQ0OThCQTAwQzQ1QTcyIC8qIE1vY2tBcHBCdW5kbGVGb3JUZXN0
aW5nLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTW9ja0FwcEJ1
bmRsZUZvclRlc3RpbmcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRjdCQjc1
Mjc0NDk4QkIwMEM0NUE3MiAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MUY3QkI3OTI3NDRDNTA3MDBDNDVBNzIgLyogUHVzaENs
aWVudENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHVzaENs
aWVudENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGN0JCN0Ey
NzQ0QzUwNzAwQzQ1QTcyIC8qIFB1c2hDbGllbnRDb25uZWN0aW9uLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHVzaENsaWVudENvbm5lY3Rpb24ubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRjdCQjdFMjc0NTY0QTEwMEM0NUE3MiAvKiBTZWN1
cml0eS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IFNlY3VyaXR5LmZyYW1ld29yazsgcGF0
aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrOyBzb3VyY2VU
cmVlID0gU0RLUk9PVDsgfTsKQEAgLTk3MzksNiArOTc1NSwxNCBAQAogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1Q0JCNkQ0RDI3MUY2N0NDMDBGRDFBNUQgLyogY29t
LmFwcGxlLndlYmtpdC53ZWJwdXNoZC5wbGlzdCAqLywKKwkJCQk1MTYwRTk1NDI3NEI4ODcxMDA1
NjczODggLyogQXBwQnVuZGxlUmVxdWVzdC5oICovLAorCQkJCTUxNjBFOTUzMjc0Qjg4NzEwMDU2
NzM4OCAvKiBBcHBCdW5kbGVSZXF1ZXN0Lm1tICovLAorCQkJCTUxRjdCQjc1Mjc0NDk4QkIwMEM0
NUE3MiAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5oICovLAorCQkJCTUxRjdCQjc0Mjc0NDk4
QkEwMEM0NUE3MiAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5tbSAqLywKKwkJCQk1MTYwRTk1
QzI3NEMyQTAzMDA1NjczODggLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5LmggKi8sCisJCQkJNTE2
MEU5NUYyNzRDMkEzRjAwNTY3Mzg4IC8qIE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5tbSAqLywKKwkJ
CQk1MTYwRTk1NzI3NEMwRDg4MDA1NjczODggLyogUHVzaEFwcEJ1bmRsZS5oICovLAorCQkJCTUx
NjBFOTU4Mjc0QzBEODgwMDU2NzM4OCAvKiBQdXNoQXBwQnVuZGxlLm1tICovLAogCQkJCTUxRjdC
Qjc5Mjc0NEM1MDcwMEM0NUE3MiAvKiBQdXNoQ2xpZW50Q29ubmVjdGlvbi5oICovLAogCQkJCTUx
RjdCQjdBMjc0NEM1MDcwMEM0NUE3MiAvKiBQdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSAqLywKIAkJ
CQk1MTJDRDY5RDI3MjMzOTNBMDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbi5oICovLApAQCAtMTIy
MTQsOSArMTIyMzgsMTMgQEAKIAkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAotCQkJCTVDMTU3OUZDMjcx
N0FGNTAwMEVENTI4MCAvKiBEYWVtb25VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUx
NjBFOTU5Mjc0QzBEODkwMDU2NzM4OCAvKiBQdXNoQXBwQnVuZGxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MUY3QkI3QjI3NDRDNTA3MDBDNDVBNzIgLyogUHVzaENsaWVudENvbm5lY3Rpb24uaCBp
biBIZWFkZXJzICovLAorCQkJCTUxNjBFOTVFMjc0QzJBMDMwMDU2NzM4OCAvKiBNb2NrQXBwQnVu
ZGxlUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTVDMTU3OUZDMjcxN0FGNTAwMEVENTI4
MCAvKiBEYWVtb25VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxNjBFOTU2Mjc0Qjg4
NzIwMDU2NzM4OCAvKiBBcHBCdW5kbGVSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJD
RDY5RjI3MjMzOTNBMDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTFGN0JCNzcyNzQ0OThCQjAwQzQ1QTcyIC8qIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLmgg
aW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKQEAgLTE0NzA2LDkgKzE0NzM0LDEzIEBACiAJCQkJNUMxNTdBMDEyNzE3
QjdGQjAwRUQ1MjgwIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUx
RjdCQjdEMjc0NTY0MDQwMEM0NUE3MiAvKiBDb2RlU2lnbmluZy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTVDMTU3OUZGMjcxN0I2RDIwMEVENTI4MCAvKiBEYWVtb25EZWNvZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTUxRjdCQjc2Mjc0NDk4QkIwMEM0NUE3MiAvKiBNb2NrQXBwQnVuZGxlRm9y
VGVzdGluZy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxNjBFOTU1Mjc0Qjg4NzIwMDU2NzM4OCAv
KiBBcHBCdW5kbGVSZXF1ZXN0Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTE2MEU5NUEyNzRDMEQ4
OTAwNTY3Mzg4IC8qIFB1c2hBcHBCdW5kbGUubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTYwRTk2
MDI3NEMyQTQwMDA1NjczODggLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJNTFGN0JCN0MyNzQ0QzUwNzAwQzQ1QTcyIC8qIFB1c2hDbGllbnRDb25uZWN0aW9u
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNTc5RkUyNzE3QjZDMTAwRUQ1MjgwIC8qIERhZW1v
bkVuY29kZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNTc5RkIyNzE3QUY1MDAwRUQ1Mjgw
IC8qIERhZW1vblV0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovLAotCQkJCTUxRjdCQjdDMjc0NEM1
MDcwMEM0NUE3MiAvKiBQdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTUxMkNENkEwMjcyMzM5M0EwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNUMxNTdBMEMyNzE3Q0ExRDAwRUQ1MjgwIC8qIFdlYlB1c2hEYWVtb25NYWluLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9BcHBCdW5kbGVSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL0FwcEJ1bmRsZVJl
cXVlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjRmN2ZiZjk0
ODQ5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvQXBwQnVuZGxl
UmVxdWVzdC5oCkBAIC0wLDAgKzEsMTI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbXBvcnQgIlB1c2hBcHBCdW5kbGUuaCIKKyNpbXBvcnQgIlB1c2hDbGllbnRDb25uZWN0aW9u
LmgiCisjaW1wb3J0IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbXBvcnQgPHd0Zi9PU09i
amVjdFB0ci5oPgorI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CisjaW1wb3J0IDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYlB1c2hEIHsKKworY2xhc3MgUHVz
aEFwcEJ1bmRsZTsKK2NsYXNzIENsaWVudENvbm5lY3Rpb247CisKK2NsYXNzIEFwcEJ1bmRsZVJl
cXVlc3QgOiBwdWJsaWMgUHVzaEFwcEJ1bmRsZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgdmlydHVhbCB+QXBwQnVuZGxlUmVxdWVzdCgpOworCisg
ICAgdmlydHVhbCBjb25zdCBjaGFyKiB0cmFuc2FjdGlvbkRlc2NyaXB0aW9uKCkgY29uc3QgPSAw
OworCisgICAgdm9pZCBzdGFydCgpOworICAgIHZvaWQgY2FuY2VsKCk7CisKK3Byb3RlY3RlZDoK
KyAgICBBcHBCdW5kbGVSZXF1ZXN0KENsaWVudENvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIG9y
aWdpblN0cmluZyk7CisKKyAgICB2b2lkIGNsZWFudXBBZnRlckNvbXBsZXRpb25IYW5kbGVyKCk7
CisKKyAgICBDbGllbnRDb25uZWN0aW9uKiBtX2Nvbm5lY3Rpb247CisgICAgU3RyaW5nIG1fb3Jp
Z2luU3RyaW5nOworICAgIFJlZlB0cjxQdXNoQXBwQnVuZGxlPiBtX2FwcEJ1bmRsZTsKKyAgICBP
U09iamVjdFB0cjxvc190cmFuc2FjdGlvbl90PiBtX3RyYW5zYWN0aW9uOworCitwcml2YXRlOgor
ICAgIHZpcnR1YWwgdm9pZCBzdGFydEludGVybmFsKCkgPSAwOworfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgQ29tcGxldGlvblR5cGU+CitjbGFzcyBBcHBCdW5kbGVSZXF1ZXN0SW1wbCA6IHB1Ymxp
YyBBcHBCdW5kbGVSZXF1ZXN0IHsKK3Byb3RlY3RlZDoKKyAgICBBcHBCdW5kbGVSZXF1ZXN0SW1w
bChDbGllbnRDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpblN0cmlu
ZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChDb21wbGV0aW9uVHlwZSk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgICAgIDogQXBwQnVuZGxlUmVxdWVzdChjb25uZWN0aW9uLCBvcmlnaW5TdHJp
bmcpCisgICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+QXBwQnVuZGxlUmVxdWVzdEltcGwo
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX2FwcEJ1bmRsZSk7CisgICAgfQorCisgICAgdm9p
ZCBjYWxsQ29tcGxldGlvbkhhbmRsZXJBbmRDbGVhbnVwKENvbXBsZXRpb25UeXBlIHJlc3VsdCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX2NvbXBsZXRpb25IYW5kbGVyKTsKKyAgICAgICAgbV9j
b21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOworCisgICAgICAgIGNsZWFudXBBZnRlckNvbXBsZXRp
b25IYW5kbGVyKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0SW50ZXJuYWwoKSA9
IDA7CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiB0cmFuc2FjdGlvbkRlc2NyaXB0aW9uKCkgY29u
c3QgPSAwOworCitwcml2YXRlOgorICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQ29tcGxldGlv
blR5cGUpPiBtX2NvbXBsZXRpb25IYW5kbGVyOworfTsKKworY2xhc3MgQXBwQnVuZGxlUGVybWlz
c2lvbnNSZXF1ZXN0IDogcHVibGljIEFwcEJ1bmRsZVJlcXVlc3RJbXBsPGJvb2w+Cit7CitwdWJs
aWM6CisgICAgQXBwQnVuZGxlUGVybWlzc2lvbnNSZXF1ZXN0KENsaWVudENvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICA6IEFwcEJ1bmRsZVJlcXVl
c3RJbXBsKGNvbm5lY3Rpb24sIG9yaWdpblN0cmluZywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBjaGFyKiB0cmFuc2FjdGlv
bkRlc2NyaXB0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIldlYlB1c2ggUGVybWlzc2lvbnMg
QnVuZGxlIFJlcXVlc3QiOyB9CisKKyAgICB2b2lkIHN0YXJ0SW50ZXJuYWwoKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZENoZWNrRm9yRXhpc3RpbmdCdW5kbGUoUHVzaEFwcEJ1bmRsZSYsIFB1c2hBcHBC
dW5kbGVFeGlzdHMpIGZpbmFsOworICAgIHZvaWQgZGlkRGVsZXRlRXhpc3RpbmdCdW5kbGVXaXRo
RXJyb3IoUHVzaEFwcEJ1bmRsZSYsIE5TRXJyb3IgKikgZmluYWwgeyBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CisgICAgdm9pZCBkaWRDcmVhdGVBcHBCdW5kbGUoUHVzaEFwcEJ1bmRs
ZSYsIFB1c2hBcHBCdW5kbGVDcmVhdGlvblJlc3VsdCkgZmluYWw7Cit9OworCitjbGFzcyBBcHBC
dW5kbGVEZWxldGlvblJlcXVlc3QgOiBwdWJsaWMgQXBwQnVuZGxlUmVxdWVzdEltcGw8Y29uc3Qg
U3RyaW5nJj4KK3sKK3B1YmxpYzoKKyAgICBBcHBCdW5kbGVEZWxldGlvblJlcXVlc3QoQ2xpZW50
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgICAgIDogQXBwQnVuZGxlUmVxdWVzdEltcGwoY29ubmVjdGlvbiwgb3JpZ2luU3RyaW5nLCAg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBjb25zdCBjaGFyKiB0cmFuc2FjdGlvbkRlc2NyaXB0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gIldlYlB1c2ggQnVuZGxlIERlbGV0aW9uIFJlcXVlc3QiOyB9CisKKyAgICB2b2lkIHN0YXJ0
SW50ZXJuYWwoKSBmaW5hbDsKKyAgICB2b2lkIGRpZENoZWNrRm9yRXhpc3RpbmdCdW5kbGUoUHVz
aEFwcEJ1bmRsZSYsIFB1c2hBcHBCdW5kbGVFeGlzdHMpIGZpbmFsICB7IFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KKyAgICB2b2lkIGRpZERlbGV0ZUV4aXN0aW5nQnVuZGxlV2l0aEVy
cm9yKFB1c2hBcHBCdW5kbGUmLCBOU0Vycm9yICopIGZpbmFsOworICAgIHZvaWQgZGlkQ3JlYXRl
QXBwQnVuZGxlKFB1c2hBcHBCdW5kbGUmLCBQdXNoQXBwQnVuZGxlQ3JlYXRpb25SZXN1bHQpIGZp
bmFsICB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYlB1c2hECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL0FwcEJ1bmRs
ZVJlcXVlc3QubW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL0FwcEJ1bmRsZVJlcXVlc3QubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jYWUwNTIzNzNlYjQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL0FwcEJ1bmRsZVJlcXVlc3Qu
bW0KQEAgLTAsMCArMSwxMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIkFwcEJ1bmRsZVJlcXVlc3QuaCIKKworI2ltcG9ydCAiTW9ja0FwcEJ1bmRsZUZvclRl
c3RpbmcuaCIKKyNpbXBvcnQgIldlYlB1c2hEYWVtb24uaCIKKyNpbXBvcnQgPEphdmFTY3JpcHRD
b3JlL0NvbnNvbGVUeXBlcy5oPgorCituYW1lc3BhY2UgV2ViUHVzaEQgeworCitBcHBCdW5kbGVS
ZXF1ZXN0OjpBcHBCdW5kbGVSZXF1ZXN0KENsaWVudENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNv
bnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nKQorICAgIDogbV9jb25uZWN0aW9uKCZjb25uZWN0aW9u
KQorICAgICwgbV9vcmlnaW5TdHJpbmcob3JpZ2luU3RyaW5nKQoreworfQorCitBcHBCdW5kbGVS
ZXF1ZXN0Ojp+QXBwQnVuZGxlUmVxdWVzdCgpCit7CisgICAgQVNTRVJUKCFtX2FwcEJ1bmRsZSk7
Cit9CisKK3ZvaWQgQXBwQnVuZGxlUmVxdWVzdDo6c3RhcnQoKQoreworICAgIEFTU0VSVChtX2Nv
bm5lY3Rpb24pOworCisgICAgbV90cmFuc2FjdGlvbiA9IGFkb3B0T1NPYmplY3Qob3NfdHJhbnNh
Y3Rpb25fY3JlYXRlKHRyYW5zYWN0aW9uRGVzY3JpcHRpb24oKSkpOworCisgICAgbV9hcHBCdW5k
bGUgPSBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZzo6Y3JlYXRlKG1fb3JpZ2luU3RyaW5nLCBtX2Nv
bm5lY3Rpb24tPmhvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIoKSwgKnRoaXMpOworICAgIHN0
YXJ0SW50ZXJuYWwoKTsKK30KKwordm9pZCBBcHBCdW5kbGVSZXF1ZXN0OjpjYW5jZWwoKQorewor
ICAgIEFTU0VSVChtX2Nvbm5lY3Rpb24pOworCisgICAgaWYgKG1fYXBwQnVuZGxlKSB7CisgICAg
ICAgIG1fYXBwQnVuZGxlLT5zdG9wKCk7CisgICAgICAgIG1fYXBwQnVuZGxlID0gbnVsbHB0cjsK
KyAgICB9Cit9CisKK3ZvaWQgQXBwQnVuZGxlUmVxdWVzdDo6Y2xlYW51cEFmdGVyQ29tcGxldGlv
bkhhbmRsZXIoKQoreworICAgIGlmIChtX2FwcEJ1bmRsZSkgeworICAgICAgICBtX2FwcEJ1bmRs
ZS0+ZGV0YWNoRnJvbUNsaWVudCgpOworICAgICAgICBtX2FwcEJ1bmRsZSA9IG51bGxwdHI7Cisg
ICAgfQorCisgICAgbV90cmFuc2FjdGlvbiA9IG51bGxwdHI7CisKKyAgICBpZiAobV9jb25uZWN0
aW9uKQorICAgICAgICBtX2Nvbm5lY3Rpb24tPmRpZENvbXBsZXRlQXBwQnVuZGxlUmVxdWVzdCgq
dGhpcyk7Cit9CisKKy8vIEFwcCBidW5kbGUgcGVybWlzc2lvbnMKKwordm9pZCBBcHBCdW5kbGVQ
ZXJtaXNzaW9uc1JlcXVlc3Q6OnN0YXJ0SW50ZXJuYWwoKQoreworICAgIG1fYXBwQnVuZGxlLT5j
aGVja0ZvckV4aXN0aW5nQnVuZGxlKCk7Cit9CisKK3ZvaWQgQXBwQnVuZGxlUGVybWlzc2lvbnNS
ZXF1ZXN0OjpkaWRDaGVja0ZvckV4aXN0aW5nQnVuZGxlKFB1c2hBcHBCdW5kbGUmIGJ1bmRsZSwg
UHVzaEFwcEJ1bmRsZUV4aXN0cyBleGlzdHMpCit7CisgICAgQVNTRVJUX1VOVVNFRChidW5kbGUs
ICZidW5kbGUgPT0gbV9hcHBCdW5kbGUuZ2V0KCkpOworCisgICAgaWYgKGV4aXN0cyA9PSBQdXNo
QXBwQnVuZGxlRXhpc3RzOjpZZXMpCisgICAgICAgIHJldHVybiBjYWxsQ29tcGxldGlvbkhhbmRs
ZXJBbmRDbGVhbnVwKHRydWUpOworCisgICAgbV9hcHBCdW5kbGUtPmNyZWF0ZUJ1bmRsZSgpOwor
fQorCit2b2lkIEFwcEJ1bmRsZVBlcm1pc3Npb25zUmVxdWVzdDo6ZGlkQ3JlYXRlQXBwQnVuZGxl
KFB1c2hBcHBCdW5kbGUmIGJ1bmRsZSwgUHVzaEFwcEJ1bmRsZUNyZWF0aW9uUmVzdWx0IHJlc3Vs
dCkKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGJ1bmRsZSwgJmJ1bmRsZSA9PSBtX2FwcEJ1bmRsZS5n
ZXQoKSk7CisKKyAgICBpZiAocmVzdWx0ID09IFB1c2hBcHBCdW5kbGVDcmVhdGlvblJlc3VsdDo6
RmFpbHVyZSkKKyAgICAgICAgcmV0dXJuIGNhbGxDb21wbGV0aW9uSGFuZGxlckFuZENsZWFudXAo
ZmFsc2UpOworCisgICAgY2FsbENvbXBsZXRpb25IYW5kbGVyQW5kQ2xlYW51cCh0cnVlKTsKK30K
KworLy8gQXBwIGJ1bmRsZSBkZWxldGlvbgorCit2b2lkIEFwcEJ1bmRsZURlbGV0aW9uUmVxdWVz
dDo6c3RhcnRJbnRlcm5hbCgpCit7CisgICAgbV9hcHBCdW5kbGUtPmRlbGV0ZUV4aXN0aW5nQnVu
ZGxlKCk7Cit9CisKK3ZvaWQgQXBwQnVuZGxlRGVsZXRpb25SZXF1ZXN0OjpkaWREZWxldGVFeGlz
dGluZ0J1bmRsZVdpdGhFcnJvcihQdXNoQXBwQnVuZGxlJiBidW5kbGUsIE5TRXJyb3IgKmVycm9y
KQoreworICAgIEFTU0VSVF9VTlVTRUQoYnVuZGxlLCAmYnVuZGxlID09IG1fYXBwQnVuZGxlLmdl
dCgpKTsKKworICAgIGlmIChlcnJvcikKKyAgICAgICAgRGFlbW9uOjpzaW5nbGV0b24oKS5icm9h
ZGNhc3REZWJ1Z01lc3NhZ2UoTWVzc2FnZUxldmVsOjpJbmZvLCBtYWtlU3RyaW5nKCJGYWlsZWQg
dG8gZGVsZXRlIGFwcCBidW5kbGU6ICIsIFN0cmluZyhbZXJyb3IgZGVzY3JpcHRpb25dKSkpOwor
CisgICAgY2FsbENvbXBsZXRpb25IYW5kbGVyQW5kQ2xlYW51cChlcnJvciA/IFN0cmluZyhbZXJy
b3IgZGVzY3JpcHRpb25dKSA6ICIiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvTW9ja0FwcEJ1bmRsZUZvclRlc3Rpbmcu
aCBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjcxY2ZkMDYxMWVlZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvTW9ja0FwcEJ1bmRsZUZvclRlc3Rp
bmcuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJQdXNoQXBwQnVuZGxlLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViUHVzaEQgeworCitjbGFzcyBN
b2NrQXBwQnVuZGxlRm9yVGVzdGluZyA6IHB1YmxpYyBQdXNoQXBwQnVuZGxlIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPE1vY2tBcHBCdW5k
bGVGb3JUZXN0aW5nPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIGNvbnN0IFN0
cmluZyYgaG9zdEFwcEJ1bmRsZUlkZW50aWZpZXIsIFB1c2hBcHBCdW5kbGVDbGllbnQmIGNsaWVu
dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vY2tBcHBCdW5kbGVGb3JU
ZXN0aW5nKG9yaWdpblN0cmluZywgaG9zdEFwcEJ1bmRsZUlkZW50aWZpZXIsIGNsaWVudCkpOwor
ICAgIH0KKworICAgIH5Nb2NrQXBwQnVuZGxlRm9yVGVzdGluZygpIGZpbmFsOworCitwcml2YXRl
OgorICAgIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5n
LCBjb25zdCBTdHJpbmcmIGhvc3RBcHBCdW5kbGVJZGVudGlmaWVyLCBQdXNoQXBwQnVuZGxlQ2xp
ZW50Jik7CisKKyAgICB2b2lkIGNoZWNrRm9yRXhpc3RpbmdCdW5kbGUoKSBmaW5hbDsKKyAgICB2
b2lkIGRlbGV0ZUV4aXN0aW5nQnVuZGxlKCkgZmluYWw7CisgICAgdm9pZCBjcmVhdGVCdW5kbGUo
KSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKworICAgIFN0cmluZyBtX29yaWdpblN0
cmluZzsKKyAgICBTdHJpbmcgbV9ob3N0QXBwQnVuZGxlSWRlbnRpZmllcjsKK307CisKKworfSAv
LyBuYW1lc3BhY2UgV2ViUHVzaEQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQv
TW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcubW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL01vY2tB
cHBCdW5kbGVGb3JUZXN0aW5nLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uZTFlZjBhY2YyZWVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC93ZWJw
dXNoZC9Nb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5tbQpAQCAtMCwwICsxLDc3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJNb2NrQXBwQnVuZGxlRm9yVGVzdGlu
Zy5oIgorCisjaW1wb3J0ICJNb2NrQXBwQnVuZGxlUmVnaXN0cnkuaCIKKyNpbXBvcnQgPHd0Zi9N
YWluVGhyZWFkLmg+CisKK25hbWVzcGFjZSBXZWJQdXNoRCB7CisKK01vY2tBcHBCdW5kbGVGb3JU
ZXN0aW5nOjpNb2NrQXBwQnVuZGxlRm9yVGVzdGluZyhjb25zdCBTdHJpbmcmIG9yaWdpblN0cmlu
ZywgY29uc3QgU3RyaW5nJiBob3N0QXBwQnVuZGxlSWRlbnRpZmllciwgUHVzaEFwcEJ1bmRsZUNs
aWVudCYgY2xpZW50KQorICAgIDogUHVzaEFwcEJ1bmRsZShjbGllbnQpCisgICAgLCBtX29yaWdp
blN0cmluZyhvcmlnaW5TdHJpbmcpCisgICAgLCBtX2hvc3RBcHBCdW5kbGVJZGVudGlmaWVyKGhv
c3RBcHBCdW5kbGVJZGVudGlmaWVyKQoreworfQorCitNb2NrQXBwQnVuZGxlRm9yVGVzdGluZzo6
fk1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nKCkKK3sKKworfQorCit2b2lkIE1vY2tBcHBCdW5kbGVG
b3JUZXN0aW5nOjpjaGVja0ZvckV4aXN0aW5nQnVuZGxlKCkKK3sKKyAgICBjYWxsT25NYWluUnVu
TG9vcChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHRoaXNdIHsKKyAgICAgICAgYm9v
bCBleGlzdHMgPSBNb2NrQXBwQnVuZGxlUmVnaXN0cnk6OnNpbmdsZXRvbigpLmRvZXNCdW5kbGVF
eGlzdChtX2hvc3RBcHBCdW5kbGVJZGVudGlmaWVyLCBtX29yaWdpblN0cmluZyk7CisgICAgICAg
IGlmIChtX2NsaWVudCkKKyAgICAgICAgICAgIG1fY2xpZW50LT5kaWRDaGVja0ZvckV4aXN0aW5n
QnVuZGxlKCp0aGlzLCBleGlzdHMgPyBQdXNoQXBwQnVuZGxlRXhpc3RzOjpZZXMgOiBQdXNoQXBw
QnVuZGxlRXhpc3RzOjpObyk7CisgICAgfSk7Cit9CisKK3ZvaWQgTW9ja0FwcEJ1bmRsZUZvclRl
c3Rpbmc6OmRlbGV0ZUV4aXN0aW5nQnVuZGxlKCkKK3sKKyAgICBjYWxsT25NYWluUnVuTG9vcChb
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHRoaXNdIHsKKyAgICAgICAgTW9ja0FwcEJ1
bmRsZVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5kZWxldGVCdW5kbGUobV9ob3N0QXBwQnVuZGxlSWRl
bnRpZmllciwgbV9vcmlnaW5TdHJpbmcpOworICAgICAgICBpZiAobV9jbGllbnQpCisgICAgICAg
ICAgICBtX2NsaWVudC0+ZGlkRGVsZXRlRXhpc3RpbmdCdW5kbGVXaXRoRXJyb3IoKnRoaXMsIG5p
bCk7CisgICAgfSk7Cit9CisKK3ZvaWQgTW9ja0FwcEJ1bmRsZUZvclRlc3Rpbmc6OmNyZWF0ZUJ1
bmRsZSgpCit7CisgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCB0aGlzXSB7CisgICAgICAgIE1vY2tBcHBCdW5kbGVSZWdpc3RyeTo6c2luZ2xldG9u
KCkuY3JlYXRlQnVuZGxlKG1faG9zdEFwcEJ1bmRsZUlkZW50aWZpZXIsIG1fb3JpZ2luU3RyaW5n
KTsKKyAgICAgICAgaWYgKG1fY2xpZW50KQorICAgICAgICAgICAgbV9jbGllbnQtPmRpZENyZWF0
ZUFwcEJ1bmRsZSgqdGhpcywgUHVzaEFwcEJ1bmRsZUNyZWF0aW9uUmVzdWx0OjpTdWNjZXNzKTsK
KyAgICB9KTsKK30KKwordm9pZCBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZzo6c3RvcCgpCit7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYlB1c2hECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dl
YnB1c2hkL01vY2tBcHBCdW5kbGVSZWdpc3RyeS5oIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9N
b2NrQXBwQnVuZGxlUmVnaXN0cnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjQzNjc2NDU2YzA3YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvd2Vi
cHVzaGQvTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5LmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYlB1c2hEIHsKKworY2xhc3Mg
TW9ja0FwcEJ1bmRsZUZvclRlc3Rpbmc7CisKK2NsYXNzIE1vY2tBcHBCdW5kbGVSZWdpc3RyeSB7
CisgICAgZnJpZW5kIGNsYXNzIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nOworcHVibGljOgorICAg
IHN0YXRpYyBNb2NrQXBwQnVuZGxlUmVnaXN0cnkmIHNpbmdsZXRvbigpOworCisgICAgVmVjdG9y
PFN0cmluZz4gZ2V0T3JpZ2luc1dpdGhSZWdpc3RyYXRpb25zKGNvbnN0IFN0cmluZyYgaG9zdEFw
cEJ1bmRsZUlkZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIGJvb2wgZG9lc0J1bmRsZUV4aXN0
KGNvbnN0IFN0cmluZyYgaG9zdEFwcEJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luU3RyaW5nKTsKKyAgICB2b2lkIGNyZWF0ZUJ1bmRsZShjb25zdCBTdHJpbmcmIGhvc3RBcHBC
dW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZyk7CisgICAgdm9pZCBk
ZWxldGVCdW5kbGUoY29uc3QgU3RyaW5nJiBob3N0QXBwQnVuZGxlSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBvcmlnaW5TdHJpbmcpOworCisgICAgSGFzaE1hcDxTdHJpbmcsIEhhc2hTZXQ8U3Ry
aW5nPj4gbV9yZWdpc3RlcmVkQnVuZGxlTWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViUHVz
aEQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvTW9ja0FwcEJ1bmRsZVJlZ2lz
dHJ5Lm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9Nb2NrQXBwQnVuZGxlUmVnaXN0cnkubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wNTY2NTQ4NTc5NzAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL01vY2tBcHBCdW5kbGVSZWdp
c3RyeS5tbQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJNb2NrQXBwQnVuZGxlUmVnaXN0cnkuaCIKKworI2ltcG9ydCA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJQdXNoRCB7CisKK01vY2tBcHBCdW5kbGVSZWdp
c3RyeSYgTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5OjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxNb2NrQXBwQnVuZGxlUmVnaXN0cnk+IHJlZ2lzdHJ5OworICAgIHJldHVy
biByZWdpc3RyeTsKK30KKworVmVjdG9yPFN0cmluZz4gTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Ojpn
ZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMoY29uc3QgU3RyaW5nJiBob3N0QXBwQnVuZGxlSWRl
bnRpZmllcikKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHRzOworICAgIGF1dG8gaXRlcmF0
b3IgPSBtX3JlZ2lzdGVyZWRCdW5kbGVNYXAuZmluZChob3N0QXBwQnVuZGxlSWRlbnRpZmllcik7
CisgICAgaWYgKGl0ZXJhdG9yICE9IG1fcmVnaXN0ZXJlZEJ1bmRsZU1hcC5lbmQoKSkKKyAgICAg
ICAgcmVzdWx0cyA9IGNvcHlUb1ZlY3RvcihpdGVyYXRvci0+dmFsdWUpOworICAgIHJldHVybiBy
ZXN1bHRzOworfQorCitib29sIE1vY2tBcHBCdW5kbGVSZWdpc3RyeTo6ZG9lc0J1bmRsZUV4aXN0
KGNvbnN0IFN0cmluZyYgaG9zdEFwcEJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luU3RyaW5nKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX3JlZ2lzdGVyZWRCdW5kbGVNYXAu
ZmluZChob3N0QXBwQnVuZGxlSWRlbnRpZmllcik7CisgICAgcmV0dXJuIGl0ZXJhdG9yICE9IG1f
cmVnaXN0ZXJlZEJ1bmRsZU1hcC5lbmQoKSAmJiBpdGVyYXRvci0+dmFsdWUuY29udGFpbnMob3Jp
Z2luU3RyaW5nKTsKK30KKwordm9pZCBNb2NrQXBwQnVuZGxlUmVnaXN0cnk6OmNyZWF0ZUJ1bmRs
ZShjb25zdCBTdHJpbmcmIGhvc3RBcHBCdW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9y
aWdpblN0cmluZykKK3sKKyAgICBtX3JlZ2lzdGVyZWRCdW5kbGVNYXAuYWRkKGhvc3RBcHBCdW5k
bGVJZGVudGlmaWVyLCBIYXNoU2V0PFN0cmluZz57IH0pLml0ZXJhdG9yLT52YWx1ZS5hZGQob3Jp
Z2luU3RyaW5nKTsKK30KKwordm9pZCBNb2NrQXBwQnVuZGxlUmVnaXN0cnk6OmRlbGV0ZUJ1bmRs
ZShjb25zdCBTdHJpbmcmIGhvc3RBcHBCdW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9y
aWdpblN0cmluZykKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9yZWdpc3RlcmVkQnVuZGxlTWFw
LmZpbmQoaG9zdEFwcEJ1bmRsZUlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX3Jl
Z2lzdGVyZWRCdW5kbGVNYXAuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGl0ZXJhdG9y
LT52YWx1ZS5yZW1vdmUob3JpZ2luU3RyaW5nKTsKKworICAgIGlmIChpdGVyYXRvci0+dmFsdWUu
aXNFbXB0eSgpKQorICAgICAgICBtX3JlZ2lzdGVyZWRCdW5kbGVNYXAucmVtb3ZlKGl0ZXJhdG9y
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2VicHVzaGQvUHVzaEFwcEJ1bmRsZS5oIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNo
QXBwQnVuZGxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jZmQ1
NzY4MjQ1YTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hB
cHBCdW5kbGUuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCitAY2xhc3MgTlNFcnJvcjsKKworbmFtZXNw
YWNlIFdlYlB1c2hEIHsKKworZW51bSBjbGFzcyBQdXNoQXBwQnVuZGxlRXhpc3RzIHsKKyAgICBO
bywKKyAgICBZZXMsCit9OworCitlbnVtIGNsYXNzIFB1c2hBcHBCdW5kbGVDcmVhdGlvblJlc3Vs
dCB7CisgICAgRmFpbHVyZSwKKyAgICBTdWNjZXNzLAorfTsKKworY2xhc3MgUHVzaEFwcEJ1bmRs
ZTsKKworY2xhc3MgUHVzaEFwcEJ1bmRsZUNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
UHVzaEFwcEJ1bmRsZUNsaWVudCgpOworCisgICAgdmlydHVhbCB2b2lkIGRpZENoZWNrRm9yRXhp
c3RpbmdCdW5kbGUoUHVzaEFwcEJ1bmRsZSYsIFB1c2hBcHBCdW5kbGVFeGlzdHMpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkRGVsZXRlRXhpc3RpbmdCdW5kbGVXaXRoRXJyb3IoUHVzaEFwcEJ1
bmRsZSYsIE5TRXJyb3IgKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVBcHBCdW5k
bGUoUHVzaEFwcEJ1bmRsZSYsIFB1c2hBcHBCdW5kbGVDcmVhdGlvblJlc3VsdCkgPSAwOworfTsK
KworY2xhc3MgUHVzaEFwcEJ1bmRsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFB1c2hBcHBCdW5kbGU+
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5QdXNoQXBwQnVuZGxlKCk7CisgICAgdm9pZCBkZXRh
Y2hGcm9tQ2xpZW50KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tGb3JFeGlzdGluZ0J1bmRs
ZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRXhpc3RpbmdCdW5kbGUoKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGNyZWF0ZUJ1bmRsZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3Rv
cCgpID0gMDsKKworcHJvdGVjdGVkOgorICAgIFB1c2hBcHBCdW5kbGUoUHVzaEFwcEJ1bmRsZUNs
aWVudCYpOworCisgICAgUHVzaEFwcEJ1bmRsZUNsaWVudCogbV9jbGllbnQ7Cit9OworCisKK30g
Ly8gbmFtZXNwYWNlIFdlYlB1c2hECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hk
L1B1c2hBcHBCdW5kbGUubW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hBcHBCdW5kbGUu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iODAxMDRiMDIwNDgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hBcHBCdW5kbGUu
bW0KQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiUHVzaEFwcEJ1bmRsZS5oIgorCituYW1lc3BhY2UgV2ViUHVzaEQgeworCitQdXNoQXBw
QnVuZGxlQ2xpZW50Ojp+UHVzaEFwcEJ1bmRsZUNsaWVudCgpCit7Cit9CisKK1B1c2hBcHBCdW5k
bGU6OlB1c2hBcHBCdW5kbGUoUHVzaEFwcEJ1bmRsZUNsaWVudCYgY2xpZW50KQorICAgIDogbV9j
bGllbnQoJmNsaWVudCkKK3sKK30KKworUHVzaEFwcEJ1bmRsZTo6flB1c2hBcHBCdW5kbGUoKQor
eworICAgIEFTU0VSVCghbV9jbGllbnQpOworfQorCit2b2lkIFB1c2hBcHBCdW5kbGU6OmRldGFj
aEZyb21DbGllbnQoKQoreworICAgIHN0b3AoKTsKKyAgICBtX2NsaWVudCA9IG51bGxwdHI7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYlB1c2hECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dl
YnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1
c2hDbGllbnRDb25uZWN0aW9uLmgKaW5kZXggYmUwZmYwNDJjOWRlLi5kMDAyY2IzMjhiZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLmgKQEAgLTI2
LDE3ICsyNiwyMSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxvcHRpb25hbD4KKyNpbmNs
dWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9PU09iamVjdFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJQdXNoRCB7CiAKLWNsYXNzIENsaWVudENvbm5lY3Rpb24geworY2xh
c3MgQXBwQnVuZGxlUmVxdWVzdDsKKworY2xhc3MgQ2xpZW50Q29ubmVjdGlvbiA6IHB1YmxpYyBS
ZWZDb3VudGVkPENsaWVudENvbm5lY3Rpb24+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBDbGllbnRDb25uZWN0aW9uKHhwY19jb25uZWN0aW9uX3QpOworICAg
IHN0YXRpYyBSZWY8Q2xpZW50Q29ubmVjdGlvbj4gY3JlYXRlKHhwY19jb25uZWN0aW9uX3QpOwog
CiAgICAgYm9vbCBoYXNIb3N0QXBwQXVkaXRUb2tlbigpIGNvbnN0IHsgcmV0dXJuICEhbV9ob3N0
QXBwQXVkaXRUb2tlbjsgfQogICAgIHZvaWQgc2V0SG9zdEFwcEF1ZGl0VG9rZW5EYXRhKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYpOwpAQCAtNDcsMTMgKzUxLDI1IEBAIHB1YmxpYzoKICAgICBib29s
IGRlYnVnTW9kZUlzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdNb2RlRW5hYmxlZDsg
fQogICAgIHZvaWQgc2V0RGVidWdNb2RlSXNFbmFibGVkKGJvb2wpOwogCisgICAgdm9pZCBlbnF1
ZXVlQXBwQnVuZGxlUmVxdWVzdChzdGQ6OnVuaXF1ZV9wdHI8QXBwQnVuZGxlUmVxdWVzdD4mJiBy
ZXF1ZXN0KTsKKyAgICB2b2lkIGRpZENvbXBsZXRlQXBwQnVuZGxlUmVxdWVzdChBcHBCdW5kbGVS
ZXF1ZXN0Jik7CisKKyAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoKTsKKwogcHJpdmF0ZToKKyAg
ICBDbGllbnRDb25uZWN0aW9uKHhwY19jb25uZWN0aW9uX3QpOworCisgICAgdm9pZCBtYXliZVN0
YXJ0TmV4dEFwcEJ1bmRsZVJlcXVlc3QoKTsKKyAgICAKICAgICBPU09iamVjdFB0cjx4cGNfY29u
bmVjdGlvbl90PiBtX3hwY0Nvbm5lY3Rpb247CiAKICAgICBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rv
a2VuX3Q+IG1faG9zdEFwcEF1ZGl0VG9rZW47CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1f
aG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcjsKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1f
aG9zdEFwcEhhc1B1c2hFbnRpdGxlbWVudDsKIAorICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxB
cHBCdW5kbGVSZXF1ZXN0Pj4gbV9wZW5kaW5nQnVuZGxlUmVxdWVzdHM7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEFwcEJ1bmRsZVJlcXVlc3Q+IG1fY3VycmVudEJ1bmRsZVJlcXVlc3Q7CisKICAgICBi
b29sIG1fZGVidWdNb2RlRW5hYmxlZCB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktp
dC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQppbmRleCA3ODNkODUyNTQ4ZTkuLjYw
ODIzMDc3ODRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50
Q29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25u
ZWN0aW9uLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQg
IlB1c2hDbGllbnRDb25uZWN0aW9uLmgiCiAKKyNpbXBvcnQgIkFwcEJ1bmRsZVJlcXVlc3QuaCIK
ICNpbXBvcnQgIkNvZGVTaWduaW5nLmgiCiAjaW1wb3J0ICJXZWJQdXNoRGFlbW9uLmgiCiAjaW1w
b3J0IDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4KQEAgLTM0LDYgKzM1LDExIEBACiAK
IG5hbWVzcGFjZSBXZWJQdXNoRCB7CiAKK1JlZjxDbGllbnRDb25uZWN0aW9uPiBDbGllbnRDb25u
ZWN0aW9uOjpjcmVhdGUoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKQoreworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IENsaWVudENvbm5lY3Rpb24oY29ubmVjdGlvbikpOworfQorCiBDbGll
bnRDb25uZWN0aW9uOjpDbGllbnRDb25uZWN0aW9uKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlv
bikKICAgICA6IG1feHBjQ29ubmVjdGlvbihjb25uZWN0aW9uKQogewpAQCAtOTMsNCArOTksNDkg
QEAgdm9pZCBDbGllbnRDb25uZWN0aW9uOjpzZXREZWJ1Z01vZGVJc0VuYWJsZWQoYm9vbCBlbmFi
bGVkKQogICAgIERhZW1vbjo6c2luZ2xldG9uKCkuYnJvYWRjYXN0RGVidWdNZXNzYWdlKE1lc3Nh
Z2VMZXZlbDo6SW5mbywgbWVzc2FnZSk7CiB9CiAKK3ZvaWQgQ2xpZW50Q29ubmVjdGlvbjo6ZW5x
dWV1ZUFwcEJ1bmRsZVJlcXVlc3Qoc3RkOjp1bmlxdWVfcHRyPEFwcEJ1bmRsZVJlcXVlc3Q+JiYg
cmVxdWVzdCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChtX3hwY0Nvbm5lY3Rpb24pOworICAgIG1f
cGVuZGluZ0J1bmRsZVJlcXVlc3RzLmFwcGVuZChXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICBtYXli
ZVN0YXJ0TmV4dEFwcEJ1bmRsZVJlcXVlc3QoKTsKK30KKwordm9pZCBDbGllbnRDb25uZWN0aW9u
OjptYXliZVN0YXJ0TmV4dEFwcEJ1bmRsZVJlcXVlc3QoKQoreworICAgIFJFTEVBU0VfQVNTRVJU
KG1feHBjQ29ubmVjdGlvbik7CisKKyAgICBpZiAobV9jdXJyZW50QnVuZGxlUmVxdWVzdCB8fCBt
X3BlbmRpbmdCdW5kbGVSZXF1ZXN0cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fY3VycmVudEJ1bmRsZVJlcXVlc3QgPSBtX3BlbmRpbmdCdW5kbGVSZXF1ZXN0cy50YWtlRmly
c3QoKTsKKyAgICBtX2N1cnJlbnRCdW5kbGVSZXF1ZXN0LT5zdGFydCgpOworfQorCit2b2lkIENs
aWVudENvbm5lY3Rpb246OmRpZENvbXBsZXRlQXBwQnVuZGxlUmVxdWVzdChBcHBCdW5kbGVSZXF1
ZXN0JiByZXF1ZXN0KQoreworICAgIC8vIElmIG91ciBjb25uZWN0aW9uIHdhcyBjbG9zZWQgdGhl
cmUgc2hvdWxkIGJlIG5vIGluLXByb2dyZXNzIGJ1bmRsZSByZXF1ZXN0cy4KKyAgICBSRUxFQVNF
X0FTU0VSVChtX3hwY0Nvbm5lY3Rpb24pOworCisgICAgQVNTRVJUKG1fY3VycmVudEJ1bmRsZVJl
cXVlc3QgPT0gJnJlcXVlc3QpOworICAgIG1fY3VycmVudEJ1bmRsZVJlcXVlc3QgPSBudWxscHRy
OworCisgICAgbWF5YmVTdGFydE5leHRBcHBCdW5kbGVSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgQ2xp
ZW50Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkNsb3NlZCgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQo
bV94cGNDb25uZWN0aW9uKTsKKyAgICBtX3hwY0Nvbm5lY3Rpb24gPSBudWxscHRyOworCisgICAg
aWYgKG1fY3VycmVudEJ1bmRsZVJlcXVlc3QpIHsKKyAgICAgICAgbV9jdXJyZW50QnVuZGxlUmVx
dWVzdC0+Y2FuY2VsKCk7CisgICAgICAgIG1fY3VycmVudEJ1bmRsZVJlcXVlc3QgPSBudWxscHRy
OworICAgIH0KKworICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxBcHBCdW5kbGVSZXF1ZXN0Pj4g
cGVuZGluZ0J1bmRsZVJlcXVlc3RzOworICAgIHBlbmRpbmdCdW5kbGVSZXF1ZXN0cy5zd2FwKG1f
cGVuZGluZ0J1bmRsZVJlcXVlc3RzKTsKKyAgICBmb3IgKGF1dG8mIHJlcXVzdCA6IHBlbmRpbmdC
dW5kbGVSZXF1ZXN0cykKKyAgICAgICAgcmVxdXN0LT5jYW5jZWwoKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViUHVzaEQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVz
aERhZW1vbi5oIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmgKaW5kZXgg
Njk1YmJiMjVlNmVkLi45NDJlMmY1YjM2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2Vi
cHVzaGQvV2ViUHVzaERhZW1vbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVz
aERhZW1vbi5oCkBAIC03MSwxMCArNzEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuUmVnaXN0
ZXJGb3JOb3RpZmljYXRpb25zKENsaWVudENvbm5lY3Rpb24mKTsKIAogICAgIENsaWVudENvbm5l
Y3Rpb24qIHRvQ2xpZW50Q29ubmVjdGlvbih4cGNfY29ubmVjdGlvbl90KTsKLQotICAgIEhhc2hT
ZXQ8U3RyaW5nPiBtX2luTWVtb3J5T3JpZ2luU3RyaW5nc1dpdGhQZXJtaXNzaW9uRm9yVGVzdGlu
ZzsKLQotICAgIEhhc2hNYXA8eHBjX2Nvbm5lY3Rpb25fdCwgc3RkOjp1bmlxdWVfcHRyPENsaWVu
dENvbm5lY3Rpb24+PiBtX2Nvbm5lY3Rpb25NYXA7CisgICAgSGFzaE1hcDx4cGNfY29ubmVjdGlv
bl90LCBSZWY8Q2xpZW50Q29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbk1hcDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYlB1c2hECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dl
YlB1c2hEYWVtb24ubW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0K
aW5kZXggOWQ1YjA3YjNjMTRlLi43NjU1OTAzZDI5YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hk
L1dlYlB1c2hEYWVtb24ubW0KQEAgLTI2LDEwICsyNiwxMiBAQAogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJXZWJQdXNoRGFlbW9uLmgiCiAKKyNpbXBvcnQgIkFwcEJ1bmRsZVJlcXVlc3Qu
aCIKICNpbXBvcnQgIkRhZW1vbkRlY29kZXIuaCIKICNpbXBvcnQgIkRhZW1vbkVuY29kZXIuaCIK
ICNpbXBvcnQgIkRhZW1vblV0aWxpdGllcy5oIgogI2ltcG9ydCAiSGFuZGxlTWVzc2FnZS5oIgor
I2ltcG9ydCAiTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJXZWJQdXNoRGFlbW9u
Q29uc3RhbnRzLmgiCiAKICNpbXBvcnQgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgpAQCAtMTgw
LDEzICsxODIsMTQgQEAgdm9pZCBEYWVtb246OmNvbm5lY3Rpb25FdmVudEhhbmRsZXIoeHBjX29i
amVjdF90IHJlcXVlc3QpCiB2b2lkIERhZW1vbjo6Y29ubmVjdGlvbkFkZGVkKHhwY19jb25uZWN0
aW9uX3QgY29ubmVjdGlvbikKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghbV9jb25uZWN0aW9uTWFw
LmNvbnRhaW5zKGNvbm5lY3Rpb24pKTsKLSAgICBtX2Nvbm5lY3Rpb25NYXAuc2V0KGNvbm5lY3Rp
b24sIFdURjo6bWFrZVVuaXF1ZTxDbGllbnRDb25uZWN0aW9uPihjb25uZWN0aW9uKSk7CisgICAg
bV9jb25uZWN0aW9uTWFwLnNldChjb25uZWN0aW9uLCBDbGllbnRDb25uZWN0aW9uOjpjcmVhdGUo
Y29ubmVjdGlvbikpOwogfQogCiB2b2lkIERhZW1vbjo6Y29ubmVjdGlvblJlbW92ZWQoeHBjX2Nv
bm5lY3Rpb25fdCBjb25uZWN0aW9uKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fY29ubmVjdGlv
bk1hcC5jb250YWlucyhjb25uZWN0aW9uKSk7Ci0gICAgbV9jb25uZWN0aW9uTWFwLnJlbW92ZShj
b25uZWN0aW9uKTsKKyAgICBhdXRvIGNsaWVudENvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25NYXAu
dGFrZShjb25uZWN0aW9uKTsKKyAgICBjbGllbnRDb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2Vk
KCk7CiB9CiAKIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRW5jb2RlZE1lc3NhZ2UmJik+IERhZW1v
bjo6Y3JlYXRlUmVwbHlTZW5kZXIoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIE9TT2JqZWN0UHRy
PHhwY19vYmplY3RfdD4mJiByZXF1ZXN0KQpAQCAtMjUzLDEwICsyNTYsNyBAQCB2b2lkIERhZW1v
bjo6cmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oQ2xpZW50Q29ubmVjdGlvbiog
Y29ubmVjdGlvbiwgYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFRo
aXMgaXMgZm9yIGFuIEFQSSB0ZXN0aW5nIGNoZWNrcG9pbnQKLSAgICAvLyBOZXh0IHN0ZXAgaXMg
YWN0dWFsbHkgcGVyZm9ybSBhIHBlcnNpc3RlbnQgcGVybWlzc2lvbnMgcmVxdWVzdCBvbiBhIHBl
ci1wbGF0Zm9ybSBiYXNpcwotICAgIG1faW5NZW1vcnlPcmlnaW5TdHJpbmdzV2l0aFBlcm1pc3Np
b25Gb3JUZXN0aW5nLmFkZChvcmlnaW5TdHJpbmcpOwotICAgIHJlcGx5U2VuZGVyKHRydWUpOwor
ICAgIGNvbm5lY3Rpb24tPmVucXVldWVBcHBCdW5kbGVSZXF1ZXN0KG1ha2VVbmlxdWU8QXBwQnVu
ZGxlUGVybWlzc2lvbnNSZXF1ZXN0PigqY29ubmVjdGlvbiwgb3JpZ2luU3RyaW5nLCBXVEZNb3Zl
KHJlcGx5U2VuZGVyKSkpOwogfQogCiB2b2lkIERhZW1vbjo6Z2V0T3JpZ2luc1dpdGhQdXNoQW5k
Tm90aWZpY2F0aW9uUGVybWlzc2lvbnMoQ2xpZW50Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8U3RyaW5nPiYpPiYmIHJlcGx5U2VuZGVy
KQpAQCAtMjY2LDkgKzI2Niw4IEBAIHZvaWQgRGFlbW9uOjpnZXRPcmlnaW5zV2l0aFB1c2hBbmRO
b3RpZmljYXRpb25QZXJtaXNzaW9ucyhDbGllbnRDb25uZWN0aW9uKiBjb25uCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBmb3IgYW4gQVBJIHRlc3Rpbmcg
Y2hlY2twb2ludAotICAgIC8vIE5leHQgc3RlcCBpcyBhY3R1YWxseSBnYXRoZXIgcGVyc2lzdGVu
dCBwZXJtaXNzaW9ucyBmcm9tIHRoZSBzeXN0ZW0gb24gYSBwZXItcGxhdGZvcm0gYmFzaXMKLSAg
ICByZXBseVNlbmRlcihjb3B5VG9WZWN0b3IobV9pbk1lbW9yeU9yaWdpblN0cmluZ3NXaXRoUGVy
bWlzc2lvbkZvclRlc3RpbmcpKTsKKyAgICAvLyBGSVhNRTogVGhpcyB3aWxsIG5lZWQgcGxhdGZv
cm0tc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zIGZvciByZWFsIHdvcmxkIGJ1bmRsZXMgb25jZSBp
bXBsZW1lbnRlZC4KKyAgICByZXBseVNlbmRlcihNb2NrQXBwQnVuZGxlUmVnaXN0cnk6OnNpbmds
ZXRvbigpLmdldE9yaWdpbnNXaXRoUmVnaXN0cmF0aW9ucyhjb25uZWN0aW9uLT5ob3N0QXBwQ29k
ZVNpZ25pbmdJZGVudGlmaWVyKCkpKTsKIH0KIAogdm9pZCBEYWVtb246OmRlbGV0ZVB1c2hBbmRO
b3RpZmljYXRpb25SZWdpc3RyYXRpb24oQ2xpZW50Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29u
c3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3Ry
aW5nJik+JiYgcmVwbHlTZW5kZXIpCkBAIC0yNzgsMTIgKzI3Nyw3IEBAIHZvaWQgRGFlbW9uOjpk
ZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKENsaWVudENvbm5lY3Rpb24qIGNv
bm5lY3Rpb24sCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogVGhpcyBp
cyBmb3IgYW4gQVBJIHRlc3RpbmcgY2hlY2twb2ludAotICAgIC8vIE5leHQgc3RlcCBpcyBhY3R1
YWxseSBkZWxldGUgYW55IHBlcnNpc3RlbnQgcGVybWlzc2lvbnMgb24gYSBwZXItcGxhdGZvcm0g
YmFzaXMKLSAgICBpZiAobV9pbk1lbW9yeU9yaWdpblN0cmluZ3NXaXRoUGVybWlzc2lvbkZvclRl
c3RpbmcucmVtb3ZlKG9yaWdpblN0cmluZykpCi0gICAgICAgIHJlcGx5U2VuZGVyKCIiKTsKLSAg
ICBlbHNlCi0gICAgICAgIHJlcGx5U2VuZGVyKG1ha2VTdHJpbmcoIk9yaWdpbiAiLCBvcmlnaW5T
dHJpbmcsICIgbm90IHJlZ2lzdGVyZWQgZm9yIHB1c2ggb3Igbm90aWZpY2F0aW9ucyIpKTsKKyAg
ICBjb25uZWN0aW9uLT5lbnF1ZXVlQXBwQnVuZGxlUmVxdWVzdChtYWtlVW5pcXVlPEFwcEJ1bmRs
ZURlbGV0aW9uUmVxdWVzdD4oKmNvbm5lY3Rpb24sIG9yaWdpblN0cmluZywgV1RGTW92ZShyZXBs
eVNlbmRlcikpKTsKIH0KIAogdm9pZCBEYWVtb246OnNldEhvc3RBcHBBdWRpdFRva2VuKENsaWVu
dENvbm5lY3Rpb24qIGNsaWVudENvbm5lY3Rpb24sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdG9r
ZW5EYXRhKQo=
</data>
<flag name="commit-queue"
          id="470246"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445115</attachid>
            <date>2021-11-24 17:31:30 -0800</date>
            <delta_ts>2021-11-29 11:15:47 -0800</delta_ts>
            <desc>EWS v4</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>50792</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggODAxYTc1MmJmYzVmLi4xMDFhMTIxYTEwNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsOTYgQEAKKzIwMjEtMTEtMjQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2Ugd2VicHVzaGQgImZha2UgcmVnaXN0cmF0aW9uIGZvciB0ZXN0aW5nIiBt
dWNoIG1vcmUgY29tcGxpY2F0ZWQgYnkgYWRkaW5nIGEgIm1vY2sgYXBwIGJ1bmRsZSIgaW5zdGFs
bAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDU0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJl
ZCBieSBBUEkgdGVzdHMuCisgICAgICAgIAorICAgICAgICBCZWZvcmUgdGhpcyBwYXRjaCwgd2Vi
cHVzaGQgcmVtZW1iZXJlZCAicmVnaXN0cmF0aW9ucyIgdXNpbmcgYSBzaW1wbGUgaW4tbWVtb3J5
IEhhc2hNYXAuCisgICAgICAgIAorICAgICAgICBJbiB0aGUgbmVhciBmdXR1cmUsIHJlZ2lzdHJh
dGlvbnMgd2lsbCBhY3R1YWxseSBiZSByZXByZXNlbnRlZCB3aXRoIGEgcGxhY2Vob2xkZXIgYXBw
IGJ1bmRsZSBvbiBkaXNrLgorICAgICAgICAKKyAgICAgICAgVGhlIHByb2Nlc3Mgb2YgaW5zdGFs
bGluZyBwbGFjZWhvbGRlcnMgKGFuZCBjaGVja2luZyBmb3IgZXhpc3Rpbmcgb25lcykgaXMgY29t
cGxpY2F0ZWQgYW5kIGFzeW5jaHJvbm91cy4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2gg
c2hpZnRzIHRoZSBpbi1tZW1vcnkgdGVzdGluZyBpbXBsZW1lbnRhdGlvbiBmcm9tIGEgc2ltcGxl
IEhhc2hNYXAgdG8gYSAiY29tcGxpY2F0ZWQgYW5kIGFzeW5jaHJvbm91cyIKKyAgICAgICAgcmVn
aXN0cmF0aW9uIG1lY2hhbmlzbSB0aGF0IHNpbXVsYXRlcyBob3cgYXBwLWJ1bmRsZSBpbnN0YWxs
cyB3aWxsIHdvcmsuCisgICAgICAgIAorICAgICAgICBPbmNlIHRoZSAicmVhbCIgbWVjaGFuaXNt
cyBhcmUgaW4gcGxhY2UgdGhlcmUgd2lsbCBiZSBtdWNoIG1vcmUgaW4tZGVwdGggdGVzdGluZyB0
aGF0IHdlIGNhbiBkby4KKyAgICAgICAgRm9yIG5vdywgdGhpcyBpcyBhICJubyBiZWhhdmlvciBj
aGFuZ2UiIHBhdGNoLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9D
b2NvYS9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQdXNoRDo6Q29ubmVjdGlvbjo6Y29ubmVjdGlvblJlY2VpdmVkRXZlbnQgY29uc3QpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oOgorCisgICAg
ICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgIlB1c2hB
cHBCdW5kbGUiIGlzIGFuIGFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIHJlcHJlc2VudGluZyBhIHBs
YWNlaG9sZGVyIGFwcGxpY2F0aW9uIGJ1bmRsZSBmb3IgYSByZWdpc3RyYXRpb24uCisgICAgICAg
IEV2ZW50dWFsbHkgdGhlcmUgd2lsbCBiZSBhIG5hdGl2ZSBvbmUgZm9yIGVhY2ggcGxhdGZvcm0g
dGhhdCBhY3R1YWxseSBkb2VzIHN5c3RlbSBvcGVyYXRpb25zLgorICAgICAgICBGb3Igbm93LCB0
aGUgY29uY3JldGUgaW1wbGVtZW50YXRpb24gaXMgdGhlIGluLW1lbW9yeSAiTW9jayIgYXBwIGJ1
bmRsZS4KKworICAgICAgICAqIHdlYnB1c2hkL1B1c2hBcHBCdW5kbGUuaDogQ29waWVkIGZyb20g
U291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5oLgorICAgICAgICAq
IHdlYnB1c2hkL1B1c2hBcHBCdW5kbGUubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvd2Vi
cHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24uaC4KKyAgICAgICAgKFdlYlB1c2hEOjpQdXNoQXBw
QnVuZGxlQ2xpZW50Ojp+UHVzaEFwcEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXZWJQdXNoRDo6
UHVzaEFwcEJ1bmRsZTo6UHVzaEFwcEJ1bmRsZSk6CisgICAgICAgIChXZWJQdXNoRDo6UHVzaEFw
cEJ1bmRsZTo6flB1c2hBcHBCdW5kbGUpOgorICAgICAgICAoV2ViUHVzaEQ6OlB1c2hBcHBCdW5k
bGU6OmRldGFjaEZyb21DbGllbnQpOgorICAgICAgICAKKyAgICAgICAgQW4gIkFwcEJ1bmRsZVJl
cXVlc3QiIGlzIGEgcXVlYWJsZSBvcGVyYXRpb24gbWVhbnQgdG8gZG8gc29tZXRoaW5nIHdpdGgg
YW4gIkFwcCBidW5kbGUiLgorICAgICAgICBGb3Igbm93IHRoZSBvcGVyYXRpb25zIGFyZSAiY3Jl
YXRlIiBhbmQgImRlbGV0ZSIKKyAgICAgICAgCisgICAgICAgICogd2VicHVzaGQvQXBwQnVuZGxl
UmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYlB1c2hEOjpBcHBCdW5kbGVSZXF1ZXN0SW1w
bDo6QXBwQnVuZGxlUmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRsZVJl
cXVlc3RJbXBsOjp+QXBwQnVuZGxlUmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViUHVzaEQ6OkFw
cEJ1bmRsZVJlcXVlc3RJbXBsOjpjYWxsQ29tcGxldGlvbkhhbmRsZXJBbmRDbGVhbnVwKToKKyAg
ICAgICAgKFdlYlB1c2hEOjpBcHBCdW5kbGVQZXJtaXNzaW9uc1JlcXVlc3Q6OkFwcEJ1bmRsZVBl
cm1pc3Npb25zUmVxdWVzdCk6CisgICAgICAgIChXZWJQdXNoRDo6QXBwQnVuZGxlRGVsZXRpb25S
ZXF1ZXN0OjpBcHBCdW5kbGVEZWxldGlvblJlcXVlc3QpOgorICAgICAgICAqIHdlYnB1c2hkL0Fw
cEJ1bmRsZVJlcXVlc3QubW06IEFkZGVkLgorICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRsZVJl
cXVlc3Q6OkFwcEJ1bmRsZVJlcXVlc3QpOgorICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRsZVJl
cXVlc3Q6On5BcHBCdW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYlB1c2hEOjpBcHBCdW5kbGVS
ZXF1ZXN0OjpzdGFydCk6CisgICAgICAgIChXZWJQdXNoRDo6QXBwQnVuZGxlUmVxdWVzdDo6Y2Fu
Y2VsKToKKyAgICAgICAgKFdlYlB1c2hEOjpBcHBCdW5kbGVSZXF1ZXN0OjpjbGVhbnVwQWZ0ZXJD
b21wbGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJQdXNoRDo6QXBwQnVuZGxlUGVybWlzc2lv
bnNSZXF1ZXN0OjpzdGFydEludGVybmFsKToKKyAgICAgICAgKFdlYlB1c2hEOjpBcHBCdW5kbGVQ
ZXJtaXNzaW9uc1JlcXVlc3Q6OmRpZENoZWNrRm9yRXhpc3RpbmdCdW5kbGUpOgorICAgICAgICAo
V2ViUHVzaEQ6OkFwcEJ1bmRsZVBlcm1pc3Npb25zUmVxdWVzdDo6ZGlkQ3JlYXRlQXBwQnVuZGxl
KToKKyAgICAgICAgKFdlYlB1c2hEOjpBcHBCdW5kbGVEZWxldGlvblJlcXVlc3Q6OnN0YXJ0SW50
ZXJuYWwpOgorICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRsZURlbGV0aW9uUmVxdWVzdDo6ZGlk
RGVsZXRlRXhpc3RpbmdCdW5kbGVXaXRoRXJyb3IpOgorCisgICAgICAgICogd2VicHVzaGQvTW9j
a0FwcEJ1bmRsZUZvclRlc3RpbmcuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5oLgorICAgICAgICAoV2ViUHVzaEQ6Ok1vY2tBcHBCdW5k
bGVGb3JUZXN0aW5nOjpjcmVhdGUpOgorICAgICAgICAqIHdlYnB1c2hkL01vY2tBcHBCdW5kbGVG
b3JUZXN0aW5nLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYlB1c2hEOjpNb2NrQXBwQnVuZGxlRm9y
VGVzdGluZzo6TW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViUHVzaEQ6Ok1v
Y2tBcHBCdW5kbGVGb3JUZXN0aW5nOjp+TW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcpOgorICAgICAg
ICAoV2ViUHVzaEQ6Ok1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nOjpjaGVja0ZvckV4aXN0aW5nQnVu
ZGxlKToKKyAgICAgICAgKFdlYlB1c2hEOjpNb2NrQXBwQnVuZGxlRm9yVGVzdGluZzo6ZGVsZXRl
RXhpc3RpbmdCdW5kbGUpOgorICAgICAgICAoV2ViUHVzaEQ6Ok1vY2tBcHBCdW5kbGVGb3JUZXN0
aW5nOjpjcmVhdGVCdW5kbGUpOgorICAgICAgICAoV2ViUHVzaEQ6Ok1vY2tBcHBCdW5kbGVGb3JU
ZXN0aW5nOjpzdG9wKToKKworICAgICAgICAqIHdlYnB1c2hkL01vY2tBcHBCdW5kbGVSZWdpc3Ry
eS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0
aW9uLmguCisgICAgICAgICogd2VicHVzaGQvTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1tOiBBZGRl
ZC4KKyAgICAgICAgKFdlYlB1c2hEOjpNb2NrQXBwQnVuZGxlUmVnaXN0cnk6OnNpbmdsZXRvbik6
CisgICAgICAgIChXZWJQdXNoRDo6TW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5OjpnZXRPcmlnaW5zV2l0
aFJlZ2lzdHJhdGlvbnMpOgorICAgICAgICAoV2ViUHVzaEQ6Ok1vY2tBcHBCdW5kbGVSZWdpc3Ry
eTo6ZG9lc0J1bmRsZUV4aXN0KToKKyAgICAgICAgKFdlYlB1c2hEOjpNb2NrQXBwQnVuZGxlUmVn
aXN0cnk6OmNyZWF0ZUJ1bmRsZSk6CisgICAgICAgIChXZWJQdXNoRDo6TW9ja0FwcEJ1bmRsZVJl
Z2lzdHJ5OjpkZWxldGVCdW5kbGUpOgorCisgICAgICAgICogd2VicHVzaGQvUHVzaENsaWVudENv
bm5lY3Rpb24uaDoKKyAgICAgICAgKiB3ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbToK
KyAgICAgICAgKFdlYlB1c2hEOjpDbGllbnRDb25uZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
V2ViUHVzaEQ6OkNsaWVudENvbm5lY3Rpb246OmVucXVldWVBcHBCdW5kbGVSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYlB1c2hEOjpDbGllbnRDb25uZWN0aW9uOjptYXliZVN0YXJ0TmV4dEFwcEJ1bmRs
ZVJlcXVlc3QpOgorICAgICAgICAoV2ViUHVzaEQ6OkNsaWVudENvbm5lY3Rpb246OmRpZENvbXBs
ZXRlQXBwQnVuZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJQdXNoRDo6Q2xpZW50Q29ubmVjdGlv
bjo6Y29ubmVjdGlvbkNsb3NlZCk6CisKKyAgICAgICAgKiB3ZWJwdXNoZC9XZWJQdXNoRGFlbW9u
Lmg6CisgICAgICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbToKKyAgICAgICAgKFdlYlB1
c2hEOjpEYWVtb246OmNvbm5lY3Rpb25BZGRlZCk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9u
Ojpjb25uZWN0aW9uUmVtb3ZlZCk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpyZXF1ZXN0
U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbik6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9u
OjpnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyk6CisgICAgICAg
IChXZWJQdXNoRDo6RGFlbW9uOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9u
KToKKwogMjAyMS0xMS0yMyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgog
CiAgICAgICAgIE5vbi11bmlmaWVkIGJ1aWxkIGZpeGVzLCBtaWQgTm92ZW1iZXIgMjAyMSBlZGl0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlv
bnMvQ29jb2EvV2ViUHVzaERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9Db2NvYS9XZWJQdXNoRGFlbW9uQ29ubmVjdGlv
bkNvY29hLm1tCmluZGV4IGJkNjE5YTNjMzQzOC4uMTE0N2RjNDQwMTRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvQ29jb2EvV2ViUHVzaERh
ZW1vbkNvbm5lY3Rpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05vdGlmaWNhdGlvbnMvQ29jb2EvV2ViUHVzaERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbQpAQCAt
NjEsNyArNjEsNyBAQCB2b2lkIENvbm5lY3Rpb246OmNvbm5lY3Rpb25SZWNlaXZlZEV2ZW50KHhw
Y19vYmplY3RfdCByZXF1ZXN0KSBjb25zdAogICAgIGlmICghZGVidWdNZXNzYWdlKQogICAgICAg
ICByZXR1cm47CiAgICAgYXV0byBtZXNzYWdlTGV2ZWwgPSBzdGF0aWNfY2FzdDxKU0M6Ok1lc3Nh
Z2VMZXZlbD4oeHBjX2RpY3Rpb25hcnlfZ2V0X3VpbnQ2NChyZXF1ZXN0LCBwcm90b2NvbERlYnVn
TWVzc2FnZUxldmVsS2V5KSk7Ci0gICAgbmV0d29ya1Nlc3Npb24oKS5uZXR3b3JrUHJvY2Vzcygp
LmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKG5ldHdvcmtTZXNzaW9uKCkuc2Vzc2lvbklEKCksIE1l
c3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBtZXNzYWdlTGV2ZWwsIFN0cmlu
Zzo6ZnJvbVVURjgoZGVidWdNZXNzYWdlKSk7CisgICAgbmV0d29ya1Nlc3Npb24oKS5uZXR3b3Jr
UHJvY2VzcygpLmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKG5ldHdvcmtTZXNzaW9uKCkuc2Vzc2lv
bklEKCksIE1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBtZXNzYWdlTGV2ZWwsIFN0cmluZzo6ZnJvbVVU
RjgoZGVidWdNZXNzYWdlKSk7CiB9CiAKIFJldGFpblB0cjx4cGNfb2JqZWN0X3Q+IENvbm5lY3Rp
b246OmRpY3Rpb25hcnlGcm9tTWVzc2FnZShNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgRW5jb2Rl
ZE1lc3NhZ2UmJiBtZXNzYWdlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggNDQzNzhmNjYyNjZk
Li4yN2Y3MzkzZTQ1NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaApAQCAtMTU5LDcgKzE1OSw3IEBAIHN0cnVj
dCBVSUVkZ2VJbnNldHM7CiAtICh2b2lkKV93ZWJWaWV3RGlkRGlzYWJsZUluc3BlY3RvckJyb3dz
ZXJEb21haW46KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4w
KSwgaW9zKDE1LjApKTsKIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBz
dGFydFhSU2Vzc2lvbldpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQpKWNvbXBsZXRp
b25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7Ci0tICh2
b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3ROb3RpZmljYXRpb25QZXJt
aXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilzZWN1cml0eU9yaWdp
biBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWRlY2lzaW9uSGFuZGxlciBXS19BUElf
QVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgcmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjoo
V0tTZWN1cml0eU9yaWdpbiAqKXNlY3VyaXR5T3JpZ2luIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAo
XikoQk9PTCkpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCks
IGlvcyhXS19JT1NfVEJBKSk7CiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY1NDBlYjBiY2Y2
Yy4uOTkwZmViN2Q3ZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTEwMDQsNiArMTAwNCwxMiBAQAogCQk1MTVCRTFBQjFENTU1QUEw
MDBERDdDNjggLyogV2ViR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE1QkUxQTAxRDU1MEFCMDAwREQ3QzY4IC8qIFdlYkdhbWVwYWQuaCAq
LzsgfTsKIAkJNTE1QkUxQjMxRDU5MDJERDAwREQ3QzY4IC8qIEdhbWVwYWREYXRhLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTFCMDFENTkwMDY5
MDBERDdDNjggLyogR2FtZXBhZERhdGEuaCAqLzsgfTsKIAkJNTE1QkUxQjUxRDU5MTdGRjAwREQ3
QzY4IC8qIFVJR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE1QkUxQUQxRDU1NUM1MTAwREQ3QzY4IC8qIFVJR2FtZXBhZC5oICovOyB9Owor
CQk1MTYwRTk1NTI3NEI4ODcyMDA1NjczODggLyogQXBwQnVuZGxlUmVxdWVzdC5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjBFOTUzMjc0Qjg4NzEw
MDU2NzM4OCAvKiBBcHBCdW5kbGVSZXF1ZXN0Lm1tICovOyB9OworCQk1MTYwRTk1NjI3NEI4ODcy
MDA1NjczODggLyogQXBwQnVuZGxlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2MEU5NTQyNzRCODg3MTAwNTY3Mzg4IC8qIEFwcEJ1bmRs
ZVJlcXVlc3QuaCAqLzsgfTsKKwkJNTE2MEU5NTkyNzRDMEQ4OTAwNTY3Mzg4IC8qIFB1c2hBcHBC
dW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
NjBFOTU3Mjc0QzBEODgwMDU2NzM4OCAvKiBQdXNoQXBwQnVuZGxlLmggKi87IH07CisJCTUxNjBF
OTVBMjc0QzBEODkwMDU2NzM4OCAvKiBQdXNoQXBwQnVuZGxlLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2MEU5NTgyNzRDMEQ4ODAwNTY3Mzg4IC8q
IFB1c2hBcHBCdW5kbGUubW0gKi87IH07CisJCTUxNjBFOTVFMjc0QzJBMDMwMDU2NzM4OCAvKiBN
b2NrQXBwQnVuZGxlUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxNjBFOTVDMjc0QzJBMDMwMDU2NzM4OCAvKiBNb2NrQXBwQnVuZGxlUmVn
aXN0cnkuaCAqLzsgfTsKKwkJNTE2MEU5NjAyNzRDMkE0MDAwNTY3Mzg4IC8qIE1vY2tBcHBCdW5k
bGVSZWdpc3RyeS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNjBFOTVGMjc0QzJBM0YwMDU2NzM4OCAvKiBNb2NrQXBwQnVuZGxlUmVnaXN0cnkubW0g
Ki87IH07CiAJCTUxNjMxOTk0MTYyODlBNjAwMEUyMkYwMCAvKiBOZXR3b3JrUHJvY2Vzc01lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUFDQzkzNDE2MjgwNjQ4MDAzNDI1NTAgLyogTmV0d29ya1Byb2Nlc3NNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovOyB9OwogCQk1MTYzMTk5NTE2Mjg5QTYzMDBFMjJGMDAgLyogTmV0d29ya1By
b2Nlc3NNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFBQ0M5MzUxNjI4MDY0ODAwMzQyNTUwIC8qIE5ldHdvcmtQcm9jZXNzTWVzc2FnZXMu
aCAqLzsgfTsKIAkJNTE2QTRBNUQxMjBBMkNDRDAwQzA1QjdGIC8qIEFQSUVycm9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTZBNEE1QjEyMEEyQ0NE
MDBDMDVCN0YgLyogQVBJRXJyb3IuaCAqLzsgfTsKQEAgLTEwNTUsNiArMTA2MSw4IEBACiAJCTUx
RjA2MEUxMTY1NDMxODUwMEYzMjgyRSAvKiBOZXR3b3JrUlRDUHJvdmlkZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFG
MDYwREQxNjU0MzE3NTAwRjMyODJFIC8qIE5ldHdvcmtSVENQcm92aWRlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi87IH07CiAJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgyRiAvKiBXZWJNRE5TUmVnaXN0
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFGMDYwREQxNjU0MzE3NTAwRjMyODJGIC8qIFdlYk1ETlNSZWdpc3Rlck1l
c3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgzRiAvKiBO
ZXR3b3JrTUROU1JlZ2lzdGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjA2MEREMTY1NDMxNzUwMEYzMjgzRiAvKiBO
ZXR3b3JrTUROU1JlZ2lzdGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJNTFGN0JCNzYy
NzQ0OThCQjAwQzQ1QTcyIC8qIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGN0JCNzQyNzQ0OThCQTAwQzQ1
QTcyIC8qIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLm1tICovOyB9OworCQk1MUY3QkI3NzI3NDQ5
OEJCMDBDNDVBNzIgLyogTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjdCQjc1Mjc0NDk4QkIwMEM0NUE3MiAv
KiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5oICovOyB9OwogCQk1MUY3QkI3QjI3NDRDNTA3MDBD
NDVBNzIgLyogUHVzaENsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjdCQjc5Mjc0NEM1MDcwMEM0NUE3MiAvKiBQdXNoQ2xp
ZW50Q29ubmVjdGlvbi5oICovOyB9OwogCQk1MUY3QkI3QzI3NDRDNTA3MDBDNDVBNzIgLyogUHVz
aENsaWVudENvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUY3QkI3QTI3NDRDNTA3MDBDNDVBNzIgLyogUHVzaENsaWVudENvbm5lY3Rp
b24ubW0gKi87IH07CiAJCTUxRjdCQjdEMjc0NTY0MDQwMEM0NUE3MiAvKiBDb2RlU2lnbmluZy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMTFBRDRG
MUNCQzQ3RjgwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5tbSAqLzsgfTsKQEAgLTQyMjgsNiArNDIz
NiwxMiBAQAogCQk1MTVDNDE1QTIwN0Q3NEUwMDA3MjZFMDIgLyogU3VzcGVuZGVkUGFnZVByb3h5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN1c3BlbmRlZFBhZ2VQ
cm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUM0MTVCMjA3RDc0RTEw
MDcyNkUwMiAvKiBTdXNwZW5kZWRQYWdlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3VzcGVuZGVkUGFnZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxNjBCRkUwMTMzODFERjkwMDkxODk5OSAvKiBMb2dnaW5nRm91bmRhdGlvbi5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvZ2dpbmdGb3VuZGF0aW9uLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTYwRTk1MzI3NEI4ODcxMDA1NjczODgg
LyogQXBwQnVuZGxlUmVxdWVzdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEFwcEJ1bmRsZVJlcXVlc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxNjBFOTU0Mjc0Qjg4NzEwMDU2NzM4OCAvKiBBcHBCdW5kbGVSZXF1ZXN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcEJ1bmRsZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTE2MEU5NTcyNzRDMEQ4ODAwNTY3Mzg4IC8qIFB1c2hBcHBCdW5k
bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHVzaEFwcEJ1bmRsZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTYwRTk1ODI3NEMwRDg4MDA1NjczODggLyog
UHVzaEFwcEJ1bmRsZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFB1c2hBcHBCdW5kbGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNjBFOTVD
Mjc0QzJBMDMwMDU2NzM4OCAvKiBNb2NrQXBwQnVuZGxlUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUxNjBFOTVGMjc0QzJBM0YwMDU2NzM4OCAvKiBNb2NrQXBwQnVu
ZGxlUmVnaXN0cnkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBN
b2NrQXBwQnVuZGxlUmVnaXN0cnkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
NjRDMDk0MUIwNUI3NTcwMDRGMTAyQSAvKiBBdXhpbGlhcnlQcm9jZXNzLm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IEF1eGlsaWFyeVByb2Nlc3MubWVzc2FnZXMuaW47IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNkE0QTVCMTIwQTJDQ0QwMEMwNUI3RiAvKiBBUElF
cnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElFcnJvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdBMzNCMzEzMEIzMDhDMDBGODBDQjUgLyogV0tB
cHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTQzMzUsNiArNDM0OSw4IEBACiAJCTUxRjA2MEREMTY1NDMxNzUwMEYzMjgy
RiAvKiBXZWJNRE5TUmVnaXN0ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gV2ViTUROU1JlZ2lzdGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvV2ViTUROU1JlZ2lzdGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNTFGMDYwREQxNjU0MzE3NTAwRjMyODNGIC8q
IE5ldHdvcmtNRE5TUmVnaXN0ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gTmV0d29ya01ETlNSZWdpc3Rlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVk
U291cmNlcy9XZWJLaXQyL05ldHdvcmtNRE5TUmVnaXN0ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1MUYwNjBERTE2NTQzMTc1MDBG
MzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJS
ZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dl
YlJlc291cmNlTG9hZGVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKKwkJNTFGN0JCNzQyNzQ0OThCQTAwQzQ1QTcyIC8qIE1vY2tBcHBCdW5kbGVGb3JUZXN0
aW5nLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTW9ja0FwcEJ1
bmRsZUZvclRlc3RpbmcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRjdCQjc1
Mjc0NDk4QkIwMEM0NUE3MiAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MUY3QkI3OTI3NDRDNTA3MDBDNDVBNzIgLyogUHVzaENs
aWVudENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHVzaENs
aWVudENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGN0JCN0Ey
NzQ0QzUwNzAwQzQ1QTcyIC8qIFB1c2hDbGllbnRDb25uZWN0aW9uLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHVzaENsaWVudENvbm5lY3Rpb24ubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRjdCQjdFMjc0NTY0QTEwMEM0NUE3MiAvKiBTZWN1
cml0eS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IFNlY3VyaXR5LmZyYW1ld29yazsgcGF0
aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrOyBzb3VyY2VU
cmVlID0gU0RLUk9PVDsgfTsKQEAgLTk3MzksNiArOTc1NSwxNCBAQAogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1Q0JCNkQ0RDI3MUY2N0NDMDBGRDFBNUQgLyogY29t
LmFwcGxlLndlYmtpdC53ZWJwdXNoZC5wbGlzdCAqLywKKwkJCQk1MTYwRTk1NDI3NEI4ODcxMDA1
NjczODggLyogQXBwQnVuZGxlUmVxdWVzdC5oICovLAorCQkJCTUxNjBFOTUzMjc0Qjg4NzEwMDU2
NzM4OCAvKiBBcHBCdW5kbGVSZXF1ZXN0Lm1tICovLAorCQkJCTUxRjdCQjc1Mjc0NDk4QkIwMEM0
NUE3MiAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5oICovLAorCQkJCTUxRjdCQjc0Mjc0NDk4
QkEwMEM0NUE3MiAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5tbSAqLywKKwkJCQk1MTYwRTk1
QzI3NEMyQTAzMDA1NjczODggLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5LmggKi8sCisJCQkJNTE2
MEU5NUYyNzRDMkEzRjAwNTY3Mzg4IC8qIE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5tbSAqLywKKwkJ
CQk1MTYwRTk1NzI3NEMwRDg4MDA1NjczODggLyogUHVzaEFwcEJ1bmRsZS5oICovLAorCQkJCTUx
NjBFOTU4Mjc0QzBEODgwMDU2NzM4OCAvKiBQdXNoQXBwQnVuZGxlLm1tICovLAogCQkJCTUxRjdC
Qjc5Mjc0NEM1MDcwMEM0NUE3MiAvKiBQdXNoQ2xpZW50Q29ubmVjdGlvbi5oICovLAogCQkJCTUx
RjdCQjdBMjc0NEM1MDcwMEM0NUE3MiAvKiBQdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSAqLywKIAkJ
CQk1MTJDRDY5RDI3MjMzOTNBMDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbi5oICovLApAQCAtMTIy
MTQsOSArMTIyMzgsMTMgQEAKIAkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAotCQkJCTVDMTU3OUZDMjcx
N0FGNTAwMEVENTI4MCAvKiBEYWVtb25VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUx
NjBFOTU5Mjc0QzBEODkwMDU2NzM4OCAvKiBQdXNoQXBwQnVuZGxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MUY3QkI3QjI3NDRDNTA3MDBDNDVBNzIgLyogUHVzaENsaWVudENvbm5lY3Rpb24uaCBp
biBIZWFkZXJzICovLAorCQkJCTUxNjBFOTVFMjc0QzJBMDMwMDU2NzM4OCAvKiBNb2NrQXBwQnVu
ZGxlUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTVDMTU3OUZDMjcxN0FGNTAwMEVENTI4
MCAvKiBEYWVtb25VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxNjBFOTU2Mjc0Qjg4
NzIwMDU2NzM4OCAvKiBBcHBCdW5kbGVSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJD
RDY5RjI3MjMzOTNBMDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTFGN0JCNzcyNzQ0OThCQjAwQzQ1QTcyIC8qIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLmgg
aW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKQEAgLTE0NzA2LDkgKzE0NzM0LDEzIEBACiAJCQkJNUMxNTdBMDEyNzE3
QjdGQjAwRUQ1MjgwIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUx
RjdCQjdEMjc0NTY0MDQwMEM0NUE3MiAvKiBDb2RlU2lnbmluZy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTVDMTU3OUZGMjcxN0I2RDIwMEVENTI4MCAvKiBEYWVtb25EZWNvZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTUxRjdCQjc2Mjc0NDk4QkIwMEM0NUE3MiAvKiBNb2NrQXBwQnVuZGxlRm9y
VGVzdGluZy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxNjBFOTU1Mjc0Qjg4NzIwMDU2NzM4OCAv
KiBBcHBCdW5kbGVSZXF1ZXN0Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTE2MEU5NUEyNzRDMEQ4
OTAwNTY3Mzg4IC8qIFB1c2hBcHBCdW5kbGUubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTYwRTk2
MDI3NEMyQTQwMDA1NjczODggLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJNTFGN0JCN0MyNzQ0QzUwNzAwQzQ1QTcyIC8qIFB1c2hDbGllbnRDb25uZWN0aW9u
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNTc5RkUyNzE3QjZDMTAwRUQ1MjgwIC8qIERhZW1v
bkVuY29kZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNTc5RkIyNzE3QUY1MDAwRUQ1Mjgw
IC8qIERhZW1vblV0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovLAotCQkJCTUxRjdCQjdDMjc0NEM1
MDcwMEM0NUE3MiAvKiBQdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTUxMkNENkEwMjcyMzM5M0EwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNUMxNTdBMEMyNzE3Q0ExRDAwRUQ1MjgwIC8qIFdlYlB1c2hEYWVtb25NYWluLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9BcHBCdW5kbGVSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL0FwcEJ1bmRsZVJl
cXVlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdjNmE5OGE4
ZDJhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvQXBwQnVuZGxl
UmVxdWVzdC5oCkBAIC0wLDAgKzEsMTI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbXBvcnQgIlB1c2hBcHBCdW5kbGUuaCIKKyNpbXBvcnQgIlB1c2hDbGllbnRDb25uZWN0aW9u
LmgiCisjaW1wb3J0IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbXBvcnQgPHd0Zi9PU09i
amVjdFB0ci5oPgorI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CisjaW1wb3J0IDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYlB1c2hEIHsKKworY2xhc3MgUHVz
aEFwcEJ1bmRsZTsKK2NsYXNzIENsaWVudENvbm5lY3Rpb247CisKK2NsYXNzIEFwcEJ1bmRsZVJl
cXVlc3QgOiBwdWJsaWMgUHVzaEFwcEJ1bmRsZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgdmlydHVhbCB+QXBwQnVuZGxlUmVxdWVzdCgpOworCisg
ICAgdmlydHVhbCBjb25zdCBjaGFyKiB0cmFuc2FjdGlvbkRlc2NyaXB0aW9uKCkgY29uc3QgPSAw
OworCisgICAgdm9pZCBzdGFydCgpOworICAgIHZvaWQgY2FuY2VsKCk7CisKK3Byb3RlY3RlZDoK
KyAgICBBcHBCdW5kbGVSZXF1ZXN0KENsaWVudENvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIG9y
aWdpblN0cmluZyk7CisKKyAgICB2b2lkIGNsZWFudXBBZnRlckNvbXBsZXRpb25IYW5kbGVyKCk7
CisKKyAgICBDbGllbnRDb25uZWN0aW9uKiBtX2Nvbm5lY3Rpb247CisgICAgU3RyaW5nIG1fb3Jp
Z2luU3RyaW5nOworICAgIFJlZlB0cjxQdXNoQXBwQnVuZGxlPiBtX2FwcEJ1bmRsZTsKKyAgICBP
U09iamVjdFB0cjxvc190cmFuc2FjdGlvbl90PiBtX3RyYW5zYWN0aW9uOworCitwcml2YXRlOgor
ICAgIHZpcnR1YWwgdm9pZCBzdGFydEludGVybmFsKCkgPSAwOworfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgQ29tcGxldGlvblR5cGU+CitjbGFzcyBBcHBCdW5kbGVSZXF1ZXN0SW1wbCA6IHB1Ymxp
YyBBcHBCdW5kbGVSZXF1ZXN0IHsKK3Byb3RlY3RlZDoKKyAgICBBcHBCdW5kbGVSZXF1ZXN0SW1w
bChDbGllbnRDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpblN0cmlu
ZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChDb21wbGV0aW9uVHlwZSk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgICAgIDogQXBwQnVuZGxlUmVxdWVzdChjb25uZWN0aW9uLCBvcmlnaW5TdHJp
bmcpCisgICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+QXBwQnVuZGxlUmVxdWVzdEltcGwo
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX2FwcEJ1bmRsZSk7CisgICAgfQorCisgICAgdm9p
ZCBjYWxsQ29tcGxldGlvbkhhbmRsZXJBbmRDbGVhbnVwKENvbXBsZXRpb25UeXBlIHJlc3VsdCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX2NvbXBsZXRpb25IYW5kbGVyKTsKKyAgICAgICAgbV9j
b21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOworCisgICAgICAgIGNsZWFudXBBZnRlckNvbXBsZXRp
b25IYW5kbGVyKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0SW50ZXJuYWwoKSA9
IDA7CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiB0cmFuc2FjdGlvbkRlc2NyaXB0aW9uKCkgY29u
c3QgPSAwOworCitwcml2YXRlOgorICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQ29tcGxldGlv
blR5cGUpPiBtX2NvbXBsZXRpb25IYW5kbGVyOworfTsKKworY2xhc3MgQXBwQnVuZGxlUGVybWlz
c2lvbnNSZXF1ZXN0IDogcHVibGljIEFwcEJ1bmRsZVJlcXVlc3RJbXBsPGJvb2w+IHsKK3B1Ymxp
YzoKKyAgICBBcHBCdW5kbGVQZXJtaXNzaW9uc1JlcXVlc3QoQ2xpZW50Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIDogQXBwQnVuZGxlUmVxdWVz
dEltcGwoY29ubmVjdGlvbiwgb3JpZ2luU3RyaW5nLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSkKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIGNvbnN0IGNoYXIqIHRyYW5zYWN0aW9u
RGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiV2ViUHVzaCBQZXJtaXNzaW9ucyBC
dW5kbGUgUmVxdWVzdCI7IH0KKworICAgIHZvaWQgc3RhcnRJbnRlcm5hbCgpIGZpbmFsOworICAg
IHZvaWQgZGlkQ2hlY2tGb3JFeGlzdGluZ0J1bmRsZShQdXNoQXBwQnVuZGxlJiwgUHVzaEFwcEJ1
bmRsZUV4aXN0cykgZmluYWw7CisgICAgdm9pZCBkaWREZWxldGVFeGlzdGluZ0J1bmRsZVdpdGhF
cnJvcihQdXNoQXBwQnVuZGxlJiwgTlNFcnJvciAqKSBmaW5hbCB7IFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KKyAgICB2b2lkIGRpZENyZWF0ZUFwcEJ1bmRsZShQdXNoQXBwQnVuZGxl
JiwgUHVzaEFwcEJ1bmRsZUNyZWF0aW9uUmVzdWx0KSBmaW5hbDsKK307CisKK2NsYXNzIEFwcEJ1
bmRsZURlbGV0aW9uUmVxdWVzdCA6IHB1YmxpYyBBcHBCdW5kbGVSZXF1ZXN0SW1wbDxjb25zdCBT
dHJpbmcmPiB7CitwdWJsaWM6CisgICAgQXBwQnVuZGxlRGVsZXRpb25SZXF1ZXN0KENsaWVudENv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
ICAgICA6IEFwcEJ1bmRsZVJlcXVlc3RJbXBsKGNvbm5lY3Rpb24sIG9yaWdpblN0cmluZywgIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
Y29uc3QgY2hhciogdHJhbnNhY3Rpb25EZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
ICJXZWJQdXNoIEJ1bmRsZSBEZWxldGlvbiBSZXF1ZXN0IjsgfQorCisgICAgdm9pZCBzdGFydElu
dGVybmFsKCkgZmluYWw7CisgICAgdm9pZCBkaWRDaGVja0ZvckV4aXN0aW5nQnVuZGxlKFB1c2hB
cHBCdW5kbGUmLCBQdXNoQXBwQnVuZGxlRXhpc3RzKSBmaW5hbCAgeyBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CisgICAgdm9pZCBkaWREZWxldGVFeGlzdGluZ0J1bmRsZVdpdGhFcnJv
cihQdXNoQXBwQnVuZGxlJiwgTlNFcnJvciAqKSBmaW5hbDsKKyAgICB2b2lkIGRpZENyZWF0ZUFw
cEJ1bmRsZShQdXNoQXBwQnVuZGxlJiwgUHVzaEFwcEJ1bmRsZUNyZWF0aW9uUmVzdWx0KSBmaW5h
bCAgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJQdXNoRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9BcHBCdW5kbGVS
ZXF1ZXN0Lm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9BcHBCdW5kbGVSZXF1ZXN0Lm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2FlMDUyMzczZWI0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9BcHBCdW5kbGVSZXF1ZXN0Lm1t
CkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJBcHBCdW5kbGVSZXF1ZXN0LmgiCisKKyNpbXBvcnQgIk1vY2tBcHBCdW5kbGVGb3JUZXN0
aW5nLmgiCisjaW1wb3J0ICJXZWJQdXNoRGFlbW9uLmgiCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29y
ZS9Db25zb2xlVHlwZXMuaD4KKworbmFtZXNwYWNlIFdlYlB1c2hEIHsKKworQXBwQnVuZGxlUmVx
dWVzdDo6QXBwQnVuZGxlUmVxdWVzdChDbGllbnRDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25z
dCBTdHJpbmcmIG9yaWdpblN0cmluZykKKyAgICA6IG1fY29ubmVjdGlvbigmY29ubmVjdGlvbikK
KyAgICAsIG1fb3JpZ2luU3RyaW5nKG9yaWdpblN0cmluZykKK3sKK30KKworQXBwQnVuZGxlUmVx
dWVzdDo6fkFwcEJ1bmRsZVJlcXVlc3QoKQoreworICAgIEFTU0VSVCghbV9hcHBCdW5kbGUpOwor
fQorCit2b2lkIEFwcEJ1bmRsZVJlcXVlc3Q6OnN0YXJ0KCkKK3sKKyAgICBBU1NFUlQobV9jb25u
ZWN0aW9uKTsKKworICAgIG1fdHJhbnNhY3Rpb24gPSBhZG9wdE9TT2JqZWN0KG9zX3RyYW5zYWN0
aW9uX2NyZWF0ZSh0cmFuc2FjdGlvbkRlc2NyaXB0aW9uKCkpKTsKKworICAgIG1fYXBwQnVuZGxl
ID0gTW9ja0FwcEJ1bmRsZUZvclRlc3Rpbmc6OmNyZWF0ZShtX29yaWdpblN0cmluZywgbV9jb25u
ZWN0aW9uLT5ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKCksICp0aGlzKTsKKyAgICBzdGFy
dEludGVybmFsKCk7Cit9CisKK3ZvaWQgQXBwQnVuZGxlUmVxdWVzdDo6Y2FuY2VsKCkKK3sKKyAg
ICBBU1NFUlQobV9jb25uZWN0aW9uKTsKKworICAgIGlmIChtX2FwcEJ1bmRsZSkgeworICAgICAg
ICBtX2FwcEJ1bmRsZS0+c3RvcCgpOworICAgICAgICBtX2FwcEJ1bmRsZSA9IG51bGxwdHI7Cisg
ICAgfQorfQorCit2b2lkIEFwcEJ1bmRsZVJlcXVlc3Q6OmNsZWFudXBBZnRlckNvbXBsZXRpb25I
YW5kbGVyKCkKK3sKKyAgICBpZiAobV9hcHBCdW5kbGUpIHsKKyAgICAgICAgbV9hcHBCdW5kbGUt
PmRldGFjaEZyb21DbGllbnQoKTsKKyAgICAgICAgbV9hcHBCdW5kbGUgPSBudWxscHRyOworICAg
IH0KKworICAgIG1fdHJhbnNhY3Rpb24gPSBudWxscHRyOworCisgICAgaWYgKG1fY29ubmVjdGlv
bikKKyAgICAgICAgbV9jb25uZWN0aW9uLT5kaWRDb21wbGV0ZUFwcEJ1bmRsZVJlcXVlc3QoKnRo
aXMpOworfQorCisvLyBBcHAgYnVuZGxlIHBlcm1pc3Npb25zCisKK3ZvaWQgQXBwQnVuZGxlUGVy
bWlzc2lvbnNSZXF1ZXN0OjpzdGFydEludGVybmFsKCkKK3sKKyAgICBtX2FwcEJ1bmRsZS0+Y2hl
Y2tGb3JFeGlzdGluZ0J1bmRsZSgpOworfQorCit2b2lkIEFwcEJ1bmRsZVBlcm1pc3Npb25zUmVx
dWVzdDo6ZGlkQ2hlY2tGb3JFeGlzdGluZ0J1bmRsZShQdXNoQXBwQnVuZGxlJiBidW5kbGUsIFB1
c2hBcHBCdW5kbGVFeGlzdHMgZXhpc3RzKQoreworICAgIEFTU0VSVF9VTlVTRUQoYnVuZGxlLCAm
YnVuZGxlID09IG1fYXBwQnVuZGxlLmdldCgpKTsKKworICAgIGlmIChleGlzdHMgPT0gUHVzaEFw
cEJ1bmRsZUV4aXN0czo6WWVzKQorICAgICAgICByZXR1cm4gY2FsbENvbXBsZXRpb25IYW5kbGVy
QW5kQ2xlYW51cCh0cnVlKTsKKworICAgIG1fYXBwQnVuZGxlLT5jcmVhdGVCdW5kbGUoKTsKK30K
Kwordm9pZCBBcHBCdW5kbGVQZXJtaXNzaW9uc1JlcXVlc3Q6OmRpZENyZWF0ZUFwcEJ1bmRsZShQ
dXNoQXBwQnVuZGxlJiBidW5kbGUsIFB1c2hBcHBCdW5kbGVDcmVhdGlvblJlc3VsdCByZXN1bHQp
Cit7CisgICAgQVNTRVJUX1VOVVNFRChidW5kbGUsICZidW5kbGUgPT0gbV9hcHBCdW5kbGUuZ2V0
KCkpOworCisgICAgaWYgKHJlc3VsdCA9PSBQdXNoQXBwQnVuZGxlQ3JlYXRpb25SZXN1bHQ6OkZh
aWx1cmUpCisgICAgICAgIHJldHVybiBjYWxsQ29tcGxldGlvbkhhbmRsZXJBbmRDbGVhbnVwKGZh
bHNlKTsKKworICAgIGNhbGxDb21wbGV0aW9uSGFuZGxlckFuZENsZWFudXAodHJ1ZSk7Cit9CisK
Ky8vIEFwcCBidW5kbGUgZGVsZXRpb24KKwordm9pZCBBcHBCdW5kbGVEZWxldGlvblJlcXVlc3Q6
OnN0YXJ0SW50ZXJuYWwoKQoreworICAgIG1fYXBwQnVuZGxlLT5kZWxldGVFeGlzdGluZ0J1bmRs
ZSgpOworfQorCit2b2lkIEFwcEJ1bmRsZURlbGV0aW9uUmVxdWVzdDo6ZGlkRGVsZXRlRXhpc3Rp
bmdCdW5kbGVXaXRoRXJyb3IoUHVzaEFwcEJ1bmRsZSYgYnVuZGxlLCBOU0Vycm9yICplcnJvcikK
K3sKKyAgICBBU1NFUlRfVU5VU0VEKGJ1bmRsZSwgJmJ1bmRsZSA9PSBtX2FwcEJ1bmRsZS5nZXQo
KSk7CisKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIERhZW1vbjo6c2luZ2xldG9uKCkuYnJvYWRj
YXN0RGVidWdNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6SW5mbywgbWFrZVN0cmluZygiRmFpbGVkIHRv
IGRlbGV0ZSBhcHAgYnVuZGxlOiAiLCBTdHJpbmcoW2Vycm9yIGRlc2NyaXB0aW9uXSkpKTsKKwor
ICAgIGNhbGxDb21wbGV0aW9uSGFuZGxlckFuZENsZWFudXAoZXJyb3IgPyBTdHJpbmcoW2Vycm9y
IGRlc2NyaXB0aW9uXSkgOiAiIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYlB1c2hECmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL01vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLmgg
Yi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL01vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43MWNmZDA2MTFlZWQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL01vY2tBcHBCdW5kbGVGb3JUZXN0aW5n
LmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiUHVzaEFwcEJ1bmRsZS5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYlB1c2hEIHsKKworY2xhc3MgTW9j
a0FwcEJ1bmRsZUZvclRlc3RpbmcgOiBwdWJsaWMgUHVzaEFwcEJ1bmRsZSB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxNb2NrQXBwQnVuZGxl
Rm9yVGVzdGluZz4gY3JlYXRlKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBjb25zdCBTdHJp
bmcmIGhvc3RBcHBCdW5kbGVJZGVudGlmaWVyLCBQdXNoQXBwQnVuZGxlQ2xpZW50JiBjbGllbnQp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2NrQXBwQnVuZGxlRm9yVGVz
dGluZyhvcmlnaW5TdHJpbmcsIGhvc3RBcHBCdW5kbGVJZGVudGlmaWVyLCBjbGllbnQpKTsKKyAg
ICB9CisKKyAgICB+TW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcoKSBmaW5hbDsKKworcHJpdmF0ZToK
KyAgICBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZyhjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywg
Y29uc3QgU3RyaW5nJiBob3N0QXBwQnVuZGxlSWRlbnRpZmllciwgUHVzaEFwcEJ1bmRsZUNsaWVu
dCYpOworCisgICAgdm9pZCBjaGVja0ZvckV4aXN0aW5nQnVuZGxlKCkgZmluYWw7CisgICAgdm9p
ZCBkZWxldGVFeGlzdGluZ0J1bmRsZSgpIGZpbmFsOworICAgIHZvaWQgY3JlYXRlQnVuZGxlKCkg
ZmluYWw7CisgICAgdm9pZCBzdG9wKCkgZmluYWw7CisKKyAgICBTdHJpbmcgbV9vcmlnaW5TdHJp
bmc7CisgICAgU3RyaW5nIG1faG9zdEFwcEJ1bmRsZUlkZW50aWZpZXI7Cit9OworCisKK30gLy8g
bmFtZXNwYWNlIFdlYlB1c2hECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL01v
Y2tBcHBCdW5kbGVGb3JUZXN0aW5nLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9Nb2NrQXBw
QnVuZGxlRm9yVGVzdGluZy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmUxZWYwYWNmMmVlYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVz
aGQvTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcubW0KQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTW9ja0FwcEJ1bmRsZUZvclRlc3Rpbmcu
aCIKKworI2ltcG9ydCAiTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5LmgiCisjaW1wb3J0IDx3dGYvTWFp
blRocmVhZC5oPgorCituYW1lc3BhY2UgV2ViUHVzaEQgeworCitNb2NrQXBwQnVuZGxlRm9yVGVz
dGluZzo6TW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcoY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcs
IGNvbnN0IFN0cmluZyYgaG9zdEFwcEJ1bmRsZUlkZW50aWZpZXIsIFB1c2hBcHBCdW5kbGVDbGll
bnQmIGNsaWVudCkKKyAgICA6IFB1c2hBcHBCdW5kbGUoY2xpZW50KQorICAgICwgbV9vcmlnaW5T
dHJpbmcob3JpZ2luU3RyaW5nKQorICAgICwgbV9ob3N0QXBwQnVuZGxlSWRlbnRpZmllcihob3N0
QXBwQnVuZGxlSWRlbnRpZmllcikKK3sKK30KKworTW9ja0FwcEJ1bmRsZUZvclRlc3Rpbmc6On5N
b2NrQXBwQnVuZGxlRm9yVGVzdGluZygpCit7CisKK30KKwordm9pZCBNb2NrQXBwQnVuZGxlRm9y
VGVzdGluZzo6Y2hlY2tGb3JFeGlzdGluZ0J1bmRsZSgpCit7CisgICAgY2FsbE9uTWFpblJ1bkxv
b3AoW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0aGlzXSB7CisgICAgICAgIGJvb2wg
ZXhpc3RzID0gTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5kb2VzQnVuZGxlRXhp
c3QobV9ob3N0QXBwQnVuZGxlSWRlbnRpZmllciwgbV9vcmlnaW5TdHJpbmcpOworICAgICAgICBp
ZiAobV9jbGllbnQpCisgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQ2hlY2tGb3JFeGlzdGluZ0J1
bmRsZSgqdGhpcywgZXhpc3RzID8gUHVzaEFwcEJ1bmRsZUV4aXN0czo6WWVzIDogUHVzaEFwcEJ1
bmRsZUV4aXN0czo6Tm8pOworICAgIH0pOworfQorCit2b2lkIE1vY2tBcHBCdW5kbGVGb3JUZXN0
aW5nOjpkZWxldGVFeGlzdGluZ0J1bmRsZSgpCit7CisgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3By
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0aGlzXSB7CisgICAgICAgIE1vY2tBcHBCdW5k
bGVSZWdpc3RyeTo6c2luZ2xldG9uKCkuZGVsZXRlQnVuZGxlKG1faG9zdEFwcEJ1bmRsZUlkZW50
aWZpZXIsIG1fb3JpZ2luU3RyaW5nKTsKKyAgICAgICAgaWYgKG1fY2xpZW50KQorICAgICAgICAg
ICAgbV9jbGllbnQtPmRpZERlbGV0ZUV4aXN0aW5nQnVuZGxlV2l0aEVycm9yKCp0aGlzLCBuaWwp
OworICAgIH0pOworfQorCit2b2lkIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nOjpjcmVhdGVCdW5k
bGUoKQoreworICAgIGNhbGxPbk1haW5SdW5Mb29wKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfSwgdGhpc10geworICAgICAgICBNb2NrQXBwQnVuZGxlUmVnaXN0cnk6OnNpbmdsZXRvbigp
LmNyZWF0ZUJ1bmRsZShtX2hvc3RBcHBCdW5kbGVJZGVudGlmaWVyLCBtX29yaWdpblN0cmluZyk7
CisgICAgICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgICAgIG1fY2xpZW50LT5kaWRDcmVhdGVB
cHBCdW5kbGUoKnRoaXMsIFB1c2hBcHBCdW5kbGVDcmVhdGlvblJlc3VsdDo6U3VjY2Vzcyk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgTW9ja0FwcEJ1bmRsZUZvclRlc3Rpbmc6OnN0b3AoKQoreworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJQdXNoRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJw
dXNoZC9Nb2NrQXBwQnVuZGxlUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvTW9j
a0FwcEJ1bmRsZVJlZ2lzdHJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi40MzY3NjQ1NmMwN2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1
c2hkL01vY2tBcHBCdW5kbGVSZWdpc3RyeS5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJQdXNoRCB7CisKK2NsYXNzIE1v
Y2tBcHBCdW5kbGVGb3JUZXN0aW5nOworCitjbGFzcyBNb2NrQXBwQnVuZGxlUmVnaXN0cnkgewor
ICAgIGZyaWVuZCBjbGFzcyBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZzsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5JiBzaW5nbGV0b24oKTsKKworICAgIFZlY3RvcjxT
dHJpbmc+IGdldE9yaWdpbnNXaXRoUmVnaXN0cmF0aW9ucyhjb25zdCBTdHJpbmcmIGhvc3RBcHBC
dW5kbGVJZGVudGlmaWVyKTsKKworcHJpdmF0ZToKKyAgICBib29sIGRvZXNCdW5kbGVFeGlzdChj
b25zdCBTdHJpbmcmIGhvc3RBcHBCdW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdp
blN0cmluZyk7CisgICAgdm9pZCBjcmVhdGVCdW5kbGUoY29uc3QgU3RyaW5nJiBob3N0QXBwQnVu
ZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcpOworICAgIHZvaWQgZGVs
ZXRlQnVuZGxlKGNvbnN0IFN0cmluZyYgaG9zdEFwcEJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgb3JpZ2luU3RyaW5nKTsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBIYXNoU2V0PFN0cmlu
Zz4+IG1fcmVnaXN0ZXJlZEJ1bmRsZU1hcDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYlB1c2hE
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL01vY2tBcHBCdW5kbGVSZWdpc3Ry
eS5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjI1MTA2M2I3NmE4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9Nb2NrQXBwQnVuZGxlUmVnaXN0
cnkubW0KQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCAiTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5LmgiCisKKyNpbXBvcnQgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViUHVzaEQgeworCitNb2NrQXBwQnVuZGxlUmVnaXN0
cnkmIE1vY2tBcHBCdW5kbGVSZWdpc3RyeTo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8TW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5PiByZWdpc3RyeTsKKyAgICByZXR1cm4g
cmVnaXN0cnk7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IE1vY2tBcHBCdW5kbGVSZWdpc3RyeTo6Z2V0
T3JpZ2luc1dpdGhSZWdpc3RyYXRpb25zKGNvbnN0IFN0cmluZyYgaG9zdEFwcEJ1bmRsZUlkZW50
aWZpZXIpCit7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0czsKKyAgICBhdXRvIGl0ZXJhdG9y
ID0gbV9yZWdpc3RlcmVkQnVuZGxlTWFwLmZpbmQoaG9zdEFwcEJ1bmRsZUlkZW50aWZpZXIpOwor
ICAgIGlmIChpdGVyYXRvciAhPSBtX3JlZ2lzdGVyZWRCdW5kbGVNYXAuZW5kKCkpCisgICAgICAg
IHJlc3VsdHMgPSBjb3B5VG9WZWN0b3IoaXRlcmF0b3ItPnZhbHVlKTsKKyAgICByZXR1cm4gcmVz
dWx0czsKK30KKworYm9vbCBNb2NrQXBwQnVuZGxlUmVnaXN0cnk6OmRvZXNCdW5kbGVFeGlzdChj
b25zdCBTdHJpbmcmIGhvc3RBcHBCdW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdp
blN0cmluZykKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9yZWdpc3RlcmVkQnVuZGxlTWFwLmZp
bmQoaG9zdEFwcEJ1bmRsZUlkZW50aWZpZXIpOworICAgIHJldHVybiBpdGVyYXRvciAhPSBtX3Jl
Z2lzdGVyZWRCdW5kbGVNYXAuZW5kKCkgJiYgaXRlcmF0b3ItPnZhbHVlLmNvbnRhaW5zKG9yaWdp
blN0cmluZyk7Cit9CisKK3ZvaWQgTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5OjpjcmVhdGVCdW5kbGUo
Y29uc3QgU3RyaW5nJiBob3N0QXBwQnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmln
aW5TdHJpbmcpCit7CisgICAgbV9yZWdpc3RlcmVkQnVuZGxlTWFwLmFkZChob3N0QXBwQnVuZGxl
SWRlbnRpZmllciwgSGFzaFNldDxTdHJpbmc+IHsgfSkuaXRlcmF0b3ItPnZhbHVlLmFkZChvcmln
aW5TdHJpbmcpOworfQorCit2b2lkIE1vY2tBcHBCdW5kbGVSZWdpc3RyeTo6ZGVsZXRlQnVuZGxl
KGNvbnN0IFN0cmluZyYgaG9zdEFwcEJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luU3RyaW5nKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX3JlZ2lzdGVyZWRCdW5kbGVNYXAu
ZmluZChob3N0QXBwQnVuZGxlSWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fcmVn
aXN0ZXJlZEJ1bmRsZU1hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaXRlcmF0b3It
PnZhbHVlLnJlbW92ZShvcmlnaW5TdHJpbmcpOworCisgICAgaWYgKGl0ZXJhdG9yLT52YWx1ZS5p
c0VtcHR5KCkpCisgICAgICAgIG1fcmVnaXN0ZXJlZEJ1bmRsZU1hcC5yZW1vdmUoaXRlcmF0b3Ip
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJQdXNoRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93ZWJwdXNoZC9QdXNoQXBwQnVuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hB
cHBCdW5kbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmNmZDU3
NjgyNDVhNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaEFw
cEJ1bmRsZS5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK0BjbGFzcyBOU0Vycm9yOworCituYW1lc3Bh
Y2UgV2ViUHVzaEQgeworCitlbnVtIGNsYXNzIFB1c2hBcHBCdW5kbGVFeGlzdHMgeworICAgIE5v
LAorICAgIFllcywKK307CisKK2VudW0gY2xhc3MgUHVzaEFwcEJ1bmRsZUNyZWF0aW9uUmVzdWx0
IHsKKyAgICBGYWlsdXJlLAorICAgIFN1Y2Nlc3MsCit9OworCitjbGFzcyBQdXNoQXBwQnVuZGxl
OworCitjbGFzcyBQdXNoQXBwQnVuZGxlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Q
dXNoQXBwQnVuZGxlQ2xpZW50KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hlY2tGb3JFeGlz
dGluZ0J1bmRsZShQdXNoQXBwQnVuZGxlJiwgUHVzaEFwcEJ1bmRsZUV4aXN0cykgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkaWREZWxldGVFeGlzdGluZ0J1bmRsZVdpdGhFcnJvcihQdXNoQXBwQnVu
ZGxlJiwgTlNFcnJvciAqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUFwcEJ1bmRs
ZShQdXNoQXBwQnVuZGxlJiwgUHVzaEFwcEJ1bmRsZUNyZWF0aW9uUmVzdWx0KSA9IDA7Cit9Owor
CitjbGFzcyBQdXNoQXBwQnVuZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8UHVzaEFwcEJ1bmRsZT4g
eworcHVibGljOgorICAgIHZpcnR1YWwgflB1c2hBcHBCdW5kbGUoKTsKKyAgICB2b2lkIGRldGFj
aEZyb21DbGllbnQoKTsKKworICAgIHZpcnR1YWwgdm9pZCBjaGVja0ZvckV4aXN0aW5nQnVuZGxl
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVFeGlzdGluZ0J1bmRsZSgpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY3JlYXRlQnVuZGxlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdG9w
KCkgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgUHVzaEFwcEJ1bmRsZShQdXNoQXBwQnVuZGxlQ2xp
ZW50Jik7CisKKyAgICBQdXNoQXBwQnVuZGxlQ2xpZW50KiBtX2NsaWVudDsKK307CisKKworfSAv
LyBuYW1lc3BhY2UgV2ViUHVzaEQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQv
UHVzaEFwcEJ1bmRsZS5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaEFwcEJ1bmRsZS5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmI4MDEwNGIwMjA0OAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaEFwcEJ1bmRsZS5t
bQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJQdXNoQXBwQnVuZGxlLmgiCisKK25hbWVzcGFjZSBXZWJQdXNoRCB7CisKK1B1c2hBcHBC
dW5kbGVDbGllbnQ6On5QdXNoQXBwQnVuZGxlQ2xpZW50KCkKK3sKK30KKworUHVzaEFwcEJ1bmRs
ZTo6UHVzaEFwcEJ1bmRsZShQdXNoQXBwQnVuZGxlQ2xpZW50JiBjbGllbnQpCisgICAgOiBtX2Ns
aWVudCgmY2xpZW50KQoreworfQorCitQdXNoQXBwQnVuZGxlOjp+UHVzaEFwcEJ1bmRsZSgpCit7
CisgICAgQVNTRVJUKCFtX2NsaWVudCk7Cit9CisKK3ZvaWQgUHVzaEFwcEJ1bmRsZTo6ZGV0YWNo
RnJvbUNsaWVudCgpCit7CisgICAgc3RvcCgpOworICAgIG1fY2xpZW50ID0gbnVsbHB0cjsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2Vi
cHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVz
aENsaWVudENvbm5lY3Rpb24uaAppbmRleCBiZTBmZjA0MmM5ZGUuLmRhNDJhZWVhM2FiNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24uaApAQCAtMjYs
MTcgKzI2LDIxIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPG9wdGlvbmFsPgorI2luY2x1
ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L09TT2JqZWN0UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYlB1c2hEIHsKIAotY2xhc3MgQ2xpZW50Q29ubmVjdGlvbiB7CitjbGFz
cyBBcHBCdW5kbGVSZXF1ZXN0OworCitjbGFzcyBDbGllbnRDb25uZWN0aW9uIDogcHVibGljIFJl
ZkNvdW50ZWQ8Q2xpZW50Q29ubmVjdGlvbj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIENsaWVudENvbm5lY3Rpb24oeHBjX2Nvbm5lY3Rpb25fdCk7CisgICAg
c3RhdGljIFJlZjxDbGllbnRDb25uZWN0aW9uPiBjcmVhdGUoeHBjX2Nvbm5lY3Rpb25fdCk7CiAK
ICAgICBib29sIGhhc0hvc3RBcHBBdWRpdFRva2VuKCkgY29uc3QgeyByZXR1cm4gISFtX2hvc3RB
cHBBdWRpdFRva2VuOyB9CiAgICAgdm9pZCBzZXRIb3N0QXBwQXVkaXRUb2tlbkRhdGEoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+Jik7CkBAIC00NywxMyArNTEsMjUgQEAgcHVibGljOgogICAgIGJvb2wg
ZGVidWdNb2RlSXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z01vZGVFbmFibGVkOyB9
CiAgICAgdm9pZCBzZXREZWJ1Z01vZGVJc0VuYWJsZWQoYm9vbCk7CiAKKyAgICB2b2lkIGVucXVl
dWVBcHBCdW5kbGVSZXF1ZXN0KHN0ZDo6dW5pcXVlX3B0cjxBcHBCdW5kbGVSZXF1ZXN0PiYmKTsK
KyAgICB2b2lkIGRpZENvbXBsZXRlQXBwQnVuZGxlUmVxdWVzdChBcHBCdW5kbGVSZXF1ZXN0Jik7
CisKKyAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoKTsKKwogcHJpdmF0ZToKKyAgICBDbGllbnRD
b25uZWN0aW9uKHhwY19jb25uZWN0aW9uX3QpOworCisgICAgdm9pZCBtYXliZVN0YXJ0TmV4dEFw
cEJ1bmRsZVJlcXVlc3QoKTsKKyAgICAKICAgICBPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90
PiBtX3hwY0Nvbm5lY3Rpb247CiAKICAgICBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IG1f
aG9zdEFwcEF1ZGl0VG9rZW47CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1faG9zdEFwcENv
ZGVTaWduaW5nSWRlbnRpZmllcjsKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1faG9zdEFwcEhh
c1B1c2hFbnRpdGxlbWVudDsKIAorICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxBcHBCdW5kbGVS
ZXF1ZXN0Pj4gbV9wZW5kaW5nQnVuZGxlUmVxdWVzdHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFw
cEJ1bmRsZVJlcXVlc3Q+IG1fY3VycmVudEJ1bmRsZVJlcXVlc3Q7CisKICAgICBib29sIG1fZGVi
dWdNb2RlRW5hYmxlZCB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQppbmRleCA3ODNkODUyNTQ4ZTkuLmM1OWIxMjBlZGQ0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlv
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1t
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlB1c2hDbGll
bnRDb25uZWN0aW9uLmgiCiAKKyNpbXBvcnQgIkFwcEJ1bmRsZVJlcXVlc3QuaCIKICNpbXBvcnQg
IkNvZGVTaWduaW5nLmgiCiAjaW1wb3J0ICJXZWJQdXNoRGFlbW9uLmgiCiAjaW1wb3J0IDxKYXZh
U2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4KQEAgLTM0LDYgKzM1LDExIEBACiAKIG5hbWVzcGFj
ZSBXZWJQdXNoRCB7CiAKK1JlZjxDbGllbnRDb25uZWN0aW9uPiBDbGllbnRDb25uZWN0aW9uOjpj
cmVhdGUoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IENsaWVudENvbm5lY3Rpb24oY29ubmVjdGlvbikpOworfQorCiBDbGllbnRDb25uZWN0
aW9uOjpDbGllbnRDb25uZWN0aW9uKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikKICAgICA6
IG1feHBjQ29ubmVjdGlvbihjb25uZWN0aW9uKQogewpAQCAtOTMsNCArOTksNDkgQEAgdm9pZCBD
bGllbnRDb25uZWN0aW9uOjpzZXREZWJ1Z01vZGVJc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAg
IERhZW1vbjo6c2luZ2xldG9uKCkuYnJvYWRjYXN0RGVidWdNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6
SW5mbywgbWVzc2FnZSk7CiB9CiAKK3ZvaWQgQ2xpZW50Q29ubmVjdGlvbjo6ZW5xdWV1ZUFwcEJ1
bmRsZVJlcXVlc3Qoc3RkOjp1bmlxdWVfcHRyPEFwcEJ1bmRsZVJlcXVlc3Q+JiYgcmVxdWVzdCkK
K3sKKyAgICBSRUxFQVNFX0FTU0VSVChtX3hwY0Nvbm5lY3Rpb24pOworICAgIG1fcGVuZGluZ0J1
bmRsZVJlcXVlc3RzLmFwcGVuZChXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICBtYXliZVN0YXJ0TmV4
dEFwcEJ1bmRsZVJlcXVlc3QoKTsKK30KKwordm9pZCBDbGllbnRDb25uZWN0aW9uOjptYXliZVN0
YXJ0TmV4dEFwcEJ1bmRsZVJlcXVlc3QoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG1feHBjQ29u
bmVjdGlvbik7CisKKyAgICBpZiAobV9jdXJyZW50QnVuZGxlUmVxdWVzdCB8fCBtX3BlbmRpbmdC
dW5kbGVSZXF1ZXN0cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY3VycmVu
dEJ1bmRsZVJlcXVlc3QgPSBtX3BlbmRpbmdCdW5kbGVSZXF1ZXN0cy50YWtlRmlyc3QoKTsKKyAg
ICBtX2N1cnJlbnRCdW5kbGVSZXF1ZXN0LT5zdGFydCgpOworfQorCit2b2lkIENsaWVudENvbm5l
Y3Rpb246OmRpZENvbXBsZXRlQXBwQnVuZGxlUmVxdWVzdChBcHBCdW5kbGVSZXF1ZXN0JiByZXF1
ZXN0KQoreworICAgIC8vIElmIG91ciBjb25uZWN0aW9uIHdhcyBjbG9zZWQgdGhlcmUgc2hvdWxk
IGJlIG5vIGluLXByb2dyZXNzIGJ1bmRsZSByZXF1ZXN0cy4KKyAgICBSRUxFQVNFX0FTU0VSVCht
X3hwY0Nvbm5lY3Rpb24pOworCisgICAgQVNTRVJUKG1fY3VycmVudEJ1bmRsZVJlcXVlc3QuZ2V0
KCkgPT0gJnJlcXVlc3QpOworICAgIG1fY3VycmVudEJ1bmRsZVJlcXVlc3QgPSBudWxscHRyOwor
CisgICAgbWF5YmVTdGFydE5leHRBcHBCdW5kbGVSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgQ2xpZW50
Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkNsb3NlZCgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQobV94
cGNDb25uZWN0aW9uKTsKKyAgICBtX3hwY0Nvbm5lY3Rpb24gPSBudWxscHRyOworCisgICAgaWYg
KG1fY3VycmVudEJ1bmRsZVJlcXVlc3QpIHsKKyAgICAgICAgbV9jdXJyZW50QnVuZGxlUmVxdWVz
dC0+Y2FuY2VsKCk7CisgICAgICAgIG1fY3VycmVudEJ1bmRsZVJlcXVlc3QgPSBudWxscHRyOwor
ICAgIH0KKworICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxBcHBCdW5kbGVSZXF1ZXN0Pj4gcGVu
ZGluZ0J1bmRsZVJlcXVlc3RzOworICAgIHBlbmRpbmdCdW5kbGVSZXF1ZXN0cy5zd2FwKG1fcGVu
ZGluZ0J1bmRsZVJlcXVlc3RzKTsKKyAgICBmb3IgKGF1dG8mIHJlcXVzdCA6IHBlbmRpbmdCdW5k
bGVSZXF1ZXN0cykKKyAgICAgICAgcmVxdXN0LT5jYW5jZWwoKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViUHVzaEQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERh
ZW1vbi5oIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmgKaW5kZXggNjk1
YmJiMjVlNmVkLi45NDJlMmY1YjM2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVz
aGQvV2ViUHVzaERhZW1vbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERh
ZW1vbi5oCkBAIC03MSwxMCArNzEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuUmVnaXN0ZXJG
b3JOb3RpZmljYXRpb25zKENsaWVudENvbm5lY3Rpb24mKTsKIAogICAgIENsaWVudENvbm5lY3Rp
b24qIHRvQ2xpZW50Q29ubmVjdGlvbih4cGNfY29ubmVjdGlvbl90KTsKLQotICAgIEhhc2hTZXQ8
U3RyaW5nPiBtX2luTWVtb3J5T3JpZ2luU3RyaW5nc1dpdGhQZXJtaXNzaW9uRm9yVGVzdGluZzsK
LQotICAgIEhhc2hNYXA8eHBjX2Nvbm5lY3Rpb25fdCwgc3RkOjp1bmlxdWVfcHRyPENsaWVudENv
bm5lY3Rpb24+PiBtX2Nvbm5lY3Rpb25NYXA7CisgICAgSGFzaE1hcDx4cGNfY29ubmVjdGlvbl90
LCBSZWY8Q2xpZW50Q29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbk1hcDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYlB1c2hECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1
c2hEYWVtb24ubW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0KaW5k
ZXggOWQ1YjA3YjNjMTRlLi43NjU1OTAzZDI5YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dl
YlB1c2hEYWVtb24ubW0KQEAgLTI2LDEwICsyNiwxMiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAj
aW1wb3J0ICJXZWJQdXNoRGFlbW9uLmgiCiAKKyNpbXBvcnQgIkFwcEJ1bmRsZVJlcXVlc3QuaCIK
ICNpbXBvcnQgIkRhZW1vbkRlY29kZXIuaCIKICNpbXBvcnQgIkRhZW1vbkVuY29kZXIuaCIKICNp
bXBvcnQgIkRhZW1vblV0aWxpdGllcy5oIgogI2ltcG9ydCAiSGFuZGxlTWVzc2FnZS5oIgorI2lt
cG9ydCAiTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJXZWJQdXNoRGFlbW9uQ29u
c3RhbnRzLmgiCiAKICNpbXBvcnQgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgpAQCAtMTgwLDEz
ICsxODIsMTQgQEAgdm9pZCBEYWVtb246OmNvbm5lY3Rpb25FdmVudEhhbmRsZXIoeHBjX29iamVj
dF90IHJlcXVlc3QpCiB2b2lkIERhZW1vbjo6Y29ubmVjdGlvbkFkZGVkKHhwY19jb25uZWN0aW9u
X3QgY29ubmVjdGlvbikKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghbV9jb25uZWN0aW9uTWFwLmNv
bnRhaW5zKGNvbm5lY3Rpb24pKTsKLSAgICBtX2Nvbm5lY3Rpb25NYXAuc2V0KGNvbm5lY3Rpb24s
IFdURjo6bWFrZVVuaXF1ZTxDbGllbnRDb25uZWN0aW9uPihjb25uZWN0aW9uKSk7CisgICAgbV9j
b25uZWN0aW9uTWFwLnNldChjb25uZWN0aW9uLCBDbGllbnRDb25uZWN0aW9uOjpjcmVhdGUoY29u
bmVjdGlvbikpOwogfQogCiB2b2lkIERhZW1vbjo6Y29ubmVjdGlvblJlbW92ZWQoeHBjX2Nvbm5l
Y3Rpb25fdCBjb25uZWN0aW9uKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fY29ubmVjdGlvbk1h
cC5jb250YWlucyhjb25uZWN0aW9uKSk7Ci0gICAgbV9jb25uZWN0aW9uTWFwLnJlbW92ZShjb25u
ZWN0aW9uKTsKKyAgICBhdXRvIGNsaWVudENvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25NYXAudGFr
ZShjb25uZWN0aW9uKTsKKyAgICBjbGllbnRDb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2VkKCk7
CiB9CiAKIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRW5jb2RlZE1lc3NhZ2UmJik+IERhZW1vbjo6
Y3JlYXRlUmVwbHlTZW5kZXIoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIE9TT2JqZWN0UHRyPHhw
Y19vYmplY3RfdD4mJiByZXF1ZXN0KQpAQCAtMjUzLDEwICsyNTYsNyBAQCB2b2lkIERhZW1vbjo6
cmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oQ2xpZW50Q29ubmVjdGlvbiogY29u
bmVjdGlvbiwgYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFRoaXMg
aXMgZm9yIGFuIEFQSSB0ZXN0aW5nIGNoZWNrcG9pbnQKLSAgICAvLyBOZXh0IHN0ZXAgaXMgYWN0
dWFsbHkgcGVyZm9ybSBhIHBlcnNpc3RlbnQgcGVybWlzc2lvbnMgcmVxdWVzdCBvbiBhIHBlci1w
bGF0Zm9ybSBiYXNpcwotICAgIG1faW5NZW1vcnlPcmlnaW5TdHJpbmdzV2l0aFBlcm1pc3Npb25G
b3JUZXN0aW5nLmFkZChvcmlnaW5TdHJpbmcpOwotICAgIHJlcGx5U2VuZGVyKHRydWUpOworICAg
IGNvbm5lY3Rpb24tPmVucXVldWVBcHBCdW5kbGVSZXF1ZXN0KG1ha2VVbmlxdWU8QXBwQnVuZGxl
UGVybWlzc2lvbnNSZXF1ZXN0PigqY29ubmVjdGlvbiwgb3JpZ2luU3RyaW5nLCBXVEZNb3ZlKHJl
cGx5U2VuZGVyKSkpOwogfQogCiB2b2lkIERhZW1vbjo6Z2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90
aWZpY2F0aW9uUGVybWlzc2lvbnMoQ2xpZW50Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8U3RyaW5nPiYpPiYmIHJlcGx5U2VuZGVyKQpA
QCAtMjY2LDkgKzI2Niw4IEBAIHZvaWQgRGFlbW9uOjpnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3Rp
ZmljYXRpb25QZXJtaXNzaW9ucyhDbGllbnRDb25uZWN0aW9uKiBjb25uCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBmb3IgYW4gQVBJIHRlc3RpbmcgY2hl
Y2twb2ludAotICAgIC8vIE5leHQgc3RlcCBpcyBhY3R1YWxseSBnYXRoZXIgcGVyc2lzdGVudCBw
ZXJtaXNzaW9ucyBmcm9tIHRoZSBzeXN0ZW0gb24gYSBwZXItcGxhdGZvcm0gYmFzaXMKLSAgICBy
ZXBseVNlbmRlcihjb3B5VG9WZWN0b3IobV9pbk1lbW9yeU9yaWdpblN0cmluZ3NXaXRoUGVybWlz
c2lvbkZvclRlc3RpbmcpKTsKKyAgICAvLyBGSVhNRTogVGhpcyB3aWxsIG5lZWQgcGxhdGZvcm0t
c3BlY2lmaWMgaW1wbGVtZW50YXRpb25zIGZvciByZWFsIHdvcmxkIGJ1bmRsZXMgb25jZSBpbXBs
ZW1lbnRlZC4KKyAgICByZXBseVNlbmRlcihNb2NrQXBwQnVuZGxlUmVnaXN0cnk6OnNpbmdsZXRv
bigpLmdldE9yaWdpbnNXaXRoUmVnaXN0cmF0aW9ucyhjb25uZWN0aW9uLT5ob3N0QXBwQ29kZVNp
Z25pbmdJZGVudGlmaWVyKCkpKTsKIH0KIAogdm9pZCBEYWVtb246OmRlbGV0ZVB1c2hBbmROb3Rp
ZmljYXRpb25SZWdpc3RyYXRpb24oQ2xpZW50Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3Qg
U3RyaW5nJiBvcmlnaW5TdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYgcmVwbHlTZW5kZXIpCkBAIC0yNzgsMTIgKzI3Nyw3IEBAIHZvaWQgRGFlbW9uOjpkZWxl
dGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKENsaWVudENvbm5lY3Rpb24qIGNvbm5l
Y3Rpb24sCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBm
b3IgYW4gQVBJIHRlc3RpbmcgY2hlY2twb2ludAotICAgIC8vIE5leHQgc3RlcCBpcyBhY3R1YWxs
eSBkZWxldGUgYW55IHBlcnNpc3RlbnQgcGVybWlzc2lvbnMgb24gYSBwZXItcGxhdGZvcm0gYmFz
aXMKLSAgICBpZiAobV9pbk1lbW9yeU9yaWdpblN0cmluZ3NXaXRoUGVybWlzc2lvbkZvclRlc3Rp
bmcucmVtb3ZlKG9yaWdpblN0cmluZykpCi0gICAgICAgIHJlcGx5U2VuZGVyKCIiKTsKLSAgICBl
bHNlCi0gICAgICAgIHJlcGx5U2VuZGVyKG1ha2VTdHJpbmcoIk9yaWdpbiAiLCBvcmlnaW5TdHJp
bmcsICIgbm90IHJlZ2lzdGVyZWQgZm9yIHB1c2ggb3Igbm90aWZpY2F0aW9ucyIpKTsKKyAgICBj
b25uZWN0aW9uLT5lbnF1ZXVlQXBwQnVuZGxlUmVxdWVzdChtYWtlVW5pcXVlPEFwcEJ1bmRsZURl
bGV0aW9uUmVxdWVzdD4oKmNvbm5lY3Rpb24sIG9yaWdpblN0cmluZywgV1RGTW92ZShyZXBseVNl
bmRlcikpKTsKIH0KIAogdm9pZCBEYWVtb246OnNldEhvc3RBcHBBdWRpdFRva2VuKENsaWVudENv
bm5lY3Rpb24qIGNsaWVudENvbm5lY3Rpb24sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdG9rZW5E
YXRhKQo=
</data>
<flag name="review"
          id="470254"
          type_id="1"
          status="+"
          setter="achristensen"
    />
    <flag name="commit-queue"
          id="470454"
          type_id="3"
          status="-"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445303</attachid>
            <date>2021-11-29 11:15:47 -0800</date>
            <delta_ts>2021-11-29 11:41:58 -0800</delta_ts>
            <desc>PFL v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>50814</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMWY1ZTM1OGY1YjhlLi4wZDk2MWZlYTJmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsOTYgQEAKKzIwMjEtMTEtMjkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2Ugd2VicHVzaGQgImZha2UgcmVnaXN0cmF0aW9uIGZvciB0ZXN0aW5nIiBt
dWNoIG1vcmUgY29tcGxpY2F0ZWQgYnkgYWRkaW5nIGEgIm1vY2sgYXBwIGJ1bmRsZSIgaW5zdGFs
bAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDU0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBDb3Zl
cmVkIGJ5IEFQSSB0ZXN0cy4KKyAgICAgICAgCisgICAgICAgIEJlZm9yZSB0aGlzIHBhdGNoLCB3
ZWJwdXNoZCByZW1lbWJlcmVkICJyZWdpc3RyYXRpb25zIiB1c2luZyBhIHNpbXBsZSBpbi1tZW1v
cnkgSGFzaE1hcC4KKyAgICAgICAgCisgICAgICAgIEluIHRoZSBuZWFyIGZ1dHVyZSwgcmVnaXN0
cmF0aW9ucyB3aWxsIGFjdHVhbGx5IGJlIHJlcHJlc2VudGVkIHdpdGggYSBwbGFjZWhvbGRlciBh
cHAgYnVuZGxlIG9uIGRpc2suCisgICAgICAgIAorICAgICAgICBUaGUgcHJvY2VzcyBvZiBpbnN0
YWxsaW5nIHBsYWNlaG9sZGVycyAoYW5kIGNoZWNraW5nIGZvciBleGlzdGluZyBvbmVzKSBpcyBj
b21wbGljYXRlZCBhbmQgYXN5bmNocm9ub3VzLgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRj
aCBzaGlmdHMgdGhlIGluLW1lbW9yeSB0ZXN0aW5nIGltcGxlbWVudGF0aW9uIGZyb20gYSBzaW1w
bGUgSGFzaE1hcCB0byBhICJjb21wbGljYXRlZCBhbmQgYXN5bmNocm9ub3VzIgorICAgICAgICBy
ZWdpc3RyYXRpb24gbWVjaGFuaXNtIHRoYXQgc2ltdWxhdGVzIGhvdyBhcHAtYnVuZGxlIGluc3Rh
bGxzIHdpbGwgd29yay4KKyAgICAgICAgCisgICAgICAgIE9uY2UgdGhlICJyZWFsIiBtZWNoYW5p
c21zIGFyZSBpbiBwbGFjZSB0aGVyZSB3aWxsIGJlIG11Y2ggbW9yZSBpbi1kZXB0aCB0ZXN0aW5n
IHRoYXQgd2UgY2FuIGRvLgorICAgICAgICBGb3Igbm93LCB0aGlzIGlzIGEgIm5vIGJlaGF2aW9y
IGNoYW5nZSIgcGF0Y2guCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L0NvY29hL1dlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlB1c2hEOjpDb25uZWN0aW9uOjpjb25uZWN0aW9uUmVjZWl2ZWRFdmVudCBjb25zdCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmg6CisKKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAiUHVz
aEFwcEJ1bmRsZSIgaXMgYW4gYWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgcmVwcmVzZW50aW5nIGEg
cGxhY2Vob2xkZXIgYXBwbGljYXRpb24gYnVuZGxlIGZvciBhIHJlZ2lzdHJhdGlvbi4KKyAgICAg
ICAgRXZlbnR1YWxseSB0aGVyZSB3aWxsIGJlIGEgbmF0aXZlIG9uZSBmb3IgZWFjaCBwbGF0Zm9y
bSB0aGF0IGFjdHVhbGx5IGRvZXMgc3lzdGVtIG9wZXJhdGlvbnMuCisgICAgICAgIEZvciBub3cs
IHRoZSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBpcyB0aGUgaW4tbWVtb3J5ICJNb2NrIiBhcHAg
YnVuZGxlLgorCisgICAgICAgICogd2VicHVzaGQvUHVzaEFwcEJ1bmRsZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLmguCisgICAgICAg
ICogd2VicHVzaGQvUHVzaEFwcEJ1bmRsZS5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC93
ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5oLgorICAgICAgICAoV2ViUHVzaEQ6OlB1c2hB
cHBCdW5kbGVDbGllbnQ6On5QdXNoQXBwQnVuZGxlQ2xpZW50KToKKyAgICAgICAgKFdlYlB1c2hE
OjpQdXNoQXBwQnVuZGxlOjpQdXNoQXBwQnVuZGxlKToKKyAgICAgICAgKFdlYlB1c2hEOjpQdXNo
QXBwQnVuZGxlOjp+UHVzaEFwcEJ1bmRsZSk6CisgICAgICAgIChXZWJQdXNoRDo6UHVzaEFwcEJ1
bmRsZTo6ZGV0YWNoRnJvbUNsaWVudCk6CisgICAgICAgIAorICAgICAgICBBbiAiQXBwQnVuZGxl
UmVxdWVzdCIgaXMgYSBxdWVhYmxlIG9wZXJhdGlvbiBtZWFudCB0byBkbyBzb21ldGhpbmcgd2l0
aCBhbiAiQXBwIGJ1bmRsZSIuCisgICAgICAgIEZvciBub3cgdGhlIG9wZXJhdGlvbnMgYXJlICJj
cmVhdGUiIGFuZCAiZGVsZXRlIgorICAgICAgICAKKyAgICAgICAgKiB3ZWJwdXNoZC9BcHBCdW5k
bGVSZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRsZVJlcXVlc3RJ
bXBsOjpBcHBCdW5kbGVSZXF1ZXN0SW1wbCk6CisgICAgICAgIChXZWJQdXNoRDo6QXBwQnVuZGxl
UmVxdWVzdEltcGw6On5BcHBCdW5kbGVSZXF1ZXN0SW1wbCk6CisgICAgICAgIChXZWJQdXNoRDo6
QXBwQnVuZGxlUmVxdWVzdEltcGw6OmNhbGxDb21wbGV0aW9uSGFuZGxlckFuZENsZWFudXApOgor
ICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRsZVBlcm1pc3Npb25zUmVxdWVzdDo6QXBwQnVuZGxl
UGVybWlzc2lvbnNSZXF1ZXN0KToKKyAgICAgICAgKFdlYlB1c2hEOjpBcHBCdW5kbGVEZWxldGlv
blJlcXVlc3Q6OkFwcEJ1bmRsZURlbGV0aW9uUmVxdWVzdCk6CisgICAgICAgICogd2VicHVzaGQv
QXBwQnVuZGxlUmVxdWVzdC5tbTogQWRkZWQuCisgICAgICAgIChXZWJQdXNoRDo6QXBwQnVuZGxl
UmVxdWVzdDo6QXBwQnVuZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJQdXNoRDo6QXBwQnVuZGxl
UmVxdWVzdDo6fkFwcEJ1bmRsZVJlcXVlc3QpOgorICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRs
ZVJlcXVlc3Q6OnN0YXJ0KToKKyAgICAgICAgKFdlYlB1c2hEOjpBcHBCdW5kbGVSZXF1ZXN0Ojpj
YW5jZWwpOgorICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRsZVJlcXVlc3Q6OmNsZWFudXBBZnRl
ckNvbXBsZXRpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYlB1c2hEOjpBcHBCdW5kbGVQZXJtaXNz
aW9uc1JlcXVlc3Q6OnN0YXJ0SW50ZXJuYWwpOgorICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRs
ZVBlcm1pc3Npb25zUmVxdWVzdDo6ZGlkQ2hlY2tGb3JFeGlzdGluZ0J1bmRsZSk6CisgICAgICAg
IChXZWJQdXNoRDo6QXBwQnVuZGxlUGVybWlzc2lvbnNSZXF1ZXN0OjpkaWRDcmVhdGVBcHBCdW5k
bGUpOgorICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRsZURlbGV0aW9uUmVxdWVzdDo6c3RhcnRJ
bnRlcm5hbCk6CisgICAgICAgIChXZWJQdXNoRDo6QXBwQnVuZGxlRGVsZXRpb25SZXF1ZXN0Ojpk
aWREZWxldGVFeGlzdGluZ0J1bmRsZVdpdGhFcnJvcik6CisKKyAgICAgICAgKiB3ZWJwdXNoZC9N
b2NrQXBwQnVuZGxlRm9yVGVzdGluZy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L3dlYnB1
c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLmguCisgICAgICAgIChXZWJQdXNoRDo6TW9ja0FwcEJ1
bmRsZUZvclRlc3Rpbmc6OmNyZWF0ZSk6CisgICAgICAgICogd2VicHVzaGQvTW9ja0FwcEJ1bmRs
ZUZvclRlc3RpbmcubW06IEFkZGVkLgorICAgICAgICAoV2ViUHVzaEQ6Ok1vY2tBcHBCdW5kbGVG
b3JUZXN0aW5nOjpNb2NrQXBwQnVuZGxlRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJQdXNoRDo6
TW9ja0FwcEJ1bmRsZUZvclRlc3Rpbmc6On5Nb2NrQXBwQnVuZGxlRm9yVGVzdGluZyk6CisgICAg
ICAgIChXZWJQdXNoRDo6TW9ja0FwcEJ1bmRsZUZvclRlc3Rpbmc6OmNoZWNrRm9yRXhpc3RpbmdC
dW5kbGUpOgorICAgICAgICAoV2ViUHVzaEQ6Ok1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nOjpkZWxl
dGVFeGlzdGluZ0J1bmRsZSk6CisgICAgICAgIChXZWJQdXNoRDo6TW9ja0FwcEJ1bmRsZUZvclRl
c3Rpbmc6OmNyZWF0ZUJ1bmRsZSk6CisgICAgICAgIChXZWJQdXNoRDo6TW9ja0FwcEJ1bmRsZUZv
clRlc3Rpbmc6OnN0b3ApOgorCisgICAgICAgICogd2VicHVzaGQvTW9ja0FwcEJ1bmRsZVJlZ2lz
dHJ5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5l
Y3Rpb24uaC4KKyAgICAgICAgKiB3ZWJwdXNoZC9Nb2NrQXBwQnVuZGxlUmVnaXN0cnkubW06IEFk
ZGVkLgorICAgICAgICAoV2ViUHVzaEQ6Ok1vY2tBcHBCdW5kbGVSZWdpc3RyeTo6c2luZ2xldG9u
KToKKyAgICAgICAgKFdlYlB1c2hEOjpNb2NrQXBwQnVuZGxlUmVnaXN0cnk6OmdldE9yaWdpbnNX
aXRoUmVnaXN0cmF0aW9ucyk6CisgICAgICAgIChXZWJQdXNoRDo6TW9ja0FwcEJ1bmRsZVJlZ2lz
dHJ5Ojpkb2VzQnVuZGxlRXhpc3QpOgorICAgICAgICAoV2ViUHVzaEQ6Ok1vY2tBcHBCdW5kbGVS
ZWdpc3RyeTo6Y3JlYXRlQnVuZGxlKToKKyAgICAgICAgKFdlYlB1c2hEOjpNb2NrQXBwQnVuZGxl
UmVnaXN0cnk6OmRlbGV0ZUJ1bmRsZSk6CisKKyAgICAgICAgKiB3ZWJwdXNoZC9QdXNoQ2xpZW50
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIHdlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1t
OgorICAgICAgICAoV2ViUHVzaEQ6OkNsaWVudENvbm5lY3Rpb246OmNyZWF0ZSk6CisgICAgICAg
IChXZWJQdXNoRDo6Q2xpZW50Q29ubmVjdGlvbjo6ZW5xdWV1ZUFwcEJ1bmRsZVJlcXVlc3QpOgor
ICAgICAgICAoV2ViUHVzaEQ6OkNsaWVudENvbm5lY3Rpb246Om1heWJlU3RhcnROZXh0QXBwQnVu
ZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJQdXNoRDo6Q2xpZW50Q29ubmVjdGlvbjo6ZGlkQ29t
cGxldGVBcHBCdW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYlB1c2hEOjpDbGllbnRDb25uZWN0
aW9uOjpjb25uZWN0aW9uQ2xvc2VkKToKKworICAgICAgICAqIHdlYnB1c2hkL1dlYlB1c2hEYWVt
b24uaDoKKyAgICAgICAgKiB3ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tOgorICAgICAgICAoV2Vi
UHVzaEQ6OkRhZW1vbjo6Y29ubmVjdGlvbkFkZGVkKToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVt
b246OmNvbm5lY3Rpb25SZW1vdmVkKToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246OnJlcXVl
c3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVt
b246OmdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKToKKyAgICAg
ICAgKFdlYlB1c2hEOjpEYWVtb246OmRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRp
b24pOgorCiAyMDIxLTExLTI5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5j
b20+CiAKICAgICAgICAgW1dlYkdQVV0gSVBDIGNsYXNzIHJlZmFjdG9yaW5ncwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL0NvY29hL1dlYlB1
c2hEYWVtb25Db25uZWN0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05vdGlmaWNhdGlvbnMvQ29jb2EvV2ViUHVzaERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbQppbmRl
eCBiZDYxOWEzYzM0MzguLjExNDdkYzQ0MDE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL0NvY29hL1dlYlB1c2hEYWVtb25Db25uZWN0aW9u
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L0NvY29hL1dlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29jb2EubW0KQEAgLTYxLDcgKzYxLDcgQEAg
dm9pZCBDb25uZWN0aW9uOjpjb25uZWN0aW9uUmVjZWl2ZWRFdmVudCh4cGNfb2JqZWN0X3QgcmVx
dWVzdCkgY29uc3QKICAgICBpZiAoIWRlYnVnTWVzc2FnZSkKICAgICAgICAgcmV0dXJuOwogICAg
IGF1dG8gbWVzc2FnZUxldmVsID0gc3RhdGljX2Nhc3Q8SlNDOjpNZXNzYWdlTGV2ZWw+KHhwY19k
aWN0aW9uYXJ5X2dldF91aW50NjQocmVxdWVzdCwgcHJvdG9jb2xEZWJ1Z01lc3NhZ2VMZXZlbEtl
eSkpOwotICAgIG5ldHdvcmtTZXNzaW9uKCkubmV0d29ya1Byb2Nlc3MoKS5icm9hZGNhc3RDb25z
b2xlTWVzc2FnZShuZXR3b3JrU2Vzc2lvbigpLnNlc3Npb25JRCgpLCBNZXNzYWdlU291cmNlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgbWVzc2FnZUxldmVsLCBTdHJpbmc6OmZyb21VVEY4KGRl
YnVnTWVzc2FnZSkpOworICAgIG5ldHdvcmtTZXNzaW9uKCkubmV0d29ya1Byb2Nlc3MoKS5icm9h
ZGNhc3RDb25zb2xlTWVzc2FnZShuZXR3b3JrU2Vzc2lvbigpLnNlc3Npb25JRCgpLCBNZXNzYWdl
U291cmNlOjpPdGhlciwgbWVzc2FnZUxldmVsLCBTdHJpbmc6OmZyb21VVEY4KGRlYnVnTWVzc2Fn
ZSkpOwogfQogCiBSZXRhaW5QdHI8eHBjX29iamVjdF90PiBDb25uZWN0aW9uOjpkaWN0aW9uYXJ5
RnJvbU1lc3NhZ2UoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYgbWVz
c2FnZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1VJRGVsZWdhdGVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCmluZGV4IDQ0Mzc4ZjY2MjY2ZC4uMjdmNzM5M2U0NTUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVn
YXRlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJ
RGVsZWdhdGVQcml2YXRlLmgKQEAgLTE1OSw3ICsxNTksNyBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRz
OwogLSAodm9pZClfd2ViVmlld0RpZERpc2FibGVJbnNwZWN0b3JCcm93c2VyRG9tYWluOihXS1dl
YlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7
CiAKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRYUlNlc3Npb25X
aXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkKSljb21wbGV0aW9uSGFuZGxlciBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwotLSAodm9pZClfd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbkZvclNlY3Vy
aXR5T3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICopc2VjdXJpdHlPcmlnaW4gZGVjaXNpb25IYW5k
bGVyOih2b2lkICheKShCT09MKSlkZWNpc2lvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMC4xMy40KSk7CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVl
c3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46KFdLU2VjdXJpdHlPcmln
aW4gKilzZWN1cml0eU9yaWdpbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWRlY2lz
aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoV0tfSU9TX1RC
QSkpOwogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzZDAxODA1ZTk3ZTAuLmVkOTVhZTVlZTRl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMDA1LDYgKzEwMDUsMTIgQEAKIAkJNTE1QkUxQUIxRDU1NUFBMDAwREQ3QzY4IC8qIFdl
YkdhbWVwYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNUJFMUEwMUQ1NTBBQjAwMEREN0M2OCAvKiBXZWJHYW1lcGFkLmggKi87IH07CiAJCTUxNUJF
MUIzMUQ1OTAyREQwMEREN0M2OCAvKiBHYW1lcGFkRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1QkUxQjAxRDU5MDA2OTAwREQ3QzY4IC8qIEdh
bWVwYWREYXRhLmggKi87IH07CiAJCTUxNUJFMUI1MUQ1OTE3RkYwMEREN0M2OCAvKiBVSUdhbWVw
YWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJF
MUFEMUQ1NTVDNTEwMEREN0M2OCAvKiBVSUdhbWVwYWQuaCAqLzsgfTsKKwkJNTE2MEU5NTUyNzRC
ODg3MjAwNTY3Mzg4IC8qIEFwcEJ1bmRsZVJlcXVlc3QubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTYwRTk1MzI3NEI4ODcxMDA1NjczODggLyogQXBw
QnVuZGxlUmVxdWVzdC5tbSAqLzsgfTsKKwkJNTE2MEU5NTYyNzRCODg3MjAwNTY3Mzg4IC8qIEFw
cEJ1bmRsZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNjBFOTU0Mjc0Qjg4NzEwMDU2NzM4OCAvKiBBcHBCdW5kbGVSZXF1ZXN0LmggKi87
IH07CisJCTUxNjBFOTU5Mjc0QzBEODkwMDU2NzM4OCAvKiBQdXNoQXBwQnVuZGxlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTYwRTk1NzI3NEMwRDg4
MDA1NjczODggLyogUHVzaEFwcEJ1bmRsZS5oICovOyB9OworCQk1MTYwRTk1QTI3NEMwRDg5MDA1
NjczODggLyogUHVzaEFwcEJ1bmRsZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxNjBFOTU4Mjc0QzBEODgwMDU2NzM4OCAvKiBQdXNoQXBwQnVuZGxl
Lm1tICovOyB9OworCQk1MTYwRTk1RTI3NEMyQTAzMDA1NjczODggLyogTW9ja0FwcEJ1bmRsZVJl
Z2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTYwRTk1QzI3NEMyQTAzMDA1NjczODggLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5LmggKi87IH07
CisJCTUxNjBFOTYwMjc0QzJBNDAwMDU2NzM4OCAvKiBNb2NrQXBwQnVuZGxlUmVnaXN0cnkubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTYwRTk1RjI3
NEMyQTNGMDA1NjczODggLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1tICovOyB9OwogCQk1MTYz
MTk5NDE2Mjg5QTYwMDBFMjJGMDAgLyogTmV0d29ya1Byb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQ0M5MzQx
NjI4MDY0ODAwMzQyNTUwIC8qIE5ldHdvcmtQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsg
fTsKIAkJNTE2MzE5OTUxNjI4OUE2MzAwRTIyRjAwIC8qIE5ldHdvcmtQcm9jZXNzTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUNDOTM1
MTYyODA2NDgwMDM0MjU1MCAvKiBOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmggKi87IH07CiAJCTUx
NkE0QTVEMTIwQTJDQ0QwMEMwNUI3RiAvKiBBUElFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2QTRBNUIxMjBBMkNDRDAwQzA1QjdGIC8qIEFQ
SUVycm9yLmggKi87IH07CkBAIC0xMDU2LDYgKzEwNjIsOCBAQAogCQk1MUYwNjBFMTE2NTQzMTg1
MDBGMzI4MkUgLyogTmV0d29ya1JUQ1Byb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjA2MEREMTY1NDMxNzUw
MEYzMjgyRSAvKiBOZXR3b3JrUlRDUHJvdmlkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9Owog
CQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MkYgLyogV2ViTUROU1JlZ2lzdGVyTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
RjA2MEREMTY1NDMxNzUwMEYzMjgyRiAvKiBXZWJNRE5TUmVnaXN0ZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovOyB9OwogCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4M0YgLyogTmV0d29ya01ETlNSZWdp
c3Rlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUYwNjBERDE2NTQzMTc1MDBGMzI4M0YgLyogTmV0d29ya01ETlNSZWdp
c3Rlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTUxRjdCQjc2Mjc0NDk4QkIwMEM0NUE3
MiAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjdCQjc0Mjc0NDk4QkEwMEM0NUE3MiAvKiBNb2NrQXBw
QnVuZGxlRm9yVGVzdGluZy5tbSAqLzsgfTsKKwkJNTFGN0JCNzcyNzQ0OThCQjAwQzQ1QTcyIC8q
IE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUY3QkI3NTI3NDQ5OEJCMDBDNDVBNzIgLyogTW9ja0FwcEJ1bmRs
ZUZvclRlc3RpbmcuaCAqLzsgfTsKIAkJNTFGN0JCN0IyNzQ0QzUwNzAwQzQ1QTcyIC8qIFB1c2hD
bGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUY3QkI3OTI3NDRDNTA3MDBDNDVBNzIgLyogUHVzaENsaWVudENvbm5lY3Rpb24u
aCAqLzsgfTsKIAkJNTFGN0JCN0MyNzQ0QzUwNzAwQzQ1QTcyIC8qIFB1c2hDbGllbnRDb25uZWN0
aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFG
N0JCN0EyNzQ0QzUwNzAwQzQ1QTcyIC8qIFB1c2hDbGllbnRDb25uZWN0aW9uLm1tICovOyB9Owog
CQk1MUY3QkI3RDI3NDU2NDA0MDBDNDVBNzIgLyogQ29kZVNpZ25pbmcubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTExQUQ0RjFDQkM0N0Y4MDA2ODFF
RTUgLyogQ29kZVNpZ25pbmcubW0gKi87IH07CkBAIC00MzQwLDYgKzQzNDgsMTIgQEAKIAkJNTE1
QzQxNUEyMDdENzRFMDAwNzI2RTAyIC8qIFN1c3BlbmRlZFBhZ2VQcm94eS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdXNwZW5kZWRQYWdlUHJveHkuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVDNDE1QjIwN0Q3NEUxMDA3MjZFMDIgLyogU3Vz
cGVuZGVkUGFnZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1c3Bl
bmRlZFBhZ2VQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTYwQkZFMDEz
MzgxREY5MDA5MTg5OTkgLyogTG9nZ2luZ0ZvdW5kYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2dnaW5nRm91bmRhdGlvbi5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTE2MEU5NTMyNzRCODg3MTAwNTY3Mzg4IC8qIEFwcEJ1bmRsZVJl
cXVlc3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBcHBCdW5k
bGVSZXF1ZXN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTYwRTk1NDI3NEI4
ODcxMDA1NjczODggLyogQXBwQnVuZGxlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBcHBCdW5kbGVSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUxNjBFOTU3Mjc0QzBEODgwMDU2NzM4OCAvKiBQdXNoQXBwQnVuZGxlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1c2hBcHBCdW5kbGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTE2MEU5NTgyNzRDMEQ4ODAwNTY3Mzg4IC8qIFB1c2hBcHBCdW5kbGUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQdXNoQXBwQnVuZGxl
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTYwRTk1QzI3NEMyQTAzMDA1Njcz
ODggLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MTYwRTk1RjI3NEMyQTNGMDA1NjczODggLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTW9ja0FwcEJ1bmRsZVJl
Z2lzdHJ5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTY0QzA5NDFCMDVCNzU3
MDA0RjEwMkEgLyogQXV4aWxpYXJ5UHJvY2Vzcy5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBBdXhpbGlhcnlQcm9jZXNzLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTZBNEE1QjEyMEEyQ0NEMDBDMDVCN0YgLyogQVBJRXJyb3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE3QTMzQjMxMzBCMzA4QzAwRjgwQ0I1IC8qIFdLQXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00
NDQ3LDYgKzQ0NjEsOCBAQAogCQk1MUYwNjBERDE2NTQzMTc1MDBGMzI4MkYgLyogV2ViTUROU1Jl
Z2lzdGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYk1ETlNSZWdp
c3Rlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dl
Yk1ETlNSZWdpc3Rlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCTUxRjA2MEREMTY1NDMxNzUwMEYzMjgzRiAvKiBOZXR3b3JrTUROU1Jl
Z2lzdGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtNRE5T
UmVnaXN0ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9OZXR3b3JrTUROU1JlZ2lzdGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNTFGMDYwREUxNjU0MzE3NTAwRjMyODFCIC8qIFdlYlJl
c291cmNlTG9hZGVyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViUmVzb3VyY2VMb2FkZXJN
ZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJSZXNvdXJjZUxvYWRl
ck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTUxRjdC
Qjc0Mjc0NDk4QkEwMEM0NUE3MiAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5n
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUY3QkI3NTI3NDQ5OEJCMDBDNDVB
NzIgLyogTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTFGN0JCNzkyNzQ0QzUwNzAwQzQ1QTcyIC8qIFB1c2hDbGllbnRDb25uZWN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1c2hDbGllbnRDb25uZWN0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRjdCQjdBMjc0NEM1MDcwMEM0NUE3
MiAvKiBQdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFB1c2hDbGllbnRDb25uZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MUY3QkI3RTI3NDU2NEExMDBDNDVBNzIgLyogU2VjdXJpdHkuZnJhbWV3b3Jr
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBl
ci5mcmFtZXdvcms7IG5hbWUgPSBTZWN1cml0eS5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7
IH07CkBAIC05ODYyLDYgKzk4NzgsMTQgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCiAJCQkJNUNCQjZENEQyNzFGNjdDQzAwRkQxQTVEIC8qIGNvbS5hcHBsZS53ZWJraXQu
d2VicHVzaGQucGxpc3QgKi8sCisJCQkJNTE2MEU5NTQyNzRCODg3MTAwNTY3Mzg4IC8qIEFwcEJ1
bmRsZVJlcXVlc3QuaCAqLywKKwkJCQk1MTYwRTk1MzI3NEI4ODcxMDA1NjczODggLyogQXBwQnVu
ZGxlUmVxdWVzdC5tbSAqLywKKwkJCQk1MUY3QkI3NTI3NDQ5OEJCMDBDNDVBNzIgLyogTW9ja0Fw
cEJ1bmRsZUZvclRlc3RpbmcuaCAqLywKKwkJCQk1MUY3QkI3NDI3NDQ5OEJBMDBDNDVBNzIgLyog
TW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcubW0gKi8sCisJCQkJNTE2MEU5NUMyNzRDMkEwMzAwNTY3
Mzg4IC8qIE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5oICovLAorCQkJCTUxNjBFOTVGMjc0QzJBM0Yw
MDU2NzM4OCAvKiBNb2NrQXBwQnVuZGxlUmVnaXN0cnkubW0gKi8sCisJCQkJNTE2MEU5NTcyNzRD
MEQ4ODAwNTY3Mzg4IC8qIFB1c2hBcHBCdW5kbGUuaCAqLywKKwkJCQk1MTYwRTk1ODI3NEMwRDg4
MDA1NjczODggLyogUHVzaEFwcEJ1bmRsZS5tbSAqLywKIAkJCQk1MUY3QkI3OTI3NDRDNTA3MDBD
NDVBNzIgLyogUHVzaENsaWVudENvbm5lY3Rpb24uaCAqLywKIAkJCQk1MUY3QkI3QTI3NDRDNTA3
MDBDNDVBNzIgLyogUHVzaENsaWVudENvbm5lY3Rpb24ubW0gKi8sCiAJCQkJNTEyQ0Q2OUQyNzIz
MzkzQTAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb24uaCAqLywKQEAgLTEyNDAzLDkgKzEyNDI3LDEz
IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQk1QzE1NzlGQzI3MTdBRjUwMDBFRDUyODAg
LyogRGFlbW9uVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTYwRTk1OTI3NEMwRDg5
MDA1NjczODggLyogUHVzaEFwcEJ1bmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGN0JCN0Iy
NzQ0QzUwNzAwQzQ1QTcyIC8qIFB1c2hDbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1MTYwRTk1RTI3NEMyQTAzMDA1NjczODggLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1QzE1NzlGQzI3MTdBRjUwMDBFRDUyODAgLyogRGFlbW9uVXRp
bGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTYwRTk1NjI3NEI4ODcyMDA1NjczODggLyog
QXBwQnVuZGxlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyQ0Q2OUYyNzIzMzkzQTAw
RjdGOEVDIC8qIFdlYlB1c2hEYWVtb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTUxRjdCQjc3Mjc0
NDk4QkIwMEM0NUE3MiAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkBAIC0xNDk2MSw5ICsxNDk4OSwxMyBAQAogCQkJCTVDMTU3QTAxMjcxN0I3RkIwMEVENTI4MCAv
KiBBcmd1bWVudENvZGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUY3QkI3RDI3NDU2NDA0
MDBDNDVBNzIgLyogQ29kZVNpZ25pbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzE1NzlGRjI3
MTdCNkQyMDBFRDUyODAgLyogRGFlbW9uRGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
MUY3QkI3NjI3NDQ5OEJCMDBDNDVBNzIgLyogTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcubW0gaW4g
U291cmNlcyAqLywKKwkJCQk1MTYwRTk1NTI3NEI4ODcyMDA1NjczODggLyogQXBwQnVuZGxlUmVx
dWVzdC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxNjBFOTVBMjc0QzBEODkwMDU2NzM4OCAvKiBQ
dXNoQXBwQnVuZGxlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTE2MEU5NjAyNzRDMkE0MDAwNTY3
Mzg4IC8qIE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxRjdC
QjdDMjc0NEM1MDcwMEM0NUE3MiAvKiBQdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTVDMTU3OUZFMjcxN0I2QzEwMEVENTI4MCAvKiBEYWVtb25FbmNvZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTVDMTU3OUZCMjcxN0FGNTAwMEVENTI4MCAvKiBEYWVtb25VdGls
aXRpZXMubW0gaW4gU291cmNlcyAqLywKLQkJCQk1MUY3QkI3QzI3NDRDNTA3MDBDNDVBNzIgLyog
UHVzaENsaWVudENvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTJDRDZBMDI3MjMz
OTNBMDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDMTU3
QTBDMjcxN0NBMUQwMEVENTI4MCAvKiBXZWJQdXNoRGFlbW9uTWFpbi5tbSBpbiBTb3VyY2VzICov
LAogCQkJKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvQXBwQnVuZGxlUmVx
dWVzdC5oIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9BcHBCdW5kbGVSZXF1ZXN0LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xMjFmOGRlZjdlYzMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL0FwcEJ1bmRsZVJlcXVlc3QuaApAQCAt
MCwwICsxLDEyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJQdXNo
QXBwQnVuZGxlLmgiCisjaW1wb3J0ICJQdXNoQ2xpZW50Q29ubmVjdGlvbi5oIgorI2ltcG9ydCA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW1wb3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KKyNp
bXBvcnQgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJQdXNoRCB7CisKK2NsYXNzIFB1c2hBcHBCdW5kbGU7Citj
bGFzcyBDbGllbnRDb25uZWN0aW9uOworCitjbGFzcyBBcHBCdW5kbGVSZXF1ZXN0IDogcHVibGlj
IFB1c2hBcHBCdW5kbGVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIHZpcnR1YWwgfkFwcEJ1bmRsZVJlcXVlc3QoKTsKKworICAgIHZpcnR1YWwgY29u
c3QgY2hhciogdHJhbnNhY3Rpb25EZXNjcmlwdGlvbigpIGNvbnN0ID0gMDsKKworICAgIHZvaWQg
c3RhcnQoKTsKKyAgICB2b2lkIGNhbmNlbCgpOworCitwcm90ZWN0ZWQ6CisgICAgQXBwQnVuZGxl
UmVxdWVzdChDbGllbnRDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcpOwor
CisgICAgdm9pZCBjbGVhbnVwQWZ0ZXJDb21wbGV0aW9uSGFuZGxlcigpOworCisgICAgV2Vha1B0
cjxDbGllbnRDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAgU3RyaW5nIG1fb3JpZ2luU3Ry
aW5nOworICAgIFJlZlB0cjxQdXNoQXBwQnVuZGxlPiBtX2FwcEJ1bmRsZTsKKyAgICBPU09iamVj
dFB0cjxvc190cmFuc2FjdGlvbl90PiBtX3RyYW5zYWN0aW9uOworCitwcml2YXRlOgorICAgIHZp
cnR1YWwgdm9pZCBzdGFydEludGVybmFsKCkgPSAwOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
Q29tcGxldGlvblR5cGU+CitjbGFzcyBBcHBCdW5kbGVSZXF1ZXN0SW1wbCA6IHB1YmxpYyBBcHBC
dW5kbGVSZXF1ZXN0IHsKK3Byb3RlY3RlZDoKKyAgICBBcHBCdW5kbGVSZXF1ZXN0SW1wbChDbGll
bnRDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChDb21wbGV0aW9uVHlwZSk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgICAgIDogQXBwQnVuZGxlUmVxdWVzdChjb25uZWN0aW9uLCBvcmlnaW5TdHJpbmcpCisg
ICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkK
KyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+QXBwQnVuZGxlUmVxdWVzdEltcGwoKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKCFtX2FwcEJ1bmRsZSk7CisgICAgfQorCisgICAgdm9pZCBjYWxs
Q29tcGxldGlvbkhhbmRsZXJBbmRDbGVhbnVwKENvbXBsZXRpb25UeXBlIHJlc3VsdCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChtX2NvbXBsZXRpb25IYW5kbGVyKTsKKyAgICAgICAgbV9jb21wbGV0
aW9uSGFuZGxlcihyZXN1bHQpOworCisgICAgICAgIGNsZWFudXBBZnRlckNvbXBsZXRpb25IYW5k
bGVyKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0SW50ZXJuYWwoKSA9IDA7Cisg
ICAgdmlydHVhbCBjb25zdCBjaGFyKiB0cmFuc2FjdGlvbkRlc2NyaXB0aW9uKCkgY29uc3QgPSAw
OworCitwcml2YXRlOgorICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQ29tcGxldGlvblR5cGUp
PiBtX2NvbXBsZXRpb25IYW5kbGVyOworfTsKKworY2xhc3MgQXBwQnVuZGxlUGVybWlzc2lvbnNS
ZXF1ZXN0IDogcHVibGljIEFwcEJ1bmRsZVJlcXVlc3RJbXBsPGJvb2w+IHsKK3B1YmxpYzoKKyAg
ICBBcHBCdW5kbGVQZXJtaXNzaW9uc1JlcXVlc3QoQ2xpZW50Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIDogQXBwQnVuZGxlUmVxdWVzdEltcGwo
Y29ubmVjdGlvbiwgb3JpZ2luU3RyaW5nLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKKyAg
ICB7CisgICAgfQorCitwcml2YXRlOgorICAgIGNvbnN0IGNoYXIqIHRyYW5zYWN0aW9uRGVzY3Jp
cHRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiV2ViUHVzaCBQZXJtaXNzaW9ucyBCdW5kbGUg
UmVxdWVzdCI7IH0KKworICAgIHZvaWQgc3RhcnRJbnRlcm5hbCgpIGZpbmFsOworICAgIHZvaWQg
ZGlkQ2hlY2tGb3JFeGlzdGluZ0J1bmRsZShQdXNoQXBwQnVuZGxlJiwgUHVzaEFwcEJ1bmRsZUV4
aXN0cykgZmluYWw7CisgICAgdm9pZCBkaWREZWxldGVFeGlzdGluZ0J1bmRsZVdpdGhFcnJvcihQ
dXNoQXBwQnVuZGxlJiwgTlNFcnJvciAqKSBmaW5hbCB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KKyAgICB2b2lkIGRpZENyZWF0ZUFwcEJ1bmRsZShQdXNoQXBwQnVuZGxlJiwgUHVz
aEFwcEJ1bmRsZUNyZWF0aW9uUmVzdWx0KSBmaW5hbDsKK307CisKK2NsYXNzIEFwcEJ1bmRsZURl
bGV0aW9uUmVxdWVzdCA6IHB1YmxpYyBBcHBCdW5kbGVSZXF1ZXN0SW1wbDxjb25zdCBTdHJpbmcm
PiB7CitwdWJsaWM6CisgICAgQXBwQnVuZGxlRGVsZXRpb25SZXF1ZXN0KENsaWVudENvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICA6
IEFwcEJ1bmRsZVJlcXVlc3RJbXBsKGNvbm5lY3Rpb24sIG9yaWdpblN0cmluZywgIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgY29uc3Qg
Y2hhciogdHJhbnNhY3Rpb25EZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJXZWJQ
dXNoIEJ1bmRsZSBEZWxldGlvbiBSZXF1ZXN0IjsgfQorCisgICAgdm9pZCBzdGFydEludGVybmFs
KCkgZmluYWw7CisgICAgdm9pZCBkaWRDaGVja0ZvckV4aXN0aW5nQnVuZGxlKFB1c2hBcHBCdW5k
bGUmLCBQdXNoQXBwQnVuZGxlRXhpc3RzKSBmaW5hbCAgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CisgICAgdm9pZCBkaWREZWxldGVFeGlzdGluZ0J1bmRsZVdpdGhFcnJvcihQdXNo
QXBwQnVuZGxlJiwgTlNFcnJvciAqKSBmaW5hbDsKKyAgICB2b2lkIGRpZENyZWF0ZUFwcEJ1bmRs
ZShQdXNoQXBwQnVuZGxlJiwgUHVzaEFwcEJ1bmRsZUNyZWF0aW9uUmVzdWx0KSBmaW5hbCAgeyBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJQ
dXNoRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9BcHBCdW5kbGVSZXF1ZXN0
Lm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9BcHBCdW5kbGVSZXF1ZXN0Lm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2FlMDUyMzczZWI0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9BcHBCdW5kbGVSZXF1ZXN0Lm1tCkBAIC0w
LDAgKzEsMTIzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJB
cHBCdW5kbGVSZXF1ZXN0LmgiCisKKyNpbXBvcnQgIk1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLmgi
CisjaW1wb3J0ICJXZWJQdXNoRGFlbW9uLmgiCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9Db25z
b2xlVHlwZXMuaD4KKworbmFtZXNwYWNlIFdlYlB1c2hEIHsKKworQXBwQnVuZGxlUmVxdWVzdDo6
QXBwQnVuZGxlUmVxdWVzdChDbGllbnRDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJp
bmcmIG9yaWdpblN0cmluZykKKyAgICA6IG1fY29ubmVjdGlvbigmY29ubmVjdGlvbikKKyAgICAs
IG1fb3JpZ2luU3RyaW5nKG9yaWdpblN0cmluZykKK3sKK30KKworQXBwQnVuZGxlUmVxdWVzdDo6
fkFwcEJ1bmRsZVJlcXVlc3QoKQoreworICAgIEFTU0VSVCghbV9hcHBCdW5kbGUpOworfQorCit2
b2lkIEFwcEJ1bmRsZVJlcXVlc3Q6OnN0YXJ0KCkKK3sKKyAgICBBU1NFUlQobV9jb25uZWN0aW9u
KTsKKworICAgIG1fdHJhbnNhY3Rpb24gPSBhZG9wdE9TT2JqZWN0KG9zX3RyYW5zYWN0aW9uX2Ny
ZWF0ZSh0cmFuc2FjdGlvbkRlc2NyaXB0aW9uKCkpKTsKKworICAgIG1fYXBwQnVuZGxlID0gTW9j
a0FwcEJ1bmRsZUZvclRlc3Rpbmc6OmNyZWF0ZShtX29yaWdpblN0cmluZywgbV9jb25uZWN0aW9u
LT5ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKCksICp0aGlzKTsKKyAgICBzdGFydEludGVy
bmFsKCk7Cit9CisKK3ZvaWQgQXBwQnVuZGxlUmVxdWVzdDo6Y2FuY2VsKCkKK3sKKyAgICBBU1NF
UlQobV9jb25uZWN0aW9uKTsKKworICAgIGlmIChtX2FwcEJ1bmRsZSkgeworICAgICAgICBtX2Fw
cEJ1bmRsZS0+c3RvcCgpOworICAgICAgICBtX2FwcEJ1bmRsZSA9IG51bGxwdHI7CisgICAgfQor
fQorCit2b2lkIEFwcEJ1bmRsZVJlcXVlc3Q6OmNsZWFudXBBZnRlckNvbXBsZXRpb25IYW5kbGVy
KCkKK3sKKyAgICBpZiAobV9hcHBCdW5kbGUpIHsKKyAgICAgICAgbV9hcHBCdW5kbGUtPmRldGFj
aEZyb21DbGllbnQoKTsKKyAgICAgICAgbV9hcHBCdW5kbGUgPSBudWxscHRyOworICAgIH0KKwor
ICAgIG1fdHJhbnNhY3Rpb24gPSBudWxscHRyOworCisgICAgaWYgKG1fY29ubmVjdGlvbikKKyAg
ICAgICAgbV9jb25uZWN0aW9uLT5kaWRDb21wbGV0ZUFwcEJ1bmRsZVJlcXVlc3QoKnRoaXMpOwor
fQorCisvLyBBcHAgYnVuZGxlIHBlcm1pc3Npb25zCisKK3ZvaWQgQXBwQnVuZGxlUGVybWlzc2lv
bnNSZXF1ZXN0OjpzdGFydEludGVybmFsKCkKK3sKKyAgICBtX2FwcEJ1bmRsZS0+Y2hlY2tGb3JF
eGlzdGluZ0J1bmRsZSgpOworfQorCit2b2lkIEFwcEJ1bmRsZVBlcm1pc3Npb25zUmVxdWVzdDo6
ZGlkQ2hlY2tGb3JFeGlzdGluZ0J1bmRsZShQdXNoQXBwQnVuZGxlJiBidW5kbGUsIFB1c2hBcHBC
dW5kbGVFeGlzdHMgZXhpc3RzKQoreworICAgIEFTU0VSVF9VTlVTRUQoYnVuZGxlLCAmYnVuZGxl
ID09IG1fYXBwQnVuZGxlLmdldCgpKTsKKworICAgIGlmIChleGlzdHMgPT0gUHVzaEFwcEJ1bmRs
ZUV4aXN0czo6WWVzKQorICAgICAgICByZXR1cm4gY2FsbENvbXBsZXRpb25IYW5kbGVyQW5kQ2xl
YW51cCh0cnVlKTsKKworICAgIG1fYXBwQnVuZGxlLT5jcmVhdGVCdW5kbGUoKTsKK30KKwordm9p
ZCBBcHBCdW5kbGVQZXJtaXNzaW9uc1JlcXVlc3Q6OmRpZENyZWF0ZUFwcEJ1bmRsZShQdXNoQXBw
QnVuZGxlJiBidW5kbGUsIFB1c2hBcHBCdW5kbGVDcmVhdGlvblJlc3VsdCByZXN1bHQpCit7Cisg
ICAgQVNTRVJUX1VOVVNFRChidW5kbGUsICZidW5kbGUgPT0gbV9hcHBCdW5kbGUuZ2V0KCkpOwor
CisgICAgaWYgKHJlc3VsdCA9PSBQdXNoQXBwQnVuZGxlQ3JlYXRpb25SZXN1bHQ6OkZhaWx1cmUp
CisgICAgICAgIHJldHVybiBjYWxsQ29tcGxldGlvbkhhbmRsZXJBbmRDbGVhbnVwKGZhbHNlKTsK
KworICAgIGNhbGxDb21wbGV0aW9uSGFuZGxlckFuZENsZWFudXAodHJ1ZSk7Cit9CisKKy8vIEFw
cCBidW5kbGUgZGVsZXRpb24KKwordm9pZCBBcHBCdW5kbGVEZWxldGlvblJlcXVlc3Q6OnN0YXJ0
SW50ZXJuYWwoKQoreworICAgIG1fYXBwQnVuZGxlLT5kZWxldGVFeGlzdGluZ0J1bmRsZSgpOwor
fQorCit2b2lkIEFwcEJ1bmRsZURlbGV0aW9uUmVxdWVzdDo6ZGlkRGVsZXRlRXhpc3RpbmdCdW5k
bGVXaXRoRXJyb3IoUHVzaEFwcEJ1bmRsZSYgYnVuZGxlLCBOU0Vycm9yICplcnJvcikKK3sKKyAg
ICBBU1NFUlRfVU5VU0VEKGJ1bmRsZSwgJmJ1bmRsZSA9PSBtX2FwcEJ1bmRsZS5nZXQoKSk7CisK
KyAgICBpZiAoZXJyb3IpCisgICAgICAgIERhZW1vbjo6c2luZ2xldG9uKCkuYnJvYWRjYXN0RGVi
dWdNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6SW5mbywgbWFrZVN0cmluZygiRmFpbGVkIHRvIGRlbGV0
ZSBhcHAgYnVuZGxlOiAiLCBTdHJpbmcoW2Vycm9yIGRlc2NyaXB0aW9uXSkpKTsKKworICAgIGNh
bGxDb21wbGV0aW9uSGFuZGxlckFuZENsZWFudXAoZXJyb3IgPyBTdHJpbmcoW2Vycm9yIGRlc2Ny
aXB0aW9uXSkgOiAiIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYlB1c2hECmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL01vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLmggYi9Tb3Vy
Y2UvV2ViS2l0L3dlYnB1c2hkL01vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zZGJjNWVjZWQwOGMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL01vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLmgKQEAg
LTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUHVz
aEFwcEJ1bmRsZS5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYlB1c2hEIHsKKworY2xhc3MgTW9ja0FwcEJ1
bmRsZUZvclRlc3RpbmcgOiBwdWJsaWMgUHVzaEFwcEJ1bmRsZSB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxNb2NrQXBwQnVuZGxlRm9yVGVz
dGluZz4gY3JlYXRlKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBjb25zdCBTdHJpbmcmIGhv
c3RBcHBCdW5kbGVJZGVudGlmaWVyLCBQdXNoQXBwQnVuZGxlQ2xpZW50JiBjbGllbnQpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZyhv
cmlnaW5TdHJpbmcsIGhvc3RBcHBCdW5kbGVJZGVudGlmaWVyLCBjbGllbnQpKTsKKyAgICB9CisK
KyAgICB+TW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcoKSBmaW5hbCA9IGRlZmF1bHQ7CisKK3ByaXZh
dGU6CisgICAgTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcoY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJp
bmcsIGNvbnN0IFN0cmluZyYgaG9zdEFwcEJ1bmRsZUlkZW50aWZpZXIsIFB1c2hBcHBCdW5kbGVD
bGllbnQmKTsKKworICAgIHZvaWQgY2hlY2tGb3JFeGlzdGluZ0J1bmRsZSgpIGZpbmFsOworICAg
IHZvaWQgZGVsZXRlRXhpc3RpbmdCdW5kbGUoKSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZUJ1bmRs
ZSgpIGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZpbmFsOworCisgICAgU3RyaW5nIG1fb3JpZ2lu
U3RyaW5nOworICAgIFN0cmluZyBtX2hvc3RBcHBCdW5kbGVJZGVudGlmaWVyOworfTsKKworCit9
IC8vIG5hbWVzcGFjZSBXZWJQdXNoRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9Nb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvTW9j
a0FwcEJ1bmRsZUZvclRlc3RpbmcubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi45OGJjOTBjOTA0NWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3dl
YnB1c2hkL01vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLm1tCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk1vY2tBcHBCdW5kbGVGb3JUZXN0
aW5nLmgiCisKKyNpbXBvcnQgIk1vY2tBcHBCdW5kbGVSZWdpc3RyeS5oIgorI2ltcG9ydCA8d3Rm
L01haW5UaHJlYWQuaD4KKworbmFtZXNwYWNlIFdlYlB1c2hEIHsKKworTW9ja0FwcEJ1bmRsZUZv
clRlc3Rpbmc6Ok1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgb3JpZ2luU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIGhvc3RBcHBCdW5kbGVJZGVudGlmaWVyLCBQdXNoQXBwQnVuZGxl
Q2xpZW50JiBjbGllbnQpCisgICAgOiBQdXNoQXBwQnVuZGxlKGNsaWVudCkKKyAgICAsIG1fb3Jp
Z2luU3RyaW5nKG9yaWdpblN0cmluZykKKyAgICAsIG1faG9zdEFwcEJ1bmRsZUlkZW50aWZpZXIo
aG9zdEFwcEJ1bmRsZUlkZW50aWZpZXIpCit7Cit9CisKK3ZvaWQgTW9ja0FwcEJ1bmRsZUZvclRl
c3Rpbmc6OmNoZWNrRm9yRXhpc3RpbmdCdW5kbGUoKQoreworICAgIGNhbGxPbk1haW5SdW5Mb29w
KFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdGhpc10geworICAgICAgICBib29sIGV4
aXN0cyA9IE1vY2tBcHBCdW5kbGVSZWdpc3RyeTo6c2luZ2xldG9uKCkuZG9lc0J1bmRsZUV4aXN0
KG1faG9zdEFwcEJ1bmRsZUlkZW50aWZpZXIsIG1fb3JpZ2luU3RyaW5nKTsKKyAgICAgICAgaWYg
KG1fY2xpZW50KQorICAgICAgICAgICAgbV9jbGllbnQtPmRpZENoZWNrRm9yRXhpc3RpbmdCdW5k
bGUoKnRoaXMsIGV4aXN0cyA/IFB1c2hBcHBCdW5kbGVFeGlzdHM6OlllcyA6IFB1c2hBcHBCdW5k
bGVFeGlzdHM6Ok5vKTsKKyAgICB9KTsKK30KKwordm9pZCBNb2NrQXBwQnVuZGxlRm9yVGVzdGlu
Zzo6ZGVsZXRlRXhpc3RpbmdCdW5kbGUoKQoreworICAgIGNhbGxPbk1haW5SdW5Mb29wKFtwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdGhpc10geworICAgICAgICBNb2NrQXBwQnVuZGxl
UmVnaXN0cnk6OnNpbmdsZXRvbigpLmRlbGV0ZUJ1bmRsZShtX2hvc3RBcHBCdW5kbGVJZGVudGlm
aWVyLCBtX29yaWdpblN0cmluZyk7CisgICAgICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgICAg
IG1fY2xpZW50LT5kaWREZWxldGVFeGlzdGluZ0J1bmRsZVdpdGhFcnJvcigqdGhpcywgbmlsKTsK
KyAgICB9KTsKK30KKwordm9pZCBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZzo6Y3JlYXRlQnVuZGxl
KCkKK3sKKyAgICBjYWxsT25NYWluUnVuTG9vcChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIHRoaXNdIHsKKyAgICAgICAgTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5j
cmVhdGVCdW5kbGUobV9ob3N0QXBwQnVuZGxlSWRlbnRpZmllciwgbV9vcmlnaW5TdHJpbmcpOwor
ICAgICAgICBpZiAobV9jbGllbnQpCisgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQ3JlYXRlQXBw
QnVuZGxlKCp0aGlzLCBQdXNoQXBwQnVuZGxlQ3JlYXRpb25SZXN1bHQ6OlN1Y2Nlc3MpOworICAg
IH0pOworfQorCit2b2lkIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nOjpzdG9wKCkKK3sKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVz
aGQvTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL01vY2tB
cHBCdW5kbGVSZWdpc3RyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uNDM2NzY0NTZjMDdiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9Nb2NrQXBwQnVuZGxlUmVnaXN0cnkuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViUHVzaEQgeworCitjbGFzcyBNb2Nr
QXBwQnVuZGxlRm9yVGVzdGluZzsKKworY2xhc3MgTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5IHsKKyAg
ICBmcmllbmQgY2xhc3MgTW9ja0FwcEJ1bmRsZUZvclRlc3Rpbmc7CitwdWJsaWM6CisgICAgc3Rh
dGljIE1vY2tBcHBCdW5kbGVSZWdpc3RyeSYgc2luZ2xldG9uKCk7CisKKyAgICBWZWN0b3I8U3Ry
aW5nPiBnZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMoY29uc3QgU3RyaW5nJiBob3N0QXBwQnVu
ZGxlSWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgYm9vbCBkb2VzQnVuZGxlRXhpc3QoY29u
c3QgU3RyaW5nJiBob3N0QXBwQnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW5T
dHJpbmcpOworICAgIHZvaWQgY3JlYXRlQnVuZGxlKGNvbnN0IFN0cmluZyYgaG9zdEFwcEJ1bmRs
ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nKTsKKyAgICB2b2lkIGRlbGV0
ZUJ1bmRsZShjb25zdCBTdHJpbmcmIGhvc3RBcHBCdW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG9yaWdpblN0cmluZyk7CisKKyAgICBIYXNoTWFwPFN0cmluZywgSGFzaFNldDxTdHJpbmc+
PiBtX3JlZ2lzdGVyZWRCdW5kbGVNYXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJQdXNoRApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9Nb2NrQXBwQnVuZGxlUmVnaXN0cnku
bW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL01vY2tBcHBCdW5kbGVSZWdpc3RyeS5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmYyNTEwNjNiNzZhOAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5
Lm1tCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIk1vY2tBcHBCdW5kbGVSZWdpc3RyeS5oIgorCisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYlB1c2hEIHsKKworTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5
JiBNb2NrQXBwQnVuZGxlUmVnaXN0cnk6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPE1vY2tBcHBCdW5kbGVSZWdpc3RyeT4gcmVnaXN0cnk7CisgICAgcmV0dXJuIHJl
Z2lzdHJ5OworfQorCitWZWN0b3I8U3RyaW5nPiBNb2NrQXBwQnVuZGxlUmVnaXN0cnk6OmdldE9y
aWdpbnNXaXRoUmVnaXN0cmF0aW9ucyhjb25zdCBTdHJpbmcmIGhvc3RBcHBCdW5kbGVJZGVudGlm
aWVyKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdHM7CisgICAgYXV0byBpdGVyYXRvciA9
IG1fcmVnaXN0ZXJlZEJ1bmRsZU1hcC5maW5kKGhvc3RBcHBCdW5kbGVJZGVudGlmaWVyKTsKKyAg
ICBpZiAoaXRlcmF0b3IgIT0gbV9yZWdpc3RlcmVkQnVuZGxlTWFwLmVuZCgpKQorICAgICAgICBy
ZXN1bHRzID0gY29weVRvVmVjdG9yKGl0ZXJhdG9yLT52YWx1ZSk7CisgICAgcmV0dXJuIHJlc3Vs
dHM7Cit9CisKK2Jvb2wgTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Ojpkb2VzQnVuZGxlRXhpc3QoY29u
c3QgU3RyaW5nJiBob3N0QXBwQnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW5T
dHJpbmcpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fcmVnaXN0ZXJlZEJ1bmRsZU1hcC5maW5k
KGhvc3RBcHBCdW5kbGVJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gaXRlcmF0b3IgIT0gbV9yZWdp
c3RlcmVkQnVuZGxlTWFwLmVuZCgpICYmIGl0ZXJhdG9yLT52YWx1ZS5jb250YWlucyhvcmlnaW5T
dHJpbmcpOworfQorCit2b2lkIE1vY2tBcHBCdW5kbGVSZWdpc3RyeTo6Y3JlYXRlQnVuZGxlKGNv
bnN0IFN0cmluZyYgaG9zdEFwcEJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
U3RyaW5nKQoreworICAgIG1fcmVnaXN0ZXJlZEJ1bmRsZU1hcC5hZGQoaG9zdEFwcEJ1bmRsZUlk
ZW50aWZpZXIsIEhhc2hTZXQ8U3RyaW5nPiB7IH0pLml0ZXJhdG9yLT52YWx1ZS5hZGQob3JpZ2lu
U3RyaW5nKTsKK30KKwordm9pZCBNb2NrQXBwQnVuZGxlUmVnaXN0cnk6OmRlbGV0ZUJ1bmRsZShj
b25zdCBTdHJpbmcmIGhvc3RBcHBCdW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdp
blN0cmluZykKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9yZWdpc3RlcmVkQnVuZGxlTWFwLmZp
bmQoaG9zdEFwcEJ1bmRsZUlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX3JlZ2lz
dGVyZWRCdW5kbGVNYXAuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGl0ZXJhdG9yLT52
YWx1ZS5yZW1vdmUob3JpZ2luU3RyaW5nKTsKKworICAgIGlmIChpdGVyYXRvci0+dmFsdWUuaXNF
bXB0eSgpKQorICAgICAgICBtX3JlZ2lzdGVyZWRCdW5kbGVNYXAucmVtb3ZlKGl0ZXJhdG9yKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2VicHVzaGQvUHVzaEFwcEJ1bmRsZS5oIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQXBw
QnVuZGxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44YTZkNTdj
YzZmNWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hBcHBC
dW5kbGUuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCitAY2xhc3MgTlNFcnJvcjsKKworbmFtZXNwYWNl
IFdlYlB1c2hEIHsKKworZW51bSBjbGFzcyBQdXNoQXBwQnVuZGxlRXhpc3RzIDogYm9vbCB7Cisg
ICAgTm8sCisgICAgWWVzLAorfTsKKworZW51bSBjbGFzcyBQdXNoQXBwQnVuZGxlQ3JlYXRpb25S
ZXN1bHQgOiBib29sIHsKKyAgICBGYWlsdXJlLAorICAgIFN1Y2Nlc3MsCit9OworCitjbGFzcyBQ
dXNoQXBwQnVuZGxlOworCitjbGFzcyBQdXNoQXBwQnVuZGxlQ2xpZW50IHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIH5QdXNoQXBwQnVuZGxlQ2xpZW50KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2hlY2tGb3JFeGlzdGluZ0J1bmRsZShQdXNoQXBwQnVuZGxlJiwgUHVzaEFwcEJ1bmRsZUV4aXN0
cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWREZWxldGVFeGlzdGluZ0J1bmRsZVdpdGhFcnJv
cihQdXNoQXBwQnVuZGxlJiwgTlNFcnJvciAqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUFwcEJ1bmRsZShQdXNoQXBwQnVuZGxlJiwgUHVzaEFwcEJ1bmRsZUNyZWF0aW9uUmVzdWx0
KSA9IDA7Cit9OworCitjbGFzcyBQdXNoQXBwQnVuZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8UHVz
aEFwcEJ1bmRsZT4geworcHVibGljOgorICAgIHZpcnR1YWwgflB1c2hBcHBCdW5kbGUoKTsKKyAg
ICB2b2lkIGRldGFjaEZyb21DbGllbnQoKTsKKworICAgIHZpcnR1YWwgdm9pZCBjaGVja0ZvckV4
aXN0aW5nQnVuZGxlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVFeGlzdGluZ0J1bmRs
ZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlQnVuZGxlKCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzdG9wKCkgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgUHVzaEFwcEJ1bmRsZShQdXNo
QXBwQnVuZGxlQ2xpZW50Jik7CisKKyAgICBQdXNoQXBwQnVuZGxlQ2xpZW50KiBtX2NsaWVudDsK
K307CisKKworfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2VicHVzaGQvUHVzaEFwcEJ1bmRsZS5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVz
aEFwcEJ1bmRsZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmI4
MDEwNGIwMjA0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVz
aEFwcEJ1bmRsZS5tbQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJQdXNoQXBwQnVuZGxlLmgiCisKK25hbWVzcGFjZSBXZWJQdXNoRCB7
CisKK1B1c2hBcHBCdW5kbGVDbGllbnQ6On5QdXNoQXBwQnVuZGxlQ2xpZW50KCkKK3sKK30KKwor
UHVzaEFwcEJ1bmRsZTo6UHVzaEFwcEJ1bmRsZShQdXNoQXBwQnVuZGxlQ2xpZW50JiBjbGllbnQp
CisgICAgOiBtX2NsaWVudCgmY2xpZW50KQoreworfQorCitQdXNoQXBwQnVuZGxlOjp+UHVzaEFw
cEJ1bmRsZSgpCit7CisgICAgQVNTRVJUKCFtX2NsaWVudCk7Cit9CisKK3ZvaWQgUHVzaEFwcEJ1
bmRsZTo6ZGV0YWNoRnJvbUNsaWVudCgpCit7CisgICAgc3RvcCgpOworICAgIG1fY2xpZW50ID0g
bnVsbHB0cjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQv
d2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24uaAppbmRleCBiZTBmZjA0MmM5ZGUuLjM5ZDUx
YWY0YzNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rp
b24uaApAQCAtMjYsMTcgKzI2LDIyIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPG9wdGlv
bmFsPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQ
SS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViUHVz
aEQgewogCi1jbGFzcyBDbGllbnRDb25uZWN0aW9uIHsKK2NsYXNzIEFwcEJ1bmRsZVJlcXVlc3Q7
CisKK2NsYXNzIENsaWVudENvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxDbGllbnRDb25u
ZWN0aW9uPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPENsaWVudENvbm5lY3Rpb24+IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBDbGllbnRDb25uZWN0aW9uKHhw
Y19jb25uZWN0aW9uX3QpOworICAgIHN0YXRpYyBSZWY8Q2xpZW50Q29ubmVjdGlvbj4gY3JlYXRl
KHhwY19jb25uZWN0aW9uX3QpOwogCiAgICAgYm9vbCBoYXNIb3N0QXBwQXVkaXRUb2tlbigpIGNv
bnN0IHsgcmV0dXJuICEhbV9ob3N0QXBwQXVkaXRUb2tlbjsgfQogICAgIHZvaWQgc2V0SG9zdEFw
cEF1ZGl0VG9rZW5EYXRhKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOwpAQCAtNDcsMTMgKzUyLDI1
IEBAIHB1YmxpYzoKICAgICBib29sIGRlYnVnTW9kZUlzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZGVidWdNb2RlRW5hYmxlZDsgfQogICAgIHZvaWQgc2V0RGVidWdNb2RlSXNFbmFibGVkKGJv
b2wpOwogCisgICAgdm9pZCBlbnF1ZXVlQXBwQnVuZGxlUmVxdWVzdChzdGQ6OnVuaXF1ZV9wdHI8
QXBwQnVuZGxlUmVxdWVzdD4mJik7CisgICAgdm9pZCBkaWRDb21wbGV0ZUFwcEJ1bmRsZVJlcXVl
c3QoQXBwQnVuZGxlUmVxdWVzdCYpOworCisgICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkKCk7CisK
IHByaXZhdGU6CisgICAgQ2xpZW50Q29ubmVjdGlvbih4cGNfY29ubmVjdGlvbl90KTsKKworICAg
IHZvaWQgbWF5YmVTdGFydE5leHRBcHBCdW5kbGVSZXF1ZXN0KCk7CisgICAgCiAgICAgT1NPYmpl
Y3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4gbV94cGNDb25uZWN0aW9uOwogCiAgICAgc3RkOjpvcHRp
b25hbDxhdWRpdF90b2tlbl90PiBtX2hvc3RBcHBBdWRpdFRva2VuOwogICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXI7CiAgICAgc3RkOjpvcHRp
b25hbDxib29sPiBtX2hvc3RBcHBIYXNQdXNoRW50aXRsZW1lbnQ7CiAKKyAgICBEZXF1ZTxzdGQ6
OnVuaXF1ZV9wdHI8QXBwQnVuZGxlUmVxdWVzdD4+IG1fcGVuZGluZ0J1bmRsZVJlcXVlc3RzOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBcHBCdW5kbGVSZXF1ZXN0PiBtX2N1cnJlbnRCdW5kbGVSZXF1
ZXN0OworCiAgICAgYm9vbCBtX2RlYnVnTW9kZUVuYWJsZWQgeyBmYWxzZSB9OwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSBi
L1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KaW5kZXggNzgz
ZDg1MjU0OGU5Li5jNTliMTIwZWRkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVz
aGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9Q
dXNoQ2xpZW50Q29ubmVjdGlvbi5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJQdXNoQ2xpZW50Q29ubmVjdGlvbi5oIgogCisjaW1wb3J0ICJBcHBCdW5k
bGVSZXF1ZXN0LmgiCiAjaW1wb3J0ICJDb2RlU2lnbmluZy5oIgogI2ltcG9ydCAiV2ViUHVzaERh
ZW1vbi5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQ29uc29sZVR5cGVzLmg+CkBAIC0zNCw2
ICszNSwxMSBAQAogCiBuYW1lc3BhY2UgV2ViUHVzaEQgewogCitSZWY8Q2xpZW50Q29ubmVjdGlv
bj4gQ2xpZW50Q29ubmVjdGlvbjo6Y3JlYXRlKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDbGllbnRDb25uZWN0aW9uKGNvbm5lY3Rpb24p
KTsKK30KKwogQ2xpZW50Q29ubmVjdGlvbjo6Q2xpZW50Q29ubmVjdGlvbih4cGNfY29ubmVjdGlv
bl90IGNvbm5lY3Rpb24pCiAgICAgOiBtX3hwY0Nvbm5lY3Rpb24oY29ubmVjdGlvbikKIHsKQEAg
LTkzLDQgKzk5LDQ5IEBAIHZvaWQgQ2xpZW50Q29ubmVjdGlvbjo6c2V0RGVidWdNb2RlSXNFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKICAgICBEYWVtb246OnNpbmdsZXRvbigpLmJyb2FkY2FzdERlYnVn
TWVzc2FnZShNZXNzYWdlTGV2ZWw6OkluZm8sIG1lc3NhZ2UpOwogfQogCit2b2lkIENsaWVudENv
bm5lY3Rpb246OmVucXVldWVBcHBCdW5kbGVSZXF1ZXN0KHN0ZDo6dW5pcXVlX3B0cjxBcHBCdW5k
bGVSZXF1ZXN0PiYmIHJlcXVlc3QpCit7CisgICAgUkVMRUFTRV9BU1NFUlQobV94cGNDb25uZWN0
aW9uKTsKKyAgICBtX3BlbmRpbmdCdW5kbGVSZXF1ZXN0cy5hcHBlbmQoV1RGTW92ZShyZXF1ZXN0
KSk7CisgICAgbWF5YmVTdGFydE5leHRBcHBCdW5kbGVSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgQ2xp
ZW50Q29ubmVjdGlvbjo6bWF5YmVTdGFydE5leHRBcHBCdW5kbGVSZXF1ZXN0KCkKK3sKKyAgICBS
RUxFQVNFX0FTU0VSVChtX3hwY0Nvbm5lY3Rpb24pOworCisgICAgaWYgKG1fY3VycmVudEJ1bmRs
ZVJlcXVlc3QgfHwgbV9wZW5kaW5nQnVuZGxlUmVxdWVzdHMuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2N1cnJlbnRCdW5kbGVSZXF1ZXN0ID0gbV9wZW5kaW5nQnVuZGxlUmVx
dWVzdHMudGFrZUZpcnN0KCk7CisgICAgbV9jdXJyZW50QnVuZGxlUmVxdWVzdC0+c3RhcnQoKTsK
K30KKwordm9pZCBDbGllbnRDb25uZWN0aW9uOjpkaWRDb21wbGV0ZUFwcEJ1bmRsZVJlcXVlc3Qo
QXBwQnVuZGxlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICAvLyBJZiBvdXIgY29ubmVjdGlvbiB3
YXMgY2xvc2VkIHRoZXJlIHNob3VsZCBiZSBubyBpbi1wcm9ncmVzcyBidW5kbGUgcmVxdWVzdHMu
CisgICAgUkVMRUFTRV9BU1NFUlQobV94cGNDb25uZWN0aW9uKTsKKworICAgIEFTU0VSVChtX2N1
cnJlbnRCdW5kbGVSZXF1ZXN0LmdldCgpID09ICZyZXF1ZXN0KTsKKyAgICBtX2N1cnJlbnRCdW5k
bGVSZXF1ZXN0ID0gbnVsbHB0cjsKKworICAgIG1heWJlU3RhcnROZXh0QXBwQnVuZGxlUmVxdWVz
dCgpOworfQorCit2b2lkIENsaWVudENvbm5lY3Rpb246OmNvbm5lY3Rpb25DbG9zZWQoKQorewor
ICAgIFJFTEVBU0VfQVNTRVJUKG1feHBjQ29ubmVjdGlvbik7CisgICAgbV94cGNDb25uZWN0aW9u
ID0gbnVsbHB0cjsKKworICAgIGlmIChtX2N1cnJlbnRCdW5kbGVSZXF1ZXN0KSB7CisgICAgICAg
IG1fY3VycmVudEJ1bmRsZVJlcXVlc3QtPmNhbmNlbCgpOworICAgICAgICBtX2N1cnJlbnRCdW5k
bGVSZXF1ZXN0ID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8
QXBwQnVuZGxlUmVxdWVzdD4+IHBlbmRpbmdCdW5kbGVSZXF1ZXN0czsKKyAgICBwZW5kaW5nQnVu
ZGxlUmVxdWVzdHMuc3dhcChtX3BlbmRpbmdCdW5kbGVSZXF1ZXN0cyk7CisgICAgZm9yIChhdXRv
JiByZXF1c3QgOiBwZW5kaW5nQnVuZGxlUmVxdWVzdHMpCisgICAgICAgIHJlcXVzdC0+Y2FuY2Vs
KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYlB1c2hECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24uaCBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2Vi
UHVzaERhZW1vbi5oCmluZGV4IDY5NWJiYjI1ZTZlZC4uOTQyZTJmNWIzNjc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24uaApAQCAtNzEsMTAgKzcxLDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIGNhblJlZ2lzdGVyRm9yTm90aWZpY2F0aW9ucyhDbGllbnRDb25uZWN0aW9uJik7
CiAKICAgICBDbGllbnRDb25uZWN0aW9uKiB0b0NsaWVudENvbm5lY3Rpb24oeHBjX2Nvbm5lY3Rp
b25fdCk7Ci0KLSAgICBIYXNoU2V0PFN0cmluZz4gbV9pbk1lbW9yeU9yaWdpblN0cmluZ3NXaXRo
UGVybWlzc2lvbkZvclRlc3Rpbmc7Ci0KLSAgICBIYXNoTWFwPHhwY19jb25uZWN0aW9uX3QsIHN0
ZDo6dW5pcXVlX3B0cjxDbGllbnRDb25uZWN0aW9uPj4gbV9jb25uZWN0aW9uTWFwOworICAgIEhh
c2hNYXA8eHBjX2Nvbm5lY3Rpb25fdCwgUmVmPENsaWVudENvbm5lY3Rpb24+PiBtX2Nvbm5lY3Rp
b25NYXA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJQdXNoRApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9XZWJQdXNoRGFlbW9uLm1tCmluZGV4IDlkNWIwN2IzYzE0ZS4uNzY1NTkwM2QyOWI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0KKysrIGIvU291
cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCkBAIC0yNiwxMCArMjYsMTIgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViUHVzaERhZW1vbi5oIgogCisjaW1wb3J0
ICJBcHBCdW5kbGVSZXF1ZXN0LmgiCiAjaW1wb3J0ICJEYWVtb25EZWNvZGVyLmgiCiAjaW1wb3J0
ICJEYWVtb25FbmNvZGVyLmgiCiAjaW1wb3J0ICJEYWVtb25VdGlsaXRpZXMuaCIKICNpbXBvcnQg
IkhhbmRsZU1lc3NhZ2UuaCIKKyNpbXBvcnQgIk1vY2tBcHBCdW5kbGVSZWdpc3RyeS5oIgogI2lt
cG9ydCAiV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oIgogCiAjaW1wb3J0IDx3dGYvQ29tcGxldGlv
bkhhbmRsZXIuaD4KQEAgLTE4MCwxMyArMTgyLDE0IEBAIHZvaWQgRGFlbW9uOjpjb25uZWN0aW9u
RXZlbnRIYW5kbGVyKHhwY19vYmplY3RfdCByZXF1ZXN0KQogdm9pZCBEYWVtb246OmNvbm5lY3Rp
b25BZGRlZCh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24pCiB7CiAgICAgUkVMRUFTRV9BU1NF
UlQoIW1fY29ubmVjdGlvbk1hcC5jb250YWlucyhjb25uZWN0aW9uKSk7Ci0gICAgbV9jb25uZWN0
aW9uTWFwLnNldChjb25uZWN0aW9uLCBXVEY6Om1ha2VVbmlxdWU8Q2xpZW50Q29ubmVjdGlvbj4o
Y29ubmVjdGlvbikpOworICAgIG1fY29ubmVjdGlvbk1hcC5zZXQoY29ubmVjdGlvbiwgQ2xpZW50
Q29ubmVjdGlvbjo6Y3JlYXRlKGNvbm5lY3Rpb24pKTsKIH0KIAogdm9pZCBEYWVtb246OmNvbm5l
Y3Rpb25SZW1vdmVkKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikKIHsKICAgICBSRUxFQVNF
X0FTU0VSVChtX2Nvbm5lY3Rpb25NYXAuY29udGFpbnMoY29ubmVjdGlvbikpOwotICAgIG1fY29u
bmVjdGlvbk1hcC5yZW1vdmUoY29ubmVjdGlvbik7CisgICAgYXV0byBjbGllbnRDb25uZWN0aW9u
ID0gbV9jb25uZWN0aW9uTWFwLnRha2UoY29ubmVjdGlvbik7CisgICAgY2xpZW50Q29ubmVjdGlv
bi0+Y29ubmVjdGlvbkNsb3NlZCgpOwogfQogCiBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEVuY29k
ZWRNZXNzYWdlJiYpPiBEYWVtb246OmNyZWF0ZVJlcGx5U2VuZGVyKE1lc3NhZ2VUeXBlIG1lc3Nh
Z2VUeXBlLCBPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+JiYgcmVxdWVzdCkKQEAgLTI1MywxMCAr
MjU2LDcgQEAgdm9pZCBEYWVtb246OnJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9u
KENsaWVudENvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGMKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGZvciBhbiBBUEkgdGVzdGluZyBjaGVja3BvaW50Ci0g
ICAgLy8gTmV4dCBzdGVwIGlzIGFjdHVhbGx5IHBlcmZvcm0gYSBwZXJzaXN0ZW50IHBlcm1pc3Np
b25zIHJlcXVlc3Qgb24gYSBwZXItcGxhdGZvcm0gYmFzaXMKLSAgICBtX2luTWVtb3J5T3JpZ2lu
U3RyaW5nc1dpdGhQZXJtaXNzaW9uRm9yVGVzdGluZy5hZGQob3JpZ2luU3RyaW5nKTsKLSAgICBy
ZXBseVNlbmRlcih0cnVlKTsKKyAgICBjb25uZWN0aW9uLT5lbnF1ZXVlQXBwQnVuZGxlUmVxdWVz
dChtYWtlVW5pcXVlPEFwcEJ1bmRsZVBlcm1pc3Npb25zUmVxdWVzdD4oKmNvbm5lY3Rpb24sIG9y
aWdpblN0cmluZywgV1RGTW92ZShyZXBseVNlbmRlcikpKTsKIH0KIAogdm9pZCBEYWVtb246Omdl
dE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKENsaWVudENvbm5lY3Rp
b24qIGNvbm5lY3Rpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mKT4mJiByZXBseVNlbmRlcikKQEAgLTI2Niw5ICsyNjYsOCBAQCB2b2lkIERhZW1vbjo6Z2V0
T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoQ2xpZW50Q29ubmVjdGlv
biogY29ubgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFRoaXMgaXMg
Zm9yIGFuIEFQSSB0ZXN0aW5nIGNoZWNrcG9pbnQKLSAgICAvLyBOZXh0IHN0ZXAgaXMgYWN0dWFs
bHkgZ2F0aGVyIHBlcnNpc3RlbnQgcGVybWlzc2lvbnMgZnJvbSB0aGUgc3lzdGVtIG9uIGEgcGVy
LXBsYXRmb3JtIGJhc2lzCi0gICAgcmVwbHlTZW5kZXIoY29weVRvVmVjdG9yKG1faW5NZW1vcnlP
cmlnaW5TdHJpbmdzV2l0aFBlcm1pc3Npb25Gb3JUZXN0aW5nKSk7CisgICAgLy8gRklYTUU6IFRo
aXMgd2lsbCBuZWVkIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9ucyBmb3IgcmVhbCB3
b3JsZCBidW5kbGVzIG9uY2UgaW1wbGVtZW50ZWQuCisgICAgcmVwbHlTZW5kZXIoTW9ja0FwcEJ1
bmRsZVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5nZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMoY29u
bmVjdGlvbi0+aG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcigpKSk7CiB9CiAKIHZvaWQgRGFl
bW9uOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKENsaWVudENvbm5lY3Rp
b24qIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIHJlcGx5U2VuZGVyKQpAQCAtMjc4LDEyICsyNzcs
NyBAQCB2b2lkIERhZW1vbjo6ZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihD
bGllbnRDb25uZWN0aW9uKiBjb25uZWN0aW9uLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgLy8gRklYTUU6IFRoaXMgaXMgZm9yIGFuIEFQSSB0ZXN0aW5nIGNoZWNrcG9pbnQKLSAgICAv
LyBOZXh0IHN0ZXAgaXMgYWN0dWFsbHkgZGVsZXRlIGFueSBwZXJzaXN0ZW50IHBlcm1pc3Npb25z
IG9uIGEgcGVyLXBsYXRmb3JtIGJhc2lzCi0gICAgaWYgKG1faW5NZW1vcnlPcmlnaW5TdHJpbmdz
V2l0aFBlcm1pc3Npb25Gb3JUZXN0aW5nLnJlbW92ZShvcmlnaW5TdHJpbmcpKQotICAgICAgICBy
ZXBseVNlbmRlcigiIik7Ci0gICAgZWxzZQotICAgICAgICByZXBseVNlbmRlcihtYWtlU3RyaW5n
KCJPcmlnaW4gIiwgb3JpZ2luU3RyaW5nLCAiIG5vdCByZWdpc3RlcmVkIGZvciBwdXNoIG9yIG5v
dGlmaWNhdGlvbnMiKSk7CisgICAgY29ubmVjdGlvbi0+ZW5xdWV1ZUFwcEJ1bmRsZVJlcXVlc3Qo
bWFrZVVuaXF1ZTxBcHBCdW5kbGVEZWxldGlvblJlcXVlc3Q+KCpjb25uZWN0aW9uLCBvcmlnaW5T
dHJpbmcsIFdURk1vdmUocmVwbHlTZW5kZXIpKSk7CiB9CiAKIHZvaWQgRGFlbW9uOjpzZXRIb3N0
QXBwQXVkaXRUb2tlbihDbGllbnRDb25uZWN0aW9uKiBjbGllbnRDb25uZWN0aW9uLCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIHRva2VuRGF0YSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445312</attachid>
            <date>2021-11-29 11:41:58 -0800</date>
            <delta_ts>2021-11-29 16:21:04 -0800</delta_ts>
            <desc>PFL v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>52010</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMWY1ZTM1OGY1YjhlLi4wZDk2MWZlYTJmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsOTYgQEAKKzIwMjEtMTEtMjkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2Ugd2VicHVzaGQgImZha2UgcmVnaXN0cmF0aW9uIGZvciB0ZXN0aW5nIiBt
dWNoIG1vcmUgY29tcGxpY2F0ZWQgYnkgYWRkaW5nIGEgIm1vY2sgYXBwIGJ1bmRsZSIgaW5zdGFs
bAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDU0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBDb3Zl
cmVkIGJ5IEFQSSB0ZXN0cy4KKyAgICAgICAgCisgICAgICAgIEJlZm9yZSB0aGlzIHBhdGNoLCB3
ZWJwdXNoZCByZW1lbWJlcmVkICJyZWdpc3RyYXRpb25zIiB1c2luZyBhIHNpbXBsZSBpbi1tZW1v
cnkgSGFzaE1hcC4KKyAgICAgICAgCisgICAgICAgIEluIHRoZSBuZWFyIGZ1dHVyZSwgcmVnaXN0
cmF0aW9ucyB3aWxsIGFjdHVhbGx5IGJlIHJlcHJlc2VudGVkIHdpdGggYSBwbGFjZWhvbGRlciBh
cHAgYnVuZGxlIG9uIGRpc2suCisgICAgICAgIAorICAgICAgICBUaGUgcHJvY2VzcyBvZiBpbnN0
YWxsaW5nIHBsYWNlaG9sZGVycyAoYW5kIGNoZWNraW5nIGZvciBleGlzdGluZyBvbmVzKSBpcyBj
b21wbGljYXRlZCBhbmQgYXN5bmNocm9ub3VzLgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRj
aCBzaGlmdHMgdGhlIGluLW1lbW9yeSB0ZXN0aW5nIGltcGxlbWVudGF0aW9uIGZyb20gYSBzaW1w
bGUgSGFzaE1hcCB0byBhICJjb21wbGljYXRlZCBhbmQgYXN5bmNocm9ub3VzIgorICAgICAgICBy
ZWdpc3RyYXRpb24gbWVjaGFuaXNtIHRoYXQgc2ltdWxhdGVzIGhvdyBhcHAtYnVuZGxlIGluc3Rh
bGxzIHdpbGwgd29yay4KKyAgICAgICAgCisgICAgICAgIE9uY2UgdGhlICJyZWFsIiBtZWNoYW5p
c21zIGFyZSBpbiBwbGFjZSB0aGVyZSB3aWxsIGJlIG11Y2ggbW9yZSBpbi1kZXB0aCB0ZXN0aW5n
IHRoYXQgd2UgY2FuIGRvLgorICAgICAgICBGb3Igbm93LCB0aGlzIGlzIGEgIm5vIGJlaGF2aW9y
IGNoYW5nZSIgcGF0Y2guCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L0NvY29hL1dlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlB1c2hEOjpDb25uZWN0aW9uOjpjb25uZWN0aW9uUmVjZWl2ZWRFdmVudCBjb25zdCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmg6CisKKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAiUHVz
aEFwcEJ1bmRsZSIgaXMgYW4gYWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgcmVwcmVzZW50aW5nIGEg
cGxhY2Vob2xkZXIgYXBwbGljYXRpb24gYnVuZGxlIGZvciBhIHJlZ2lzdHJhdGlvbi4KKyAgICAg
ICAgRXZlbnR1YWxseSB0aGVyZSB3aWxsIGJlIGEgbmF0aXZlIG9uZSBmb3IgZWFjaCBwbGF0Zm9y
bSB0aGF0IGFjdHVhbGx5IGRvZXMgc3lzdGVtIG9wZXJhdGlvbnMuCisgICAgICAgIEZvciBub3cs
IHRoZSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBpcyB0aGUgaW4tbWVtb3J5ICJNb2NrIiBhcHAg
YnVuZGxlLgorCisgICAgICAgICogd2VicHVzaGQvUHVzaEFwcEJ1bmRsZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLmguCisgICAgICAg
ICogd2VicHVzaGQvUHVzaEFwcEJ1bmRsZS5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC93
ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5oLgorICAgICAgICAoV2ViUHVzaEQ6OlB1c2hB
cHBCdW5kbGVDbGllbnQ6On5QdXNoQXBwQnVuZGxlQ2xpZW50KToKKyAgICAgICAgKFdlYlB1c2hE
OjpQdXNoQXBwQnVuZGxlOjpQdXNoQXBwQnVuZGxlKToKKyAgICAgICAgKFdlYlB1c2hEOjpQdXNo
QXBwQnVuZGxlOjp+UHVzaEFwcEJ1bmRsZSk6CisgICAgICAgIChXZWJQdXNoRDo6UHVzaEFwcEJ1
bmRsZTo6ZGV0YWNoRnJvbUNsaWVudCk6CisgICAgICAgIAorICAgICAgICBBbiAiQXBwQnVuZGxl
UmVxdWVzdCIgaXMgYSBxdWVhYmxlIG9wZXJhdGlvbiBtZWFudCB0byBkbyBzb21ldGhpbmcgd2l0
aCBhbiAiQXBwIGJ1bmRsZSIuCisgICAgICAgIEZvciBub3cgdGhlIG9wZXJhdGlvbnMgYXJlICJj
cmVhdGUiIGFuZCAiZGVsZXRlIgorICAgICAgICAKKyAgICAgICAgKiB3ZWJwdXNoZC9BcHBCdW5k
bGVSZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRsZVJlcXVlc3RJ
bXBsOjpBcHBCdW5kbGVSZXF1ZXN0SW1wbCk6CisgICAgICAgIChXZWJQdXNoRDo6QXBwQnVuZGxl
UmVxdWVzdEltcGw6On5BcHBCdW5kbGVSZXF1ZXN0SW1wbCk6CisgICAgICAgIChXZWJQdXNoRDo6
QXBwQnVuZGxlUmVxdWVzdEltcGw6OmNhbGxDb21wbGV0aW9uSGFuZGxlckFuZENsZWFudXApOgor
ICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRsZVBlcm1pc3Npb25zUmVxdWVzdDo6QXBwQnVuZGxl
UGVybWlzc2lvbnNSZXF1ZXN0KToKKyAgICAgICAgKFdlYlB1c2hEOjpBcHBCdW5kbGVEZWxldGlv
blJlcXVlc3Q6OkFwcEJ1bmRsZURlbGV0aW9uUmVxdWVzdCk6CisgICAgICAgICogd2VicHVzaGQv
QXBwQnVuZGxlUmVxdWVzdC5tbTogQWRkZWQuCisgICAgICAgIChXZWJQdXNoRDo6QXBwQnVuZGxl
UmVxdWVzdDo6QXBwQnVuZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJQdXNoRDo6QXBwQnVuZGxl
UmVxdWVzdDo6fkFwcEJ1bmRsZVJlcXVlc3QpOgorICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRs
ZVJlcXVlc3Q6OnN0YXJ0KToKKyAgICAgICAgKFdlYlB1c2hEOjpBcHBCdW5kbGVSZXF1ZXN0Ojpj
YW5jZWwpOgorICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRsZVJlcXVlc3Q6OmNsZWFudXBBZnRl
ckNvbXBsZXRpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYlB1c2hEOjpBcHBCdW5kbGVQZXJtaXNz
aW9uc1JlcXVlc3Q6OnN0YXJ0SW50ZXJuYWwpOgorICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRs
ZVBlcm1pc3Npb25zUmVxdWVzdDo6ZGlkQ2hlY2tGb3JFeGlzdGluZ0J1bmRsZSk6CisgICAgICAg
IChXZWJQdXNoRDo6QXBwQnVuZGxlUGVybWlzc2lvbnNSZXF1ZXN0OjpkaWRDcmVhdGVBcHBCdW5k
bGUpOgorICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRsZURlbGV0aW9uUmVxdWVzdDo6c3RhcnRJ
bnRlcm5hbCk6CisgICAgICAgIChXZWJQdXNoRDo6QXBwQnVuZGxlRGVsZXRpb25SZXF1ZXN0Ojpk
aWREZWxldGVFeGlzdGluZ0J1bmRsZVdpdGhFcnJvcik6CisKKyAgICAgICAgKiB3ZWJwdXNoZC9N
b2NrQXBwQnVuZGxlRm9yVGVzdGluZy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L3dlYnB1
c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLmguCisgICAgICAgIChXZWJQdXNoRDo6TW9ja0FwcEJ1
bmRsZUZvclRlc3Rpbmc6OmNyZWF0ZSk6CisgICAgICAgICogd2VicHVzaGQvTW9ja0FwcEJ1bmRs
ZUZvclRlc3RpbmcubW06IEFkZGVkLgorICAgICAgICAoV2ViUHVzaEQ6Ok1vY2tBcHBCdW5kbGVG
b3JUZXN0aW5nOjpNb2NrQXBwQnVuZGxlRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJQdXNoRDo6
TW9ja0FwcEJ1bmRsZUZvclRlc3Rpbmc6On5Nb2NrQXBwQnVuZGxlRm9yVGVzdGluZyk6CisgICAg
ICAgIChXZWJQdXNoRDo6TW9ja0FwcEJ1bmRsZUZvclRlc3Rpbmc6OmNoZWNrRm9yRXhpc3RpbmdC
dW5kbGUpOgorICAgICAgICAoV2ViUHVzaEQ6Ok1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nOjpkZWxl
dGVFeGlzdGluZ0J1bmRsZSk6CisgICAgICAgIChXZWJQdXNoRDo6TW9ja0FwcEJ1bmRsZUZvclRl
c3Rpbmc6OmNyZWF0ZUJ1bmRsZSk6CisgICAgICAgIChXZWJQdXNoRDo6TW9ja0FwcEJ1bmRsZUZv
clRlc3Rpbmc6OnN0b3ApOgorCisgICAgICAgICogd2VicHVzaGQvTW9ja0FwcEJ1bmRsZVJlZ2lz
dHJ5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5l
Y3Rpb24uaC4KKyAgICAgICAgKiB3ZWJwdXNoZC9Nb2NrQXBwQnVuZGxlUmVnaXN0cnkubW06IEFk
ZGVkLgorICAgICAgICAoV2ViUHVzaEQ6Ok1vY2tBcHBCdW5kbGVSZWdpc3RyeTo6c2luZ2xldG9u
KToKKyAgICAgICAgKFdlYlB1c2hEOjpNb2NrQXBwQnVuZGxlUmVnaXN0cnk6OmdldE9yaWdpbnNX
aXRoUmVnaXN0cmF0aW9ucyk6CisgICAgICAgIChXZWJQdXNoRDo6TW9ja0FwcEJ1bmRsZVJlZ2lz
dHJ5Ojpkb2VzQnVuZGxlRXhpc3QpOgorICAgICAgICAoV2ViUHVzaEQ6Ok1vY2tBcHBCdW5kbGVS
ZWdpc3RyeTo6Y3JlYXRlQnVuZGxlKToKKyAgICAgICAgKFdlYlB1c2hEOjpNb2NrQXBwQnVuZGxl
UmVnaXN0cnk6OmRlbGV0ZUJ1bmRsZSk6CisKKyAgICAgICAgKiB3ZWJwdXNoZC9QdXNoQ2xpZW50
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIHdlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1t
OgorICAgICAgICAoV2ViUHVzaEQ6OkNsaWVudENvbm5lY3Rpb246OmNyZWF0ZSk6CisgICAgICAg
IChXZWJQdXNoRDo6Q2xpZW50Q29ubmVjdGlvbjo6ZW5xdWV1ZUFwcEJ1bmRsZVJlcXVlc3QpOgor
ICAgICAgICAoV2ViUHVzaEQ6OkNsaWVudENvbm5lY3Rpb246Om1heWJlU3RhcnROZXh0QXBwQnVu
ZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJQdXNoRDo6Q2xpZW50Q29ubmVjdGlvbjo6ZGlkQ29t
cGxldGVBcHBCdW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYlB1c2hEOjpDbGllbnRDb25uZWN0
aW9uOjpjb25uZWN0aW9uQ2xvc2VkKToKKworICAgICAgICAqIHdlYnB1c2hkL1dlYlB1c2hEYWVt
b24uaDoKKyAgICAgICAgKiB3ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tOgorICAgICAgICAoV2Vi
UHVzaEQ6OkRhZW1vbjo6Y29ubmVjdGlvbkFkZGVkKToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVt
b246OmNvbm5lY3Rpb25SZW1vdmVkKToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246OnJlcXVl
c3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVt
b246OmdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKToKKyAgICAg
ICAgKFdlYlB1c2hEOjpEYWVtb246OmRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRp
b24pOgorCiAyMDIxLTExLTI5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5j
b20+CiAKICAgICAgICAgW1dlYkdQVV0gSVBDIGNsYXNzIHJlZmFjdG9yaW5ncwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL0NvY29hL1dlYlB1
c2hEYWVtb25Db25uZWN0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05vdGlmaWNhdGlvbnMvQ29jb2EvV2ViUHVzaERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbQppbmRl
eCBiZDYxOWEzYzM0MzguLjExNDdkYzQ0MDE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL0NvY29hL1dlYlB1c2hEYWVtb25Db25uZWN0aW9u
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L0NvY29hL1dlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29jb2EubW0KQEAgLTYxLDcgKzYxLDcgQEAg
dm9pZCBDb25uZWN0aW9uOjpjb25uZWN0aW9uUmVjZWl2ZWRFdmVudCh4cGNfb2JqZWN0X3QgcmVx
dWVzdCkgY29uc3QKICAgICBpZiAoIWRlYnVnTWVzc2FnZSkKICAgICAgICAgcmV0dXJuOwogICAg
IGF1dG8gbWVzc2FnZUxldmVsID0gc3RhdGljX2Nhc3Q8SlNDOjpNZXNzYWdlTGV2ZWw+KHhwY19k
aWN0aW9uYXJ5X2dldF91aW50NjQocmVxdWVzdCwgcHJvdG9jb2xEZWJ1Z01lc3NhZ2VMZXZlbEtl
eSkpOwotICAgIG5ldHdvcmtTZXNzaW9uKCkubmV0d29ya1Byb2Nlc3MoKS5icm9hZGNhc3RDb25z
b2xlTWVzc2FnZShuZXR3b3JrU2Vzc2lvbigpLnNlc3Npb25JRCgpLCBNZXNzYWdlU291cmNlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgbWVzc2FnZUxldmVsLCBTdHJpbmc6OmZyb21VVEY4KGRl
YnVnTWVzc2FnZSkpOworICAgIG5ldHdvcmtTZXNzaW9uKCkubmV0d29ya1Byb2Nlc3MoKS5icm9h
ZGNhc3RDb25zb2xlTWVzc2FnZShuZXR3b3JrU2Vzc2lvbigpLnNlc3Npb25JRCgpLCBNZXNzYWdl
U291cmNlOjpPdGhlciwgbWVzc2FnZUxldmVsLCBTdHJpbmc6OmZyb21VVEY4KGRlYnVnTWVzc2Fn
ZSkpOwogfQogCiBSZXRhaW5QdHI8eHBjX29iamVjdF90PiBDb25uZWN0aW9uOjpkaWN0aW9uYXJ5
RnJvbU1lc3NhZ2UoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYgbWVz
c2FnZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1VJRGVsZWdhdGVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCmluZGV4IDQ0Mzc4ZjY2MjY2ZC4uMjdmNzM5M2U0NTUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVn
YXRlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJ
RGVsZWdhdGVQcml2YXRlLmgKQEAgLTE1OSw3ICsxNTksNyBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRz
OwogLSAodm9pZClfd2ViVmlld0RpZERpc2FibGVJbnNwZWN0b3JCcm93c2VyRG9tYWluOihXS1dl
YlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7
CiAKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRYUlNlc3Npb25X
aXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkKSljb21wbGV0aW9uSGFuZGxlciBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwotLSAodm9pZClfd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbkZvclNlY3Vy
aXR5T3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICopc2VjdXJpdHlPcmlnaW4gZGVjaXNpb25IYW5k
bGVyOih2b2lkICheKShCT09MKSlkZWNpc2lvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMC4xMy40KSk7CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVl
c3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46KFdLU2VjdXJpdHlPcmln
aW4gKilzZWN1cml0eU9yaWdpbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWRlY2lz
aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoV0tfSU9TX1RC
QSkpOwogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzZDAxODA1ZTk3ZTAuLmVkOTVhZTVlZTRl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMDA1LDYgKzEwMDUsMTIgQEAKIAkJNTE1QkUxQUIxRDU1NUFBMDAwREQ3QzY4IC8qIFdl
YkdhbWVwYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNUJFMUEwMUQ1NTBBQjAwMEREN0M2OCAvKiBXZWJHYW1lcGFkLmggKi87IH07CiAJCTUxNUJF
MUIzMUQ1OTAyREQwMEREN0M2OCAvKiBHYW1lcGFkRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1QkUxQjAxRDU5MDA2OTAwREQ3QzY4IC8qIEdh
bWVwYWREYXRhLmggKi87IH07CiAJCTUxNUJFMUI1MUQ1OTE3RkYwMEREN0M2OCAvKiBVSUdhbWVw
YWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJF
MUFEMUQ1NTVDNTEwMEREN0M2OCAvKiBVSUdhbWVwYWQuaCAqLzsgfTsKKwkJNTE2MEU5NTUyNzRC
ODg3MjAwNTY3Mzg4IC8qIEFwcEJ1bmRsZVJlcXVlc3QubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTYwRTk1MzI3NEI4ODcxMDA1NjczODggLyogQXBw
QnVuZGxlUmVxdWVzdC5tbSAqLzsgfTsKKwkJNTE2MEU5NTYyNzRCODg3MjAwNTY3Mzg4IC8qIEFw
cEJ1bmRsZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNjBFOTU0Mjc0Qjg4NzEwMDU2NzM4OCAvKiBBcHBCdW5kbGVSZXF1ZXN0LmggKi87
IH07CisJCTUxNjBFOTU5Mjc0QzBEODkwMDU2NzM4OCAvKiBQdXNoQXBwQnVuZGxlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTYwRTk1NzI3NEMwRDg4
MDA1NjczODggLyogUHVzaEFwcEJ1bmRsZS5oICovOyB9OworCQk1MTYwRTk1QTI3NEMwRDg5MDA1
NjczODggLyogUHVzaEFwcEJ1bmRsZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxNjBFOTU4Mjc0QzBEODgwMDU2NzM4OCAvKiBQdXNoQXBwQnVuZGxl
Lm1tICovOyB9OworCQk1MTYwRTk1RTI3NEMyQTAzMDA1NjczODggLyogTW9ja0FwcEJ1bmRsZVJl
Z2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTYwRTk1QzI3NEMyQTAzMDA1NjczODggLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5LmggKi87IH07
CisJCTUxNjBFOTYwMjc0QzJBNDAwMDU2NzM4OCAvKiBNb2NrQXBwQnVuZGxlUmVnaXN0cnkubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTYwRTk1RjI3
NEMyQTNGMDA1NjczODggLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1tICovOyB9OwogCQk1MTYz
MTk5NDE2Mjg5QTYwMDBFMjJGMDAgLyogTmV0d29ya1Byb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQ0M5MzQx
NjI4MDY0ODAwMzQyNTUwIC8qIE5ldHdvcmtQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsg
fTsKIAkJNTE2MzE5OTUxNjI4OUE2MzAwRTIyRjAwIC8qIE5ldHdvcmtQcm9jZXNzTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUNDOTM1
MTYyODA2NDgwMDM0MjU1MCAvKiBOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmggKi87IH07CiAJCTUx
NkE0QTVEMTIwQTJDQ0QwMEMwNUI3RiAvKiBBUElFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2QTRBNUIxMjBBMkNDRDAwQzA1QjdGIC8qIEFQ
SUVycm9yLmggKi87IH07CkBAIC0xMDU2LDYgKzEwNjIsOCBAQAogCQk1MUYwNjBFMTE2NTQzMTg1
MDBGMzI4MkUgLyogTmV0d29ya1JUQ1Byb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjA2MEREMTY1NDMxNzUw
MEYzMjgyRSAvKiBOZXR3b3JrUlRDUHJvdmlkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9Owog
CQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MkYgLyogV2ViTUROU1JlZ2lzdGVyTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
RjA2MEREMTY1NDMxNzUwMEYzMjgyRiAvKiBXZWJNRE5TUmVnaXN0ZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovOyB9OwogCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4M0YgLyogTmV0d29ya01ETlNSZWdp
c3Rlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUYwNjBERDE2NTQzMTc1MDBGMzI4M0YgLyogTmV0d29ya01ETlNSZWdp
c3Rlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTUxRjdCQjc2Mjc0NDk4QkIwMEM0NUE3
MiAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjdCQjc0Mjc0NDk4QkEwMEM0NUE3MiAvKiBNb2NrQXBw
QnVuZGxlRm9yVGVzdGluZy5tbSAqLzsgfTsKKwkJNTFGN0JCNzcyNzQ0OThCQjAwQzQ1QTcyIC8q
IE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUY3QkI3NTI3NDQ5OEJCMDBDNDVBNzIgLyogTW9ja0FwcEJ1bmRs
ZUZvclRlc3RpbmcuaCAqLzsgfTsKIAkJNTFGN0JCN0IyNzQ0QzUwNzAwQzQ1QTcyIC8qIFB1c2hD
bGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUY3QkI3OTI3NDRDNTA3MDBDNDVBNzIgLyogUHVzaENsaWVudENvbm5lY3Rpb24u
aCAqLzsgfTsKIAkJNTFGN0JCN0MyNzQ0QzUwNzAwQzQ1QTcyIC8qIFB1c2hDbGllbnRDb25uZWN0
aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFG
N0JCN0EyNzQ0QzUwNzAwQzQ1QTcyIC8qIFB1c2hDbGllbnRDb25uZWN0aW9uLm1tICovOyB9Owog
CQk1MUY3QkI3RDI3NDU2NDA0MDBDNDVBNzIgLyogQ29kZVNpZ25pbmcubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTExQUQ0RjFDQkM0N0Y4MDA2ODFF
RTUgLyogQ29kZVNpZ25pbmcubW0gKi87IH07CkBAIC00MzQwLDYgKzQzNDgsMTIgQEAKIAkJNTE1
QzQxNUEyMDdENzRFMDAwNzI2RTAyIC8qIFN1c3BlbmRlZFBhZ2VQcm94eS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdXNwZW5kZWRQYWdlUHJveHkuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVDNDE1QjIwN0Q3NEUxMDA3MjZFMDIgLyogU3Vz
cGVuZGVkUGFnZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1c3Bl
bmRlZFBhZ2VQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTYwQkZFMDEz
MzgxREY5MDA5MTg5OTkgLyogTG9nZ2luZ0ZvdW5kYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2dnaW5nRm91bmRhdGlvbi5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTE2MEU5NTMyNzRCODg3MTAwNTY3Mzg4IC8qIEFwcEJ1bmRsZVJl
cXVlc3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBcHBCdW5k
bGVSZXF1ZXN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTYwRTk1NDI3NEI4
ODcxMDA1NjczODggLyogQXBwQnVuZGxlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBcHBCdW5kbGVSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUxNjBFOTU3Mjc0QzBEODgwMDU2NzM4OCAvKiBQdXNoQXBwQnVuZGxlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1c2hBcHBCdW5kbGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTE2MEU5NTgyNzRDMEQ4ODAwNTY3Mzg4IC8qIFB1c2hBcHBCdW5kbGUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQdXNoQXBwQnVuZGxl
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTYwRTk1QzI3NEMyQTAzMDA1Njcz
ODggLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MTYwRTk1RjI3NEMyQTNGMDA1NjczODggLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTW9ja0FwcEJ1bmRsZVJl
Z2lzdHJ5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTY0QzA5NDFCMDVCNzU3
MDA0RjEwMkEgLyogQXV4aWxpYXJ5UHJvY2Vzcy5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBBdXhpbGlhcnlQcm9jZXNzLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTZBNEE1QjEyMEEyQ0NEMDBDMDVCN0YgLyogQVBJRXJyb3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE3QTMzQjMxMzBCMzA4QzAwRjgwQ0I1IC8qIFdLQXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00
NDQ3LDYgKzQ0NjEsOCBAQAogCQk1MUYwNjBERDE2NTQzMTc1MDBGMzI4MkYgLyogV2ViTUROU1Jl
Z2lzdGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYk1ETlNSZWdp
c3Rlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dl
Yk1ETlNSZWdpc3Rlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCTUxRjA2MEREMTY1NDMxNzUwMEYzMjgzRiAvKiBOZXR3b3JrTUROU1Jl
Z2lzdGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtNRE5T
UmVnaXN0ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9OZXR3b3JrTUROU1JlZ2lzdGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNTFGMDYwREUxNjU0MzE3NTAwRjMyODFCIC8qIFdlYlJl
c291cmNlTG9hZGVyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViUmVzb3VyY2VMb2FkZXJN
ZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJSZXNvdXJjZUxvYWRl
ck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTUxRjdC
Qjc0Mjc0NDk4QkEwMEM0NUE3MiAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5n
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUY3QkI3NTI3NDQ5OEJCMDBDNDVB
NzIgLyogTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTFGN0JCNzkyNzQ0QzUwNzAwQzQ1QTcyIC8qIFB1c2hDbGllbnRDb25uZWN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1c2hDbGllbnRDb25uZWN0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRjdCQjdBMjc0NEM1MDcwMEM0NUE3
MiAvKiBQdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFB1c2hDbGllbnRDb25uZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MUY3QkI3RTI3NDU2NEExMDBDNDVBNzIgLyogU2VjdXJpdHkuZnJhbWV3b3Jr
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBl
ci5mcmFtZXdvcms7IG5hbWUgPSBTZWN1cml0eS5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7
IH07CkBAIC05ODYyLDYgKzk4NzgsMTQgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCiAJCQkJNUNCQjZENEQyNzFGNjdDQzAwRkQxQTVEIC8qIGNvbS5hcHBsZS53ZWJraXQu
d2VicHVzaGQucGxpc3QgKi8sCisJCQkJNTE2MEU5NTQyNzRCODg3MTAwNTY3Mzg4IC8qIEFwcEJ1
bmRsZVJlcXVlc3QuaCAqLywKKwkJCQk1MTYwRTk1MzI3NEI4ODcxMDA1NjczODggLyogQXBwQnVu
ZGxlUmVxdWVzdC5tbSAqLywKKwkJCQk1MUY3QkI3NTI3NDQ5OEJCMDBDNDVBNzIgLyogTW9ja0Fw
cEJ1bmRsZUZvclRlc3RpbmcuaCAqLywKKwkJCQk1MUY3QkI3NDI3NDQ5OEJBMDBDNDVBNzIgLyog
TW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcubW0gKi8sCisJCQkJNTE2MEU5NUMyNzRDMkEwMzAwNTY3
Mzg4IC8qIE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5oICovLAorCQkJCTUxNjBFOTVGMjc0QzJBM0Yw
MDU2NzM4OCAvKiBNb2NrQXBwQnVuZGxlUmVnaXN0cnkubW0gKi8sCisJCQkJNTE2MEU5NTcyNzRD
MEQ4ODAwNTY3Mzg4IC8qIFB1c2hBcHBCdW5kbGUuaCAqLywKKwkJCQk1MTYwRTk1ODI3NEMwRDg4
MDA1NjczODggLyogUHVzaEFwcEJ1bmRsZS5tbSAqLywKIAkJCQk1MUY3QkI3OTI3NDRDNTA3MDBD
NDVBNzIgLyogUHVzaENsaWVudENvbm5lY3Rpb24uaCAqLywKIAkJCQk1MUY3QkI3QTI3NDRDNTA3
MDBDNDVBNzIgLyogUHVzaENsaWVudENvbm5lY3Rpb24ubW0gKi8sCiAJCQkJNTEyQ0Q2OUQyNzIz
MzkzQTAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb24uaCAqLywKQEAgLTEyNDAzLDkgKzEyNDI3LDEz
IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQk1QzE1NzlGQzI3MTdBRjUwMDBFRDUyODAg
LyogRGFlbW9uVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTYwRTk1OTI3NEMwRDg5
MDA1NjczODggLyogUHVzaEFwcEJ1bmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGN0JCN0Iy
NzQ0QzUwNzAwQzQ1QTcyIC8qIFB1c2hDbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1MTYwRTk1RTI3NEMyQTAzMDA1NjczODggLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1QzE1NzlGQzI3MTdBRjUwMDBFRDUyODAgLyogRGFlbW9uVXRp
bGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTYwRTk1NjI3NEI4ODcyMDA1NjczODggLyog
QXBwQnVuZGxlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyQ0Q2OUYyNzIzMzkzQTAw
RjdGOEVDIC8qIFdlYlB1c2hEYWVtb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTUxRjdCQjc3Mjc0
NDk4QkIwMEM0NUE3MiAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkBAIC0xNDk2MSw5ICsxNDk4OSwxMyBAQAogCQkJCTVDMTU3QTAxMjcxN0I3RkIwMEVENTI4MCAv
KiBBcmd1bWVudENvZGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUY3QkI3RDI3NDU2NDA0
MDBDNDVBNzIgLyogQ29kZVNpZ25pbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzE1NzlGRjI3
MTdCNkQyMDBFRDUyODAgLyogRGFlbW9uRGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
MUY3QkI3NjI3NDQ5OEJCMDBDNDVBNzIgLyogTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcubW0gaW4g
U291cmNlcyAqLywKKwkJCQk1MTYwRTk1NTI3NEI4ODcyMDA1NjczODggLyogQXBwQnVuZGxlUmVx
dWVzdC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxNjBFOTVBMjc0QzBEODkwMDU2NzM4OCAvKiBQ
dXNoQXBwQnVuZGxlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTE2MEU5NjAyNzRDMkE0MDAwNTY3
Mzg4IC8qIE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxRjdC
QjdDMjc0NEM1MDcwMEM0NUE3MiAvKiBQdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTVDMTU3OUZFMjcxN0I2QzEwMEVENTI4MCAvKiBEYWVtb25FbmNvZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTVDMTU3OUZCMjcxN0FGNTAwMEVENTI4MCAvKiBEYWVtb25VdGls
aXRpZXMubW0gaW4gU291cmNlcyAqLywKLQkJCQk1MUY3QkI3QzI3NDRDNTA3MDBDNDVBNzIgLyog
UHVzaENsaWVudENvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTJDRDZBMDI3MjMz
OTNBMDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDMTU3
QTBDMjcxN0NBMUQwMEVENTI4MCAvKiBXZWJQdXNoRGFlbW9uTWFpbi5tbSBpbiBTb3VyY2VzICov
LAogCQkJKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvQXBwQnVuZGxlUmVx
dWVzdC5oIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9BcHBCdW5kbGVSZXF1ZXN0LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xMjFmOGRlZjdlYzMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL0FwcEJ1bmRsZVJlcXVlc3QuaApAQCAt
MCwwICsxLDEyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJQdXNo
QXBwQnVuZGxlLmgiCisjaW1wb3J0ICJQdXNoQ2xpZW50Q29ubmVjdGlvbi5oIgorI2ltcG9ydCA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW1wb3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KKyNp
bXBvcnQgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJQdXNoRCB7CisKK2NsYXNzIFB1c2hBcHBCdW5kbGU7Citj
bGFzcyBDbGllbnRDb25uZWN0aW9uOworCitjbGFzcyBBcHBCdW5kbGVSZXF1ZXN0IDogcHVibGlj
IFB1c2hBcHBCdW5kbGVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIHZpcnR1YWwgfkFwcEJ1bmRsZVJlcXVlc3QoKTsKKworICAgIHZpcnR1YWwgY29u
c3QgY2hhciogdHJhbnNhY3Rpb25EZXNjcmlwdGlvbigpIGNvbnN0ID0gMDsKKworICAgIHZvaWQg
c3RhcnQoKTsKKyAgICB2b2lkIGNhbmNlbCgpOworCitwcm90ZWN0ZWQ6CisgICAgQXBwQnVuZGxl
UmVxdWVzdChDbGllbnRDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcpOwor
CisgICAgdm9pZCBjbGVhbnVwQWZ0ZXJDb21wbGV0aW9uSGFuZGxlcigpOworCisgICAgV2Vha1B0
cjxDbGllbnRDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAgU3RyaW5nIG1fb3JpZ2luU3Ry
aW5nOworICAgIFJlZlB0cjxQdXNoQXBwQnVuZGxlPiBtX2FwcEJ1bmRsZTsKKyAgICBPU09iamVj
dFB0cjxvc190cmFuc2FjdGlvbl90PiBtX3RyYW5zYWN0aW9uOworCitwcml2YXRlOgorICAgIHZp
cnR1YWwgdm9pZCBzdGFydEludGVybmFsKCkgPSAwOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
Q29tcGxldGlvblR5cGU+CitjbGFzcyBBcHBCdW5kbGVSZXF1ZXN0SW1wbCA6IHB1YmxpYyBBcHBC
dW5kbGVSZXF1ZXN0IHsKK3Byb3RlY3RlZDoKKyAgICBBcHBCdW5kbGVSZXF1ZXN0SW1wbChDbGll
bnRDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChDb21wbGV0aW9uVHlwZSk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgICAgIDogQXBwQnVuZGxlUmVxdWVzdChjb25uZWN0aW9uLCBvcmlnaW5TdHJpbmcpCisg
ICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkK
KyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+QXBwQnVuZGxlUmVxdWVzdEltcGwoKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKCFtX2FwcEJ1bmRsZSk7CisgICAgfQorCisgICAgdm9pZCBjYWxs
Q29tcGxldGlvbkhhbmRsZXJBbmRDbGVhbnVwKENvbXBsZXRpb25UeXBlIHJlc3VsdCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChtX2NvbXBsZXRpb25IYW5kbGVyKTsKKyAgICAgICAgbV9jb21wbGV0
aW9uSGFuZGxlcihyZXN1bHQpOworCisgICAgICAgIGNsZWFudXBBZnRlckNvbXBsZXRpb25IYW5k
bGVyKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0SW50ZXJuYWwoKSA9IDA7Cisg
ICAgdmlydHVhbCBjb25zdCBjaGFyKiB0cmFuc2FjdGlvbkRlc2NyaXB0aW9uKCkgY29uc3QgPSAw
OworCitwcml2YXRlOgorICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQ29tcGxldGlvblR5cGUp
PiBtX2NvbXBsZXRpb25IYW5kbGVyOworfTsKKworY2xhc3MgQXBwQnVuZGxlUGVybWlzc2lvbnNS
ZXF1ZXN0IDogcHVibGljIEFwcEJ1bmRsZVJlcXVlc3RJbXBsPGJvb2w+IHsKK3B1YmxpYzoKKyAg
ICBBcHBCdW5kbGVQZXJtaXNzaW9uc1JlcXVlc3QoQ2xpZW50Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIDogQXBwQnVuZGxlUmVxdWVzdEltcGwo
Y29ubmVjdGlvbiwgb3JpZ2luU3RyaW5nLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKKyAg
ICB7CisgICAgfQorCitwcml2YXRlOgorICAgIGNvbnN0IGNoYXIqIHRyYW5zYWN0aW9uRGVzY3Jp
cHRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiV2ViUHVzaCBQZXJtaXNzaW9ucyBCdW5kbGUg
UmVxdWVzdCI7IH0KKworICAgIHZvaWQgc3RhcnRJbnRlcm5hbCgpIGZpbmFsOworICAgIHZvaWQg
ZGlkQ2hlY2tGb3JFeGlzdGluZ0J1bmRsZShQdXNoQXBwQnVuZGxlJiwgUHVzaEFwcEJ1bmRsZUV4
aXN0cykgZmluYWw7CisgICAgdm9pZCBkaWREZWxldGVFeGlzdGluZ0J1bmRsZVdpdGhFcnJvcihQ
dXNoQXBwQnVuZGxlJiwgTlNFcnJvciAqKSBmaW5hbCB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KKyAgICB2b2lkIGRpZENyZWF0ZUFwcEJ1bmRsZShQdXNoQXBwQnVuZGxlJiwgUHVz
aEFwcEJ1bmRsZUNyZWF0aW9uUmVzdWx0KSBmaW5hbDsKK307CisKK2NsYXNzIEFwcEJ1bmRsZURl
bGV0aW9uUmVxdWVzdCA6IHB1YmxpYyBBcHBCdW5kbGVSZXF1ZXN0SW1wbDxjb25zdCBTdHJpbmcm
PiB7CitwdWJsaWM6CisgICAgQXBwQnVuZGxlRGVsZXRpb25SZXF1ZXN0KENsaWVudENvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICA6
IEFwcEJ1bmRsZVJlcXVlc3RJbXBsKGNvbm5lY3Rpb24sIG9yaWdpblN0cmluZywgIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgY29uc3Qg
Y2hhciogdHJhbnNhY3Rpb25EZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJXZWJQ
dXNoIEJ1bmRsZSBEZWxldGlvbiBSZXF1ZXN0IjsgfQorCisgICAgdm9pZCBzdGFydEludGVybmFs
KCkgZmluYWw7CisgICAgdm9pZCBkaWRDaGVja0ZvckV4aXN0aW5nQnVuZGxlKFB1c2hBcHBCdW5k
bGUmLCBQdXNoQXBwQnVuZGxlRXhpc3RzKSBmaW5hbCAgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CisgICAgdm9pZCBkaWREZWxldGVFeGlzdGluZ0J1bmRsZVdpdGhFcnJvcihQdXNo
QXBwQnVuZGxlJiwgTlNFcnJvciAqKSBmaW5hbDsKKyAgICB2b2lkIGRpZENyZWF0ZUFwcEJ1bmRs
ZShQdXNoQXBwQnVuZGxlJiwgUHVzaEFwcEJ1bmRsZUNyZWF0aW9uUmVzdWx0KSBmaW5hbCAgeyBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJQ
dXNoRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9BcHBCdW5kbGVSZXF1ZXN0
Lm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9BcHBCdW5kbGVSZXF1ZXN0Lm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2FlMDUyMzczZWI0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9BcHBCdW5kbGVSZXF1ZXN0Lm1tCkBAIC0w
LDAgKzEsMTIzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJB
cHBCdW5kbGVSZXF1ZXN0LmgiCisKKyNpbXBvcnQgIk1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLmgi
CisjaW1wb3J0ICJXZWJQdXNoRGFlbW9uLmgiCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9Db25z
b2xlVHlwZXMuaD4KKworbmFtZXNwYWNlIFdlYlB1c2hEIHsKKworQXBwQnVuZGxlUmVxdWVzdDo6
QXBwQnVuZGxlUmVxdWVzdChDbGllbnRDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJp
bmcmIG9yaWdpblN0cmluZykKKyAgICA6IG1fY29ubmVjdGlvbigmY29ubmVjdGlvbikKKyAgICAs
IG1fb3JpZ2luU3RyaW5nKG9yaWdpblN0cmluZykKK3sKK30KKworQXBwQnVuZGxlUmVxdWVzdDo6
fkFwcEJ1bmRsZVJlcXVlc3QoKQoreworICAgIEFTU0VSVCghbV9hcHBCdW5kbGUpOworfQorCit2
b2lkIEFwcEJ1bmRsZVJlcXVlc3Q6OnN0YXJ0KCkKK3sKKyAgICBBU1NFUlQobV9jb25uZWN0aW9u
KTsKKworICAgIG1fdHJhbnNhY3Rpb24gPSBhZG9wdE9TT2JqZWN0KG9zX3RyYW5zYWN0aW9uX2Ny
ZWF0ZSh0cmFuc2FjdGlvbkRlc2NyaXB0aW9uKCkpKTsKKworICAgIG1fYXBwQnVuZGxlID0gTW9j
a0FwcEJ1bmRsZUZvclRlc3Rpbmc6OmNyZWF0ZShtX29yaWdpblN0cmluZywgbV9jb25uZWN0aW9u
LT5ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKCksICp0aGlzKTsKKyAgICBzdGFydEludGVy
bmFsKCk7Cit9CisKK3ZvaWQgQXBwQnVuZGxlUmVxdWVzdDo6Y2FuY2VsKCkKK3sKKyAgICBBU1NF
UlQobV9jb25uZWN0aW9uKTsKKworICAgIGlmIChtX2FwcEJ1bmRsZSkgeworICAgICAgICBtX2Fw
cEJ1bmRsZS0+c3RvcCgpOworICAgICAgICBtX2FwcEJ1bmRsZSA9IG51bGxwdHI7CisgICAgfQor
fQorCit2b2lkIEFwcEJ1bmRsZVJlcXVlc3Q6OmNsZWFudXBBZnRlckNvbXBsZXRpb25IYW5kbGVy
KCkKK3sKKyAgICBpZiAobV9hcHBCdW5kbGUpIHsKKyAgICAgICAgbV9hcHBCdW5kbGUtPmRldGFj
aEZyb21DbGllbnQoKTsKKyAgICAgICAgbV9hcHBCdW5kbGUgPSBudWxscHRyOworICAgIH0KKwor
ICAgIG1fdHJhbnNhY3Rpb24gPSBudWxscHRyOworCisgICAgaWYgKG1fY29ubmVjdGlvbikKKyAg
ICAgICAgbV9jb25uZWN0aW9uLT5kaWRDb21wbGV0ZUFwcEJ1bmRsZVJlcXVlc3QoKnRoaXMpOwor
fQorCisvLyBBcHAgYnVuZGxlIHBlcm1pc3Npb25zCisKK3ZvaWQgQXBwQnVuZGxlUGVybWlzc2lv
bnNSZXF1ZXN0OjpzdGFydEludGVybmFsKCkKK3sKKyAgICBtX2FwcEJ1bmRsZS0+Y2hlY2tGb3JF
eGlzdGluZ0J1bmRsZSgpOworfQorCit2b2lkIEFwcEJ1bmRsZVBlcm1pc3Npb25zUmVxdWVzdDo6
ZGlkQ2hlY2tGb3JFeGlzdGluZ0J1bmRsZShQdXNoQXBwQnVuZGxlJiBidW5kbGUsIFB1c2hBcHBC
dW5kbGVFeGlzdHMgZXhpc3RzKQoreworICAgIEFTU0VSVF9VTlVTRUQoYnVuZGxlLCAmYnVuZGxl
ID09IG1fYXBwQnVuZGxlLmdldCgpKTsKKworICAgIGlmIChleGlzdHMgPT0gUHVzaEFwcEJ1bmRs
ZUV4aXN0czo6WWVzKQorICAgICAgICByZXR1cm4gY2FsbENvbXBsZXRpb25IYW5kbGVyQW5kQ2xl
YW51cCh0cnVlKTsKKworICAgIG1fYXBwQnVuZGxlLT5jcmVhdGVCdW5kbGUoKTsKK30KKwordm9p
ZCBBcHBCdW5kbGVQZXJtaXNzaW9uc1JlcXVlc3Q6OmRpZENyZWF0ZUFwcEJ1bmRsZShQdXNoQXBw
QnVuZGxlJiBidW5kbGUsIFB1c2hBcHBCdW5kbGVDcmVhdGlvblJlc3VsdCByZXN1bHQpCit7Cisg
ICAgQVNTRVJUX1VOVVNFRChidW5kbGUsICZidW5kbGUgPT0gbV9hcHBCdW5kbGUuZ2V0KCkpOwor
CisgICAgaWYgKHJlc3VsdCA9PSBQdXNoQXBwQnVuZGxlQ3JlYXRpb25SZXN1bHQ6OkZhaWx1cmUp
CisgICAgICAgIHJldHVybiBjYWxsQ29tcGxldGlvbkhhbmRsZXJBbmRDbGVhbnVwKGZhbHNlKTsK
KworICAgIGNhbGxDb21wbGV0aW9uSGFuZGxlckFuZENsZWFudXAodHJ1ZSk7Cit9CisKKy8vIEFw
cCBidW5kbGUgZGVsZXRpb24KKwordm9pZCBBcHBCdW5kbGVEZWxldGlvblJlcXVlc3Q6OnN0YXJ0
SW50ZXJuYWwoKQoreworICAgIG1fYXBwQnVuZGxlLT5kZWxldGVFeGlzdGluZ0J1bmRsZSgpOwor
fQorCit2b2lkIEFwcEJ1bmRsZURlbGV0aW9uUmVxdWVzdDo6ZGlkRGVsZXRlRXhpc3RpbmdCdW5k
bGVXaXRoRXJyb3IoUHVzaEFwcEJ1bmRsZSYgYnVuZGxlLCBOU0Vycm9yICplcnJvcikKK3sKKyAg
ICBBU1NFUlRfVU5VU0VEKGJ1bmRsZSwgJmJ1bmRsZSA9PSBtX2FwcEJ1bmRsZS5nZXQoKSk7CisK
KyAgICBpZiAoZXJyb3IpCisgICAgICAgIERhZW1vbjo6c2luZ2xldG9uKCkuYnJvYWRjYXN0RGVi
dWdNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6SW5mbywgbWFrZVN0cmluZygiRmFpbGVkIHRvIGRlbGV0
ZSBhcHAgYnVuZGxlOiAiLCBTdHJpbmcoW2Vycm9yIGRlc2NyaXB0aW9uXSkpKTsKKworICAgIGNh
bGxDb21wbGV0aW9uSGFuZGxlckFuZENsZWFudXAoZXJyb3IgPyBTdHJpbmcoW2Vycm9yIGRlc2Ny
aXB0aW9uXSkgOiAiIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYlB1c2hECmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL01vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLmggYi9Tb3Vy
Y2UvV2ViS2l0L3dlYnB1c2hkL01vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zZGJjNWVjZWQwOGMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL01vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLmgKQEAg
LTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUHVz
aEFwcEJ1bmRsZS5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYlB1c2hEIHsKKworY2xhc3MgTW9ja0FwcEJ1
bmRsZUZvclRlc3RpbmcgOiBwdWJsaWMgUHVzaEFwcEJ1bmRsZSB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxNb2NrQXBwQnVuZGxlRm9yVGVz
dGluZz4gY3JlYXRlKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBjb25zdCBTdHJpbmcmIGhv
c3RBcHBCdW5kbGVJZGVudGlmaWVyLCBQdXNoQXBwQnVuZGxlQ2xpZW50JiBjbGllbnQpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZyhv
cmlnaW5TdHJpbmcsIGhvc3RBcHBCdW5kbGVJZGVudGlmaWVyLCBjbGllbnQpKTsKKyAgICB9CisK
KyAgICB+TW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcoKSBmaW5hbCA9IGRlZmF1bHQ7CisKK3ByaXZh
dGU6CisgICAgTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcoY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJp
bmcsIGNvbnN0IFN0cmluZyYgaG9zdEFwcEJ1bmRsZUlkZW50aWZpZXIsIFB1c2hBcHBCdW5kbGVD
bGllbnQmKTsKKworICAgIHZvaWQgY2hlY2tGb3JFeGlzdGluZ0J1bmRsZSgpIGZpbmFsOworICAg
IHZvaWQgZGVsZXRlRXhpc3RpbmdCdW5kbGUoKSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZUJ1bmRs
ZSgpIGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZpbmFsOworCisgICAgU3RyaW5nIG1fb3JpZ2lu
U3RyaW5nOworICAgIFN0cmluZyBtX2hvc3RBcHBCdW5kbGVJZGVudGlmaWVyOworfTsKKworCit9
IC8vIG5hbWVzcGFjZSBXZWJQdXNoRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9Nb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvTW9j
a0FwcEJ1bmRsZUZvclRlc3RpbmcubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi45OGJjOTBjOTA0NWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3dl
YnB1c2hkL01vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLm1tCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk1vY2tBcHBCdW5kbGVGb3JUZXN0
aW5nLmgiCisKKyNpbXBvcnQgIk1vY2tBcHBCdW5kbGVSZWdpc3RyeS5oIgorI2ltcG9ydCA8d3Rm
L01haW5UaHJlYWQuaD4KKworbmFtZXNwYWNlIFdlYlB1c2hEIHsKKworTW9ja0FwcEJ1bmRsZUZv
clRlc3Rpbmc6Ok1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgb3JpZ2luU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIGhvc3RBcHBCdW5kbGVJZGVudGlmaWVyLCBQdXNoQXBwQnVuZGxl
Q2xpZW50JiBjbGllbnQpCisgICAgOiBQdXNoQXBwQnVuZGxlKGNsaWVudCkKKyAgICAsIG1fb3Jp
Z2luU3RyaW5nKG9yaWdpblN0cmluZykKKyAgICAsIG1faG9zdEFwcEJ1bmRsZUlkZW50aWZpZXIo
aG9zdEFwcEJ1bmRsZUlkZW50aWZpZXIpCit7Cit9CisKK3ZvaWQgTW9ja0FwcEJ1bmRsZUZvclRl
c3Rpbmc6OmNoZWNrRm9yRXhpc3RpbmdCdW5kbGUoKQoreworICAgIGNhbGxPbk1haW5SdW5Mb29w
KFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdGhpc10geworICAgICAgICBib29sIGV4
aXN0cyA9IE1vY2tBcHBCdW5kbGVSZWdpc3RyeTo6c2luZ2xldG9uKCkuZG9lc0J1bmRsZUV4aXN0
KG1faG9zdEFwcEJ1bmRsZUlkZW50aWZpZXIsIG1fb3JpZ2luU3RyaW5nKTsKKyAgICAgICAgaWYg
KG1fY2xpZW50KQorICAgICAgICAgICAgbV9jbGllbnQtPmRpZENoZWNrRm9yRXhpc3RpbmdCdW5k
bGUoKnRoaXMsIGV4aXN0cyA/IFB1c2hBcHBCdW5kbGVFeGlzdHM6OlllcyA6IFB1c2hBcHBCdW5k
bGVFeGlzdHM6Ok5vKTsKKyAgICB9KTsKK30KKwordm9pZCBNb2NrQXBwQnVuZGxlRm9yVGVzdGlu
Zzo6ZGVsZXRlRXhpc3RpbmdCdW5kbGUoKQoreworICAgIGNhbGxPbk1haW5SdW5Mb29wKFtwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdGhpc10geworICAgICAgICBNb2NrQXBwQnVuZGxl
UmVnaXN0cnk6OnNpbmdsZXRvbigpLmRlbGV0ZUJ1bmRsZShtX2hvc3RBcHBCdW5kbGVJZGVudGlm
aWVyLCBtX29yaWdpblN0cmluZyk7CisgICAgICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgICAg
IG1fY2xpZW50LT5kaWREZWxldGVFeGlzdGluZ0J1bmRsZVdpdGhFcnJvcigqdGhpcywgbmlsKTsK
KyAgICB9KTsKK30KKwordm9pZCBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZzo6Y3JlYXRlQnVuZGxl
KCkKK3sKKyAgICBjYWxsT25NYWluUnVuTG9vcChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIHRoaXNdIHsKKyAgICAgICAgTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5j
cmVhdGVCdW5kbGUobV9ob3N0QXBwQnVuZGxlSWRlbnRpZmllciwgbV9vcmlnaW5TdHJpbmcpOwor
ICAgICAgICBpZiAobV9jbGllbnQpCisgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQ3JlYXRlQXBw
QnVuZGxlKCp0aGlzLCBQdXNoQXBwQnVuZGxlQ3JlYXRpb25SZXN1bHQ6OlN1Y2Nlc3MpOworICAg
IH0pOworfQorCit2b2lkIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nOjpzdG9wKCkKK3sKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVz
aGQvTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL01vY2tB
cHBCdW5kbGVSZWdpc3RyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uNDM2NzY0NTZjMDdiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9Nb2NrQXBwQnVuZGxlUmVnaXN0cnkuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViUHVzaEQgeworCitjbGFzcyBNb2Nr
QXBwQnVuZGxlRm9yVGVzdGluZzsKKworY2xhc3MgTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5IHsKKyAg
ICBmcmllbmQgY2xhc3MgTW9ja0FwcEJ1bmRsZUZvclRlc3Rpbmc7CitwdWJsaWM6CisgICAgc3Rh
dGljIE1vY2tBcHBCdW5kbGVSZWdpc3RyeSYgc2luZ2xldG9uKCk7CisKKyAgICBWZWN0b3I8U3Ry
aW5nPiBnZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMoY29uc3QgU3RyaW5nJiBob3N0QXBwQnVu
ZGxlSWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgYm9vbCBkb2VzQnVuZGxlRXhpc3QoY29u
c3QgU3RyaW5nJiBob3N0QXBwQnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW5T
dHJpbmcpOworICAgIHZvaWQgY3JlYXRlQnVuZGxlKGNvbnN0IFN0cmluZyYgaG9zdEFwcEJ1bmRs
ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nKTsKKyAgICB2b2lkIGRlbGV0
ZUJ1bmRsZShjb25zdCBTdHJpbmcmIGhvc3RBcHBCdW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG9yaWdpblN0cmluZyk7CisKKyAgICBIYXNoTWFwPFN0cmluZywgSGFzaFNldDxTdHJpbmc+
PiBtX3JlZ2lzdGVyZWRCdW5kbGVNYXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJQdXNoRApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9Nb2NrQXBwQnVuZGxlUmVnaXN0cnku
bW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL01vY2tBcHBCdW5kbGVSZWdpc3RyeS5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmYyNTEwNjNiNzZhOAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5
Lm1tCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIk1vY2tBcHBCdW5kbGVSZWdpc3RyeS5oIgorCisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYlB1c2hEIHsKKworTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5
JiBNb2NrQXBwQnVuZGxlUmVnaXN0cnk6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPE1vY2tBcHBCdW5kbGVSZWdpc3RyeT4gcmVnaXN0cnk7CisgICAgcmV0dXJuIHJl
Z2lzdHJ5OworfQorCitWZWN0b3I8U3RyaW5nPiBNb2NrQXBwQnVuZGxlUmVnaXN0cnk6OmdldE9y
aWdpbnNXaXRoUmVnaXN0cmF0aW9ucyhjb25zdCBTdHJpbmcmIGhvc3RBcHBCdW5kbGVJZGVudGlm
aWVyKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdHM7CisgICAgYXV0byBpdGVyYXRvciA9
IG1fcmVnaXN0ZXJlZEJ1bmRsZU1hcC5maW5kKGhvc3RBcHBCdW5kbGVJZGVudGlmaWVyKTsKKyAg
ICBpZiAoaXRlcmF0b3IgIT0gbV9yZWdpc3RlcmVkQnVuZGxlTWFwLmVuZCgpKQorICAgICAgICBy
ZXN1bHRzID0gY29weVRvVmVjdG9yKGl0ZXJhdG9yLT52YWx1ZSk7CisgICAgcmV0dXJuIHJlc3Vs
dHM7Cit9CisKK2Jvb2wgTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Ojpkb2VzQnVuZGxlRXhpc3QoY29u
c3QgU3RyaW5nJiBob3N0QXBwQnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW5T
dHJpbmcpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fcmVnaXN0ZXJlZEJ1bmRsZU1hcC5maW5k
KGhvc3RBcHBCdW5kbGVJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gaXRlcmF0b3IgIT0gbV9yZWdp
c3RlcmVkQnVuZGxlTWFwLmVuZCgpICYmIGl0ZXJhdG9yLT52YWx1ZS5jb250YWlucyhvcmlnaW5T
dHJpbmcpOworfQorCit2b2lkIE1vY2tBcHBCdW5kbGVSZWdpc3RyeTo6Y3JlYXRlQnVuZGxlKGNv
bnN0IFN0cmluZyYgaG9zdEFwcEJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
U3RyaW5nKQoreworICAgIG1fcmVnaXN0ZXJlZEJ1bmRsZU1hcC5hZGQoaG9zdEFwcEJ1bmRsZUlk
ZW50aWZpZXIsIEhhc2hTZXQ8U3RyaW5nPiB7IH0pLml0ZXJhdG9yLT52YWx1ZS5hZGQob3JpZ2lu
U3RyaW5nKTsKK30KKwordm9pZCBNb2NrQXBwQnVuZGxlUmVnaXN0cnk6OmRlbGV0ZUJ1bmRsZShj
b25zdCBTdHJpbmcmIGhvc3RBcHBCdW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdp
blN0cmluZykKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9yZWdpc3RlcmVkQnVuZGxlTWFwLmZp
bmQoaG9zdEFwcEJ1bmRsZUlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX3JlZ2lz
dGVyZWRCdW5kbGVNYXAuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGl0ZXJhdG9yLT52
YWx1ZS5yZW1vdmUob3JpZ2luU3RyaW5nKTsKKworICAgIGlmIChpdGVyYXRvci0+dmFsdWUuaXNF
bXB0eSgpKQorICAgICAgICBtX3JlZ2lzdGVyZWRCdW5kbGVNYXAucmVtb3ZlKGl0ZXJhdG9yKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2VicHVzaGQvUHVzaEFwcEJ1bmRsZS5oIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQXBw
QnVuZGxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44YTZkNTdj
YzZmNWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hBcHBC
dW5kbGUuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCitAY2xhc3MgTlNFcnJvcjsKKworbmFtZXNwYWNl
IFdlYlB1c2hEIHsKKworZW51bSBjbGFzcyBQdXNoQXBwQnVuZGxlRXhpc3RzIDogYm9vbCB7Cisg
ICAgTm8sCisgICAgWWVzLAorfTsKKworZW51bSBjbGFzcyBQdXNoQXBwQnVuZGxlQ3JlYXRpb25S
ZXN1bHQgOiBib29sIHsKKyAgICBGYWlsdXJlLAorICAgIFN1Y2Nlc3MsCit9OworCitjbGFzcyBQ
dXNoQXBwQnVuZGxlOworCitjbGFzcyBQdXNoQXBwQnVuZGxlQ2xpZW50IHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIH5QdXNoQXBwQnVuZGxlQ2xpZW50KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2hlY2tGb3JFeGlzdGluZ0J1bmRsZShQdXNoQXBwQnVuZGxlJiwgUHVzaEFwcEJ1bmRsZUV4aXN0
cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWREZWxldGVFeGlzdGluZ0J1bmRsZVdpdGhFcnJv
cihQdXNoQXBwQnVuZGxlJiwgTlNFcnJvciAqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUFwcEJ1bmRsZShQdXNoQXBwQnVuZGxlJiwgUHVzaEFwcEJ1bmRsZUNyZWF0aW9uUmVzdWx0
KSA9IDA7Cit9OworCitjbGFzcyBQdXNoQXBwQnVuZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8UHVz
aEFwcEJ1bmRsZT4geworcHVibGljOgorICAgIHZpcnR1YWwgflB1c2hBcHBCdW5kbGUoKTsKKyAg
ICB2b2lkIGRldGFjaEZyb21DbGllbnQoKTsKKworICAgIHZpcnR1YWwgdm9pZCBjaGVja0ZvckV4
aXN0aW5nQnVuZGxlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVFeGlzdGluZ0J1bmRs
ZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlQnVuZGxlKCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzdG9wKCkgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgUHVzaEFwcEJ1bmRsZShQdXNo
QXBwQnVuZGxlQ2xpZW50Jik7CisKKyAgICBQdXNoQXBwQnVuZGxlQ2xpZW50KiBtX2NsaWVudDsK
K307CisKKworfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2VicHVzaGQvUHVzaEFwcEJ1bmRsZS5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVz
aEFwcEJ1bmRsZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmI4
MDEwNGIwMjA0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVz
aEFwcEJ1bmRsZS5tbQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJQdXNoQXBwQnVuZGxlLmgiCisKK25hbWVzcGFjZSBXZWJQdXNoRCB7
CisKK1B1c2hBcHBCdW5kbGVDbGllbnQ6On5QdXNoQXBwQnVuZGxlQ2xpZW50KCkKK3sKK30KKwor
UHVzaEFwcEJ1bmRsZTo6UHVzaEFwcEJ1bmRsZShQdXNoQXBwQnVuZGxlQ2xpZW50JiBjbGllbnQp
CisgICAgOiBtX2NsaWVudCgmY2xpZW50KQoreworfQorCitQdXNoQXBwQnVuZGxlOjp+UHVzaEFw
cEJ1bmRsZSgpCit7CisgICAgQVNTRVJUKCFtX2NsaWVudCk7Cit9CisKK3ZvaWQgUHVzaEFwcEJ1
bmRsZTo6ZGV0YWNoRnJvbUNsaWVudCgpCit7CisgICAgc3RvcCgpOworICAgIG1fY2xpZW50ID0g
bnVsbHB0cjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQv
d2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24uaAppbmRleCBiZTBmZjA0MmM5ZGUuLjM5ZDUx
YWY0YzNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rp
b24uaApAQCAtMjYsMTcgKzI2LDIyIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPG9wdGlv
bmFsPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQ
SS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViUHVz
aEQgewogCi1jbGFzcyBDbGllbnRDb25uZWN0aW9uIHsKK2NsYXNzIEFwcEJ1bmRsZVJlcXVlc3Q7
CisKK2NsYXNzIENsaWVudENvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxDbGllbnRDb25u
ZWN0aW9uPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPENsaWVudENvbm5lY3Rpb24+IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBDbGllbnRDb25uZWN0aW9uKHhw
Y19jb25uZWN0aW9uX3QpOworICAgIHN0YXRpYyBSZWY8Q2xpZW50Q29ubmVjdGlvbj4gY3JlYXRl
KHhwY19jb25uZWN0aW9uX3QpOwogCiAgICAgYm9vbCBoYXNIb3N0QXBwQXVkaXRUb2tlbigpIGNv
bnN0IHsgcmV0dXJuICEhbV9ob3N0QXBwQXVkaXRUb2tlbjsgfQogICAgIHZvaWQgc2V0SG9zdEFw
cEF1ZGl0VG9rZW5EYXRhKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOwpAQCAtNDcsMTMgKzUyLDI1
IEBAIHB1YmxpYzoKICAgICBib29sIGRlYnVnTW9kZUlzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZGVidWdNb2RlRW5hYmxlZDsgfQogICAgIHZvaWQgc2V0RGVidWdNb2RlSXNFbmFibGVkKGJv
b2wpOwogCisgICAgdm9pZCBlbnF1ZXVlQXBwQnVuZGxlUmVxdWVzdChzdGQ6OnVuaXF1ZV9wdHI8
QXBwQnVuZGxlUmVxdWVzdD4mJik7CisgICAgdm9pZCBkaWRDb21wbGV0ZUFwcEJ1bmRsZVJlcXVl
c3QoQXBwQnVuZGxlUmVxdWVzdCYpOworCisgICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkKCk7CisK
IHByaXZhdGU6CisgICAgQ2xpZW50Q29ubmVjdGlvbih4cGNfY29ubmVjdGlvbl90KTsKKworICAg
IHZvaWQgbWF5YmVTdGFydE5leHRBcHBCdW5kbGVSZXF1ZXN0KCk7CisgICAgCiAgICAgT1NPYmpl
Y3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4gbV94cGNDb25uZWN0aW9uOwogCiAgICAgc3RkOjpvcHRp
b25hbDxhdWRpdF90b2tlbl90PiBtX2hvc3RBcHBBdWRpdFRva2VuOwogICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXI7CiAgICAgc3RkOjpvcHRp
b25hbDxib29sPiBtX2hvc3RBcHBIYXNQdXNoRW50aXRsZW1lbnQ7CiAKKyAgICBEZXF1ZTxzdGQ6
OnVuaXF1ZV9wdHI8QXBwQnVuZGxlUmVxdWVzdD4+IG1fcGVuZGluZ0J1bmRsZVJlcXVlc3RzOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBcHBCdW5kbGVSZXF1ZXN0PiBtX2N1cnJlbnRCdW5kbGVSZXF1
ZXN0OworCiAgICAgYm9vbCBtX2RlYnVnTW9kZUVuYWJsZWQgeyBmYWxzZSB9OwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSBi
L1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KaW5kZXggNzgz
ZDg1MjU0OGU5Li5jNTliMTIwZWRkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVz
aGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9Q
dXNoQ2xpZW50Q29ubmVjdGlvbi5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJQdXNoQ2xpZW50Q29ubmVjdGlvbi5oIgogCisjaW1wb3J0ICJBcHBCdW5k
bGVSZXF1ZXN0LmgiCiAjaW1wb3J0ICJDb2RlU2lnbmluZy5oIgogI2ltcG9ydCAiV2ViUHVzaERh
ZW1vbi5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQ29uc29sZVR5cGVzLmg+CkBAIC0zNCw2
ICszNSwxMSBAQAogCiBuYW1lc3BhY2UgV2ViUHVzaEQgewogCitSZWY8Q2xpZW50Q29ubmVjdGlv
bj4gQ2xpZW50Q29ubmVjdGlvbjo6Y3JlYXRlKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDbGllbnRDb25uZWN0aW9uKGNvbm5lY3Rpb24p
KTsKK30KKwogQ2xpZW50Q29ubmVjdGlvbjo6Q2xpZW50Q29ubmVjdGlvbih4cGNfY29ubmVjdGlv
bl90IGNvbm5lY3Rpb24pCiAgICAgOiBtX3hwY0Nvbm5lY3Rpb24oY29ubmVjdGlvbikKIHsKQEAg
LTkzLDQgKzk5LDQ5IEBAIHZvaWQgQ2xpZW50Q29ubmVjdGlvbjo6c2V0RGVidWdNb2RlSXNFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKICAgICBEYWVtb246OnNpbmdsZXRvbigpLmJyb2FkY2FzdERlYnVn
TWVzc2FnZShNZXNzYWdlTGV2ZWw6OkluZm8sIG1lc3NhZ2UpOwogfQogCit2b2lkIENsaWVudENv
bm5lY3Rpb246OmVucXVldWVBcHBCdW5kbGVSZXF1ZXN0KHN0ZDo6dW5pcXVlX3B0cjxBcHBCdW5k
bGVSZXF1ZXN0PiYmIHJlcXVlc3QpCit7CisgICAgUkVMRUFTRV9BU1NFUlQobV94cGNDb25uZWN0
aW9uKTsKKyAgICBtX3BlbmRpbmdCdW5kbGVSZXF1ZXN0cy5hcHBlbmQoV1RGTW92ZShyZXF1ZXN0
KSk7CisgICAgbWF5YmVTdGFydE5leHRBcHBCdW5kbGVSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgQ2xp
ZW50Q29ubmVjdGlvbjo6bWF5YmVTdGFydE5leHRBcHBCdW5kbGVSZXF1ZXN0KCkKK3sKKyAgICBS
RUxFQVNFX0FTU0VSVChtX3hwY0Nvbm5lY3Rpb24pOworCisgICAgaWYgKG1fY3VycmVudEJ1bmRs
ZVJlcXVlc3QgfHwgbV9wZW5kaW5nQnVuZGxlUmVxdWVzdHMuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2N1cnJlbnRCdW5kbGVSZXF1ZXN0ID0gbV9wZW5kaW5nQnVuZGxlUmVx
dWVzdHMudGFrZUZpcnN0KCk7CisgICAgbV9jdXJyZW50QnVuZGxlUmVxdWVzdC0+c3RhcnQoKTsK
K30KKwordm9pZCBDbGllbnRDb25uZWN0aW9uOjpkaWRDb21wbGV0ZUFwcEJ1bmRsZVJlcXVlc3Qo
QXBwQnVuZGxlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICAvLyBJZiBvdXIgY29ubmVjdGlvbiB3
YXMgY2xvc2VkIHRoZXJlIHNob3VsZCBiZSBubyBpbi1wcm9ncmVzcyBidW5kbGUgcmVxdWVzdHMu
CisgICAgUkVMRUFTRV9BU1NFUlQobV94cGNDb25uZWN0aW9uKTsKKworICAgIEFTU0VSVChtX2N1
cnJlbnRCdW5kbGVSZXF1ZXN0LmdldCgpID09ICZyZXF1ZXN0KTsKKyAgICBtX2N1cnJlbnRCdW5k
bGVSZXF1ZXN0ID0gbnVsbHB0cjsKKworICAgIG1heWJlU3RhcnROZXh0QXBwQnVuZGxlUmVxdWVz
dCgpOworfQorCit2b2lkIENsaWVudENvbm5lY3Rpb246OmNvbm5lY3Rpb25DbG9zZWQoKQorewor
ICAgIFJFTEVBU0VfQVNTRVJUKG1feHBjQ29ubmVjdGlvbik7CisgICAgbV94cGNDb25uZWN0aW9u
ID0gbnVsbHB0cjsKKworICAgIGlmIChtX2N1cnJlbnRCdW5kbGVSZXF1ZXN0KSB7CisgICAgICAg
IG1fY3VycmVudEJ1bmRsZVJlcXVlc3QtPmNhbmNlbCgpOworICAgICAgICBtX2N1cnJlbnRCdW5k
bGVSZXF1ZXN0ID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8
QXBwQnVuZGxlUmVxdWVzdD4+IHBlbmRpbmdCdW5kbGVSZXF1ZXN0czsKKyAgICBwZW5kaW5nQnVu
ZGxlUmVxdWVzdHMuc3dhcChtX3BlbmRpbmdCdW5kbGVSZXF1ZXN0cyk7CisgICAgZm9yIChhdXRv
JiByZXF1c3QgOiBwZW5kaW5nQnVuZGxlUmVxdWVzdHMpCisgICAgICAgIHJlcXVzdC0+Y2FuY2Vs
KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYlB1c2hECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24uaCBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2Vi
UHVzaERhZW1vbi5oCmluZGV4IDY5NWJiYjI1ZTZlZC4uOTQyZTJmNWIzNjc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24uaApAQCAtNzEsMTAgKzcxLDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIGNhblJlZ2lzdGVyRm9yTm90aWZpY2F0aW9ucyhDbGllbnRDb25uZWN0aW9uJik7
CiAKICAgICBDbGllbnRDb25uZWN0aW9uKiB0b0NsaWVudENvbm5lY3Rpb24oeHBjX2Nvbm5lY3Rp
b25fdCk7Ci0KLSAgICBIYXNoU2V0PFN0cmluZz4gbV9pbk1lbW9yeU9yaWdpblN0cmluZ3NXaXRo
UGVybWlzc2lvbkZvclRlc3Rpbmc7Ci0KLSAgICBIYXNoTWFwPHhwY19jb25uZWN0aW9uX3QsIHN0
ZDo6dW5pcXVlX3B0cjxDbGllbnRDb25uZWN0aW9uPj4gbV9jb25uZWN0aW9uTWFwOworICAgIEhh
c2hNYXA8eHBjX2Nvbm5lY3Rpb25fdCwgUmVmPENsaWVudENvbm5lY3Rpb24+PiBtX2Nvbm5lY3Rp
b25NYXA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJQdXNoRApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9XZWJQdXNoRGFlbW9uLm1tCmluZGV4IDlkNWIwN2IzYzE0ZS4uNzY1NTkwM2QyOWI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0KKysrIGIvU291
cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCkBAIC0yNiwxMCArMjYsMTIgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViUHVzaERhZW1vbi5oIgogCisjaW1wb3J0
ICJBcHBCdW5kbGVSZXF1ZXN0LmgiCiAjaW1wb3J0ICJEYWVtb25EZWNvZGVyLmgiCiAjaW1wb3J0
ICJEYWVtb25FbmNvZGVyLmgiCiAjaW1wb3J0ICJEYWVtb25VdGlsaXRpZXMuaCIKICNpbXBvcnQg
IkhhbmRsZU1lc3NhZ2UuaCIKKyNpbXBvcnQgIk1vY2tBcHBCdW5kbGVSZWdpc3RyeS5oIgogI2lt
cG9ydCAiV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oIgogCiAjaW1wb3J0IDx3dGYvQ29tcGxldGlv
bkhhbmRsZXIuaD4KQEAgLTE4MCwxMyArMTgyLDE0IEBAIHZvaWQgRGFlbW9uOjpjb25uZWN0aW9u
RXZlbnRIYW5kbGVyKHhwY19vYmplY3RfdCByZXF1ZXN0KQogdm9pZCBEYWVtb246OmNvbm5lY3Rp
b25BZGRlZCh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24pCiB7CiAgICAgUkVMRUFTRV9BU1NF
UlQoIW1fY29ubmVjdGlvbk1hcC5jb250YWlucyhjb25uZWN0aW9uKSk7Ci0gICAgbV9jb25uZWN0
aW9uTWFwLnNldChjb25uZWN0aW9uLCBXVEY6Om1ha2VVbmlxdWU8Q2xpZW50Q29ubmVjdGlvbj4o
Y29ubmVjdGlvbikpOworICAgIG1fY29ubmVjdGlvbk1hcC5zZXQoY29ubmVjdGlvbiwgQ2xpZW50
Q29ubmVjdGlvbjo6Y3JlYXRlKGNvbm5lY3Rpb24pKTsKIH0KIAogdm9pZCBEYWVtb246OmNvbm5l
Y3Rpb25SZW1vdmVkKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikKIHsKICAgICBSRUxFQVNF
X0FTU0VSVChtX2Nvbm5lY3Rpb25NYXAuY29udGFpbnMoY29ubmVjdGlvbikpOwotICAgIG1fY29u
bmVjdGlvbk1hcC5yZW1vdmUoY29ubmVjdGlvbik7CisgICAgYXV0byBjbGllbnRDb25uZWN0aW9u
ID0gbV9jb25uZWN0aW9uTWFwLnRha2UoY29ubmVjdGlvbik7CisgICAgY2xpZW50Q29ubmVjdGlv
bi0+Y29ubmVjdGlvbkNsb3NlZCgpOwogfQogCiBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEVuY29k
ZWRNZXNzYWdlJiYpPiBEYWVtb246OmNyZWF0ZVJlcGx5U2VuZGVyKE1lc3NhZ2VUeXBlIG1lc3Nh
Z2VUeXBlLCBPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+JiYgcmVxdWVzdCkKQEAgLTI1MywxMCAr
MjU2LDcgQEAgdm9pZCBEYWVtb246OnJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9u
KENsaWVudENvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGMKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGZvciBhbiBBUEkgdGVzdGluZyBjaGVja3BvaW50Ci0g
ICAgLy8gTmV4dCBzdGVwIGlzIGFjdHVhbGx5IHBlcmZvcm0gYSBwZXJzaXN0ZW50IHBlcm1pc3Np
b25zIHJlcXVlc3Qgb24gYSBwZXItcGxhdGZvcm0gYmFzaXMKLSAgICBtX2luTWVtb3J5T3JpZ2lu
U3RyaW5nc1dpdGhQZXJtaXNzaW9uRm9yVGVzdGluZy5hZGQob3JpZ2luU3RyaW5nKTsKLSAgICBy
ZXBseVNlbmRlcih0cnVlKTsKKyAgICBjb25uZWN0aW9uLT5lbnF1ZXVlQXBwQnVuZGxlUmVxdWVz
dChtYWtlVW5pcXVlPEFwcEJ1bmRsZVBlcm1pc3Npb25zUmVxdWVzdD4oKmNvbm5lY3Rpb24sIG9y
aWdpblN0cmluZywgV1RGTW92ZShyZXBseVNlbmRlcikpKTsKIH0KIAogdm9pZCBEYWVtb246Omdl
dE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKENsaWVudENvbm5lY3Rp
b24qIGNvbm5lY3Rpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mKT4mJiByZXBseVNlbmRlcikKQEAgLTI2Niw5ICsyNjYsOCBAQCB2b2lkIERhZW1vbjo6Z2V0
T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoQ2xpZW50Q29ubmVjdGlv
biogY29ubgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFRoaXMgaXMg
Zm9yIGFuIEFQSSB0ZXN0aW5nIGNoZWNrcG9pbnQKLSAgICAvLyBOZXh0IHN0ZXAgaXMgYWN0dWFs
bHkgZ2F0aGVyIHBlcnNpc3RlbnQgcGVybWlzc2lvbnMgZnJvbSB0aGUgc3lzdGVtIG9uIGEgcGVy
LXBsYXRmb3JtIGJhc2lzCi0gICAgcmVwbHlTZW5kZXIoY29weVRvVmVjdG9yKG1faW5NZW1vcnlP
cmlnaW5TdHJpbmdzV2l0aFBlcm1pc3Npb25Gb3JUZXN0aW5nKSk7CisgICAgLy8gRklYTUU6IFRo
aXMgd2lsbCBuZWVkIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9ucyBmb3IgcmVhbCB3
b3JsZCBidW5kbGVzIG9uY2UgaW1wbGVtZW50ZWQuCisgICAgcmVwbHlTZW5kZXIoTW9ja0FwcEJ1
bmRsZVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5nZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMoY29u
bmVjdGlvbi0+aG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcigpKSk7CiB9CiAKIHZvaWQgRGFl
bW9uOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKENsaWVudENvbm5lY3Rp
b24qIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIHJlcGx5U2VuZGVyKQpAQCAtMjc4LDEyICsyNzcs
NyBAQCB2b2lkIERhZW1vbjo6ZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihD
bGllbnRDb25uZWN0aW9uKiBjb25uZWN0aW9uLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgLy8gRklYTUU6IFRoaXMgaXMgZm9yIGFuIEFQSSB0ZXN0aW5nIGNoZWNrcG9pbnQKLSAgICAv
LyBOZXh0IHN0ZXAgaXMgYWN0dWFsbHkgZGVsZXRlIGFueSBwZXJzaXN0ZW50IHBlcm1pc3Npb25z
IG9uIGEgcGVyLXBsYXRmb3JtIGJhc2lzCi0gICAgaWYgKG1faW5NZW1vcnlPcmlnaW5TdHJpbmdz
V2l0aFBlcm1pc3Npb25Gb3JUZXN0aW5nLnJlbW92ZShvcmlnaW5TdHJpbmcpKQotICAgICAgICBy
ZXBseVNlbmRlcigiIik7Ci0gICAgZWxzZQotICAgICAgICByZXBseVNlbmRlcihtYWtlU3RyaW5n
KCJPcmlnaW4gIiwgb3JpZ2luU3RyaW5nLCAiIG5vdCByZWdpc3RlcmVkIGZvciBwdXNoIG9yIG5v
dGlmaWNhdGlvbnMiKSk7CisgICAgY29ubmVjdGlvbi0+ZW5xdWV1ZUFwcEJ1bmRsZVJlcXVlc3Qo
bWFrZVVuaXF1ZTxBcHBCdW5kbGVEZWxldGlvblJlcXVlc3Q+KCpjb25uZWN0aW9uLCBvcmlnaW5T
dHJpbmcsIFdURk1vdmUocmVwbHlTZW5kZXIpKSk7CiB9CiAKIHZvaWQgRGFlbW9uOjpzZXRIb3N0
QXBwQXVkaXRUb2tlbihDbGllbnRDb25uZWN0aW9uKiBjbGllbnRDb25uZWN0aW9uLCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIHRva2VuRGF0YSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbQppbmRleCA3NmJlYzY4YmY0NjYu
LjlkYTU2ZDdlNzQ3OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbQpAQCAtMTU4LDcgKzE1OCw3IEBAIHN0YXRpYyB2
b2lkIGNsZWFuVXBUZXN0V2ViUHVzaEQoTlNVUkwgKnRlbXBEaXIpCiB9CiAKIC8vIEZJWE1FOiBS
ZS1lbmFibGUgdGhpcyB0ZXN0IGZvciBNb250ZXJleSsgb25jZSB3ZWJraXQub3JnLzIzMjg1NyBp
cyByZXNvbHZlZC4KLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAw
IHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwCisjaWYgUExBVEZP
Uk0oTUFDKSAmJiAoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCB8fCBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkKIFRFU1QoV2ViUHVzaEQs
IERJU0FCTEVEX0Jhc2ljQ29tbXVuaWNhdGlvbikKICNlbHNlCiBURVNUKFdlYlB1c2hELCBCYXNp
Y0NvbW11bmljYXRpb24pCkBAIC0yNTUsNyArMjU1LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIG1h
aW5CeXRlcyA9IFIiV0VCUFVTSFJFU09VUkNFKAogKVdFQlBVU0hSRVNPVVJDRSI7CiAKIC8vIEZJ
WE1FOiBSZS1lbmFibGUgdGhpcyB0ZXN0IGZvciBNb250ZXJleSsgb25jZSB3ZWJraXQub3JnLzIz
Mjg1NyBpcyByZXNvbHZlZC4KLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwg
MTEwMDAwIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwCisjaWYg
UExBVEZPUk0oTUFDKSAmJiAoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAw
MCB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkKIFRFU1QoV2Vi
UHVzaEQsIERJU0FCTEVEX1Blcm1pc3Npb25NYW5hZ2VtZW50KQogI2Vsc2UKIFRFU1QoV2ViUHVz
aEQsIFBlcm1pc3Npb25NYW5hZ2VtZW50KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>