<?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>125570</bug_id>
          
          <creation_ts>2013-12-11 06:11:11 -0800</creation_ts>
          <short_desc>Move ChildProcessProxy from Shared to UIProcess</short_desc>
          <delta_ts>2016-01-12 09:23:49 -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>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="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kling</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mkwst</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>958687</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-12-11 06:11:11 -0800</bug_when>
    <thetext>It&apos;s only used by UIProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958688</commentid>
    <comment_count>1</comment_count>
      <attachid>218955</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-12-11 06:12:54 -0800</bug_when>
    <thetext>Created attachment 218955
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958689</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-11 06:14:49 -0800</bug_when>
    <thetext>Attachment 218955 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/CMakeLists.txt&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/GNUmakefile.list.am&apos;, u&apos;Source/WebKit2/Shared/ChildProcessProxy.cpp&apos;, u&apos;Source/WebKit2/Shared/ChildProcessProxy.h&apos;, u&apos;Source/WebKit2/UIProcess/ChildProcessProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/ChildProcessProxy.h&apos;, u&apos;Source/WebKit2/WebKit2.xcodeproj/project.pbxproj&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebKit2/UIProcess/ChildProcessProxy.h:51:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Total errors found: 1 in 6 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>1151974</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-01-02 09:12:29 -0800</bug_when>
    <thetext>Owners?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154379</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-01-11 08:45:22 -0800</bug_when>
    <thetext>Seems OK to me. But can you upload a patch that applies and builds?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154398</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-01-11 10:05:33 -0800</bug_when>
    <thetext>Sure, I&apos;ll prepare a new patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154664</commentid>
    <comment_count>6</comment_count>
      <attachid>268756</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-01-12 03:58:46 -0800</bug_when>
    <thetext>Created attachment 268756
Rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154727</commentid>
    <comment_count>7</comment_count>
      <attachid>268756</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-12 09:23:42 -0800</bug_when>
    <thetext>Comment on attachment 268756
Rebased patch

Clearing flags on attachment: 268756

Committed r194895: &lt;http://trac.webkit.org/changeset/194895&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154728</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-12 09:23:49 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218955</attachid>
            <date>2013-12-11 06:12:54 -0800</date>
            <delta_ts>2016-01-12 03:58:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-child-process-proxy.diff</filename>
            <type>text/plain</type>
            <size>26904</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggNjIzMDYzZS4uMWY4OTJlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTE4NSw3ICsxODUsNiBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVk
