<?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>139866</bug_id>
          
          <creation_ts>2014-12-22 10:31:59 -0800</creation_ts>
          <short_desc>Rename a bunch of API classes and move them to Shared/API</short_desc>
          <delta_ts>2014-12-22 11:27:10 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1057394</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-12-22 10:31:59 -0800</bug_when>
    <thetext>Rename a bunch of API classes and move them to Shared/API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1057395</commentid>
    <comment_count>1</comment_count>
      <attachid>243626</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-12-22 10:32:43 -0800</bug_when>
    <thetext>Created attachment 243626
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1057396</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-22 10:34:43 -0800</bug_when>
    <thetext>Attachment 243626 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:181:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.h:69:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/C/WKPage.cpp:1480:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2348:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:699:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIUIClient.h:117:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/API/c/WKSerializedScriptValue.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:208:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/SecurityOriginData.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 10 in 48 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1057415</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-12-22 11:27:10 -0800</bug_when>
    <thetext>Committed r177639: &lt;http://trac.webkit.org/changeset/177639&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243626</attachid>
            <date>2014-12-22 10:32:43 -0800</date>
            <delta_ts>2014-12-22 11:06:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-139866-20141222103249.patch</filename>
            <type>text/plain</type>
            <size>104008</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3NjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjIxNThjYjE0YWI1NTEy
