<?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>102049</bug_id>
          
          <creation_ts>2012-11-12 22:46:57 -0800</creation_ts>
          <short_desc>Split NetworkRequest up into a request class and a loading class</short_desc>
          <delta_ts>2012-11-13 20:36:57 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>98537</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>levin+threading</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>765266</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-11-12 22:46:57 -0800</bug_when>
    <thetext>Split NetworkRequest up into a request class and a loading class

Sam and I discussed this today how NetworkRequest is a terrible class to do loading.  It&apos;s better to have one class represent &quot;all the bits of data needed to start a network load&quot;, and &quot;the owner of the network load itself&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765273</commentid>
    <comment_count>1</comment_count>
      <attachid>173827</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-11-12 22:52:20 -0800</bug_when>
    <thetext>Created attachment 173827
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765274</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-12 22:55:26 -0800</bug_when>
    <thetext>Attachment 173827 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/NetworkProcess/HostRecord.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit2/NetworkProcess/NetworkResourceLoadScheduler.cpp:8:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit2/Shared/Network/NetworkResourceLoadParameters.h:35:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 3 in 14 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>765801</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-11-13 10:49:04 -0800</bug_when>
    <thetext>Fixed style errors locally</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765818</commentid>
    <comment_count>4</comment_count>
      <attachid>173827</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-11-13 11:00:18 -0800</bug_when>
    <thetext>Comment on attachment 173827
Patch v1

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

Great idea!

&gt; Source/WebKit2/ChangeLog:10
&gt; +        This patch splits it into &quot;NetworkResourceLoadParameters&quot; for all request-related data

Can the former keep the NetworkRequest name?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766029</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-11-13 14:01:26 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 173827 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=173827&amp;action=review
&gt; 
&gt; Great idea!
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:10
&gt; &gt; +        This patch splits it into &quot;NetworkResourceLoadParameters&quot; for all request-related data
&gt; 
&gt; Can the former keep the NetworkRequest name?

I started out keeping that name, but the naming started to fall apart as the &quot;request&quot; contained a &quot;request&quot; and it also contained datum not related directly to the request.

I also noticed that - from the perspective of WebCore in the WebProcess - this data represents a &quot;ResourceLoader&quot; that has already been created.

I&apos;m definitely open to discussion and suggestions on this naming, but I&apos;m going to land as-is since any changes are an easy substitution followup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766035</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-11-13 14:06:15 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/134481</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173827</attachid>
            <date>2012-11-12 22:52:20 -0800</date>
            <delta_ts>2012-11-13 11:00:17 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>60163</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0OTU0YTQ3Li5mMmJhYzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTAg
QEAKKzIwMTItMTEtMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFNwbGl0IE5ldHdvcmtSZXF1ZXN0IHVwIGludG8gYSByZXF1ZXN0IGNsYXNzIGFuZCBhIGxv
YWRpbmcgY2xhc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDIwNDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBOZXR3b3JrUmVxdWVzdCB1bmludGVudGlvbmFsbHkgZ3JldyBpbnRvIGEgY2xhc3MgdGhh
dCBtYW5hZ2VkIGFjdHVhbCBsb2FkaW5nLgorCisgICAgICAgIFRoaXMgcGF0Y2ggc3BsaXRzIGl0
IGludG8gIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIiBmb3IgYWxsIHJlcXVlc3QtcmVs
YXRlZCBkYXRhCisgICAgICAgIGFuZCAiTmV0d29ya1Jlc291cmNlTG9hZGVyIiBmb3IgaGFuZGxp
bmcgdGhlIGFjdHVhbCBsb2FkIGl0c2VsZi4KKworICAgICAgICBDaGFuZ2UgSG9zdFJlY29yZCB0
byBtYW5hZ2UgTmV0d29ya1Jlc291cmNlTG9hZGVycyBpbnN0ZWFkIG9mIE5ldHdvcmtSZXF1ZXN0
czoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Ib3N0UmVjb3JkLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6SG9zdFJlY29yZDo6fkhvc3RSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpIb3N0UmVj
b3JkOjpzY2hlZHVsZSk6CisgICAgICAgIChXZWJLaXQ6Okhvc3RSZWNvcmQ6OmFkZExvYWRJblBy
b2dyZXNzKToKKyAgICAgICAgKFdlYktpdDo6SG9zdFJlY29yZDo6cmVtb3ZlKToKKyAgICAgICAg
KFdlYktpdDo6SG9zdFJlY29yZDo6aGFzUmVxdWVzdHMpOgorICAgICAgICAoV2ViS2l0OjpIb3N0
UmVjb3JkOjpsaW1pdFJlcXVlc3RzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Ib3N0UmVj
b3JkLmg6CisgICAgICAgIChXZWJLaXQ6Okhvc3RSZWNvcmQ6OmxvYWRlcnNQZW5kaW5nKToKKwor
ICAgICAgICBBIG5ldyBjbGFzcyB0byBiZSBhIGNvbnRhaW5lciBmb3IgYWxsIHRoZSBkYXRhIHJl
cXVpcmVkIHRvIHN0YXJ0IGEgbmV0d29yayBsb2FkOgorICAgICAgICAqIFNoYXJlZC9OZXR3b3Jr
L05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29k
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNv
ZGUpOgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpy
ZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6
OnByaW9yaXR5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnM6OmNvbnRlbnRTbmlmZmluZ1BvbGljeSk6CisKKyAgICAgICAgUGFzcyBhIHNpbmdsZSBOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBhcm91bmQgaW5zdGVhZCBvZiBtdWx0aXBsZSBiaXRz
IG9mIGRhdGE6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6c2NoZWR1bGVSZXNvdXJjZUxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlUmVzb3VyY2VMb2Fk
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6c2VydmVQ
ZW5kaW5nUmVxdWVzdHNGb3JIb3N0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmg6CisKKyAgICAgICAgVGhlIGFjdHVhbCBSZXNvdXJjZUhh
bmRsZUNsaWVudCB0aGF0IGRvZXMgdGhlIGFjdHVhbCBsb2FkaW5nOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVxdWVzdC5jcHAuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp+TmV0d29ya1Jlc291cmNlTG9hZGVy
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpwcmlvcml0eSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQpOgorICAgICAgICAo
V2ViS2l0OjpyZXF1ZXN0c1RvU3RvcE11dGV4KToKKyAgICAgICAgKFdlYktpdDo6cmVxdWVzdHNU
b1N0b3ApOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNjaGVkdWxl
U3RvcE9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6cGVyZm9ybVN0b3BzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
OjpzdG9wKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb25uZWN0
aW9uVG9XZWJQcm9jZXNzRGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpyZXNwb25zZU1h
cCk6CisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlV2lsbFNlbmRSZXF1ZXN0SUQpOgorICAgICAg
ICAoV2ViS2l0OjpkaWRSZWNlaXZlV2lsbFNlbmRSZXF1ZXN0SGFuZGxlZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRTZW5kRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp3YXNCbG9ja2VkKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjYW5ub3RTaG93VVJMKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25zZSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6ZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJlY2VpdmVkQ2FuY2VsbGF0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjYW5BdXRoZW50aWNh
dGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjpzdXBwb3J0c0RhdGFBcnJheSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFBcnJheSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFN0b3BCdWZmZXJpbmdEYXRhKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjcmVhdGVBc3luY0ZpbGVTdHJlYW0pOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisKKyAgICAgICAg
KiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZUxvYWQpOgorCiAyMDEyLTExLTEy
ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgSW5jbHVk
ZSBjaGlsZCBsYXllcnMgaW4gdGhlIHJlbW90ZSBsYXllciB0cmVlIHRyYW5zYWN0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Ib3N0UmVjb3JkLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0hvc3RSZWNvcmQuY3BwCmluZGV4IDlkNzhkNDMu
Ljk2NmQ2OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0hvc3RS
ZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0hvc3RSZWNvcmQu
Y3BwCkBAIC0yOSw3ICsyOSw4IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3Mu
aCIKLSNpbmNsdWRlICJOZXR3b3JrUmVxdWVzdC5oIgorI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oIgorI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCiAj
aW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlci5oIgogCiAjaWYgRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKQEAgLTQ3LDIwICs0OCwyMCBAQCBIb3N0UmVjb3JkOjpIb3N0UmVjb3Jk
KGNvbnN0IFN0cmluZyYgbmFtZSwgaW50IG1heFJlcXVlc3RzSW5GbGlnaHQpCiBIb3N0UmVjb3Jk
Ojp+SG9zdFJlY29yZCgpCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIEFTU0VSVChtX3JlcXVlc3Rz
TG9hZGluZy5pc0VtcHR5KCkpOworICAgIEFTU0VSVChtX3Jlc291cmNlSWRlbnRpZmllcnNMb2Fk
aW5nLmlzRW1wdHkoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBwID0gMDsgcCA8PSBSZXNvdXJjZUxv
YWRQcmlvcml0eUhpZ2hlc3Q7IHArKykKLSAgICAgICAgQVNTRVJUKG1fcmVxdWVzdHNQZW5kaW5n
W3BdLmlzRW1wdHkoKSk7CisgICAgICAgIEFTU0VSVChtX2xvYWRlcnNQZW5kaW5nW3BdLmlzRW1w
dHkoKSk7CiAjZW5kaWYKIH0KIAotdm9pZCBIb3N0UmVjb3JkOjpzY2hlZHVsZShQYXNzUmVmUHRy
PE5ldHdvcmtSZXF1ZXN0PiByZWNvcmQsICBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSkK
K3ZvaWQgSG9zdFJlY29yZDo6c2NoZWR1bGUoUGFzc1JlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI+IGxvYWRlcikKIHsKLSAgICBtX3JlcXVlc3RzUGVuZGluZ1twcmlvcml0eV0uYXBwZW5kKHJl
Y29yZCk7CisgICAgbV9sb2FkZXJzUGVuZGluZ1tsb2FkZXItPnByaW9yaXR5KCldLmFwcGVuZChs
b2FkZXIpOwogfQogCiB2b2lkIEhvc3RSZWNvcmQ6OmFkZExvYWRJblByb2dyZXNzKFJlc291cmNl
TG9hZElkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBtX3JlcXVlc3RzTG9hZGluZy5hZGQo
aWRlbnRpZmllcik7CisgICAgbV9yZXNvdXJjZUlkZW50aWZpZXJzTG9hZGluZy5hZGQoaWRlbnRp
Zmllcik7CiB9CiAKIHZvaWQgSG9zdFJlY29yZDo6cmVtb3ZlKFJlc291cmNlTG9hZElkZW50aWZp
ZXIgaWRlbnRpZmllcikKQEAgLTY4LDE2ICs2OSwxNiBAQCB2b2lkIEhvc3RSZWNvcmQ6OnJlbW92
ZShSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgLy8gRklYTUUgKE5ldHdv
cmtQcm9jZXNzKTogRHVlIHRvIElQQyByYWNlIGNvbmRpdGlvbnMsIGl0J3MgcG9zc2libGUgdGhp
cyBIb3N0UmVjb3JkIHdpbGwgYmUgYXNrZWQgdG8gcmVtb3ZlIHRoZSBzYW1lIGlkZW50aWZlciB0
d2ljZS4KICAgICAvLyBJdCB3b3VsZCBiZSBuaWNlIHRvIGtub3cgdGhlIGlkZW50aWZpZXIgaGFz
IGFscmVhZHkgYmVlbiByZW1vdmVkIGFuZCB0cmVhdCBpdCBhcyBhIG5vLW9wLgogCi0gICAgaWYg
KG1fcmVxdWVzdHNMb2FkaW5nLmNvbnRhaW5zKGlkZW50aWZpZXIpKSB7Ci0gICAgICAgIG1fcmVx
dWVzdHNMb2FkaW5nLnJlbW92ZShpZGVudGlmaWVyKTsKKyAgICBpZiAobV9yZXNvdXJjZUlkZW50
aWZpZXJzTG9hZGluZy5jb250YWlucyhpZGVudGlmaWVyKSkgeworICAgICAgICBtX3Jlc291cmNl
SWRlbnRpZmllcnNMb2FkaW5nLnJlbW92ZShpZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKICAgICBmb3IgKGludCBwcmlvcml0eSA9IFJlc291cmNlTG9hZFByaW9yaXR5
SGlnaGVzdDsgcHJpb3JpdHkgPj0gUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3dlc3Q7IC0tcHJpb3Jp
dHkpIHsgIAotICAgICAgICBSZXF1ZXN0UXVldWU6Oml0ZXJhdG9yIGVuZCA9IG1fcmVxdWVzdHNQ
ZW5kaW5nW3ByaW9yaXR5XS5lbmQoKTsKLSAgICAgICAgZm9yIChSZXF1ZXN0UXVldWU6Oml0ZXJh
dG9yIGl0ID0gbV9yZXF1ZXN0c1BlbmRpbmdbcHJpb3JpdHldLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgeworICAgICAgICBMb2FkZXJRdWV1ZTo6aXRlcmF0b3IgZW5kID0gbV9sb2FkZXJzUGVu
ZGluZ1twcmlvcml0eV0uZW5kKCk7CisgICAgICAgIGZvciAoTG9hZGVyUXVldWU6Oml0ZXJhdG9y
IGl0ID0gbV9sb2FkZXJzUGVuZGluZ1twcmlvcml0eV0uYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KSB7CiAgICAgICAgICAgICBpZiAoaXQtPmdldCgpLT5pZGVudGlmaWVyKCkgPT0gaWRlbnRpZmll
cikgewotICAgICAgICAgICAgICAgIG1fcmVxdWVzdHNQZW5kaW5nW3ByaW9yaXR5XS5yZW1vdmUo
aXQpOworICAgICAgICAgICAgICAgIG1fbG9hZGVyc1BlbmRpbmdbcHJpb3JpdHldLnJlbW92ZShp
dCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBA
IC04NiwxMSArODcsMTEgQEAgdm9pZCBIb3N0UmVjb3JkOjpyZW1vdmUoUmVzb3VyY2VMb2FkSWRl
bnRpZmllciBpZGVudGlmaWVyKQogCiBib29sIEhvc3RSZWNvcmQ6Omhhc1JlcXVlc3RzKCkgY29u
c3QKIHsKLSAgICBpZiAoIW1fcmVxdWVzdHNMb2FkaW5nLmlzRW1wdHkoKSkKKyAgICBpZiAoIW1f
cmVzb3VyY2VJZGVudGlmaWVyc0xvYWRpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIGZvciAodW5zaWduZWQgcCA9IDA7IHAgPD0gUmVzb3VyY2VMb2FkUHJpb3JpdHlI
aWdoZXN0OyBwKyspIHsKLSAgICAgICAgaWYgKCFtX3JlcXVlc3RzUGVuZGluZ1twXS5pc0VtcHR5
KCkpCisgICAgICAgIGlmICghbV9sb2FkZXJzUGVuZGluZ1twXS5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTk5LDEwICsxMDAsMTAgQEAgYm9vbCBIb3N0
UmVjb3JkOjpoYXNSZXF1ZXN0cygpIGNvbnN0CiAKIGJvb2wgSG9zdFJlY29yZDo6bGltaXRSZXF1
ZXN0cyhSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSwgYm9vbCBzZXJpYWxMb2FkaW5nRW5h
YmxlZCkgY29uc3QKIHsKLSAgICBpZiAocHJpb3JpdHkgPT0gUmVzb3VyY2VMb2FkUHJpb3JpdHlW
ZXJ5TG93ICYmICFtX3JlcXVlc3RzTG9hZGluZy5pc0VtcHR5KCkpCisgICAgaWYgKHByaW9yaXR5
ID09IFJlc291cmNlTG9hZFByaW9yaXR5VmVyeUxvdyAmJiAhbV9yZXNvdXJjZUlkZW50aWZpZXJz
TG9hZGluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgcmV0dXJuIG1f
cmVxdWVzdHNMb2FkaW5nLnNpemUoKSA+PSAoc2VyaWFsTG9hZGluZ0VuYWJsZWQgPyAxIDogbV9t
YXhSZXF1ZXN0c0luRmxpZ2h0KTsKKyAgICByZXR1cm4gbV9yZXNvdXJjZUlkZW50aWZpZXJzTG9h
ZGluZy5zaXplKCkgPj0gKHNlcmlhbExvYWRpbmdFbmFibGVkID8gMSA6IG1fbWF4UmVxdWVzdHNJ
bkZsaWdodCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvSG9zdFJlY29yZC5oIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvSG9zdFJlY29yZC5oCmluZGV4IGJlZDVkZjUuLjFiMjEzNzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0hvc3RSZWNvcmQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Ib3N0UmVjb3JkLmgKQEAgLTM1LDcgKzM1LDcgQEAK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIE5ldHdvcmtSZXF1ZXN0OworY2xhc3MgTmV0
d29ya1Jlc291cmNlTG9hZGVyOwogdHlwZWRlZiB1aW50NjRfdCBSZXNvdXJjZUxvYWRJZGVudGlm
aWVyOwogCiBjbGFzcyBIb3N0UmVjb3JkIHsKQEAgLTQ1LDE5ICs0NSwxOSBAQCBwdWJsaWM6CiAg
ICAgfkhvc3RSZWNvcmQoKTsKICAgICAKICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7
IHJldHVybiBtX25hbWU7IH0KLSAgICB2b2lkIHNjaGVkdWxlKFBhc3NSZWZQdHI8TmV0d29ya1Jl
cXVlc3Q+LCAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHkgPSBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRQcmlvcml0eVZlcnlMb3cpOworICAgIHZvaWQgc2NoZWR1bGUoUGFzc1JlZlB0cjxOZXR3
b3JrUmVzb3VyY2VMb2FkZXI+KTsKICAgICB2b2lkIGFkZExvYWRJblByb2dyZXNzKFJlc291cmNl
TG9hZElkZW50aWZpZXIpOwogICAgIHZvaWQgcmVtb3ZlKFJlc291cmNlTG9hZElkZW50aWZpZXIp
OwogICAgIGJvb2wgaGFzUmVxdWVzdHMoKSBjb25zdDsKICAgICBib29sIGxpbWl0UmVxdWVzdHMo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHksIGJvb2wgc2VyaWFsTG9hZGluZ0VuYWJsZWQp
IGNvbnN0OwogCi0gICAgdHlwZWRlZiBEZXF1ZTxSZWZQdHI8TmV0d29ya1JlcXVlc3Q+ID4gUmVx
dWVzdFF1ZXVlOwotICAgIFJlcXVlc3RRdWV1ZSYgcmVxdWVzdHNQZW5kaW5nKFdlYkNvcmU6OlJl
c291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KSB7IHJldHVybiBtX3JlcXVlc3RzUGVuZGluZ1tw
cmlvcml0eV07IH0KKyAgICB0eXBlZGVmIERlcXVlPFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI+ID4gTG9hZGVyUXVldWU7CisgICAgTG9hZGVyUXVldWUmIGxvYWRlcnNQZW5kaW5nKFdlYkNv
cmU6OlJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KSB7IHJldHVybiBtX2xvYWRlcnNQZW5k
aW5nW3ByaW9yaXR5XTsgfQogCiBwcml2YXRlOiAgICAgICAgICAgICAgICAgICAgCi0gICAgUmVx
dWVzdFF1ZXVlIG1fcmVxdWVzdHNQZW5kaW5nW1dlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5
SGlnaGVzdCArIDFdOwotICAgIHR5cGVkZWYgSGFzaFNldDxSZXNvdXJjZUxvYWRJZGVudGlmaWVy
PiBSZXF1ZXN0SWRlbnRpZmllck1hcDsKLSAgICBSZXF1ZXN0SWRlbnRpZmllck1hcCBtX3JlcXVl
c3RzTG9hZGluZzsKKyAgICBMb2FkZXJRdWV1ZSBtX2xvYWRlcnNQZW5kaW5nW1dlYkNvcmU6OlJl
c291cmNlTG9hZFByaW9yaXR5SGlnaGVzdCArIDFdOworICAgIHR5cGVkZWYgSGFzaFNldDxSZXNv
dXJjZUxvYWRJZGVudGlmaWVyPiBSZXNvdXJjZUxvYWRJZGVudGlmaWVyU2V0OworICAgIFJlc291
cmNlTG9hZElkZW50aWZpZXJTZXQgbV9yZXNvdXJjZUlkZW50aWZpZXJzTG9hZGluZzsKIAogICAg
IGNvbnN0IFN0cmluZyBtX25hbWU7CiAgICAgaW50IG1fbWF4UmVxdWVzdHNJbkZsaWdodDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBiNWQ2Y2VkLi5jMzc0NjE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlICJD
b25uZWN0aW9uU3RhY2suaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgotI2luY2x1ZGUg
Ik5ldHdvcmtSZXF1ZXN0LmgiCisjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVuTG9vcC5oPgpAQCAt
MTEwLDkgKzExMCw5IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJl
Y2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uCiB7CiB9CiAKLXZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNjaGVkdWxlTmV0d29ya1JlcXVlc3QoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCB1aW50MzJfdCByZXNvdXJjZUxvYWRQcmlvcml0eSwg
Ym9vbCBzaG91bGRDb250ZW50U25pZmYsIFJlc291cmNlTG9hZElkZW50aWZpZXImIHJlc291cmNl
TG9hZElkZW50aWZpZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzY2hl
ZHVsZVJlc291cmNlTG9hZChjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgbG9h
ZFBhcmFtZXRlcnMsIFJlc291cmNlTG9hZElkZW50aWZpZXImIHJlc291cmNlTG9hZElkZW50aWZp
ZXIpCiB7Ci0gICAgcmVzb3VyY2VMb2FkSWRlbnRpZmllciA9IE5ldHdvcmtQcm9jZXNzOjpzaGFy
ZWQoKS5uZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyKCkuc2NoZWR1bGVOZXR3b3JrUmVxdWVz
dChyZXF1ZXN0LCBzdGF0aWNfY2FzdDxSZXNvdXJjZUxvYWRQcmlvcml0eT4ocmVzb3VyY2VMb2Fk
UHJpb3JpdHkpLCBzaG91bGRDb250ZW50U25pZmYgPyBTbmlmZkNvbnRlbnQgOiBEb05vdFNuaWZm
Q29udGVudCwgdGhpcyk7CisgICAgcmVzb3VyY2VMb2FkSWRlbnRpZmllciA9IE5ldHdvcmtQcm9j
ZXNzOjpzaGFyZWQoKS5uZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyKCkuc2NoZWR1bGVSZXNv
dXJjZUxvYWQobG9hZFBhcmFtZXRlcnMsIHRoaXMpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjphZGRMb2FkSW5Qcm9ncmVzcyhjb25zdCBXZWJDb3JlOjpLVVJMJiB1
cmwsIFJlc291cmNlTG9hZElkZW50aWZpZXImIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaAppbmRleCAxZGQxZjExLi40MWQwNDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJ
UEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVTeW5jTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlKENvcmVJUEM6OkNv
bm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiwg
T3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYpOwogICAgIAotICAgIHZvaWQgc2NoZWR1
bGVOZXR3b3JrUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCB1aW50MzJf
dCByZXNvdXJjZUxvYWRQcmlvcml0eSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIFJlc291cmNl
TG9hZElkZW50aWZpZXImKTsKKyAgICB2b2lkIHNjaGVkdWxlUmVzb3VyY2VMb2FkKGNvbnN0IE5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciYpOwog
ICAgIHZvaWQgYWRkTG9hZEluUHJvZ3Jlc3MoY29uc3QgV2ViQ29yZTo6S1VSTCYsIFJlc291cmNl
TG9hZElkZW50aWZpZXImKTsKICAgICB2b2lkIHJlbW92ZUxvYWRJZGVudGlmaWVyKFJlc291cmNl
TG9hZElkZW50aWZpZXIpOwogICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJl
c291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHJlZGlyZWN0VVJMKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZmUyMzU4
Ny4uNWMwMTVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4KQEAgLTI4LDcgKzI4LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MgewogICAgIC8vIHRoYXQgd2Ugc3luY2hyb25vdXNseSBnZXQgYW4gaWRlbnRpZmllciBm
b3IgbmV3IFJlc291cmNlTG9hZGVycyBhcyB0aGV5IGFyZSBjcmVhdGVkLgogICAgIC8vIFRoZXJl
J3MgcG9zc2libGUgUmVzb3VyY2VMb2FkZXIgaWRlbnRpZmllciByZWZhY3RvcmluZyB0aGF0IGNh
biByZW1vdmUgdGhhdCByZXF1aXJlbWVudC4KICAgICAvLyBXZSBtaWdodCBhbHNvIGhhdmUgdGhl
IE5ldHdvcmtQcm9jZXNzIGRpdnZ5IHVwIGlkZW50aWZpZXJzIGluIGJsb2NrcyB0byBlYWNoIFdl
YlByb2Nlc3MgYmVmb3JlaGFuZC4KLSAgICBTY2hlZHVsZU5ldHdvcmtSZXF1ZXN0KFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCB1aW50MzJfdCByZXNvdXJjZUxvYWRQcmlvcml0eSwg
Ym9vbCBzaG91bGRDb250ZW50U25pZmYpIC0+ICh1aW50NjRfdCByZXNvdXJjZUxvYWRJZGVudGlm
aWVyKQorICAgIFNjaGVkdWxlUmVzb3VyY2VMb2FkKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMgcmVzb3VyY2VMb2FkUGFyYW1ldGVycykgLT4gKHVpbnQ2NF90IHJlc291cmNl
TG9hZElkZW50aWZpZXIpCiAgICAgQWRkTG9hZEluUHJvZ3Jlc3MoV2ViQ29yZTo6S1VSTCB1cmwp
IC0+ICh1aW50NjRfdCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKQogICAgIFJlbW92ZUxvYWRJZGVu
dGlmaWVyKHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIpCiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuY3BwCmluZGV4IDUwZDBlYTcuLmIxZjcwNzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuY3BwCkBAIC01LDcgKzUsOCBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNs
dWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzY29ubmVjdGlvbk1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiTmV0d29ya1JlcXVlc3QuaCIK
KyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC0zOCwxOCArMzksMjIgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpyZXF1ZXN0VGltZXJGaXJlZChXZWJDb3JlOjpUaW1l
cjxOZXR3b3JrUmVzb3UKICAgICBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cygpOwogfQogCi1SZXNvdXJj
ZUxvYWRJZGVudGlmaWVyIE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTmV0
d29ya1JlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUxvYWRQ
cmlvcml0eSBwcmlvcml0eSwgQ29udGVudFNuaWZmaW5nUG9saWN5IGNvbnRlbnRTbmlmZmluZ1Bv
bGljeSwgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24pCi17ICAgIAor
UmVzb3VyY2VMb2FkSWRlbnRpZmllciBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hl
ZHVsZVJlc291cmNlTG9hZChjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgbG9h
ZFBhcmFtZXRlcnMsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uKQor
eworICAgIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5ID0gbG9hZFBhcmFtZXRlcnMucHJp
b3JpdHkoKTsKKyAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCA9IGxv
YWRQYXJhbWV0ZXJzLnJlcXVlc3QoKTsKKyAgICAKICAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVy
IGlkZW50aWZpZXIgPSArK3NfY3VycmVudFJlc291cmNlTG9hZElkZW50aWZpZXI7CisgICAgUmVm
UHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0gTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpjcmVhdGUobG9hZFBhcmFtZXRlcnMsIGlkZW50aWZpZXIsIGNvbm5lY3Rpb24pOwogCi0gICAg
TE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBOZXR3b3JrUmVzb3VyY2VM
b2FkU2NoZWR1bGVyOjpzY2hlZHVsZU5ldHdvcmtSZXF1ZXN0IHJlc291cmNlICVsbHUgJyVzJyIs
IGlkZW50aWZpZXIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
TE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBOZXR3b3JrUmVzb3VyY2VM
b2FkU2NoZWR1bGVyOjpzY2hlZHVsZU5ldHdvcmtSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2UgJWxs
dSAnJXMnIiwgaWRlbnRpZmllciwgcmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogCi0gICAgSG9zdFJlY29yZCogaG9zdCA9IGhvc3RGb3JVUkwocmVxdWVzdC51
cmwoKSwgQ3JlYXRlSWZOb3RGb3VuZCk7CisgICAgSG9zdFJlY29yZCogaG9zdCA9IGhvc3RGb3JV
UkwocmVzb3VyY2VSZXF1ZXN0LnVybCgpLCBDcmVhdGVJZk5vdEZvdW5kKTsKICAgICBib29sIGhh
ZFJlcXVlc3RzID0gaG9zdC0+aGFzUmVxdWVzdHMoKTsKLSAgICBob3N0LT5zY2hlZHVsZShOZXR3
b3JrUmVxdWVzdDo6Y3JlYXRlKHJlcXVlc3QsIGlkZW50aWZpZXIsIGNvbnRlbnRTbmlmZmluZ1Bv
bGljeSwgY29ubmVjdGlvbiksIHByaW9yaXR5KTsKKyAgICBob3N0LT5zY2hlZHVsZShsb2FkZXIp
OwogICAgIG1faWRlbnRpZmllcnMuYWRkKGlkZW50aWZpZXIsIGhvc3QpOwogCi0gICAgaWYgKHBy
aW9yaXR5ID4gUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3cgfHwgIXJlcXVlc3QudXJsKCkucHJvdG9j
b2xJc0luSFRUUEZhbWlseSgpIHx8IChwcmlvcml0eSA9PSBSZXNvdXJjZUxvYWRQcmlvcml0eUxv
dyAmJiAhaGFkUmVxdWVzdHMpKSB7CisgICAgaWYgKHByaW9yaXR5ID4gUmVzb3VyY2VMb2FkUHJp
b3JpdHlMb3cgfHwgIXJlc291cmNlUmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5
KCkgfHwgKHByaW9yaXR5ID09IFJlc291cmNlTG9hZFByaW9yaXR5TG93ICYmICFoYWRSZXF1ZXN0
cykpIHsKICAgICAgICAgLy8gVHJ5IHRvIHJlcXVlc3QgaW1wb3J0YW50IHJlc291cmNlcyBpbW1l
ZGlhdGVseS4KICAgICAgICAgc2VydmVQZW5kaW5nUmVxdWVzdHNGb3JIb3N0KGhvc3QsIHByaW9y
aXR5KTsKICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXI7CkBAIC0xNTUsMTUgKzE2MCwxNSBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNlcnZlUGVuZGluZ1JlcXVlc3RzRm9y
SG9zdChIb3N0UmVjb3JkKiBob3N0LAogICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIk5ldHdv
cmtSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNlcnZlUGVuZGluZ1JlcXVlc3RzIEhvc3QgbmFtZT0n
JXMnIiwgaG9zdC0+bmFtZSgpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgZm9yIChpbnQgcHJpb3Jp
dHkgPSBSZXNvdXJjZUxvYWRQcmlvcml0eUhpZ2hlc3Q7IHByaW9yaXR5ID49IG1pbmltdW1Qcmlv
cml0eTsgLS1wcmlvcml0eSkgewotICAgICAgICBIb3N0UmVjb3JkOjpSZXF1ZXN0UXVldWUmIHJl
cXVlc3RzUGVuZGluZyA9IGhvc3QtPnJlcXVlc3RzUGVuZGluZyhSZXNvdXJjZUxvYWRQcmlvcml0
eShwcmlvcml0eSkpOworICAgICAgICBIb3N0UmVjb3JkOjpMb2FkZXJRdWV1ZSYgbG9hZGVyc1Bl
bmRpbmcgPSBob3N0LT5sb2FkZXJzUGVuZGluZyhSZXNvdXJjZUxvYWRQcmlvcml0eShwcmlvcml0
eSkpOwogCi0gICAgICAgIHdoaWxlICghcmVxdWVzdHNQZW5kaW5nLmlzRW1wdHkoKSkgewotICAg
ICAgICAgICAgUmVmUHRyPE5ldHdvcmtSZXF1ZXN0PiByZXF1ZXN0ID0gcmVxdWVzdHNQZW5kaW5n
LmZpcnN0KCk7CisgICAgICAgIHdoaWxlICghbG9hZGVyc1BlbmRpbmcuaXNFbXB0eSgpKSB7Cisg
ICAgICAgICAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiBsb2FkZXIgPSBsb2FkZXJz
UGVuZGluZy5maXJzdCgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBUaGlzIHJlcXVl
c3QgbWlnaHQgYmUgZnJvbSBXZWJQcm9jZXNzIHdlJ3ZlIGxvc3Qgb3VyIGNvbm5lY3Rpb24gdG8u
CiAgICAgICAgICAgICAvLyBJZiBzbyB3ZSBzaG91bGQganVzdCBza2lwIGl0LgotICAgICAgICAg
ICAgaWYgKCFyZXF1ZXN0LT5jb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkpIHsKLSAgICAgICAgICAg
ICAgICByZXF1ZXN0c1BlbmRpbmcucmVtb3ZlRmlyc3QoKTsKKyAgICAgICAgICAgIGlmICghbG9h
ZGVyLT5jb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkpIHsKKyAgICAgICAgICAgICAgICBsb2FkZXJz
UGVuZGluZy5yZW1vdmVGaXJzdCgpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgfQogCkBAIC0xNzksMTMgKzE4NCwxMyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRT
Y2hlZHVsZXI6OnNlcnZlUGVuZGluZ1JlcXVlc3RzRm9ySG9zdChIb3N0UmVjb3JkKiBob3N0LAog
ICAgICAgICAgICAgLy8gc3RpbGwgaW1wb3J0YW50IGFuZCBzb21laG93IGFjY291bnQgZm9yIGl0
LgogCiAgICAgICAgICAgICBib29sIHNob3VsZExpbWl0UmVxdWVzdHMgPSAhaG9zdC0+bmFtZSgp
LmlzTnVsbCgpOwotICAgICAgICAgICAgaWYgKHNob3VsZExpbWl0UmVxdWVzdHMgJiYgaG9zdC0+
bGltaXRSZXF1ZXN0cyhSZXNvdXJjZUxvYWRQcmlvcml0eShwcmlvcml0eSksIHJlcXVlc3QtPmNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS0+aXNTZXJpYWxMb2FkaW5nRW5hYmxlZCgpKSkKKyAgICAg
ICAgICAgIGlmIChzaG91bGRMaW1pdFJlcXVlc3RzICYmIGhvc3QtPmxpbWl0UmVxdWVzdHMoUmVz
b3VyY2VMb2FkUHJpb3JpdHkocHJpb3JpdHkpLCBsb2FkZXItPmNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoKS0+aXNTZXJpYWxMb2FkaW5nRW5hYmxlZCgpKSkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgICAgIHJlcXVlc3RzUGVuZGluZy5yZW1vdmVGaXJzdCgpOwotICAgICAgICAg
ICAgaG9zdC0+YWRkTG9hZEluUHJvZ3Jlc3MocmVxdWVzdC0+aWRlbnRpZmllcigpKTsKKyAgICAg
ICAgICAgIGxvYWRlcnNQZW5kaW5nLnJlbW92ZUZpcnN0KCk7CisgICAgICAgICAgICBob3N0LT5h
ZGRMb2FkSW5Qcm9ncmVzcyhsb2FkZXItPmlkZW50aWZpZXIoKSk7CiAKLSAgICAgICAgICAgIHJl
cXVlc3QtPnN0YXJ0KCk7CisgICAgICAgICAgICBsb2FkZXItPnN0YXJ0KCk7CiAgICAgICAgIH0K
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKaW5kZXggMzA4OTI4Zi4uNWZjYzI1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZFNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaApAQCAtMzYsNiArMzYsNyBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIEhvc3RSZWNvcmQ7CitjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVyczsKIGNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogdHlwZWRlZiB1
aW50NjRfdCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyOwogCkBAIC00Niw3ICs0Nyw3IEBAIHB1Ymxp
YzoKICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyKCk7CiAgICAgCiAgICAgLy8gQWRk
cyB0aGUgcmVxdWVzdCB0byB0aGUgcXVldWUgZm9yIGl0cyBob3N0IGFuZCBjcmVhdGUgYSB1bmlx
dWUgaWRlbnRpZmllciBmb3IgaXQuCi0gICAgUmVzb3VyY2VMb2FkSWRlbnRpZmllciBzY2hlZHVs
ZU5ldHdvcmtSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6
OlJlc291cmNlTG9hZFByaW9yaXR5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3ksIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKik7CisgICAgUmVzb3VyY2VMb2FkSWRlbnRpZmll
ciBzY2hlZHVsZVJlc291cmNlTG9hZChjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cyYsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKik7CiAgICAgCiAgICAgLy8gQ3JlYXRl
cyBhIHVuaXF1ZSBpZGVudGlmaWVyIGZvciBhbiBhbHJlYWR5LWluLXByb2dyZXNzIGxvYWQuCiAg
ICAgUmVzb3VyY2VMb2FkSWRlbnRpZmllciBhZGRMb2FkSW5Qcm9ncmVzcyhjb25zdCBXZWJDb3Jl
OjpLVVJMJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5iMGFlNzFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMCwwICsxLDMyOCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aCIKKworI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisKKyNpbmNsdWRlICJCbG9ja2luZ1Jl
c3BvbnNlTWFwLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNs
dWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZUJ1ZmZlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VIYW5kbGUuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK05ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzJiByZXF1ZXN0UGFyYW1ldGVycywgUmVzb3VyY2VMb2FkSWRlbnRpZmllciBpZGVudGlmaWVy
LCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbikKKyAgICA6IG1fcmVx
dWVzdFBhcmFtZXRlcnMocmVxdWVzdFBhcmFtZXRlcnMpCisgICAgLCBtX2lkZW50aWZpZXIoaWRl
bnRpZmllcikKKyAgICAsIG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgY29ubmVjdGlvbi0+cmVnaXN0ZXJPYnNlcnZlcih0aGlzKTsK
K30KKworTmV0d29ya1Jlc291cmNlTG9hZGVyOjp+TmV0d29ya1Jlc291cmNlTG9hZGVyKCkKK3sK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKG1fY29ubmVjdGlvbikKKyAg
ICAgICAgbV9jb25uZWN0aW9uLT51bnJlZ2lzdGVyT2JzZXJ2ZXIodGhpcyk7Cit9CisKK1Jlc291
cmNlTG9hZFByaW9yaXR5IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cHJpb3JpdHkoKSBjb25zdAor
eworICAgIHJldHVybiBtX3JlcXVlc3RQYXJhbWV0ZXJzLnByaW9yaXR5KCk7Cit9CisKK3ZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKworICAgIC8vIEV4cGxpY2l0IHJlZigpIGJhbGFuY2VkIGJ5IGEgZGVyZWYoKSBpbiBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0b3AoKQorICAgIHJlZigpOworICAgIAorICAgIC8vIEZJ
WE1FIChOZXR3b3JrUHJvY2Vzcyk6IENyZWF0ZSBSZW1vdGVOZXR3b3JraW5nQ29udGV4dCB3aXRo
IGFjdHVhbCBzZXR0aW5ncy4KKyAgICBtX25ldHdvcmtpbmdDb250ZXh0ID0gUmVtb3RlTmV0d29y
a2luZ0NvbnRleHQ6OmNyZWF0ZShmYWxzZSwgZmFsc2UpOworCisgICAgLy8gRklYTUUgKE5ldHdv
cmtQcm9jZXNzKTogUGFzcyBhbiBhY3R1YWwgdmFsdWUgZm9yIGRlZmVyc0xvYWRpbmcKKyAgICBt
X2hhbmRsZSA9IFJlc291cmNlSGFuZGxlOjpjcmVhdGUobV9uZXR3b3JraW5nQ29udGV4dC5nZXQo
KSwgbV9yZXF1ZXN0UGFyYW1ldGVycy5yZXF1ZXN0KCksIHRoaXMsIGZhbHNlIC8qIGRlZmVyc0xv
YWRpbmcgKi8sIG1fcmVxdWVzdFBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5KCkgPT0g
U25pZmZDb250ZW50KTsKK30KKworc3RhdGljIGJvb2wgc3RvcFJlcXVlc3RzQ2FsbGVkID0gZmFs
c2U7CisKK3N0YXRpYyBNdXRleCYgcmVxdWVzdHNUb1N0b3BNdXRleCgpCit7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChNdXRleCwgbXV0ZXgsICgpKTsKKyAgICByZXR1cm4gbXV0ZXg7Cit9CisK
K3N0YXRpYyBIYXNoU2V0PE5ldHdvcmtSZXNvdXJjZUxvYWRlcio+JiByZXF1ZXN0c1RvU3RvcCgp
Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PE5ldHdvcmtSZXNvdXJjZUxvYWRl
cio+LCByZXF1ZXN0cywgKCkpOworICAgIHJldHVybiByZXF1ZXN0czsKK30KKwordm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnNjaGVkdWxlU3RvcE9uTWFpblRocmVhZCgpCit7CisgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKHJlcXVlc3RzVG9TdG9wTXV0ZXgoKSk7CisKKyAgICByZXF1ZXN0c1Rv
U3RvcCgpLmFkZCh0aGlzKTsKKyAgICBpZiAoIXN0b3BSZXF1ZXN0c0NhbGxlZCkgeworICAgICAg
ICBzdG9wUmVxdWVzdHNDYWxsZWQgPSB0cnVlOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6cGVyZm9ybVN0b3BzLCAwKTsKKyAgICB9Cit9CisKK3ZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpwZXJmb3JtU3RvcHModm9pZCopCit7CisgICAgQVNTRVJU
KHN0b3BSZXF1ZXN0c0NhbGxlZCk7CisKKyAgICBWZWN0b3I8TmV0d29ya1Jlc291cmNlTG9hZGVy
Kj4gcmVxdWVzdHM7CisgICAgeworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIocmVxdWVzdHNU
b1N0b3BNdXRleCgpKTsKKyAgICAgICAgY29weVRvVmVjdG9yKHJlcXVlc3RzVG9TdG9wKCksIHJl
cXVlc3RzKTsKKyAgICAgICAgcmVxdWVzdHNUb1N0b3AoKS5jbGVhcigpOworICAgICAgICBzdG9w
UmVxdWVzdHNDYWxsZWQgPSBmYWxzZTsKKyAgICB9CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCByZXF1ZXN0cy5zaXplKCk7ICsraSkKKyAgICAgICAgcmVxdWVzdHNbaV0tPnN0b3Ao
KTsKK30KKwordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0b3AoKQoreworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisKKyAgICAvLyBSZW1vdmUgdGhpcyBsb2FkIGlkZW50aWZpZXIg
c29vbiBzbyB3ZSBjYW4gc3RhcnQgbW9yZSBuZXR3b3JrIHJlcXVlc3RzLgorICAgIE5ldHdvcmtQ
cm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyKCkuc2NoZWR1bGVS
ZW1vdmVMb2FkSWRlbnRpZmllcihtX2lkZW50aWZpZXIpOworICAgIAorICAgIC8vIEV4cGxpY2l0
IGRlcmVmKCkgYmFsYW5jZWQgYnkgYSByZWYoKSBpbiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0
b3AoKQorICAgIC8vIFRoaXMgbWlnaHQgY2F1c2UgdGhlIE5ldHdvcmtSZXNvdXJjZUxvYWRlciB0
byBiZSBkZXN0cm95ZWQgYW5kIHRoZXJlZm9yZSB3ZSBkbyBpdCBsYXN0LgorICAgIGRlcmVmKCk7
Cit9CisKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb25uZWN0aW9uVG9XZWJQcm9jZXNz
RGlkQ2xvc2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24pCit7Cisg
ICAgQVNTRVJUX0FSRyhjb25uZWN0aW9uLCBjb25uZWN0aW9uID09IG1fY29ubmVjdGlvbi5nZXQo
KSk7CisgICAgbV9jb25uZWN0aW9uLT51bnJlZ2lzdGVyT2JzZXJ2ZXIodGhpcyk7CisgICAgbV9j
b25uZWN0aW9uID0gMDsKK30KKwordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQoreworICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IENhY2hlIHRoZSByZXNwb25z
ZS4KKyAgICBjb25uZWN0aW9uVG9XZWJQcm9jZXNzKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEaWRSZWNlaXZlUmVzcG9uc2UobV9pZGVu
dGlmaWVyLCByZXNwb25zZSksIDApOworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVu
Z3RoLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKQoreworICAgIC8vIEZJWE1FIChOZXR3b3Jr
UHJvY2Vzcyk6IFdlIGhhdmUgdG8gcHJvZ3Jlc3NpdmVseSBub3RpZnkgdGhlIFdlYlByb2Nlc3Mg
YXMgZGF0YSBpcyByZWNlaXZlZC4KKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICBtX2J1ZmZl
ciA9IFJlc291cmNlQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBtX2J1ZmZlci0+YXBwZW5kKGRhdGEs
IGxlbmd0aCk7Cit9CisKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2Fk
aW5nKFJlc291cmNlSGFuZGxlKiwgZG91YmxlIGZpbmlzaFRpbWUpCit7CisgICAgLy8gRklYTUUg
KE5ldHdvcmtQcm9jZXNzKTogQ3VycmVudGx5IHRoaXMgY2FsbGJhY2sgY2FuIGNvbWUgaW4gb24g
YSBub24tbWFpbiB0aHJlYWQuCisgICAgLy8gVGhpcyBpcyBva2F5IGZvciBub3cgc2luY2UgcmVz
b3VyY2UgYnVmZmVycyBhcmUgcGVyLU5ldHdvcmtSZXNvdXJjZUxvYWRlci4KKyAgICAvLyBPbmNl
IHdlIG1hbmFnZSBtZW1vcnkgaW4gYW4gYWN0dWFsIG1lbW9yeSBjYWNoZSB0aGF0IGFsc28gaW5j
bHVkZXMgU2hhcmVkTWVtb3J5IGJsb2NrcyB0aGlzIHdpbGwgZ2V0IGNvbXBsaWNhdGVkLgorICAg
IC8vIE1heWJlIHdlIHNob3VsZCBtYXJzaGFsbCBpdCB0byB0aGUgbWFpbiB0aHJlYWQ/CisKKyAg
ICBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIGhhbmRsZTsKKworICAgIGlmIChtX2J1ZmZlciAm
JiBtX2J1ZmZlci0+c2l6ZSgpKSB7CisgICAgICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6
IFdlIHNob3VsZG4ndCBiZSBjcmVhdGluZyB0aGlzIFNoYXJlZE1lbW9yeSBvbiBkZW1hbmQgaGVy
ZS4KKyAgICAgICAgLy8gU2hhcmVkTWVtb3J5IGJsb2NrcyBuZWVkIHRvIGJlIG1hbmFnZWQgYXMg
cGFydCBvZiB0aGUgY2FjaGUgYmFja2luZyBzdG9yZS4KKyAgICAgICAgUmVmUHRyPFNoYXJlZE1l
bW9yeT4gc2hhcmVkQnVmZmVyID0gU2hhcmVkTWVtb3J5OjpjcmVhdGUobV9idWZmZXItPnNpemUo
KSk7CisgICAgICAgIG1lbWNweShzaGFyZWRCdWZmZXItPmRhdGEoKSwgbV9idWZmZXItPmRhdGEo
KSwgbV9idWZmZXItPnNpemUoKSk7CisKKyAgICAgICAgUmVmUHRyPFNoYXJlYWJsZVJlc291cmNl
PiBzaGFyZWFibGVSZXNvdXJjZSA9IFNoYXJlYWJsZVJlc291cmNlOjpjcmVhdGUoc2hhcmVkQnVm
ZmVyLnJlbGVhc2UoKSwgMCwgbV9idWZmZXItPnNpemUoKSk7CisKKyAgICAgICAgLy8gRklYTUUg
KE5ldHdvcmtQcm9jZXNzKTogSGFuZGxlIGVycm9ycyBmcm9tIGNyZWF0ZUhhbmRsZSgpOworICAg
ICAgICBpZiAoIXNoYXJlYWJsZVJlc291cmNlLT5jcmVhdGVIYW5kbGUoaGFuZGxlKSkKKyAgICAg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBoYW5kbGUgdG8gc2hhcmVhYmxlIHJl
c291cmNlIG1lbW9yeVxuIik7CisgICAgfQorCisgICAgY29ubmVjdGlvblRvV2ViUHJvY2Vzcygp
LT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
RGlkUmVjZWl2ZVJlc291cmNlKG1faWRlbnRpZmllciwgaGFuZGxlLCBmaW5pc2hUaW1lKSwgMCk7
CisgICAgc2NoZWR1bGVTdG9wT25NYWluVGhyZWFkKCk7Cit9CisKK3ZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpCit7CisgICAgY29ubmVjdGlvblRvV2ViUHJvY2VzcygpLT5jb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGlkRmFpbFJlc291cmNlTG9h
ZChtX2lkZW50aWZpZXIsIGVycm9yKSwgMCk7CisgICAgc2NoZWR1bGVTdG9wT25NYWluVGhyZWFk
KCk7Cit9CisKKy8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IE1hbnkgb2YgdGhlIGZvbGxvd2lu
ZyBSZXNvdXJjZUhhbmRsZUNsaWVudCBtZXRob2RzIGRlZmluaXRlbHkgbmVlZCBpbXBsZW1lbnRh
dGlvbnMuIEEgZmV3IHdpbGwgbm90LgorLy8gT25jZSB3ZSBrbm93IHdoYXQgdGhleSBhcmUgdGhl
eSBjYW4gYmUgcmVtb3ZlZC4KKworCitzdGF0aWMgQmxvY2tpbmdSZXNwb25zZU1hcDxSZXNvdXJj
ZVJlcXVlc3QqPiYgcmVzcG9uc2VNYXAoKQoreworICAgIEF0b21pY2FsbHlJbml0aWFsaXplZFN0
YXRpYyhCbG9ja2luZ1Jlc3BvbnNlTWFwPFJlc291cmNlUmVxdWVzdCo+JiwgcmVzcG9uc2VNYXAg
PSAqbmV3IEJsb2NraW5nUmVzcG9uc2VNYXA8UmVzb3VyY2VSZXF1ZXN0Kj4pOworICAgIHJldHVy
biByZXNwb25zZU1hcDsKK30KKworc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlV2lsbFNlbmRSZXF1
ZXN0SUQoKQoreworICAgIHN0YXRpYyBpbnQ2NF90IHVuaXF1ZVdpbGxTZW5kUmVxdWVzdElEOwor
ICAgIHJldHVybiBPU0F0b21pY0luY3JlbWVudDY0QmFycmllcigmdW5pcXVlV2lsbFNlbmRSZXF1
ZXN0SUQpOworfQorCit2b2lkIGRpZFJlY2VpdmVXaWxsU2VuZFJlcXVlc3RIYW5kbGVkKHVpbnQ2
NF90IHJlcXVlc3RJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIHJl
c3BvbnNlTWFwKCkuZGlkUmVjZWl2ZVJlc3BvbnNlKHJlcXVlc3RJRCwgYWRvcHRQdHIobmV3IFJl
c291cmNlUmVxdWVzdChyZXF1ZXN0KSkpOworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQoreworICAgIC8v
IFdlIG9ubHkgZXhwZWN0IHRvIGdldCB0aGUgd2lsbFNlbmRSZXF1ZXN0IGNhbGxiYWNrIGZyb20g
UmVzb3VyY2VIYW5kbGUgYXMgdGhlIHJlc3VsdCBvZiBhIHJlZGlyZWN0CisgICAgQVNTRVJUKCFy
ZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKTsKKworICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IGdl
bmVyYXRlV2lsbFNlbmRSZXF1ZXN0SUQoKTsKKworICAgIGlmICghY29ubmVjdGlvblRvV2ViUHJv
Y2VzcygpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6V2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3RJRCwgbV9pZGVudGlmaWVyLCByZXF1ZXN0LCBy
ZWRpcmVjdFJlc3BvbnNlKSwgMCkpIHsKKyAgICAgICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNz
KTogV2hhdCBzaG91bGQgd2UgZG8gaWYgd2UgY2FuJ3Qgc2VuZCB0aGUgbWVzc2FnZT8KKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBuZXdS
ZXF1ZXN0ID0gcmVzcG9uc2VNYXAoKS53YWl0Rm9yUmVzcG9uc2UocmVxdWVzdElEKTsKKyAgICBy
ZXF1ZXN0ID0gKm5ld1JlcXVlc3Q7CisKKyAgICBOZXR3b3JrUHJvY2Vzczo6c2hhcmVkKCkubmV0
d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcigpLnJlY2VpdmVkUmVkaXJlY3QobV9pZGVudGlmaWVy
LCByZXF1ZXN0LnVybCgpKTsKK30KKwordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFNl
bmREYXRhKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIC8qYnl0
ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBj
aGFyKiwgaW50KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjp3YXNCbG9ja2VkKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKikKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2Fu
bm90U2hvd1VSTChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSopCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNl
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgV2ViQ29yZTo6Q2FjaGVTdG9yYWdlUG9saWN5JikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
cmVjZWl2ZWRDYW5jZWxsYXRpb24oV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJD
b3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKworI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCitib29sIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYK
KworI2lmIEhBVkUoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCitib29sIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c3VwcG9ydHNEYXRhQXJyYXkoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGFBcnJheShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIENGQXJyYXlSZWYp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFD
KQorI2lmIFVTRShDRk5FVFdPUkspCitDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBD
RkNhY2hlZFVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIHJlc3BvbnNlOworfQorI2Vsc2UKK05TQ2FjaGVkVVJMUmVzcG9uc2UqIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlKiByZXNwb25zZSkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiByZXNwb25zZTsKK30KKyNlbmRpZgorCit2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6d2lsbFN0b3BCdWZmZXJpbmdEYXRhKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlKiwgY29uc3QgY2hhciosIGludCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorI2Vu
ZGlmIC8vIFBMQVRGT1JNKE1BQykKKworI2lmIEVOQUJMRShCTE9CKQorV2ViQ29yZTo6QXN5bmNG
aWxlU3RyZWFtKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZUFzeW5jRmlsZVN0cmVhbShX
ZWJDb3JlOjpGaWxlU3RyZWFtQ2xpZW50KikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiAwOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uY2I5YjMxNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC0wLDAgKzEsMTI4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBOZXR3b3JrUmVzb3VyY2VMb2FkZXJfaAorI2RlZmluZSBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXJfaAorCisjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKwor
I2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
SGFuZGxlQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlck9wdGlvbnMu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBSZXNvdXJjZUJ1ZmZlcjsKK2NsYXNzIFJlc291cmNlSGFuZGxlOworfQor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ7Cit0
eXBlZGVmIHVpbnQ2NF90IFJlc291cmNlTG9hZElkZW50aWZpZXI7CisKK2NsYXNzIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4s
IHB1YmxpYyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc09ic2VydmVyLCBwdWJsaWMgV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8
TmV0d29ya1Jlc291cmNlTG9hZGVyPiBjcmVhdGUoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMsIFJlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllciwg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24pCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IE5ldHdvcmtSZXNvdXJjZUxvYWRlcihwYXJhbWV0ZXJzLCBp
ZGVudGlmaWVyLCBjb25uZWN0aW9uKSk7CisgICAgfQorICAgIAorICAgIH5OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIoKTsKKworICAgIHZvaWQgc3RhcnQoKTsKKworICAgIHZpcnR1YWwgdm9pZCBjb25u
ZWN0aW9uVG9XZWJQcm9jZXNzRGlkQ2xvc2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mq
KSBPVkVSUklERTsKKyAgICAKKyAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICBXZWJDb3JlOjpSZXNvdXJjZUxv
YWRQcmlvcml0eSBwcmlvcml0eSgpIGNvbnN0OworICAgIAorICAgIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgeyByZXR1cm4gbV9jb25uZWN0
aW9uLmdldCgpOyB9CisKKyAgICAvLyBSZXNvdXJjZUhhbmRsZUNsaWVudCBtZXRob2RzCisgICAg
dmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IC8qcmVkaXJlY3RSZXNwb25zZSovKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2Vu
ZERhdGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxvbmcgLypieXRl
c1NlbnQqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50Ki8pIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwg
Y29uc3QgY2hhciosIGludCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBpbnQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgZG91YmxlIC8qZmluaXNo
VGltZSovKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSopIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBjYW5ub3RTaG93VVJMKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxDYWNoZVJlc3BvbnNlKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlKiwgV2ViQ29yZTo6Q2FjaGVTdG9yYWdlUG9saWN5JikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlKiwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIE9WRVJSSURF
OworCisjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKKyAgICB2aXJ0dWFs
IGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpIE9WRVJSSURFOwor
I2VuZGlmCisKKyNpZiBIQVZFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQorICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c0RhdGFBcnJheSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlRGF0YUFycmF5KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgQ0ZBcnJheVJl
ZikgT1ZFUlJJREU7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBVU0UoQ0ZORVRX
T1JLKQorICAgIHZpcnR1YWwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiB3aWxsQ2FjaGVSZXNwb25z
ZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIE9WRVJS
SURFOworI2Vsc2UKKyAgICB2aXJ0dWFsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHdpbGxDYWNoZVJl
c3BvbnNlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSopIE9W
RVJSSURFOworI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIHdpbGxTdG9wQnVmZmVyaW5nRGF0YShX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBpbnQpIE9WRVJSSURFOworI2Vu
ZGlmIC8vIFBMQVRGT1JNKE1BQykKKworI2lmIEVOQUJMRShCTE9CKQorICAgIHZpcnR1YWwgV2Vi
Q29yZTo6QXN5bmNGaWxlU3RyZWFtKiBjcmVhdGVBc3luY0ZpbGVTdHJlYW0oV2ViQ29yZTo6Rmls
ZVN0cmVhbUNsaWVudCopIE9WRVJSSURFOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgTmV0d29y
a1Jlc291cmNlTG9hZGVyKGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiwgUmVz
b3VyY2VMb2FkSWRlbnRpZmllciwgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqKTsKKwor
ICAgIHZvaWQgc2NoZWR1bGVTdG9wT25NYWluVGhyZWFkKCk7CisgICAgc3RhdGljIHZvaWQgcGVy
Zm9ybVN0b3BzKHZvaWQqKTsKKworICAgIHZvaWQgc3RvcCgpOworCisgICAgTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMgbV9yZXF1ZXN0UGFyYW1ldGVyczsKKyAgICBSZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKworICAgIFJlZlB0cjxSZW1vdGVOZXR3b3JraW5nQ29u
dGV4dD4gbV9uZXR3b3JraW5nQ29udGV4dDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGU+IG1faGFuZGxlOyAgICAKKyAgICBSZWZQdHI8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M+IG1fY29ubmVjdGlvbjsKKworICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IFJl
c3BvbnNlIGRhdGEgbGlmZXRpbWUgc2hvdWxkIGJlIG1hbmFnZWQgb3V0c2lkZSBOZXR3b3JrUmVx
dWVzdC4KKyAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VCdWZmZXI+IG1fYnVmZmVyOworfTsK
Kwordm9pZCBkaWRSZWNlaXZlV2lsbFNlbmRSZXF1ZXN0SGFuZGxlZCh1aW50NjRfdCByZXF1ZXN0
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisKKyNlbmRpZiAvLyBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0MDhmMTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycy5jcHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgorCisjaW5jbHVk
ZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
KworI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCituYW1lc3BhY2UgV2ViS2l0IHsKK05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpO
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycygpCisgICAgOiBtX3ByaW9yaXR5KFJlc291cmNl
TG9hZFByaW9yaXR5VmVyeUxvdykKKyAgICAsIG1fY29udGVudFNuaWZmaW5nUG9saWN5KFNuaWZm
Q29udGVudCkKK3sKK30KKworTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVz
b3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHksIENvbnRlbnRTbmlmZmluZ1BvbGljeSBjb250ZW50
U25pZmZpbmdQb2xpY3kpCisgICAgOiBtX3JlcXVlc3QocmVxdWVzdCkKKyAgICAsIG1fcHJpb3Jp
dHkocHJpb3JpdHkpCisgICAgLCBtX2NvbnRlbnRTbmlmZmluZ1BvbGljeShjb250ZW50U25pZmZp
bmdQb2xpY3kpCit7Cit9CisKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVu
Y29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5j
b2Rlci5lbmNvZGUobV9yZXF1ZXN0KTsKKyAgICBlbmNvZGVyLmVuY29kZUVudW0obV9wcmlvcml0
eSk7CisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1fY29udGVudFNuaWZmaW5nUG9saWN5KTsKK30K
KworYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKENvcmVJUEM6OkFy
Z3VtZW50RGVjb2RlciogZGVjb2RlciwgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmIHJl
c3VsdCkKK3sKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShyZXN1bHQubV9yZXF1ZXN0KSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShyZXN1bHQu
bV9wcmlvcml0eSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXItPmRl
Y29kZUVudW0ocmVzdWx0Lm1fY29udGVudFNuaWZmaW5nUG9saWN5KSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTZmMjEwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyc19oCisjZGVmaW5lIE5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzX2gKKworI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXJPcHRp
b25zLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKworI2lmIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCisKK25hbWVzcGFjZSBDb3JlSVBDIHsKKyAgICBjbGFzcyBBcmd1
bWVudERlY29kZXI7CisgICAgY2xhc3MgQXJndW1lbnRFbmNvZGVyOworfQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKwordHlwZWRlZiB1aW50NjRfdCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyOworCitj
bGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyB7CitwdWJsaWM6CisgICAgTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnMoKTsKKyAgICBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpSZXNvdXJjZUxv
YWRQcmlvcml0eSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5KTsKKworICAgIHZvaWQg
ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYpIGNvbnN0OworICAgIHN0YXRpYyBib29s
IGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycyYpOworCisgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0OyB9CisgICAgV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
UHJpb3JpdHkgcHJpb3JpdHkoKSBjb25zdCB7IHJldHVybiBtX3ByaW9yaXR5OyB9CisgICAgV2Vi
Q29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5IGNvbnRlbnRTbmlmZmluZ1BvbGljeSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGVudFNuaWZmaW5nUG9saWN5OyB9CisKK3ByaXZhdGU6CisgICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKKyAgICBXZWJDb3JlOjpSZXNvdXJjZUxv
YWRQcmlvcml0eSBtX3ByaW9yaXR5OworICAgIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGlj
eSBtX2NvbnRlbnRTbmlmZmluZ1BvbGljeTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKworI2VuZGlmIC8vIE5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkMmJkZmE3Li44YmU0MDBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NTcs
OCArNDU3LDYgQEAKIAkJNTE3OTU1NkUxNjI4NzdCMzAwRkE0M0I2IC8qIE5ldHdvcmtQcm9jZXNz
UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
MENDN0VCMTYxMzhFNzIwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5LmggKi87IH07CiAJ
CTUxNzk1NTcwMTYyODc3Q0YwMEZBNDNCNiAvKiBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUE4QTYxMjE2MjdGMzI1MDAwRDkwRTkgLyogTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwICovOyB9OwogCQk1MTc5NTU3MTE2Mjg3N0QyMDBGQTQzQjYgLyogTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxQThBNjBGMTYyN0YyQkQwMDBEOTBFOSAvKiBOZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oICovOyB9OwotCQk1MTdDRjBERjE2M0E0NDRDMDBDMjk1MEUgLyog
TmV0d29ya1JlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE3Q0YwREQxNjNBNDQ0QzAwQzI5NTBFIC8qIE5ldHdvcmtSZXF1ZXN0LmNwcCAq
LzsgfTsKLQkJNTE3Q0YwRTAxNjNBNDQ0QzAwQzI5NTBFIC8qIE5ldHdvcmtSZXF1ZXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDRjBERTE2M0E0
NDRDMDBDMjk1MEUgLyogTmV0d29ya1JlcXVlc3QuaCAqLzsgfTsKIAkJNTE3Q0YwRTMxNjNBNDg2
QzAwQzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDRjBFMTE2
M0E0ODZDMDBDMjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVy
LmNwcCAqLzsgfTsKIAkJNTE3Q0YwRTQxNjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTdDRjBFMjE2M0E0ODZDMDBDMjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uTWVzc2FnZXMuaCAqLzsgfTsKIAkJNTE4MjlEQTUxNjM3QzcwQzAwMDk1M0Q2IC8qIE5l
dHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4MjlEQTMxNjM3QzcwQzAwMDk1M0Q2IC8qIE5ldHdvcmtS
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwICovOyB9OwpAQCAtNDk5LDYgKzQ5Nyw4IEBACiAJCTUx
QjMwMDUwMTI1MjlEMEUwMDBCNUNBMCAvKiBXZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUIzMDA0RTEyNTI5RDBF
MDAwQjVDQTAgLyogV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwICovOyB9OwogCQk1MUIzMDA1MTEy
NTI5RDBFMDAwQjVDQTAgLyogV2ViUGFnZVByb3h5Q0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCMzAwNEYxMjUyOUQwRTAwMEI1Q0EwIC8qIFdl
YlBhZ2VQcm94eUNGLmNwcCAqLzsgfTsKIAkJNTFDNDAzMkMxMzY3NDlEODAwREM5NzJEIC8qIEF1
dGhlbnRpY2F0aW9uTWFuYWdlci5tYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUM0MDMyQjEzNjc0OUQ4MDBEQzk3MkQgLyogQXV0aGVudGljYXRp
b25NYW5hZ2VyLm1hYy5tbSAqLzsgfTsKKwkJNTFDQkJBMEYxNjUyMTlCNjAwNUJFOEZEIC8qIE5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQ0JCQTBEMTY1MjE5QjYwMDVCRThGRCAvKiBOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAgKi87IH07CisJCTUxQ0JCQTEwMTY1MjE5QjYwMDVC
RThGRCAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDQkJBMEUxNjUyMTlCNjAwNUJFOEZEIC8q
IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmggKi87IH07CiAJCTUxRDAyRjY0MTMyRUM1
QjkwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMDJGNjMxMzJFQzVCOTAw
QkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUx
RDAyRjZBMTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMDJGNjcxMzJFQzcz
NzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZU1lc3NhZ2VzLmggKi87IH07CiAJCTUxRDAyRjZC
MTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQwMkY2
ODEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovOyB9OwpAQCAtNTE1LDYgKzUxNSw4IEBACiAJCTUxRkEyRDc0MTUyMTJERjEwMEMxQkEw
QiAvKiBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZBMkQ1QzE1MjExQTUwMDBDMUJBMEIg
LyogSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwICovOyB9OwogCQk1MUZBMkQ3
NzE1MjEyRTI2MDBDMUJBMEIgLyogV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQTJENzUxNTIxMkUx
RTAwQzFCQTBCIC8qIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcCAqLzsgfTsKIAkJNTFG
QjA4RkYxNjM5REUxQTAwRUMzMjRBIC8qIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFCRjY1NjE2Mzky
RjE1MDAxMzJBN0EgLyogV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCAqLzsgfTsKKwkJNTFG
RDE4QjUxNjUxRkJBRDAwREJFMUNFIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZEMThCMzE2NTFGQkFE
MDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCAqLzsgfTsKKwkJNTFGRDE4QjYx
NjUxRkJBRDAwREJFMUNFIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGRDE4QjQxNjUxRkJBRDAwREJFMUNF
IC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlci5oICovOyB9OwogCQk1MjcyQjI4QTE0MDY5ODVEMDA5
NkE1RDAgLyogU3RhdGlzdGljc0RhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTI3MkIyODgxNDA2OTg1RDAwOTZBNUQwIC8qIFN0YXRpc3RpY3NE
YXRhLmNwcCAqLzsgfTsKIAkJNTI3MkIyOEIxNDA2OTg1RDAwOTZBNUQwIC8qIFN0YXRpc3RpY3NE
YXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Mjcy
QjI4OTE0MDY5ODVEMDA5NkE1RDAgLyogU3RhdGlzdGljc0RhdGEuaCAqLzsgfTsKIAkJNUQxQTIz
OTExNUU3NUIyMjAwMjNFOTgxIC8qIHdlYmtpdDIgaW4gQ29weSBNZXNzYWdlIEdlbmVyYXRpb24g
U2NyaXB0cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RDFBMjM4RTE1RTc1
QUQ1MDAyM0U5ODEgLyogd2Via2l0MiAqLzsgfTsKQEAgLTEzODgsOCArMTM5MCw4IEBACiAJCTFB
QTNENzU5MTY1MUI0NEYwMDg3MTNEMCAvKiBSZW1vdGVMYXllclRyZWVIb3N0Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFBM0Q3NUExNjUxQjQ0RjAwODcxM0QwIC8q
IFJlbW90ZUxheWVyVHJlZUhvc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3RlTGF5ZXJUcmVlSG9zdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUEz
RDc1RDE2NTFCNUM1MDA4NzEzRDAgLyogUmVtb3RlTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVMYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQUEzRDc1RjE2NTFCN0QzMDA4NzEzRDAgLyog
UmVtb3RlTGF5ZXJUcmVlSG9zdE1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBSZW1vdGVMYXllclRyZWVIb3N0TWVzc2FnZVJlY2VpdmVyLmNw
cDsgcGF0aCA9IFJlbW90ZUxheWVyVHJlZUhvc3RNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkxQUEzRDc2MDE2NTFCN0QzMDA4NzEzRDAgLyogUmVtb3Rl
TGF5ZXJUcmVlSG9zdE1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFJlbW90ZUxheWVyVHJlZUhvc3RNZXNzYWdlcy5oOyBwYXRoID0gUmVtb3RlTGF5ZXJUcmVlSG9z
dE1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBQTNENzVGMTY1MUI3
RDMwMDg3MTNEMCAvKiBSZW1vdGVMYXllclRyZWVIb3N0TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUxheWVyVHJlZUhvc3RNZXNz
YWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUEzRDc2MDE2
NTFCN0QzMDA4NzEzRDAgLyogUmVtb3RlTGF5ZXJUcmVlSG9zdE1lc3NhZ2VzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxheWVyVHJlZUhvc3RNZXNzYWdlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUE0MTdDOTEyQzAwQ0NBMDAyQkU2N0IgLyog
VGV4dENoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dENoZWNr
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFBNDE3RUQxMkMwMEQ4NzAwMkJF
NjdCIC8qIFRleHRDaGVja2VyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gVGV4dENoZWNrZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFBQTQxQUI0MTJDMDJFQzQwMDJCRTY3QiAvKiBFZGl0b3JTdGF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBFZGl0b3JTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTY3MSw4ICsxNjczLDYgQEAKIAkJNTE2QTRBNUIxMjBBMkNDRDAwQzA1QjdGIC8q
IFdlYkVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkVycm9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0EzM0IzMTMwQjMwOEMwMEY4MENCNSAv
KiBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTdBMzNCNDEzMEIzMDhDMDBGODBDQjUgLyogV0tBcHBsaWNhdGlv
bkNhY2hlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0FwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxN0NG
MEREMTYzQTQ0NEMwMEMyOTUwRSAvKiBOZXR3b3JrUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUmVxdWVzdC5jcHA7IHBhdGggPSBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTUxN0NGMERFMTYzQTQ0NEMwMEMyOTUwRSAvKiBOZXR3b3JrUmVxdWVzdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUmVxdWVzdC5oOyBwYXRoID0gTmV0d29ya1By
b2Nlc3MvTmV0d29ya1JlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3
Q0YwRTExNjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTdDRjBFMjE2M0E0ODZDMDBDMjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE4MjlEQTMxNjM3QzcwQzAwMDk1M0Q2IC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1Jlc291
cmNlTG9hZFNjaGVkdWxlci5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MjMs
NiArMTcyMyw4IEBACiAJCTUxQjMwMDRFMTI1MjlEMEUwMDBCNUNBMCAvKiBXZWJCYWNrRm9yd2Fy
ZExpc3RDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJCYWNr
Rm9yd2FyZExpc3RDRi5jcHA7IHBhdGggPSBjZi9XZWJCYWNrRm9yd2FyZExpc3RDRi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQjMwMDRGMTI1MjlEMEUwMDBCNUNBMCAvKiBX
ZWJQYWdlUHJveHlDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBX
ZWJQYWdlUHJveHlDRi5jcHA7IHBhdGggPSBjZi9XZWJQYWdlUHJveHlDRi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQzQwMzJCMTM2NzQ5RDgwMERDOTcyRCAvKiBBdXRoZW50
aWNhdGlvbk1hbmFnZXIubWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gQXV0aGVudGljYXRpb25NYW5hZ2VyLm1hYy5tbTsgcGF0aCA9IG1hYy9BdXRoZW50aWNh
dGlvbk1hbmFnZXIubWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUNCQkEw
RDE2NTIxOUI2MDA1QkU4RkQgLyogTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMuY3BwOyBwYXRoID0gTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQ0JCQTBFMTY1MjE5QjYwMDVC
RThGRCAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oOyBwYXRoID0g
TmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MUQwMkY2MzEzMkVDNUI5MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNl
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkljb25EYXRhYmFzZU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxRDAyRjY1MTMyRUM2RDMwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94
eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXZWJJY29uRGF0YWJhc2VQcm94
eS5tZXNzYWdlcy5pbjsgcGF0aCA9IEljb25EYXRhYmFzZS9XZWJJY29uRGF0YWJhc2VQcm94eS5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMDJGNjcxMzJFQzcz
NzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkljb25EYXRhYmFzZU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xNzQwLDYgKzE3NDIsOCBAQAogCQk1MUZBMkQ1QzE1MjExQTUwMDBD
MUJBMEIgLyogSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUZBMkQ3NTE1MjEyRTFFMDBD
MUJBMEIgLyogV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUZCMDkwMjE2M0EzQjFDMDBFQzMyNEEgLyogTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbjsgcGF0aCA9IE5ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUZEMThCMzE2
NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA7IHBhdGgg
PSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MUZEMThCNDE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291
cmNlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSZXNv
dXJjZUxvYWRlci5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNzJCMjg4MTQwNjk4NUQwMDk2QTVE
MCAvKiBTdGF0aXN0aWNzRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTdGF0aXN0aWNzRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUy
NzJCMjg5MTQwNjk4NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTdGF0aXN0aWNzRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1RDFBMjM4RTE1RTc1QUQ1MDAyM0U5ODEgLyogd2Via2l0MiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9IHdl
YmtpdDI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDYyLDggKzMwNjYsOCBAQAog
CQkJCTUxMENDN0UwMTYxMzhFMjkwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzcy5oICovLAogCQkJ
CTUxQThBNjE3MTYyN0Y1QkIwMDBEOTBFOSAvKiBOZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiAq
LywKIAkJCQk1MTBDQzdFMTE2MTM4RTI5MDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3NNYWluLmgg
Ki8sCi0JCQkJNTE3Q0YwREQxNjNBNDQ0QzAwQzI5NTBFIC8qIE5ldHdvcmtSZXF1ZXN0LmNwcCAq
LywKLQkJCQk1MTdDRjBERTE2M0E0NDRDMDBDMjk1MEUgLyogTmV0d29ya1JlcXVlc3QuaCAqLywK
KwkJCQk1MUZEMThCMzE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cCAqLywKKwkJCQk1MUZEMThCNDE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmggKi8sCiAJCQkJNTE4MjlEQTMxNjM3QzcwQzAwMDk1M0Q2IC8qIE5ldHdvcmtSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuY3BwICovLAogCQkJCTUxODI5REE0MTYzN0M3MEMwMDA5NTNENiAvKiBO
ZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmggKi8sCiAJCQkpOwpAQCAtMzE2Myw2ICszMTY3
LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTUxQThBNjEyMTYyN0YzMjUwMDBEOTBFOSAvKiBO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgKi8sCiAJCQkJNTFBOEE2MEYxNjI3
RjJCRDAwMEQ5MEU5IC8qIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggKi8sCisJ
CQkJNTFDQkJBMEQxNjUyMTlCNjAwNUJFOEZEIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzLmNwcCAqLywKKwkJCQk1MUNCQkEwRTE2NTIxOUI2MDA1QkU4RkQgLyogTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gTmV0d29yazsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC00ODg2LDcgKzQ4OTIsNiBAQAogCQkJCTUxREQ5RjI5
MTYzNjdEQTIwMDE1NzhFOSAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2Vz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTgyOURBNjE2MzdDNzBDMDAwOTUzRDYgLyogTmV0d29y
a1Jlc291cmNlTG9hZFNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyQzA2ODkxNjM4
RjY3RTAwQUJCOTExIC8qIEhvc3RSZWNvcmQuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxN0NGMEUw
MTYzQTQ0NEMwMEMyOTUwRSAvKiBOZXR3b3JrUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTE3Q0YwRTQxNjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUI3ODQ3MTE2M0YyNDY5MDAwN0I2OTIgLyogUmVt
b3RlTmV0d29ya2luZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjE2QURFMTY0ODU5
ODQwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oIGluIEhlYWRlcnMgKi8s
CkBAIC00ODk4LDYgKzQ5MDMsOCBAQAogCQkJCTFBRjFBQzZDMTY1MTc1OUUwMEMxN0Q3RiAvKiBS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBM0Q3NUMx
NjUxQjQ0RjAwODcxM0QwIC8qIFJlbW90ZUxheWVyVHJlZUhvc3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBQTNENzYyMTY1MUI3RDMwMDg3MTNEMCAvKiBSZW1vdGVMYXllclRyZWVIb3N0TWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxRkQxOEI2MTY1MUZCQUQwMERCRTFDRSAvKiBOZXR3
b3JrUmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxQ0JCQTEwMTY1MjE5QjYw
MDVCRThGRCAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkBAIC01ODIyLDcgKzU4MjksNiBAQAogCQkJCTUxMkMwNjg4MTYzOEY2N0UwMEFCQjkxMSAvKiBI
b3N0UmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMkMwNjkwMTYzOTBFNjkwMEFCQjkx
MSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTFGQjA4RkYxNjM5REUxQTAwRUMzMjRBIC8qIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlci5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTdDRjBERjE2M0E0NDRDMDBDMjk1MEUgLyogTmV0d29y
a1JlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3Q0YwRTMxNjNBNDg2QzAwQzI5NTBF
IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlFMUI3ODQ3MzE2M0YyNTNFMDAwN0I2OTIgLyogUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHQubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDJBREYwOTE2MzYyREQ1MDAxOTdFNDcgLyog
UERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0gaW4gU291cmNlcyAqLywKQEAgLTU4NDIsNiArNTg0
OCw4IEBACiAJCQkJMUFGMUFDNkIxNjUxNzU5RTAwQzE3RDdGIC8qIFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBM0Q3NUIxNjUxQjQ0RjAwODcxM0Qw
IC8qIFJlbW90ZUxheWVyVHJlZUhvc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUEzRDc2MTE2
NTFCN0QzMDA4NzEzRDAgLyogUmVtb3RlTGF5ZXJUcmVlSG9zdE1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk1MUZEMThCNTE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxQ0JCQTBGMTY1MjE5QjYwMDVC
RThGRCAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKaW5kZXggMzk4OTVjNi4uYThmZTJmYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNj
aGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1l
bnRMb2FkZXIuaD4KQEAgLTk1LDggKzk2LDggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXI6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIsIFJlc28KICAg
ICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChLVVJMLCBkYXRhVVJMLCAoS1VSTCgpLCAiZGF0YToi
KSk7CiAgICAgICAgIHJlcXVlc3Quc2V0VVJMKGRhdGFVUkwpOwogICAgIH0KLQotICAgIGlmICgh
V2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5z
ZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNjaGVkdWxl
TmV0d29ya1JlcXVlc3QocmVxdWVzdCwgcHJpb3JpdHksIHJlc291cmNlTG9hZGVyLT5zaG91bGRT
bmlmZkNvbnRlbnQoKSksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
U2NoZWR1bGVOZXR3b3JrUmVxdWVzdDo6UmVwbHkoaWRlbnRpZmllciksIDApKSB7CisgICAgTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMocmVxdWVzdCwgcHJpb3Jp
dHksIHJlc291cmNlTG9hZGVyLT5zaG91bGRTbmlmZkNvbnRlbnQoKSA/IFNuaWZmQ29udGVudCA6
IERvTm90U25pZmZDb250ZW50KTsKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdv
cmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTY2hlZHVsZVJlc291cmNlTG9hZChsb2FkUGFyYW1ldGVy
cyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2NoZWR1bGVSZXNv
dXJjZUxvYWQ6OlJlcGx5KGlkZW50aWZpZXIpLCAwKSkgewogICAgICAgICAvLyBGSVhNRSAoTmV0
d29ya1Byb2Nlc3MpOiBXaGF0IHNob3VsZCB3ZSBkbyBpZiB0aGlzIGZhaWxzPwogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9Cg==
</data>
<flag name="review"
          id="188662"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>