L0FjdGl2aXR5QXNzZXJ0aW9uLmNwcAogICAgIFNoYXJlZC9DYWNoZU1vZGVsLmNwcAogICAgIFNo
YXJlZC9DaGlsZFByb2Nlc3MuY3BwCi0gICAgU2hhcmVkL0NoaWxkUHJvY2Vzc1Byb3h5LmNwcAog
ICAgIFNoYXJlZC9Db25uZWN0aW9uU3RhY2suY3BwCiAgICAgU2hhcmVkL0RpY3Rpb25hcnlQb3B1
cEluZm8uY3BwCiAgICAgU2hhcmVkL0VkaXRvclN0YXRlLmNwcApAQCAtMjg5LDYgKzI4OCw3IEBA
IHNldChXZWJLaXQyX1NPVVJDRVMKIAogICAgIFVJUHJvY2Vzcy9BUElOYXZpZ2F0aW9uRGF0YS5j
cHAKICAgICBVSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcAorICAgIFVJUHJvY2Vzcy9DaGlsZFBy
b2Nlc3NQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKICAgICBV
SVByb2Nlc3MvRmluZEluZGljYXRvci5jcHAKICAgICBVSVByb2Nlc3MvRnJhbWVMb2FkU3RhdGUu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKaW5kZXggNWU4YmEyNC4uOGNmZjQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQwIEBACisyMDEzLTEyLTExICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBNb3ZlIENoaWxkUHJvY2Vzc1Byb3h5IGZyb20gU2hhcmVkIHRvIFVJ
UHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI1NTcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Q2hpbGRQcm9jZXNzUHJveHkgaXMgb25seSB1c2VkIGJ5IHRoZSBVSSBwcm9jZXNzLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ2hpbGRQcm9jZXNzUHJveHkuY3BwOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzc1Byb3h5LmNwcC4KKyAgICAgICAgKFdlYktp
dDo6Q2hpbGRQcm9jZXNzUHJveHk6OkNoaWxkUHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKFdlYktp
dDo6Q2hpbGRQcm9jZXNzUHJveHk6On5DaGlsZFByb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OkNoaWxkUHJvY2Vzc1Byb3h5Ojpmcm9tQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OkNoaWxkUHJvY2Vzc1Byb3h5Ojpjb25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9j
ZXNzUHJveHk6OnRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzc1Byb3h5
OjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzc1Byb3h5OjphZGRN
ZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NQcm94eTo6cmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzUHJveHk6
OmRpc3BhdGNoTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzc1Byb3h5Ojpk
aXNwYXRjaFN5bmNNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzUHJveHk6
OmlzTGF1bmNoaW5nKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzUHJveHk6OmRpZEZp
bmlzaExhdW5jaGluZyk6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzc1Byb3h5OjphYm9y
dFByb2Nlc3NMYXVuY2hJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzc1By
b3h5OjpjbGVhckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NQcm94
eTo6Y29ubmVjdGlvbldpbGxPcGVuKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzUHJv
eHk6OmNvbm5lY3Rpb25XaWxsQ2xvc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9DaGlsZFByb2Nl
c3NQcm94eS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vz
c1Byb3h5LmguCisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzc1Byb3h5Ojpjb25uZWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzUHJveHk6OmlzVmFsaWQpOgorICAgICAg
ICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NQcm94eTo6Y2FuU2VuZE1lc3NhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpDaGlsZFByb2Nlc3NQcm94eTo6cHJvY2Vzc0lkZW50aWZpZXIpOgorICAgICAgICAo
V2ViS2l0OjpDaGlsZFByb2Nlc3NQcm94eTo6c2VuZCk6CisgICAgICAgIChXZWJLaXQ6OkNoaWxk
UHJvY2Vzc1Byb3h5OjpzZW5kU3luYyk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorCiAyMDEzLTEyLTA4ICBCcmlhbiBIb2x0ICA8YnJpYW4uaG9sdEBzYW1z
dW5nLmNvbT4KIAogICAgICAgICBbV0syXSBHdWFyZCBNYWMgc3BlY2lmaWMgbmV0d29yayBwcm9j
ZXNzIGNvZGUgd2l0aCBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpp
bmRleCBhODYxMWY2Li44NWRiZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtl
ZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAg
LTQzNyw4ICs0MzcsNiBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1No
YXJlZC9DYWNoZU1vZGVsLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3Mu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmggXAotCVNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3NQcm94eS5jcHAgXAotCVNvdXJjZS9XZWJLaXQyL1No
YXJlZC9DaGlsZFByb2Nlc3NQcm94eS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQ
cm9jZXNzU3VwcGxlbWVudC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29tbWFuZExpbmUu
aCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvbm5lY3Rpb25TdGFjay5jcHAgXApAQCAtODYy
LDYgKzg2MCw4IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSU5hdmlnYXRpb25EYXRhLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9CYWNr
aW5nU3RvcmUuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmgg
XAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9DaGlsZFByb2Nlc3NQcm94eS5jcHAgXAorCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9DaGlsZFByb2Nlc3NQcm94eS5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvRGVmYXVsdFVuZG9Db250cm9sbGVyLmNwcCBcCiAJU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0RlZmF1bHRVbmRvQ29udHJvbGxlci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ2hpbGRQcm9jZXNzUHJveHkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxMWUwODY4Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nl
c3NQcm94eS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzAgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDaGlsZFByb2Nlc3NQcm94eS5oIgotCi0j
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLUNoaWxkUHJv
Y2Vzc1Byb3h5OjpDaGlsZFByb2Nlc3NQcm94eSgpCi17Ci19Ci0KLUNoaWxkUHJvY2Vzc1Byb3h5
Ojp+Q2hpbGRQcm9jZXNzUHJveHkoKQotewotICAgIGlmIChtX2Nvbm5lY3Rpb24pCi0gICAgICAg
IG1fY29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOwotCi0gICAgaWYgKG1fcHJvY2Vzc0xhdW5jaGVy
KSB7Ci0gICAgICAgIG1fcHJvY2Vzc0xhdW5jaGVyLT5pbnZhbGlkYXRlKCk7Ci0gICAgICAgIG1f
cHJvY2Vzc0xhdW5jaGVyID0gMDsKLSAgICB9Ci19Ci0KLUNoaWxkUHJvY2Vzc1Byb3h5KiBDaGls
ZFByb2Nlc3NQcm94eTo6ZnJvbUNvbm5lY3Rpb24oQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVj
dGlvbikKLXsKLSAgICBBU1NFUlQoY29ubmVjdGlvbik7Ci0KLSAgICBDaGlsZFByb2Nlc3NQcm94
eSogY2hpbGRQcm9jZXNzUHJveHkgPSBzdGF0aWNfY2FzdDxDaGlsZFByb2Nlc3NQcm94eSo+KGNv
bm5lY3Rpb24tPmNsaWVudCgpKTsKLSAgICBBU1NFUlQoY2hpbGRQcm9jZXNzUHJveHktPmNvbm5l
Y3Rpb24oKSA9PSBjb25uZWN0aW9uKTsKLQotICAgIHJldHVybiBjaGlsZFByb2Nlc3NQcm94eTsK
LX0KLQotdm9pZCBDaGlsZFByb2Nlc3NQcm94eTo6Y29ubmVjdCgpCi17Ci0gICAgQVNTRVJUKCFt
X3Byb2Nlc3NMYXVuY2hlcik7Ci0gICAgUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zIGxh
dW5jaE9wdGlvbnM7Ci0gICAgZ2V0TGF1bmNoT3B0aW9ucyhsYXVuY2hPcHRpb25zKTsKLSAgICBt
X3Byb2Nlc3NMYXVuY2hlciA9IFByb2Nlc3NMYXVuY2hlcjo6Y3JlYXRlKHRoaXMsIGxhdW5jaE9w
dGlvbnMpOwotfQotCi12b2lkIENoaWxkUHJvY2Vzc1Byb3h5Ojp0ZXJtaW5hdGUoKQotewotICAg
IGlmIChtX3Byb2Nlc3NMYXVuY2hlcikKLSAgICAgICAgbV9wcm9jZXNzTGF1bmNoZXItPnRlcm1p
bmF0ZVByb2Nlc3MoKTsKLX0KLQotYm9vbCBDaGlsZFByb2Nlc3NQcm94eTo6c2VuZE1lc3NhZ2Uo
c3RkOjp1bmlxdWVfcHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyLCB1bnNpZ25l
ZCBtZXNzYWdlU2VuZEZsYWdzKQotewotICAgIC8vIElmIHdlJ3JlIHdhaXRpbmcgZm9yIHRoZSB3
ZWIgcHJvY2VzcyB0byBsYXVuY2gsIHdlIG5lZWQgdG8gc3Rhc2ggYXdheSB0aGUgbWVzc2FnZXMg
c28gd2UgY2FuIHNlbmQgdGhlbSBvbmNlIHdlIGhhdmUKLSAgICAvLyBhIENvcmVJUEMgY29ubmVj
dGlvbi4KLSAgICBpZiAoaXNMYXVuY2hpbmcoKSkgewotICAgICAgICBtX3BlbmRpbmdNZXNzYWdl
cy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3RkOjptb3ZlKGVuY29kZXIpLCBtZXNzYWdlU2VuZEZs
YWdzKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIC8vIElmIHRoZSB3ZWIg
cHJvY2VzcyBoYXMgZXhpdGVkLCBjb25uZWN0aW9uIHdpbGwgYmUgbnVsbCBoZXJlLgotICAgIGlm
ICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gY29u
bmVjdGlvbigpLT5zZW5kTWVzc2FnZShzdGQ6Om1vdmUoZW5jb2RlciksIG1lc3NhZ2VTZW5kRmxh
Z3MpOwotfQotCi12b2lkIENoaWxkUHJvY2Vzc1Byb3h5OjphZGRNZXNzYWdlUmVjZWl2ZXIoQ29y
ZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIENvcmVJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciogbWVzc2FnZVJlY2VpdmVyKQotewotICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFw
LmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtZXNzYWdlUmVjZWl2ZXIp
OwotfQotCi12b2lkIENoaWxkUHJvY2Vzc1Byb3h5OjphZGRNZXNzYWdlUmVjZWl2ZXIoQ29yZUlQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciogbWVzc2FnZVJlY2VpdmVyKQotewotICAg
IG1fbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBkZXN0aW5hdGlvbklELCBtZXNzYWdlUmVjZWl2ZXIpOwotfQotCi12b2lkIENoaWxkUHJv
Y2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCi17Ci0gICAgbV9t
ZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5h
bWUsIGRlc3RpbmF0aW9uSUQpOwotfQotCi1ib29sIENoaWxkUHJvY2Vzc1Byb3h5OjpkaXNwYXRj
aE1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2Fn
ZURlY29kZXImIGRlY29kZXIpCi17Ci0gICAgcmV0dXJuIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmRp
c3BhdGNoTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKLX0KLQotYm9vbCBDaGlsZFByb2Nl
c3NQcm94eTo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0
aW9uLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPENv
cmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQotewotICAgIHJldHVybiBtX21l
c3NhZ2VSZWNlaXZlck1hcC5kaXNwYXRjaFN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIs
IHJlcGx5RW5jb2Rlcik7Ci19Ci0KLWJvb2wgQ2hpbGRQcm9jZXNzUHJveHk6OmlzTGF1bmNoaW5n
KCkgY29uc3QKLXsKLSAgICBpZiAobV9wcm9jZXNzTGF1bmNoZXIpCi0gICAgICAgIHJldHVybiBt
X3Byb2Nlc3NMYXVuY2hlci0+aXNMYXVuY2hpbmcoKTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotdm9pZCBDaGlsZFByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVu
Y2hlciosIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZp
ZXIpCi17Ci0gICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24pOwotCi0gICAgbV9jb25uZWN0aW9uID0g
Q29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQ29ubmVjdGlvbihjb25uZWN0aW9uSWRl
bnRpZmllciwgdGhpcywgUnVuTG9vcDo6bWFpbigpKTsKLSNpZiBPUyhEQVJXSU4pCi0gICAgbV9j
b25uZWN0aW9uLT5zZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25Pbk1hY2hFeGNlcHRpb25zKCk7Ci0j
ZW5kaWYKLQotICAgIGNvbm5lY3Rpb25XaWxsT3BlbihtX2Nvbm5lY3Rpb24uZ2V0KCkpOwotICAg
IG1fY29ubmVjdGlvbi0+b3BlbigpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3Bl
bmRpbmdNZXNzYWdlcy5zaXplKCk7ICsraSkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29y
ZUlQQzo6TWVzc2FnZUVuY29kZXI+IG1lc3NhZ2UgPSBzdGQ6Om1vdmUobV9wZW5kaW5nTWVzc2Fn
ZXNbaV0uZmlyc3QpOwotICAgICAgICB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdzID0gbV9wZW5k
aW5nTWVzc2FnZXNbaV0uc2Vjb25kOwotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdl
KHN0ZDo6bW92ZShtZXNzYWdlKSwgbWVzc2FnZVNlbmRGbGFncyk7Ci0gICAgfQotCi0gICAgbV9w
ZW5kaW5nTWVzc2FnZXMuY2xlYXIoKTsKLX0KLQotdm9pZCBDaGlsZFByb2Nlc3NQcm94eTo6YWJv
cnRQcm9jZXNzTGF1bmNoSWZOZWVkZWQoKQotewotICAgIGlmICghaXNMYXVuY2hpbmcoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgbV9wcm9jZXNzTGF1bmNoZXItPmludmFsaWRhdGUoKTsKLSAg
ICBtX3Byb2Nlc3NMYXVuY2hlciA9IDA7Ci19Ci0KLXZvaWQgQ2hpbGRQcm9jZXNzUHJveHk6OmNs
ZWFyQ29ubmVjdGlvbigpCi17Ci0gICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGNvbm5lY3Rpb25XaWxsQ2xvc2UobV9jb25uZWN0aW9uLmdldCgpKTsKLQotICAg
IG1fY29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOwotICAgIG1fY29ubmVjdGlvbiA9IG51bGxwdHI7
Ci19Ci0KLXZvaWQgQ2hpbGRQcm9jZXNzUHJveHk6OmNvbm5lY3Rpb25XaWxsT3BlbihDb3JlSVBD
OjpDb25uZWN0aW9uKikKLXsKLX0KLQotdm9pZCBDaGlsZFByb2Nlc3NQcm94eTo6Y29ubmVjdGlv
bldpbGxDbG9zZShDb3JlSVBDOjpDb25uZWN0aW9uKikKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3NQcm94eS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWZhMGRiLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9DaGlsZFByb2Nlc3NQcm94eS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTE2ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENoaWxkUHJvY2Vzc1Byb3h5X2gKLSNkZWZpbmUg
Q2hpbGRQcm9jZXNzUHJveHlfaAotCi0jaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlck1hcC5oIgotI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgotCi0j
aW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi1jbGFzcyBDaGlsZFByb2Nlc3NQcm94eSA6IFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50LCBw
dWJsaWMgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50LCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8Q2hpbGRQcm9jZXNzUHJveHk+IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDaGls
ZFByb2Nlc3NQcm94eSk7Ci0KLXB1YmxpYzoKLSAgICBDaGlsZFByb2Nlc3NQcm94eSgpOwotICAg
IHZpcnR1YWwgfkNoaWxkUHJvY2Vzc1Byb3h5KCk7Ci0KLSAgICAvLyBGSVhNRTogVGhpcyBmdW5j
dGlvbiBkb2VzIGFuIHVuY2hlY2tlZCB1cGNhc3QsIGFuZCBpdCBpcyBvbmx5IHVzZWQgaW4gYSBk
ZXByZWNhdGVkIGNvZGUgcGF0aC4gV291bGQgbGlrZSB0byBnZXQgcmlkIG9mIGl0LgotICAgIHN0
YXRpYyBDaGlsZFByb2Nlc3NQcm94eSogZnJvbUNvbm5lY3Rpb24oQ29yZUlQQzo6Q29ubmVjdGlv
biopOwotCi0gICAgdm9pZCBjb25uZWN0KCk7Ci0gICAgdm9pZCB0ZXJtaW5hdGUoKTsKLQotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCwgdW5zaWduZWQgbWVzc2FnZVNlbmRGbGFncyA9IDApOwotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5
JiYsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGRvdWJsZSB0aW1lb3V0ID0gMSk7Ci0gICAgCi0g
ICAgQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbigpIGNvbnN0Ci0gICAgewotICAgICAg
ICBBU1NFUlQobV9jb25uZWN0aW9uKTsKLSAgICAgICAgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQo
KTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihDb3JlSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyKik7
Ci0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIENvcmVJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciopOwotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKENvcmVJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
KTsKLQotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbjsgfQot
ICAgIGJvb2wgaXNMYXVuY2hpbmcoKSBjb25zdDsKLSAgICBib29sIGNhblNlbmRNZXNzYWdlKCkg
Y29uc3QgeyByZXR1cm4gaXNWYWxpZCgpIHx8IGlzTGF1bmNoaW5nKCk7IH0KLQotICAgIFBsYXRm
b3JtUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X3Byb2Nlc3NMYXVuY2hlci0+cHJvY2Vzc0lkZW50aWZpZXIoKTsgfQotCi1wcm90ZWN0ZWQ6Ci0g
ICAgdm9pZCBjbGVhckNvbm5lY3Rpb24oKTsKLSAgICB2b2lkIGFib3J0UHJvY2Vzc0xhdW5jaElm
TmVlZGVkKCk7Ci0KLSAgICAvLyBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudAotICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgQ29yZUlQQzo6Q29ubmVj
dGlvbjo6SWRlbnRpZmllcikgT1ZFUlJJREU7Ci0KLSAgICBib29sIGRpc3BhdGNoTWVzc2FnZShD
b3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKLSAgICBib29s
IGRpc3BhdGNoU3luY01lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3Nh
Z2VEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYpOwot
Ci1wcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBnZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVu
Y2hlcjo6TGF1bmNoT3B0aW9ucyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdGlvbldp
bGxPcGVuKENvcmVJUEM6OkNvbm5lY3Rpb24qKTsKLSAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdGlv
bldpbGxDbG9zZShDb3JlSVBDOjpDb25uZWN0aW9uKik7Ci0KLSAgICBib29sIHNlbmRNZXNzYWdl
KHN0ZDo6dW5pcXVlX3B0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4sIHVuc2lnbmVkIG1lc3Nh
Z2VTZW5kRmxhZ3MpOwotCi0gICAgVmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnVuaXF1ZV9wdHI8Q29y
ZUlQQzo6TWVzc2FnZUVuY29kZXI+LCB1bnNpZ25lZD4+IG1fcGVuZGluZ01lc3NhZ2VzOwotICAg
IFJlZlB0cjxQcm9jZXNzTGF1bmNoZXI+IG1fcHJvY2Vzc0xhdW5jaGVyOwotICAgIFJlZlB0cjxD
b3JlSVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247Ci0gICAgQ29yZUlQQzo6TWVzc2FnZVJl
Y2VpdmVyTWFwIG1fbWVzc2FnZVJlY2VpdmVyTWFwOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUg
VD4KLWJvb2wgQ2hpbGRQcm9jZXNzUHJveHk6OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQsIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MpCi17Ci0gICAgQ09NUElMRV9B
U1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwotCi0gICAgYXV0byBlbmNv
ZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4oVDo6cmVjZWl2
ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7Ci0gICAgZW5jb2Rlci0+ZW5jb2Rl
KG1lc3NhZ2UuYXJndW1lbnRzKCkpOwotCi0gICAgcmV0dXJuIHNlbmRNZXNzYWdlKHN0ZDo6bW92
ZShlbmNvZGVyKSwgbWVzc2FnZVNlbmRGbGFncyk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFU+
IAotYm9vbCBDaGlsZFByb2Nlc3NQcm94eTo6c2VuZFN5bmMoVSYmIG1lc3NhZ2UsIHR5cGVuYW1l
IFU6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGRvdWJsZSB0aW1lb3V0
KQotewotICAgIENPTVBJTEVfQVNTRVJUKFU6OmlzU3luYywgU3luY01lc3NhZ2VFeHBlY3RlZCk7
Ci0KLSAgICBpZiAoIW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
cmV0dXJuIGNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoc3RkOjpmb3J3YXJkPFU+KG1lc3NhZ2UpLCBz
dGQ6Om1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELCB0aW1lb3V0KTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBDaGlsZFByb2Nlc3NQcm94eV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ2hpbGRQcm9jZXNzUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NoaWxkUHJvY2Vzc1Byb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4xMWUwODY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NoaWxkUHJvY2Vzc1Byb3h5LmNwcApAQCAtMCwwICsxLDE3MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDaGlsZFByb2Nlc3NQ
cm94eS5oIgorCisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK0NoaWxkUHJvY2Vzc1Byb3h5OjpDaGlsZFByb2Nlc3NQcm94eSgpCit7Cit9CisKK0NoaWxk
UHJvY2Vzc1Byb3h5Ojp+Q2hpbGRQcm9jZXNzUHJveHkoKQoreworICAgIGlmIChtX2Nvbm5lY3Rp
b24pCisgICAgICAgIG1fY29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOworCisgICAgaWYgKG1fcHJv
Y2Vzc0xhdW5jaGVyKSB7CisgICAgICAgIG1fcHJvY2Vzc0xhdW5jaGVyLT5pbnZhbGlkYXRlKCk7
CisgICAgICAgIG1fcHJvY2Vzc0xhdW5jaGVyID0gMDsKKyAgICB9Cit9CisKK0NoaWxkUHJvY2Vz
c1Byb3h5KiBDaGlsZFByb2Nlc3NQcm94eTo6ZnJvbUNvbm5lY3Rpb24oQ29yZUlQQzo6Q29ubmVj
dGlvbiogY29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQoY29ubmVjdGlvbik7CisKKyAgICBDaGls
ZFByb2Nlc3NQcm94eSogY2hpbGRQcm9jZXNzUHJveHkgPSBzdGF0aWNfY2FzdDxDaGlsZFByb2Nl
c3NQcm94eSo+KGNvbm5lY3Rpb24tPmNsaWVudCgpKTsKKyAgICBBU1NFUlQoY2hpbGRQcm9jZXNz
UHJveHktPmNvbm5lY3Rpb24oKSA9PSBjb25uZWN0aW9uKTsKKworICAgIHJldHVybiBjaGlsZFBy
b2Nlc3NQcm94eTsKK30KKwordm9pZCBDaGlsZFByb2Nlc3NQcm94eTo6Y29ubmVjdCgpCit7Cisg
ICAgQVNTRVJUKCFtX3Byb2Nlc3NMYXVuY2hlcik7CisgICAgUHJvY2Vzc0xhdW5jaGVyOjpMYXVu
Y2hPcHRpb25zIGxhdW5jaE9wdGlvbnM7CisgICAgZ2V0TGF1bmNoT3B0aW9ucyhsYXVuY2hPcHRp
b25zKTsKKyAgICBtX3Byb2Nlc3NMYXVuY2hlciA9IFByb2Nlc3NMYXVuY2hlcjo6Y3JlYXRlKHRo
aXMsIGxhdW5jaE9wdGlvbnMpOworfQorCit2b2lkIENoaWxkUHJvY2Vzc1Byb3h5Ojp0ZXJtaW5h
dGUoKQoreworICAgIGlmIChtX3Byb2Nlc3NMYXVuY2hlcikKKyAgICAgICAgbV9wcm9jZXNzTGF1
bmNoZXItPnRlcm1pbmF0ZVByb2Nlc3MoKTsKK30KKworYm9vbCBDaGlsZFByb2Nlc3NQcm94eTo6
c2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiBlbmNv
ZGVyLCB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdzKQoreworICAgIC8vIElmIHdlJ3JlIHdhaXRp
bmcgZm9yIHRoZSB3ZWIgcHJvY2VzcyB0byBsYXVuY2gsIHdlIG5lZWQgdG8gc3Rhc2ggYXdheSB0
aGUgbWVzc2FnZXMgc28gd2UgY2FuIHNlbmQgdGhlbSBvbmNlIHdlIGhhdmUKKyAgICAvLyBhIENv
cmVJUEMgY29ubmVjdGlvbi4KKyAgICBpZiAoaXNMYXVuY2hpbmcoKSkgeworICAgICAgICBtX3Bl
bmRpbmdNZXNzYWdlcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3RkOjptb3ZlKGVuY29kZXIpLCBt
ZXNzYWdlU2VuZEZsYWdzKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8v
IElmIHRoZSB3ZWIgcHJvY2VzcyBoYXMgZXhpdGVkLCBjb25uZWN0aW9uIHdpbGwgYmUgbnVsbCBo
ZXJlLgorICAgIGlmICghbV9jb25uZWN0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gY29ubmVjdGlvbigpLT5zZW5kTWVzc2FnZShzdGQ6Om1vdmUoZW5jb2RlciksIG1l
c3NhZ2VTZW5kRmxhZ3MpOworfQorCit2b2lkIENoaWxkUHJvY2Vzc1Byb3h5OjphZGRNZXNzYWdl
UmVjZWl2ZXIoQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIENv
cmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciogbWVzc2FnZVJlY2VpdmVyKQoreworICAgIG1fbWVzc2Fn
ZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtZXNz
YWdlUmVjZWl2ZXIpOworfQorCit2b2lkIENoaWxkUHJvY2Vzc1Byb3h5OjphZGRNZXNzYWdlUmVj
ZWl2ZXIoQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciogbWVzc2FnZVJlY2Vp
dmVyKQoreworICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELCBtZXNzYWdlUmVjZWl2ZXIpOworfQorCit2
b2lkIENoaWxkUHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoQ29yZUlQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQp
Cit7CisgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3Nh
Z2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOworfQorCitib29sIENoaWxkUHJvY2Vzc1By
b3h5OjpkaXNwYXRjaE1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29y
ZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCit7CisgICAgcmV0dXJuIG1fbWVzc2FnZVJl
Y2VpdmVyTWFwLmRpc3BhdGNoTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKK30KKworYm9v
bCBDaGlsZFByb2Nlc3NQcm94eTo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0
aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1
bmlxdWVfcHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQoreworICAg
IHJldHVybiBtX21lc3NhZ2VSZWNlaXZlck1hcC5kaXNwYXRjaFN5bmNNZXNzYWdlKGNvbm5lY3Rp
b24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7Cit9CisKK2Jvb2wgQ2hpbGRQcm9jZXNzUHJveHk6
OmlzTGF1bmNoaW5nKCkgY29uc3QKK3sKKyAgICBpZiAobV9wcm9jZXNzTGF1bmNoZXIpCisgICAg
ICAgIHJldHVybiBtX3Byb2Nlc3NMYXVuY2hlci0+aXNMYXVuY2hpbmcoKTsKKworICAgIHJldHVy
biBmYWxzZTsKK30KKwordm9pZCBDaGlsZFByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5n
KFByb2Nlc3NMYXVuY2hlciosIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVj
dGlvbklkZW50aWZpZXIpCit7CisgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24pOworCisgICAgbV9j
b25uZWN0aW9uID0gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQ29ubmVjdGlvbihj
b25uZWN0aW9uSWRlbnRpZmllciwgdGhpcywgUnVuTG9vcDo6bWFpbigpKTsKKyNpZiBPUyhEQVJX
SU4pCisgICAgbV9jb25uZWN0aW9uLT5zZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25Pbk1hY2hFeGNl
cHRpb25zKCk7CisjZW5kaWYKKworICAgIGNvbm5lY3Rpb25XaWxsT3BlbihtX2Nvbm5lY3Rpb24u
Z2V0KCkpOworICAgIG1fY29ubmVjdGlvbi0+b3BlbigpOworCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX3BlbmRpbmdNZXNzYWdlcy5zaXplKCk7ICsraSkgeworICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+IG1lc3NhZ2UgPSBzdGQ6Om1vdmUobV9w
ZW5kaW5nTWVzc2FnZXNbaV0uZmlyc3QpOworICAgICAgICB1bnNpZ25lZCBtZXNzYWdlU2VuZEZs
YWdzID0gbV9wZW5kaW5nTWVzc2FnZXNbaV0uc2Vjb25kOworICAgICAgICBtX2Nvbm5lY3Rpb24t
PnNlbmRNZXNzYWdlKHN0ZDo6bW92ZShtZXNzYWdlKSwgbWVzc2FnZVNlbmRGbGFncyk7CisgICAg
fQorCisgICAgbV9wZW5kaW5nTWVzc2FnZXMuY2xlYXIoKTsKK30KKwordm9pZCBDaGlsZFByb2Nl
c3NQcm94eTo6YWJvcnRQcm9jZXNzTGF1bmNoSWZOZWVkZWQoKQoreworICAgIGlmICghaXNMYXVu
Y2hpbmcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wcm9jZXNzTGF1bmNoZXItPmludmFs
aWRhdGUoKTsKKyAgICBtX3Byb2Nlc3NMYXVuY2hlciA9IDA7Cit9CisKK3ZvaWQgQ2hpbGRQcm9j
ZXNzUHJveHk6OmNsZWFyQ29ubmVjdGlvbigpCit7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCisg
ICAgICAgIHJldHVybjsKKworICAgIGNvbm5lY3Rpb25XaWxsQ2xvc2UobV9jb25uZWN0aW9uLmdl
dCgpKTsKKworICAgIG1fY29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOworICAgIG1fY29ubmVjdGlv
biA9IG51bGxwdHI7Cit9CisKK3ZvaWQgQ2hpbGRQcm9jZXNzUHJveHk6OmNvbm5lY3Rpb25XaWxs
T3BlbihDb3JlSVBDOjpDb25uZWN0aW9uKikKK3sKK30KKwordm9pZCBDaGlsZFByb2Nlc3NQcm94
eTo6Y29ubmVjdGlvbldpbGxDbG9zZShDb3JlSVBDOjpDb25uZWN0aW9uKikKK3sKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q2hpbGRQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9DaGlsZFByb2Nl
c3NQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjZGQzNTMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ2hpbGRQcm9jZXNzUHJv
eHkuaApAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ2hpbGRQcm9jZXNz
UHJveHlfaAorI2RlZmluZSBDaGlsZFByb2Nlc3NQcm94eV9oCisKKyNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyTWFwLmgiCisjaW5jbHVkZSAiUHJvY2Vz
c0xhdW5jaGVyLmgiCisKKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIENoaWxkUHJvY2Vzc1Byb3h5IDogUHJvY2Vzc0xh
dW5jaGVyOjpDbGllbnQsIHB1YmxpYyBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQsIHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDaGlsZFByb2Nlc3NQcm94eT4geworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKENoaWxkUHJvY2Vzc1Byb3h5KTsKKworcHVibGljOgorICAgIENoaWxkUHJv
Y2Vzc1Byb3h5KCk7CisgICAgdmlydHVhbCB+Q2hpbGRQcm9jZXNzUHJveHkoKTsKKworICAgIC8v
IEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGRvZXMgYW4gdW5jaGVja2VkIHVwY2FzdCwgYW5kIGl0IGlz
IG9ubHkgdXNlZCBpbiBhIGRlcHJlY2F0ZWQgY29kZSBwYXRoLiBXb3VsZCBsaWtlIHRvIGdldCBy
aWQgb2YgaXQuCisgICAgc3RhdGljIENoaWxkUHJvY2Vzc1Byb3h5KiBmcm9tQ29ubmVjdGlvbihD
b3JlSVBDOjpDb25uZWN0aW9uKik7CisKKyAgICB2b2lkIGNvbm5lY3QoKTsKKyAgICB2b2lkIHRl
cm1pbmF0ZSgpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kKFQmJiBtZXNz
YWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdzID0g
MCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwg
dHlwZW5hbWUgVDo6UmVwbHkmJiwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgZG91YmxlIHRpbWVv
dXQgPSAxKTsKKworICAgIENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdAor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1fY29ubmVjdGlvbik7CisgICAgICAgIHJldHVybiBtX2Nv
bm5lY3Rpb24uZ2V0KCk7CisgICAgfQorCisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoQ29y
ZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIENvcmVJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciopOworICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKENvcmVJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBD
b3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIqKTsKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCk7CisKKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2Nv
bm5lY3Rpb247IH0KKyAgICBib29sIGlzTGF1bmNoaW5nKCkgY29uc3Q7CisgICAgYm9vbCBjYW5T
ZW5kTWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIGlzVmFsaWQoKSB8fCBpc0xhdW5jaGluZygpOyB9
CisKKyAgICBQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9wcm9jZXNzTGF1bmNoZXItPnByb2Nlc3NJZGVudGlmaWVyKCk7IH0KKwor
cHJvdGVjdGVkOgorICAgIHZvaWQgY2xlYXJDb25uZWN0aW9uKCk7CisgICAgdm9pZCBhYm9ydFBy
b2Nlc3NMYXVuY2hJZk5lZWRlZCgpOworCisgICAgLy8gUHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIENv
cmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpIE9WRVJSSURFOworCisgICAgYm9vbCBkaXNw
YXRjaE1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVy
Jik7CisgICAgYm9vbCBkaXNwYXRjaFN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBD
b3JlSVBDOjpNZXNzYWdlRGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxDb3JlSVBDOjpNZXNzYWdl
RW5jb2Rlcj4mKTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0TGF1bmNoT3B0aW9u
cyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGNvbm5lY3Rpb25XaWxsT3BlbihDb3JlSVBDOjpDb25uZWN0aW9uKik7CisgICAgdmlydHVhbCB2
b2lkIGNvbm5lY3Rpb25XaWxsQ2xvc2UoQ29yZUlQQzo6Q29ubmVjdGlvbiopOworCisgICAgYm9v
bCBzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+LCB1
bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdzKTsKKworICAgIFZlY3RvcjxzdGQ6OnBhaXI8c3RkOjp1
bmlxdWVfcHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiwgdW5zaWduZWQ+PiBtX3BlbmRpbmdN
ZXNzYWdlczsKKyAgICBSZWZQdHI8UHJvY2Vzc0xhdW5jaGVyPiBtX3Byb2Nlc3NMYXVuY2hlcjsK
KyAgICBSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIENvcmVJ
UEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCBtX21lc3NhZ2VSZWNlaXZlck1hcDsKK307CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+Citib29sIENoaWxkUHJvY2Vzc1Byb3h5OjpzZW5kKFQmJiBtZXNzYWdl
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdzKQorewor
ICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKKwor
ICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29yZUlQQzo6TWVzc2FnZUVuY29k
ZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAgIGVu
Y29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKKworICAgIHJldHVybiBzZW5kTWVz
c2FnZShzdGQ6Om1vdmUoZW5jb2RlciksIG1lc3NhZ2VTZW5kRmxhZ3MpOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBVPgorYm9vbCBDaGlsZFByb2Nlc3NQcm94eTo6c2VuZFN5bmMoVSYmIG1lc3Nh
Z2UsIHR5cGVuYW1lIFU6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGRv
dWJsZSB0aW1lb3V0KQoreworICAgIENPTVBJTEVfQVNTRVJUKFU6OmlzU3luYywgU3luY01lc3Nh
Z2VFeHBlY3RlZCk7CisKKyAgICBpZiAoIW1fY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIGNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoc3RkOjpmb3J3YXJkPFU+
KG1lc3NhZ2UpLCBzdGQ6Om1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELCB0aW1lb3V0KTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBDaGlsZFByb2Nlc3NQcm94eV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZDg2MjYyNy4uYzc3ZGUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzQyMCw4ICszNDIwLDYgQEAKIAkJCQlCQzMw
NjVGOTEyNTkzNDRFMDBFNzEyNzggLyogQ2FjaGVNb2RlbC5oICovLAogCQkJCTFBMkQ5NTZFMTI4
NDg1NjQwMDFFQjk2MiAvKiBDaGlsZFByb2Nlc3MuY3BwICovLAogCQkJCTFBMkQ5NTZEMTI4NDg1
NjQwMDFFQjk2MiAvKiBDaGlsZFByb2Nlc3MuaCAqLywKLQkJCQlFMTUxM0M2NDE2NkVBQkIyMDAx
NDlGQ0IgLyogQ2hpbGRQcm9jZXNzUHJveHkuY3BwICovLAotCQkJCUUxNTEzQzY1MTY2RUFCQjIw
MDE0OUZDQiAvKiBDaGlsZFByb2Nlc3NQcm94eS5oICovLAogCQkJCTI5MEY0MjcxMTcyQTBDNzQw
MDkzOUZGMCAvKiBDaGlsZFByb2Nlc3NTdXBwbGVtZW50LmggKi8sCiAJCQkJMUE2RjlGOEUxMUUx
M0VGQzAwREIxMzcxIC8qIENvbW1hbmRMaW5lLmggKi8sCiAJCQkJNTEzNjE4M0IxNjMxMjZEQTAw
QTk5RERFIC8qIENvbm5lY3Rpb25TdGFjay5jcHAgKi8sCkBAIC00NDE3LDYgKzQ0MTUsOCBAQAog
CQkJCTFBNDRCOTU4MTZCNzNGOEMwMEI3QkJEOCAvKiBTdG9yYWdlICovLAogCQkJCUJDRjY5RkEx
MTE3NkQwMTQwMDQ3MUE1MiAvKiBBUElOYXZpZ2F0aW9uRGF0YS5jcHAgKi8sCiAJCQkJQkNGNjlG
QTAxMTc2RDAxNDAwNDcxQTUyIC8qIEFQSU5hdmlnYXRpb25EYXRhLmggKi8sCisJCQkJRTE1MTND
NjQxNjZFQUJCMjAwMTQ5RkNCIC8qIENoaWxkUHJvY2Vzc1Byb3h5LmNwcCAqLywKKwkJCQlFMTUx
M0M2NTE2NkVBQkIyMDAxNDlGQ0IgLyogQ2hpbGRQcm9jZXNzUHJveHkuaCAqLywKIAkJCQlCQzI2
NTIxMjExODI2MDgxMDAyNDNFMTIgLyogRHJhd2luZ0FyZWFQcm94eS5jcHAgKi8sCiAJCQkJQkMy
NjUyMTMxMTgyNjA4MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHkuaCAqLywKIAkJCQkxQTY0
MjJGQzEyREQwOEZFMDBDQUFFMkMgLyogRHJhd2luZ0FyZWFQcm94eS5tZXNzYWdlcy5pbiAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268756</attachid>
            <date>2016-01-12 03:58:46 -0800</date>
            <delta_ts>2016-01-12 09:23:42 -0800</delta_ts>
            <desc>Rebased patch</desc>
            <filename>wk2-child-process-proxy.diff</filename>
            <type>text/plain</type>
            <size>29072</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggMTc1YjAwMS4uZjYzZmYzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTIzMSw3ICsyMzEsNiBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVk
L0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmNwcAogICAgIFNoYXJl
ZC9DYWNoZU1vZGVsLmNwcAogICAgIFNoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCi0gICAgU2hhcmVk
L0NoaWxkUHJvY2Vzc1Byb3h5LmNwcAogICAgIFNoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRh
LmNwcAogICAgIFNoYXJlZC9FZGl0b3JTdGF0ZS5jcHAKICAgICBTaGFyZWQvRm9udEluZm8uY3Bw
CkBAIC0zMzcsNiArMzM2LDcgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogCiAgICAgU2hhcmVkL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcAogCisgICAgVUlQcm9jZXNzL0NoaWxkUHJvY2Vzc1By
b3h5LmNwcAogICAgIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcAogICAgIFVJUHJvY2Vz
cy9GcmFtZUxvYWRTdGF0ZS5jcHAKICAgICBVSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2NzU3MGNjLi41ODRiM2ViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDUgKzEsNDAgQEAKIDIwMTYtMDEtMTIgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCisgICAgICAgIE1vdmUgQ2hpbGRQcm9jZXNzUHJv
eHkgZnJvbSBTaGFyZWQgdG8gVUlQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU1NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDaGlsZFByb2Nlc3NQcm94eSBpcyBvbmx5IHVzZWQgYnkgdGhl
IFVJIHByb2Nlc3MuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBQbGF0
Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ2hpbGRQcm9jZXNzUHJveHkuY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzc1Byb3h5LmNw
cC4KKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzUHJveHk6OkNoaWxkUHJvY2Vzc1Byb3h5
KToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzUHJveHk6On5DaGlsZFByb2Nlc3NQcm94
eSk6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzc1Byb3h5Ojpmcm9tQ29ubmVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKToK
KyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzUHJveHk6OmNvbm5lY3QpOgorICAgICAgICAo
V2ViS2l0OjpDaGlsZFByb2Nlc3NQcm94eTo6dGVybWluYXRlKToKKyAgICAgICAgKFdlYktpdDo6
Q2hpbGRQcm9jZXNzUHJveHk6OnN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNz
UHJveHk6OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzUHJveHk6
OmFkZE1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzc1Byb3h5
OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NQ
cm94eTo6ZGlzcGF0Y2hNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzUHJv
eHk6OmRpc3BhdGNoU3luY01lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NQ
cm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNz
UHJveHk6OnNodXREb3duUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzc1By
b3h5Ojpjb25uZWN0aW9uV2lsbE9wZW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9DaGlsZFByb2Nl
c3NQcm94eS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vz
c1Byb3h5LmguCisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzc1Byb3h5Ojpjb25uZWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzUHJveHk6OnByb2Nlc3NJZGVudGlmaWVy
KToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzUHJveHk6OmNhblNlbmRNZXNzYWdlKToK
KyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzUHJveHk6OnNlbmQpOgorICAgICAgICAoV2Vi
S2l0OjpDaGlsZFByb2Nlc3NQcm94eTo6c2VuZFN5bmMpOgorICAgICAgICAqIFdlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworMjAxNi0wMS0xMiAgQ2FybG9zIEdhcmNpYSBDYW1w
b3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKICAgICAgICAgW0dUS10gVUkgcHJvY2VzcyBjcmFz
aGVzIGlmIHdlYmtpdF93ZWJfdmlld19nZXRfdGxzX2luZm8gaXMgY2FsbGVkIGJlZm9yZSBpbnRl
cm5hbCBsb2FkLWNvbW1pdHRlZCBldmVudAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQyMzc1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXgg
ODljNjQ2NS4uYjRhZjBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsu
Y21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTc0NCw3ICs3
NDQsNiBAQCBpZiAoRU5BQkxFX1BMVUdJTl9QUk9DRVNTX0dUSzIpCiAgICAgICAgIFNoYXJlZC9B
Y3Rpdml0eUFzc2VydGlvbi5jcHAKICAgICAgICAgU2hhcmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5j
ZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmNwcAogICAgICAgICBTaGFyZWQvQ2hpbGRQcm9jZXNzLmNw
cAotICAgICAgICBTaGFyZWQvQ2hpbGRQcm9jZXNzUHJveHkuY3BwCiAgICAgICAgIFNoYXJlZC9T
aGFyZWFibGVCaXRtYXAuY3BwCiAgICAgICAgIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCiAgICAgICAgIFNoYXJlZC9XZWJFdmVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9DaGlsZFByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q2hpbGRQcm9jZXNzUHJveHkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNmIx
MDk5Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3NQcm94
eS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDaGlsZFByb2Nlc3NQcm94eS5oIgotCi0jaW5jbHVk
ZSAiQ2hpbGRQcm9jZXNzTWVzc2FnZXMuaCIKLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotQ2hpbGRQcm9jZXNzUHJveHk6OkNoaWxkUHJvY2Vzc1Byb3h5
KCkKLXsKLX0KLQotQ2hpbGRQcm9jZXNzUHJveHk6On5DaGlsZFByb2Nlc3NQcm94eSgpCi17Ci0g
ICAgaWYgKG1fY29ubmVjdGlvbikKLSAgICAgICAgbV9jb25uZWN0aW9uLT5pbnZhbGlkYXRlKCk7
Ci0KLSAgICBpZiAobV9wcm9jZXNzTGF1bmNoZXIpIHsKLSAgICAgICAgbV9wcm9jZXNzTGF1bmNo
ZXItPmludmFsaWRhdGUoKTsKLSAgICAgICAgbV9wcm9jZXNzTGF1bmNoZXIgPSBudWxscHRyOwot
ICAgIH0KLX0KLQotQ2hpbGRQcm9jZXNzUHJveHkqIENoaWxkUHJvY2Vzc1Byb3h5Ojpmcm9tQ29u
bmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCi17Ci0gICAgQVNTRVJUKGNvbm5l
Y3Rpb24pOwotCi0gICAgQ2hpbGRQcm9jZXNzUHJveHkqIGNoaWxkUHJvY2Vzc1Byb3h5ID0gc3Rh
dGljX2Nhc3Q8Q2hpbGRQcm9jZXNzUHJveHkqPihjb25uZWN0aW9uLT5jbGllbnQoKSk7Ci0gICAg
QVNTRVJUKGNoaWxkUHJvY2Vzc1Byb3h5LT5jb25uZWN0aW9uKCkgPT0gY29ubmVjdGlvbik7Ci0K
LSAgICByZXR1cm4gY2hpbGRQcm9jZXNzUHJveHk7Ci19Ci0KLXZvaWQgQ2hpbGRQcm9jZXNzUHJv
eHk6OmdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBsYXVu
Y2hPcHRpb25zKQotewotICAgIGlmIChjb25zdCBjaGFyKiB1c2VyRGlyZWN0b3J5U3VmZml4ID0g
Z2V0ZW52KCJESVJIRUxQRVJfVVNFUl9ESVJfU1VGRklYIikpCi0gICAgICAgIGxhdW5jaE9wdGlv
bnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKEFTQ0lJTGl0ZXJhbCgidXNlci1kaXJlY3Rv
cnktc3VmZml4IiksIHVzZXJEaXJlY3RvcnlTdWZmaXgpOwotfQotCi12b2lkIENoaWxkUHJvY2Vz
c1Byb3h5Ojpjb25uZWN0KCkKLXsKLSAgICBBU1NFUlQoIW1fcHJvY2Vzc0xhdW5jaGVyKTsKLSAg
ICBQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMgbGF1bmNoT3B0aW9uczsKLSAgICBnZXRM
YXVuY2hPcHRpb25zKGxhdW5jaE9wdGlvbnMpOwotICAgIG1fcHJvY2Vzc0xhdW5jaGVyID0gUHJv
Y2Vzc0xhdW5jaGVyOjpjcmVhdGUodGhpcywgbGF1bmNoT3B0aW9ucyk7Ci19Ci0KLXZvaWQgQ2hp
bGRQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZSgpCi17Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
aWYgKG1fY29ubmVjdGlvbiAmJiBtX2Nvbm5lY3Rpb24tPmtpbGwoKSkKLSAgICAgICAgcmV0dXJu
OwotI2VuZGlmCi0KLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJlYWxseSBtZXJnZSBwcm9jZXNz
IGxhdW5jaGluZyBpbnRvIElQQyBjb25uZWN0aW9uIGNyZWF0aW9uIGFuZCBnZXQgcmlkIG9mIHRo
ZSBwcm9jZXNzIGxhdW5jaGVyLgotICAgIGlmIChtX3Byb2Nlc3NMYXVuY2hlcikKLSAgICAgICAg
bV9wcm9jZXNzTGF1bmNoZXItPnRlcm1pbmF0ZVByb2Nlc3MoKTsKLX0KLQotQ2hpbGRQcm9jZXNz
UHJveHk6OlN0YXRlIENoaWxkUHJvY2Vzc1Byb3h5OjpzdGF0ZSgpIGNvbnN0Ci17Ci0gICAgaWYg
KG1fcHJvY2Vzc0xhdW5jaGVyICYmIG1fcHJvY2Vzc0xhdW5jaGVyLT5pc0xhdW5jaGluZygpKQot
ICAgICAgICByZXR1cm4gQ2hpbGRQcm9jZXNzUHJveHk6OlN0YXRlOjpMYXVuY2hpbmc7Ci0KLSAg
ICBpZiAoIW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIENoaWxkUHJvY2Vzc1Byb3h5OjpT
dGF0ZTo6VGVybWluYXRlZDsKLQotICAgIHJldHVybiBDaGlsZFByb2Nlc3NQcm94eTo6U3RhdGU6
OlJ1bm5pbmc7Ci19Ci0KLWJvb2wgQ2hpbGRQcm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlKHN0ZDo6
dW5pcXVlX3B0cjxJUEM6Ok1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyLCB1bnNpZ25lZCBtZXNzYWdl
U2VuZEZsYWdzKQotewotICAgIHN3aXRjaCAoc3RhdGUoKSkgewotICAgIGNhc2UgU3RhdGU6Okxh
dW5jaGluZzoKLSAgICAgICAgLy8gSWYgd2UncmUgd2FpdGluZyBmb3IgdGhlIGNoaWxkIHByb2Nl
c3MgdG8gbGF1bmNoLCB3ZSBuZWVkIHRvIHN0YXNoIGF3YXkgdGhlIG1lc3NhZ2VzIHNvIHdlIGNh
biBzZW5kIHRoZW0gb25jZSB3ZSBoYXZlIGEgY29ubmVjdGlvbi4KLSAgICAgICAgbV9wZW5kaW5n
TWVzc2FnZXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKFdURk1vdmUoZW5jb2RlciksIG1lc3NhZ2VT
ZW5kRmxhZ3MpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBjYXNlIFN0YXRlOjpSdW5u
aW5nOgotICAgICAgICByZXR1cm4gY29ubmVjdGlvbigpLT5zZW5kTWVzc2FnZShXVEZNb3ZlKGVu
Y29kZXIpLCBtZXNzYWdlU2VuZEZsYWdzKTsKLQotICAgIGNhc2UgU3RhdGU6OlRlcm1pbmF0ZWQ6
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LXZvaWQgQ2hpbGRQcm9jZXNzUHJveHk6OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2Fn
ZVJlY2VpdmVyKQotewotICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZl
cihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtZXNzYWdlUmVjZWl2ZXIpOwotfQotCi12b2lkIENoaWxk
UHJvY2Vzc1Byb3h5OjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKLXsKLSAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5hZGRN
ZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCwgbWVzc2Fn
ZVJlY2VpdmVyKTsKLX0KLQotdm9pZCBDaGlsZFByb2Nlc3NQcm94eTo6cmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQpCi17Ci0gICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOwotfQotCi12b2lk
IENoaWxkUHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSkKLXsKLSAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSk7Ci19Ci0KLWJvb2wgQ2hp
bGRQcm9jZXNzUHJveHk6OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCi17Ci0gICAgcmV0dXJuIG1fbWVzc2Fn
ZVJlY2VpdmVyTWFwLmRpc3BhdGNoTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKLX0KLQot
Ym9vbCBDaGlsZFByb2Nlc3NQcm94eTo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVl
X3B0cjxJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQotewotICAgIHJldHVybiBt
X21lc3NhZ2VSZWNlaXZlck1hcC5kaXNwYXRjaFN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIsIHJlcGx5RW5jb2Rlcik7Ci19Ci0KLXZvaWQgQ2hpbGRQcm9jZXNzUHJveHk6OmRpZEZpbmlz
aExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIg
Y29ubmVjdGlvbklkZW50aWZpZXIpCi17Ci0gICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24pOwotCi0g
ICAgbV9jb25uZWN0aW9uID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9u
KGNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhpcyk7Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDw9IDEwMTAwMAotICAgIG1fY29ubmVjdGlvbi0+
c2V0U2hvdWxkQ2xvc2VDb25uZWN0aW9uT25NYWNoRXhjZXB0aW9ucygpOwotI2VuZGlmCi0KLSAg
ICBjb25uZWN0aW9uV2lsbE9wZW4oKm1fY29ubmVjdGlvbik7Ci0gICAgbV9jb25uZWN0aW9uLT5v
cGVuKCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcGVuZGluZ01lc3NhZ2VzLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUEM6Ok1lc3NhZ2VFbmNvZGVy
PiBtZXNzYWdlID0gV1RGTW92ZShtX3BlbmRpbmdNZXNzYWdlc1tpXS5maXJzdCk7Ci0gICAgICAg
IHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MgPSBtX3BlbmRpbmdNZXNzYWdlc1tpXS5zZWNvbmQ7
Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSwgbWVz
c2FnZVNlbmRGbGFncyk7Ci0gICAgfQotCi0gICAgbV9wZW5kaW5nTWVzc2FnZXMuY2xlYXIoKTsK
LX0KLQotdm9pZCBDaGlsZFByb2Nlc3NQcm94eTo6c2h1dERvd25Qcm9jZXNzKCkKLXsKLSAgICBz
d2l0Y2ggKHN0YXRlKCkpIHsKLSAgICBjYXNlIFN0YXRlOjpMYXVuY2hpbmc6Ci0gICAgICAgIG1f
cHJvY2Vzc0xhdW5jaGVyLT5pbnZhbGlkYXRlKCk7Ci0gICAgICAgIG1fcHJvY2Vzc0xhdW5jaGVy
ID0gbnVsbHB0cjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6UnVubmluZzoKLSNp
ZiBQTEFURk9STShJT1MpCi0gICAgICAgIC8vIE9uIGlPUyBkZXBsb3kgYSB3YXRjaGRvZyBpbiB0
aGUgVUkgcHJvY2Vzcywgc2luY2UgdGhlIGNoaWxkIHByb2Nlc3MgbWF5IGJlIHN1c3BlbmRlZC4K
LSAgICAgICAgLy8gSWYgMzBzIGlzIGluc3VmZmljaWVudCBmb3IgYW55IG91dHN0YW5kaW5nIGFj
dGl2aXR5IHRvIGNvbXBsZXRlIGNsZWFubHksIHRoZW4gaXQgd2lsbCBiZSBraWxsZWQuCi0gICAg
ICAgIEFTU0VSVChtX2Nvbm5lY3Rpb24pOwotICAgICAgICBtX2Nvbm5lY3Rpb24tPnRlcm1pbmF0
ZVNvb24oMzApOwotI2VuZGlmCi0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU3RhdGU6OlRlcm1p
bmF0ZWQ6Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIW1fY29ubmVjdGlvbikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2Vzc1dpbGxTaHV0RG93bigqbV9jb25uZWN0aW9u
KTsKLQotICAgIGlmIChjYW5TZW5kTWVzc2FnZSgpKQotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpD
aGlsZFByb2Nlc3M6OlNodXREb3duKCksIDApOwotCi0gICAgbV9jb25uZWN0aW9uLT5pbnZhbGlk
YXRlKCk7Ci0gICAgbV9jb25uZWN0aW9uID0gbnVsbHB0cjsKLX0KLQotdm9pZCBDaGlsZFByb2Nl
c3NQcm94eTo6Y29ubmVjdGlvbldpbGxPcGVuKElQQzo6Q29ubmVjdGlvbiYpCi17Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0No
aWxkUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzUHJv
eHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWY2M2YxMi4uMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzUHJveHkuaAorKysgL2Rldi9udWxs
CkBAIC0xLDEyMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDaGlsZFByb2Nlc3NQcm94
eV9oCi0jZGVmaW5lIENoaWxkUHJvY2Vzc1Byb3h5X2gKLQotI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKLSNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIKLSNpbmNsdWRlICJQcm9jZXNzTGF1
bmNoZXIuaCIKLQotI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgQ2hpbGRQcm9jZXNzUHJveHkgOiBQcm9jZXNzTGF1bmNo
ZXI6OkNsaWVudCwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50LCBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8Q2hpbGRQcm9jZXNzUHJveHk+IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShDaGlsZFByb2Nlc3NQcm94eSk7Ci0KLXB1YmxpYzoKLSAgICBDaGlsZFByb2Nlc3NQcm94
eSgpOwotICAgIHZpcnR1YWwgfkNoaWxkUHJvY2Vzc1Byb3h5KCk7Ci0KLSAgICAvLyBGSVhNRTog
VGhpcyBmdW5jdGlvbiBkb2VzIGFuIHVuY2hlY2tlZCB1cGNhc3QsIGFuZCBpdCBpcyBvbmx5IHVz
ZWQgaW4gYSBkZXByZWNhdGVkIGNvZGUgcGF0aC4gV291bGQgbGlrZSB0byBnZXQgcmlkIG9mIGl0
LgotICAgIHN0YXRpYyBDaGlsZFByb2Nlc3NQcm94eSogZnJvbUNvbm5lY3Rpb24oSVBDOjpDb25u
ZWN0aW9uKik7Ci0KLSAgICB2b2lkIGNvbm5lY3QoKTsKLSAgICB2b2lkIHRlcm1pbmF0ZSgpOwot
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklELCB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdzID0gMCk7Ci0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6
UmVwbHkmJiwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25k
cyB0aW1lb3V0ID0gc3RkOjpjaHJvbm86OnNlY29uZHMoMSksIHVuc2lnbmVkIHNlbmRTeW5jRmxh
Z3MgPSAwKTsKLSAgICAKLSAgICBJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdAot
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fY29ubmVjdGlvbik7Ci0gICAgICAgIHJldHVybiBtX2Nv
bm5lY3Rpb24uZ2V0KCk7Ci0gICAgfQotCi0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2
ZXImKTsKLSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlciYpOwotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwotICAg
IHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUpOwotCi0gICAgZW51bSBjbGFzcyBTdGF0ZSB7Ci0gICAgICAgIExhdW5jaGlu
ZywKLSAgICAgICAgUnVubmluZywKLSAgICAgICAgVGVybWluYXRlZCwKLSAgICB9OwotICAgIFN0
YXRlIHN0YXRlKCkgY29uc3Q7Ci0KLSAgICBQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyIHByb2Nl
c3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzTGF1bmNoZXItPnByb2Nlc3NJ
ZGVudGlmaWVyKCk7IH0KLQotICAgIGJvb2wgY2FuU2VuZE1lc3NhZ2UoKSBjb25zdCB7IHJldHVy
biBzdGF0ZSgpICE9IFN0YXRlOjpUZXJtaW5hdGVkO30KLSAgICBib29sIHNlbmRNZXNzYWdlKHN0
ZDo6dW5pcXVlX3B0cjxJUEM6Ok1lc3NhZ2VFbmNvZGVyPiwgdW5zaWduZWQgbWVzc2FnZVNlbmRG
bGFncyk7Ci0KLSAgICB2b2lkIHNodXREb3duUHJvY2VzcygpOwotCi1wcm90ZWN0ZWQ6Ci0gICAg
Ly8gUHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTGF1
bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcikgb3Zl
cnJpZGU7Ci0KLSAgICBib29sIGRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
Ok1lc3NhZ2VEZWNvZGVyJik7Ci0gICAgYm9vbCBkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpNZXNz
YWdlRW5jb2Rlcj4mKTsKLSAgICAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0TGF1bmNoT3B0aW9ucyhQ
cm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmKTsKLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFs
IHZvaWQgY29ubmVjdGlvbldpbGxPcGVuKElQQzo6Q29ubmVjdGlvbiYpOwotICAgIHZpcnR1YWwg
dm9pZCBwcm9jZXNzV2lsbFNodXREb3duKElQQzo6Q29ubmVjdGlvbiYpID0gMDsKLQotICAgIFZl
Y3RvcjxzdGQ6OnBhaXI8c3RkOjp1bmlxdWVfcHRyPElQQzo6TWVzc2FnZUVuY29kZXI+LCB1bnNp
Z25lZD4+IG1fcGVuZGluZ01lc3NhZ2VzOwotICAgIFJlZlB0cjxQcm9jZXNzTGF1bmNoZXI+IG1f
cHJvY2Vzc0xhdW5jaGVyOwotICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlv
bjsKLSAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCBtX21lc3NhZ2VSZWNlaXZlck1hcDsKLX07
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1ib29sIENoaWxkUHJvY2Vzc1Byb3h5OjpzZW5kKFQm
JiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1bnNpZ25lZCBtZXNzYWdlU2VuZEZs
YWdzKQotewotICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVj
dGVkKTsKLQotICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8SVBDOjpNZXNzYWdl
RW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7Ci0g
ICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwotCi0gICAgcmV0dXJuIHNl
bmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIG1lc3NhZ2VTZW5kRmxhZ3MpOwotfQotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBVPiAKLWJvb2wgQ2hpbGRQcm9jZXNzUHJveHk6OnNlbmRTeW5jKFUmJiBt
ZXNzYWdlLCB0eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
LCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHRpbWVvdXQsIHVuc2lnbmVkIHNlbmRTeW5jRmxh
Z3MpCi17Ci0gICAgQ09NUElMRV9BU1NFUlQoVTo6aXNTeW5jLCBTeW5jTWVzc2FnZUV4cGVjdGVk
KTsKLQotICAgIGlmICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICByZXR1cm4gY29ubmVjdGlvbigpLT5zZW5kU3luYyhzdGQ6OmZvcndhcmQ8VT4obWVzc2FnZSks
IFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELCB0aW1lb3V0LCBzZW5kU3luY0ZsYWdzKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBDaGlsZFByb2Nlc3NQcm94
eV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ2hpbGRQcm9jZXNzUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NoaWxkUHJvY2Vzc1Byb3h5LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmIxMDk5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NoaWxkUHJvY2Vzc1Byb3h5LmNwcApAQCAt
MCwwICsxLDIwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJDaGlsZFByb2Nlc3NQcm94eS5oIgorCisjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzTWVzc2FnZXMu
aCIKKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworQ2hp
bGRQcm9jZXNzUHJveHk6OkNoaWxkUHJvY2Vzc1Byb3h5KCkKK3sKK30KKworQ2hpbGRQcm9jZXNz
UHJveHk6On5DaGlsZFByb2Nlc3NQcm94eSgpCit7CisgICAgaWYgKG1fY29ubmVjdGlvbikKKyAg
ICAgICAgbV9jb25uZWN0aW9uLT5pbnZhbGlkYXRlKCk7CisKKyAgICBpZiAobV9wcm9jZXNzTGF1
bmNoZXIpIHsKKyAgICAgICAgbV9wcm9jZXNzTGF1bmNoZXItPmludmFsaWRhdGUoKTsKKyAgICAg
ICAgbV9wcm9jZXNzTGF1bmNoZXIgPSBudWxscHRyOworICAgIH0KK30KKworQ2hpbGRQcm9jZXNz
UHJveHkqIENoaWxkUHJvY2Vzc1Byb3h5Ojpmcm9tQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24q
IGNvbm5lY3Rpb24pCit7CisgICAgQVNTRVJUKGNvbm5lY3Rpb24pOworCisgICAgQ2hpbGRQcm9j
ZXNzUHJveHkqIGNoaWxkUHJvY2Vzc1Byb3h5ID0gc3RhdGljX2Nhc3Q8Q2hpbGRQcm9jZXNzUHJv
eHkqPihjb25uZWN0aW9uLT5jbGllbnQoKSk7CisgICAgQVNTRVJUKGNoaWxkUHJvY2Vzc1Byb3h5
LT5jb25uZWN0aW9uKCkgPT0gY29ubmVjdGlvbik7CisKKyAgICByZXR1cm4gY2hpbGRQcm9jZXNz
UHJveHk7Cit9CisKK3ZvaWQgQ2hpbGRQcm9jZXNzUHJveHk6OmdldExhdW5jaE9wdGlvbnMoUHJv
Y2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hPcHRpb25zKQoreworICAgIGlmIChj
b25zdCBjaGFyKiB1c2VyRGlyZWN0b3J5U3VmZml4ID0gZ2V0ZW52KCJESVJIRUxQRVJfVVNFUl9E
SVJfU1VGRklYIikpCisgICAgICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRh
dGEuYWRkKEFTQ0lJTGl0ZXJhbCgidXNlci1kaXJlY3Rvcnktc3VmZml4IiksIHVzZXJEaXJlY3Rv
cnlTdWZmaXgpOworfQorCit2b2lkIENoaWxkUHJvY2Vzc1Byb3h5Ojpjb25uZWN0KCkKK3sKKyAg
ICBBU1NFUlQoIW1fcHJvY2Vzc0xhdW5jaGVyKTsKKyAgICBQcm9jZXNzTGF1bmNoZXI6OkxhdW5j
aE9wdGlvbnMgbGF1bmNoT3B0aW9uczsKKyAgICBnZXRMYXVuY2hPcHRpb25zKGxhdW5jaE9wdGlv
bnMpOworICAgIG1fcHJvY2Vzc0xhdW5jaGVyID0gUHJvY2Vzc0xhdW5jaGVyOjpjcmVhdGUodGhp
cywgbGF1bmNoT3B0aW9ucyk7Cit9CisKK3ZvaWQgQ2hpbGRQcm9jZXNzUHJveHk6OnRlcm1pbmF0
ZSgpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYgKG1fY29ubmVjdGlvbiAmJiBtX2Nv
bm5lY3Rpb24tPmtpbGwoKSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKKyAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIHJlYWxseSBtZXJnZSBwcm9jZXNzIGxhdW5jaGluZyBpbnRvIElQQyBjb25u
ZWN0aW9uIGNyZWF0aW9uIGFuZCBnZXQgcmlkIG9mIHRoZSBwcm9jZXNzIGxhdW5jaGVyLgorICAg
IGlmIChtX3Byb2Nlc3NMYXVuY2hlcikKKyAgICAgICAgbV9wcm9jZXNzTGF1bmNoZXItPnRlcm1p
bmF0ZVByb2Nlc3MoKTsKK30KKworQ2hpbGRQcm9jZXNzUHJveHk6OlN0YXRlIENoaWxkUHJvY2Vz
c1Byb3h5OjpzdGF0ZSgpIGNvbnN0Cit7CisgICAgaWYgKG1fcHJvY2Vzc0xhdW5jaGVyICYmIG1f
cHJvY2Vzc0xhdW5jaGVyLT5pc0xhdW5jaGluZygpKQorICAgICAgICByZXR1cm4gQ2hpbGRQcm9j
ZXNzUHJveHk6OlN0YXRlOjpMYXVuY2hpbmc7CisKKyAgICBpZiAoIW1fY29ubmVjdGlvbikKKyAg
ICAgICAgcmV0dXJuIENoaWxkUHJvY2Vzc1Byb3h5OjpTdGF0ZTo6VGVybWluYXRlZDsKKworICAg
IHJldHVybiBDaGlsZFByb2Nlc3NQcm94eTo6U3RhdGU6OlJ1bm5pbmc7Cit9CisKK2Jvb2wgQ2hp
bGRQcm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJUEM6Ok1lc3NhZ2VF
bmNvZGVyPiBlbmNvZGVyLCB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdzKQoreworICAgIHN3aXRj
aCAoc3RhdGUoKSkgeworICAgIGNhc2UgU3RhdGU6OkxhdW5jaGluZzoKKyAgICAgICAgLy8gSWYg
d2UncmUgd2FpdGluZyBmb3IgdGhlIGNoaWxkIHByb2Nlc3MgdG8gbGF1bmNoLCB3ZSBuZWVkIHRv
IHN0YXNoIGF3YXkgdGhlIG1lc3NhZ2VzIHNvIHdlIGNhbiBzZW5kIHRoZW0gb25jZSB3ZSBoYXZl
IGEgY29ubmVjdGlvbi4KKyAgICAgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKHN0ZDo6bWFr
ZV9wYWlyKFdURk1vdmUoZW5jb2RlciksIG1lc3NhZ2VTZW5kRmxhZ3MpKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICBjYXNlIFN0YXRlOjpSdW5uaW5nOgorICAgICAgICByZXR1cm4gY29u
bmVjdGlvbigpLT5zZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBtZXNzYWdlU2VuZEZsYWdz
KTsKKworICAgIGNhc2UgU3RhdGU6OlRlcm1pbmF0ZWQ6CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQ2hpbGRQcm9jZXNzUHJveHk6
OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQoreworICAgIG1fbWVz
c2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBt
ZXNzYWdlUmVjZWl2ZXIpOworfQorCit2b2lkIENoaWxkUHJvY2Vzc1Byb3h5OjphZGRNZXNzYWdl
UmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikK
K3sKKyAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJl
Y2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCwgbWVzc2FnZVJlY2VpdmVyKTsKK30KKwordm9pZCBD
aGlsZFByb2Nlc3NQcm94eTo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAg
bV9tZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIGRlc3RpbmF0aW9uSUQpOworfQorCit2b2lkIENoaWxkUHJvY2Vzc1Byb3h5OjpyZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFt
ZSkKK3sKKyAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVz
c2FnZVJlY2VpdmVyTmFtZSk7Cit9CisKK2Jvb2wgQ2hpbGRQcm9jZXNzUHJveHk6OmRpc3BhdGNo
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6TWVzc2FnZURlY29kZXIm
IGRlY29kZXIpCit7CisgICAgcmV0dXJuIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmRpc3BhdGNoTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKK30KKworYm9vbCBDaGlsZFByb2Nlc3NQcm94eTo6
ZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6TWVz
c2FnZURlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6Ok1lc3NhZ2VFbmNvZGVy
PiYgcmVwbHlFbmNvZGVyKQoreworICAgIHJldHVybiBtX21lc3NhZ2VSZWNlaXZlck1hcC5kaXNw
YXRjaFN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7Cit9CisK
K3ZvaWQgQ2hpbGRQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNo
ZXIqLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCit7
CisgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24pOworCisgICAgbV9jb25uZWN0aW9uID0gSVBDOjpD
b25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCAq
dGhpcyk7CisjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEIDw9IDEwMTAwMAorICAgIG1fY29ubmVjdGlvbi0+c2V0U2hvdWxkQ2xvc2VDb25uZWN0aW9u
T25NYWNoRXhjZXB0aW9ucygpOworI2VuZGlmCisKKyAgICBjb25uZWN0aW9uV2lsbE9wZW4oKm1f
Y29ubmVjdGlvbik7CisgICAgbV9jb25uZWN0aW9uLT5vcGVuKCk7CisKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fcGVuZGluZ01lc3NhZ2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxJUEM6Ok1lc3NhZ2VFbmNvZGVyPiBtZXNzYWdlID0gV1RGTW92ZShtX3Bl
bmRpbmdNZXNzYWdlc1tpXS5maXJzdCk7CisgICAgICAgIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxh
Z3MgPSBtX3BlbmRpbmdNZXNzYWdlc1tpXS5zZWNvbmQ7CisgICAgICAgIG1fY29ubmVjdGlvbi0+
c2VuZE1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSwgbWVzc2FnZVNlbmRGbGFncyk7CisgICAgfQor
CisgICAgbV9wZW5kaW5nTWVzc2FnZXMuY2xlYXIoKTsKK30KKwordm9pZCBDaGlsZFByb2Nlc3NQ
cm94eTo6c2h1dERvd25Qcm9jZXNzKCkKK3sKKyAgICBzd2l0Y2ggKHN0YXRlKCkpIHsKKyAgICBj
YXNlIFN0YXRlOjpMYXVuY2hpbmc6CisgICAgICAgIG1fcHJvY2Vzc0xhdW5jaGVyLT5pbnZhbGlk
YXRlKCk7CisgICAgICAgIG1fcHJvY2Vzc0xhdW5jaGVyID0gbnVsbHB0cjsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBTdGF0ZTo6UnVubmluZzoKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAg
IC8vIE9uIGlPUyBkZXBsb3kgYSB3YXRjaGRvZyBpbiB0aGUgVUkgcHJvY2Vzcywgc2luY2UgdGhl
IGNoaWxkIHByb2Nlc3MgbWF5IGJlIHN1c3BlbmRlZC4KKyAgICAgICAgLy8gSWYgMzBzIGlzIGlu
c3VmZmljaWVudCBmb3IgYW55IG91dHN0YW5kaW5nIGFjdGl2aXR5IHRvIGNvbXBsZXRlIGNsZWFu
bHksIHRoZW4gaXQgd2lsbCBiZSBraWxsZWQuCisgICAgICAgIEFTU0VSVChtX2Nvbm5lY3Rpb24p
OworICAgICAgICBtX2Nvbm5lY3Rpb24tPnRlcm1pbmF0ZVNvb24oMzApOworI2VuZGlmCisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlRlcm1pbmF0ZWQ6CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAoIW1fY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAg
cHJvY2Vzc1dpbGxTaHV0RG93bigqbV9jb25uZWN0aW9uKTsKKworICAgIGlmIChjYW5TZW5kTWVz
c2FnZSgpKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpDaGlsZFByb2Nlc3M6OlNodXREb3duKCks
IDApOworCisgICAgbV9jb25uZWN0aW9uLT5pbnZhbGlkYXRlKCk7CisgICAgbV9jb25uZWN0aW9u
ID0gbnVsbHB0cjsKK30KKwordm9pZCBDaGlsZFByb2Nlc3NQcm94eTo6Y29ubmVjdGlvbldpbGxP
cGVuKElQQzo6Q29ubmVjdGlvbiYpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NoaWxkUHJvY2Vzc1Byb3h5LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ2hpbGRQcm9jZXNzUHJveHkuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjYzZjEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NoaWxkUHJvY2Vzc1Byb3h5LmgKQEAgLTAsMCArMSwxMjEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIENoaWxkUHJvY2Vzc1Byb3h5X2gKKyNkZWZpbmUgQ2hpbGRQ
cm9jZXNzUHJveHlfaAorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlck1hcC5oIgorI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgorCisjaW5jbHVk
ZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBDaGlsZFByb2Nlc3NQcm94eSA6IFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50LCBwdWJsaWMg
SVBDOjpDb25uZWN0aW9uOjpDbGllbnQsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDaGls
ZFByb2Nlc3NQcm94eT4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENoaWxkUHJvY2Vzc1By
b3h5KTsKKworcHVibGljOgorICAgIENoaWxkUHJvY2Vzc1Byb3h5KCk7CisgICAgdmlydHVhbCB+
Q2hpbGRQcm9jZXNzUHJveHkoKTsKKworICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGRvZXMg
YW4gdW5jaGVja2VkIHVwY2FzdCwgYW5kIGl0IGlzIG9ubHkgdXNlZCBpbiBhIGRlcHJlY2F0ZWQg
Y29kZSBwYXRoLiBXb3VsZCBsaWtlIHRvIGdldCByaWQgb2YgaXQuCisgICAgc3RhdGljIENoaWxk
UHJvY2Vzc1Byb3h5KiBmcm9tQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qKTsKKworICAgIHZv
aWQgY29ubmVjdCgpOworICAgIHZvaWQgdGVybWluYXRlKCk7CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBib29sIHNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVu
c2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MgPSAwKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBi
b29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklELCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHRpbWVvdXQgPSBzdGQ6OmNo
cm9ubzo6c2Vjb25kcygxKSwgdW5zaWduZWQgc2VuZFN5bmNGbGFncyA9IDApOworICAgIAorICAg
IElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbigpIGNvbnN0CisgICAgeworICAgICAgICBBU1NF
UlQobV9jb25uZWN0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsKKyAg
ICB9CisKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOworICAgIHZvaWQgYWRk
TWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJik7CisgICAgdm9p
ZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2Vp
dmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgdm9pZCByZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSk7CisKKyAg
ICBlbnVtIGNsYXNzIFN0YXRlIHsKKyAgICAgICAgTGF1bmNoaW5nLAorICAgICAgICBSdW5uaW5n
LAorICAgICAgICBUZXJtaW5hdGVkLAorICAgIH07CisgICAgU3RhdGUgc3RhdGUoKSBjb25zdDsK
KworICAgIFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX3Byb2Nlc3NMYXVuY2hlci0+cHJvY2Vzc0lkZW50aWZpZXIoKTsgfQorCisg
ICAgYm9vbCBjYW5TZW5kTWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRlKCkgIT0gU3RhdGU6
OlRlcm1pbmF0ZWQ7fQorICAgIGJvb2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPElQQzo6
TWVzc2FnZUVuY29kZXI+LCB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdzKTsKKworICAgIHZvaWQg
c2h1dERvd25Qcm9jZXNzKCk7CisKK3Byb3RlY3RlZDoKKyAgICAvLyBQcm9jZXNzTGF1bmNoZXI6
OkNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5j
aGVyKiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKSBvdmVycmlkZTsKKworICAgIGJvb2wg
ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKTsK
KyAgICBib29sIGRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNz
YWdlRGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYpOworICAg
IAorICAgIHZpcnR1YWwgdm9pZCBnZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1
bmNoT3B0aW9ucyYpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0aW9uV2ls
bE9wZW4oSVBDOjpDb25uZWN0aW9uJik7CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NXaWxsU2h1
dERvd24oSVBDOjpDb25uZWN0aW9uJikgPSAwOworCisgICAgVmVjdG9yPHN0ZDo6cGFpcjxzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpNZXNzYWdlRW5jb2Rlcj4sIHVuc2lnbmVkPj4gbV9wZW5kaW5nTWVz
c2FnZXM7CisgICAgUmVmUHRyPFByb2Nlc3NMYXVuY2hlcj4gbV9wcm9jZXNzTGF1bmNoZXI7Cisg
ICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyTWFwIG1fbWVzc2FnZVJlY2VpdmVyTWFwOworfTsKKwordGVtcGxhdGU8dHlwZW5h
bWUgVD4KK2Jvb2wgQ2hpbGRQcm9jZXNzUHJveHk6OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQsIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MpCit7CisgICAgQ09NUElM
RV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOworCisgICAgYXV0byBl
bmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJUEM6Ok1lc3NhZ2VFbmNvZGVyPihUOjpyZWNlaXZl
ck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUo
bWVzc2FnZS5hcmd1bWVudHMoKSk7CisKKyAgICByZXR1cm4gc2VuZE1lc3NhZ2UoV1RGTW92ZShl
bmNvZGVyKSwgbWVzc2FnZVNlbmRGbGFncyk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFU+IAor
Ym9vbCBDaGlsZFByb2Nlc3NQcm94eTo6c2VuZFN5bmMoVSYmIG1lc3NhZ2UsIHR5cGVuYW1lIFU6
OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHN0ZDo6Y2hyb25vOjptaWxs
aXNlY29uZHMgdGltZW91dCwgdW5zaWduZWQgc2VuZFN5bmNGbGFncykKK3sKKyAgICBDT01QSUxF
X0FTU0VSVChVOjppc1N5bmMsIFN5bmNNZXNzYWdlRXhwZWN0ZWQpOworCisgICAgaWYgKCFtX2Nv
bm5lY3Rpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBjb25uZWN0aW9u
KCktPnNlbmRTeW5jKHN0ZDo6Zm9yd2FyZDxVPihtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRl
c3RpbmF0aW9uSUQsIHRpbWVvdXQsIHNlbmRTeW5jRmxhZ3MpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIENoaWxkUHJvY2Vzc1Byb3h5X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiNmU0YmMxLi41
MWJkNWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC00NzIwLDggKzQ3MjAsNiBAQAogCQkJCTFBMkQ5NTZFMTI4NDg1NjQwMDFF
Qjk2MiAvKiBDaGlsZFByb2Nlc3MuY3BwICovLAogCQkJCTFBMkQ5NTZEMTI4NDg1NjQwMDFFQjk2
MiAvKiBDaGlsZFByb2Nlc3MuaCAqLywKIAkJCQk1MTY0QzA5NDFCMDVCNzU3MDA0RjEwMkEgLyog
Q2hpbGRQcm9jZXNzLm1lc3NhZ2VzLmluICovLAotCQkJCUUxNTEzQzY0MTY2RUFCQjIwMDE0OUZD
QiAvKiBDaGlsZFByb2Nlc3NQcm94eS5jcHAgKi8sCi0JCQkJRTE1MTNDNjUxNjZFQUJCMjAwMTQ5
RkNCIC8qIENoaWxkUHJvY2Vzc1Byb3h5LmggKi8sCiAJCQkJMjkwRjQyNzExNzJBMEM3NDAwOTM5
RkYwIC8qIENoaWxkUHJvY2Vzc1N1cHBsZW1lbnQuaCAqLywKIAkJCQkxQTZGOUY4RTExRTEzRUZD
MDBEQjEzNzEgLyogQ29tbWFuZExpbmUuaCAqLywKIAkJCQk1MTA2RDdCRjE4QkRCRTczMDAwQUIx
NjYgLyogQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAgKi8sCkBAIC02MTUzLDYgKzYxNTEsOCBA
QAogCQkJCTFBQUYwODlFMTkyNjgxQUMwMEI2MzkwQyAvKiBVc2VyQ29udGVudCAqLywKIAkJCQkx
QTUzQzJBMzFBMzI1NjkxMDA0RThDNzAgLyogV2Vic2l0ZURhdGEgKi8sCiAJCQkJN0NEMTAyRDkx
ODY2NzcwNjAwRUQ0MjlEIC8qIEF1dG9Db3JyZWN0aW9uQ2FsbGJhY2suaCAqLywKKwkJCQlFMTUx
M0M2NDE2NkVBQkIyMDAxNDlGQ0IgLyogQ2hpbGRQcm9jZXNzUHJveHkuY3BwICovLAorCQkJCUUx
NTEzQzY1MTY2RUFCQjIwMDE0OUZDQiAvKiBDaGlsZFByb2Nlc3NQcm94eS5oICovLAogCQkJCUJD
MjY1MjEyMTE4MjYwODEwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5LmNwcCAqLywKIAkJCQlC
QzI2NTIxMzExODI2MDgxMDAyNDNFMTIgLyogRHJhd2luZ0FyZWFQcm94eS5oICovLAogCQkJCTFB
NjQyMkZDMTJERDA4RkUwMENBQUUyQyAvKiBEcmF3aW5nQXJlYVByb3h5Lm1lc3NhZ2VzLmluICov
LAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>