NTJhM2RkMDRhMDZmMWEyMWVjNmViMDIwOC4uMzZmNDkyZDk5MjAwNzE5YWM2NTMzZWIzZjE1MGVi
MzlkYzFiMzlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNCBAQAorMjAxNC0xMi0yMiAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBhIGJ1
bmNoIG9mIEFQSSBjbGFzc2VzIGFuZCBtb3ZlIHRoZW0gdG8gU2hhcmVkL0FQSQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5ODY2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSVNl
Y3VyaXR5T3JpZ2luLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViU2Vj
dXJpdHlPcmlnaW4uaC4KKyAgICAgICAgKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21T
dHJpbmcpOgorICAgICAgICAoQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKToKKyAgICAgICAg
KEFQSTo6U2VjdXJpdHlPcmlnaW46OnNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKEFQSTo6U2Vj
dXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSVNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oLgorICAgICAgICAoQVBJOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
YWRvcHQpOgorICAgICAgICAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXpl
KToKKyAgICAgICAgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkYXRhUmVmZXJlbmNlKToK
KyAgICAgICAgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjppbnRlcm5hbFJlcHJlc2VudGF0
aW9uKToKKyAgICAgICAgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUpOgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJu
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuLmguCisgICAgICAgIChBUEk6OlVzZXJDb250ZW50VVJMUGF0dGVybjo6Y3JlYXRlKToK
KyAgICAgICAgKEFQSTo6VXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpob3N0KToKKyAgICAgICAgKEFQ
STo6VXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpzY2hlbWUpOgorICAgICAgICAoQVBJOjpVc2VyQ29u
dGVudFVSTFBhdHRlcm46OmlzVmFsaWQpOgorICAgICAgICAoQVBJOjpVc2VyQ29udGVudFVSTFBh
dHRlcm46Om1hdGNoZXNVUkwpOgorICAgICAgICAoQVBJOjpVc2VyQ29udGVudFVSTFBhdHRlcm46
Om1hdGNoZXNTdWJkb21haW5zKToKKyAgICAgICAgKEFQSTo6VXNlckNvbnRlbnRVUkxQYXR0ZXJu
OjpwYXR0ZXJuU3RyaW5nKToKKyAgICAgICAgKEFQSTo6VXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpV
c2VyQ29udGVudFVSTFBhdHRlcm4pOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1NlY3VyaXR5
T3JpZ2luLmNwcDoKKyAgICAgICAgKFdLU2VjdXJpdHlPcmlnaW5HZXRUeXBlSUQpOgorICAgICAg
ICAoV0tTZWN1cml0eU9yaWdpbkNyZWF0ZUZyb21TdHJpbmcpOgorICAgICAgICAoV0tTZWN1cml0
eU9yaWdpbkNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIpOgorICAgICAgICAoV0tTZWN1cml0
eU9yaWdpbkNyZWF0ZSk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcDoKKyAgICAgICAgKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlR2V0VHlwZUlEKToK
KyAgICAgICAgKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlQ3JlYXRlKToKKyAgICAgICAgKFdLU2Vy
aWFsaXplZFNjcmlwdFZhbHVlQ3JlYXRlV2l0aEludGVybmFsUmVwcmVzZW50YXRpb24pOgorICAg
ICAgICAqIFNoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaDoKKyAgICAgICAgKFdlYktpdDo6
dG9Db3BpZWRBUEkpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1VzZXJDb250ZW50VVJMUGF0
dGVybi5jcHA6CisgICAgICAgIChXS1VzZXJDb250ZW50VVJMUGF0dGVybkdldFR5cGVJRCk6Cisg
ICAgICAgIChXS1VzZXJDb250ZW50VVJMUGF0dGVybkNyZWF0ZSk6CisgICAgICAgICogU2hhcmVk
L1NlY3VyaXR5T3JpZ2luRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBlcmZvcm1BUElDYWxs
YmFja1dpdGhTZWN1cml0eU9yaWdpbkRhdGFWZWN0b3IpOgorICAgICAgICAqIFNoYXJlZC9Vc2Vy
RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJEYXRhOjplbmNvZGUpOgorICAgICAgICAo
V2ViS2l0OjpVc2VyRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvVXNlck1lc3NhZ2VD
b2RlcnMuaDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lc3NhZ2VFbmNvZGVyOjpiYXNlRW5jb2Rl
KToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lc3NhZ2VEZWNvZGVyOjpiYXNlRGVjb2RlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OlVJQ2xp
ZW50OjpleGNlZWRlZERhdGFiYXNlUXVvdGEpOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6ZGVj
aWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChBUEk6
OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCk6Cisg
ICAgICAgIChBUEk6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmNw
cDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFn
ZVNldFBhZ2VVSUNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6Y29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6
VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAgICAgICog
VUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNh
dGlvbjo6V2ViTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb24uaDoKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uOjpv
cmlnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eTo6cHJvdmlkZXJEaWRVcGRhdGVOb3RpZmljYXRpb25Qb2xpY3kpOgorICAgICAgICAo
V2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkUmVtb3ZlTm90
aWZpY2F0aW9uUG9saWNpZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnQ6OmRlY2lkZVBv
bGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJQcm94eTo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbik6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6ZGlkR2V0RGF0YWJhc2VzQnlPcmlnaW4pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6ZGlkR2V0RGF0YWJhc2VPcmln
aW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmRlbGV0ZURh
dGFiYXNlV2l0aE5hbWVGb3JPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZU1h
bmFnZXJQcm94eTo6ZGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OnNldFF1b3RhRm9yT3JpZ2luKToKKyAgICAgICAgKFdl
YktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmRpZE1vZGlmeU9yaWdpbik6CisgICAgICAg
IChXZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlclByb3h5OjpkaWRNb2RpZnlEYXRhYmFzZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5Q2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHlDbGllbnQ6OmRpZE1vZGlmeU9yaWdpbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlclByb3h5Q2xpZW50OjpkaWRNb2RpZnlE
YXRhYmFzZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5Q2xp
ZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyOjpnZXRLZXlWYWx1
ZVN0b3JhZ2VPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViS2V5VmFsdWVTdG9yYWdlTWFu
YWdlcjo6Z2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYktl
eVZhbHVlU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViT3JpZ2lu
RGF0YU1hbmFnZXJQcm94eTo6ZGlkR2V0T3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OldlYk9y
aWdpbkRhdGFNYW5hZ2VyUHJveHk6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVu
SmF2YVNjcmlwdEluTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpz
Y3JpcHRWYWx1ZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpleGNl
ZWRlZERhdGFiYXNlUXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVl
c3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlQ2FjaGVNYW5hZ2VyUHJveHk6OmNsZWFyQ2FjaGVGb3JPcmlnaW4pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkZWNp
ZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaDoKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
QVBJSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6SW5qZWN0ZWRC
dW5kbGU6OlBhZ2VVSUNsaWVudDo6ZGlkUmVhY2hBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEp
OgorICAgICAgICAoQVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50OjpkaWRFeGNlZWRE
YXRhYmFzZVF1b3RhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlRnJhbWUuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZVBhZ2VVSUNsaWVudDo6ZGlkUmVhY2hBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEp
OgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6ZGlkRXhjZWVk
RGF0YWJhc2VRdW90YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xp
ZW50OjpleGNlZWRlZERhdGFiYXNlUXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVD
bGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpOgorCiAyMDE0LTEyLTIx
ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1Nd
IGF2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgY3Jhc2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJU2VjdXJpdHlPcmlnaW4uaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvQVBJU2VjdXJpdHlPcmlnaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNzU4MDI1ODA4MGJj
MTU2ZWVhMTA1YTA2ZDBlYTgzMzkyNWIyMjNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9BUElTZWN1cml0eU9yaWdpbi5oCkBAIC0wLDAgKzEsNjcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEFQSVNlY3VyaXR5T3JpZ2luX2gKKyNkZWZpbmUgQVBJU2VjdXJp
dHlPcmlnaW5faAorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbi5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFj
ZSBBUEkgeworCitjbGFzcyBTZWN1cml0eU9yaWdpbiA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8
QVBJOjpPYmplY3Q6OlR5cGU6OlNlY3VyaXR5T3JpZ2luPiB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZUZyb21TdHJpbmcoY29uc3QgV1RGOjpT
dHJpbmcmIHN0cmluZykKKyAgICB7CisgICAgICAgIHJldHVybiBjcmVhdGUoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc3RyaW5nKSk7CisgICAgfQorCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZShjb25zdCBXVEY6OlN0cmluZyYg
cHJvdG9jb2wsIGNvbnN0IFdURjo6U3RyaW5nJiBob3N0LCBpbnQgcG9ydCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBjcmVhdGUoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShwcm90b2Nv
bCwgaG9zdCwgcG9ydCkpOworICAgIH0KKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBjcmVhdGUoUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJp
dHlPcmlnaW4pCisgICAgeworICAgICAgICBpZiAoIXNlY3VyaXR5T3JpZ2luKQorICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VjdXJpdHlPcmlnaW4o
c2VjdXJpdHlPcmlnaW4pKTsKKyAgICB9CisKKyAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYg
c2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiAqbV9zZWN1cml0eU9yaWdpbjsgfQorCitw
cml2YXRlOgorICAgIFNlY3VyaXR5T3JpZ2luKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4+IHNlY3VyaXR5T3JpZ2luKQorICAgICAgICA6IG1fc2VjdXJpdHlPcmlnaW4oc2VjdXJp
dHlPcmlnaW4pCisgICAgeworICAgIH0KKworICAgIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbj4gbV9zZWN1cml0eU9yaWdpbjsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jYzA1Nzg4ODRkNDU2YmJiM2U5ODRkMzhiMGUzMWM1NzQzODRkOTQxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBUElTZXJpYWxpemVk
U2NyaXB0VmFsdWVfaAorI2RlZmluZSBBUElTZXJpYWxpemVkU2NyaXB0VmFsdWVfaAorCisjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCisKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisKK25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgOiBw
dWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IGNyZWF0ZShQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
c2VyaWFsaXplZFZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJp
YWxpemVkU2NyaXB0VmFsdWUoc2VyaWFsaXplZFZhbHVlKSk7CisgICAgfQorICAgIAorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCisgICAg
eworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxp
emVkVmFsdWUgPSBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShjb250ZXh0
LCB2YWx1ZSwgZXhjZXB0aW9uKTsKKyAgICAgICAgaWYgKCFzZXJpYWxpemVkVmFsdWUpCisgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemVk
U2NyaXB0VmFsdWUoc2VyaWFsaXplZFZhbHVlLmdldCgpKSk7CisgICAgfQorICAgIAorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gYWRvcHQoVmVjdG9yPHVpbnQ4
X3Q+JiBidWZmZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZShXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KGJ1ZmZl
cikpKTsKKyAgICB9CisgICAgCisgICAgSlNWYWx1ZVJlZiBkZXNlcmlhbGl6ZShKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fc2VyaWFsaXplZFNjcmlwdFZhbHVlLT5kZXNlcmlhbGl6ZShjb250ZXh0LCBleGNlcHRpb24p
OworICAgIH0KKworICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKCkgY29uc3Qg
eyByZXR1cm4gbV9zZXJpYWxpemVkU2NyaXB0VmFsdWUtPmRhdGEoKTsgfQorCisgICAgdm9pZCog
aW50ZXJuYWxSZXByZXNlbnRhdGlvbigpIHsgcmV0dXJuIG1fc2VyaWFsaXplZFNjcmlwdFZhbHVl
LmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgU2VyaWFsaXplZFNjcmlwdFZhbHVl
KFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2Ny
aXB0VmFsdWUpCisgICAgICAgIDogbV9zZXJpYWxpemVkU2NyaXB0VmFsdWUoc2VyaWFsaXplZFNj
cmlwdFZhbHVlKQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBtX3NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKK307CisgICAgCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElVc2VyQ29udGVu
dFVSTFBhdHRlcm4uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJVXNlckNvbnRlbnRV
UkxQYXR0ZXJuLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTBhNmE1MDY1NDQ3OTM0YWY1NWEzM2RkOTg3YTA3ZWI1
NDllMDdmZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJ
VXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuX2gKKyNkZWZpbmUgQVBJVXNlckNvbnRlbnRV
UkxQYXR0ZXJuX2gKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorCisjaW5jbHVkZSA8V2ViQ29y
ZS9VUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIFVzZXJDb250
ZW50VVJMUGF0dGVybiA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6
OlVzZXJDb250ZW50VVJMUGF0dGVybj4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFVzZXJDb250ZW50VVJMUGF0dGVybj4gY3JlYXRlKGNvbnN0IFdURjo6U3RyaW5nJiBwYXR0ZXJu
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBVc2VyQ29udGVudFVSTFBhdHRl
cm4ocGF0dGVybikpOworICAgIH0KKworICAgIGNvbnN0IFdURjo6U3RyaW5nJiBob3N0KCkgY29u
c3QgeyByZXR1cm4gbV9wYXR0ZXJuLmhvc3QoKTsgfQorICAgIGNvbnN0IFdURjo6U3RyaW5nJiBz
Y2hlbWUoKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm4uc2NoZW1lKCk7IH0KKyAgICBib29sIGlz
VmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm4uaXNWYWxpZCgpOyB9OworICAgIGJvb2wg
bWF0Y2hlc1VSTChjb25zdCBXVEY6OlN0cmluZyYgdXJsKSBjb25zdCB7IHJldHVybiBtX3BhdHRl
cm4ubWF0Y2hlcyhXZWJDb3JlOjpVUkwoV2ViQ29yZTo6UGFyc2VkVVJMU3RyaW5nLCB1cmwpKTsg
fQorICAgIGJvb2wgbWF0Y2hlc1N1YmRvbWFpbnMoKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm4u
bWF0Y2hTdWJkb21haW5zKCk7IH0KKworICAgIGNvbnN0IFdURjo6U3RyaW5nJiBwYXR0ZXJuU3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuU3RyaW5nOyB9CisKK3ByaXZhdGU6CisgICAg
ZXhwbGljaXQgVXNlckNvbnRlbnRVUkxQYXR0ZXJuKGNvbnN0IFdURjo6U3RyaW5nJiBwYXR0ZXJu
KQorICAgICAgICA6IG1fcGF0dGVybihXZWJDb3JlOjpVc2VyQ29udGVudFVSTFBhdHRlcm4ocGF0
dGVybikpCisgICAgICAgICwgbV9wYXR0ZXJuU3RyaW5nKHBhdHRlcm4pCisgICAgeworICAgIH0K
KworICAgIFdlYkNvcmU6OlVzZXJDb250ZW50VVJMUGF0dGVybiBtX3BhdHRlcm47CisgICAgV1RG
OjpTdHJpbmcgbV9wYXR0ZXJuU3RyaW5nOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCBmY2U1OTBm
NjY4ZTk3NTI3YTMyZGVkMmUyOWViMzFmYzIxNTEzYTdmLi42ZmZhZjA3MDVjYTE3OTYyZmUyMTI3
Y2U1OTk3MmJkYTQyOWRiOWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tTZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L1dLU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0yNiwyOSArMjYsMjkgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJXS1NlY3VyaXR5T3JpZ2luLmgiCiAKKyNpbmNsdWRlICJBUElTZWN1
cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldlYlNlY3Vy
aXR5T3JpZ2luLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIFdLVHlwZUlEIFdLU2Vj
dXJpdHlPcmlnaW5HZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b0FQSShXZWJTZWN1cml0eU9y
aWdpbjo6QVBJVHlwZSk7CisgICAgcmV0dXJuIHRvQVBJKEFQSTo6U2VjdXJpdHlPcmlnaW46OkFQ
SVR5cGUpOwogfQogCiBXS1NlY3VyaXR5T3JpZ2luUmVmIFdLU2VjdXJpdHlPcmlnaW5DcmVhdGVG
cm9tU3RyaW5nKFdLU3RyaW5nUmVmIHN0cmluZykKIHsKLSAgICByZXR1cm4gdG9BUEkoV2ViU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0
cmluZyh0b0ltcGwoc3RyaW5nKS0+c3RyaW5nKCkpKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0
b0FQSShBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46
OmNyZWF0ZUZyb21TdHJpbmcodG9JbXBsKHN0cmluZyktPnN0cmluZygpKSkubGVha1JlZigpKTsK
IH0KIAogV0tTZWN1cml0eU9yaWdpblJlZiBXS1NlY3VyaXR5T3JpZ2luQ3JlYXRlRnJvbURhdGFi
YXNlSWRlbnRpZmllcihXS1N0cmluZ1JlZiBpZGVudGlmaWVyKQogewotICAgIHJldHVybiB0b0FQ
SShXZWJTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVh
dGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKCh0b0ltcGwoaWRlbnRpZmllciktPnN0cmluZygpKSkp
LmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcigo
dG9JbXBsKGlkZW50aWZpZXIpLT5zdHJpbmcoKSkpKS5sZWFrUmVmKCkpOwogfQogCiBXS1NlY3Vy
aXR5T3JpZ2luUmVmIFdLU2VjdXJpdHlPcmlnaW5DcmVhdGUoV0tTdHJpbmdSZWYgcHJvdG9jb2ws
IFdLU3RyaW5nUmVmIGhvc3QsIGludCBwb3J0KQogewotICAgIFJlZlB0cjxXZWJTZWN1cml0eU9y
aWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBXZWJTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRvSW1wbChw
cm90b2NvbCktPnN0cmluZygpLCB0b0ltcGwoaG9zdCktPnN0cmluZygpLCBwb3J0KTsKKyAgICBS
ZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUodG9JbXBsKHByb3RvY29sKS0+c3RyaW5nKCksIHRvSW1wbChob3N0KS0+
c3RyaW5nKCksIHBvcnQpOwogICAgIHJldHVybiB0b0FQSShzZWN1cml0eU9yaWdpbi5yZWxlYXNl
KCkubGVha1JlZigpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9jL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggZjQ1YzM4OGU5NWQxZDg2MTQ5
MTdmOTkxMTBjZmUxNjgxZDQ2YzFlZi4uZWMyYWQ5NmY1MGZlNmI0NWY1MTBhZTNlOGI5MGEwNmVk
MjQ4MzJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0yNywyNSArMjcsMjUgQEAKICNpbmNsdWRlICJX
S1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIldLU2VyaWFsaXplZFNjcmlwdFZh
bHVlUHJpdmF0ZS5oIgogCisjaW5jbHVkZSAiQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIFdLVHlwZUlEIFdLU2VyaWFsaXplZFNj
cmlwdFZhbHVlR2V0VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gdG9BUEkoV2ViU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpBUElUeXBlKTsKKyAgICByZXR1cm4gdG9BUEkoQVBJOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OkFQSVR5cGUpOwogfQogCiBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBXS1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUNyZWF0ZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJl
ZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAgIFJlZlB0cjxXZWJTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKGNvbnRleHQsIHZhbHVlLCBleGNlcHRpb24pOworICAgIFJlZlB0cjxBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gQVBJOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZShjb250ZXh0LCB2YWx1ZSwgZXhjZXB0aW9uKTsKICAgICByZXR1cm4g
dG9BUEkoc2VyaWFsaXplZFZhbHVlLnJlbGVhc2UoKS5sZWFrUmVmKCkpOwogfQogCiBXS1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZVJlZiBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNyZWF0ZVdpdGhJbnRl
cm5hbFJlcHJlc2VudGF0aW9uKHZvaWQqIGludGVybmFsUmVwcmVzZW50YXRpb24pCiB7Ci0gICAg
UmVmUHRyPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gV2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKj4oaW50ZXJuYWxSZXByZXNlbnRhdGlvbikpOworICAgIFJlZlB0cjxBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gQVBJOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0aWNfY2FzdDxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUqPihpbnRlcm5hbFJlcHJlc2VudGF0aW9uKSk7CiAgICAgcmV0dXJuIHRvQVBJKHNlcmlh
bGl6ZWRWYWx1ZS5yZWxlYXNlKCkubGVha1JlZigpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCmluZGV4IDVhNjY1YTM0ZmVhZTMxNzkzZmQ5
MjdiM2NjYzllYzU5ZmQ3NTE3Y2EuLjY1Nzg1M2M5NDI2MmVmMzRiOTNmOTkwODdhZGU0YTViZjU1
OTBhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQ
SUNhc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0
LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFQSUVycm9yLmgiCiAjaW5jbHVkZSAi
QVBJTnVtYmVyLmgiCisjaW5jbHVkZSAiQVBJU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJB
UElTZXNzaW9uLmgiCiAjaW5jbHVkZSAiQVBJU3RyaW5nLmgiCiAjaW5jbHVkZSAiQVBJVVJMLmgi
CkBAIC00OCw3ICs0OSw2IEBACiAjaW5jbHVkZSAiV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZS5o
IgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViRmluZE9wdGlvbnMuaCIKLSNp
bmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1l
bnVJdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KQEAgLTY0LDcgKzY0LDEwIEBAIGNsYXNzIEFycmF5Owog
Y2xhc3MgRGF0YTsKIGNsYXNzIFBvaW50OwogY2xhc3MgUmVjdDsKK2NsYXNzIFNlY3VyaXR5T3Jp
Z2luOworY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogY2xhc3MgU2l6ZTsKK2NsYXNzIFVz
ZXJDb250ZW50VVJMUGF0dGVybjsKIGNsYXNzIFdlYkFyY2hpdmU7CiBjbGFzcyBXZWJBcmNoaXZl
UmVzb3VyY2U7CiB9CkBAIC03OSw5ICs4Miw2IEBAIGNsYXNzIFdlYkNvbm5lY3Rpb247CiBjbGFz
cyBXZWJDb250ZXh0TWVudUl0ZW07CiBjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBX
ZWJJbWFnZTsKLWNsYXNzIFdlYlNlY3VyaXR5T3JpZ2luOwotY2xhc3MgV2ViU2VyaWFsaXplZFNj
cmlwdFZhbHVlOwotY2xhc3MgV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuOwogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBBUElUeXBlPiBzdHJ1Y3QgQVBJVHlwZUluZm8geyB9OwogdGVtcGxhdGU8dHlwZW5h
bWUgSW1wbFR5cGU+IHN0cnVjdCBJbXBsVHlwZUluZm8geyB9OwpAQCAtMTA0LDggKzEwNCw4IEBA
IFdLX0FERF9BUElfTUFQUElORyhXS0ltYWdlUmVmLCBXZWJJbWFnZSkKIFdLX0FERF9BUElfTUFQ
UElORyhXS011dGFibGVEaWN0aW9uYXJ5UmVmLCBNdXRhYmxlRGljdGlvbmFyeSkKIFdLX0FERF9B
UElfTUFQUElORyhXS1BvaW50UmVmLCBBUEk6OlBvaW50KQogV0tfQUREX0FQSV9NQVBQSU5HKFdL
UmVjdFJlZiwgQVBJOjpSZWN0KQotV0tfQUREX0FQSV9NQVBQSU5HKFdLU2VjdXJpdHlPcmlnaW5S
ZWYsIFdlYlNlY3VyaXR5T3JpZ2luKQotV0tfQUREX0FQSV9NQVBQSU5HKFdLU2VyaWFsaXplZFNj
cmlwdFZhbHVlUmVmLCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUpCitXS19BRERfQVBJX01BUFBJ
TkcoV0tTZWN1cml0eU9yaWdpblJlZiwgQVBJOjpTZWN1cml0eU9yaWdpbikKK1dLX0FERF9BUElf
TUFQUElORyhXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiwgQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUpCiBXS19BRERfQVBJX01BUFBJTkcoV0tTaXplUmVmLCBBUEk6OlNpemUpCiBXS19BRERf
QVBJX01BUFBJTkcoV0tTdHJpbmdSZWYsIEFQSTo6U3RyaW5nKQogV0tfQUREX0FQSV9NQVBQSU5H
KFdLVHlwZVJlZiwgQVBJOjpPYmplY3QpCkBAIC0xMTMsNyArMTEzLDcgQEAgV0tfQUREX0FQSV9N
QVBQSU5HKFdLVUludDY0UmVmLCBBUEk6OlVJbnQ2NCkKIFdLX0FERF9BUElfTUFQUElORyhXS1VS
TFJlZiwgQVBJOjpVUkwpCiBXS19BRERfQVBJX01BUFBJTkcoV0tVUkxSZXF1ZXN0UmVmLCBBUEk6
OlVSTFJlcXVlc3QpCiBXS19BRERfQVBJX01BUFBJTkcoV0tVUkxSZXNwb25zZVJlZiwgQVBJOjpV
UkxSZXNwb25zZSkKLVdLX0FERF9BUElfTUFQUElORyhXS1VzZXJDb250ZW50VVJMUGF0dGVyblJl
ZiwgV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlckNv
bnRlbnRVUkxQYXR0ZXJuUmVmLCBBUEk6OlVzZXJDb250ZW50VVJMUGF0dGVybikKIFdLX0FERF9B
UElfTUFQUElORyhXS1Nlc3Npb25SZWYsIEFQSTo6U2Vzc2lvbikKIAogdGVtcGxhdGU8PiBzdHJ1
Y3QgQVBJVHlwZUluZm88V0tNdXRhYmxlQXJyYXlSZWY+IHsgdHlwZWRlZiBBUEk6OkFycmF5KiBJ
bXBsVHlwZTsgfTsKQEAgLTIxOSw3ICsyMTksNyBAQCBpbmxpbmUgV0tTZWN1cml0eU9yaWdpblJl
ZiB0b0NvcGllZEFQSShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewogICAgIGlm
ICghb3JpZ2luKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gdG9BUEkoV2ViU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShvcmlnaW4pLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKEFQ
STo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShvcmlnaW4pLmxlYWtSZWYoKSk7CiB9CiAKIC8qIEdl
b21ldHJ5IGNvbnZlcnNpb25zICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvV0tVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9jL1dLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAppbmRleCBmNmEyMDRhYjZkYWFkODRk
ZjUyMzE5M2YzZThmZTM2MzJmYjhlYWJiLi45ZjliODM2MGI1YWM2ZjBhYzliN2UwYzNiYjczNDdl
MDQwYTE4MGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVc2Vy
Q29udGVudFVSTFBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKQEAgLTI2LDIwICsyNiwyMCBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIldLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgiCiAKKyNpbmNs
dWRlICJBUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIK
ICNpbmNsdWRlICJXS1N0cmluZy5oIgotI2luY2x1ZGUgIldlYlVzZXJDb250ZW50VVJMUGF0dGVy
bi5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBXS1R5cGVJRCBXS1VzZXJDb250ZW50
VVJMUGF0dGVybkdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKFdlYlVzZXJDb250ZW50
VVJMUGF0dGVybjo6QVBJVHlwZSk7CisgICAgcmV0dXJuIHRvQVBJKEFQSTo6VXNlckNvbnRlbnRV
UkxQYXR0ZXJuOjpBUElUeXBlKTsKIH0KIAogV0tVc2VyQ29udGVudFVSTFBhdHRlcm5SZWYgV0tV
c2VyQ29udGVudFVSTFBhdHRlcm5DcmVhdGUoV0tTdHJpbmdSZWYgcGF0dGVyblJlZikKIHsKLSAg
ICBSZWZQdHI8V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuPiB1c2VyQ29udGVudFVSTFBhdHRlcm4g
PSBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46OmNyZWF0ZSh0b0ltcGwocGF0dGVyblJlZiktPnN0
cmluZygpKTsKKyAgICBSZWZQdHI8QVBJOjpVc2VyQ29udGVudFVSTFBhdHRlcm4+IHVzZXJDb250
ZW50VVJMUGF0dGVybiA9IEFQSTo6VXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpjcmVhdGUodG9JbXBs
KHBhdHRlcm5SZWYpLT5zdHJpbmcoKSk7CiAgICAgcmV0dXJuIHRvQVBJKHVzZXJDb250ZW50VVJM
UGF0dGVybi5yZWxlYXNlKCkubGVha1JlZigpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAppbmRleCAyNzMyMmE4OGEwNWY5NDEyN2FiODU4N2M2
OWFlNDIzNDEzY2RhZTE1Li4yOGE3OTQ5MWJjODM4Y2U1NDhkNGU3OTFlMjBiNzIxYWUzZGU5MGYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2VjdXJpdHlPcmlnaW5EYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcApAQCAt
MjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1
ZGUgIkFQSVNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBwZXJmb3Jt
QVBJQ2FsbGJhY2tXaXRoU2VjdXJpdHlPcmlnaW5EYXRhVmVjdG9yKGNvbnN0IFZlY3RvcjxTZWN1
cml0eU9yaWdpbkQKICAgICBzZWN1cml0eU9yaWdpbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShv
cmlnaW5EYXRhcy5zaXplKCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW5EYXRhIDog
b3JpZ2luRGF0YXMpIHsKLSAgICAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiBvcmlnaW4gPSBXZWJT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbkRhdGEucHJvdG9jb2wsIG9yaWdpbkRhdGEuaG9z
dCwgb3JpZ2luRGF0YS5wb3J0KTsKKyAgICAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiBvcmlnaW4g
PSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUob3JpZ2luRGF0YS5wcm90b2NvbCwgb3JpZ2lu
RGF0YS5ob3N0LCBvcmlnaW5EYXRhLnBvcnQpOwogICAgICAgICBpZiAoIW9yaWdpbikKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBzZWN1cml0eU9yaWdpbnMudW5jaGVja2VkQXBwZW5k
KFdURjo6bW92ZShvcmlnaW4pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9V
c2VyRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlckRhdGEuY3BwCmluZGV4IDBh
ZTU2ZTE3NDllOTExMGE5MjNlZWEyMTdhN2ZmZjQzYzg5YzIxMzUuLmZlYzFmZDcwZDVmNmMwMWVh
ZGFjN2ZiMzk4ODhmNTZhMjhiZjQ0YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Vc2VyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJEYXRhLmNwcApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkFQSUZyYW1lSGFuZGxlLmgiCiAjaW5jbHVkZSAi
QVBJR2VvbWV0cnkuaCIKICNpbmNsdWRlICJBUElOdW1iZXIuaCIKKyNpbmNsdWRlICJBUElTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJBUElTdHJpbmcuaCIKICNpbmNsdWRlICJB
UElVUkwuaCIKICNpbmNsdWRlICJBUElVUkxSZXF1ZXN0LmgiCkBAIC0zOSw3ICs0MCw2IEBACiAj
aW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJBcmd1bWVudEVuY29kZXIuaCIK
ICNpbmNsdWRlICJNdXRhYmxlRGljdGlvbmFyeS5oIgotI2luY2x1ZGUgIldlYlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMTYxLDcgKzE2MSw3IEBA
IHZvaWQgVXNlckRhdGE6OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29u
c3QgQVBJOjpPYmplY3QmIG9iamVjdCkKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEFQSTo6
T2JqZWN0OjpUeXBlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6IHsKLSAgICAgICAgYXV0byYgc2Vy
aWFsaXplZFNjcmlwdFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViU2VyaWFsaXplZFNjcmlw
dFZhbHVlJj4ob2JqZWN0KTsKKyAgICAgICAgYXV0byYgc2VyaWFsaXplZFNjcmlwdFZhbHVlID0g
c3RhdGljX2Nhc3Q8Y29uc3QgQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmPihvYmplY3QpOwog
ICAgICAgICBlbmNvZGVyIDw8IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5kYXRhUmVmZXJlbmNlKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTI5NSw3ICsyOTUsNyBAQCBib29sIFVzZXJEYXRh
OjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxBUEk6Ok9iamVj
dD4mIHJlc3VsdAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGF1dG8gdmVj
dG9yID0gZGF0YVJlZmVyZW5jZS52ZWN0b3IoKTsKLSAgICAgICAgcmVzdWx0ID0gV2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjphZG9wdCh2ZWN0b3IpOworICAgICAgICByZXN1bHQgPSBBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQodmVjdG9yKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlck1lc3NhZ2VDb2RlcnMu
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Vc2VyTWVzc2FnZUNvZGVycy5oCmluZGV4IDI0NTFl
ZTE3MTk4YzQ0OWNhZGI0ZGExZjMyMjQ1MDdlY2Q2NDAwZDguLmM0M2VhNmQxYzQ1NThmNzY2MTQ0
NTM2ZTAwMzBiMjk5ZTA5MjI5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9V
c2VyTWVzc2FnZUNvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Vc2VyTWVzc2Fn
ZUNvZGVycy5oCkBAIC0zMSwxMCArMzEsMTIgQEAKICNpbmNsdWRlICJBUElFcnJvci5oIgogI2lu
Y2x1ZGUgIkFQSUdlb21ldHJ5LmgiCiAjaW5jbHVkZSAiQVBJTnVtYmVyLmgiCisjaW5jbHVkZSAi
QVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiQVBJU3RyaW5nLmgiCiAjaW5j
bHVkZSAiQVBJVVJMLmgiCiAjaW5jbHVkZSAiQVBJVVJMUmVxdWVzdC5oIgogI2luY2x1ZGUgIkFQ
SVVSTFJlc3BvbnNlLmgiCisjaW5jbHVkZSAiQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgiCiAj
aW5jbHVkZSAiQXJndW1lbnREZWNvZGVyLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRFbmNvZGVyLmgi
CiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgpAQCAtNDUsOCArNDcsNiBAQAogI2luY2x1ZGUg
IldlYkltYWdlLmgiCiAjaW5jbHVkZSAiV2ViUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJXZWJS
ZW5kZXJPYmplY3QuaCIKLSNpbmNsdWRlICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNp
bmNsdWRlICJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKQEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6IHsKLSAgICAgICAgICAgIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2NyaXB0
VmFsdWUgPSBzdGF0aWNfY2FzdDxXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUqPihtX3Jvb3QpOwor
ICAgICAgICAgICAgQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNjcmlwdFZhbHVlID0gc3Rh
dGljX2Nhc3Q8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqPihtX3Jvb3QpOwogICAgICAgICAg
ICAgZW5jb2RlciA8PCBzY3JpcHRWYWx1ZS0+ZGF0YVJlZmVyZW5jZSgpOwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTE5MSw3ICsxOTEsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBjYXNlIEFQSTo6T2JqZWN0
OjpUeXBlOjpVc2VyQ29udGVudFVSTFBhdHRlcm46IHsKLSAgICAgICAgICAgIFdlYlVzZXJDb250
ZW50VVJMUGF0dGVybiogdXJsUGF0dGVybiA9IHN0YXRpY19jYXN0PFdlYlVzZXJDb250ZW50VVJM
UGF0dGVybio+KG1fcm9vdCk7CisgICAgICAgICAgICBBUEk6OlVzZXJDb250ZW50VVJMUGF0dGVy
biogdXJsUGF0dGVybiA9IHN0YXRpY19jYXN0PEFQSTo6VXNlckNvbnRlbnRVUkxQYXR0ZXJuKj4o
bV9yb290KTsKICAgICAgICAgICAgIGVuY29kZXIgPDwgdXJsUGF0dGVybi0+cGF0dGVyblN0cmlu
ZygpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTMyNyw3ICszMjcs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yID0gZGF0YVJlZmVyZW5jZS52ZWN0
b3IoKTsKLSAgICAgICAgICAgIGNvZGVyLm1fcm9vdCA9IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6YWRvcHQodmVjdG9yKTsKKyAgICAgICAgICAgIGNvZGVyLm1fcm9vdCA9IEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlOjphZG9wdCh2ZWN0b3IpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZTo6RG91YmxlOiB7CkBAIC00OTcs
NyArNDk3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgU3RyaW5nIHN0cmluZzsKICAgICAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RyaW5nKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICBjb2Rlci5tX3Jvb3QgPSBXZWJVc2VyQ29udGVudFVSTFBhdHRl
cm46OmNyZWF0ZShzdHJpbmcpOworICAgICAgICAgICAgY29kZXIubV9yb290ID0gQVBJOjpVc2Vy
Q29udGVudFVSTFBhdHRlcm46OmNyZWF0ZShzdHJpbmcpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZTo6SW1hZ2U6IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJTZWN1cml0eU9yaWdpbi5oIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlNlY3VyaXR5T3JpZ2luLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDU0YjcwODM1Y2NmNzRhZDVhNzdhMjk2NzdlY2EzM2Q5MWU4NzQzNGEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlNlY3VyaXR5T3JpZ2luLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJTZWN1cml0eU9yaWdpbl9oCi0jZGVmaW5lIFdlYlNl
Y3VyaXR5T3JpZ2luX2gKLQotI2luY2x1ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvU2VjdXJpdHlPcmlnaW4uaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViU2VjdXJpdHlPcmlnaW4gOiBwdWJsaWMgQVBJOjpP
YmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpTZWN1cml0eU9yaWdpbj4gewotcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNlY3VyaXR5T3JpZ2luPiBjcmVhdGVGcm9tU3RyaW5n
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZShXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhzdHJpbmcpKTsKLSAgICB9Ci0K
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IFN0
cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgaG9zdCwgaW50IHBvcnQpCi0gICAgewotICAg
ICAgICByZXR1cm4gY3JlYXRlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocHJvdG9j
b2wsIGhvc3QsIHBvcnQpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTZWN1
cml0eU9yaWdpbj4gY3JlYXRlKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IHNl
Y3VyaXR5T3JpZ2luKQotICAgIHsKLSAgICAgICAgaWYgKCFzZWN1cml0eU9yaWdpbikKLSAgICAg
ICAgICAgIHJldHVybiAwOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlNlY3VyaXR5
T3JpZ2luKHNlY3VyaXR5T3JpZ2luKSk7Ci0gICAgfQotCi0gICAgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4mIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gKm1fc2VjdXJpdHlPcmlnaW47
IH0KLQotcHJpdmF0ZToKLSAgICBXZWJTZWN1cml0eU9yaWdpbihQYXNzUmVmUHRyPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbikKLSAgICAgICAgOiBtX3NlY3VyaXR5T3Jp
Z2luKHNlY3VyaXR5T3JpZ2luKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhZWRlZTdlMjY2
YzZhYWIwNGU3NDZlZGFiZWMzOGU4YzhmOGM1MDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlX2gKLSNkZWZpbmUgV2ViU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlX2gKLQotI2luY2x1ZGUgIkFQSU9iamVjdC5oIgotCi0jaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3Mg
V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9i
amVjdDo6VHlwZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoUGFzc1JlZlB0cjxX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKHNlcmlh
bGl6ZWRWYWx1ZSkpOwotICAgIH0KLSAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJl
ZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQotICAgIHsKLSAgICAgICAgUmVmUHRyPFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoY29udGV4dCwgdmFsdWUsIGV4Y2VwdGlvbik7
Ci0gICAgICAgIGlmICghc2VyaWFsaXplZFZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKHNlcmlh
bGl6ZWRWYWx1ZS5nZXQoKSkpOwotICAgIH0KLSAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxX
ZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGFkb3B0KFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJTZXJpYWxpemVkU2NyaXB0VmFs
dWUoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChidWZmZXIpKSk7Ci0gICAg
fQotICAgIAotICAgIEpTVmFsdWVSZWYgZGVzZXJpYWxpemUoSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS0+ZGVzZXJpYWxpemUoY29udGV4dCwgZXhjZXB0aW9uKTsKLSAgICB9Ci0K
LSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2VyaWFsaXplZFNjcmlwdFZhbHVlLT5kYXRhKCk7IH0KLQotICAgIHZvaWQqIGludGVybmFsUmVw
cmVzZW50YXRpb24oKSB7IHJldHVybiBtX3NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5nZXQoKTsgfQot
Ci1wcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShQYXNzUmVm
UHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZhbHVl
KQotICAgICAgICA6IG1fc2VyaWFsaXplZFNjcmlwdFZhbHVlKHNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gbV9zZXJpYWxpemVkU2NyaXB0VmFsdWU7Ci19OwotICAgIAotfQotCi0jZW5kaWYgLy8g
V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MzQ4Y2IyMTJjYTJiNTk5MjhhZjEwZDA5MGRhZTFkY2MyOTlhNTVjOS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
VXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmbmRlZiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm5faAotI2RlZmluZSBX
ZWJVc2VyQ29udGVudFVSTFBhdHRlcm5faAotCi0jaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0KLSNp
bmNsdWRlIDxXZWJDb3JlL1VSTC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotY2xhc3MgV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIDogcHVibGljIEFQSTo6T2JqZWN0SW1w
bDxBUEk6Ok9iamVjdDo6VHlwZTo6VXNlckNvbnRlbnRVUkxQYXR0ZXJuPiB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuPiBjcmVhdGUoY29u
c3QgU3RyaW5nJiBwYXR0ZXJuKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBX
ZWJVc2VyQ29udGVudFVSTFBhdHRlcm4ocGF0dGVybikpOwotICAgIH0KLQotICAgIGNvbnN0IFN0
cmluZyYgaG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5ob3N0KCk7IH0KLSAgICBjb25z
dCBTdHJpbmcmIHNjaGVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5zY2hlbWUoKTsgfQot
ICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5pc1ZhbGlkKCk7IH07
Ci0gICAgYm9vbCBtYXRjaGVzVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdCB7IHJldHVybiBt
X3BhdHRlcm4ubWF0Y2hlcyhXZWJDb3JlOjpVUkwoV2ViQ29yZTo6UGFyc2VkVVJMU3RyaW5nLCB1
cmwpKTsgfQotICAgIGJvb2wgbWF0Y2hlc1N1YmRvbWFpbnMoKSBjb25zdCB7IHJldHVybiBtX3Bh
dHRlcm4ubWF0Y2hTdWJkb21haW5zKCk7IH0KLQotICAgIGNvbnN0IFN0cmluZyYgcGF0dGVyblN0
cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVyblN0cmluZzsgfQotCi1wcml2YXRlOgotICAg
IGV4cGxpY2l0IFdlYlVzZXJDb250ZW50VVJMUGF0dGVybihjb25zdCBTdHJpbmcmIHBhdHRlcm4p
Ci0gICAgICAgIDogbV9wYXR0ZXJuKFdlYkNvcmU6OlVzZXJDb250ZW50VVJMUGF0dGVybihwYXR0
ZXJuKSkKLSAgICAgICAgLCBtX3BhdHRlcm5TdHJpbmcocGF0dGVybikKLSAgICB7Ci0gICAgfQot
Ci0gICAgV2ViQ29yZTo6VXNlckNvbnRlbnRVUkxQYXR0ZXJuIG1fcGF0dGVybjsKLSAgICBTdHJp
bmcgbV9wYXR0ZXJuU3RyaW5nOwotfTsKLQotfQotCi0jZW5kaWYgLy8gV2ViVXNlckNvbnRlbnRV
UkxQYXR0ZXJuX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJ
VUlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaApp
bmRleCBjODRkNjdhNmRjNzc0OTY1NmQzZDI2MDE5ZWVkYWUyNDVjOTVkMjY4Li4yYTBmOTEyNmVh
Zjc2MjY0OGQ1YjI2Y2EzZDE3NDZiZmFhZWUxZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9BUElVSUNsaWVudC5oCkBAIC01Niw3ICs1Niw2IEBAIGNsYXNzIFdlYkZyYW1lUHJv
eHk7CiBjbGFzcyBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzOwogY2xhc3MgV2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKLWNsYXNzIFdlYlNlY3VyaXR5
T3JpZ2luOwogc3RydWN0IE5hdmlnYXRpb25BY3Rpb25EYXRhOwogfQogCkBAIC02NCw2ICs2Myw3
IEBAIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBEYXRhOwogY2xhc3MgT2JqZWN0OworY2xhc3Mg
U2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIFVJQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTExNCw3ICsx
MTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZERyYXcoV2ViS2l0OjpXZWJQYWdl
UHJveHkqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFNjcm9sbChXZWJLaXQ6OldlYlBh
Z2VQcm94eSopIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGV4Y2VlZGVkRGF0YWJhc2VRdW90YShX
ZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIFdlYktpdDo6V2Vi
U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwg
dW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRRdW90YSwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNp
Z25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZywgc3RkOjpmdW5jdGlvbjx2b2lkICh1
bnNpZ25lZCBsb25nIGxvbmcpPiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB2aXJ0dWFsIHZvaWQg
ZXhjZWVkZWREYXRhYmFzZVF1b3RhKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJG
cmFtZVByb3h5KiwgU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRRdW90YSwgdW5zaWduZWQgbG9u
ZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZywgc3RkOjpmdW5j
dGlvbjx2b2lkICh1bnNpZ25lZCBsb25nIGxvbmcpPiBjb21wbGV0aW9uSGFuZGxlcikKICAgICB7
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGN1cnJlbnRRdW90YSk7CiAgICAgfQpAQCAtMTI1
LDkgKzEyNSw5IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgcnVuT3BlblBh
bmVsKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgV2ViS2l0
OjpXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzKiwgV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclByb3h5KikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZGVjaWRlUG9s
aWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSos
IFdlYktpdDo6V2ViRnJhbWVQcm94eSosIFdlYktpdDo6V2ViU2VjdXJpdHlPcmlnaW4qLCBXZWJL
aXQ6Okdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eSopIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgV2ViS2l0
OjpXZWJTZWN1cml0eU9yaWdpbiYsIFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQ
cm94eSYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZv
ck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2Vi
S2l0OjpXZWJTZWN1cml0eU9yaWdpbiosIFdlYktpdDo6Tm90aWZpY2F0aW9uUGVybWlzc2lvblJl
cXVlc3QqKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBkZWNpZGVQb2xpY3lG
b3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2Vi
S2l0OjpXZWJGcmFtZVByb3h5KiwgU2VjdXJpdHlPcmlnaW4qLCBXZWJLaXQ6Okdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RQcm94eSopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgU2VjdXJpdHlPcmlnaW4mLCBXZWJL
aXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmKSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVx
dWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFNlY3VyaXR5T3JpZ2luKiwgV2ViS2l0OjpOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdCopIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBQ
cmludGluZy4KICAgICB2aXJ0dWFsIGZsb2F0IGhlYWRlckhlaWdodChXZWJLaXQ6OldlYlBhZ2VQ
cm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSopIHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uY3BwCmluZGV4IDc4YjA5
ZTA5ZTdmYzRhOGZlNTdlODk0OTU1YjEwOWY4MzRhNGJjMTAuLjNkMTgwNTczMGQwNDZiZTNjMWEz
OTE1ZTA5YTFhMDgwYjM0M2ZlM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS05vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLTm90aWZpY2F0aW9uLmNwcApAQCAtMjYsOSArMjYsOSBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIldLTm90aWZpY2F0aW9uLmgiCiAKKyNpbmNsdWRlICJBUElTZWN1
cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYk5vdGlm
aWNhdGlvbi5oIgotI2luY2x1ZGUgIldlYlNlY3VyaXR5T3JpZ2luLmgiCiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAK
aW5kZXggZjgxMTBkMzRkNzIwZTE1NmMzODMwMDZjZjYxYTZhMGJhYTIxZmUxZS4uMzhmMGFjNzVl
NDVmNWJjOWUyNjE0MmE2Nzg3ZmU0ZGZjM2M3YzI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTE0NzcsNyArMTQ3Nyw3IEBAIHZvaWQgV0tQYWdlU2V0
UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2Uq
IHdrQ2xpZW50CiAgICAgICAgICAgICBtX2NsaWVudC5wYWdlRGlkU2Nyb2xsKHRvQVBJKHBhZ2Up
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVh
bCB2b2lkIGV4Y2VlZGVkRGF0YWJhc2VRdW90YShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1l
UHJveHkqIGZyYW1lLCBXZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIGRh
dGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpc3BsYXlOYW1lLCB1bnNpZ25lZCBs
b25nIGxvbmcgY3VycmVudFF1b3RhLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudE9yaWdpblVz
YWdlLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVuc2lnbmVkIGxv
bmcgbG9uZyBleHBlY3RlZFVzYWdlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHVuc2lnbmVkIGxvbmcg
bG9uZyk+IGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQorICAgICAgICB2aXJ0dWFsIHZvaWQg
ZXhjZWVkZWREYXRhYmFzZVF1b3RhKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSog
ZnJhbWUsIEFQSTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZU5hbWUsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBs
b25nIGN1cnJlbnRRdW90YSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRPcmlnaW5Vc2FnZSwg
dW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1bnNpZ25lZCBsb25nIGxv
bmcgZXhwZWN0ZWRVc2FnZSwgc3RkOjpmdW5jdGlvbjx2b2lkICh1bnNpZ25lZCBsb25nIGxvbmcp
PiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYg
KCFtX2NsaWVudC5leGNlZWRlZERhdGFiYXNlUXVvdGEpIHsKICAgICAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihjdXJyZW50UXVvdGEpOwpAQCAtMTQ5Niw3ICsxNDk2LDcgQEAgdm9pZCBX
S1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xp
ZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAK
LSAgICAgICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3QoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgV2ViU2Vj
dXJpdHlPcmlnaW4qIG9yaWdpbiwgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5KiBw
ZXJtaXNzaW9uUmVxdWVzdCkgb3ZlcnJpZGUKKyAgICAgICAgdmlydHVhbCBib29sIGRlY2lkZVBv
bGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5KiBwYWdlLCBX
ZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJOjpTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkqIHBlcm1pc3Npb25SZXF1ZXN0KSBvdmVycmlkZQog
ICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvckdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMTUwNSw3ICsxNTA1LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVm
IHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBib29sIGRlY2lkZVBv
bGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2Vi
RnJhbWVQcm94eSYgZnJhbWUsIFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJveHkmIHBlcm1pc3Npb25SZXF1ZXN0KSBvdmVycmlkZQorICAgICAg
ICB2aXJ0dWFsIGJvb2wgZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qo
V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgQVBJOjpTZWN1cml0eU9y
aWdpbiYgb3JpZ2luLCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5JiBwZXJtaXNzaW9u
UmVxdWVzdCkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5k
ZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCkKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xNTE0LDcgKzE1MTQsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VV
SUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0Ns
aWVudAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0
dWFsIGJvb2wgZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2Vi
UGFnZVByb3h5KiBwYWdlLCBXZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdCogcGVybWlzc2lvblJlcXVlc3QpIG92ZXJyaWRlCisgICAgICAgIHZp
cnR1YWwgYm9vbCBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdChX
ZWJQYWdlUHJveHkqIHBhZ2UsIEFQSTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QqIHBlcm1pc3Npb25SZXF1ZXN0KSBvdmVycmlkZQogICAgICAg
ICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlv
blBlcm1pc3Npb25SZXF1ZXN0KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggY2Ix
N2Q5NTE0ZjdlMmExZDVmZWMwNzE0Yjk4ZmYzMjkzM2I1NGU4My4uZjcyOWI1MzlkMmUwZGU1MzAy
MzFjMWIyMjVlNzQyMjA0MzRiMTQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBXS19BUElfRU5B
QkxFRAogCiAjaW1wb3J0ICJBUElGb3JtQ2xpZW50LmgiCisjaW1wb3J0ICJBUElTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCIKICNpbXBvcnQgIkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCIK
ICNpbXBvcnQgIkZpbmRDbGllbnQuaCIKICNpbXBvcnQgIkxlZ2FjeVNlc3Npb25TdGF0ZUNvZGlu
Zy5oIgpAQCAtNjUsNyArNjYsNiBAQAogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0
ICJXZWJQcmVmZXJlbmNlc0tleXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgotI2lt
cG9ydCAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW1wb3J0ICJfV0tGaW5kRGVsZWdh
dGUuaCIKICNpbXBvcnQgIl9XS0Zvcm1EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnlJbnRlcm5hbC5oIgpAQCAtNTgzLDcgKzU4Myw3IEBAIHN0YXRpYyBXS0Vycm9y
Q29kZSBjYWxsYmFja0Vycm9yQ29kZShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3Ip
CiB7CiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0p
OwogCi0gICAgX3BhZ2UtPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShqYXZhU2NyaXB0U3RyaW5n
LCBbaGFuZGxlcl0oV2ViS2l0OjpXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSwgV2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvciBlcnJvckNvZGUp
IHsKKyAgICBfcGFnZS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGphdmFTY3JpcHRTdHJpbmcs
IFtoYW5kbGVyXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZh
bHVlLCBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVycm9yIGVycm9yQ29kZSkgewogICAg
ICAgICBpZiAoIWhhbmRsZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCmluZGV4IDA5MTY2MjUwZGZiMzZkZDhmYWVh
MjRkZTU0OWEzNDVlMTJjMzk4OTcuLjYzN2JhZjAyYzMzNDU4YTU4Mjk1MjAwMGEyZjM1NzU1MmJi
MTYwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVn
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaApA
QCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNj
cmlwdEFsZXJ0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJL
aXQ6OldlYkZyYW1lUHJveHkqLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNvbXBsZXRpb25IYW5k
bGVyKSBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bkphdmFTY3JpcHRDb25maXJt
KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6OldlYkZy
YW1lUHJveHkqLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikg
b3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KFdlYktp
dDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYs
IFdlYktpdDo6V2ViRnJhbWVQcm94eSosIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgV1RGOjpT
dHJpbmcmKT4gY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZv
aWQgZXhjZWVkZWREYXRhYmFzZVF1b3RhKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBX
ZWJTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdURjo6U3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0
IFdURjo6U3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRRdW90
YSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRPcmlnaW5Vc2FnZSwgdW5zaWduZWQgbG9uZyBs
b25nIGN1cnJlbnRVc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGV4cGVjdGVkVXNhZ2UsIHN0ZDo6
ZnVuY3Rpb248dm9pZCAodW5zaWduZWQgbG9uZyBsb25nKT4pIG92ZXJyaWRlOworICAgICAgICB2
aXJ0dWFsIHZvaWQgZXhjZWVkZWREYXRhYmFzZVF1b3RhKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1l
UHJveHkqLCBBUEk6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV1RGOjpTdHJpbmcmIGRhdGFiYXNl
TmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGxvbmcg
Y3VycmVudFF1b3RhLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudE9yaWdpblVzYWdlLCB1bnNp
Z25lZCBsb25nIGxvbmcgY3VycmVudFVzYWdlLCB1bnNpZ25lZCBsb25nIGxvbmcgZXhwZWN0ZWRV
c2FnZSwgc3RkOjpmdW5jdGlvbjx2b2lkICh1bnNpZ25lZCBsb25nIGxvbmcpPikgb3ZlcnJpZGU7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3Rh
KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgdWludDY0X3Qg
Y3VycmVudFF1b3RhLCB1aW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVkLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKHVuc2lnbmVkIGxvbmcgbG9uZyk+IGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIHByaW50RnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJL
aXQ6OldlYkZyYW1lUHJveHkqKSBvdmVycmlkZTsKICAgICAjaWYgUExBVEZPUk0oSU9TKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRleCBhZjdhMTk4
YmEyM2RlN2FhMDU1NjQwN2U2ZTI0YzFhMWE3YzlhNzE3Li44OGJmZWE3NDhkZThiM2M0Mzk1NDFj
OWQyYjBkMWNlOGMxZjI0ODdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
VUlEZWxlZ2F0ZS5tbQpAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGll
bnQ6OnJ1bkphdmFTY3JpcHRQcm9tcHQoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6
CiAgICAgfV07CiB9CiAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmV4Y2VlZGVkRGF0YWJh
c2VRdW90YShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgV2ViU2VjdXJpdHlPcmlnaW4q
IHNlY3VyaXR5T3JpZ2luLCBjb25zdCBXVEY6OlN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBX
VEY6OlN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGEs
IHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50T3JpZ2luVXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9u
ZyBjdXJyZW50VXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBleHBlY3RlZFVzYWdlLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKHVuc2lnbmVkIGxvbmcgbG9uZyk+IGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKFdlYlBhZ2VQcm94
eSosIFdlYkZyYW1lUHJveHkqLCBBUEk6OlNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwg
Y29uc3QgV1RGOjpTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIGRpc3Bs
YXlOYW1lLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFF1b3RhLCB1bnNpZ25lZCBsb25nIGxv
bmcgY3VycmVudE9yaWdpblVzYWdlLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFVzYWdlLCB1
bnNpZ25lZCBsb25nIGxvbmcgZXhwZWN0ZWRVc2FnZSwgc3RkOjpmdW5jdGlvbjx2b2lkICh1bnNp
Z25lZCBsb25nIGxvbmcpPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fdWlEZWxl
Z2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGVjaWRlRGF0YWJhc2VRdW90YUZvclNlY3Vy
aXR5T3JpZ2luQ3VycmVudFF1b3RhQ3VycmVudE9yaWdpblVzYWdlQ3VycmVudERhdGFiYXNlVXNh
Z2VFeHBlY3RlZFVzYWdlRGVjaXNpb25IYW5kbGVyKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGN1cnJlbnRRdW90YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
R2VuZXJpY0NhbGxiYWNrLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxi
YWNrLmgKaW5kZXggODQ3YTA2OGE4ZDZiMDUyYmRhOTRlMGEyNDNkNWEzZjYyZjU1YTk0Ny4uZmVm
Y2NjMzAyOWI1YzkyNjViNDIwMTM3ZGViNDc3OGI4N2Y5MjA0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaApAQCAtMjcsMTAgKzI3LDEwIEBACiAjZGVmaW5l
IEdlbmVyaWNDYWxsYmFja19oCiAKICNpbmNsdWRlICJBUElFcnJvci5oIgorI2luY2x1ZGUgIkFQ
SVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIK
ICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNp
bmNsdWRlICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFs
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb24uY3BwCmluZGV4IDM3MDVmYjA2NDNmOTdhNTdlNGU2MzYxZGE4Nzc5ZWM3
MjdlYWZiMmIuLjNkN2JjMDBmZWJkZjk5NjU4YWI2Y2M4YmMzYTI3ZDMxZTA1YjhkZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uLmNwcApAQCAtNDAsNyArNDAsNyBAQCBXZWJOb3RpZmljYXRpb246OldlYk5v
dGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0
CiAgICAgLCBtX3RhZyh0YWcpCiAgICAgLCBtX2xhbmcobGFuZykKICAgICAsIG1fZGlyKGRpcikK
LSAgICAsIG1fb3JpZ2luKFdlYlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdp
blN0cmluZykpCisgICAgLCBtX29yaWdpbihBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9t
U3RyaW5nKG9yaWdpblN0cmluZykpCiAgICAgLCBtX25vdGlmaWNhdGlvbklEKG5vdGlmaWNhdGlv
bklEKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJOb3RpZmljYXRpb24uaAppbmRleCAzNjgyYjRmOWRmYTllMzkyZmJhYzE2YmQz
MzJhYWUwYmViZGViYzViLi5lYTk4MWQyM2Q0ZTVjODA5OGViZDEyZmE4ZTE5MzU0ZjdkMWE1NDFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb24uaApAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBXZWJOb3RpZmlj
YXRpb25faAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSAiV2ViU2VjdXJpdHlP
cmlnaW4uaCIKKyNpbmNsdWRlICJBUElTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5n
JiB0YWcoKSBjb25zdCB7IHJldHVybiBtX3RhZzsgfQogICAgIGNvbnN0IFN0cmluZyYgbGFuZygp
IGNvbnN0IHsgcmV0dXJuIG1fbGFuZzsgfQogICAgIGNvbnN0IFN0cmluZyYgZGlyKCkgY29uc3Qg
eyByZXR1cm4gbV9kaXI7IH0KLSAgICBXZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgY29uc3Qg
eyByZXR1cm4gbV9vcmlnaW4uZ2V0KCk7IH0KKyAgICBBUEk6OlNlY3VyaXR5T3JpZ2luKiBvcmln
aW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbi5nZXQoKTsgfQogICAgIAogICAgIHVpbnQ2NF90
IG5vdGlmaWNhdGlvbklEKCkgY29uc3QgeyByZXR1cm4gbV9ub3RpZmljYXRpb25JRDsgfQogCkBA
IC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdGFnOwogICAgIFN0cmluZyBt
X2xhbmc7CiAgICAgU3RyaW5nIG1fZGlyOwotICAgIFJlZlB0cjxXZWJTZWN1cml0eU9yaWdpbj4g
bV9vcmlnaW47CisgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IG1fb3JpZ2luOwogICAg
IHVpbnQ2NF90IG1fbm90aWZpY2F0aW9uSUQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCAwMDM0MjY1OWZhMDI4N2Q4MjM3ZDM0MzdjN2ZiNTZl
MjljMzE3YmU4Li5kODA3MWE5Njc3ZmZhYzc2NDE5MjYyZjI0YjNlZjE0NTQzMDhmOTg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTI3LDE2ICsyNywx
NCBAQAogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogCiAjaW5jbHVk
ZSAiQVBJQXJyYXkuaCIKKyNpbmNsdWRlICJBUElTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUg
IkltbXV0YWJsZURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiV2ViTm90aWZpY2F0aW9uLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdlck1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Byb3h5LmgiCi0jaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKIAotdXNpbmcgbmFtZXNw
YWNlIHN0ZDsKLXVzaW5nIG5hbWVzcGFjZSBXVEY7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yMzIsNyArMjMwLDcgQEAgdm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKEFQSTo6QXJy
YXkqIGdsb2IKICAgICAgICAgaXQtPmtleS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYk5v
dGlmaWNhdGlvbk1hbmFnZXI6OkRpZENsb3NlTm90aWZpY2F0aW9ucyhpdC0+dmFsdWUpLCAwKTsK
IH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkVXBkYXRl
Tm90aWZpY2F0aW9uUG9saWN5KGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGJvb2wg
YWxsb3dlZCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFVw
ZGF0ZU5vdGlmaWNhdGlvblBvbGljeShjb25zdCBBUEk6OlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4s
IGJvb2wgYWxsb3dlZCkKIHsKICAgICBpZiAoIWNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMjUzLDcgKzI1MSw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92
aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlvblBvbGljaWVzKEFQSTo6QXJyCiAgICAgb3JpZ2luU3Ry
aW5ncy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwogICAgIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBvcmlnaW5TdHJpbmdzLmFwcGVuZChvcmln
aW5zLT5hdDxXZWJTZWN1cml0eU9yaWdpbj4oaSktPnNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmco
KSk7CisgICAgICAgIG9yaWdpblN0cmluZ3MuYXBwZW5kKG9yaWdpbnMtPmF0PEFQSTo6U2VjdXJp
dHlPcmlnaW4+KGkpLT5zZWN1cml0eU9yaWdpbigpLnRvU3RyaW5nKCkpOwogICAgIAogICAgIGNv
bnRleHQoKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5h
Z2VyOjpEaWRSZW1vdmVOb3RpZmljYXRpb25EZWNpc2lvbnMob3JpZ2luU3RyaW5ncykpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAppbmRleCBhODM1YjM3NTM5MWIz
Mzg2Y2EyYjlkNjg4M2Q3ZjI4ZTU0NjRiYzlkLi5kNzkzMzg4Y2NmNTJmMTk2MWZmNTA5MjJjNzVl
OTQ2ODRjYzQ3NTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaApA
QCAtMzcsMTMgKzM3LDEzIEBACiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQXJyYXk7CitjbGFz
cyBTZWN1cml0eU9yaWdpbjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkNv
bnRleHQ7CiBjbGFzcyBXZWJQYWdlUHJveHk7Ci1jbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKIAog
Y2xhc3MgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1w
bDxBUEk6Ok9iamVjdDo6VHlwZTo6Tm90aWZpY2F0aW9uTWFuYWdlcj4sIHB1YmxpYyBXZWJDb250
ZXh0U3VwcGxlbWVudCB7CiBwdWJsaWM6CkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCk7
CiAgICAgdm9pZCBwcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNh
dGlvbklEKTsKICAgICB2b2lkIHByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKEFQSTo6QXJy
YXkqIG5vdGlmaWNhdGlvbklEcyk7Ci0gICAgdm9pZCBwcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNh
dGlvblBvbGljeShjb25zdCBXZWJTZWN1cml0eU9yaWdpbiosIGJvb2wgYWxsb3dlZCk7CisgICAg
dm9pZCBwcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShjb25zdCBBUEk6OlNlY3Vy
aXR5T3JpZ2luKiwgYm9vbCBhbGxvd2VkKTsKICAgICB2b2lkIHByb3ZpZGVyRGlkUmVtb3ZlTm90
aWZpY2F0aW9uUG9saWNpZXMoQVBJOjpBcnJheSogb3JpZ2lucyk7CiAKICAgICB1c2luZyBBUEk6
Ok9iamVjdDo6cmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCmluZGV4IDQx
ZDhkNWJmMTZkNTQ4ZDQ3N2NlZDY2ZDVhZTljYTA4ZWYyMWNmODEuLjU5YzRjMWMyODhlYTViOGY3
ODVmYTU4YjhkMGE2ZjU5Y2MwYjkxY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRl
ci5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNs
dWRlICJBUElOdW1iZXIuaCIKKyNpbmNsdWRlICJBUElTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1
ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNs
dWRlICJXZWJOb3RpZmljYXRpb24uaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlICJXZWJTZWN1cml0
eU9yaWdpbi5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyLmgKaW5kZXggYjQ4ZDQzMzQ2NDJkYTNkMDA0OGUyY2M2YTAwZGI5OWMwZjMxMmU2Zi4u
NWNlOGQ1MTE0MDBlNDk5ZmM1YjNlMDUzOWZhOWM3OGNhYTRiZDU3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJvdmlk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3Rp
ZmljYXRpb25Qcm92aWRlci5oCkBAIC00Myw3ICs0Myw2IEBAIGNsYXNzIEltbXV0YWJsZURpY3Rp
b25hcnk7CiBjbGFzcyBXZWJOb3RpZmljYXRpb247CiBjbGFzcyBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk7CiBjbGFzcyBXZWJQYWdlUHJveHk7Ci1jbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsK
ICAgICAKIGNsYXNzIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyIDogcHVibGljIEFQSTo6Q2xpZW50
PFdLTm90aWZpY2F0aW9uUHJvdmlkZXJCYXNlPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaAppbmRleCBmM2M1Mzc2MmVkOWQxMjk1MWQxYzczNzIxN2Q1MDE3NTgw
YmYxNzdmLi42N2NiMjdlMzQ4YTBkNjg2NzFjOGIxMzBmMTUwN2MyY2Y3ODJmZTdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTEzMSw3ICsxMzEsNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHZvaWQgdG9vbFRpcENoYW5nZWQoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJikgPSAwOwogCi0gICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViRnJhbWVQcm94eSYsIFdlYlNlY3VyaXR5T3JpZ2luJiwg
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5JikKKyAgICB2aXJ0dWFsIGJvb2wgZGVj
aWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJGcmFtZVByb3h5Jiwg
QVBJOjpTZWN1cml0eU9yaWdpbiYsIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eSYp
CiAgICAgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHku
Y3BwCmluZGV4IGJhN2JhOTU1ZTBkMzBjODEyNjhhODI4M2I5ZjQ3MzhjOWYyZGM1NTYuLjYyMjlk
NjMyNGRlY2M1NGM3YjJiOTMxNzFmMzBjZTgxNjE5NDUwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJQcm94
eS5jcHAKQEAgLTI2LDExICsyNiwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IldlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHkuaCIKIAorI2luY2x1ZGUgIkFQSVNlY3Vy
aXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAjaW5jbHVkZSAi
V2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkFwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQu
aCIKLSNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IApAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJQcm94
eTo6ZGlkR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnMoY29uc3QgVmVjdG9yCiAgICAgcGVyZm9y
bUFQSUNhbGxiYWNrV2l0aFNlY3VyaXR5T3JpZ2luRGF0YVZlY3RvcihvcmlnaW5EYXRhcywgY2Fs
bGJhY2suZ2V0KCkpOwogfQogCi12b2lkIFdlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHk6
OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV2ViU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3ZvaWQg
V2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJQcm94eTo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbihB
UEk6OlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiB7CiAgICAgaWYgKCFjb250ZXh0KCkpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
QXBwbGljYXRpb25DYWNoZU1hbmFnZXJQcm94eS5oCmluZGV4IDU4MWFlZDE2ZDk3ZGExYmU1NTZm
NTQ0ZGY4NzcwNjBmNzEyYWM4OGEuLmUxZjY0NjY2OWQ1MzczOTI3ODQ1MDZhNmQ3ZDFhZTE2Y2U3
NWE4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJBcHBsaWNhdGlv
bkNhY2hlTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkFw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHkuaApAQCAtMzUsMTIgKzM1LDExIEBACiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSVBDIHsKLSAgICBjbGFzcyBDb25uZWN0aW9u
OworY2xhc3MgQ29ubmVjdGlvbjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdl
YlNlY3VyaXR5T3JpZ2luOwogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIAogdHlwZWRlZiBH
ZW5lcmljQ2FsbGJhY2s8QVBJOjpBcnJheSo+IEFycmF5Q2FsbGJhY2s7CkBAIC01Myw3ICs1Miw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclByb3h5
KCk7CiAKICAgICB2b2lkIGdldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5zKHN0ZDo6ZnVuY3Rpb248
dm9pZCAoQVBJOjpBcnJheSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7Ci0gICAgdm9pZCBkZWxl
dGVFbnRyaWVzRm9yT3JpZ2luKFdlYlNlY3VyaXR5T3JpZ2luKik7CisgICAgdm9pZCBkZWxldGVF
bnRyaWVzRm9yT3JpZ2luKEFQSTo6U2VjdXJpdHlPcmlnaW4qKTsKICAgICB2b2lkIGRlbGV0ZUFs
bEVudHJpZXMoKTsKIAogICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpyZWY7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDdjODE5
ZWFhNjQ1NWFhNzM5MzBjNDJmZTcyMDViZWU3NGViN2ViNTIuLjM2MzE4YmFmYjhjMjVkN2MwNGVi
Zjk4MDMzMTBkZDBhNGIwNDdlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCkBAIC0yNywxMSArMjcsMTEgQEAKICNpbmNsdWRl
ICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKIAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCisjaW5j
bHVkZSAiQVBJU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEu
aCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlck1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKLSNp
bmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5j
cHAKaW5kZXggNTk1M2EyMzk5ODMzY2RhMDg2NzRiZWI4ZGQ3ZWU3NGRlYjQxZmIwMy4uMTlmZjMz
YjZmZDI4NzI2MmUxZTczMzM1YzZiNTM5YWZlNjdiMmFmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkuY3BwCkBAIC0yOSwxMSAr
MjksMTEgQEAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiQVBJQXJyYXku
aCIKKyNpbmNsdWRlICJBUElTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIkltbXV0YWJsZURp
Y3Rpb25hcnkuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViRGF0YWJh
c2VNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJEYXRhYmFzZU1hbmFnZXJQcm94eU1l
c3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xNzMsNyAr
MTczLDcgQEAgdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6ZGlkR2V0RGF0YWJhc2VzQnlP
cmlnaW4oY29uc3QgVmVjdG9yPE9yaWdpbkFuZERhdGEKICAgICByZXN1bHQucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShvcmlnaW5BbmREYXRhYmFzZXNWZWN0b3Iuc2l6ZSgpKTsKIAogICAgIGZvciAo
Y29uc3QgYXV0byYgb3JpZ2luQW5kRGF0YWJhc2VzIDogb3JpZ2luQW5kRGF0YWJhc2VzVmVjdG9y
KSB7Ci0gICAgICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gb3JpZ2luID0gV2ViU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihv
cmlnaW5BbmREYXRhYmFzZXMub3JpZ2luSWRlbnRpZmllcikpOworICAgICAgICBSZWZQdHI8QVBJ
OjpPYmplY3Q+IG9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5BbmREYXRhYmFzZXMub3Jp
Z2luSWRlbnRpZmllcikpOwogCiAgICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBk
YXRhYmFzZXM7CiAgICAgICAgIGRhdGFiYXNlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG9yaWdp
bkFuZERhdGFiYXNlcy5kYXRhYmFzZXMuc2l6ZSgpKTsKQEAgLTIyNiwxNyArMjI2LDE3IEBAIHZv
aWQgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmRpZEdldERhdGFiYXNlT3JpZ2lucyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgb3JpZ2luCiAgICAgc2VjdXJpdHlPcmlnaW5zLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkob3JpZ2luSWRlbnRpZmllcnMuc2l6ZSgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0
byYgb3JpZ2luSWRlbnRpZmllciA6IG9yaWdpbklkZW50aWZpZXJzKQotICAgICAgICBzZWN1cml0
eU9yaWdpbnMudW5jaGVja2VkQXBwZW5kKFdlYlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luSWRlbnRpZmllcikp
KTsKKyAgICAgICAgc2VjdXJpdHlPcmlnaW5zLnVuY2hlY2tlZEFwcGVuZChBUEk6OlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZp
ZXIob3JpZ2luSWRlbnRpZmllcikpKTsKIAogICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tX
aXRoUmV0dXJuVmFsdWUoQVBJOjpBcnJheTo6Y3JlYXRlKFdURjo6bW92ZShzZWN1cml0eU9yaWdp
bnMpKS5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmRlbGV0ZURh
dGFiYXNlV2l0aE5hbWVGb3JPcmlnaW4oY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIs
IFdlYlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCit2b2lkIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5
OjpkZWxldGVEYXRhYmFzZVdpdGhOYW1lRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJ
ZGVudGlmaWVyLCBBUEk6OlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiB7CiAgICAgY29udGV4dCgp
LT5zZW5kVG9PbmVQcm9jZXNzKE1lc3NhZ2VzOjpXZWJEYXRhYmFzZU1hbmFnZXI6OkRlbGV0ZURh
dGFiYXNlV2l0aE5hbWVGb3JPcmlnaW4oZGF0YWJhc2VJZGVudGlmaWVyLCBvcmlnaW4tPnNlY3Vy
aXR5T3JpZ2luKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpKTsKIH0KIAotdm9pZCBXZWJEYXRhYmFz
ZU1hbmFnZXJQcm94eTo6ZGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2luKFdlYlNlY3VyaXR5T3JpZ2lu
KiBvcmlnaW4pCit2b2lkIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5OjpkZWxldGVEYXRhYmFzZXNG
b3JPcmlnaW4oQVBJOjpTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewogICAgIGNvbnRleHQoKS0+
c2VuZFRvT25lUHJvY2VzcyhNZXNzYWdlczo6V2ViRGF0YWJhc2VNYW5hZ2VyOjpEZWxldGVEYXRh
YmFzZXNGb3JPcmlnaW4ob3JpZ2luLT5zZWN1cml0eU9yaWdpbigpLmRhdGFiYXNlSWRlbnRpZmll
cigpKSk7CiB9CkBAIC0yNDYsMjAgKzI0NiwyMCBAQCB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlclBy
b3h5OjpkZWxldGVBbGxEYXRhYmFzZXMoKQogICAgIGNvbnRleHQoKS0+c2VuZFRvT25lUHJvY2Vz
cyhNZXNzYWdlczo6V2ViRGF0YWJhc2VNYW5hZ2VyOjpEZWxldGVBbGxEYXRhYmFzZXMoKSk7CiB9
CiAKLXZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OnNldFF1b3RhRm9yT3JpZ2luKFdlYlNl
Y3VyaXR5T3JpZ2luKiBvcmlnaW4sIHVpbnQ2NF90IHF1b3RhKQordm9pZCBXZWJEYXRhYmFzZU1h
bmFnZXJQcm94eTo6c2V0UXVvdGFGb3JPcmlnaW4oQVBJOjpTZWN1cml0eU9yaWdpbiogb3JpZ2lu
LCB1aW50NjRfdCBxdW90YSkKIHsKICAgICBjb250ZXh0KCktPnNlbmRUb09uZVByb2Nlc3MoTWVz
c2FnZXM6OldlYkRhdGFiYXNlTWFuYWdlcjo6U2V0UXVvdGFGb3JPcmlnaW4ob3JpZ2luLT5zZWN1
cml0eU9yaWdpbigpLmRhdGFiYXNlSWRlbnRpZmllcigpLCBxdW90YSkpOwogfQogCiB2b2lkIFdl
YkRhdGFiYXNlTWFuYWdlclByb3h5OjpkaWRNb2RpZnlPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmln
aW5JZGVudGlmaWVyKQogewotICAgIFJlZlB0cjxXZWJTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0g
V2ViU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFi
YXNlSWRlbnRpZmllcihvcmlnaW5JZGVudGlmaWVyKSk7CisgICAgUmVmUHRyPEFQSTo6U2VjdXJp
dHlPcmlnaW4+IG9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5JZGVudGlmaWVyKSk7CiAg
ICAgbV9jbGllbnQuZGlkTW9kaWZ5T3JpZ2luKHRoaXMsIG9yaWdpbi5nZXQoKSk7CiB9CiAKIHZv
aWQgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmRpZE1vZGlmeURhdGFiYXNlKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpCiB7
Ci0gICAgUmVmUHRyPFdlYlNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBXZWJTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9y
aWdpbklkZW50aWZpZXIpKTsKKyAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gb3JpZ2lu
ID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9t
RGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXIpKTsKICAgICBtX2NsaWVudC5kaWRN
b2RpZnlEYXRhYmFzZSh0aGlzLCBvcmlnaW4uZ2V0KCksIGRhdGFiYXNlSWRlbnRpZmllcik7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJEYXRhYmFzZU1hbmFn
ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclBy
b3h5LmgKaW5kZXggZGY0NmIwYmVhY2MwNWQ2OTY0ZTYxYmJhYzFkMTI2OWU5OWQ0Y2Q3MS4uZmIy
YjA5YzNkNjdjZWQxODg3ZDhlNzA0YzcyZGYwYmIyYjFjZmMyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5LmgKQEAgLTQyLDcgKzQy
LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkNvbnRleHQ7CiBjbGFzcyBXZWJQ
cm9jZXNzUHJveHk7Ci1jbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKIAogdHlwZWRlZiBHZW5lcmlj
Q2FsbGJhY2s8QVBJOjpBcnJheSo+IEFycmF5Q2FsbGJhY2s7CiAKQEAgLTU3LDEwICs1NiwxMCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGdldERhdGFiYXNlc0J5T3JpZ2luKHN0ZDo6ZnVuY3Rpb248
dm9pZCAoQVBJOjpBcnJheSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CiAgICAgdm9pZCBnZXRE
YXRhYmFzZU9yaWdpbnMoc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OkFycmF5KiwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+KTsKLSAgICB2b2lkIGRlbGV0ZURhdGFiYXNlV2l0aE5hbWVGb3JPcmlnaW4o
Y29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIsIFdlYlNlY3VyaXR5T3JpZ2luKik7Ci0g
ICAgdm9pZCBkZWxldGVEYXRhYmFzZXNGb3JPcmlnaW4oV2ViU2VjdXJpdHlPcmlnaW4qKTsKKyAg
ICB2b2lkIGRlbGV0ZURhdGFiYXNlV2l0aE5hbWVGb3JPcmlnaW4oY29uc3QgU3RyaW5nJiBkYXRh
YmFzZUlkZW50aWZpZXIsIEFQSTo6U2VjdXJpdHlPcmlnaW4qKTsKKyAgICB2b2lkIGRlbGV0ZURh
dGFiYXNlc0Zvck9yaWdpbihBUEk6OlNlY3VyaXR5T3JpZ2luKik7CiAgICAgdm9pZCBkZWxldGVB
bGxEYXRhYmFzZXMoKTsKLSAgICB2b2lkIHNldFF1b3RhRm9yT3JpZ2luKFdlYlNlY3VyaXR5T3Jp
Z2luKiwgdWludDY0X3QgcXVvdGEpOworICAgIHZvaWQgc2V0UXVvdGFGb3JPcmlnaW4oQVBJOjpT
ZWN1cml0eU9yaWdpbiosIHVpbnQ2NF90IHF1b3RhKTsKICAgICAKICAgICBzdGF0aWMgU3RyaW5n
IG9yaWdpbktleSgpOwogICAgIHN0YXRpYyBTdHJpbmcgb3JpZ2luUXVvdGFLZXkoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94eUNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRGF0YWJhc2VNYW5hZ2VyUHJv
eHlDbGllbnQuY3BwCmluZGV4IDJhYTc2NTI2NmY3YzNiYzBhZWE5MTdmYWY1YWQwM2E5YjMzMmI3
ODYuLmVhMGRlMzkyYTJkNDM4Mjc4MmJmNGI3MDZjNWVkZTViZDI1Nzc2MTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94eUNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5
Q2xpZW50LmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9p
ZCBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eUNsaWVudDo6ZGlkTW9kaWZ5T3JpZ2luKFdlYkRhdGFi
YXNlTWFuYWdlclByb3h5KiBkYXRhYmFzZU1hbmFnZXIsIFdlYlNlY3VyaXR5T3JpZ2luKiBvcmln
aW4pCit2b2lkIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5Q2xpZW50OjpkaWRNb2RpZnlPcmlnaW4o
V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkqIGRhdGFiYXNlTWFuYWdlciwgQVBJOjpTZWN1cml0eU9y
aWdpbiogb3JpZ2luKQogewogICAgIGlmICghbV9jbGllbnQuZGlkTW9kaWZ5T3JpZ2luKQogICAg
ICAgICByZXR1cm47CkBAIC0zOSw3ICszOSw3IEBAIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyUHJv
eHlDbGllbnQ6OmRpZE1vZGlmeU9yaWdpbihXZWJEYXRhYmFzZU1hbmFnZXJQcm94eSogZGF0CiAg
ICAgbV9jbGllbnQuZGlkTW9kaWZ5T3JpZ2luKHRvQVBJKGRhdGFiYXNlTWFuYWdlciksIHRvQVBJ
KG9yaWdpbiksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgV2ViRGF0YWJh
c2VNYW5hZ2VyUHJveHlDbGllbnQ6OmRpZE1vZGlmeURhdGFiYXNlKFdlYkRhdGFiYXNlTWFuYWdl
clByb3h5KiBkYXRhYmFzZU1hbmFnZXIsIFdlYlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKQordm9pZCBXZWJEYXRhYmFzZU1hbmFnZXJQcm94
eUNsaWVudDo6ZGlkTW9kaWZ5RGF0YWJhc2UoV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkqIGRhdGFi
YXNlTWFuYWdlciwgQVBJOjpTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIGRh
dGFiYXNlSWRlbnRpZmllcikKIHsKICAgICBpZiAoIW1fY2xpZW50LmRpZE1vZGlmeURhdGFiYXNl
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94eUNsaWVudC5oCmluZGV4IDBlNTA5MWEyOWMyMjIyOGZi
NjZhZWQ0MzcyOTVlZDRkMjBmMjQ1ZjkuLjJkYmUzYmJkZjU4NTk0OGQ4MDI2NGIwNTQwZDBhNTEw
ODAwNmE2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJEYXRhYmFz
ZU1hbmFnZXJQcm94eUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJE
YXRhYmFzZU1hbmFnZXJQcm94eUNsaWVudC5oCkBAIC0zNCwxNyArMzQsMTggQEAgbmFtZXNwYWNl
IEFQSSB7CiB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tEYXRhYmFzZU1hbmFnZXJD
bGllbnRCYXNlPiB7CiAgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLRGF0YWJhc2VNYW5hZ2VyQ2xp
ZW50VjA+IFZlcnNpb25zOwogfTsKKworY2xhc3MgU2VjdXJpdHlPcmlnaW47CiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTsKLWNsYXNzIFdl
YlNlY3VyaXR5T3JpZ2luOwogCiBjbGFzcyBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eUNsaWVudCA6
IHB1YmxpYyBBUEk6OkNsaWVudDxXS0RhdGFiYXNlTWFuYWdlckNsaWVudEJhc2U+IHsKIHB1Ymxp
YzoKLSAgICB2b2lkIGRpZE1vZGlmeU9yaWdpbihXZWJEYXRhYmFzZU1hbmFnZXJQcm94eSosIFdl
YlNlY3VyaXR5T3JpZ2luKik7Ci0gICAgdm9pZCBkaWRNb2RpZnlEYXRhYmFzZShXZWJEYXRhYmFz
ZU1hbmFnZXJQcm94eSosIFdlYlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZUlkZW50aWZpZXIpOworICAgIHZvaWQgZGlkTW9kaWZ5T3JpZ2luKFdlYkRhdGFiYXNlTWFuYWdl
clByb3h5KiwgQVBJOjpTZWN1cml0eU9yaWdpbiopOworICAgIHZvaWQgZGlkTW9kaWZ5RGF0YWJh
c2UoV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkqLCBBUEk6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViS2V5VmFsdWVTdG9yYWdl
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViS2V5VmFsdWVTdG9yYWdl
TWFuYWdlci5jcHAKaW5kZXggNTlkN2JiNjkwNDZjNDVlZmQyZTE1ODJkZTNjMTk3MzBkNWYzMmVi
Yi4uNDJiNDBlNGU4MzljYTE0NDg4MjFjOGY3N2RjYzRlMDRmZTVhNzFlMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNw
cApAQCAtMjcsMTAgKzI3LDEwIEBACiAjaW5jbHVkZSAiV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdl
ci5oIgogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKKyNpbmNsdWRlICJBUElTZWN1cml0eU9yaWdp
bi5oIgogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURldGFpbHMuaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbkRhdGEuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViU2Vj
dXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgV2ViS2V5VmFsdWVTdG9y
YWdlTWFuYWdlcjo6Z2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyhzdGQ6OmZ1bmN0aW9uPHZvaWQg
KEFQCiAgICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiB3ZWJTZWN1cml0eU9yaWdp
bnM7CiAgICAgICAgIHdlYlNlY3VyaXR5T3JpZ2lucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNl
Y3VyaXR5T3JpZ2lucy5zaXplKCkpOwogICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IHNlY3Vy
aXR5T3JpZ2lucykKLSAgICAgICAgICAgIHdlYlNlY3VyaXR5T3JpZ2lucy51bmNoZWNrZWRBcHBl
bmQoV2ViU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShXVEY6Om1vdmUob3JpZ2luKSkpOworICAgICAg
ICAgICAgd2ViU2VjdXJpdHlPcmlnaW5zLnVuY2hlY2tlZEFwcGVuZChBUEk6OlNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUoV1RGOjptb3ZlKG9yaWdpbikpKTsKIAogICAgICAgICBjYWxsYmFja0Z1bmN0
aW9uKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEY6Om1vdmUod2ViU2VjdXJpdHlPcmlnaW5zKSkuZ2V0
KCksIENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpOwogICAgIH0pOwpAQCAtMTA4LDcgKzEwOCw3
IEBAIHZvaWQgV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlcjo6Z2V0U3RvcmFnZURldGFpbHNCeU9y
aWdpbihzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFQCiAgICAgICAgIGZvciAoY29uc3QgTG9jYWxTdG9y
YWdlRGV0YWlscyYgb3JpZ2luRGV0YWlscyA6IHN0b3JhZ2VEZXRhaWxzKSB7CiAgICAgICAgICAg
ICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEFQSTo6T2JqZWN0Pj4gZGV0YWlsc01hcDsKIAotICAg
ICAgICAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiBvcmlnaW4gPSBXZWJTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdp
bkRldGFpbHMub3JpZ2luSWRlbnRpZmllcikpOworICAgICAgICAgICAgUmVmUHRyPEFQSTo6T2Jq
ZWN0PiBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luRGV0YWlscy5vcmlnaW5JZGVudGlm
aWVyKSk7CiAKICAgICAgICAgICAgIGRldGFpbHNNYXAuc2V0KFdlYktleVZhbHVlU3RvcmFnZU1h
bmFnZXI6Om9yaWdpbktleSgpLCBvcmlnaW4pOwogICAgICAgICAgICAgaWYgKG9yaWdpbkRldGFp
bHMuY3JlYXRpb25UaW1lKQpAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgV2ViS2V5VmFsdWVTdG9y
YWdlTWFuYWdlcjo6Z2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbihzdGQ6OmZ1bmN0aW9uPHZvaWQg
KEFQCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlcjo6ZGVsZXRl
RW50cmllc0Zvck9yaWdpbihXZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luKQordm9pZCBXZWJLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luKEFQSTo6U2VjdXJpdHlP
cmlnaW4qIG9yaWdpbikKIHsKICAgICBjb250ZXh0KCktPnN0b3JhZ2VNYW5hZ2VyKCkuZGVsZXRl
RW50cmllc0Zvck9yaWdpbihvcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgKaW5k
ZXggOThlOWE1NDg3ODBlMjlmYWI2Njg3OTkzN2Q3YWFmMjgyODVkNGNmMi4uNjdhOGE3NGZhNTI5
YmE5ZWUzNmU5NTUxY2EzMTQwNWY5Y2VjZWU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oCkBAIC00Nyw3ICs0Nyw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyhzdGQ6OmZ1bmN0
aW9uPHZvaWQgKEFQSTo6QXJyYXkqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwogICAgIHZvaWQg
Z2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbihzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6QXJyYXkq
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgZGVsZXRlRW50cmllc0Zvck9yaWdp
bihXZWJTZWN1cml0eU9yaWdpbiopOworICAgIHZvaWQgZGVsZXRlRW50cmllc0Zvck9yaWdpbihB
UEk6OlNlY3VyaXR5T3JpZ2luKik7CiAgICAgdm9pZCBkZWxldGVBbGxFbnRyaWVzKCk7CiAKICAg
ICB1c2luZyBBUEk6Ok9iamVjdDo6cmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IGQ1MmNiN2M3NzA0ZDNj
ZTVhZmRhZDRiZmRlNTlmOTNjZTZlNDM1NDcuLmIzNDE2ZDBhZmU5YjNmMDE1NmU5MGQ4NDc4ZmE5
MDk5OTIzMTVjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRp
YUNhY2hlTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
TWVkaWFDYWNoZU1hbmFnZXJQcm94eS5jcHAKQEAgLTI3LDEwICsyNywxMCBAQAogI2luY2x1ZGUg
IldlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkuaCIKIAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCisj
aW5jbHVkZSAiQVBJU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAj
aW5jbHVkZSAiV2ViTWVkaWFDYWNoZU1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYk1l
ZGlhQ2FjaGVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYlNlY3VyaXR5T3Jp
Z2luLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5jcHAKaW5kZXggNmNiNDhjN2Y2
ZTIyMGQ5NjkwNWM4YjUwYTY1YWVhMjUwNjU3ZWI1My4uMWQwOWYxYWVhZjQ3YWMwY2IwMWExNmY1
NDA5OTE1YzY4N2MyNWU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
Yk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5LmNwcApAQCAtMjYsMTIgKzI2LDExIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5oIgog
CisjaW5jbHVkZSAiQVBJU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bkRhdGEuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViT3JpZ2luRGF0
YU1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHlN
ZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSA8V2Vi
Q29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTIwMSwxMiArMjAwLDEyIEBAIHZvaWQgV2Vi
T3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6ZGlkR2V0T3JpZ2lucyhJUEM6OkNvbm5lY3Rpb24qIGNv
bm5lY3Rpb24sIGNvbnN0CiAgICAgc2VjdXJpdHlPcmlnaW5zLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkob3JpZ2luSWRlbnRpZmllcnMuc2l6ZSgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgb3Jp
Z2luSWRlbnRpZmllciA6IG9yaWdpbklkZW50aWZpZXJzKQotICAgICAgICBzZWN1cml0eU9yaWdp
bnMudW5jaGVja2VkQXBwZW5kKFdlYlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUob3JpZ2luSWRlbnRp
Zmllci5zZWN1cml0eU9yaWdpbigpKSk7CisgICAgICAgIHNlY3VyaXR5T3JpZ2lucy51bmNoZWNr
ZWRBcHBlbmQoQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbklkZW50aWZpZXIuc2Vj
dXJpdHlPcmlnaW4oKSkpOwogCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1
cm5WYWx1ZShBUEk6OkFycmF5OjpjcmVhdGUoV1RGOjptb3ZlKHNlY3VyaXR5T3JpZ2lucykpLmdl
dCgpKTsKIH0KIAotdm9pZCBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpkZWxldGVFbnRyaWVz
Rm9yT3JpZ2luKFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCBXZWJTZWN1cml0eU9yaWdpbiogb3Jp
Z2luLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1
bmN0aW9uKQordm9pZCBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpkZWxldGVFbnRyaWVzRm9y
T3JpZ2luKFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCBBUEk6OlNlY3VyaXR5T3JpZ2luKiBvcmln
aW4sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVu
Y3Rpb24pCiB7CiAgICAgU2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0YTsKICAg
ICBzZWN1cml0eU9yaWdpbkRhdGEucHJvdG9jb2wgPSBvcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCku
cHJvdG9jb2woKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcmln
aW5EYXRhTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3JpZ2lu
RGF0YU1hbmFnZXJQcm94eS5oCmluZGV4IDVjMjI3NTMzNzYwZGE3Yzg0NDI3MjNjOTFjMGM5OTMy
Y2VkMmM0NmMuLjMyNjJhYmU3MzBhM2ZmYTExZjE0MGU4OGI2ZTkyNTU5NDU2MTk4ZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJv
eHkuaApAQCAtNDEsNyArNDEsNiBAQCBjbGFzcyBDb25uZWN0aW9uOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotY2xhc3MgV2ViU2VjdXJpdHlPcmlnaW47CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5E
YXRhOwogCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxBUEk6OkFycmF5Kj4gQXJyYXlDYWxsYmFj
azsKQEAgLTU0LDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYk9yaWdpbkRhdGFN
YW5hZ2VyUHJveHkoKTsKIAogICAgIHZvaWQgZ2V0T3JpZ2lucyhXS09yaWdpbkRhdGFUeXBlcywg
c3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OkFycmF5KiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsK
LSAgICB2b2lkIGRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tPcmlnaW5EYXRhVHlwZXMsIFdlYlNl
Y3VyaXR5T3JpZ2luKiwgc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4p
OworICAgIHZvaWQgZGVsZXRlRW50cmllc0Zvck9yaWdpbihXS09yaWdpbkRhdGFUeXBlcywgQVBJ
OjpTZWN1cml0eU9yaWdpbiosIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJv
cik+KTsKICAgICB2b2lkIGRlbGV0ZUVudHJpZXNNb2RpZmllZEJldHdlZW5EYXRlcyhXS09yaWdp
bkRhdGFUeXBlcywgZG91YmxlIHN0YXJ0RGF0ZSwgZG91YmxlIGVuZERhdGUsIHN0ZDo6ZnVuY3Rp
b248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKICAgICB2b2lkIGRlbGV0ZUFsbEVudHJp
ZXMoV0tPcmlnaW5EYXRhVHlwZXMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpF
cnJvcik+KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRl
eCA2MjY3NmRhMjEzNmM5YjcyMDk0OWY4NDIzY2ZjMmVhYTVkZDE3ZmM2Li42MjYzNzRkMWI1Yzlj
MDE4MjAzMzdlNTAwMjA3NGQwMGM4NDJlZTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkFQSUZvcm1DbGll
bnQuaCIKICNpbmNsdWRlICJBUElMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJBUElQb2xpY3lD
bGllbnQuaCIKKyNpbmNsdWRlICJBUElTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIkFQSVVJ
Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJVVJMUmVxdWVzdC5oIgogI2luY2x1ZGUgIkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIKQEAgLTg2LDcgKzg3LDYgQEAKICNpbmNsdWRlICJXZWJQ
cm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRl
ICJXZWJQcm90ZWN0aW9uU3BhY2UuaCIKLSNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgog
I2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2Vi
c2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0NvbnRyb2xsZXIuaD4KQEAg
LTIzNDUsNyArMjM0NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb3VudFN0cmluZ01hdGNoZXMo
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsCiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb3VudFN0cmluZ01hdGNoZXMoc3RyaW5nLCBvcHRp
b25zLCBtYXhNYXRjaENvdW50KSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBzdGQ6OmZ1bmN0
aW9uPHZvaWQgKFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0
aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24o
bnVsbHB0ciwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CkBAIC00MzMyLDcgKzQzMzIs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsCiAgICAgZGF0YS5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKICAgICBkYXRhLmFwcGVuZChkYXRhUmVmZXJlbmNl
LmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpOwogCi0gICAgY2FsbGJhY2stPnBlcmZvcm1D
YWxsYmFja1dpdGhSZXR1cm5WYWx1ZShkYXRhLnNpemUoKSA/IFdlYlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6YWRvcHQoZGF0YSkuZ2V0KCkgOiAwKTsKKyAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxi
YWNrV2l0aFJldHVyblZhbHVlKGRhdGEuc2l6ZSgpID8gQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmFkb3B0KGRhdGEpLmdldCgpIDogMCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21w
dXRlZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWdlUmVjdHMsIGRvdWJs
ZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCkBAIC00
NzM2LDcgKzQ3MzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhjZWVkZWREYXRhYmFzZVF1b3Rh
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luSQogICAgICAgICBXZWJGcmFt
ZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUocmVjb3JkLT5mcmFtZUlEKTsKICAg
ICAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAKLSAgICAgICAgUmVmUHRyPFdlYlNlY3VyaXR5
T3JpZ2luPiBvcmlnaW4gPSBXZWJTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKHJlY29yZC0+b3JpZ2luSWRlbnRpZmllcikp
OworICAgICAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gQVBJOjpTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVu
dGlmaWVyKHJlY29yZC0+b3JpZ2luSWRlbnRpZmllcikpOwogICAgICAgICBhdXRvIGN1cnJlbnRS
ZXBseSA9IHJlY29yZC0+cmVwbHk7CiAgICAgICAgIG1fdWlDbGllbnQtPmV4Y2VlZGVkRGF0YWJh
c2VRdW90YSh0aGlzLCBmcmFtZSwgb3JpZ2luLmdldCgpLAogICAgICAgICAgICAgcmVjb3JkLT5k
YXRhYmFzZU5hbWUsIHJlY29yZC0+ZGlzcGxheU5hbWUsIHJlY29yZC0+Y3VycmVudFF1b3RhLApA
QCAtNDc2MSw3ICs0NzYxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RHZW9sb2NhdGlv
blBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCBnZW9sb2NhdGlvbklELAogICAgIE1FU1NBR0Vf
Q0hFQ0soZnJhbWUpOwogCiAgICAgLy8gRklYTUU6IEdlb2xvY2F0aW9uIHNob3VsZCBwcm9iYWJs
eSBiZSB1c2luZyB0b1N0cmluZygpIGFzIGl0cyBzdHJpbmcgcmVwcmVzZW50YXRpb24gaW5zdGVh
ZCBvZiBkYXRhYmFzZUlkZW50aWZpZXIoKS4KLSAgICBSZWZQdHI8V2ViU2VjdXJpdHlPcmlnaW4+
IG9yaWdpbiA9IFdlYlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luSWRlbnRpZmllcikpOworICAgIFJlZlB0cjxB
UEk6OlNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUo
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luSWRlbnRp
ZmllcikpOwogICAgIFJlZlB0cjxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IHJl
cXVlc3QgPSBtX2dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNyZWF0ZVJlcXVl
c3QoZ2VvbG9jYXRpb25JRCk7CiAKICAgICBpZiAobV91aUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9y
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCh0aGlzLCBmcmFtZSwgb3JpZ2luLmdldCgpLCBy
ZXF1ZXN0LmdldCgpKSkKQEAgLTQ3NzgsNyArNDc3OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1
aW50CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1l
SUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCi0gICAgUmVmUHRyPFdlYlNlY3VyaXR5
T3JpZ2luPiBvcmlnaW4gPSBXZWJTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXIpKTsKKyAgICBS
ZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdp
bklkZW50aWZpZXIpKTsKICAgICBSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94
eT4gcmVxdWVzdCA9IG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNyZWF0ZVJl
cXVlc3QodXNlck1lZGlhSUQsIGF1ZGlvLCB2aWRlbyk7CiAKICAgICBpZiAoIW1fdWlDbGllbnQt
PmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KCp0aGlzLCAqZnJhbWUs
ICpvcmlnaW4uZ2V0KCksICpyZXF1ZXN0LmdldCgpKSkKQEAgLTQ3OTAsNyArNDc5MCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbih1aW50NjRfdCBy
ZXF1ZXN0SUQsIGNvbnN0IFN0cmluCiAgICAgaWYgKCFpc1JlcXVlc3RJRFZhbGlkKHJlcXVlc3RJ
RCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxXZWJTZWN1cml0eU9yaWdpbj4gb3Jp
Z2luID0gV2ViU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcob3JpZ2luU3RyaW5nKTsK
KyAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gQVBJOjpTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW5TdHJpbmcpOwogICAgIFJlZlB0cjxOb3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gcmVxdWVzdCA9IG1fbm90aWZpY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyLmNyZWF0ZVJlcXVlc3QocmVxdWVzdElEKTsKICAgICAKICAgICBpZiAo
IW1fdWlDbGllbnQtPmRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0
KHRoaXMsIG9yaWdpbi5nZXQoKSwgcmVxdWVzdC5nZXQoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNDlmYmZiZmViMmMxNTgxMjkxNTM3NDZlYWMxOTA1MDk0
MWRiOGJjMC4uZDVmYzlhNDZiNTVmZTVhZWYxZTcyYTkyMTYyNTI5OTYwZWFiNTA5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTk0LDcgKzE5NCw3IEBAIGNs
YXNzIFF1aWNrTG9va0RvY3VtZW50RGF0YTsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPHVpbnQ2
NF90PiBVbnNpZ25lZENhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8RWRpdGluZ1Jh
bmdlPiBFZGl0aW5nUmFuZ2VDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0
IFN0cmluZyY+IFN0cmluZ0NhbGxiYWNrOwotdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8V2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKj4gU2NyaXB0VmFsdWVDYWxsYmFjazsKK3R5cGVkZWYgR2VuZXJp
Y0NhbGxiYWNrPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKj4gU2NyaXB0VmFsdWVDYWxsYmFj
azsKIAogI2lmIFBMQVRGT1JNKEdUSykKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6RXJy
b3IqPiBQcmludEZpbmlzaGVkQ2FsbGJhY2s7CkBAIC02OTYsNyArNjk2LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShzdGQ6OmZ1bmN0aW9uPHZvaWQg
KEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CiAgICAgdm9pZCBnZXRTb3VyY2VG
b3JGcmFtZShXZWJGcmFtZVByb3h5Kiwgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcm
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwogICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUo
V2ViRnJhbWVQcm94eSosIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+KTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBT
dHJpbmcmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKTsKKyAgICB2b2lkIHJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVu
Y3Rpb24pOwogICAgIHZvaWQgZm9yY2VSZXBhaW50KFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPik7
CiAKICAgICBmbG9hdCBoZWFkZXJIZWlnaHQoV2ViRnJhbWVQcm94eSopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHku
Y3BwCmluZGV4IGQwMWU2NTNiNTk4MjYxYWE4MDE4NmZiODQzZmEzODJmMmViNmViN2QuLjU1OWZk
ODlkM2ZhYjRiYjNmMjgzM2NiMTgwNTE3ZWVjY2MxZWMyNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eS5jcHAK
QEAgLTI2LDEyICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlJl
c291cmNlQ2FjaGVNYW5hZ2VyUHJveHkuaCIKIAorI2luY2x1ZGUgIkFQSVNlY3VyaXR5T3JpZ2lu
LmgiCiAjaW5jbHVkZSAiSW1tdXRhYmxlRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luRGF0YS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJSZXNv
dXJjZUNhY2hlTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VDYWNoZU1h
bmFnZXJQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKIAog
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNz
YWdlcy5oIgpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQ
cm94eTo6ZGlkR2V0Q2FjaGVPcmlnaW5zKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpCiAgICAg
cGVyZm9ybUFQSUNhbGxiYWNrV2l0aFNlY3VyaXR5T3JpZ2luRGF0YVZlY3RvcihvcmlnaW5zLCBj
YWxsYmFjay5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eTo6
Y2xlYXJDYWNoZUZvck9yaWdpbihXZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBSZXNvdXJjZUNh
Y2hlc1RvQ2xlYXIgY2FjaGVzVG9DbGVhcikKK3ZvaWQgV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQ
cm94eTo6Y2xlYXJDYWNoZUZvck9yaWdpbihBUEk6OlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIFJl
c291cmNlQ2FjaGVzVG9DbGVhciBjYWNoZXNUb0NsZWFyKQogewogICAgIFNlY3VyaXR5T3JpZ2lu
RGF0YSBzZWN1cml0eU9yaWdpbjsKICAgICBzZWN1cml0eU9yaWdpbi5wcm90b2NvbCA9IG9yaWdp
bi0+c2VjdXJpdHlPcmlnaW4oKS5wcm90b2NvbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5LmgKaW5kZXggNjczYmJh
NDRkMWZhYTg1NDZkMTU3MDkyYzMxNmVmNTgzZmRmZjUxYy4uYTllNDU0OWVkYzMyMThhYjI0MmNh
YmJlOWQ5MDNkZjk4MWM2MzdlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eS5oCkBAIC00MCw3ICs0MCw2IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIGNsYXNzIFdlYkNv
bnRleHQ7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7Ci1jbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsK
IAogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8QVBJOjpBcnJheSo+IEFycmF5Q2FsbGJhY2s7CiAK
QEAgLTUyLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYlJlc291cmNlQ2FjaGVN
YW5hZ2VyUHJveHkoKTsKIAogICAgIHZvaWQgZ2V0Q2FjaGVPcmlnaW5zKHN0ZDo6ZnVuY3Rpb248
dm9pZCAoQVBJOjpBcnJheSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7Ci0gICAgdm9pZCBjbGVh
ckNhY2hlRm9yT3JpZ2luKFdlYlNlY3VyaXR5T3JpZ2luKiwgUmVzb3VyY2VDYWNoZXNUb0NsZWFy
KTsKKyAgICB2b2lkIGNsZWFyQ2FjaGVGb3JPcmlnaW4oQVBJOjpTZWN1cml0eU9yaWdpbiosIFJl
c291cmNlQ2FjaGVzVG9DbGVhcik7CiAgICAgdm9pZCBjbGVhckNhY2hlRm9yQWxsT3JpZ2lucyhS
ZXNvdXJjZUNhY2hlc1RvQ2xlYXIpOwogCiAgICAgdXNpbmcgQVBJOjpPYmplY3Q6OnJlZjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRl
eCA2Mzg1YjdiMTViMjdlNGZjNGJkODFlNTExZWVmZmEwMDQxMmVmMzkxLi4yMzVmMjJhMzEwOTg2
OGFiN2UxMjY2ODUzMmE5ZmJmNGZlZDJmMTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIHBhZ2VDbG9zZWQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgcHJlZmVyZW5jZXNEaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdG9v
bFRpcENoYW5nZWQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qo
V2ViRnJhbWVQcm94eSYsIFdlYlNlY3VyaXR5T3JpZ2luJiwgR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFByb3h5Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZv
ckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViRnJhbWVQcm94eSYsIEFQSTo6U2VjdXJp
dHlPcmlnaW4mLCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkmKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBib29sIHVzZUN1c3RvbUNvbnRlbnRQcm92aWRlcikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIGhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5Kikgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tCmluZGV4IDE1NTNjZjczMjBiOGZjZmE5NTE4Y2JhYzRkNWQwOWMzZGY0M2RkOWUu
LjkxYjNlNDEwMTliOTFkNjJkMmQ5YWM0ZGUzMDk1MjRhOWY3YzUzNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMjM3LDcg
KzIzNyw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnRvb2xUaXBDaGFuZ2VkKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotYm9vbCBQYWdl
Q2xpZW50SW1wbDo6ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChX
ZWJGcmFtZVByb3h5JiBmcmFtZSwgV2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdFByb3h5JiByZXF1ZXN0KQorYm9vbCBQYWdlQ2xpZW50SW1wbDo6
ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJGcmFtZVByb3h5
JiBmcmFtZSwgQVBJOjpTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0UHJveHkmIHJlcXVlc3QpCiB7CiAgICAgW1t3cmFwcGVyKG1fd2ViVmlldy0+X3Bh
Z2UtPnByb2Nlc3MoKS5jb250ZXh0KCkpIF9nZW9sb2NhdGlvblByb3ZpZGVyXSBkZWNpZGVQb2xp
Y3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luOm9yaWdpbi5zZWN1cml0eU9yaWdpbigp
IGZyYW1lOmZyYW1lIHJlcXVlc3Q6cmVxdWVzdCB2aWV3Om1fd2ViVmlld107CiAgICAgcmV0dXJu
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oCmlu
ZGV4IDYzYjRhMjA5MmI3ZTNmODExYmZmMjdmYWNhNDVjOTE3ZmQxYzg1MzkuLmM2Y2EwZTFlOTlk
NmYwNWZmODhjM2JmMjY0MzFmOTczNDA1OTUzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oCkBAIC00NCw3ICs0NCw2IEBAIGNsYXNzIFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uOwogY2xhc3MgV2ViQ29udGV4dDsKIGNsYXNzIFdlYkZyYW1lUHJv
eHk7CiBjbGFzcyBXZWJQYWdlUHJveHk7Ci1jbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKIHN0cnVj
dCBXZWJQYWdlQ29uZmlndXJhdGlvbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY3ZTI4ZWY4MTNhNzRkNzM0OTZlMjkw
ZDk3ZGI4OTYwYzYwYjg4MzUuLmRhNDcwY2U4MGY5ZmNiYTFlZTkwYTdlMzNlOGU2OTA4MWEwZDVk
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTE2OTIsNyArMTY5Miw3IEBACiAJCUVEODJBN0YyMTI4QzZGQUYwMDQ0NzdCMyAv
KiBXS0J1bmRsZVBhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQTIyRjBGRjEyODlGQ0Q5MDA4NUU3NEYgLyogV0tCdW5kbGVQYWdlT3Zl
cmxheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUVEQ0E3MUI3MTI4RERBOEMwMDIwMUIyNiAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMjJGMTAwMTI4OUZD
RDkwMDg1RTc0RiAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmNwcCAqLzsgfTsKIAkJRjAzNjk3ODgx
NUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYwMzY5Nzg3MTVGNEJGMDUwMEMzQTgwRSAvKiBX
ZWJDb2xvclBpY2tlci5jcHAgKi87IH07Ci0JCUY2MTEzRTI1MTI2Q0UxODIwMDU3RDBBNyAvKiBX
ZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY2MTEzRTI0MTI2Q0UxODIwMDU3RDBBNyAvKiBXZWJVc2VyQ29udGVu
dFVSTFBhdHRlcm4uaCAqLzsgfTsKKwkJRjYxMTNFMjUxMjZDRTE4MjAwNTdEMEE3IC8qIEFQSVVz
ZXJDb250ZW50VVJMUGF0dGVybi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjYxMTNFMjQxMjZDRTE4MjAwNTdEMEE3IC8qIEFQSVVzZXJDb250ZW50VVJM
UGF0dGVybi5oICovOyB9OwogCQlGNjExM0UyODEyNkNFMTlCMDA1N0QwQTcgLyogV0tVc2VyQ29u
dGVudFVSTFBhdHRlcm4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjYxMTNFMjYxMjZDRTE5QjAwNTdEMEE3IC8qIFdLVXNlckNvbnRlbnRVUkxQYXR0
ZXJuLmNwcCAqLzsgfTsKIAkJRjYxMTNFMjkxMjZDRTE5QjAwNTdEMEE3IC8qIFdLVXNlckNvbnRl
bnRVUkxQYXR0ZXJuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNjExM0UyNzEyNkNFMTlCMDA1N0QwQTcgLyogV0tVc2VyQ29udGVudFVSTFBhdHRlcm4u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNjJB
NzY1QzEyQjFBQkMzMDAwNUYxQjYgLyogV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjYyQTc2NTkxMkIxQUJD
MzAwMDVGMUI2IC8qIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5LmNwcCAqLzsgfTsKQEAgLTE3MDMs
NyArMTcwMyw3IEBACiAJCUY2MkE3NkI3MTJCMUIyNUYwMDA1RjFCNiAvKiBXZWJEYXRhYmFzZU1h
bmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjYyQTc2QjMxMkIxQjI1RjAwMDVGMUI2IC8qIFdlYkRhdGFiYXNlTWFuYWdlck1lc3Nh
Z2VzLmggKi87IH07CiAJCUY2MkE3NkI4MTJCMUIyNUYwMDA1RjFCNiAvKiBXZWJEYXRhYmFzZU1h
bmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNjJBNzZCNDEyQjFCMjVGMDAwNUYxQjYgLyogV2ViRGF0YWJh
c2VNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQlGNjJBNzZCOTEyQjFC
MjVGMDAwNUYxQjYgLyogV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjYyQTc2QjUxMkIxQjI1RjAw
MDVGMUI2IC8qIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLzsgfTsKLQkJRjYz
NDQ0NTYxMkE4ODVDODAwMDYxMkQ4IC8qIFdlYlNlY3VyaXR5T3JpZ2luLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjM0NDQ1NTEyQTg4NUM4MDAwNjEy
RDggLyogV2ViU2VjdXJpdHlPcmlnaW4uaCAqLzsgfTsKKwkJRjYzNDQ0NTYxMkE4ODVDODAwMDYx
MkQ4IC8qIEFQSVNlY3VyaXR5T3JpZ2luLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNjM0NDQ1NTEyQTg4NUM4MDAwNjEyRDggLyogQVBJU2VjdXJpdHlP
cmlnaW4uaCAqLzsgfTsKIAkJRjYzNDQ0NUMxMkE4ODVFOTAwMDYxMkQ4IC8qIFdLU2VjdXJpdHlP
cmlnaW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjYzNDQ0NUExMkE4ODVFOTAwMDYxMkQ4IC8qIFdLU2VjdXJpdHlPcmlnaW4uY3BwICovOyB9Owog
CQlGNjM0NDQ1RDEyQTg4NUU5MDAwNjEyRDggLyogV0tTZWN1cml0eU9yaWdpbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjYzNDQ0NUIxMkE4ODVFOTAw
MDYxMkQ4IC8qIFdLU2VjdXJpdHlPcmlnaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlGNjdERDdCQTEyNUU0MEQ5MDA3QkRDQjggLyogV0tTZXJp
YWxpemVkU2NyaXB0VmFsdWVQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNjdERDdCOTEyNUU0MEQ5MDA3QkRDQjggLyogV0tTZXJpYWxpemVk
U2NyaXB0VmFsdWVQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTMyMzksNyArMzIzOSw3IEBACiAJCUE1OEI2RjA2MThGQ0E3MzMwMDhD
QkE1MyAvKiBXS0ZpbGVVcGxvYWRQYW5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBXS0ZpbGVVcGxvYWRQYW5lbC5oOyBwYXRoID0gaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBh
bmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OEI2RjA3MThGQ0E3MzMwMDhD
QkE1MyAvKiBXS0ZpbGVVcGxvYWRQYW5lbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IFdLRmlsZVVwbG9hZFBhbmVsLm1tOyBwYXRoID0gaW9zL2Zvcm1zL1dLRmls
ZVVwbG9hZFBhbmVsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUVGRDM4QjE2
QjBFODhDMDBCMkYwRTggLyogV0tQYWdlVmlzaWJpbGl0eVR5cGVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdLUGFnZVZpc2liaWxpdHlUeXBlcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlBNzJENUQ3RjEyMzZDQkE4MDBBODhCMTUgLyogV2ViU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzJENUQ3
RjEyMzZDQkE4MDBBODhCMTUgLyogQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzhDQ0RENzE5M0FDOUUzMDA1RUNDMjUgLyogY29t
LmFwcGxlLldlYktpdC5EYXRhYmFzZXMuc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29tLmFwcGxlLldlYktpdC5EYXRhYmFz
ZXMuc2I7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3OENDREQ4MTkzQUM5RTMwMDVF
Q0MyNSAvKiBjb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtpbmcuc2IgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29tLmFwcGxlLldl
YktpdC5OZXR3b3JraW5nLnNiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzhDQ0RE
OTE5M0FDOUUzMDA1RUNDMjUgLyogY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTM4MzAsNyArMzgzMCw3IEBACiAJCUU0ODlEMjg4MUEwQTJEQjgwMDc4QzA2QSAvKiBO
ZXR3b3JrQ2FjaGVFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE5ldHdvcmtDYWNoZUVuY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFNDg5RDI4OTFBMEEyREI4MDA3OEMwNkEgLyogTmV0d29ya0NhY2hlRW5jb2Rlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQ2FjaGVFbmNvZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYwMzY5Nzg3MTVGNEJGMDUwMEMzQTgwRSAvKiBXZWJD
b2xvclBpY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJD
b2xvclBpY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUY2MTEzRTI0MTI2
Q0UxODIwMDU3RDBBNyAvKiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2MTEzRTI0MTI2Q0UxODIwMDU3RDBBNyAvKiBBUElVc2Vy
Q29udGVudFVSTFBhdHRlcm4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJ
VXNlckNvbnRlbnRVUkxQYXR0ZXJuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2
MTEzRTI2MTI2Q0UxOUIwMDU3RDBBNyAvKiBXS1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1VzZXJDb250ZW50VVJMUGF0dGVy
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2MTEzRTI3MTI2Q0UxOUIwMDU3
RDBBNyAvKiBXS1VzZXJDb250ZW50VVJMUGF0dGVybi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS1VzZXJDb250ZW50VVJMUGF0dGVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGNjJBNzY1NzEyQjFBQjdEMDAwNUYxQjYgLyogV2ViRGF0YWJhc2VNYW5hZ2Vy
Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkRhdGFiYXNlTWFuYWdlci5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM4NDMsNyArMzg0Myw3
IEBACiAJCUY2MkE3NkIzMTJCMUIyNUYwMDA1RjFCNiAvKiBXZWJEYXRhYmFzZU1hbmFnZXJNZXNz
YWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEYXRhYmFzZU1hbmFn
ZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNjJBNzZCNDEyQjFC
MjVGMDAwNUYxQjYgLyogV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViRGF0YWJhc2VNYW5hZ2Vy
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
NjJBNzZCNTEyQjFCMjVGMDAwNUYxQjYgLyogV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHlNZXNzYWdl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEYXRhYmFzZU1hbmFnZXJQ
cm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUY2MzQ0NDU1MTJB
ODg1QzgwMDA2MTJEOCAvKiBXZWJTZWN1cml0eU9yaWdpbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJTZWN1cml0eU9yaWdpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGNjM0NDQ1NTEyQTg4NUM4MDAwNjEyRDggLyogQVBJU2VjdXJpdHlPcmlnaW4uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJU2VjdXJpdHlPcmlnaW4uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjYzNDQ0NUExMkE4ODVFOTAwMDYxMkQ4IC8qIFdL
U2VjdXJpdHlPcmlnaW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V0tTZWN1cml0eU9yaWdpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2MzQ0
NDVCMTJBODg1RTkwMDA2MTJEOCAvKiBXS1NlY3VyaXR5T3JpZ2luLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdLU2VjdXJpdHlPcmlnaW4uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjYzODk1NEYxMzNCRUYzODAwODk0MUQ1IC8qIEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRUUENvb2tpZUFjY2Vw
dFBvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDYyMSwxMCArNDYyMSw3
IEBACiAJCQkJMzc5NDg0MDIxNTBDMzUwNjAwRTUyQ0U5IC8qIFdlYlJlbmRlckxheWVyLmggKi8s
CiAJCQkJMzc2MDg4MUMxNTA0MTNFOTAwRkM4MkM3IC8qIFdlYlJlbmRlck9iamVjdC5jcHAgKi8s
CiAJCQkJMzc2MDg4MUQxNTA0MTNFOTAwRkM4MkM3IC8qIFdlYlJlbmRlck9iamVjdC5oICovLAot
CQkJCUY2MzQ0NDU1MTJBODg1QzgwMDA2MTJEOCAvKiBXZWJTZWN1cml0eU9yaWdpbi5oICovLAot
CQkJCUE3MkQ1RDdGMTIzNkNCQTgwMEE4OEIxNSAvKiBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUu
aCAqLywKIAkJCQlDMDMzN0RENzEyN0E1MUI2MDA4RkY0RjQgLyogV2ViVG91Y2hFdmVudC5jcHAg
Ki8sCi0JCQkJRjYxMTNFMjQxMjZDRTE4MjAwNTdEMEE3IC8qIFdlYlVzZXJDb250ZW50VVJMUGF0
dGVybi5oICovLAogCQkJCUMwMzM3REQwMTI3QTI5ODAwMDhGRjRGNCAvKiBXZWJXaGVlbEV2ZW50
LmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gU2hhcmVkOwpAQCAtNjc5MSw2ICs2Nzg4LDkgQEAK
IAkJCWNoaWxkcmVuID0gKAogCQkJCUJDRERCMzE1MTI0RUJDRkUwMDQ4RDEzQyAvKiBDICovLAog
CQkJCTM3REZBNkZFMTgxMEJCMkQwMDFGNEE5RiAvKiBDb2NvYSAqLywKKwkJCQlGNjM0NDQ1NTEy
QTg4NUM4MDAwNjEyRDggLyogQVBJU2VjdXJpdHlPcmlnaW4uaCAqLywKKwkJCQlBNzJENUQ3RjEy
MzZDQkE4MDBBODhCMTUgLyogQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggKi8sCisJCQkJRjYx
MTNFMjQxMjZDRTE4MjAwNTdEMEE3IC8qIEFQSVVzZXJDb250ZW50VVJMUGF0dGVybi5oICovLAog
CQkJKTsKIAkJCXBhdGggPSBBUEk7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzc5
MCw3ICs3NzkwLDcgQEAKIAkJCQkxQTAwMkQ0NDE5NkIzMzg5MDBCOUFENDQgLyogX1dLU2Vzc2lv
blN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlEM0I5NDg0OTExRkY0QjY1MDAwMzJCMzkgLyog
V2ViU2VhcmNoUG9wdXBNZW51LmggaW4gSGVhZGVycyAqLywKIAkJCQkxRkIwMEFDOTE4NUY3NjQ2
MDAxOTE0MkUgLyogV0tXZWJQcm9jZXNzUGx1Z0luUGFnZUdyb3VwSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAotCQkJCUY2MzQ0NDU2MTJBODg1QzgwMDA2MTJEOCAvKiBXZWJTZWN1cml0eU9yaWdp
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjYzNDQ0NTYxMkE4ODVDODAwMDYxMkQ4IC8qIEFQSVNl
Y3VyaXR5T3JpZ2luLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0M1NzE1QjExNUFEQUVGMDAxQ0NB
RjkgLyogV2ViU3lzdGVtSW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0EwRUY3RjEy
MzMxRTc4MDA3RDNDRkIgLyogV2ViVW5kb1N0ZXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzEz
MzZDMTg1NjVDN0EwMEYzRUMwNSAvKiBBUElQYWdlSGFuZGxlLmggaW4gSGVhZGVycyAqLywKQEAg
LTc4MDEsNyArNzgwMSw3IEBACiAJCQkJNTFDOTYxMTkxODNEMjk0NzAwRDIwMDJFIC8qIFdlYklE
QlNlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFMjMxNUQx
MjJDMzBDQTAwRDVDMzVBIC8qIEFQSVVSTFJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
OTBBMUQyMTIyREQ1NUUwMENDOEM1MCAvKiBBUElVUkxSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJRjYxMTNFMjUxMjZDRTE4MjAwNTdEMEE3IC8qIFdlYlVzZXJDb250ZW50VVJMUGF0dGVy
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjYxMTNFMjUxMjZDRTE4MjAwNTdEMEE3IC8qIEFQSVVz
ZXJDb250ZW50VVJMUGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlDRDU1QUExMjhFMjk0
RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0REQjMyRDEyNEVDMkUxMDA0OEQxM0MgLyogV0tBUElDYXN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTJFMzRFNTEzMEI0RDA1MDBBQkQxOUEgLyogV0tBcHBsaWNhdGlvbkNh
Y2hlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVu
dC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5q
ZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaAppbmRleCAwMzgwNDFiY2ZhZTdlM2Y2Mjg0MDdlYzll
MWVhYWQ0YWRmZDRiODMzLi40MTQwYWI5NjljOTgwZDA3NjllYzA1NzU4YzJjZGFhODkwZmY4OTI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50
LmgKQEAgLTM1LDEyICszNSwxMiBAQCBjbGFzcyBIaXRUZXN0UmVzdWx0OwogbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYlBhZ2U7Ci1jbGFzcyBXZWJTZWN1cml0
eU9yaWdpbjsKIH0KIAogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIE9iamVjdDsKK2NsYXNzIFNl
Y3VyaXR5T3JpZ2luOwogCiBuYW1lc3BhY2UgSW5qZWN0ZWRCdW5kbGUgewogCkBAIC02OSw4ICs2
OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFVJRWxlbWVudFZpc2liaWxpdHkgbWVudUJhcklz
VmlzaWJsZShXZWJLaXQ6OldlYlBhZ2UqKSB7IHJldHVybiBVSUVsZW1lbnRWaXNpYmlsaXR5OjpV
bmtub3duOyB9CiAgICAgdmlydHVhbCBVSUVsZW1lbnRWaXNpYmlsaXR5IHRvb2xiYXJzQXJlVmlz
aWJsZShXZWJLaXQ6OldlYlBhZ2UqKSB7IHJldHVybiBVSUVsZW1lbnRWaXNpYmlsaXR5OjpVbmtu
b3duOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgZGlkUmVhY2hBcHBsaWNhdGlvbkNhY2hlT3JpZ2lu
UXVvdGEoV2ViS2l0OjpXZWJQYWdlKiwgV2ViS2l0OjpXZWJTZWN1cml0eU9yaWdpbiosIGludDY0
X3QgdG90YWxCeXRlc05lZWRlZCkgeyBVTlVTRURfUEFSQU0odG90YWxCeXRlc05lZWRlZCk7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdWludDY0X3QgZGlkRXhjZWVkRGF0YWJhc2VRdW90
YShXZWJLaXQ6OldlYlBhZ2UqLCBXZWJLaXQ6OldlYlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV1RG
OjpTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIGRhdGFiYXNlRGlzcGxh
eU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YUJ5dGVzLCB1aW50NjRfdCBjdXJyZW50T3JpZ2lu
VXNhZ2VCeXRlcywgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2VCeXRlcywgdWludDY0X3Qg
ZXhwZWN0ZWRVc2FnZUJ5dGVzKQorICAgIHZpcnR1YWwgYm9vbCBkaWRSZWFjaEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5RdW90YShXZWJLaXQ6OldlYlBhZ2UqLCBTZWN1cml0eU9yaWdpbiosIGludDY0
X3QgdG90YWxCeXRlc05lZWRlZCkgeyBVTlVTRURfUEFSQU0odG90YWxCeXRlc05lZWRlZCk7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdWludDY0X3QgZGlkRXhjZWVkRGF0YWJhc2VRdW90
YShXZWJLaXQ6OldlYlBhZ2UqLCBTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdURjo6U3RyaW5nJiBk
YXRhYmFzZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBkYXRhYmFzZURpc3BsYXlOYW1lLCB1aW50
NjRfdCBjdXJyZW50UXVvdGFCeXRlcywgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlQnl0ZXMs
IHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlQnl0ZXMsIHVpbnQ2NF90IGV4cGVjdGVkVXNh
Z2VCeXRlcykKICAgICB7CiAgICAgICAgIFVOVVNFRF9QQVJBTShkYXRhYmFzZU5hbWUpOwogICAg
ICAgICBVTlVTRURfUEFSQU0oZGF0YWJhc2VEaXNwbGF5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZUZyYW1lLmNwcAppbmRleCA0YzAxMzRmYjMzODEwZWM5NzY2NzU0MWNkYzZhOTAzZjMzYzc0
MjdiLi41ZjU3NTJjNDYxNDA1ZTk4ZmIxNjAyMTE1ZjgwNGI2ZGNiNmJhNjAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJXS0J1
bmRsZUZyYW1lUHJpdmF0ZS5oIgogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKKyNpbmNsdWRlICJB
UElTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3Vs
dC5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oIgogI2luY2x1ZGUgIklu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaCIKQEAgLTM2LDcgKzM3LDYgQEAKICNpbmNsdWRlICJX
S0J1bmRsZUFQSUNhc3QuaCIKICNpbmNsdWRlICJXS0RhdGEuaCIKICNpbmNsdWRlICJXZWJGcmFt
ZS5oIgotI2luY2x1ZGUgIldlYlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9E
b2N1bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9jdXNDb250cm9sbGVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9GcmFtZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xp
ZW50LmNwcAppbmRleCA5YzYzMTcxY2RmYWRhMzhlYTlhOWRkNzJiZTRjMGEwNWY0NDE0MzljLi41
NGMyNGFlMjA1MTc3ODYzZjhhYjgyZTEwNzUwOTMyYjRkODQ5ODk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJ
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcApAQCAtMjYsMTEgKzI2LDExIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaCIK
IAorI2luY2x1ZGUgIkFQSVNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5k
bGVIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tC
dW5kbGVBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKLSNpbmNsdWRlICJXZWJTZWN1
cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKQEAgLTE0Nyw3ICsxNDcsNyBAQCBBUEk6OkluamVjdGVkQnVuZGxl
OjpQYWdlVUlDbGllbnQ6OlVJRWxlbWVudFZpc2liaWxpdHkgSW5qZWN0ZWRCdW5kbGVQYWdlVUlD
bGllbgogICAgIHJldHVybiB0b1VJRWxlbWVudFZpc2liaWxpdHkobV9jbGllbnQudG9vbGJhcnNB
cmVWaXNpYmxlKHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsKIH0KIAot
Ym9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6ZGlkUmVhY2hBcHBsaWNhdGlvbkNhY2hl
T3JpZ2luUXVvdGEoV2ViUGFnZSogcGFnZSwgV2ViU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgaW50
NjRfdCB0b3RhbEJ5dGVzTmVlZGVkKQorYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6
ZGlkUmVhY2hBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoV2ViUGFnZSogcGFnZSwgQVBJOjpT
ZWN1cml0eU9yaWdpbiogb3JpZ2luLCBpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQpCiB7CiAgICAg
aWYgKCFtX2NsaWVudC5kaWRSZWFjaEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTU2LDcgKzE1Niw3IEBAIGJvb2wgSW5qZWN0ZWRCdW5kbGVQ
YWdlVUlDbGllbnQ6OmRpZFJlYWNoQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdlYlBhZ2Uq
IHBhCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXVpbnQ2NF90IEluamVjdGVkQnVuZGxlUGFnZVVJ
Q2xpZW50OjpkaWRFeGNlZWREYXRhYmFzZVF1b3RhKFdlYlBhZ2UqIHBhZ2UsIFdlYlNlY3VyaXR5
T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcm
IGRhdGFiYXNlRGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YUJ5dGVzLCB1aW50NjRf
dCBjdXJyZW50T3JpZ2luVXNhZ2VCeXRlcywgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2VC
eXRlcywgdWludDY0X3QgZXhwZWN0ZWRVc2FnZUJ5dGVzKQordWludDY0X3QgSW5qZWN0ZWRCdW5k
bGVQYWdlVUlDbGllbnQ6OmRpZEV4Y2VlZERhdGFiYXNlUXVvdGEoV2ViUGFnZSogcGFnZSwgQVBJ
OjpTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29u
c3QgU3RyaW5nJiBkYXRhYmFzZURpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGFCeXRl
cywgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlQnl0ZXMsIHVpbnQ2NF90IGN1cnJlbnREYXRh
YmFzZVVzYWdlQnl0ZXMsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2VCeXRlcykKIHsKICAgICBpZiAo
IW1fY2xpZW50LmRpZEV4Y2VlZERhdGFiYXNlUXVvdGEpCiAgICAgICAgIHJldHVybiAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oCmluZGV4IDYzYTRhYmI0NTJjNmUx
NzU5MDMxYWM5YWY1NGQyODg3YWQzNDI3ZjUuLjc2Njk1YzQwZjI4ODAyOWI2OTEwZWQ2YjZjNTY1
YWFiOWZhMDU2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmgK
QEAgLTYyLDggKzYyLDggQEAgcHVibGljOgogICAgIFVJRWxlbWVudFZpc2liaWxpdHkgbWVudUJh
cklzVmlzaWJsZShXZWJQYWdlKikgb3ZlcnJpZGU7CiAgICAgVUlFbGVtZW50VmlzaWJpbGl0eSB0
b29sYmFyc0FyZVZpc2libGUoV2ViUGFnZSopIG92ZXJyaWRlOwogCi0gICAgYm9vbCBkaWRSZWFj
aEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXZWJQYWdlKiwgV2ViU2VjdXJpdHlPcmlnaW4q
LCBpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQpIG92ZXJyaWRlOwotICAgIHVpbnQ2NF90IGRpZEV4
Y2VlZERhdGFiYXNlUXVvdGEoV2ViUGFnZSosIFdlYlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3Ry
aW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXNwbGF5TmFtZSwgdWlu
dDY0X3QgY3VycmVudFF1b3RhQnl0ZXMsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZUJ5dGVz
LCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZUJ5dGVzLCB1aW50NjRfdCBleHBlY3RlZFVz
YWdlQnl0ZXMpIG92ZXJyaWRlOworICAgIGJvb2wgZGlkUmVhY2hBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGEoV2ViUGFnZSosIEFQSTo6U2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90IHRvdGFsQnl0
ZXNOZWVkZWQpIG92ZXJyaWRlOworICAgIHVpbnQ2NF90IGRpZEV4Y2VlZERhdGFiYXNlUXVvdGEo
V2ViUGFnZSosIEFQSTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFt
ZSwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVv
dGFCeXRlcywgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlQnl0ZXMsIHVpbnQ2NF90IGN1cnJl
bnREYXRhYmFzZVVzYWdlQnl0ZXMsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2VCeXRlcykgb3ZlcnJp
ZGU7CiAKICAgICBTdHJpbmcgcGx1Z0luU3RhcnRMYWJlbFRpdGxlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBwbHVnSW5TdGFydExhYmVsU3VidGl0
bGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAKaW5kZXggYjhkZmRmMTRkNWZhZWNhYjM2YTMxOWFlNGUwZjBhNWNmOTFmYjI1ZS4u
NzRkYmRlN2Q5NDA0OGU1YTU1YTExMmE2ODk0ZTU1ODdjYTcxZTJhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIldlYkNocm9tZUNsaWVudC5oIgogCisjaW5jbHVkZSAiQVBJU2VjdXJpdHlPcmlnaW4uaCIK
ICNpbmNsdWRlICJEcmF3aW5nQXJlYS5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlTmF2aWdh
dGlvbkFjdGlvbi5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMu
aCIKQEAgLTQ4LDcgKzQ5LDYgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTZWFyY2hQb3B1cE1lbnUu
aCIKLSNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FYT2JqZWN0Q2FjaGUu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yQ2hvb3Nlci5oPgpAQCAtNjgxLDggKzY4MSw4IEBA
IHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpleGNlZWRlZERhdGFiYXNlUXVvdGEoRnJhbWUqIGZyYW1l
LCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlCiAgICAgdWludDY0X3QgY3VycmVudFF1b3RhID0gZGJN
YW5hZ2VyLnF1b3RhRm9yT3JpZ2luKG9yaWdpbik7CiAgICAgdWludDY0X3QgY3VycmVudE9yaWdp
blVzYWdlID0gZGJNYW5hZ2VyLnVzYWdlRm9yT3JpZ2luKG9yaWdpbik7CiAgICAgdWludDY0X3Qg
bmV3UXVvdGEgPSAwOwotICAgIFJlZlB0cjxXZWJTZWN1cml0eU9yaWdpbj4gd2ViU2VjdXJpdHlP
cmlnaW4gPSBXZWJTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVy
KCkpKTsKLSAgICBuZXdRdW90YSA9IG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpLmRp
ZEV4Y2VlZERhdGFiYXNlUXVvdGEobV9wYWdlLCB3ZWJTZWN1cml0eU9yaWdpbi5nZXQoKSwgZGF0
YWJhc2VOYW1lLCBkZXRhaWxzLmRpc3BsYXlOYW1lKCksIGN1cnJlbnRRdW90YSwgY3VycmVudE9y
aWdpblVzYWdlLCBkZXRhaWxzLmN1cnJlbnRVc2FnZSgpLCBkZXRhaWxzLmV4cGVjdGVkVXNhZ2Uo
KSk7CisgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJ
OjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVG
cm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkpKTsKKyAg
ICBuZXdRdW90YSA9IG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpLmRpZEV4Y2VlZERh
dGFiYXNlUXVvdGEobV9wYWdlLCBzZWN1cml0eU9yaWdpbi5nZXQoKSwgZGF0YWJhc2VOYW1lLCBk
ZXRhaWxzLmRpc3BsYXlOYW1lKCksIGN1cnJlbnRRdW90YSwgY3VycmVudE9yaWdpblVzYWdlLCBk
ZXRhaWxzLmN1cnJlbnRVc2FnZSgpLCBkZXRhaWxzLmV4cGVjdGVkVXNhZ2UoKSk7CiAKICAgICBp
ZiAoIW5ld1F1b3RhKSB7CiAgICAgICAgIHVuc2lnbmVkIHN5bmNTZW5kRmxhZ3MgPSBJUEM6Oklu
Zm9ybVBsYXRmb3JtUHJvY2Vzc1dpbGxTdXNwZW5kOwpAQCAtNzA2LDggKzcwNiw4IEBAIHZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3QpCiAKIHZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3Vy
aXR5T3JpZ2luKiBvcmlnaW4sIGludDY0X3QgdG90YWxCeXRlc05lZWRlZCkKIHsKLSAgICBSZWZQ
dHI8V2ViU2VjdXJpdHlPcmlnaW4+IHdlYlNlY3VyaXR5T3JpZ2luID0gV2ViU2VjdXJpdHlPcmln
aW46OmNyZWF0ZUZyb21TdHJpbmcob3JpZ2luLT50b1N0cmluZygpKTsKLSAgICBpZiAobV9wYWdl
LT5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkuZGlkUmVhY2hBcHBsaWNhdGlvbkNhY2hlT3JpZ2lu
UXVvdGEobV9wYWdlLCB3ZWJTZWN1cml0eU9yaWdpbi5nZXQoKSwgdG90YWxCeXRlc05lZWRlZCkp
CisgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJOjpT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW4tPnRvU3RyaW5nKCkpOworICAg
IGlmIChtX3BhZ2UtPmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5kaWRSZWFjaEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5RdW90YShtX3BhZ2UsIHNlY3VyaXR5T3JpZ2luLmdldCgpLCB0b3RhbEJ5dGVz
TmVlZGVkKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdW5zaWduZWQgc3luY1NlbmRGbGFncyA9
IElQQzo6SW5mb3JtUGxhdGZvcm1Qcm9jZXNzV2lsbFN1c3BlbmQ7Cg==
</data>
<flag name="review"
          id="268531"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>