<?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>132882</bug_id>
          
          <creation_ts>2014-05-13 12:51:25 -0700</creation_ts>
          <short_desc>JIT breakpoints should be more informative</short_desc>
          <delta_ts>2014-05-14 04:42:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>132903</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1009046</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-05-13 12:51:25 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009047</commentid>
    <comment_count>1</comment_count>
      <attachid>231402</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-05-13 12:53:52 -0700</bug_when>
    <thetext>Created attachment 231402
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009048</commentid>
    <comment_count>2</comment_count>
      <attachid>231402</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-05-13 12:57:56 -0700</bug_when>
    <thetext>Comment on attachment 231402
the patch

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

&gt; Source/JavaScriptCore/assembler/MacroAssembler.h:200
&gt; -
&gt; +    

drop this :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009055</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-05-13 13:35:02 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 231402 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=231402&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/assembler/MacroAssembler.h:200
&gt; &gt; -
&gt; &gt; +    
&gt; 
&gt; drop this :D

Fixed, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009104</commentid>
    <comment_count>4</comment_count>
      <attachid>231410</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-05-13 15:11:34 -0700</bug_when>
    <thetext>Created attachment 231410
a version that builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009129</commentid>
    <comment_count>5</comment_count>
      <attachid>231417</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-05-13 16:32:05 -0700</bug_when>
    <thetext>Created attachment 231417
try again!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009173</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-05-13 20:58:01 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/168776</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231402</attachid>
            <date>2014-05-13 12:53:52 -0700</date>
            <delta_ts>2014-05-13 15:11:34 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>45663</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY4NzI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgyIEBA
CisyMDE0LTA1LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SklUIGJyZWFrcG9pbnRzIHNob3VsZCBiZSBtb3JlIGluZm9ybWF0aXZlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzI4ODIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEludHJvZHVjZSB0aGUg
bm90aW9uIG9mIGFuIEFib3J0UmVhc29uLCB3aGljaCBpcyBhIG5pY2UgZW51bWVyYXRpb24gb2Yg
Y29kZWQgYXNzZXJ0aW9uCisgICAgICAgIGZhaWx1cmUgbmFtZXMuIFRoaXMgbWVhbnMgdGhhdCBh
bGwgeW91IG5lZWQgdG8gZmlndXJlIG91dCB3aHkgdGhlIEpJVCBTSUdUUkFQJ2QgaXMgdG8gbG9v
aworICAgICAgICBhdCB0aGF0IHBsYXRmb3JtJ3MgYWJvcnQgcmVhc29uIHJlZ2lzdGVyIChyMTEg
b24gWDg2LTY0IGZvciBleGFtcGxlKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9BYm9ydFJlYXNvbi5o
OiBBZGRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgor
ICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OmFib3J0V2l0aFJlYXNvbik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNdjcuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6YWJvcnRXaXRoUmVh
c29uKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaDoKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODY6OmFib3J0V2l0aFJlYXNvbik6CisgICAgICAgICogYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyWDg2XzY0OjphYm9ydFdpdGhSZWFzb24pOgorICAgICAgICAqIGRmZy9ERkdTbG93UGF0aEdl
bmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6OlNsb3dQYXRoR2VuZXJhdG9yOjpnZW5lcmF0
ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6YmFpbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlTWFrZVJvcGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVCYXNp
Y1N0b3JhZ2UpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpmaWxsU3BlY3VsYXRlQ2VsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdUaHVua3MuY3BwOgorICAgICAgICAoSlND
OjpERkc6Om9zckVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhl
bHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSW50
MzIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSlNJbnQzMik6
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNKU051bWJlcik6Cisg
ICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNKU0RvdWJsZSk6CisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNDZWxsKToKKyAgICAgICAgKEpT
Qzo6QXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRUYWdzSW5QbGFjZSk6CisgICAgICAgIChKU0M6
OkFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SGFzVmFsaWRDYWxsRnJhbWUpOgorICAgICAgICAo
SlNDOjpBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzTnVsbCk6CisgICAgICAgIChKU0M6OkFz
c2VtYmx5SGVscGVyczo6aml0QXNzZXJ0QXJndW1lbnRDb3VudFNhbmUpOgorICAgICAgICAoSlND
OjpBc3NlbWJseUhlbHBlcnM6OmVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyk6CisgICAg
ICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBl
cnM6OmNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlI
ZWxwZXJzOjplbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8pOiBEZWxldGVkLgorICAgICAg
ICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGl2KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbG9vcF9oaW50KToKKyAgICAgICAg
KiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZUNUSU5hdGl2ZUNhbGwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6
SklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SklUOjphZGRTdHJ1
Y3R1cmVUcmFuc2l0aW9uQ2hlY2spOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OnRlc3RQ
cm90b3R5cGUpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92YWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQpOgorICAgICAgICAqIGppdC9SZWdpc3Rl
clByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0
ZVJlZ2lzdGVyUmVzdG9yYXRpb24pOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAg
ICAgKEpTQzo6YWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKToKKyAgICAgICAgKEpTQzo6bGlu
a0Nsb3N1cmVDYWxsKToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAg
ICAgKEpTQzo6ZW1pdFBvaW50ZXJWYWxpZGF0aW9uKToKKyAgICAgICAgKEpTQzo6bmF0aXZlRm9y
R2VuZXJhdG9yKToKKyAgICAgICAgKiB5YXJyL1lhcnJKSVQuY3BwOgorICAgICAgICAoSlNDOjpZ
YXJyOjpZYXJyR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisKIDIwMTQtMDUtMTIgIENvbW1pdCBRdWV1
ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHIxNjg2NDIuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2oJKHJldmlzaW9uIDE2ODY4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTgx
OCw2ICs4MTgsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEpTV3JhcHBlck1h
cC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXE9wYXF1ZUpTU3RyaW5nLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcV2ViS2l0QXZhaWxhYmlsaXR5Lmgi
IC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcQWJvcnRSZWFzb24uaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcQXNzZW1i
bGVyQnVmZmVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcQ29k
ZUxvY2F0aW9uLmgiIC8+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMTY4Njg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw2ICsxMDcsNyBAQAog
CQkwRjFFM0E0NjE1MzRDQkFGMDAwRjk0NTYgLyogREZHQXJndW1lbnRQb3NpdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxRTNBNDMxNTM0Q0JB
RDAwMEY5NDU2IC8qIERGR0FyZ3VtZW50UG9zaXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjFFM0E0NzE1MzRDQkI5MDAwRjk0NTYgLyog
REZHRG91YmxlRm9ybWF0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMUUzQTQ0MTUzNENCQUQwMDBGOTQ1NiAvKiBERkdEb3VibGVGb3JtYXRT
dGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGMUUzQTY3MTUzQTIxRTIwMDBGOTQ1NiAvKiBERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjFFM0E2NTE1
M0EyMURGMDAwRjk0NTYgLyogREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMUZFNTFDMTkyMkEzQkMw
MDY5ODdDNSAvKiBBYm9ydFJlYXNvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYxRkU1MUIxOTIyQTNCQzAwNjk4N0M1IC8qIEFib3J0UmVhc29uLmgg
Ki87IH07CiAJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIx
QzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMjFDMjdGMTRCRUFB
ODIwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0
ZWNvZGVDb252ZW50aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGMjM1QkQzMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMzVC
QkQxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudC5jcHAgKi87IH07CkBAIC0xOTE0
LDYgKzE5MTUsNyBAQAogCQkwRjFFM0E0NDE1MzRDQkFEMDAwRjk0NTYgLyogREZHRG91YmxlRm9y
bWF0U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRG91YmxlRm9y
bWF0U3RhdGUuaDsgcGF0aCA9IGRmZy9ERkdEb3VibGVGb3JtYXRTdGF0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjFFM0E1MDE1MzdDMkNCMDAwRjk0NTYgLyogREZHU2xvd1Bh
dGhHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU2xvd1Bh
dGhHZW5lcmF0b3IuaDsgcGF0aCA9IGRmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjFFM0E2NTE1M0EyMURGMDAwRjk0NTYgLyogREZHU2ls
ZW50UmVnaXN0ZXJTYXZlUGxhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBE
RkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmg7IHBhdGggPSBkZmcvREZHU2lsZW50UmVnaXN0ZXJT
YXZlUGxhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjFGRTUxQjE5MjJBM0JD
MDA2OTg3QzUgLyogQWJvcnRSZWFzb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQWJvcnRSZWFzb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyMUMyNzkx
NEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVD
b252ZW50aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUNv
bnZlbnRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjM1QkJEMTcxNzhF
MUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gRlRMRXhpdEFyZ3VtZW50LmNwcDsgcGF0aCA9IGZ0bC9GVExFeGl0QXJn
dW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDg5Niw2ICs0ODk4LDcg
QEAKIAkJOTY4OENCMTIwRUQxMkI0RTAwMUQ2NDlGIC8qIGFzc2VtYmxlciAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYxRkU1MUIxOTIyQTNCQzAwNjk4
N0M1IC8qIEFib3J0UmVhc29uLmggKi8sCiAJCQkJODYwMTYxREYwRjNBODNDMTAwRjg0NzEwIC8q
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAqLywKIAkJCQk4NjQwOTIzQjE1NkVFRDNCMDA1NjZD
QjIgLyogQVJNNjRBc3NlbWJsZXIuaCAqLywKIAkJCQk4NkQzQjJCRjEwMTU2QkRFMDAyODY1RTcg
LyogQVJNQXNzZW1ibGVyLmNwcCAqLywKQEAgLTU4MjUsNiArNTgyOCw3IEBACiAJCQkJQzIxMTIy
RTIxNUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVkRGF0YS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTUzMjQzOTQxODU2OTcwOTAwMkVENjkyIC8qIGdlbmVyYXRlLWNvbWJpbmVkLWluc3Bl
Y3Rvci1qc29uLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RTAxN0I2QjVBQjAwQTdBRTNG
IC8qIEdlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYxRkU1MUMx
OTIyQTNCQzAwNjk4N0M1IC8qIEFib3J0UmVhc29uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJC
NjZFMTE3QjZCNUFCMDBBN0FFM0YgLyogR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTAxNENBN0RDRDAwODVGM0M2IC8qIEdldEJ5SWRTdGF0
dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMDMzMkM0MThCMDE3NjMwMDVGOTc5QSAvKiBHZXRC
eUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0Fib3J0UmVhc29uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9BYm9ydFJlYXNvbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BYm9ydFJlYXNvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2lmbmRlZiBBYm9ydFJlYXNvbl9oCisjZGVmaW5lIEFib3J0UmVhc29uX2gKKworbmFtZXNwYWNl
IEpTQyB7CisKKy8vIEl0J3MgaW1wb3J0YW50IHRvIG5vdCBjaGFuZ2UgdGhlIHZhbHVlcyBvZiBl
eGlzdGluZyBhYm9ydCByZWFzb25zIHVubGVzcyB3ZSByZWFsbHkKKy8vIGhhdmUgdG8uIEZvciB0
aGlzIHJlYXNvbiB0aGVyZSBpcyBhIEJBU0lDLXN0eWxlIG51bWJlcmluZyB0aGF0IHNob3VsZCBh
bGxvdyB1cyB0bworLy8gc25lYWsgbmV3IHJlYXNvbnMgaW4gd2l0aG91dCBjaGFuZ2luZyB0aGUg
bnVtYmVyaW5nIG9mIGV4aXN0aW5nIHJlYXNvbnMgLSBhdCBsZWFzdAorLy8gZm9yIGEgd2hpbGUu
CitlbnVtIEFib3J0UmVhc29uIHsKKyAgICBBSENhbGxGcmFtZU1pc2FsaWduZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gIDEwLAorICAgIEFISW5kZXhpbmdUeXBlSXNWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAgMjAsCisgICAgQUhJbnNhbmVBcmd1bWVudENvdW50
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICAzMCwKKyAgICBBSElzTm90Q2VsbCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIDQwLAorICAgIEFISXNOb3RJbnQz
MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAgNTAsCisgICAgQUhJc05v
dEpTRG91YmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICA2MCwKKyAgICBB
SElzTm90SlNJbnQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIDcwLAor
ICAgIEFISXNOb3RKU051bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAg
ODAsCisgICAgQUhJc05vdE51bGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9ICA5MCwKKyAgICBBSFN0YWNrUG9pbnRlck1pc2FsaWduZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gMTAwLAorICAgIEFIU3RydWN0dXJlSURJc1ZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAxMTAsCisgICAgQUhUYWdNYXNrTm90SW5QbGFjZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IDEyMCwKKyAgICBBSFRhZ1R5cGVOdW1iZXJOb3RJblBsYWNlICAg
ICAgICAgICAgICAgICAgICAgICAgID0gMTMwLAorICAgIEFIVHlwZUluZm9JbmxpbmVUeXBlRmxh
Z3NBcmVWYWxpZCAgICAgICAgICAgICAgICAgPSAxNDAsCisgICAgQUhUeXBlSW5mb0lzVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDE1MCwKKyAgICBERkdCYWlsZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMTYwLAorICAgIERGR0Jhc2lj
U3RvcmFnZUFsbG9jYXRvclplcm9TaXplICAgICAgICAgICAgICAgICAgPSAxNzAsCisgICAgREZH
SXNOb3RDZWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDE4MCwKKyAg
ICBERkdJbmVmZmVjdGl2ZVdhdGNocG9pbnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gMTkw
LAorICAgIERGR05lZ2F0aXZlU3RyaW5nTGVuZ3RoICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAyMDAsCisgICAgREZHU2xvd1BhdGhHZW5lcmF0b3JGZWxsVGhyb3VnaCAgICAgICAgICAgICAg
ICAgICA9IDIxMCwKKyAgICBERkdVbnJlYWNoYWJsZUJhc2ljQmxvY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gMjIwLAorICAgIERGR1VucmVhc29uYWJsZU9TUkVudHJ5SnVtcERlc3RpbmF0
aW9uICAgICAgICAgICAgPSAyMzAsCisgICAgSklURGl2T3BlcmFuZHNBcmVOb3ROdW1iZXJzICAg
ICAgICAgICAgICAgICAgICAgICA9IDI0MCwKKyAgICBKSVRHZXRCeVZhbFJlc3VsdElzTm90RW1w
dHkgICAgICAgICAgICAgICAgICAgICAgID0gMjUwLAorICAgIEpJVE5vdFN1cHBvcnRlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAyNjAsCisgICAgSklUT2Zmc2V0SXNOb3RP
dXRPZkxpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDI3MCwKKyAgICBKSVRVbnJlYXNv
bmFibGVMb29wSGludEp1bXBUYXJnZXQgICAgICAgICAgICAgICAgID0gMjgwLAorICAgIFJQV1Vu
cmVhc29uYWJsZUp1bXBUYXJnZXQgICAgICAgICAgICAgICAgICAgICAgICAgPSAyOTAsCisgICAg
UmVwYXRjaEluZWZmZWN0aXZlV2F0Y2hwb2ludCAgICAgICAgICAgICAgICAgICAgICA9IDMwMCwK
KyAgICBSZXBhdGNoSW5zYW5lQXJndW1lbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
MzEwLAorICAgIFRHSW52YWxpZFBvaW50ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAzMjAsCisgICAgVEdOb3RTdXBwb3J0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IDMzMCwKKyAgICBZQVJSTm9JbnB1dENvbnN1bWVkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gMzQwLAorfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAv
LyBBYm9ydFJlYXNvbl9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxNjg2ODkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA4LCAyMDEyLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyX2gKICNkZWZpbmUgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcl9o
CiAKKyNpbmNsdWRlICJBYm9ydFJlYXNvbi5oIgogI2luY2x1ZGUgIkFzc2VtYmxlckJ1ZmZlci5o
IgogI2luY2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29k
ZVJlZi5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMTY4Njg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsNyArMTk3
LDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogI2VuZGlmCi0KKyAgICAKICAgICAvLyBQ
bGF0Zm9ybSBhZ25vc3RpYyBvbnZlbmllbmNlIGZ1bmN0aW9ucywKICAgICAvLyBkZXNjcmliZWQg
aW4gdGVybXMgb2Ygb3RoZXIgbWFjcm8gYXNzZW1ibHkgbWV0aG9kcy4KICAgICB2b2lkIHBvcCgp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaAkocmV2aXNpb24gMTY4Njg5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgwNiw2
ICs4MDYsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbGFiZWw7CiAgICAgfQogCisgICAg
dm9pZCBhYm9ydFdpdGhSZWFzb24oQWJvcnRSZWFzb24gcmVhc29uKQorICAgIHsKKyAgICAgICAg
bW92ZShUcnVzdGVkSW1tMzIocmVhc29uKSwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIGJy
ZWFrcG9pbnQoKTsKKyAgICB9CisKICAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbCBjb252ZXJ0aWJs
ZUxvYWRQdHIoQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAg
ICBDb252ZXJ0aWJsZUxvYWRMYWJlbCByZXN1bHQodGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAkocmV2
aXNpb24gMTY4Njg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTXY3LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVW5pdmVyc2l0eSBvZiBTemVnZWQKICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKQEAgLTYzMiw2ICs2MzIsMTIgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2Vt
Ymxlci5sZHIoZGVzdCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgQVJNVGh1bWJJbW1lZGlhdGU6Om1h
a2VVSW50MTYoMCkpOwogICAgIH0KICAgICAKKyAgICB2b2lkIGFib3J0V2l0aFJlYXNvbihBYm9y
dFJlYXNvbiByZWFzb24pCisgICAgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihyZWFzb24p
LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgYnJlYWtwb2ludCgpOworICAgIH0KKwogICAg
IENvbnZlcnRpYmxlTG9hZExhYmVsIGNvbnZlcnRpYmxlTG9hZFB0cihBZGRyZXNzIGFkZHJlc3Ms
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHJl
c3VsdCh0aGlzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2LmgJKHJldmlzaW9uIDE2ODY4OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTExLDYgKzExMSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnpibF9tcihh
ZGRyZXNzLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGFib3J0V2l0aFJlYXNvbihBYm9ydFJl
YXNvbiByZWFzb24pCisgICAgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihyZWFzb24pLCBY
ODZSZWdpc3RlcnM6OmVheCk7CisgICAgICAgIGJyZWFrcG9pbnQoKTsKKyAgICB9CisKICAgICBD
b252ZXJ0aWJsZUxvYWRMYWJlbCBjb252ZXJ0aWJsZUxvYWRQdHIoQWRkcmVzcyBhZGRyZXNzLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbCByZXN1
bHQgPSBDb252ZXJ0aWJsZUxvYWRMYWJlbCh0aGlzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlz
aW9uIDE2ODY4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA4LCAyMDEyLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjI5LDYgKzYyOSwxMiBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRp
b24oY29uZCkpKTsKICAgICB9CiAKKyAgICB2b2lkIGFib3J0V2l0aFJlYXNvbihBYm9ydFJlYXNv
biByZWFzb24pCisgICAgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihyZWFzb24pLCBYODZS
ZWdpc3RlcnM6OnIxMSk7CisgICAgICAgIGJyZWFrcG9pbnQoKTsKKyAgICB9CisKICAgICBDb252
ZXJ0aWJsZUxvYWRMYWJlbCBjb252ZXJ0aWJsZUxvYWRQdHIoQWRkcmVzcyBhZGRyZXNzLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbCByZXN1bHQg
PSBDb252ZXJ0aWJsZUxvYWRMYWJlbCh0aGlzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgJKHJldmlzaW9uIDE2ODY4OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGppdC0+bV9jdXJyZW50
Tm9kZSA9IG1fY3VycmVudE5vZGU7CiAgICAgICAgIGdlbmVyYXRlSW50ZXJuYWwoaml0KTsKICAg
ICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpCi0gICAgICAgICAgICBqaXQtPm1faml0LmJyZWFr
cG9pbnQoKTsgLy8gbWFrZSBzdXJlIHRoYXQgdGhlIGdlbmVyYXRvciBqdW1wcyBiYWNrIHRvIHNv
bWV3aGVyZQorICAgICAgICAgICAgaml0LT5tX2ppdC5hYm9ydFdpdGhSZWFzb24oREZHU2xvd1Bh
dGhHZW5lcmF0b3JGZWxsVGhyb3VnaCk7CiAgICAgfQogICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJl
bCBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWw7IH0KICAgICB2aXJ0dWFsIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIGNhbGwoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxNjg2ODkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNzA5LDcgKzM3MDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBpc09LID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwg
SklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCBUcnVzdGVkSW1tUHRyKG5vZGUtPnN0cnVjdHVyZSgpKSk7Ci0gICAgICAgIG1faml0LmJy
ZWFrcG9pbnQoKTsKKyAgICAgICAgbV9qaXQuYWJvcnRXaXRoUmVhc29uKERGR0luZWZmZWN0aXZl
V2F0Y2hwb2ludCk7CiAgICAgICAgIGlzT0subGluaygmbV9qaXQpOwogI2Vsc2UKICAgICAgICAg
c3BlY3VsYXRlQ2VsbChub2RlLT5jaGlsZDEoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE2ODY4OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwMzYsNyArMTAzNiw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6
ZmlsbFNwZWN1bGF0ZUNlbGwKICAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKICAgICAgICAgaWYg
KCFBU1NFUlRfRElTQUJMRUQpIHsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNo
ZWNrQ2VsbCA9IGJyYW5jaElzQ2VsbChKU1ZhbHVlUmVncyhncHIpKTsKLSAgICAgICAgICAgIG1f
aml0LmJyZWFrcG9pbnQoKTsKKyAgICAgICAgICAgIG1faml0LmFib3J0V2l0aFJlYXNvbihERkdJ
c05vdENlbGwpOwogICAgICAgICAgICAgY2hlY2tDZWxsLmxpbmsoJm1faml0KTsKICAgICAgICAg
fQogICAgICAgICByZXR1cm4gZ3ByOwpAQCAtMzc4Miw3ICszNzgyLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkVx
dWFsLCAKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKG9wMS5ncHIoKSwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCiAgICAgICAgICAgICBub2RlLT5zdHJ1Y3R1cmUoKSk7
Ci0gICAgICAgIG1faml0LmJyZWFrcG9pbnQoKTsKKyAgICAgICAgbV9qaXQuYWJvcnRXaXRoUmVh
c29uKERGR0luZWZmZWN0aXZlV2F0Y2hwb2ludCk7CiAgICAgICAgIGlzT0subGluaygmbV9qaXQp
OwogI2Vsc2UKICAgICAgICAgc3BlY3VsYXRlQ2VsbChub2RlLT5jaGlsZDEoKSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2
aXNpb24gMTY4Njg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNDEsNyArMTM0MSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVNb3ZIaW50KE5vZGUKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmJhaWwo
KQogewogICAgIG1fY29tcGlsZU9rYXkgPSB0cnVlOwotICAgIG1faml0LmJyZWFrcG9pbnQoKTsK
KyAgICBtX2ppdC5hYm9ydFdpdGhSZWFzb24oREZHQmFpbGVkKTsKICAgICBjbGVhckdlbmVyYXRp
b25JbmZvKCk7CiB9CiAKQEAgLTEzNjAsNyArMTM2MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVDdXJyZW50QmxvY2sKICAgICAgICAgLy8gRG9uJ3QgZ2VuZXJhdGUgY29kZSBmb3Ig
YmFzaWMgYmxvY2tzIHRoYXQgYXJlIHVucmVhY2hhYmxlIGFjY29yZGluZyB0byBDRkEuCiAgICAg
ICAgIC8vIEJ1dCB0byBiZSBzdXJlIHRoYXQgbm9ib2R5IGhhcyBnZW5lcmF0ZWQgYSBqdW1wIHRv
IHRoaXMgYmxvY2ssIGRyb3AgaW4gYQogICAgICAgICAvLyBicmVha3BvaW50IGhlcmUuCi0gICAg
ICAgIG1faml0LmJyZWFrcG9pbnQoKTsKKyAgICAgICAgbV9qaXQuYWJvcnRXaXRoUmVhc29uKERG
R1VucmVhY2hhYmxlQmFzaWNCbG9jayk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI4
MjEsNyArMjgyMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYWtlUm9wZShOb2QK
ICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBv
ayA9IG1faml0LmJyYW5jaDMyKAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkdyZWF0ZXJUaGFu
T3JFcXVhbCwgYWxsb2NhdG9yR1BSLCBUcnVzdGVkSW1tMzIoMCkpOwotICAgICAgICBtX2ppdC5i
cmVha3BvaW50KCk7CisgICAgICAgIG1faml0LmFib3J0V2l0aFJlYXNvbihERkdOZWdhdGl2ZVN0
cmluZ0xlbmd0aCk7CiAgICAgICAgIG9rLmxpbmsoJm1faml0KTsKICAgICB9CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMTsgaSA8IG51bU9wR1BSczsgKytpKSB7CkBAIC0yODM3LDcgKzI4MzcsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWFrZVJvcGUoTm9kCiAgICAgaWYgKCFBU1NF
UlRfRElTQUJMRUQpIHsKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgb2sgPSBtX2ppdC5icmFu
Y2gzMigKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpHcmVhdGVyVGhhbk9yRXF1YWwsIGFsbG9j
YXRvckdQUiwgVHJ1c3RlZEltbTMyKDApKTsKLSAgICAgICAgbV9qaXQuYnJlYWtwb2ludCgpOwor
ICAgICAgICBtX2ppdC5hYm9ydFdpdGhSZWFzb24oREZHTmVnYXRpdmVTdHJpbmdMZW5ndGgpOwog
ICAgICAgICBvay5saW5rKCZtX2ppdCk7CiAgICAgfQogICAgIG1faml0LnN0b3JlMzIoYWxsb2Nh
dG9yR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTU3RyaW5nOjpvZmZzZXRP
Zkxlbmd0aCgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxNjg2ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNDMsNyArMjE0Myw3
IEBAIHB1YmxpYzoKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIG1faml0Lm1vdmUoc2l6ZSwgcmVz
dWx0R1BSKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm9uWmVyb1NpemUgPSBtX2pp
dC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHJlc3VsdEdQUik7Ci0gICAg
ICAgIG1faml0LmJyZWFrcG9pbnQoKTsKKyAgICAgICAgbV9qaXQuYWJvcnRXaXRoUmVhc29uKERG
R0Jhc2ljU3RvcmFnZUFsbG9jYXRvclplcm9TaXplKTsKICAgICAgICAgbm9uWmVyb1NpemUubGlu
aygmbV9qaXQpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Ro
dW5rcy5jcHAJKHJldmlzaW9uIDE2ODY4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDcgKzEyNyw3IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBvc3JFbnRyeVRodW5rR2VuZXIKICAgICAKICAgICBqaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgb2Zmc2V0T2ZUYXJnZXRQQyks
IEdQUkluZm86OnJlZ1QxKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvayA9IGppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBHUFJJbmZvOjpyZWdUMSwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJf
dD4oMTAwMCkpKSk7Ci0gICAgaml0LmJyZWFrcG9pbnQoKTsKKyAgICBqaXQuYWJvcnRXaXRoUmVh
c29uKERGR1VucmVhc29uYWJsZU9TUkVudHJ5SnVtcERlc3RpbmF0aW9uKTsKICAgICBvay5saW5r
KCZqaXQpOwogICAgIGppdC5qdW1wKEdQUkluZm86OnJlZ1QxKTsKICAgICAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlzaW9uIDE2
ODY4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6aml0
QXNzZXJ0SXNJbnQzMihHCiB7CiAjaWYgQ1BVKFg4Nl82NCkKICAgICBKdW1wIGNoZWNrSW50MzIg
PSBicmFuY2g2NChCZWxvd09yRXF1YWwsIGdwciwgVHJ1c3RlZEltbTY0KHN0YXRpY19jYXN0PHVp
bnRwdHJfdD4oMHhGRkZGRkZGRnUpKSk7Ci0gICAgYnJlYWtwb2ludCgpOworICAgIGFib3J0V2l0
aFJlYXNvbihBSElzTm90SW50MzIpOwogICAgIGNoZWNrSW50MzIubGluayh0aGlzKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKGdwcik7CkBAIC05NCwxNCArOTQsMTQgQEAgdm9pZCBBc3NlbWJs
eUhlbHBlcnM6OmppdEFzc2VydElzSW50MzIoRwogdm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFz
c2VydElzSlNJbnQzMihHUFJSZWcgZ3ByKQogewogICAgIEp1bXAgY2hlY2tKU0ludDMyID0gYnJh
bmNoNjQoQWJvdmVPckVxdWFsLCBncHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7
Ci0gICAgYnJlYWtwb2ludCgpOworICAgIGFib3J0V2l0aFJlYXNvbihBSElzTm90SlNJbnQzMik7
CiAgICAgY2hlY2tKU0ludDMyLmxpbmsodGhpcyk7CiB9CiAKIHZvaWQgQXNzZW1ibHlIZWxwZXJz
OjpqaXRBc3NlcnRJc0pTTnVtYmVyKEdQUlJlZyBncHIpCiB7CiAgICAgSnVtcCBjaGVja0pTTnVt
YmVyID0gYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBncHIsIEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgYnJlYWtwb2ludCgpOworICAgIGFib3J0V2l0
aFJlYXNvbihBSElzTm90SlNOdW1iZXIpOwogICAgIGNoZWNrSlNOdW1iZXIubGluayh0aGlzKTsK
IH0KIApAQCAtMTEwLDI1ICsxMTAsMjYgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2Vy
dElzSlNEb3VibAogICAgIEp1bXAgY2hlY2tKU0ludDMyID0gYnJhbmNoNjQoQWJvdmVPckVxdWFs
LCBncHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CiAgICAgSnVtcCBjaGVja0pT
TnVtYmVyID0gYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBncHIsIEdQUklu
Zm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CiAgICAgY2hlY2tKU0ludDMyLmxpbmsodGhpcyk7
Ci0gICAgYnJlYWtwb2ludCgpOworICAgIGFib3J0V2l0aFJlYXNvbihBSElzTm90SlNEb3VibGUp
OwogICAgIGNoZWNrSlNOdW1iZXIubGluayh0aGlzKTsKIH0KIAogdm9pZCBBc3NlbWJseUhlbHBl
cnM6OmppdEFzc2VydElzQ2VsbChHUFJSZWcgZ3ByKQogewogICAgIEp1bXAgY2hlY2tDZWxsID0g
YnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBncHIsIEdQUkluZm86OnRhZ01hc2tS
ZWdpc3Rlcik7Ci0gICAgYnJlYWtwb2ludCgpOworICAgIGFib3J0V2l0aFJlYXNvbihBSElzTm90
Q2VsbCk7CiAgICAgY2hlY2tDZWxsLmxpbmsodGhpcyk7CiB9CiAKIHZvaWQgQXNzZW1ibHlIZWxw
ZXJzOjpqaXRBc3NlcnRUYWdzSW5QbGFjZSgpCiB7CiAgICAgSnVtcCBvayA9IGJyYW5jaDY0KEVx
dWFsLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIFRydXN0ZWRJbW02NChUYWdUeXBl
TnVtYmVyKSk7CisgICAgYWJvcnRXaXRoUmVhc29uKEFIVGFnVHlwZU51bWJlck5vdEluUGxhY2Up
OwogICAgIGJyZWFrcG9pbnQoKTsKICAgICBvay5saW5rKHRoaXMpOwogICAgIAogICAgIG9rID0g
YnJhbmNoNjQoRXF1YWwsIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlciwgVHJ1c3RlZEltbTY0KFRh
Z01hc2spKTsKLSAgICBicmVha3BvaW50KCk7CisgICAgYWJvcnRXaXRoUmVhc29uKEFIVGFnTWFz
a05vdEluUGxhY2UpOwogICAgIG9rLmxpbmsodGhpcyk7CiB9CiAjZWxpZiBVU0UoSlNWQUxVRTMy
XzY0KQpAQCAtMTQwLDcgKzE0MSw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRJ
c0ludDMyKEcKIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRJc0pTSW50MzIoR1BSUmVn
IGdwcikKIHsKICAgICBKdW1wIGNoZWNrSlNJbnQzMiA9IGJyYW5jaDMyKEVxdWFsLCBncHIsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOwotICAgIGJyZWFrcG9pbnQoKTsKKyAgICBh
Ym9ydFdpdGhSZWFzb24oQUhJc05vdEpTSW50MzIpOwogICAgIGNoZWNrSlNJbnQzMi5saW5rKHRo
aXMpOwogfQogCkBAIC0xNDgsNyArMTQ5LDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFz
c2VydElzSlNOdW1iZQogewogICAgIEp1bXAgY2hlY2tKU0ludDMyID0gYnJhbmNoMzIoRXF1YWws
IGdwciwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7CiAgICAgSnVtcCBjaGVja0pT
RG91YmxlID0gYnJhbmNoMzIoQmVsb3csIGdwciwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2Vz
dFRhZykpOwotICAgIGJyZWFrcG9pbnQoKTsKKyAgICBhYm9ydFdpdGhSZWFzb24oQUhJc05vdEpT
TnVtYmVyKTsKICAgICBjaGVja0pTSW50MzIubGluayh0aGlzKTsKICAgICBjaGVja0pTRG91Ymxl
LmxpbmsodGhpcyk7CiB9CkBAIC0xNTYsMTQgKzE1NywxNCBAQCB2b2lkIEFzc2VtYmx5SGVscGVy
czo6aml0QXNzZXJ0SXNKU051bWJlCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNK
U0RvdWJsZShHUFJSZWcgZ3ByKQogewogICAgIEp1bXAgY2hlY2tKU0RvdWJsZSA9IGJyYW5jaDMy
KEJlbG93LCBncHIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKTsKLSAgICBicmVh
a3BvaW50KCk7CisgICAgYWJvcnRXaXRoUmVhc29uKEFISXNOb3RKU0RvdWJsZSk7CiAgICAgY2hl
Y2tKU0RvdWJsZS5saW5rKHRoaXMpOwogfQogCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNz
ZXJ0SXNDZWxsKEdQUlJlZyBncHIpCiB7CiAgICAgSnVtcCBjaGVja0NlbGwgPSBicmFuY2gzMihF
cXVhbCwgZ3ByLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIGJyZWFrcG9p
bnQoKTsKKyAgICBhYm9ydFdpdGhSZWFzb24oQUhJc05vdENlbGwpOwogICAgIGNoZWNrQ2VsbC5s
aW5rKHRoaXMpOwogfQogCkBAIC0xNzUsMjUgKzE3Niw1NCBAQCB2b2lkIEFzc2VtYmx5SGVscGVy
czo6aml0QXNzZXJ0VGFnc0luUGxhCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SGFz
VmFsaWRDYWxsRnJhbWUoKQogewogICAgIEp1bXAgY2hlY2tDRlIgPSBicmFuY2hUZXN0UHRyKFpl
cm8sIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBUcnVzdGVkSW1tMzIoNykpOwotICAgIGJy
ZWFrcG9pbnQoKTsKKyAgICBhYm9ydFdpdGhSZWFzb24oQUhDYWxsRnJhbWVNaXNhbGlnbmVkKTsK
ICAgICBjaGVja0NGUi5saW5rKHRoaXMpOwogfQogCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6aml0
QXNzZXJ0SXNOdWxsKEdQUlJlZyBncHIpCiB7CiAgICAgSnVtcCBjaGVja051bGwgPSBicmFuY2hU
ZXN0UHRyKFplcm8sIGdwcik7Ci0gICAgYnJlYWtwb2ludCgpOworICAgIGFib3J0V2l0aFJlYXNv
bihBSElzTm90TnVsbCk7CiAgICAgY2hlY2tOdWxsLmxpbmsodGhpcyk7CiB9CiAKIHZvaWQgQXNz
ZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRBcmd1bWVudENvdW50U2FuZSgpCiB7CiAgICAgSnVtcCBv
ayA9IGJyYW5jaDMyKEJlbG93LCBwYXlsb2FkRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpLCBU
cnVzdGVkSW1tMzIoMTAwMDAwMDApKTsKLSAgICBicmVha3BvaW50KCk7CisgICAgYWJvcnRXaXRo
UmVhc29uKEFISW5zYW5lQXJndW1lbnRDb3VudCk7CiAgICAgb2subGluayh0aGlzKTsKIH0KICNl
bmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECiAKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0U3Rv
cmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oQXNzZW1ibHlIZWxwZXJzJiBqaXQsIFRydXN0ZWRJbW1Q
dHIgc3RydWN0dXJlLCBSZWdpc3RlcklEIGRlc3QpCit7CisgICAgY29uc3QgU3RydWN0dXJlKiBz
dHJ1Y3R1cmVQdHIgPSBzdGF0aWNfY2FzdDxjb25zdCBTdHJ1Y3R1cmUqPihzdHJ1Y3R1cmUubV92
YWx1ZSk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBqaXQuc3RvcmU2NChUcnVzdGVkSW1tNjQo
c3RydWN0dXJlUHRyLT5pZEJsb2IoKSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7
CisgICAgICAgIEp1bXAgY29ycmVjdFN0cnVjdHVyZSA9IGppdC5icmFuY2gzMihFcXVhbCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
VHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+aWQoKSkpOworICAgICAgICBqaXQuYWJvcnRXaXRo
UmVhc29uKEFIU3RydWN0dXJlSURJc1ZhbGlkKTsKKyAgICAgICAgY29ycmVjdFN0cnVjdHVyZS5s
aW5rKCZqaXQpOworCisgICAgICAgIEp1bXAgY29ycmVjdEluZGV4aW5nVHlwZSA9IGppdC5icmFu
Y2g4KEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OmluZGV4aW5n
VHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+aW5kZXhpbmdUeXBlKCkp
KTsKKyAgICAgICAgaml0LmFib3J0V2l0aFJlYXNvbihBSEluZGV4aW5nVHlwZUlzVmFsaWQpOwor
ICAgICAgICBjb3JyZWN0SW5kZXhpbmdUeXBlLmxpbmsoJmppdCk7CisKKyAgICAgICAgSnVtcCBj
b3JyZWN0VHlwZSA9IGppdC5icmFuY2g4KEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhk
ZXN0LCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKHN0cnVjdHVy
ZVB0ci0+dHlwZUluZm8oKS50eXBlKCkpKTsKKyAgICAgICAgaml0LmFib3J0V2l0aFJlYXNvbihB
SFR5cGVJbmZvSXNWYWxpZCk7CisgICAgICAgIGNvcnJlY3RUeXBlLmxpbmsoJmppdCk7CisKKyAg
ICAgICAgSnVtcCBjb3JyZWN0RmxhZ3MgPSBqaXQuYnJhbmNoOChFcXVhbCwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVk
SW1tMzIoc3RydWN0dXJlUHRyLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpKSk7CisgICAg
ICAgIGppdC5hYm9ydFdpdGhSZWFzb24oQUhUeXBlSW5mb0lubGluZVR5cGVGbGFnc0FyZVZhbGlk
KTsKKyAgICAgICAgY29ycmVjdEZsYWdzLmxpbmsoJmppdCk7CisgICAgfQorI2Vsc2UKKyAgICAv
LyBEbyBhIDMyLWJpdCB3aWRlIHN0b3JlIHRvIGluaXRpYWxpemUgdGhlIGNlbGwncyBmaWVsZHMu
CisgICAgaml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+b2JqZWN0SW5pdGlh
bGl6YXRpb25CbG9iKCkpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6Omlu
ZGV4aW5nVHlwZU9mZnNldCgpKSk7CisgICAgaml0LnN0b3JlUHRyKHN0cnVjdHVyZSwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7Cisj
ZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZp
c2lvbiAxNjg2ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8g
VGhpcyBjaGVjayBpcyBib3RoIHVubmVlZGVkIGFuZCBoYXJkZXIgdG8gd3JpdGUgY29ycmVjdGx5
IGZvciBBUk02NAogI2lmICFkZWZpbmVkKE5ERUJVRykgJiYgIUNQVShBUk02NCkKICAgICAgICAg
SnVtcCBzdGFja1BvaW50ZXJBbGlnbmVkID0gYnJhbmNoVGVzdFB0cihaZXJvLCBzdGFja1BvaW50
ZXJSZWdpc3RlciwgVHJ1c3RlZEltbTMyKDB4ZikpOwotICAgICAgICBicmVha3BvaW50KCk7Cisg
ICAgICAgIGFib3J0V2l0aFJlYXNvbihBSFN0YWNrUG9pbnRlck1pc2FsaWduZWQpOwogICAgICAg
ICBzdGFja1BvaW50ZXJBbGlnbmVkLmxpbmsodGhpcyk7CiAjZW5kaWYKICAgICB9CkBAIC02Mjks
MzQgKzYyOSw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGVt
aXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhBc3NlbWJseUhlbHBlcnMmIGppdCwgVHJ1c3Rl
ZEltbVB0ciBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGNvbnN0
IFN0cnVjdHVyZSogc3RydWN0dXJlUHRyID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3RydWN0dXJlKj4o
c3RydWN0dXJlLm1fdmFsdWUpOwotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGppdC5zdG9y
ZTY0KFRydXN0ZWRJbW02NChzdHJ1Y3R1cmVQdHItPmlkQmxvYigpKSwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7Ci0jaWZuZGVmIE5E
RUJVRwotICAgICAgICBKdW1wIGNvcnJlY3RTdHJ1Y3R1cmUgPSBqaXQuYnJhbmNoMzIoRXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksIFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVQdHItPmlkKCkpKTsKLSAgICAgICAgaml0LmJyZWFr
cG9pbnQoKTsKLSAgICAgICAgY29ycmVjdFN0cnVjdHVyZS5saW5rKCZqaXQpOwotCi0gICAgICAg
IEp1bXAgY29ycmVjdEluZGV4aW5nVHlwZSA9IGppdC5icmFuY2g4KEVxdWFsLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgVHJ1c3Rl
ZEltbTMyKHN0cnVjdHVyZVB0ci0+aW5kZXhpbmdUeXBlKCkpKTsKLSAgICAgICAgaml0LmJyZWFr
cG9pbnQoKTsKLSAgICAgICAgY29ycmVjdEluZGV4aW5nVHlwZS5saW5rKCZqaXQpOwotCi0gICAg
ICAgIEp1bXAgY29ycmVjdFR5cGUgPSBqaXQuYnJhbmNoOChFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0z
MihzdHJ1Y3R1cmVQdHItPnR5cGVJbmZvKCkudHlwZSgpKSk7Ci0gICAgICAgIGppdC5icmVha3Bv
aW50KCk7Ci0gICAgICAgIGNvcnJlY3RUeXBlLmxpbmsoJmppdCk7Ci0KLSAgICAgICAgSnVtcCBj
b3JyZWN0RmxhZ3MgPSBqaXQuYnJhbmNoOChFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
ZGVzdCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoc3RydWN0
dXJlUHRyLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpKSk7Ci0gICAgICAgIGppdC5icmVh
a3BvaW50KCk7Ci0gICAgICAgIGNvcnJlY3RGbGFncy5saW5rKCZqaXQpOwotI2VuZGlmCi0jZWxz
ZQotICAgICAgICAvLyBEbyBhIDMyLWJpdCB3aWRlIHN0b3JlIHRvIGluaXRpYWxpemUgdGhlIGNl
bGwncyBmaWVsZHMuCi0gICAgICAgIGppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVQ
dHItPm9iamVjdEluaXRpYWxpemF0aW9uQmxvYigpKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
ZGVzdCwgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSkpOwotICAgICAgICBqaXQuc3RvcmVQ
dHIoc3RydWN0dXJlLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpKTsKLSNlbmRpZgotICAgIH0KKyAgICBzdGF0aWMgdm9pZCBlbWl0U3Rv
cmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oQXNzZW1ibHlIZWxwZXJzJiBqaXQsIFRydXN0ZWRJbW1Q
dHIgc3RydWN0dXJlLCBSZWdpc3RlcklEIGRlc3QpOwogCiAgICAgSnVtcCBjaGVja01hcmtCeXRl
KEdQUlJlZyBjZWxsKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNp
b24gMTY4Njg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzA2LDEwICszMDYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBl
bWl0TG9hZEludDMyVG9Eb3VibGUoaW50IGluZGV4LCBGUFJlZ2lzdGVySUQgdmFsdWUpOwogICAg
ICAgICBKdW1wIGVtaXRKdW1wSWZDZWxsTm90T2JqZWN0KFJlZ2lzdGVySUQgY2VsbFJlZyk7CiAK
LSAgICAgICAgSnVtcCBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soSlNDZWxsKiwgU3RydWN0
dXJlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBSZWdpc3RlcklEIHNjcmF0Y2gpOwotICAgICAgICB2
b2lkIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVjayhKU0NlbGwqLCBTdHJ1Y3R1cmUqLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIFJlZ2lzdGVySUQgc2NyYXRj
aCk7Ci0gICAgICAgIHZvaWQgdGVzdFByb3RvdHlwZShKU1ZhbHVlLCBKdW1wTGlzdCYgZmFpbHVy
ZUNhc2VzLCBTdHJ1Y3R1cmVTdHViSW5mbyopOwotCiAgICAgICAgIGVudW0gV3JpdGVCYXJyaWVy
TW9kZSB7IFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIsIFNob3VsZEZpbHRlckJhc2UsIFNob3Vs
ZEZpbHRlclZhbHVlLCBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUgfTsKICAgICAgICAgLy8gdmFs
dWUgcmVnaXN0ZXIgaW4gd3JpdGUgYmFycmllciBpcyB1c2VkIGJlZm9yZSBhbnkgc2NyYXRjaCBy
ZWdpc3RlcnMKICAgICAgICAgLy8gc28gbWF5IHNhZmVseSBiZSB0aGUgc2FtZSBhcyBlaXRoZXIg
b2YgdGhlIHNjcmF0Y2ggcmVnaXN0ZXJzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRBcml0aG1ldGljLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVEFyaXRobWV0aWMuY3BwCShyZXZpc2lvbiAxNjg2ODkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NTUsOSAr
OTU1LDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RpdihJbnN0cnVjdGlvbiogYwogICAgIGlu
dCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgIE9wZXJhbmRUeXBl
cyB0eXBlcyA9IE9wZXJhbmRUeXBlczo6ZnJvbUludChjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5v
cGVyYW5kKTsKICAgICBpZiAodHlwZXMuZmlyc3QoKS5kZWZpbml0ZWx5SXNOdW1iZXIoKSAmJiB0
eXBlcy5zZWNvbmQoKS5kZWZpbml0ZWx5SXNOdW1iZXIoKSkgewotI2lmbmRlZiBOREVCVUcKLSAg
ICAgICAgYnJlYWtwb2ludCgpOwotI2VuZGlmCisgICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVE
KQorICAgICAgICAgICAgYWJvcnRXaXRoUmVhc29uKEpJVERpdk9wZXJhbmRzQXJlTm90TnVtYmVy
cyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKCFpc09wZXJhbmRDb25zdGFudElt
bWVkaWF0ZURvdWJsZShvcDEpICYmICFpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDEp
KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQu
Y3BwCShyZXZpc2lvbiAxNjg2ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBKSVQ6OkNv
ZGVSZWYgSklUOjpwcml2YXRlQ29tcGlsZUNUSU5hdGl2CiAgICAgcmVzdG9yZVJldHVybkFkZHJl
c3NCZWZvcmVSZXR1cm4ocmVnVDMpOwogI2Vsc2UKICNlcnJvciAiSklUIG5vdCBzdXBwb3J0ZWQg
b24gdGhpcyBwbGF0Zm9ybS4iCi0gICAgYnJlYWtwb2ludCgpOworICAgIGFib3J0V2l0aFJlYXNv
bihKSVROb3RTdXBwb3J0ZWQpOwogI2VuZGlmIC8vIENQVShYODYpCiAKICAgICAvLyBDaGVjayBm
b3IgYW4gZXhjZXB0aW9uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAJKHJldmlzaW9uIDE2ODY4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMDYsNyArMTEwNiw3IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9sb29wX2hpbnQoSW5zdHJ1Y3QKICAgICAgICAgSnVtcCBub09wdGltaXpl
ZEVudHJ5ID0gYnJhbmNoVGVzdFB0cihaZXJvLCByZXR1cm5WYWx1ZUdQUik7CiAgICAgICAgIGlm
ICghQVNTRVJUX0RJU0FCTEVEKSB7CiAgICAgICAgICAgICBKdW1wIG9rID0gYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBYm92ZSwgcmVnVDAsIFRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZv
aWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMTAwMCkpKSk7Ci0gICAgICAgICAgICBicmVha3Bv
aW50KCk7CisgICAgICAgICAgICBhYm9ydFdpdGhSZWFzb24oSklUVW5yZWFzb25hYmxlTG9vcEhp
bnRKdW1wVGFyZ2V0KTsKICAgICAgICAgICAgIG9rLmxpbmsodGhpcyk7CiAgICAgICAgIH0KICAg
ICAgICAganVtcChyZXR1cm5WYWx1ZUdQUik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDE2ODY4
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSwxMSArMTYxLDExIEBAIHZvaWQgSklUOjplbWl0X29w
X2dldF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICAKICAgICBMYWJlbCBkb25lID0gbGFiZWwoKTsK
IAotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBKdW1wIHJlc3VsdE9LID0gYnJhbmNoMzIoTm90
RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpOwotICAg
IGJyZWFrcG9pbnQoKTsKLSAgICByZXN1bHRPSy5saW5rKHRoaXMpOwotI2VuZGlmCisgICAgaWYg
KCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgSnVtcCByZXN1bHRPSyA9IGJyYW5jaDMyKE5v
dEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsKKyAg
ICAgICAgYWJvcnRXaXRoUmVhc29uKEpJVEdldEJ5VmFsUmVzdWx0SXNOb3RFbXB0eSk7CisgICAg
ICAgIHJlc3VsdE9LLmxpbmsodGhpcyk7CisgICAgfQogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5n
U2l0ZSgpOwogICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7CkBAIC02MDEsMTEgKzYw
MSwxMSBAQCB2b2lkIEpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlCiAgICAgICAg
IGFkZFB0cihUcnVzdGVkSW1tUHRyKEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSAt
IChmaXJzdE91dE9mTGluZU9mZnNldCAtIDIpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIGJh
c2UpOwogICAgICAgICBkb25lLmxpbmsodGhpcyk7CiAgICAgfSBlbHNlIHsKLSNpZiAhQVNTRVJU
X0RJU0FCTEVECi0gICAgICAgIEp1bXAgaXNPdXRPZkxpbmUgPSBicmFuY2gzMihHcmVhdGVyVGhh
bk9yRXF1YWwsIG9mZnNldCwgVHJ1c3RlZEltbTMyKGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KSk7Ci0g
ICAgICAgIGJyZWFrcG9pbnQoKTsKLSAgICAgICAgaXNPdXRPZkxpbmUubGluayh0aGlzKTsKLSNl
bmRpZgorICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICAgICAgSnVtcCBp
c091dE9mTGluZSA9IGJyYW5jaDMyKEdyZWF0ZXJUaGFuT3JFcXVhbCwgb2Zmc2V0LCBUcnVzdGVk
SW1tMzIoZmlyc3RPdXRPZkxpbmVPZmZzZXQpKTsKKyAgICAgICAgICAgIGFib3J0V2l0aFJlYXNv
bihKSVRPZmZzZXRJc05vdE91dE9mTGluZSk7CisgICAgICAgICAgICBpc091dE9mTGluZS5saW5r
KHRoaXMpOworICAgICAgICB9CiAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVj
dDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBiYXNlKTsKICAgICAgICAgbmVnMzIob2Zmc2V0KTsKICAg
ICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcAkocmV2aXNpb24gMTY4Njg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSwxMSArMTM5LDExIEBA
IHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICAKICAgICBMYWJl
bCBkb25lID0gbGFiZWwoKTsKICAgICAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgSnVtcCBy
ZXN1bHRPSyA9IGJyYW5jaFRlc3Q2NChOb25aZXJvLCByZWdUMCk7Ci0gICAgYnJlYWtwb2ludCgp
OwotICAgIHJlc3VsdE9LLmxpbmsodGhpcyk7Ci0jZW5kaWYKKyAgICBpZiAoIUFTU0VSVF9ESVNB
QkxFRCkgeworICAgICAgICBKdW1wIHJlc3VsdE9LID0gYnJhbmNoVGVzdDY0KE5vblplcm8sIHJl
Z1QwKTsKKyAgICAgICAgYWJvcnRXaXRoUmVhc29uKEpJVEdldEJ5VmFsUmVzdWx0SXNOb3RFbXB0
eSk7CisgICAgICAgIHJlc3VsdE9LLmxpbmsodGhpcyk7CisgICAgfQogCiAgICAgZW1pdFZhbHVl
UHJvZmlsaW5nU2l0ZSgpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKQEAgLTI1
MiwxMSArMjUyLDExIEBAIHZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGUK
ICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9y
YWdlKCkgLSAoZmlyc3RPdXRPZkxpbmVPZmZzZXQgLSAyKSAqIHNpemVvZihFbmNvZGVkSlNWYWx1
ZSkpLCBiYXNlLCBzY3JhdGNoKTsKICAgICAgICAgZG9uZS5saW5rKHRoaXMpOwogICAgIH0gZWxz
ZSB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgICAgICBKdW1wIGlzT3V0T2ZMaW5lID0gYnJh
bmNoMzIoR3JlYXRlclRoYW5PckVxdWFsLCBvZmZzZXQsIFRydXN0ZWRJbW0zMihmaXJzdE91dE9m
TGluZU9mZnNldCkpOwotICAgICAgICBicmVha3BvaW50KCk7Ci0gICAgICAgIGlzT3V0T2ZMaW5l
LmxpbmsodGhpcyk7Ci0jZW5kaWYKKyAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAg
ICAgICAgICAgIEp1bXAgaXNPdXRPZkxpbmUgPSBicmFuY2gzMihHcmVhdGVyVGhhbk9yRXF1YWws
IG9mZnNldCwgVHJ1c3RlZEltbTMyKGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KSk7CisgICAgICAgICAg
ICBhYm9ydFdpdGhSZWFzb24oSklUT2Zmc2V0SXNOb3RPdXRPZkxpbmUpOworICAgICAgICAgICAg
aXNPdXRPZkxpbmUubGluayh0aGlzKTsKKyAgICAgICAgfQogICAgICAgICBsb2FkUHRyKEFkZHJl
c3MoYmFzZSwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc2NyYXRjaCk7CiAgICAgICAg
IG5lZzMyKG9mZnNldCk7CiAgICAgfQpAQCAtOTc2LDQyICs5NzYsNiBAQCB2b2lkIEpJVDo6ZW1p
dFdyaXRlQmFycmllcihKU0NlbGwqIG93bmVyCiAjZW5kaWYgLy8gRU5BQkxFKEdHQykKIH0KIAot
SklUOjpKdW1wIEpJVDo6YWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKEpTQ2VsbCogb2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBSZWdp
c3RlcklEIHNjcmF0Y2gpCi17Ci0gICAgaWYgKG9iamVjdC0+c3RydWN0dXJlKCkgPT0gc3RydWN0
dXJlICYmIHN0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRJc1N0aWxsVmFsaWQoKSkg
ewotICAgICAgICBzdHJ1Y3R1cmUtPmFkZFRyYW5zaXRpb25XYXRjaHBvaW50KHN0dWJJbmZvLT5h
ZGRXYXRjaHBvaW50KG1fY29kZUJsb2NrKSk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIob2JqZWN0KSwgc2NyYXRjaCk7Ci0gICAgICAgIEp1bXAgb2sg
PSBicmFuY2hTdHJ1Y3R1cmUoRXF1YWwsIEFkZHJlc3Moc2NyYXRjaCwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgc3RydWN0dXJlKTsKLSAgICAgICAgYnJlYWtwb2ludCgpOwotICAgICAg
ICBvay5saW5rKHRoaXMpOwotI2VuZGlmCi0gICAgICAgIEp1bXAgcmVzdWx0OyAvLyBSZXR1cm5p
bmcgYW4gdW5zZXQganVtcCB0aGlzIHdheSBiZWNhdXNlIG90aGVyd2lzZSBWQysrIHdvdWxkIGNv
bXBsYWluLgotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICAKLSAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIob2JqZWN0KSwgc2NyYXRjaCk7Ci0gICAgcmV0dXJuIGJyYW5jaFN0cnVjdHVy
ZShOb3RFcXVhbCwgQWRkcmVzcyhzY3JhdGNoLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkp
LCBzdHJ1Y3R1cmUpOwotfQotCi12b2lkIEpJVDo6YWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNr
KEpTQ2VsbCogb2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBSZWdpc3RlcklEIHNjcmF0Y2gpCi17
Ci0gICAgSnVtcCBmYWlsdXJlQ2FzZSA9IGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVjayhvYmpl
Y3QsIHN0cnVjdHVyZSwgc3R1YkluZm8sIHNjcmF0Y2gpOwotICAgIGlmICghZmFpbHVyZUNhc2Uu
aXNTZXQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQo
ZmFpbHVyZUNhc2UpOwotfQotCi12b2lkIEpJVDo6dGVzdFByb3RvdHlwZShKU1ZhbHVlIHByb3Rv
dHlwZSwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
KQotewotICAgIGlmIChwcm90b3R5cGUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IEFTU0VSVChwcm90b3R5cGUuaXNDZWxsKCkpOwotICAgIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25D
aGVjayhwcm90b3R5cGUuYXNDZWxsKCksIHByb3RvdHlwZS5hc0NlbGwoKS0+c3RydWN0dXJlKCks
IHN0dWJJbmZvLCBmYWlsdXJlQ2FzZXMsIHJlZ1QzKTsKLX0KLQogdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlR2V0QnlWYWwoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuQWRkcmVzcywgSklUQXJyYXlNb2RlIGFycmF5TW9kZSkKIHsKICAgICBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uID0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkg
KyBieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXg7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJH
ZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxNjg2ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIxMSw3ICsyMTEsNyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZVJlZ2lzdGVyUmVzdG9y
YXRpb24oCiAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKICAgICAgICAgQXNzZW1ibHlIZWxw
ZXJzOjpKdW1wIG9rID0gaml0LmJyYW5jaFB0cigKICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVy
czo6QWJvdmUsIEdQUkluZm86OnJlZ1QxLCBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
c3RhdGljX2Nhc3Q8c2l6ZV90PigweDEwMDApKSk7Ci0gICAgICAgIGppdC5icmVha3BvaW50KCk7
CisgICAgICAgIGppdC5hYm9ydFdpdGhSZWFzb24oUlBXVW5yZWFzb25hYmxlSnVtcFRhcmdldCk7
CiAgICAgICAgIG9rLmxpbmsoJmppdCk7CiAgICAgfQogICAgIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAxNjg2ODkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsMTcgKzEzMiwx
OCBAQCBzdGF0aWMgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soCiB7CiAgICAgaWYg
KG9iamVjdC0+c3RydWN0dXJlKCkgPT0gc3RydWN0dXJlICYmIHN0cnVjdHVyZS0+dHJhbnNpdGlv
bldhdGNocG9pbnRTZXRJc1N0aWxsVmFsaWQoKSkgewogICAgICAgICBzdHJ1Y3R1cmUtPmFkZFRy
YW5zaXRpb25XYXRjaHBvaW50KHN0dWJJbmZvLmFkZFdhdGNocG9pbnQoY29kZUJsb2NrKSk7Ci0j
aWYgIUFTU0VSVF9ESVNBQkxFRAotICAgICAgICAvLyBJZiB3ZSBleGVjdXRlIHRoaXMgY29kZSwg
dGhlIG9iamVjdCBtdXN0IGhhdmUgdGhlIHN0cnVjdHVyZSB3ZSBleHBlY3QuIEFzc2VydAotICAg
ICAgICAvLyB0aGlzIGluIGRlYnVnIG1vZGVzLgotICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihvYmplY3QpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgb2sgPSBicmFuY2hTdHJ1Y3R1cmUoaml0LAotICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkVxdWFsLAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
c2NyYXRjaEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKLSAgICAgICAgICAgIHN0
cnVjdHVyZSk7Ci0gICAgICAgIGppdC5icmVha3BvaW50KCk7Ci0gICAgICAgIG9rLmxpbmsoJmpp
dCk7Ci0jZW5kaWYKKyAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgICAg
IC8vIElmIHdlIGV4ZWN1dGUgdGhpcyBjb2RlLCB0aGUgb2JqZWN0IG11c3QgaGF2ZSB0aGUgc3Ry
dWN0dXJlIHdlIGV4cGVjdC4gQXNzZXJ0CisgICAgICAgICAgICAvLyB0aGlzIGluIGRlYnVnIG1v
ZGVzLgorICAgICAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
b2JqZWN0KSwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBv
ayA9IGJyYW5jaFN0cnVjdHVyZSgKKyAgICAgICAgICAgICAgICBqaXQsCisgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHNjcmF0Y2hHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAg
ICAgICAgICAgICAgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIGppdC5hYm9ydFdpdGhSZWFzb24o
UmVwYXRjaEluZWZmZWN0aXZlV2F0Y2hwb2ludCk7CisgICAgICAgICAgICBvay5saW5rKCZqaXQp
OworICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC0xNTcxLDcgKzE1
NzIsNyBAQCB2b2lkIGxpbmtDbG9zdXJlQ2FsbCgKICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkg
ewogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgb2tBcmd1bWVudENvdW50ID0gc3R1YkppdC5i
cmFuY2gzMigKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QmVsb3csIENDYWxsSGVscGVyczo6
QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzdGF0aWNfY2FzdDxw
dHJkaWZmX3Q+KHNpemVvZihSZWdpc3RlcikgKiBKU1N0YWNrOjpBcmd1bWVudENvdW50KSArIG9m
ZnNldFRvRnJhbWUgKyBQYXlsb2FkT2Zmc2V0KSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
MTAwMDAwMDApKTsKLSAgICAgICAgc3R1YkppdC5icmVha3BvaW50KCk7CisgICAgICAgIHN0dWJK
aXQuYWJvcnRXaXRoUmVhc29uKFJlcGF0Y2hJbnNhbmVBcmd1bWVudENvdW50KTsKICAgICAgICAg
b2tBcmd1bWVudENvdW50LmxpbmsoJnN0dWJKaXQpOwogICAgIH0KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNpb24gMTY4Njg5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSwxNyArNDUsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGlubGluZSB2
b2lkIGVtaXRQb2ludGVyVmFsaWRhdGlvbihDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIHBvaW50
ZXJHUFIpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIGlmIChBU1NFUlRfRElTQUJMRUQp
CisgICAgICAgIHJldHVybjsKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgaXNOb25aZXJvID0gaml0
LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBwb2ludGVyR1BSKTsKLSAgICBq
aXQuYnJlYWtwb2ludCgpOworICAgIGppdC5hYm9ydFdpdGhSZWFzb24oVEdJbnZhbGlkUG9pbnRl
cik7CiAgICAgaXNOb25aZXJvLmxpbmsoJmppdCk7CiAgICAgaml0LnB1c2hUb1NhdmUocG9pbnRl
ckdQUik7CiAgICAgaml0LmxvYWQ4KHBvaW50ZXJHUFIsIHBvaW50ZXJHUFIpOwogICAgIGppdC5w
b3BUb1Jlc3RvcmUocG9pbnRlckdQUik7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShqaXQpOwot
ICAgIFVOVVNFRF9QQVJBTShwb2ludGVyR1BSKTsKLSNlbmRpZgogfQogCiAvLyBXZSB3aWxsIGp1
bXAgaGVyZSBpZiB0aGUgSklUIGNvZGUgdHJpZXMgdG8gbWFrZSBhIGNhbGwsIGJ1dCB0aGUKQEAg
LTM3Myw3ICszNzAsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUZvckdl
CiAjZWxzZQogI2Vycm9yICJKSVQgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLiIKICAg
ICBVTlVTRURfUEFSQU0oZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pOwotICAgIGJyZWFrcG9p
bnQoKTsKKyAgICBhYm9ydFdpdGhSZWFzb24oVEdOb3RTdXBwb3J0ZWQpOwogI2VuZGlmCiAKICAg
ICAvLyBDaGVjayBmb3IgYW4gZXhjZXB0aW9uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJySklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySklULmNwcAkocmV2aXNpb24gMTY4Njg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyckpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MzksMTYgKzE2MzksMTQgQEAg
Y2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbQogICAgICAgICAgICAgICAg
IGNvbnN0IFJlZ2lzdGVySUQgaW5kZXhUZW1wb3JhcnkgPSByZWdUMDsKICAgICAgICAgICAgICAg
ICBBU1NFUlQodGVybS0+cXVhbnRpdHlDb3VudCA9PSAxKTsKIAotI2lmbmRlZiBOREVCVUcKICAg
ICAgICAgICAgICAgICAvLyBSdW50aW1lIEFTU0VSVCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbmVz
dGVkIGFsdGVybmF0aXZlIGhhbmRsZWQgdGhlCiAgICAgICAgICAgICAgICAgLy8gIm5vIGlucHV0
IGNvbnN1bWVkIiBjaGVjay4KLSAgICAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBl
ICE9IFF1YW50aWZpZXJGaXhlZENvdW50ICYmICF0ZXJtLT5wYXJlbnRoZXNlcy5kaXNqdW5jdGlv
bi0+bV9taW5pbXVtU2l6ZSkgeworICAgICAgICAgICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVE
ICYmIHRlcm0tPnF1YW50aXR5VHlwZSAhPSBRdWFudGlmaWVyRml4ZWRDb3VudCAmJiAhdGVybS0+
cGFyZW50aGVzZXMuZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemUpIHsKICAgICAgICAgICAgICAg
ICAgICAgSnVtcCBwYXN0QnJlYWtwb2ludDsKICAgICAgICAgICAgICAgICAgICAgcGFzdEJyZWFr
cG9pbnQgPSBicmFuY2gzMihOb3RFcXVhbCwgaW5kZXgsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVn
aXN0ZXIsIHRlcm0tPmZyYW1lTG9jYXRpb24gKiBzaXplb2Yodm9pZCopKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrcG9pbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgYWJvcnRXaXRoUmVh
c29uKFlBUlJOb0lucHV0Q29uc3VtZWQpOwogICAgICAgICAgICAgICAgICAgICBwYXN0QnJlYWtw
b2ludC5saW5rKHRoaXMpOwogICAgICAgICAgICAgICAgIH0KLSNlbmRpZgogCiAgICAgICAgICAg
ICAgICAgLy8gSWYgdGhlIHBhcmVudGhlc2UgYXJlIGNhcHR1cmluZywgc3RvcmUgdGhlIGVuZGlu
ZyBpbmRleCB2YWx1ZSB0byB0aGUKICAgICAgICAgICAgICAgICAvLyBjYXB0dXJlcyBhcnJheSwg
b2Zmc2V0dGluZyBhcyBuZWNlc3NhcnkuCkBAIC0xNjk1LDE2ICsxNjkzLDE2IEBAIGNsYXNzIFlh
cnJHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW0KICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGNhc2UgT3BQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEVuZDogewogICAgICAgICAg
ICAgICAgIFlhcnJPcCYgYmVnaW5PcCA9IG1fb3BzW29wLm1fcHJldmlvdXNPcF07Ci0jaWZuZGVm
IE5ERUJVRwotICAgICAgICAgICAgICAgIFBhdHRlcm5UZXJtKiB0ZXJtID0gb3AubV90ZXJtOwot
Ci0gICAgICAgICAgICAgICAgLy8gUnVudGltZSBBU1NFUlQgdG8gbWFrZSBzdXJlIHRoYXQgdGhl
IG5lc3RlZCBhbHRlcm5hdGl2ZSBoYW5kbGVkIHRoZQotICAgICAgICAgICAgICAgIC8vICJubyBp
bnB1dCBjb25zdW1lZCIgY2hlY2suCi0gICAgICAgICAgICAgICAgSnVtcCBwYXN0QnJlYWtwb2lu
dDsKLSAgICAgICAgICAgICAgICBwYXN0QnJlYWtwb2ludCA9IGJyYW5jaDMyKE5vdEVxdWFsLCBp
bmRleCwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgdGVybS0+ZnJhbWVMb2NhdGlvbiAq
IHNpemVvZih2b2lkKikpKTsKLSAgICAgICAgICAgICAgICBicmVha3BvaW50KCk7Ci0gICAgICAg
ICAgICAgICAgcGFzdEJyZWFrcG9pbnQubGluayh0aGlzKTsKLSNlbmRpZgorICAgICAgICAgICAg
ICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgICAgICAgICAgICAgIFBhdHRlcm5U
ZXJtKiB0ZXJtID0gb3AubV90ZXJtOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICAgICAgLy8gUnVudGltZSBBU1NFUlQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG5lc3RlZCBh
bHRlcm5hdGl2ZSBoYW5kbGVkIHRoZQorICAgICAgICAgICAgICAgICAgICAvLyAibm8gaW5wdXQg
Y29uc3VtZWQiIGNoZWNrLgorICAgICAgICAgICAgICAgICAgICBKdW1wIHBhc3RCcmVha3BvaW50
OworICAgICAgICAgICAgICAgICAgICBwYXN0QnJlYWtwb2ludCA9IGJyYW5jaDMyKE5vdEVxdWFs
LCBpbmRleCwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgdGVybS0+ZnJhbWVMb2NhdGlv
biAqIHNpemVvZih2b2lkKikpKTsKKyAgICAgICAgICAgICAgICAgICAgYWJvcnRXaXRoUmVhc29u
KFlBUlJOb0lucHV0Q29uc3VtZWQpOworICAgICAgICAgICAgICAgICAgICBwYXN0QnJlYWtwb2lu
dC5saW5rKHRoaXMpOworICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIC8vIFdl
IGtub3cgdGhhdCB0aGUgbWF0Y2ggaXMgbm9uLXplcm8sIHdlIGNhbiBhY2NlcHQgaXQgIGFuZAog
ICAgICAgICAgICAgICAgIC8vIGxvb3AgYmFjayB1cCB0byB0aGUgaGVhZCBvZiB0aGUgc3VicGF0
dGVybi4K
</data>
<flag name="review"
          id="255845"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231410</attachid>
            <date>2014-05-13 15:11:34 -0700</date>
            <delta_ts>2014-05-13 16:32:05 -0700</delta_ts>
            <desc>a version that builds</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>45172</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY4NzI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgxIEBA
CisyMDE0LTA1LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SklUIGJyZWFrcG9pbnRzIHNob3VsZCBiZSBtb3JlIGluZm9ybWF0aXZlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzI4ODIKKworICAgICAgICBSZXZp
ZXdlZCBieSBPbGl2ZXIgSHVudC4KKyAgICAgICAgCisgICAgICAgIEludHJvZHVjZSB0aGUgbm90
aW9uIG9mIGFuIEFib3J0UmVhc29uLCB3aGljaCBpcyBhIG5pY2UgZW51bWVyYXRpb24gb2YgY29k
ZWQgYXNzZXJ0aW9uCisgICAgICAgIGZhaWx1cmUgbmFtZXMuIFRoaXMgbWVhbnMgdGhhdCBhbGwg
eW91IG5lZWQgdG8gZmlndXJlIG91dCB3aHkgdGhlIEpJVCBTSUdUUkFQJ2QgaXMgdG8gbG9vawor
ICAgICAgICBhdCB0aGF0IHBsYXRmb3JtJ3MgYWJvcnQgcmVhc29uIHJlZ2lzdGVyIChyMTEgb24g
WDg2LTY0IGZvciBleGFtcGxlKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9BYm9ydFJlYXNvbi5oOiBB
ZGRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyQVJNNjQ6OmFib3J0V2l0aFJlYXNvbik6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNdjcuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12
Nzo6YWJvcnRXaXRoUmVhc29uKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODYuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODY6OmFib3J0V2l0aFJlYXNvbik6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjphYm9ydFdpdGhSZWFzb24pOgorICAgICAgICAqIGRm
Zy9ERkdTbG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6OlNsb3dQYXRoR2Vu
ZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YmFpbCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2spOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTWFrZVJvcGUpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpl
bWl0QWxsb2NhdGVCYXNpY1N0b3JhZ2UpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdUaHVua3MuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6Om9zckVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAq
IGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6
OmppdEFzc2VydElzSW50MzIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmppdEFz
c2VydElzSlNJbnQzMik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0
SXNKU051bWJlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNK
U0RvdWJsZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNDZWxs
KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRUYWdzSW5QbGFjZSk6
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SGFzVmFsaWRDYWxsRnJh
bWUpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzTnVsbCk6Cisg
ICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0QXJndW1lbnRDb3VudFNhbmUp
OgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRTdG9yZVN0cnVjdHVyZVdpdGhU
eXBlSW5mbyk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlND
OjpBc3NlbWJseUhlbHBlcnM6OmNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KToKKyAgICAgICAg
KEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8pOiBE
ZWxldGVkLgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRp
Yy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGl2KToKKyAgICAgICAgKiBq
aXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbG9vcF9o
aW50KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNhbGwpOgorICAgICAgICAqIGppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6SklUOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2spOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpKSVQ6OnRlc3RQcm90b3R5cGUpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92
YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQpOgorICAgICAg
ICAqIGppdC9SZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpnZW5lcmF0ZVJlZ2lzdGVyUmVzdG9yYXRpb24pOgorICAgICAgICAqIGppdC9SZXBh
dGNoLmNwcDoKKyAgICAgICAgKEpTQzo6YWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKToKKyAg
ICAgICAgKEpTQzo6bGlua0Nsb3N1cmVDYWxsKToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0
b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6ZW1pdFBvaW50ZXJWYWxpZGF0aW9uKToKKyAgICAgICAg
KEpTQzo6bmF0aXZlRm9yR2VuZXJhdG9yKToKKyAgICAgICAgKiB5YXJyL1lhcnJKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisKIDIwMTQtMDUt
MTIgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNjg2NDIuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE2ODY4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTgxOCw2ICs4MTgsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
QVBJXEpTV3JhcHBlck1hcC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXE9w
YXF1ZUpTU3RyaW5nLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcV2ViS2l0
QXZhaWxhYmlsaXR5LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJc
QWJvcnRSZWFzb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxh
c3NlbWJsZXJcQXNzZW1ibGVyQnVmZmVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
Llxhc3NlbWJsZXJcQ29kZUxvY2F0aW9uLmgiIC8+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMTY4Njg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEw
Nyw2ICsxMDcsNyBAQAogCQkwRjFFM0E0NjE1MzRDQkFGMDAwRjk0NTYgLyogREZHQXJndW1lbnRQ
b3NpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYxRTNBNDMxNTM0Q0JBRDAwMEY5NDU2IC8qIERGR0FyZ3VtZW50UG9zaXRpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjFFM0E0NzE1MzRD
QkI5MDAwRjk0NTYgLyogREZHRG91YmxlRm9ybWF0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMUUzQTQ0MTUzNENCQUQwMDBGOTQ1NiAvKiBE
RkdEb3VibGVGb3JtYXRTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGMUUzQTY3MTUzQTIxRTIwMDBGOTQ1NiAvKiBERkdTaWxlbnRSZWdp
c3RlclNhdmVQbGFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjFFM0E2NTE1M0EyMURGMDAwRjk0NTYgLyogREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxh
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBG
MUZFNTFDMTkyMkEzQkMwMDY5ODdDNSAvKiBBYm9ydFJlYXNvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxRkU1MUIxOTIyQTNCQzAwNjk4N0M1IC8q
IEFib3J0UmVhc29uLmggKi87IH07CiAJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0QiAvKiBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9u
S2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGMjFDMjdGMTRCRUFBODIwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3RTE0QkVBQTgw
MDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMjM1QkQzMTcxNzhFMUMwMDY5MEM3RiAvKiBG
VExFeGl0QXJndW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYyMzVCQkQxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudC5jcHAg
Ki87IH07CkBAIC0xOTE0LDYgKzE5MTUsNyBAQAogCQkwRjFFM0E0NDE1MzRDQkFEMDAwRjk0NTYg
LyogREZHRG91YmxlRm9ybWF0U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gREZHRG91YmxlRm9ybWF0U3RhdGUuaDsgcGF0aCA9IGRmZy9ERkdEb3VibGVGb3JtYXRTdGF0
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjFFM0E1MDE1MzdDMkNCMDAwRjk0
NTYgLyogREZHU2xvd1BhdGhHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gREZHU2xvd1BhdGhHZW5lcmF0b3IuaDsgcGF0aCA9IGRmZy9ERkdTbG93UGF0aEdlbmVy
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjFFM0E2NTE1M0EyMURGMDAw
Rjk0NTYgLyogREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmg7IHBhdGggPSBkZmcvREZH
U2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjFGRTUxQjE5MjJBM0JDMDA2OTg3QzUgLyogQWJvcnRSZWFzb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQWJvcnRSZWFzb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjIxQzI3RTE0QkVBQTgwMDBBREM2
NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBCeXRlY29kZUNvbnZlbnRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGMjM1QkJEMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMRXhpdEFyZ3VtZW50LmNwcDsgcGF0aCA9
IGZ0bC9GVExFeGl0QXJndW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NDg5Niw2ICs0ODk4LDcgQEAKIAkJOTY4OENCMTIwRUQxMkI0RTAwMUQ2NDlGIC8qIGFzc2VtYmxl
ciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYxRkU1
MUIxOTIyQTNCQzAwNjk4N0M1IC8qIEFib3J0UmVhc29uLmggKi8sCiAJCQkJODYwMTYxREYwRjNB
ODNDMTAwRjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAqLywKIAkJCQk4NjQwOTIz
QjE1NkVFRDNCMDA1NjZDQjIgLyogQVJNNjRBc3NlbWJsZXIuaCAqLywKIAkJCQk4NkQzQjJCRjEw
MTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmNwcCAqLywKQEAgLTU4MjUsNiArNTgyOCw3
IEBACiAJCQkJQzIxMTIyRTIxNUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVkRGF0YS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzMjQzOTQxODU2OTcwOTAwMkVENjkyIC8qIGdlbmVyYXRl
LWNvbWJpbmVkLWluc3BlY3Rvci1qc29uLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RTAx
N0I2QjVBQjAwQTdBRTNGIC8qIEdlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEYxRkU1MUMxOTIyQTNCQzAwNjk4N0M1IC8qIEFib3J0UmVhc29uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjJCNjZFMTE3QjZCNUFCMDBBN0FFM0YgLyogR2VuZXJpY1R5cGVkQXJyYXlW
aWV3SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTAxNENBN0RDRDAwODVGM0M2
IC8qIEdldEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMDMzMkM0MThCMDE3NjMw
MDVGOTc5QSAvKiBHZXRCeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fib3J0UmVhc29uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYm9ydFJlYXNvbi5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYm9ydFJlYXNvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBBYm9ydFJlYXNvbl9oCisjZGVmaW5lIEFib3J0UmVhc29u
X2gKKworbmFtZXNwYWNlIEpTQyB7CisKKy8vIEl0J3MgaW1wb3J0YW50IHRvIG5vdCBjaGFuZ2Ug
dGhlIHZhbHVlcyBvZiBleGlzdGluZyBhYm9ydCByZWFzb25zIHVubGVzcyB3ZSByZWFsbHkKKy8v
IGhhdmUgdG8uIEZvciB0aGlzIHJlYXNvbiB0aGVyZSBpcyBhIEJBU0lDLXN0eWxlIG51bWJlcmlu
ZyB0aGF0IHNob3VsZCBhbGxvdyB1cyB0bworLy8gc25lYWsgbmV3IHJlYXNvbnMgaW4gd2l0aG91
dCBjaGFuZ2luZyB0aGUgbnVtYmVyaW5nIG9mIGV4aXN0aW5nIHJlYXNvbnMgLSBhdCBsZWFzdAor
Ly8gZm9yIGEgd2hpbGUuCitlbnVtIEFib3J0UmVhc29uIHsKKyAgICBBSENhbGxGcmFtZU1pc2Fs
aWduZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIDEwLAorICAgIEFISW5kZXhpbmdU
eXBlSXNWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAgMjAsCisgICAgQUhJbnNh
bmVBcmd1bWVudENvdW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICAzMCwKKyAgICBB
SElzTm90Q2VsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIDQwLAor
ICAgIEFISXNOb3RJbnQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAg
NTAsCisgICAgQUhJc05vdEpTRG91YmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9ICA2MCwKKyAgICBBSElzTm90SlNJbnQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gIDcwLAorICAgIEFISXNOb3RKU051bWJlciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAgODAsCisgICAgQUhJc05vdE51bGwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9ICA5MCwKKyAgICBBSFN0YWNrUG9pbnRlck1pc2FsaWduZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gMTAwLAorICAgIEFIU3RydWN0dXJlSURJc1ZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxMTAsCisgICAgQUhUYWdNYXNrTm90SW5QbGFj
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDEyMCwKKyAgICBBSFRhZ1R5cGVOdW1i
ZXJOb3RJblBsYWNlICAgICAgICAgICAgICAgICAgICAgICAgID0gMTMwLAorICAgIEFIVHlwZUlu
Zm9JbmxpbmVUeXBlRmxhZ3NBcmVWYWxpZCAgICAgICAgICAgICAgICAgPSAxNDAsCisgICAgQUhU
eXBlSW5mb0lzVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDE1MCwKKyAg
ICBERkdCYWlsZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMTYw
LAorICAgIERGR0Jhc2ljU3RvcmFnZUFsbG9jYXRvclplcm9TaXplICAgICAgICAgICAgICAgICAg
PSAxNzAsCisgICAgREZHSXNOb3RDZWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IDE4MCwKKyAgICBERkdJbmVmZmVjdGl2ZVdhdGNocG9pbnQgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gMTkwLAorICAgIERGR05lZ2F0aXZlU3RyaW5nTGVuZ3RoICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAyMDAsCisgICAgREZHU2xvd1BhdGhHZW5lcmF0b3JGZWxsVGhyb3Vn
aCAgICAgICAgICAgICAgICAgICA9IDIxMCwKKyAgICBERkdVbnJlYWNoYWJsZUJhc2ljQmxvY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gMjIwLAorICAgIERGR1VucmVhc29uYWJsZU9TUkVu
dHJ5SnVtcERlc3RpbmF0aW9uICAgICAgICAgICAgPSAyMzAsCisgICAgSklURGl2T3BlcmFuZHNB
cmVOb3ROdW1iZXJzICAgICAgICAgICAgICAgICAgICAgICA9IDI0MCwKKyAgICBKSVRHZXRCeVZh
bFJlc3VsdElzTm90RW1wdHkgICAgICAgICAgICAgICAgICAgICAgID0gMjUwLAorICAgIEpJVE5v
dFN1cHBvcnRlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAyNjAsCisgICAg
SklUT2Zmc2V0SXNOb3RPdXRPZkxpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDI3MCwK
KyAgICBKSVRVbnJlYXNvbmFibGVMb29wSGludEp1bXBUYXJnZXQgICAgICAgICAgICAgICAgID0g
MjgwLAorICAgIFJQV1VucmVhc29uYWJsZUp1bXBUYXJnZXQgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAyOTAsCisgICAgUmVwYXRjaEluZWZmZWN0aXZlV2F0Y2hwb2ludCAgICAgICAgICAgICAg
ICAgICAgICA9IDMwMCwKKyAgICBSZXBhdGNoSW5zYW5lQXJndW1lbnRDb3VudCAgICAgICAgICAg
ICAgICAgICAgICAgID0gMzEwLAorICAgIFRHSW52YWxpZFBvaW50ZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAzMjAsCisgICAgVEdOb3RTdXBwb3J0ZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IDMzMCwKKyAgICBZQVJSTm9JbnB1dENvbnN1bWVkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMzQwLAorfTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBBYm9ydFJlYXNvbl9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCShy
ZXZpc2lvbiAxNjg2ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3Ry
YWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjYs
NyBAQAogI2lmbmRlZiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyX2gKICNkZWZpbmUgQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlcl9oCiAKKyNpbmNsdWRlICJBYm9ydFJlYXNvbi5oIgogI2luY2x1ZGUgIkFz
c2VtYmxlckJ1ZmZlci5oIgogI2luY2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgIk1h
Y3JvQXNzZW1ibGVyQ29kZVJlZi5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHJldmlzaW9uIDE2ODY4OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC04MDYsNiArODA2LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGxhYmVsOwogICAgIH0KIAorICAgIHZvaWQgYWJvcnRXaXRoUmVhc29uKEFib3J0UmVhc29uIHJl
YXNvbikKKyAgICB7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKHJlYXNvbiksIGRhdGFUZW1w
UmVnaXN0ZXIpOworICAgICAgICBicmVha3BvaW50KCk7CisgICAgfQorCiAgICAgQ29udmVydGli
bGVMb2FkTGFiZWwgY29udmVydGlibGVMb2FkUHRyKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKICAgICAgICAgQ29udmVydGlibGVMb2FkTGFiZWwgcmVzdWx0KHRoaXMp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TXY3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTXY3LmgJKHJldmlzaW9uIDE2ODY4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIFVuaXZl
cnNpdHkgb2YgU3plZ2VkCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC02MzIsNiArNjMyLDEyIEBAIHB1
YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubGRyKGRlc3QsIGFkZHJlc3NUZW1wUmVnaXN0ZXIs
IEFSTVRodW1iSW1tZWRpYXRlOjptYWtlVUludDE2KDApKTsKICAgICB9CiAgICAgCisgICAgdm9p
ZCBhYm9ydFdpdGhSZWFzb24oQWJvcnRSZWFzb24gcmVhc29uKQorICAgIHsKKyAgICAgICAgbW92
ZShUcnVzdGVkSW1tMzIocmVhc29uKSwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIGJyZWFr
cG9pbnQoKTsKKyAgICB9CisKICAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbCBjb252ZXJ0aWJsZUxv
YWRQdHIoQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBD
b252ZXJ0aWJsZUxvYWRMYWJlbCByZXN1bHQodGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCShyZXZpc2lvbiAx
Njg2ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwOCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTExMSw2ICsxMTEsMTIgQEAgcHVibGljOgogICAgICAgICBt
X2Fzc2VtYmxlci5tb3Z6YmxfbXIoYWRkcmVzcywgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBh
Ym9ydFdpdGhSZWFzb24oQWJvcnRSZWFzb24gcmVhc29uKQorICAgIHsKKyAgICAgICAgbW92ZShU
cnVzdGVkSW1tMzIocmVhc29uKSwgWDg2UmVnaXN0ZXJzOjplYXgpOworICAgICAgICBicmVha3Bv
aW50KCk7CisgICAgfQorCiAgICAgQ29udmVydGlibGVMb2FkTGFiZWwgY29udmVydGlibGVMb2Fk
UHRyKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQ29u
dmVydGlibGVMb2FkTGFiZWwgcmVzdWx0ID0gQ29udmVydGlibGVMb2FkTGFiZWwodGhpcyk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4Nl82NC5oCShyZXZpc2lvbiAxNjg2ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMiwgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTYyOSw2ICs2MjksMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcChtX2Fz
c2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQogCisgICAgdm9pZCBhYm9y
dFdpdGhSZWFzb24oQWJvcnRSZWFzb24gcmVhc29uKQorICAgIHsKKyAgICAgICAgbW92ZShUcnVz
dGVkSW1tMzIocmVhc29uKSwgWDg2UmVnaXN0ZXJzOjpyMTEpOworICAgICAgICBicmVha3BvaW50
KCk7CisgICAgfQorCiAgICAgQ29udmVydGlibGVMb2FkTGFiZWwgY29udmVydGlibGVMb2FkUHRy
KEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQ29udmVy
dGlibGVMb2FkTGFiZWwgcmVzdWx0ID0gQ29udmVydGlibGVMb2FkTGFiZWwodGhpcyk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5o
CShyZXZpc2lvbiAxNjg2ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQ
YXRoR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgog
ICAgICAgICBqaXQtPm1fY3VycmVudE5vZGUgPSBtX2N1cnJlbnROb2RlOwogICAgICAgICBnZW5l
cmF0ZUludGVybmFsKGppdCk7CiAgICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKQotICAgICAg
ICAgICAgaml0LT5tX2ppdC5icmVha3BvaW50KCk7IC8vIG1ha2Ugc3VyZSB0aGF0IHRoZSBnZW5l
cmF0b3IganVtcHMgYmFjayB0byBzb21ld2hlcmUKKyAgICAgICAgICAgIGppdC0+bV9qaXQuYWJv
cnRXaXRoUmVhc29uKERGR1Nsb3dQYXRoR2VuZXJhdG9yRmVsbFRocm91Z2gpOwogICAgIH0KICAg
ICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbGFiZWwoKSBjb25zdCB7IHJldHVybiBtX2xhYmVsOyB9
CiAgICAgdmlydHVhbCBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsKCkgY29uc3QKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAkocmV2aXNpb24gMTY4Njg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcwOSw3ICszNzA5LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogI2lmICFBU1NFUlRf
RElTQUJMRUQKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNPSyA9IG1faml0LmJyYW5jaFB0
cihKSVRDb21waWxlcjo6RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKG9wMS5ncHIoKSwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihub2RlLT5zdHJ1Y3R1cmUo
KSkpOwotICAgICAgICBtX2ppdC5icmVha3BvaW50KCk7CisgICAgICAgIG1faml0LmFib3J0V2l0
aFJlYXNvbihERkdJbmVmZmVjdGl2ZVdhdGNocG9pbnQpOwogICAgICAgICBpc09LLmxpbmsoJm1f
aml0KTsKICNlbHNlCiAgICAgICAgIHNwZWN1bGF0ZUNlbGwobm9kZS0+Y2hpbGQxKCkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCShyZXZpc2lvbiAxNjg2ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDM2LDcgKzEwMzYsNyBAQCBH
UFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsCiAgICAgICAgIG1fZ3Bycy5s
b2NrKGdwcik7CiAgICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CiAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCBjaGVja0NlbGwgPSBicmFuY2hJc0NlbGwoSlNWYWx1ZVJlZ3Mo
Z3ByKSk7Ci0gICAgICAgICAgICBtX2ppdC5icmVha3BvaW50KCk7CisgICAgICAgICAgICBtX2pp
dC5hYm9ydFdpdGhSZWFzb24oREZHSXNOb3RDZWxsKTsKICAgICAgICAgICAgIGNoZWNrQ2VsbC5s
aW5rKCZtX2ppdCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGdwcjsKQEAgLTM3ODIsNyAr
Mzc4Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgICAgIEpJVENvbXBpbGVyOjpFcXVhbCwgCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRk
cmVzcyhvcDEuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAogICAgICAgICAg
ICAgbm9kZS0+c3RydWN0dXJlKCkpOwotICAgICAgICBtX2ppdC5icmVha3BvaW50KCk7CisgICAg
ICAgIG1faml0LmFib3J0V2l0aFJlYXNvbihERkdJbmVmZmVjdGl2ZVdhdGNocG9pbnQpOwogICAg
ICAgICBpc09LLmxpbmsoJm1faml0KTsKICNlbHNlCiAgICAgICAgIHNwZWN1bGF0ZUNlbGwobm9k
ZS0+Y2hpbGQxKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE2ODY4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQxLDcg
KzEzNDEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTW92SGludChOb2RlCiB2b2lk
IFNwZWN1bGF0aXZlSklUOjpiYWlsKCkKIHsKICAgICBtX2NvbXBpbGVPa2F5ID0gdHJ1ZTsKLSAg
ICBtX2ppdC5icmVha3BvaW50KCk7CisgICAgbV9qaXQuYWJvcnRXaXRoUmVhc29uKERGR0JhaWxl
ZCk7CiAgICAgY2xlYXJHZW5lcmF0aW9uSW5mbygpOwogfQogCkBAIC0xMzYwLDcgKzEzNjAsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrCiAgICAgICAgIC8vIERv
bid0IGdlbmVyYXRlIGNvZGUgZm9yIGJhc2ljIGJsb2NrcyB0aGF0IGFyZSB1bnJlYWNoYWJsZSBh
Y2NvcmRpbmcgdG8gQ0ZBLgogICAgICAgICAvLyBCdXQgdG8gYmUgc3VyZSB0aGF0IG5vYm9keSBo
YXMgZ2VuZXJhdGVkIGEganVtcCB0byB0aGlzIGJsb2NrLCBkcm9wIGluIGEKICAgICAgICAgLy8g
YnJlYWtwb2ludCBoZXJlLgotICAgICAgICBtX2ppdC5icmVha3BvaW50KCk7CisgICAgICAgIG1f
aml0LmFib3J0V2l0aFJlYXNvbihERkdVbnJlYWNoYWJsZUJhc2ljQmxvY2spOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0yODIxLDcgKzI4MjEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlTWFrZVJvcGUoTm9kCiAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKICAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgb2sgPSBtX2ppdC5icmFuY2gzMigKICAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpHcmVhdGVyVGhhbk9yRXF1YWwsIGFsbG9jYXRvckdQUiwgVHJ1c3RlZEltbTMy
KDApKTsKLSAgICAgICAgbV9qaXQuYnJlYWtwb2ludCgpOworICAgICAgICBtX2ppdC5hYm9ydFdp
dGhSZWFzb24oREZHTmVnYXRpdmVTdHJpbmdMZW5ndGgpOwogICAgICAgICBvay5saW5rKCZtX2pp
dCk7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBudW1PcEdQUnM7ICsraSkg
ewpAQCAtMjgzNyw3ICsyODM3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1ha2VS
b3BlKE5vZAogICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CiAgICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wIG9rID0gbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6R3Jl
YXRlclRoYW5PckVxdWFsLCBhbGxvY2F0b3JHUFIsIFRydXN0ZWRJbW0zMigwKSk7Ci0gICAgICAg
IG1faml0LmJyZWFrcG9pbnQoKTsKKyAgICAgICAgbV9qaXQuYWJvcnRXaXRoUmVhc29uKERGR05l
Z2F0aXZlU3RyaW5nTGVuZ3RoKTsKICAgICAgICAgb2subGluaygmbV9qaXQpOwogICAgIH0KICAg
ICBtX2ppdC5zdG9yZTMyKGFsbG9jYXRvckdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0
R1BSLCBKU1N0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTY4Njg5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTQzLDcgKzIxNDMsNyBAQCBwdWJsaWM6CiAjaWZuZGVmIE5ERUJVRwogICAgICAg
ICBtX2ppdC5tb3ZlKHNpemUsIHJlc3VsdEdQUik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIG5vblplcm9TaXplID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpOb25a
ZXJvLCByZXN1bHRHUFIpOwotICAgICAgICBtX2ppdC5icmVha3BvaW50KCk7CisgICAgICAgIG1f
aml0LmFib3J0V2l0aFJlYXNvbihERkdCYXNpY1N0b3JhZ2VBbGxvY2F0b3JaZXJvU2l6ZSk7CiAg
ICAgICAgIG5vblplcm9TaXplLmxpbmsoJm1faml0KTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCShyZXZpc2lvbiAxNjg2ODkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
Nyw3ICsxMjcsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRW50cnlUaHVua0dlbmVyCiAg
ICAgCiAgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVn
VDAsIG9mZnNldE9mVGFyZ2V0UEMpLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgb2sgPSBqaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwgR1BSSW5m
bzo6cmVnVDEsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lk
Kj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDEwMDApKSkpOwotICAgIGppdC5icmVha3BvaW50KCk7
CisgICAgaml0LmFib3J0V2l0aFJlYXNvbihERkdVbnJlYXNvbmFibGVPU1JFbnRyeUp1bXBEZXN0
aW5hdGlvbik7CiAgICAgb2subGluaygmaml0KTsKICAgICBqaXQuanVtcChHUFJJbmZvOjpyZWdU
MSk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuY3BwCShyZXZpc2lvbiAxNjg2ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0Fzc2VtYmx5SGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDcgKzg0LDcgQEAgdm9p
ZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSW50MzIoRwogewogI2lmIENQVShYODZfNjQp
CiAgICAgSnVtcCBjaGVja0ludDMyID0gYnJhbmNoNjQoQmVsb3dPckVxdWFsLCBncHIsIFRydXN0
ZWRJbW02NChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4RkZGRkZGRkZ1KSkpOwotICAgIGJyZWFr
cG9pbnQoKTsKKyAgICBhYm9ydFdpdGhSZWFzb24oQUhJc05vdEludDMyKTsKICAgICBjaGVja0lu
dDMyLmxpbmsodGhpcyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShncHIpOwpAQCAtOTQsMTQg
Kzk0LDE0IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRJc0ludDMyKEcKIHZvaWQg
QXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRJc0pTSW50MzIoR1BSUmVnIGdwcikKIHsKICAgICBK
dW1wIGNoZWNrSlNJbnQzMiA9IGJyYW5jaDY0KEFib3ZlT3JFcXVhbCwgZ3ByLCBHUFJJbmZvOjp0
YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgIGJyZWFrcG9pbnQoKTsKKyAgICBhYm9ydFdpdGhS
ZWFzb24oQUhJc05vdEpTSW50MzIpOwogICAgIGNoZWNrSlNJbnQzMi5saW5rKHRoaXMpOwogfQog
CiB2b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNKU051bWJlcihHUFJSZWcgZ3ByKQog
ewogICAgIEp1bXAgY2hlY2tKU051bWJlciA9IGJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6
Tm9uWmVybywgZ3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgIGJyZWFr
cG9pbnQoKTsKKyAgICBhYm9ydFdpdGhSZWFzb24oQUhJc05vdEpTTnVtYmVyKTsKICAgICBjaGVj
a0pTTnVtYmVyLmxpbmsodGhpcyk7CiB9CiAKQEAgLTExMCwyNSArMTEwLDI2IEBAIHZvaWQgQXNz
ZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRJc0pTRG91YmwKICAgICBKdW1wIGNoZWNrSlNJbnQzMiA9
IGJyYW5jaDY0KEFib3ZlT3JFcXVhbCwgZ3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIpOwogICAgIEp1bXAgY2hlY2tKU051bWJlciA9IGJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxl
cjo6Tm9uWmVybywgZ3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwogICAgIGNo
ZWNrSlNJbnQzMi5saW5rKHRoaXMpOwotICAgIGJyZWFrcG9pbnQoKTsKKyAgICBhYm9ydFdpdGhS
ZWFzb24oQUhJc05vdEpTRG91YmxlKTsKICAgICBjaGVja0pTTnVtYmVyLmxpbmsodGhpcyk7CiB9
CiAKIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRJc0NlbGwoR1BSUmVnIGdwcikKIHsK
ICAgICBKdW1wIGNoZWNrQ2VsbCA9IGJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywg
Z3ByLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwotICAgIGJyZWFrcG9pbnQoKTsKKyAgICBh
Ym9ydFdpdGhSZWFzb24oQUhJc05vdENlbGwpOwogICAgIGNoZWNrQ2VsbC5saW5rKHRoaXMpOwog
fQogCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0VGFnc0luUGxhY2UoKQogewogICAg
IEp1bXAgb2sgPSBicmFuY2g2NChFcXVhbCwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVy
LCBUcnVzdGVkSW1tNjQoVGFnVHlwZU51bWJlcikpOworICAgIGFib3J0V2l0aFJlYXNvbihBSFRh
Z1R5cGVOdW1iZXJOb3RJblBsYWNlKTsKICAgICBicmVha3BvaW50KCk7CiAgICAgb2subGluayh0
aGlzKTsKICAgICAKICAgICBvayA9IGJyYW5jaDY0KEVxdWFsLCBHUFJJbmZvOjp0YWdNYXNrUmVn
aXN0ZXIsIFRydXN0ZWRJbW02NChUYWdNYXNrKSk7Ci0gICAgYnJlYWtwb2ludCgpOworICAgIGFi
b3J0V2l0aFJlYXNvbihBSFRhZ01hc2tOb3RJblBsYWNlKTsKICAgICBvay5saW5rKHRoaXMpOwog
fQogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTE0MCw3ICsxNDEsNyBAQCB2b2lkIEFzc2Vt
Ymx5SGVscGVyczo6aml0QXNzZXJ0SXNJbnQzMihHCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6aml0
QXNzZXJ0SXNKU0ludDMyKEdQUlJlZyBncHIpCiB7CiAgICAgSnVtcCBjaGVja0pTSW50MzIgPSBi
cmFuY2gzMihFcXVhbCwgZ3ByLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKLSAg
ICBicmVha3BvaW50KCk7CisgICAgYWJvcnRXaXRoUmVhc29uKEFISXNOb3RKU0ludDMyKTsKICAg
ICBjaGVja0pTSW50MzIubGluayh0aGlzKTsKIH0KIApAQCAtMTQ4LDcgKzE0OSw3IEBAIHZvaWQg
QXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRJc0pTTnVtYmUKIHsKICAgICBKdW1wIGNoZWNrSlNJ
bnQzMiA9IGJyYW5jaDMyKEVxdWFsLCBncHIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRh
ZykpOwogICAgIEp1bXAgY2hlY2tKU0RvdWJsZSA9IGJyYW5jaDMyKEJlbG93LCBncHIsIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKTsKLSAgICBicmVha3BvaW50KCk7CisgICAgYWJv
cnRXaXRoUmVhc29uKEFISXNOb3RKU051bWJlcik7CiAgICAgY2hlY2tKU0ludDMyLmxpbmsodGhp
cyk7CiAgICAgY2hlY2tKU0RvdWJsZS5saW5rKHRoaXMpOwogfQpAQCAtMTU2LDE0ICsxNTcsMTQg
QEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSlNOdW1iZQogdm9pZCBBc3NlbWJs
eUhlbHBlcnM6OmppdEFzc2VydElzSlNEb3VibGUoR1BSUmVnIGdwcikKIHsKICAgICBKdW1wIGNo
ZWNrSlNEb3VibGUgPSBicmFuY2gzMihCZWxvdywgZ3ByLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
TG93ZXN0VGFnKSk7Ci0gICAgYnJlYWtwb2ludCgpOworICAgIGFib3J0V2l0aFJlYXNvbihBSElz
Tm90SlNEb3VibGUpOwogICAgIGNoZWNrSlNEb3VibGUubGluayh0aGlzKTsKIH0KIAogdm9pZCBB
c3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzQ2VsbChHUFJSZWcgZ3ByKQogewogICAgIEp1bXAg
Y2hlY2tDZWxsID0gYnJhbmNoMzIoRXF1YWwsIGdwciwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNl
bGxUYWcpKTsKLSAgICBicmVha3BvaW50KCk7CisgICAgYWJvcnRXaXRoUmVhc29uKEFISXNOb3RD
ZWxsKTsKICAgICBjaGVja0NlbGwubGluayh0aGlzKTsKIH0KIApAQCAtMTc1LDI1ICsxNzYsNTQg
QEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydFRhZ3NJblBsYQogdm9pZCBBc3NlbWJs
eUhlbHBlcnM6OmppdEFzc2VydEhhc1ZhbGlkQ2FsbEZyYW1lKCkKIHsKICAgICBKdW1wIGNoZWNr
Q0ZSID0gYnJhbmNoVGVzdFB0cihaZXJvLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgVHJ1
c3RlZEltbTMyKDcpKTsKLSAgICBicmVha3BvaW50KCk7CisgICAgYWJvcnRXaXRoUmVhc29uKEFI
Q2FsbEZyYW1lTWlzYWxpZ25lZCk7CiAgICAgY2hlY2tDRlIubGluayh0aGlzKTsKIH0KIAogdm9p
ZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzTnVsbChHUFJSZWcgZ3ByKQogewogICAgIEp1
bXAgY2hlY2tOdWxsID0gYnJhbmNoVGVzdFB0cihaZXJvLCBncHIpOwotICAgIGJyZWFrcG9pbnQo
KTsKKyAgICBhYm9ydFdpdGhSZWFzb24oQUhJc05vdE51bGwpOwogICAgIGNoZWNrTnVsbC5saW5r
KHRoaXMpOwogfQogCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0QXJndW1lbnRDb3Vu
dFNhbmUoKQogewogICAgIEp1bXAgb2sgPSBicmFuY2gzMihCZWxvdywgcGF5bG9hZEZvcihKU1N0
YWNrOjpBcmd1bWVudENvdW50KSwgVHJ1c3RlZEltbTMyKDEwMDAwMDAwKSk7Ci0gICAgYnJlYWtw
b2ludCgpOworICAgIGFib3J0V2l0aFJlYXNvbihBSEluc2FuZUFyZ3VtZW50Q291bnQpOwogICAg
IG9rLmxpbmsodGhpcyk7CiB9CiAjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAogCit2b2lkIEFz
c2VtYmx5SGVscGVyczo6ZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKEFzc2VtYmx5SGVs
cGVycyYgaml0LCBUcnVzdGVkSW1tUHRyIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCBkZXN0KQorewor
ICAgIGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJlUHRyID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3Ry
dWN0dXJlKj4oc3RydWN0dXJlLm1fdmFsdWUpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaml0
LnN0b3JlNjQoVHJ1c3RlZEltbTY0KHN0cnVjdHVyZVB0ci0+aWRCbG9iKCkpLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKyAgICBp
ZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBKdW1wIGNvcnJlY3RTdHJ1Y3R1cmUgPSBq
aXQuYnJhbmNoMzIoRXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVQdHItPmlkKCkpKTsK
KyAgICAgICAgaml0LmFib3J0V2l0aFJlYXNvbihBSFN0cnVjdHVyZUlESXNWYWxpZCk7CisgICAg
ICAgIGNvcnJlY3RTdHJ1Y3R1cmUubGluaygmaml0KTsKKworICAgICAgICBKdW1wIGNvcnJlY3RJ
bmRleGluZ1R5cGUgPSBqaXQuYnJhbmNoOChFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
ZGVzdCwgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihzdHJ1Y3R1
cmVQdHItPmluZGV4aW5nVHlwZSgpKSk7CisgICAgICAgIGppdC5hYm9ydFdpdGhSZWFzb24oQUhJ
bmRleGluZ1R5cGVJc1ZhbGlkKTsKKyAgICAgICAgY29ycmVjdEluZGV4aW5nVHlwZS5saW5rKCZq
aXQpOworCisgICAgICAgIEp1bXAgY29ycmVjdFR5cGUgPSBqaXQuYnJhbmNoOChFcXVhbCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSks
IFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVQdHItPnR5cGVJbmZvKCkudHlwZSgpKSk7CisgICAgICAg
IGppdC5hYm9ydFdpdGhSZWFzb24oQUhUeXBlSW5mb0lzVmFsaWQpOworICAgICAgICBjb3JyZWN0
VHlwZS5saW5rKCZqaXQpOworCisgICAgICAgIEp1bXAgY29ycmVjdEZsYWdzID0gaml0LmJyYW5j
aDgoRXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6dHlwZUluZm9G
bGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+dHlwZUluZm8oKS5pbmxp
bmVUeXBlRmxhZ3MoKSkpOworICAgICAgICBqaXQuYWJvcnRXaXRoUmVhc29uKEFIVHlwZUluZm9J
bmxpbmVUeXBlRmxhZ3NBcmVWYWxpZCk7CisgICAgICAgIGNvcnJlY3RGbGFncy5saW5rKCZqaXQp
OworICAgIH0KKyNlbHNlCisgICAgLy8gRG8gYSAzMi1iaXQgd2lkZSBzdG9yZSB0byBpbml0aWFs
aXplIHRoZSBjZWxsJ3MgZmllbGRzLgorICAgIGppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihzdHJ1
Y3R1cmVQdHItPm9iamVjdEluaXRpYWxpemF0aW9uQmxvYigpKSwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoZGVzdCwgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSkpOworICAgIGppdC5zdG9y
ZVB0cihzdHJ1Y3R1cmUsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3Ry
dWN0dXJlSURPZmZzZXQoKSkpOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMTY4Njg5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBA
QCBwdWJsaWM6CiAgICAgICAgIC8vIFRoaXMgY2hlY2sgaXMgYm90aCB1bm5lZWRlZCBhbmQgaGFy
ZGVyIHRvIHdyaXRlIGNvcnJlY3RseSBmb3IgQVJNNjQKICNpZiAhZGVmaW5lZChOREVCVUcpICYm
ICFDUFUoQVJNNjQpCiAgICAgICAgIEp1bXAgc3RhY2tQb2ludGVyQWxpZ25lZCA9IGJyYW5jaFRl
c3RQdHIoWmVybywgc3RhY2tQb2ludGVyUmVnaXN0ZXIsIFRydXN0ZWRJbW0zMigweGYpKTsKLSAg
ICAgICAgYnJlYWtwb2ludCgpOworICAgICAgICBhYm9ydFdpdGhSZWFzb24oQUhTdGFja1BvaW50
ZXJNaXNhbGlnbmVkKTsKICAgICAgICAgc3RhY2tQb2ludGVyQWxpZ25lZC5saW5rKHRoaXMpOwog
I2VuZGlmCiAgICAgfQpAQCAtNjI5LDM0ICs2MjksNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9
CiAKLSAgICBzdGF0aWMgdm9pZCBlbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oQXNzZW1i
bHlIZWxwZXJzJiBqaXQsIFRydXN0ZWRJbW1QdHIgc3RydWN0dXJlLCBSZWdpc3RlcklEIGRlc3Qp
Ci0gICAgewotICAgICAgICBjb25zdCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZVB0ciA9IHN0YXRpY19j
YXN0PGNvbnN0IFN0cnVjdHVyZSo+KHN0cnVjdHVyZS5tX3ZhbHVlKTsKLSNpZiBVU0UoSlNWQUxV
RTY0KQotICAgICAgICBqaXQuc3RvcmU2NChUcnVzdGVkSW1tNjQoc3RydWN0dXJlUHRyLT5pZEJs
b2IoKSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSkpOwotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgSnVtcCBjb3JyZWN0U3RydWN0dXJl
ID0gaml0LmJyYW5jaDMyKEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoc3RydWN0dXJlUHRyLT5pZCgp
KSk7Ci0gICAgICAgIGppdC5icmVha3BvaW50KCk7Ci0gICAgICAgIGNvcnJlY3RTdHJ1Y3R1cmUu
bGluaygmaml0KTsKLQotICAgICAgICBKdW1wIGNvcnJlY3RJbmRleGluZ1R5cGUgPSBqaXQuYnJh
bmNoOChFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjppbmRleGlu
Z1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVQdHItPmluZGV4aW5nVHlwZSgp
KSk7Ci0gICAgICAgIGppdC5icmVha3BvaW50KCk7Ci0gICAgICAgIGNvcnJlY3RJbmRleGluZ1R5
cGUubGluaygmaml0KTsKLQotICAgICAgICBKdW1wIGNvcnJlY3RUeXBlID0gaml0LmJyYW5jaDgo
RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6dHlwZUluZm9UeXBl
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoc3RydWN0dXJlUHRyLT50eXBlSW5mbygpLnR5cGUoKSkp
OwotICAgICAgICBqaXQuYnJlYWtwb2ludCgpOwotICAgICAgICBjb3JyZWN0VHlwZS5saW5rKCZq
aXQpOwotCi0gICAgICAgIEp1bXAgY29ycmVjdEZsYWdzID0gaml0LmJyYW5jaDgoRXF1YWwsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgp
KSwgVHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3Mo
KSkpOwotICAgICAgICBqaXQuYnJlYWtwb2ludCgpOwotICAgICAgICBjb3JyZWN0RmxhZ3MubGlu
aygmaml0KTsKLSNlbmRpZgotI2Vsc2UKLSAgICAgICAgLy8gRG8gYSAzMi1iaXQgd2lkZSBzdG9y
ZSB0byBpbml0aWFsaXplIHRoZSBjZWxsJ3MgZmllbGRzLgotICAgICAgICBqaXQuc3RvcmUzMihU
cnVzdGVkSW1tMzIoc3RydWN0dXJlUHRyLT5vYmplY3RJbml0aWFsaXphdGlvbkJsb2IoKSksIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkp
KTsKLSAgICAgICAgaml0LnN0b3JlUHRyKHN0cnVjdHVyZSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7Ci0jZW5kaWYKLSAgICB9Cisg
ICAgc3RhdGljIHZvaWQgZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKEFzc2VtYmx5SGVs
cGVycyYgaml0LCBUcnVzdGVkSW1tUHRyIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCBkZXN0KTsKIAog
ICAgIEp1bXAgY2hlY2tNYXJrQnl0ZShHUFJSZWcgY2VsbCkKICAgICB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDE2ODY4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTMwNiwxMCArMzA2LDYgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdExvYWRJbnQzMlRvRG91YmxlKGludCBpbmRleCwgRlBS
ZWdpc3RlcklEIHZhbHVlKTsKICAgICAgICAgSnVtcCBlbWl0SnVtcElmQ2VsbE5vdE9iamVjdChS
ZWdpc3RlcklEIGNlbGxSZWcpOwogCi0gICAgICAgIEp1bXAgYWRkU3RydWN0dXJlVHJhbnNpdGlv
bkNoZWNrKEpTQ2VsbCosIFN0cnVjdHVyZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgUmVnaXN0ZXJJ
RCBzY3JhdGNoKTsKLSAgICAgICAgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soSlND
ZWxsKiwgU3RydWN0dXJlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBKdW1wTGlzdCYgZmFpbHVyZUNh
c2VzLCBSZWdpc3RlcklEIHNjcmF0Y2gpOwotICAgICAgICB2b2lkIHRlc3RQcm90b3R5cGUoSlNW
YWx1ZSwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcywgU3RydWN0dXJlU3R1YkluZm8qKTsKLQogICAg
ICAgICBlbnVtIFdyaXRlQmFycmllck1vZGUgeyBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyLCBT
aG91bGRGaWx0ZXJCYXNlLCBTaG91bGRGaWx0ZXJWYWx1ZSwgU2hvdWxkRmlsdGVyQmFzZUFuZFZh
bHVlIH07CiAgICAgICAgIC8vIHZhbHVlIHJlZ2lzdGVyIGluIHdyaXRlIGJhcnJpZXIgaXMgdXNl
ZCBiZWZvcmUgYW55IHNjcmF0Y2ggcmVnaXN0ZXJzCiAgICAgICAgIC8vIHNvIG1heSBzYWZlbHkg
YmUgdGhlIHNhbWUgYXMgZWl0aGVyIG9mIHRoZSBzY3JhdGNoIHJlZ2lzdGVycy4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAkocmV2aXNpb24gMTY4
Njg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTU1LDkgKzk1NSw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9kaXYo
SW5zdHJ1Y3Rpb24qIGMKICAgICBpbnQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZDsKICAgICBPcGVyYW5kVHlwZXMgdHlwZXMgPSBPcGVyYW5kVHlwZXM6OmZyb21JbnQoY3Vy
cmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CiAgICAgaWYgKHR5cGVzLmZpcnN0KCkuZGVm
aW5pdGVseUlzTnVtYmVyKCkgJiYgdHlwZXMuc2Vjb25kKCkuZGVmaW5pdGVseUlzTnVtYmVyKCkp
IHsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIGJyZWFrcG9pbnQoKTsKLSNlbmRpZgorICAgICAg
ICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkKKyAgICAgICAgICAgIGFib3J0V2l0aFJlYXNvbihKSVRE
aXZPcGVyYW5kc0FyZU5vdE51bWJlcnMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlm
ICghaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVEb3VibGUob3AxKSAmJiAhaXNPcGVyYW5kQ29u
c3RhbnRJbW1lZGlhdGVJbnQob3AxKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMTY4Njg5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDEsNyArMTAxLDcgQEAgSklUOjpDb2RlUmVmIEpJVDo6cHJpdmF0ZUNvbXBpbGVDVElOYXRpdgog
ICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHJlZ1QzKTsKICNlbHNlCiAjZXJy
b3IgIkpJVCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uIgotICAgIGJyZWFrcG9pbnQo
KTsKKyAgICBhYm9ydFdpdGhSZWFzb24oSklUTm90U3VwcG9ydGVkKTsKICNlbmRpZiAvLyBDUFUo
WDg2KQogCiAgICAgLy8gQ2hlY2sgZm9yIGFuIGV4Y2VwdGlvbgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAxNjg2ODkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTA2
LDcgKzExMDYsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbG9vcF9oaW50KEluc3RydWN0CiAg
ICAgICAgIEp1bXAgbm9PcHRpbWl6ZWRFbnRyeSA9IGJyYW5jaFRlc3RQdHIoWmVybywgcmV0dXJu
VmFsdWVHUFIpOwogICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewogICAgICAgICAgICAg
SnVtcCBvayA9IGJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHJlZ1QwLCBUcnVzdGVk
SW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDEwMDApKSkp
OwotICAgICAgICAgICAgYnJlYWtwb2ludCgpOworICAgICAgICAgICAgYWJvcnRXaXRoUmVhc29u
KEpJVFVucmVhc29uYWJsZUxvb3BIaW50SnVtcFRhcmdldCk7CiAgICAgICAgICAgICBvay5saW5r
KHRoaXMpOwogICAgICAgICB9CiAgICAgICAgIGp1bXAocmV0dXJuVmFsdWVHUFIpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwCShyZXZpc2lvbiAxNjg2ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsMTEgKzE2MSwx
MSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKEluc3RydWN0aW9uCiAgICAgCiAgICAg
TGFiZWwgZG9uZSA9IGxhYmVsKCk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgSnVtcCBy
ZXN1bHRPSyA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkVtcHR5VmFsdWVUYWcpKTsKLSAgICBicmVha3BvaW50KCk7Ci0gICAgcmVzdWx0T0subGluayh0
aGlzKTsKLSNlbmRpZgorICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIEp1bXAg
cmVzdWx0T0sgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpFbXB0eVZhbHVlVGFnKSk7CisgICAgICAgIGFib3J0V2l0aFJlYXNvbihKSVRHZXRCeVZhbFJl
c3VsdElzTm90RW1wdHkpOworICAgICAgICByZXN1bHRPSy5saW5rKHRoaXMpOworICAgIH0KIAog
ICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoKTsKICAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwg
cmVnVDApOwpAQCAtNjAxLDExICs2MDEsMTEgQEAgdm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RP
ZmZzZXQoUmVnaXN0ZQogICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbVB0cihKU09iamVjdDo6b2Zm
c2V0T2ZJbmxpbmVTdG9yYWdlKCkgLSAoZmlyc3RPdXRPZkxpbmVPZmZzZXQgLSAyKSAqIHNpemVv
ZihFbmNvZGVkSlNWYWx1ZSkpLCBiYXNlKTsKICAgICAgICAgZG9uZS5saW5rKHRoaXMpOwogICAg
IH0gZWxzZSB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgICAgICBKdW1wIGlzT3V0T2ZMaW5l
ID0gYnJhbmNoMzIoR3JlYXRlclRoYW5PckVxdWFsLCBvZmZzZXQsIFRydXN0ZWRJbW0zMihmaXJz
dE91dE9mTGluZU9mZnNldCkpOwotICAgICAgICBicmVha3BvaW50KCk7Ci0gICAgICAgIGlzT3V0
T2ZMaW5lLmxpbmsodGhpcyk7Ci0jZW5kaWYKKyAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQp
IHsKKyAgICAgICAgICAgIEp1bXAgaXNPdXRPZkxpbmUgPSBicmFuY2gzMihHcmVhdGVyVGhhbk9y
RXF1YWwsIG9mZnNldCwgVHJ1c3RlZEltbTMyKGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KSk7CisgICAg
ICAgICAgICBhYm9ydFdpdGhSZWFzb24oSklUT2Zmc2V0SXNOb3RPdXRPZkxpbmUpOworICAgICAg
ICAgICAgaXNPdXRPZkxpbmUubGluayh0aGlzKTsKKyAgICAgICAgfQogICAgICAgICBsb2FkUHRy
KEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgYmFzZSk7CiAgICAg
ICAgIG5lZzMyKG9mZnNldCk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDE2ODY4OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzksMTEgKzEzOSwxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKEluc3Ry
dWN0aW9uCiAgICAgCiAgICAgTGFiZWwgZG9uZSA9IGxhYmVsKCk7CiAgICAgCi0jaWYgIUFTU0VS
VF9ESVNBQkxFRAotICAgIEp1bXAgcmVzdWx0T0sgPSBicmFuY2hUZXN0NjQoTm9uWmVybywgcmVn
VDApOwotICAgIGJyZWFrcG9pbnQoKTsKLSAgICByZXN1bHRPSy5saW5rKHRoaXMpOwotI2VuZGlm
CisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgSnVtcCByZXN1bHRPSyA9IGJy
YW5jaFRlc3Q2NChOb25aZXJvLCByZWdUMCk7CisgICAgICAgIGFib3J0V2l0aFJlYXNvbihKSVRH
ZXRCeVZhbFJlc3VsdElzTm90RW1wdHkpOworICAgICAgICByZXN1bHRPSy5saW5rKHRoaXMpOwor
ICAgIH0KIAogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoKTsKICAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGRzdCk7CkBAIC0yNTIsMTEgKzI1MiwxMSBAQCB2b2lkIEpJVDo6Y29tcGlsZUdl
dERpcmVjdE9mZnNldChSZWdpc3RlCiAgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoSlNPYmpl
Y3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpIC0gKGZpcnN0T3V0T2ZMaW5lT2Zmc2V0IC0gMikg
KiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwgYmFzZSwgc2NyYXRjaCk7CiAgICAgICAgIGRvbmUu
bGluayh0aGlzKTsKICAgICB9IGVsc2UgewotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICAgICAg
SnVtcCBpc091dE9mTGluZSA9IGJyYW5jaDMyKEdyZWF0ZXJUaGFuT3JFcXVhbCwgb2Zmc2V0LCBU
cnVzdGVkSW1tMzIoZmlyc3RPdXRPZkxpbmVPZmZzZXQpKTsKLSAgICAgICAgYnJlYWtwb2ludCgp
OwotICAgICAgICBpc091dE9mTGluZS5saW5rKHRoaXMpOwotI2VuZGlmCisgICAgICAgIGlmICgh
QVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgICAgICBKdW1wIGlzT3V0T2ZMaW5lID0gYnJhbmNo
MzIoR3JlYXRlclRoYW5PckVxdWFsLCBvZmZzZXQsIFRydXN0ZWRJbW0zMihmaXJzdE91dE9mTGlu
ZU9mZnNldCkpOworICAgICAgICAgICAgYWJvcnRXaXRoUmVhc29uKEpJVE9mZnNldElzTm90T3V0
T2ZMaW5lKTsKKyAgICAgICAgICAgIGlzT3V0T2ZMaW5lLmxpbmsodGhpcyk7CisgICAgICAgIH0K
ICAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQo
KSksIHNjcmF0Y2gpOwogICAgICAgICBuZWczMihvZmZzZXQpOwogICAgIH0KQEAgLTk3Niw0MiAr
OTc2LDYgQEAgdm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIoSlNDZWxsKiBvd25lcgogI2VuZGlm
IC8vIEVOQUJMRShHR0MpCiB9CiAKLUpJVDo6SnVtcCBKSVQ6OmFkZFN0cnVjdHVyZVRyYW5zaXRp
b25DaGVjayhKU0NlbGwqIG9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgUmVnaXN0ZXJJRCBzY3JhdGNoKQotewotICAgIGlmIChvYmplY3Qt
PnN0cnVjdHVyZSgpID09IHN0cnVjdHVyZSAmJiBzdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBv
aW50U2V0SXNTdGlsbFZhbGlkKCkpIHsKLSAgICAgICAgc3RydWN0dXJlLT5hZGRUcmFuc2l0aW9u
V2F0Y2hwb2ludChzdHViSW5mby0+YWRkV2F0Y2hwb2ludChtX2NvZGVCbG9jaykpOwotI2lmICFB
U1NFUlRfRElTQUJMRUQKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKG9iamVjdCksIHNjcmF0
Y2gpOwotICAgICAgICBKdW1wIG9rID0gYnJhbmNoU3RydWN0dXJlKEVxdWFsLCBBZGRyZXNzKHNj
cmF0Y2gsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVyZSk7Ci0gICAgICAg
IGJyZWFrcG9pbnQoKTsKLSAgICAgICAgb2subGluayh0aGlzKTsKLSNlbmRpZgotICAgICAgICBK
dW1wIHJlc3VsdDsgLy8gUmV0dXJuaW5nIGFuIHVuc2V0IGp1bXAgdGhpcyB3YXkgYmVjYXVzZSBv
dGhlcndpc2UgVkMrKyB3b3VsZCBjb21wbGFpbi4KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICB9Ci0gICAgCi0gICAgbW92ZShUcnVzdGVkSW1tUHRyKG9iamVjdCksIHNjcmF0Y2gpOwotICAg
IHJldHVybiBicmFuY2hTdHJ1Y3R1cmUoTm90RXF1YWwsIEFkZHJlc3Moc2NyYXRjaCwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc3RydWN0dXJlKTsKLX0KLQotdm9pZCBKSVQ6OmFkZFN0
cnVjdHVyZVRyYW5zaXRpb25DaGVjayhKU0NlbGwqIG9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgSnVtcExpc3QmIGZhaWx1cmVDYXNlcywg
UmVnaXN0ZXJJRCBzY3JhdGNoKQotewotICAgIEp1bXAgZmFpbHVyZUNhc2UgPSBhZGRTdHJ1Y3R1
cmVUcmFuc2l0aW9uQ2hlY2sob2JqZWN0LCBzdHJ1Y3R1cmUsIHN0dWJJbmZvLCBzY3JhdGNoKTsK
LSAgICBpZiAoIWZhaWx1cmVDYXNlLmlzU2V0KCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAg
ICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGZhaWx1cmVDYXNlKTsKLX0KLQotdm9pZCBKSVQ6OnRlc3RQ
cm90b3R5cGUoSlNWYWx1ZSBwcm90b3R5cGUsIEp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbykKLXsKLSAgICBpZiAocHJvdG90eXBlLmlzTnVsbCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQocHJvdG90eXBlLmlzQ2VsbCgpKTsKLSAgICBh
ZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2socHJvdG90eXBlLmFzQ2VsbCgpLCBwcm90b3R5cGUu
YXNDZWxsKCktPnN0cnVjdHVyZSgpLCBzdHViSW5mbywgZmFpbHVyZUNhc2VzLCByZWdUMyk7Ci19
Ci0KIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5VmFsKEJ5VmFsSW5mbyogYnlWYWxJbmZv
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIEpJVEFycmF5TW9kZSBhcnJheU1vZGUp
CiB7CiAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IG1fY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5l
cmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0
ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTY4Njg5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5l
cmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTEsNyArMjExLDcgQEAgc3RhdGljIHZvaWQg
Z2VuZXJhdGVSZWdpc3RlclJlc3RvcmF0aW9uKAogICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7
CiAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCBvayA9IGppdC5icmFuY2hQdHIoCiAgICAg
ICAgICAgICBBc3NlbWJseUhlbHBlcnM6OkFib3ZlLCBHUFJJbmZvOjpyZWdUMSwgQXNzZW1ibHlI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0YXRpY19jYXN0PHNpemVfdD4oMHgxMDAwKSkpOwotICAg
ICAgICBqaXQuYnJlYWtwb2ludCgpOworICAgICAgICBqaXQuYWJvcnRXaXRoUmVhc29uKFJQV1Vu
cmVhc29uYWJsZUp1bXBUYXJnZXQpOwogICAgICAgICBvay5saW5rKCZqaXQpOwogICAgIH0KICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkocmV2aXNpb24gMTY4
Njg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTMyLDE3ICsxMzIsMTggQEAgc3RhdGljIHZvaWQgYWRkU3RydWN0dXJlVHJhbnNp
dGlvbkNoZWNrKAogewogICAgIGlmIChvYmplY3QtPnN0cnVjdHVyZSgpID09IHN0cnVjdHVyZSAm
JiBzdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SXNTdGlsbFZhbGlkKCkpIHsKICAg
ICAgICAgc3RydWN0dXJlLT5hZGRUcmFuc2l0aW9uV2F0Y2hwb2ludChzdHViSW5mby5hZGRXYXRj
aHBvaW50KGNvZGVCbG9jaykpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICAgICAgLy8gSWYg
d2UgZXhlY3V0ZSB0aGlzIGNvZGUsIHRoZSBvYmplY3QgbXVzdCBoYXZlIHRoZSBzdHJ1Y3R1cmUg
d2UgZXhwZWN0LiBBc3NlcnQKLSAgICAgICAgLy8gdGhpcyBpbiBkZWJ1ZyBtb2Rlcy4KLSAgICAg
ICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIob2JqZWN0KSwgc2NyYXRj
aEdQUik7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG9rID0gYnJhbmNoU3RydWN0dXJl
KGppdCwKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwKLSAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksCi0gICAgICAgICAgICBzdHJ1Y3R1cmUpOwotICAgICAgICBqaXQuYnJlYWtwb2ludCgp
OwotICAgICAgICBvay5saW5rKCZqaXQpOwotI2VuZGlmCisgICAgICAgIGlmICghQVNTRVJUX0RJ
U0FCTEVEKSB7CisgICAgICAgICAgICAvLyBJZiB3ZSBleGVjdXRlIHRoaXMgY29kZSwgdGhlIG9i
amVjdCBtdXN0IGhhdmUgdGhlIHN0cnVjdHVyZSB3ZSBleHBlY3QuIEFzc2VydAorICAgICAgICAg
ICAgLy8gdGhpcyBpbiBkZWJ1ZyBtb2Rlcy4KKyAgICAgICAgICAgIGppdC5tb3ZlKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG9iamVjdCksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXAgb2sgPSBicmFuY2hTdHJ1Y3R1cmUoCisgICAgICAgICAgICAg
ICAgaml0LAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwKKyAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgIHN0cnVjdHVyZSk7CisgICAgICAgICAg
ICBqaXQuYWJvcnRXaXRoUmVhc29uKFJlcGF0Y2hJbmVmZmVjdGl2ZVdhdGNocG9pbnQpOworICAg
ICAgICAgICAgb2subGluaygmaml0KTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIApAQCAtMTU3MSw3ICsxNTcyLDcgQEAgdm9pZCBsaW5rQ2xvc3VyZUNhbGwoCiAgICAg
aWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG9rQXJn
dW1lbnRDb3VudCA9IHN0dWJKaXQuYnJhbmNoMzIoCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OkJlbG93LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJS
ZWdpc3Rlciwgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoUmVnaXN0ZXIpICogSlNTdGFj
azo6QXJndW1lbnRDb3VudCkgKyBvZmZzZXRUb0ZyYW1lICsgUGF5bG9hZE9mZnNldCksIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKDEwMDAwMDAwKSk7Ci0gICAgICAgIHN0dWJKaXQuYnJlYWtw
b2ludCgpOworICAgICAgICBzdHViSml0LmFib3J0V2l0aFJlYXNvbihSZXBhdGNoSW5zYW5lQXJn
dW1lbnRDb3VudCk7CiAgICAgICAgIG9rQXJndW1lbnRDb3VudC5saW5rKCZzdHViSml0KTsKICAg
ICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9y
cy5jcHAJKHJldmlzaW9uIDE2ODY4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1
bmtHZW5lcmF0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTcgKzQ1LDE0IEBAIG5hbWVz
cGFjZSBKU0MgewogCiBpbmxpbmUgdm9pZCBlbWl0UG9pbnRlclZhbGlkYXRpb24oQ0NhbGxIZWxw
ZXJzJiBqaXQsIEdQUlJlZyBwb2ludGVyR1BSKQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyAg
ICBpZiAoQVNTRVJUX0RJU0FCTEVEKQorICAgICAgICByZXR1cm47CiAgICAgQ0NhbGxIZWxwZXJz
OjpKdW1wIGlzTm9uWmVybyA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6Tm9uWmVy
bywgcG9pbnRlckdQUik7Ci0gICAgaml0LmJyZWFrcG9pbnQoKTsKKyAgICBqaXQuYWJvcnRXaXRo
UmVhc29uKFRHSW52YWxpZFBvaW50ZXIpOwogICAgIGlzTm9uWmVyby5saW5rKCZqaXQpOwogICAg
IGppdC5wdXNoVG9TYXZlKHBvaW50ZXJHUFIpOwogICAgIGppdC5sb2FkOChwb2ludGVyR1BSLCBw
b2ludGVyR1BSKTsKICAgICBqaXQucG9wVG9SZXN0b3JlKHBvaW50ZXJHUFIpOwotI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0oaml0KTsKLSAgICBVTlVTRURfUEFSQU0ocG9pbnRlckdQUik7Ci0jZW5k
aWYKIH0KIAogLy8gV2Ugd2lsbCBqdW1wIGhlcmUgaWYgdGhlIEpJVCBjb2RlIHRyaWVzIHRvIG1h
a2UgYSBjYWxsLCBidXQgdGhlCkBAIC0zNzMsNyArMzcwLDcgQEAgc3RhdGljIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBuYXRpdmVGb3JHZQogI2Vsc2UKICNlcnJvciAiSklUIG5vdCBzdXBwb3J0ZWQg
b24gdGhpcyBwbGF0Zm9ybS4iCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWN1dGFibGVPZmZzZXRUb0Z1
bmN0aW9uKTsKLSAgICBicmVha3BvaW50KCk7CisgICAgYWJvcnRXaXRoUmVhc29uKFRHTm90U3Vw
cG9ydGVkKTsKICNlbmRpZgogCiAgICAgLy8gQ2hlY2sgZm9yIGFuIGV4Y2VwdGlvbgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAJKHJldmlzaW9uIDE2ODY4OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjM5LDE2ICsxNjM5LDE0IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3Jv
QXNzZW0KICAgICAgICAgICAgICAgICBjb25zdCBSZWdpc3RlcklEIGluZGV4VGVtcG9yYXJ5ID0g
cmVnVDA7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHRlcm0tPnF1YW50aXR5Q291bnQgPT0gMSk7
CiAKLSNpZm5kZWYgTkRFQlVHCiAgICAgICAgICAgICAgICAgLy8gUnVudGltZSBBU1NFUlQgdG8g
bWFrZSBzdXJlIHRoYXQgdGhlIG5lc3RlZCBhbHRlcm5hdGl2ZSBoYW5kbGVkIHRoZQogICAgICAg
ICAgICAgICAgIC8vICJubyBpbnB1dCBjb25zdW1lZCIgY2hlY2suCi0gICAgICAgICAgICAgICAg
aWYgKHRlcm0tPnF1YW50aXR5VHlwZSAhPSBRdWFudGlmaWVyRml4ZWRDb3VudCAmJiAhdGVybS0+
cGFyZW50aGVzZXMuZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemUpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoIUFTU0VSVF9ESVNBQkxFRCAmJiB0ZXJtLT5xdWFudGl0eVR5cGUgIT0gUXVhbnRpZmll
ckZpeGVkQ291bnQgJiYgIXRlcm0tPnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uLT5tX21pbmltdW1T
aXplKSB7CiAgICAgICAgICAgICAgICAgICAgIEp1bXAgcGFzdEJyZWFrcG9pbnQ7CiAgICAgICAg
ICAgICAgICAgICAgIHBhc3RCcmVha3BvaW50ID0gYnJhbmNoMzIoTm90RXF1YWwsIGluZGV4LCBB
ZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCB0ZXJtLT5mcmFtZUxvY2F0aW9uICogc2l6ZW9m
KHZvaWQqKSkpOwotICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50KCk7CisgICAgICAgICAg
ICAgICAgICAgIGFib3J0V2l0aFJlYXNvbihZQVJSTm9JbnB1dENvbnN1bWVkKTsKICAgICAgICAg
ICAgICAgICAgICAgcGFzdEJyZWFrcG9pbnQubGluayh0aGlzKTsKICAgICAgICAgICAgICAgICB9
Ci0jZW5kaWYKIAogICAgICAgICAgICAgICAgIC8vIElmIHRoZSBwYXJlbnRoZXNlIGFyZSBjYXB0
dXJpbmcsIHN0b3JlIHRoZSBlbmRpbmcgaW5kZXggdmFsdWUgdG8gdGhlCiAgICAgICAgICAgICAg
ICAgLy8gY2FwdHVyZXMgYXJyYXksIG9mZnNldHRpbmcgYXMgbmVjZXNzYXJ5LgpAQCAtMTY5NSwx
NiArMTY5MywxNiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtCiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIE9wUGFyZW50aGVzZXNTdWJwYXR0ZXJuVGVy
bWluYWxFbmQ6IHsKICAgICAgICAgICAgICAgICBZYXJyT3AmIGJlZ2luT3AgPSBtX29wc1tvcC5t
X3ByZXZpb3VzT3BdOwotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgICAgICAgICBQYXR0ZXJuVGVy
bSogdGVybSA9IG9wLm1fdGVybTsKLQotICAgICAgICAgICAgICAgIC8vIFJ1bnRpbWUgQVNTRVJU
IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBuZXN0ZWQgYWx0ZXJuYXRpdmUgaGFuZGxlZCB0aGUKLSAg
ICAgICAgICAgICAgICAvLyAibm8gaW5wdXQgY29uc3VtZWQiIGNoZWNrLgotICAgICAgICAgICAg
ICAgIEp1bXAgcGFzdEJyZWFrcG9pbnQ7Ci0gICAgICAgICAgICAgICAgcGFzdEJyZWFrcG9pbnQg
PSBicmFuY2gzMihOb3RFcXVhbCwgaW5kZXgsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIs
IHRlcm0tPmZyYW1lTG9jYXRpb24gKiBzaXplb2Yodm9pZCopKSk7Ci0gICAgICAgICAgICAgICAg
YnJlYWtwb2ludCgpOwotICAgICAgICAgICAgICAgIHBhc3RCcmVha3BvaW50LmxpbmsodGhpcyk7
Ci0jZW5kaWYKKyAgICAgICAgICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAg
ICAgICAgICAgICAgICBQYXR0ZXJuVGVybSogdGVybSA9IG9wLm1fdGVybTsKKyAgICAgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC8vIFJ1bnRpbWUgQVNTRVJUIHRvIG1ha2Ug
c3VyZSB0aGF0IHRoZSBuZXN0ZWQgYWx0ZXJuYXRpdmUgaGFuZGxlZCB0aGUKKyAgICAgICAgICAg
ICAgICAgICAgLy8gIm5vIGlucHV0IGNvbnN1bWVkIiBjaGVjay4KKyAgICAgICAgICAgICAgICAg
ICAgSnVtcCBwYXN0QnJlYWtwb2ludDsKKyAgICAgICAgICAgICAgICAgICAgcGFzdEJyZWFrcG9p
bnQgPSBicmFuY2gzMihOb3RFcXVhbCwgaW5kZXgsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0
ZXIsIHRlcm0tPmZyYW1lTG9jYXRpb24gKiBzaXplb2Yodm9pZCopKSk7CisgICAgICAgICAgICAg
ICAgICAgIGFib3J0V2l0aFJlYXNvbihZQVJSTm9JbnB1dENvbnN1bWVkKTsKKyAgICAgICAgICAg
ICAgICAgICAgcGFzdEJyZWFrcG9pbnQubGluayh0aGlzKTsKKyAgICAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgICAgICAvLyBXZSBrbm93IHRoYXQgdGhlIG1hdGNoIGlzIG5vbi16ZXJvLCB3
ZSBjYW4gYWNjZXB0IGl0ICBhbmQKICAgICAgICAgICAgICAgICAvLyBsb29wIGJhY2sgdXAgdG8g
dGhlIGhlYWQgb2YgdGhlIHN1YnBhdHRlcm4uCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231417</attachid>
            <date>2014-05-13 16:32:05 -0700</date>
            <delta_ts>2014-05-13 16:32:05 -0700</delta_ts>
            <desc>try again!</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>45213</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY4NzI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgxIEBA
CisyMDE0LTA1LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SklUIGJyZWFrcG9pbnRzIHNob3VsZCBiZSBtb3JlIGluZm9ybWF0aXZlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzI4ODIKKworICAgICAgICBSZXZp
ZXdlZCBieSBPbGl2ZXIgSHVudC4KKyAgICAgICAgCisgICAgICAgIEludHJvZHVjZSB0aGUgbm90
aW9uIG9mIGFuIEFib3J0UmVhc29uLCB3aGljaCBpcyBhIG5pY2UgZW51bWVyYXRpb24gb2YgY29k
ZWQgYXNzZXJ0aW9uCisgICAgICAgIGZhaWx1cmUgbmFtZXMuIFRoaXMgbWVhbnMgdGhhdCBhbGwg
eW91IG5lZWQgdG8gZmlndXJlIG91dCB3aHkgdGhlIEpJVCBTSUdUUkFQJ2QgaXMgdG8gbG9vawor
ICAgICAgICBhdCB0aGF0IHBsYXRmb3JtJ3MgYWJvcnQgcmVhc29uIHJlZ2lzdGVyIChyMTEgb24g
WDg2LTY0IGZvciBleGFtcGxlKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9BYm9ydFJlYXNvbi5oOiBB
ZGRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyQVJNNjQ6OmFib3J0V2l0aFJlYXNvbik6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNdjcuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12
Nzo6YWJvcnRXaXRoUmVhc29uKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODYuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODY6OmFib3J0V2l0aFJlYXNvbik6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjphYm9ydFdpdGhSZWFzb24pOgorICAgICAgICAqIGRm
Zy9ERkdTbG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6OlNsb3dQYXRoR2Vu
ZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YmFpbCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2spOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTWFrZVJvcGUpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpl
bWl0QWxsb2NhdGVCYXNpY1N0b3JhZ2UpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdUaHVua3MuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6Om9zckVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAq
IGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6
OmppdEFzc2VydElzSW50MzIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmppdEFz
c2VydElzSlNJbnQzMik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0
SXNKU051bWJlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNK
U0RvdWJsZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNDZWxs
KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRUYWdzSW5QbGFjZSk6
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SGFzVmFsaWRDYWxsRnJh
bWUpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzTnVsbCk6Cisg
ICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0QXJndW1lbnRDb3VudFNhbmUp
OgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRTdG9yZVN0cnVjdHVyZVdpdGhU
eXBlSW5mbyk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlND
OjpBc3NlbWJseUhlbHBlcnM6OmNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KToKKyAgICAgICAg
KEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8pOiBE
ZWxldGVkLgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRp
Yy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGl2KToKKyAgICAgICAgKiBq
aXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbG9vcF9o
aW50KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNhbGwpOgorICAgICAgICAqIGppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6SklUOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2spOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpKSVQ6OnRlc3RQcm90b3R5cGUpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92
YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQpOgorICAgICAg
ICAqIGppdC9SZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpnZW5lcmF0ZVJlZ2lzdGVyUmVzdG9yYXRpb24pOgorICAgICAgICAqIGppdC9SZXBh
dGNoLmNwcDoKKyAgICAgICAgKEpTQzo6YWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKToKKyAg
ICAgICAgKEpTQzo6bGlua0Nsb3N1cmVDYWxsKToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0
b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6ZW1pdFBvaW50ZXJWYWxpZGF0aW9uKToKKyAgICAgICAg
KEpTQzo6bmF0aXZlRm9yR2VuZXJhdG9yKToKKyAgICAgICAgKiB5YXJyL1lhcnJKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisKIDIwMTQtMDUt
MTIgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNjg2NDIuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE2ODY4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTgxOCw2ICs4MTgsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
QVBJXEpTV3JhcHBlck1hcC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXE9w
YXF1ZUpTU3RyaW5nLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcV2ViS2l0
QXZhaWxhYmlsaXR5LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJc
QWJvcnRSZWFzb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxh
c3NlbWJsZXJcQXNzZW1ibGVyQnVmZmVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
Llxhc3NlbWJsZXJcQ29kZUxvY2F0aW9uLmgiIC8+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMTY4Njg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEw
Nyw2ICsxMDcsNyBAQAogCQkwRjFFM0E0NjE1MzRDQkFGMDAwRjk0NTYgLyogREZHQXJndW1lbnRQ
b3NpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYxRTNBNDMxNTM0Q0JBRDAwMEY5NDU2IC8qIERGR0FyZ3VtZW50UG9zaXRpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjFFM0E0NzE1MzRD
QkI5MDAwRjk0NTYgLyogREZHRG91YmxlRm9ybWF0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMUUzQTQ0MTUzNENCQUQwMDBGOTQ1NiAvKiBE
RkdEb3VibGVGb3JtYXRTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGMUUzQTY3MTUzQTIxRTIwMDBGOTQ1NiAvKiBERkdTaWxlbnRSZWdp
c3RlclNhdmVQbGFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjFFM0E2NTE1M0EyMURGMDAwRjk0NTYgLyogREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxh
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBG
MUZFNTFDMTkyMkEzQkMwMDY5ODdDNSAvKiBBYm9ydFJlYXNvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxRkU1MUIxOTIyQTNCQzAwNjk4N0M1IC8q
IEFib3J0UmVhc29uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEYyMUMyN0QxNEJFNzI3QTAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktp
bmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFD
Mjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyMUMyN0YxNEJFQUE4
MjAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRl
Y29kZUNvbnZlbnRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEYyMzVCRDMxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIzNUJC
RDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50LmNwcCAqLzsgfTsKQEAgLTE5MTQs
NiArMTkxNSw3IEBACiAJCTBGMUUzQTQ0MTUzNENCQUQwMDBGOTQ1NiAvKiBERkdEb3VibGVGb3Jt
YXRTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdEb3VibGVGb3Jt
YXRTdGF0ZS5oOyBwYXRoID0gZGZnL0RGR0RvdWJsZUZvcm1hdFN0YXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGMUUzQTUwMTUzN0MyQ0IwMDBGOTQ1NiAvKiBERkdTbG93UGF0
aEdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdTbG93UGF0
aEdlbmVyYXRvci5oOyBwYXRoID0gZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMUUzQTY1MTUzQTIxREYwMDBGOTQ1NiAvKiBERkdTaWxl
bnRSZWdpc3RlclNhdmVQbGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERG
R1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4uaDsgcGF0aCA9IGRmZy9ERkdTaWxlbnRSZWdpc3RlclNh
dmVQbGFuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMUZFNTFCMTkyMkEzQkMw
MDY5ODdDNSAvKiBBYm9ydFJlYXNvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBYm9ydFJlYXNvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjIxQzI3OTE0
QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNv
bnZlbnRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlQ29u
dmVudGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyMzVCQkQxNzE3OEUx
QzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBGVExFeGl0QXJndW1lbnQuY3BwOyBwYXRoID0gZnRsL0ZUTEV4aXRBcmd1
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00ODk2LDYgKzQ4OTgsNyBA
QAogCQk5Njg4Q0IxMjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVyICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjFGRTUxQjE5MjJBM0JDMDA2OTg3
QzUgLyogQWJvcnRSZWFzb24uaCAqLywKIAkJCQk4NjAxNjFERjBGM0E4M0MxMDBGODQ3MTAgLyog
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oICovLAogCQkJCTg2NDA5MjNCMTU2RUVEM0IwMDU2NkNC
MiAvKiBBUk02NEFzc2VtYmxlci5oICovLAogCQkJCTg2RDNCMkJGMTAxNTZCREUwMDI4NjVFNyAv
KiBBUk1Bc3NlbWJsZXIuY3BwICovLApAQCAtNTgyNSw2ICs1ODI4LDcgQEAKIAkJCQlDMjExMjJF
MjE1REQ5QUIzMDA3OTBFM0EgLyogR0NUaHJlYWRTaGFyZWREYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNTMyNDM5NDE4NTY5NzA5MDAyRUQ2OTIgLyogZ2VuZXJhdGUtY29tYmluZWQtaW5zcGVj
dG9yLWpzb24ucHkgaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZFMDE3QjZCNUFCMDBBN0FFM0Yg
LyogR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjFGRTUxQzE5
MjJBM0JDMDA2OTg3QzUgLyogQWJvcnRSZWFzb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2
NkUxMTdCNkI1QUIwMEE3QUUzRiAvKiBHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjkzMzJBMDE0Q0E3RENEMDA4NUYzQzYgLyogR2V0QnlJZFN0YXR1
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwMzMyQzQxOEIwMTc2MzAwNUY5NzlBIC8qIEdldEJ5
SWRWYXJpYW50LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQWJvcnRSZWFzb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fib3J0UmVhc29uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0Fib3J0UmVhc29uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIEFib3J0UmVhc29uX2gKKyNkZWZpbmUgQWJvcnRSZWFzb25faAorCituYW1lc3BhY2Ug
SlNDIHsKKworLy8gSXQncyBpbXBvcnRhbnQgdG8gbm90IGNoYW5nZSB0aGUgdmFsdWVzIG9mIGV4
aXN0aW5nIGFib3J0IHJlYXNvbnMgdW5sZXNzIHdlIHJlYWxseQorLy8gaGF2ZSB0by4gRm9yIHRo
aXMgcmVhc29uIHRoZXJlIGlzIGEgQkFTSUMtc3R5bGUgbnVtYmVyaW5nIHRoYXQgc2hvdWxkIGFs
bG93IHVzIHRvCisvLyBzbmVhayBuZXcgcmVhc29ucyBpbiB3aXRob3V0IGNoYW5naW5nIHRoZSBu
dW1iZXJpbmcgb2YgZXhpc3RpbmcgcmVhc29ucyAtIGF0IGxlYXN0CisvLyBmb3IgYSB3aGlsZS4K
K2VudW0gQWJvcnRSZWFzb24geworICAgIEFIQ2FsbEZyYW1lTWlzYWxpZ25lZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAgMTAsCisgICAgQUhJbmRleGluZ1R5cGVJc1ZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9ICAyMCwKKyAgICBBSEluc2FuZUFyZ3VtZW50Q291bnQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIDMwLAorICAgIEFISXNOb3RDZWxsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAgNDAsCisgICAgQUhJc05vdEludDMy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICA1MCwKKyAgICBBSElzTm90
SlNEb3VibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIDYwLAorICAgIEFI
SXNOb3RKU0ludDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAgNzAsCisg
ICAgQUhJc05vdEpTTnVtYmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICA4
MCwKKyAgICBBSElzTm90TnVsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gIDkwLAorICAgIEFIU3RhY2tQb2ludGVyTWlzYWxpZ25lZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAxMDAsCisgICAgQUhTdHJ1Y3R1cmVJRElzVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IDExMCwKKyAgICBBSFRhZ01hc2tOb3RJblBsYWNlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gMTIwLAorICAgIEFIVGFnVHlwZU51bWJlck5vdEluUGxhY2UgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAxMzAsCisgICAgQUhUeXBlSW5mb0lubGluZVR5cGVGbGFn
c0FyZVZhbGlkICAgICAgICAgICAgICAgICA9IDE0MCwKKyAgICBBSFR5cGVJbmZvSXNWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMTUwLAorICAgIERGR0JhaWxlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxNjAsCisgICAgREZHQmFzaWNT
dG9yYWdlQWxsb2NhdG9yWmVyb1NpemUgICAgICAgICAgICAgICAgICA9IDE3MCwKKyAgICBERkdJ
c05vdENlbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMTgwLAorICAg
IERGR0luZWZmZWN0aXZlV2F0Y2hwb2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxOTAs
CisgICAgREZHTmVnYXRpdmVTdHJpbmdMZW5ndGggICAgICAgICAgICAgICAgICAgICAgICAgICA9
IDIwMCwKKyAgICBERkdTbG93UGF0aEdlbmVyYXRvckZlbGxUaHJvdWdoICAgICAgICAgICAgICAg
ICAgID0gMjEwLAorICAgIERGR1VucmVhY2hhYmxlQmFzaWNCbG9jayAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAyMjAsCisgICAgREZHVW5yZWFzb25hYmxlT1NSRW50cnlKdW1wRGVzdGluYXRp
b24gICAgICAgICAgICA9IDIzMCwKKyAgICBKSVREaXZPcGVyYW5kc0FyZU5vdE51bWJlcnMgICAg
ICAgICAgICAgICAgICAgICAgID0gMjQwLAorICAgIEpJVEdldEJ5VmFsUmVzdWx0SXNOb3RFbXB0
eSAgICAgICAgICAgICAgICAgICAgICAgPSAyNTAsCisgICAgSklUTm90U3VwcG9ydGVkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDI2MCwKKyAgICBKSVRPZmZzZXRJc05vdE91
dE9mTGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMjcwLAorICAgIEpJVFVucmVhc29u
YWJsZUxvb3BIaW50SnVtcFRhcmdldCAgICAgICAgICAgICAgICAgPSAyODAsCisgICAgUlBXVW5y
ZWFzb25hYmxlSnVtcFRhcmdldCAgICAgICAgICAgICAgICAgICAgICAgICA9IDI5MCwKKyAgICBS
ZXBhdGNoSW5lZmZlY3RpdmVXYXRjaHBvaW50ICAgICAgICAgICAgICAgICAgICAgID0gMzAwLAor
ICAgIFJlcGF0Y2hJbnNhbmVBcmd1bWVudENvdW50ICAgICAgICAgICAgICAgICAgICAgICAgPSAz
MTAsCisgICAgVEdJbnZhbGlkUG9pbnRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IDMyMCwKKyAgICBUR05vdFN1cHBvcnRlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gMzMwLAorICAgIFlBUlJOb0lucHV0Q29uc3VtZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAzNDAsCit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8v
IEFib3J0UmVhc29uX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
YnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDE2ODY4OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDgsIDIwMTIsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIEFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXJfaAogI2RlZmluZSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyX2gK
IAorI2luY2x1ZGUgIkFib3J0UmVhc29uLmgiCiAjaW5jbHVkZSAiQXNzZW1ibGVyQnVmZmVyLmgi
CiAjaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNNjQuaAkocmV2aXNpb24gMTY4Njg5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTgwNiw2ICs4MDYsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbGFiZWw7CiAgICAgfQog
CisgICAgdm9pZCBhYm9ydFdpdGhSZWFzb24oQWJvcnRSZWFzb24gcmVhc29uKQorICAgIHsKKyAg
ICAgICAgbW92ZShUcnVzdGVkSW1tMzIocmVhc29uKSwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAg
ICAgIGJyZWFrcG9pbnQoKTsKKyAgICB9CisKICAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbCBjb252
ZXJ0aWJsZUxvYWRQdHIoQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewog
ICAgICAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbCByZXN1bHQodGhpcyk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcu
aAkocmV2aXNpb24gMTY4Njg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTXY3LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVW5pdmVyc2l0eSBvZiBTemVnZWQK
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKQEAgLTYzMiw2ICs2MzIsMTIgQEAgcHVibGljOgogICAgICAgICBt
X2Fzc2VtYmxlci5sZHIoZGVzdCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgQVJNVGh1bWJJbW1lZGlh
dGU6Om1ha2VVSW50MTYoMCkpOwogICAgIH0KICAgICAKKyAgICB2b2lkIGFib3J0V2l0aFJlYXNv
bihBYm9ydFJlYXNvbiByZWFzb24pCisgICAgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihy
ZWFzb24pLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgYnJlYWtwb2ludCgpOworICAgIH0K
KwogICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIGNvbnZlcnRpYmxlTG9hZFB0cihBZGRyZXNzIGFk
ZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIENvbnZlcnRpYmxlTG9hZExh
YmVsIHJlc3VsdCh0aGlzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgJKHJldmlzaW9uIDE2ODY4OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMTExLDYgKzExMSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnpi
bF9tcihhZGRyZXNzLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGFib3J0V2l0aFJlYXNvbihB
Ym9ydFJlYXNvbiByZWFzb24pCisgICAgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihyZWFz
b24pLCBYODZSZWdpc3RlcnM6OmVheCk7CisgICAgICAgIGJyZWFrcG9pbnQoKTsKKyAgICB9CisK
ICAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbCBjb252ZXJ0aWJsZUxvYWRQdHIoQWRkcmVzcyBhZGRy
ZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBDb252ZXJ0aWJsZUxvYWRMYWJl
bCByZXN1bHQgPSBDb252ZXJ0aWJsZUxvYWRMYWJlbCh0aGlzKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJ
KHJldmlzaW9uIDE2ODY4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjI5LDYgKzYy
OSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZD
b25kaXRpb24oY29uZCkpKTsKICAgICB9CiAKKyAgICB2b2lkIGFib3J0V2l0aFJlYXNvbihBYm9y
dFJlYXNvbiByZWFzb24pCisgICAgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihyZWFzb24p
LCBYODZSZWdpc3RlcnM6OnIxMSk7CisgICAgICAgIGJyZWFrcG9pbnQoKTsKKyAgICB9CisKICAg
ICBDb252ZXJ0aWJsZUxvYWRMYWJlbCBjb252ZXJ0aWJsZUxvYWRQdHIoQWRkcmVzcyBhZGRyZXNz
LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbCBy
ZXN1bHQgPSBDb252ZXJ0aWJsZUxvYWRMYWJlbCh0aGlzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgJKHJldmlzaW9uIDE2ODY4
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGppdC0+bV9j
dXJyZW50Tm9kZSA9IG1fY3VycmVudE5vZGU7CiAgICAgICAgIGdlbmVyYXRlSW50ZXJuYWwoaml0
KTsKICAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpCi0gICAgICAgICAgICBqaXQtPm1faml0
LmJyZWFrcG9pbnQoKTsgLy8gbWFrZSBzdXJlIHRoYXQgdGhlIGdlbmVyYXRvciBqdW1wcyBiYWNr
IHRvIHNvbWV3aGVyZQorICAgICAgICAgICAgaml0LT5tX2ppdC5hYm9ydFdpdGhSZWFzb24oREZH
U2xvd1BhdGhHZW5lcmF0b3JGZWxsVGhyb3VnaCk7CiAgICAgfQogICAgIE1hY3JvQXNzZW1ibGVy
OjpMYWJlbCBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWw7IH0KICAgICB2aXJ0dWFsIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAx
Njg2ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzA5LDcgKzM3MDksNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCBpc09LID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpF
cXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG5vZGUtPnN0cnVjdHVyZSgpKSk7Ci0gICAgICAgIG1f
aml0LmJyZWFrcG9pbnQoKTsKKyAgICAgICAgbV9qaXQuYWJvcnRXaXRoUmVhc29uKERGR0luZWZm
ZWN0aXZlV2F0Y2hwb2ludCk7CiAgICAgICAgIGlzT0subGluaygmbV9qaXQpOwogI2Vsc2UKICAg
ICAgICAgc3BlY3VsYXRlQ2VsbChub2RlLT5jaGlsZDEoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE2
ODY4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMzYsNyArMTAzNiw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2
ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwKICAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKICAgICAg
ICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIGNoZWNrQ2VsbCA9IGJyYW5jaElzQ2VsbChKU1ZhbHVlUmVncyhncHIpKTsKLSAgICAgICAg
ICAgIG1faml0LmJyZWFrcG9pbnQoKTsKKyAgICAgICAgICAgIG1faml0LmFib3J0V2l0aFJlYXNv
bihERkdJc05vdENlbGwpOwogICAgICAgICAgICAgY2hlY2tDZWxsLmxpbmsoJm1faml0KTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4gZ3ByOwpAQCAtMzc4Miw3ICszNzgyLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgSklUQ29tcGls
ZXI6OkVxdWFsLCAKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKG9wMS5ncHIoKSwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCiAgICAgICAgICAgICBub2RlLT5zdHJ1Y3R1
cmUoKSk7Ci0gICAgICAgIG1faml0LmJyZWFrcG9pbnQoKTsKKyAgICAgICAgbV9qaXQuYWJvcnRX
aXRoUmVhc29uKERGR0luZWZmZWN0aXZlV2F0Y2hwb2ludCk7CiAgICAgICAgIGlzT0subGluaygm
bV9qaXQpOwogI2Vsc2UKICAgICAgICAgc3BlY3VsYXRlQ2VsbChub2RlLT5jaGlsZDEoKSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAkocmV2aXNpb24gMTY4Njg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNDEsNyArMTM0MSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNb3ZIaW50KE5vZGUKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmJhaWwoKQogewogICAgIG1fY29tcGlsZU9rYXkgPSB0cnVlOwotICAgIG1faml0LmJyZWFrcG9p
bnQoKTsKKyAgICBtX2ppdC5hYm9ydFdpdGhSZWFzb24oREZHQmFpbGVkKTsKICAgICBjbGVhckdl
bmVyYXRpb25JbmZvKCk7CiB9CiAKQEAgLTEzNjAsNyArMTM2MCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2sKICAgICAgICAgLy8gRG9uJ3QgZ2VuZXJhdGUgY29k
ZSBmb3IgYmFzaWMgYmxvY2tzIHRoYXQgYXJlIHVucmVhY2hhYmxlIGFjY29yZGluZyB0byBDRkEu
CiAgICAgICAgIC8vIEJ1dCB0byBiZSBzdXJlIHRoYXQgbm9ib2R5IGhhcyBnZW5lcmF0ZWQgYSBq
dW1wIHRvIHRoaXMgYmxvY2ssIGRyb3AgaW4gYQogICAgICAgICAvLyBicmVha3BvaW50IGhlcmUu
Ci0gICAgICAgIG1faml0LmJyZWFrcG9pbnQoKTsKKyAgICAgICAgbV9qaXQuYWJvcnRXaXRoUmVh
c29uKERGR1VucmVhY2hhYmxlQmFzaWNCbG9jayk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTI4MjEsNyArMjgyMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYWtlUm9w
ZShOb2QKICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewogICAgICAgICBKSVRDb21waWxlcjo6
SnVtcCBvayA9IG1faml0LmJyYW5jaDMyKAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkdyZWF0
ZXJUaGFuT3JFcXVhbCwgYWxsb2NhdG9yR1BSLCBUcnVzdGVkSW1tMzIoMCkpOwotICAgICAgICBt
X2ppdC5icmVha3BvaW50KCk7CisgICAgICAgIG1faml0LmFib3J0V2l0aFJlYXNvbihERkdOZWdh
dGl2ZVN0cmluZ0xlbmd0aCk7CiAgICAgICAgIG9rLmxpbmsoJm1faml0KTsKICAgICB9CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IG51bU9wR1BSczsgKytpKSB7CkBAIC0yODM3LDcgKzI4
MzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWFrZVJvcGUoTm9kCiAgICAgaWYg
KCFBU1NFUlRfRElTQUJMRUQpIHsKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgb2sgPSBtX2pp
dC5icmFuY2gzMigKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpHcmVhdGVyVGhhbk9yRXF1YWws
IGFsbG9jYXRvckdQUiwgVHJ1c3RlZEltbTMyKDApKTsKLSAgICAgICAgbV9qaXQuYnJlYWtwb2lu
dCgpOworICAgICAgICBtX2ppdC5hYm9ydFdpdGhSZWFzb24oREZHTmVnYXRpdmVTdHJpbmdMZW5n
dGgpOwogICAgICAgICBvay5saW5rKCZtX2ppdCk7CiAgICAgfQogICAgIG1faml0LnN0b3JlMzIo
YWxsb2NhdG9yR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTU3RyaW5nOjpv
ZmZzZXRPZkxlbmd0aCgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxNjg2ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNDMsNyAr
MjE0Myw3IEBAIHB1YmxpYzoKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIG1faml0Lm1vdmUoc2l6
ZSwgcmVzdWx0R1BSKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm9uWmVyb1NpemUg
PSBtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHJlc3VsdEdQUik7
Ci0gICAgICAgIG1faml0LmJyZWFrcG9pbnQoKTsKKyAgICAgICAgbV9qaXQuYWJvcnRXaXRoUmVh
c29uKERGR0Jhc2ljU3RvcmFnZUFsbG9jYXRvclplcm9TaXplKTsKICAgICAgICAgbm9uWmVyb1Np
emUubGluaygmbV9qaXQpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1RodW5rcy5jcHAJKHJldmlzaW9uIDE2ODY4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDcgKzEyNyw3IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFbnRyeVRodW5rR2VuZXIKICAgICAKICAgICBqaXQubG9h
ZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgb2Zmc2V0T2ZUYXJn
ZXRQQyksIEdQUkluZm86OnJlZ1QxKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvayA9IGpp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBHUFJJbmZvOjpyZWdUMSwgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxp
bnRwdHJfdD4oMTAwMCkpKSk7Ci0gICAgaml0LmJyZWFrcG9pbnQoKTsKKyAgICBqaXQuYWJvcnRX
aXRoUmVhc29uKERGR1VucmVhc29uYWJsZU9TUkVudHJ5SnVtcERlc3RpbmF0aW9uKTsKICAgICBv
ay5saW5rKCZqaXQpOwogICAgIGppdC5qdW1wKEdQUkluZm86OnJlZ1QxKTsKICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlz
aW9uIDE2ODY4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVy
czo6aml0QXNzZXJ0SXNJbnQzMihHCiB7CiAjaWYgQ1BVKFg4Nl82NCkKICAgICBKdW1wIGNoZWNr
SW50MzIgPSBicmFuY2g2NChCZWxvd09yRXF1YWwsIGdwciwgVHJ1c3RlZEltbTY0KHN0YXRpY19j
YXN0PHVpbnRwdHJfdD4oMHhGRkZGRkZGRnUpKSk7Ci0gICAgYnJlYWtwb2ludCgpOworICAgIGFi
b3J0V2l0aFJlYXNvbihBSElzTm90SW50MzIpOwogICAgIGNoZWNrSW50MzIubGluayh0aGlzKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGdwcik7CkBAIC05NCwxNCArOTQsMTQgQEAgdm9pZCBB
c3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSW50MzIoRwogdm9pZCBBc3NlbWJseUhlbHBlcnM6
OmppdEFzc2VydElzSlNJbnQzMihHUFJSZWcgZ3ByKQogewogICAgIEp1bXAgY2hlY2tKU0ludDMy
ID0gYnJhbmNoNjQoQWJvdmVPckVxdWFsLCBncHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdp
c3Rlcik7Ci0gICAgYnJlYWtwb2ludCgpOworICAgIGFib3J0V2l0aFJlYXNvbihBSElzTm90SlNJ
bnQzMik7CiAgICAgY2hlY2tKU0ludDMyLmxpbmsodGhpcyk7CiB9CiAKIHZvaWQgQXNzZW1ibHlI
ZWxwZXJzOjpqaXRBc3NlcnRJc0pTTnVtYmVyKEdQUlJlZyBncHIpCiB7CiAgICAgSnVtcCBjaGVj
a0pTTnVtYmVyID0gYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBncHIsIEdQ
UkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgYnJlYWtwb2ludCgpOworICAgIGFi
b3J0V2l0aFJlYXNvbihBSElzTm90SlNOdW1iZXIpOwogICAgIGNoZWNrSlNOdW1iZXIubGluayh0
aGlzKTsKIH0KIApAQCAtMTEwLDI1ICsxMTAsMjYgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6Ompp
dEFzc2VydElzSlNEb3VibAogICAgIEp1bXAgY2hlY2tKU0ludDMyID0gYnJhbmNoNjQoQWJvdmVP
ckVxdWFsLCBncHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CiAgICAgSnVtcCBj
aGVja0pTTnVtYmVyID0gYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBncHIs
IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CiAgICAgY2hlY2tKU0ludDMyLmxpbmso
dGhpcyk7Ci0gICAgYnJlYWtwb2ludCgpOworICAgIGFib3J0V2l0aFJlYXNvbihBSElzTm90SlNE
b3VibGUpOwogICAgIGNoZWNrSlNOdW1iZXIubGluayh0aGlzKTsKIH0KIAogdm9pZCBBc3NlbWJs
eUhlbHBlcnM6OmppdEFzc2VydElzQ2VsbChHUFJSZWcgZ3ByKQogewogICAgIEp1bXAgY2hlY2tD
ZWxsID0gYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBncHIsIEdQUkluZm86OnRh
Z01hc2tSZWdpc3Rlcik7Ci0gICAgYnJlYWtwb2ludCgpOworICAgIGFib3J0V2l0aFJlYXNvbihB
SElzTm90Q2VsbCk7CiAgICAgY2hlY2tDZWxsLmxpbmsodGhpcyk7CiB9CiAKIHZvaWQgQXNzZW1i
bHlIZWxwZXJzOjpqaXRBc3NlcnRUYWdzSW5QbGFjZSgpCiB7CiAgICAgSnVtcCBvayA9IGJyYW5j
aDY0KEVxdWFsLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIFRydXN0ZWRJbW02NChU
YWdUeXBlTnVtYmVyKSk7CisgICAgYWJvcnRXaXRoUmVhc29uKEFIVGFnVHlwZU51bWJlck5vdElu
UGxhY2UpOwogICAgIGJyZWFrcG9pbnQoKTsKICAgICBvay5saW5rKHRoaXMpOwogICAgIAogICAg
IG9rID0gYnJhbmNoNjQoRXF1YWwsIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlciwgVHJ1c3RlZElt
bTY0KFRhZ01hc2spKTsKLSAgICBicmVha3BvaW50KCk7CisgICAgYWJvcnRXaXRoUmVhc29uKEFI
VGFnTWFza05vdEluUGxhY2UpOwogICAgIG9rLmxpbmsodGhpcyk7CiB9CiAjZWxpZiBVU0UoSlNW
QUxVRTMyXzY0KQpAQCAtMTQwLDcgKzE0MSw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRB
c3NlcnRJc0ludDMyKEcKIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRJc0pTSW50MzIo
R1BSUmVnIGdwcikKIHsKICAgICBKdW1wIGNoZWNrSlNJbnQzMiA9IGJyYW5jaDMyKEVxdWFsLCBn
cHIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOwotICAgIGJyZWFrcG9pbnQoKTsK
KyAgICBhYm9ydFdpdGhSZWFzb24oQUhJc05vdEpTSW50MzIpOwogICAgIGNoZWNrSlNJbnQzMi5s
aW5rKHRoaXMpOwogfQogCkBAIC0xNDgsNyArMTQ5LDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6
OmppdEFzc2VydElzSlNOdW1iZQogewogICAgIEp1bXAgY2hlY2tKU0ludDMyID0gYnJhbmNoMzIo
RXF1YWwsIGdwciwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7CiAgICAgSnVtcCBj
aGVja0pTRG91YmxlID0gYnJhbmNoMzIoQmVsb3csIGdwciwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
Okxvd2VzdFRhZykpOwotICAgIGJyZWFrcG9pbnQoKTsKKyAgICBhYm9ydFdpdGhSZWFzb24oQUhJ
c05vdEpTTnVtYmVyKTsKICAgICBjaGVja0pTSW50MzIubGluayh0aGlzKTsKICAgICBjaGVja0pT
RG91YmxlLmxpbmsodGhpcyk7CiB9CkBAIC0xNTYsMTQgKzE1NywxNCBAQCB2b2lkIEFzc2VtYmx5
SGVscGVyczo6aml0QXNzZXJ0SXNKU051bWJlCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNz
ZXJ0SXNKU0RvdWJsZShHUFJSZWcgZ3ByKQogewogICAgIEp1bXAgY2hlY2tKU0RvdWJsZSA9IGJy
YW5jaDMyKEJlbG93LCBncHIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKTsKLSAg
ICBicmVha3BvaW50KCk7CisgICAgYWJvcnRXaXRoUmVhc29uKEFISXNOb3RKU0RvdWJsZSk7CiAg
ICAgY2hlY2tKU0RvdWJsZS5saW5rKHRoaXMpOwogfQogCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6
aml0QXNzZXJ0SXNDZWxsKEdQUlJlZyBncHIpCiB7CiAgICAgSnVtcCBjaGVja0NlbGwgPSBicmFu
Y2gzMihFcXVhbCwgZ3ByLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIGJy
ZWFrcG9pbnQoKTsKKyAgICBhYm9ydFdpdGhSZWFzb24oQUhJc05vdENlbGwpOwogICAgIGNoZWNr
Q2VsbC5saW5rKHRoaXMpOwogfQogCkBAIC0xNzUsMjUgKzE3Niw1NCBAQCB2b2lkIEFzc2VtYmx5
SGVscGVyczo6aml0QXNzZXJ0VGFnc0luUGxhCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNz
ZXJ0SGFzVmFsaWRDYWxsRnJhbWUoKQogewogICAgIEp1bXAgY2hlY2tDRlIgPSBicmFuY2hUZXN0
UHRyKFplcm8sIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBUcnVzdGVkSW1tMzIoNykpOwot
ICAgIGJyZWFrcG9pbnQoKTsKKyAgICBhYm9ydFdpdGhSZWFzb24oQUhDYWxsRnJhbWVNaXNhbGln
bmVkKTsKICAgICBjaGVja0NGUi5saW5rKHRoaXMpOwogfQogCiB2b2lkIEFzc2VtYmx5SGVscGVy
czo6aml0QXNzZXJ0SXNOdWxsKEdQUlJlZyBncHIpCiB7CiAgICAgSnVtcCBjaGVja051bGwgPSBi
cmFuY2hUZXN0UHRyKFplcm8sIGdwcik7Ci0gICAgYnJlYWtwb2ludCgpOworICAgIGFib3J0V2l0
aFJlYXNvbihBSElzTm90TnVsbCk7CiAgICAgY2hlY2tOdWxsLmxpbmsodGhpcyk7CiB9CiAKIHZv
aWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRBcmd1bWVudENvdW50U2FuZSgpCiB7CiAgICAg
SnVtcCBvayA9IGJyYW5jaDMyKEJlbG93LCBwYXlsb2FkRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291
bnQpLCBUcnVzdGVkSW1tMzIoMTAwMDAwMDApKTsKLSAgICBicmVha3BvaW50KCk7CisgICAgYWJv
cnRXaXRoUmVhc29uKEFISW5zYW5lQXJndW1lbnRDb3VudCk7CiAgICAgb2subGluayh0aGlzKTsK
IH0KICNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECiAKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjpl
bWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oQXNzZW1ibHlIZWxwZXJzJiBqaXQsIFRydXN0
ZWRJbW1QdHIgc3RydWN0dXJlLCBSZWdpc3RlcklEIGRlc3QpCit7CisgICAgY29uc3QgU3RydWN0
dXJlKiBzdHJ1Y3R1cmVQdHIgPSBzdGF0aWNfY2FzdDxjb25zdCBTdHJ1Y3R1cmUqPihzdHJ1Y3R1
cmUubV92YWx1ZSk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBqaXQuc3RvcmU2NChUcnVzdGVk
SW1tNjQoc3RydWN0dXJlUHRyLT5pZEJsb2IoKSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRl
c3QsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworICAgIGlmICghQVNTRVJUX0RJU0FC
TEVEKSB7CisgICAgICAgIEp1bXAgY29ycmVjdFN0cnVjdHVyZSA9IGppdC5icmFuY2gzMihFcXVh
bCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNl
dCgpKSwgVHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+aWQoKSkpOworICAgICAgICBqaXQuYWJv
cnRXaXRoUmVhc29uKEFIU3RydWN0dXJlSURJc1ZhbGlkKTsKKyAgICAgICAgY29ycmVjdFN0cnVj
dHVyZS5saW5rKCZqaXQpOworCisgICAgICAgIEp1bXAgY29ycmVjdEluZGV4aW5nVHlwZSA9IGpp
dC5icmFuY2g4KEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6Omlu
ZGV4aW5nVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+aW5kZXhpbmdU
eXBlKCkpKTsKKyAgICAgICAgaml0LmFib3J0V2l0aFJlYXNvbihBSEluZGV4aW5nVHlwZUlzVmFs
aWQpOworICAgICAgICBjb3JyZWN0SW5kZXhpbmdUeXBlLmxpbmsoJmppdCk7CisKKyAgICAgICAg
SnVtcCBjb3JyZWN0VHlwZSA9IGppdC5icmFuY2g4KEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhkZXN0LCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKHN0
cnVjdHVyZVB0ci0+dHlwZUluZm8oKS50eXBlKCkpKTsKKyAgICAgICAgaml0LmFib3J0V2l0aFJl
YXNvbihBSFR5cGVJbmZvSXNWYWxpZCk7CisgICAgICAgIGNvcnJlY3RUeXBlLmxpbmsoJmppdCk7
CisKKyAgICAgICAgSnVtcCBjb3JyZWN0RmxhZ3MgPSBqaXQuYnJhbmNoOChFcXVhbCwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tMzIoc3RydWN0dXJlUHRyLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpKSk7
CisgICAgICAgIGppdC5hYm9ydFdpdGhSZWFzb24oQUhUeXBlSW5mb0lubGluZVR5cGVGbGFnc0Fy
ZVZhbGlkKTsKKyAgICAgICAgY29ycmVjdEZsYWdzLmxpbmsoJmppdCk7CisgICAgfQorI2Vsc2UK
KyAgICAvLyBEbyBhIDMyLWJpdCB3aWRlIHN0b3JlIHRvIGluaXRpYWxpemUgdGhlIGNlbGwncyBm
aWVsZHMuCisgICAgaml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+b2JqZWN0
SW5pdGlhbGl6YXRpb25CbG9iKCkpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0Nl
bGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSk7CisgICAgaml0LnN0b3JlUHRyKHN0cnVjdHVyZSwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUo
SklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5o
CShyZXZpc2lvbiAxNjg2ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICAg
ICAgLy8gVGhpcyBjaGVjayBpcyBib3RoIHVubmVlZGVkIGFuZCBoYXJkZXIgdG8gd3JpdGUgY29y
cmVjdGx5IGZvciBBUk02NAogI2lmICFkZWZpbmVkKE5ERUJVRykgJiYgIUNQVShBUk02NCkKICAg
ICAgICAgSnVtcCBzdGFja1BvaW50ZXJBbGlnbmVkID0gYnJhbmNoVGVzdFB0cihaZXJvLCBzdGFj
a1BvaW50ZXJSZWdpc3RlciwgVHJ1c3RlZEltbTMyKDB4ZikpOwotICAgICAgICBicmVha3BvaW50
KCk7CisgICAgICAgIGFib3J0V2l0aFJlYXNvbihBSFN0YWNrUG9pbnRlck1pc2FsaWduZWQpOwog
ICAgICAgICBzdGFja1BvaW50ZXJBbGlnbmVkLmxpbmsodGhpcyk7CiAjZW5kaWYKICAgICB9CkBA
IC02MjksMzQgKzYyOSw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAotICAgIHN0YXRpYyB2
b2lkIGVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhBc3NlbWJseUhlbHBlcnMmIGppdCwg
VHJ1c3RlZEltbVB0ciBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAg
IGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJlUHRyID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3RydWN0
dXJlKj4oc3RydWN0dXJlLm1fdmFsdWUpOwotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGpp
dC5zdG9yZTY0KFRydXN0ZWRJbW02NChzdHJ1Y3R1cmVQdHItPmlkQmxvYigpKSwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7Ci0jaWZu
ZGVmIE5ERUJVRwotICAgICAgICBKdW1wIGNvcnJlY3RTdHJ1Y3R1cmUgPSBqaXQuYnJhbmNoMzIo
RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSksIFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVQdHItPmlkKCkpKTsKLSAgICAgICAgaml0
LmJyZWFrcG9pbnQoKTsKLSAgICAgICAgY29ycmVjdFN0cnVjdHVyZS5saW5rKCZqaXQpOwotCi0g
ICAgICAgIEp1bXAgY29ycmVjdEluZGV4aW5nVHlwZSA9IGppdC5icmFuY2g4KEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwg
VHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+aW5kZXhpbmdUeXBlKCkpKTsKLSAgICAgICAgaml0
LmJyZWFrcG9pbnQoKTsKLSAgICAgICAgY29ycmVjdEluZGV4aW5nVHlwZS5saW5rKCZqaXQpOwot
Ci0gICAgICAgIEp1bXAgY29ycmVjdFR5cGUgPSBqaXQuYnJhbmNoOChFcXVhbCwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0
ZWRJbW0zMihzdHJ1Y3R1cmVQdHItPnR5cGVJbmZvKCkudHlwZSgpKSk7Ci0gICAgICAgIGppdC5i
cmVha3BvaW50KCk7Ci0gICAgICAgIGNvcnJlY3RUeXBlLmxpbmsoJmppdCk7Ci0KLSAgICAgICAg
SnVtcCBjb3JyZWN0RmxhZ3MgPSBqaXQuYnJhbmNoOChFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoZGVzdCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIo
c3RydWN0dXJlUHRyLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpKSk7Ci0gICAgICAgIGpp
dC5icmVha3BvaW50KCk7Ci0gICAgICAgIGNvcnJlY3RGbGFncy5saW5rKCZqaXQpOwotI2VuZGlm
Ci0jZWxzZQotICAgICAgICAvLyBEbyBhIDMyLWJpdCB3aWRlIHN0b3JlIHRvIGluaXRpYWxpemUg
dGhlIGNlbGwncyBmaWVsZHMuCi0gICAgICAgIGppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihzdHJ1
Y3R1cmVQdHItPm9iamVjdEluaXRpYWxpemF0aW9uQmxvYigpKSwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoZGVzdCwgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSkpOwotICAgICAgICBqaXQu
c3RvcmVQdHIoc3RydWN0dXJlLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKLSNlbmRpZgotICAgIH0KKyAgICBzdGF0aWMgdm9pZCBl
bWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oQXNzZW1ibHlIZWxwZXJzJiBqaXQsIFRydXN0
ZWRJbW1QdHIgc3RydWN0dXJlLCBSZWdpc3RlcklEIGRlc3QpOwogCiAgICAgSnVtcCBjaGVja01h
cmtCeXRlKEdQUlJlZyBjZWxsKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAko
cmV2aXNpb24gMTY4Njg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzA2LDEwICszMDYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dm9pZCBlbWl0TG9hZEludDMyVG9Eb3VibGUoaW50IGluZGV4LCBGUFJlZ2lzdGVySUQgdmFsdWUp
OwogICAgICAgICBKdW1wIGVtaXRKdW1wSWZDZWxsTm90T2JqZWN0KFJlZ2lzdGVySUQgY2VsbFJl
Zyk7CiAKLSAgICAgICAgSnVtcCBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soSlNDZWxsKiwg
U3RydWN0dXJlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBSZWdpc3RlcklEIHNjcmF0Y2gpOwotICAg
ICAgICB2b2lkIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVjayhKU0NlbGwqLCBTdHJ1Y3R1cmUq
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIFJlZ2lzdGVySUQg
c2NyYXRjaCk7Ci0gICAgICAgIHZvaWQgdGVzdFByb3RvdHlwZShKU1ZhbHVlLCBKdW1wTGlzdCYg
ZmFpbHVyZUNhc2VzLCBTdHJ1Y3R1cmVTdHViSW5mbyopOwotCiAgICAgICAgIGVudW0gV3JpdGVC
YXJyaWVyTW9kZSB7IFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIsIFNob3VsZEZpbHRlckJhc2Us
IFNob3VsZEZpbHRlclZhbHVlLCBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUgfTsKICAgICAgICAg
Ly8gdmFsdWUgcmVnaXN0ZXIgaW4gd3JpdGUgYmFycmllciBpcyB1c2VkIGJlZm9yZSBhbnkgc2Ny
YXRjaCByZWdpc3RlcnMKICAgICAgICAgLy8gc28gbWF5IHNhZmVseSBiZSB0aGUgc2FtZSBhcyBl
aXRoZXIgb2YgdGhlIHNjcmF0Y2ggcmVnaXN0ZXJzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCShyZXZpc2lvbiAxNjg2ODkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
NTUsOSArOTU1LDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RpdihJbnN0cnVjdGlvbiogYwog
ICAgIGludCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgIE9wZXJh
bmRUeXBlcyB0eXBlcyA9IE9wZXJhbmRUeXBlczo6ZnJvbUludChjdXJyZW50SW5zdHJ1Y3Rpb25b
NF0udS5vcGVyYW5kKTsKICAgICBpZiAodHlwZXMuZmlyc3QoKS5kZWZpbml0ZWx5SXNOdW1iZXIo
KSAmJiB0eXBlcy5zZWNvbmQoKS5kZWZpbml0ZWx5SXNOdW1iZXIoKSkgewotI2lmbmRlZiBOREVC
VUcKLSAgICAgICAgYnJlYWtwb2ludCgpOwotI2VuZGlmCisgICAgICAgIGlmICghQVNTRVJUX0RJ
U0FCTEVEKQorICAgICAgICAgICAgYWJvcnRXaXRoUmVhc29uKEpJVERpdk9wZXJhbmRzQXJlTm90
TnVtYmVycyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKCFpc09wZXJhbmRDb25z
dGFudEltbWVkaWF0ZURvdWJsZShvcDEpICYmICFpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUlu
dChvcDEpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
MzJfNjQuY3BwCShyZXZpc2lvbiAxNjg2ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBK
SVQ6OkNvZGVSZWYgSklUOjpwcml2YXRlQ29tcGlsZUNUSU5hdGl2CiAgICAgcmVzdG9yZVJldHVy
bkFkZHJlc3NCZWZvcmVSZXR1cm4ocmVnVDMpOwogI2Vsc2UKICNlcnJvciAiSklUIG5vdCBzdXBw
b3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4iCi0gICAgYnJlYWtwb2ludCgpOworICAgIGFib3J0V2l0
aFJlYXNvbihKSVROb3RTdXBwb3J0ZWQpOwogI2VuZGlmIC8vIENQVShYODYpCiAKICAgICAvLyBD
aGVjayBmb3IgYW4gZXhjZXB0aW9uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDE2ODY4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMDYsNyArMTEwNiw3IEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9sb29wX2hpbnQoSW5zdHJ1Y3QKICAgICAgICAgSnVtcCBub09w
dGltaXplZEVudHJ5ID0gYnJhbmNoVGVzdFB0cihaZXJvLCByZXR1cm5WYWx1ZUdQUik7CiAgICAg
ICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CiAgICAgICAgICAgICBKdW1wIG9rID0gYnJhbmNo
UHRyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwgcmVnVDAsIFRydXN0ZWRJbW1QdHIoYml0d2lzZV9j
YXN0PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMTAwMCkpKSk7Ci0gICAgICAgICAgICBi
cmVha3BvaW50KCk7CisgICAgICAgICAgICBhYm9ydFdpdGhSZWFzb24oSklUVW5yZWFzb25hYmxl
TG9vcEhpbnRKdW1wVGFyZ2V0KTsKICAgICAgICAgICAgIG9rLmxpbmsodGhpcyk7CiAgICAgICAg
IH0KICAgICAgICAganVtcChyZXR1cm5WYWx1ZUdQUik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9u
IDE2ODY4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mz
Ml82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSwxMSArMTYxLDExIEBAIHZvaWQgSklUOjpl
bWl0X29wX2dldF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICAKICAgICBMYWJlbCBkb25lID0gbGFi
ZWwoKTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBKdW1wIHJlc3VsdE9LID0gYnJhbmNo
MzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykp
OwotICAgIGJyZWFrcG9pbnQoKTsKLSAgICByZXN1bHRPSy5saW5rKHRoaXMpOwotI2VuZGlmCisg
ICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgSnVtcCByZXN1bHRPSyA9IGJyYW5j
aDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcp
KTsKKyAgICAgICAgYWJvcnRXaXRoUmVhc29uKEpJVEdldEJ5VmFsUmVzdWx0SXNOb3RFbXB0eSk7
CisgICAgICAgIHJlc3VsdE9LLmxpbmsodGhpcyk7CisgICAgfQogCiAgICAgZW1pdFZhbHVlUHJv
ZmlsaW5nU2l0ZSgpOwogICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7CkBAIC02MDEs
MTEgKzYwMSwxMSBAQCB2b2lkIEpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlCiAg
ICAgICAgIGFkZFB0cihUcnVzdGVkSW1tUHRyKEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3Jh
Z2UoKSAtIChmaXJzdE91dE9mTGluZU9mZnNldCAtIDIpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVl
KSksIGJhc2UpOwogICAgICAgICBkb25lLmxpbmsodGhpcyk7CiAgICAgfSBlbHNlIHsKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECi0gICAgICAgIEp1bXAgaXNPdXRPZkxpbmUgPSBicmFuY2gzMihHcmVh
dGVyVGhhbk9yRXF1YWwsIG9mZnNldCwgVHJ1c3RlZEltbTMyKGZpcnN0T3V0T2ZMaW5lT2Zmc2V0
KSk7Ci0gICAgICAgIGJyZWFrcG9pbnQoKTsKLSAgICAgICAgaXNPdXRPZkxpbmUubGluayh0aGlz
KTsKLSNlbmRpZgorICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICAgICAg
SnVtcCBpc091dE9mTGluZSA9IGJyYW5jaDMyKEdyZWF0ZXJUaGFuT3JFcXVhbCwgb2Zmc2V0LCBU
cnVzdGVkSW1tMzIoZmlyc3RPdXRPZkxpbmVPZmZzZXQpKTsKKyAgICAgICAgICAgIGFib3J0V2l0
aFJlYXNvbihKSVRPZmZzZXRJc05vdE91dE9mTGluZSk7CisgICAgICAgICAgICBpc091dE9mTGlu
ZS5saW5rKHRoaXMpOworICAgICAgICB9CiAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBK
U09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBiYXNlKTsKICAgICAgICAgbmVnMzIob2Zmc2V0
KTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMTY4Njg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSwxMSArMTM5
LDExIEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICAKICAg
ICBMYWJlbCBkb25lID0gbGFiZWwoKTsKICAgICAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAg
SnVtcCByZXN1bHRPSyA9IGJyYW5jaFRlc3Q2NChOb25aZXJvLCByZWdUMCk7Ci0gICAgYnJlYWtw
b2ludCgpOwotICAgIHJlc3VsdE9LLmxpbmsodGhpcyk7Ci0jZW5kaWYKKyAgICBpZiAoIUFTU0VS
VF9ESVNBQkxFRCkgeworICAgICAgICBKdW1wIHJlc3VsdE9LID0gYnJhbmNoVGVzdDY0KE5vblpl
cm8sIHJlZ1QwKTsKKyAgICAgICAgYWJvcnRXaXRoUmVhc29uKEpJVEdldEJ5VmFsUmVzdWx0SXNO
b3RFbXB0eSk7CisgICAgICAgIHJlc3VsdE9LLmxpbmsodGhpcyk7CisgICAgfQogCiAgICAgZW1p
dFZhbHVlUHJvZmlsaW5nU2l0ZSgpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsK
QEAgLTI1MiwxMSArMjUyLDExIEBAIHZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJl
Z2lzdGUKICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihKU09iamVjdDo6b2Zmc2V0T2ZJbmxp
bmVTdG9yYWdlKCkgLSAoZmlyc3RPdXRPZkxpbmVPZmZzZXQgLSAyKSAqIHNpemVvZihFbmNvZGVk
SlNWYWx1ZSkpLCBiYXNlLCBzY3JhdGNoKTsKICAgICAgICAgZG9uZS5saW5rKHRoaXMpOwogICAg
IH0gZWxzZSB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgICAgICBKdW1wIGlzT3V0T2ZMaW5l
ID0gYnJhbmNoMzIoR3JlYXRlclRoYW5PckVxdWFsLCBvZmZzZXQsIFRydXN0ZWRJbW0zMihmaXJz
dE91dE9mTGluZU9mZnNldCkpOwotICAgICAgICBicmVha3BvaW50KCk7Ci0gICAgICAgIGlzT3V0
T2ZMaW5lLmxpbmsodGhpcyk7Ci0jZW5kaWYKKyAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQp
IHsKKyAgICAgICAgICAgIEp1bXAgaXNPdXRPZkxpbmUgPSBicmFuY2gzMihHcmVhdGVyVGhhbk9y
RXF1YWwsIG9mZnNldCwgVHJ1c3RlZEltbTMyKGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KSk7CisgICAg
ICAgICAgICBhYm9ydFdpdGhSZWFzb24oSklUT2Zmc2V0SXNOb3RPdXRPZkxpbmUpOworICAgICAg
ICAgICAgaXNPdXRPZkxpbmUubGluayh0aGlzKTsKKyAgICAgICAgfQogICAgICAgICBsb2FkUHRy
KEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc2NyYXRjaCk7CiAg
ICAgICAgIG5lZzMyKG9mZnNldCk7CiAgICAgfQpAQCAtOTc2LDQyICs5NzYsNiBAQCB2b2lkIEpJ
VDo6ZW1pdFdyaXRlQmFycmllcihKU0NlbGwqIG93bmVyCiAjZW5kaWYgLy8gRU5BQkxFKEdHQykK
IH0KIAotSklUOjpKdW1wIEpJVDo6YWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKEpTQ2VsbCog
b2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBSZWdpc3RlcklEIHNjcmF0Y2gpCi17Ci0gICAgaWYgKG9iamVjdC0+c3RydWN0dXJlKCkgPT0g
c3RydWN0dXJlICYmIHN0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRJc1N0aWxsVmFs
aWQoKSkgewotICAgICAgICBzdHJ1Y3R1cmUtPmFkZFRyYW5zaXRpb25XYXRjaHBvaW50KHN0dWJJ
bmZvLT5hZGRXYXRjaHBvaW50KG1fY29kZUJsb2NrKSk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAot
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIob2JqZWN0KSwgc2NyYXRjaCk7Ci0gICAgICAgIEp1
bXAgb2sgPSBicmFuY2hTdHJ1Y3R1cmUoRXF1YWwsIEFkZHJlc3Moc2NyYXRjaCwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwgc3RydWN0dXJlKTsKLSAgICAgICAgYnJlYWtwb2ludCgpOwot
ICAgICAgICBvay5saW5rKHRoaXMpOwotI2VuZGlmCi0gICAgICAgIEp1bXAgcmVzdWx0OyAvLyBS
ZXR1cm5pbmcgYW4gdW5zZXQganVtcCB0aGlzIHdheSBiZWNhdXNlIG90aGVyd2lzZSBWQysrIHdv
dWxkIGNvbXBsYWluLgotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICAKLSAgICBt
b3ZlKFRydXN0ZWRJbW1QdHIob2JqZWN0KSwgc2NyYXRjaCk7Ci0gICAgcmV0dXJuIGJyYW5jaFN0
cnVjdHVyZShOb3RFcXVhbCwgQWRkcmVzcyhzY3JhdGNoLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLCBzdHJ1Y3R1cmUpOwotfQotCi12b2lkIEpJVDo6YWRkU3RydWN0dXJlVHJhbnNpdGlv
bkNoZWNrKEpTQ2VsbCogb2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBSZWdpc3RlcklEIHNjcmF0
Y2gpCi17Ci0gICAgSnVtcCBmYWlsdXJlQ2FzZSA9IGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVj
ayhvYmplY3QsIHN0cnVjdHVyZSwgc3R1YkluZm8sIHNjcmF0Y2gpOwotICAgIGlmICghZmFpbHVy
ZUNhc2UuaXNTZXQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGZhaWx1cmVDYXNlcy5h
cHBlbmQoZmFpbHVyZUNhc2UpOwotfQotCi12b2lkIEpJVDo6dGVzdFByb3RvdHlwZShKU1ZhbHVl
IHByb3RvdHlwZSwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcywgU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvKQotewotICAgIGlmIChwcm90b3R5cGUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIEFTU0VSVChwcm90b3R5cGUuaXNDZWxsKCkpOwotICAgIGFkZFN0cnVjdHVyZVRyYW5z
aXRpb25DaGVjayhwcm90b3R5cGUuYXNDZWxsKCksIHByb3RvdHlwZS5hc0NlbGwoKS0+c3RydWN0
dXJlKCksIHN0dWJJbmZvLCBmYWlsdXJlQ2FzZXMsIHJlZ1QzKTsKLX0KLQogdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlR2V0QnlWYWwoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQ
dHIgcmV0dXJuQWRkcmVzcywgSklUQXJyYXlNb2RlIGFycmF5TW9kZSkKIHsKICAgICBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uID0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJl
Z2luKCkgKyBieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXg7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclByZXNlcnZhdGlvbldy
YXBwZXJHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxNjg2ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIxMSw3ICsyMTEsNyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZVJlZ2lzdGVy
UmVzdG9yYXRpb24oCiAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKICAgICAgICAgQXNzZW1i
bHlIZWxwZXJzOjpKdW1wIG9rID0gaml0LmJyYW5jaFB0cigKICAgICAgICAgICAgIEFzc2VtYmx5
SGVscGVyczo6QWJvdmUsIEdQUkluZm86OnJlZ1QxLCBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoc3RhdGljX2Nhc3Q8c2l6ZV90PigweDEwMDApKSk7Ci0gICAgICAgIGppdC5icmVha3Bv
aW50KCk7CisgICAgICAgIGppdC5hYm9ydFdpdGhSZWFzb24oUlBXVW5yZWFzb25hYmxlSnVtcFRh
cmdldCk7CiAgICAgICAgIG9rLmxpbmsoJmppdCk7CiAgICAgfQogICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAxNjg2ODkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsMTcg
KzEzMiwxOCBAQCBzdGF0aWMgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soCiB7CiAg
ICAgaWYgKG9iamVjdC0+c3RydWN0dXJlKCkgPT0gc3RydWN0dXJlICYmIHN0cnVjdHVyZS0+dHJh
bnNpdGlvbldhdGNocG9pbnRTZXRJc1N0aWxsVmFsaWQoKSkgewogICAgICAgICBzdHJ1Y3R1cmUt
PmFkZFRyYW5zaXRpb25XYXRjaHBvaW50KHN0dWJJbmZvLmFkZFdhdGNocG9pbnQoY29kZUJsb2Nr
KSk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgICAgICAvLyBJZiB3ZSBleGVjdXRlIHRoaXMg
Y29kZSwgdGhlIG9iamVjdCBtdXN0IGhhdmUgdGhlIHN0cnVjdHVyZSB3ZSBleHBlY3QuIEFzc2Vy
dAotICAgICAgICAvLyB0aGlzIGluIGRlYnVnIG1vZGVzLgotICAgICAgICBqaXQubW92ZShNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihvYmplY3QpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXAgb2sgPSBicmFuY2hTdHJ1Y3R1cmUoaml0LAotICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc2NyYXRjaEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKLSAgICAgICAg
ICAgIHN0cnVjdHVyZSk7Ci0gICAgICAgIGppdC5icmVha3BvaW50KCk7Ci0gICAgICAgIG9rLmxp
bmsoJmppdCk7Ci0jZW5kaWYKKyAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAg
ICAgICAgIC8vIElmIHdlIGV4ZWN1dGUgdGhpcyBjb2RlLCB0aGUgb2JqZWN0IG11c3QgaGF2ZSB0
aGUgc3RydWN0dXJlIHdlIGV4cGVjdC4gQXNzZXJ0CisgICAgICAgICAgICAvLyB0aGlzIGluIGRl
YnVnIG1vZGVzLgorICAgICAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIob2JqZWN0KSwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBvayA9IGJyYW5jaFN0cnVjdHVyZSgKKyAgICAgICAgICAgICAgICBqaXQsCisgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLAorICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
CisgICAgICAgICAgICAgICAgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIGppdC5hYm9ydFdpdGhS
ZWFzb24oUmVwYXRjaEluZWZmZWN0aXZlV2F0Y2hwb2ludCk7CisgICAgICAgICAgICBvay5saW5r
KCZqaXQpOworICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC0xNTcx
LDcgKzE1NzIsNyBAQCB2b2lkIGxpbmtDbG9zdXJlQ2FsbCgKICAgICBpZiAoIUFTU0VSVF9ESVNB
QkxFRCkgewogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgb2tBcmd1bWVudENvdW50ID0gc3R1
YkppdC5icmFuY2gzMigKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QmVsb3csIENDYWxsSGVs
cGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzdGF0aWNf
Y2FzdDxwdHJkaWZmX3Q+KHNpemVvZihSZWdpc3RlcikgKiBKU1N0YWNrOjpBcmd1bWVudENvdW50
KSArIG9mZnNldFRvRnJhbWUgKyBQYXlsb2FkT2Zmc2V0KSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoMTAwMDAwMDApKTsKLSAgICAgICAgc3R1YkppdC5icmVha3BvaW50KCk7CisgICAgICAg
IHN0dWJKaXQuYWJvcnRXaXRoUmVhc29uKFJlcGF0Y2hJbnNhbmVBcmd1bWVudENvdW50KTsKICAg
ICAgICAgb2tBcmd1bWVudENvdW50LmxpbmsoJnN0dWJKaXQpOwogICAgIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNpb24g
MTY4Njg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NSwxNyArNDUsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGlu
bGluZSB2b2lkIGVtaXRQb2ludGVyVmFsaWRhdGlvbihDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVn
IHBvaW50ZXJHUFIpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIGlmIChBU1NFUlRfRElT
QUJMRUQpCisgICAgICAgIHJldHVybjsKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgaXNOb25aZXJv
ID0gaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBwb2ludGVyR1BSKTsK
LSAgICBqaXQuYnJlYWtwb2ludCgpOworICAgIGppdC5hYm9ydFdpdGhSZWFzb24oVEdJbnZhbGlk
UG9pbnRlcik7CiAgICAgaXNOb25aZXJvLmxpbmsoJmppdCk7CiAgICAgaml0LnB1c2hUb1NhdmUo
cG9pbnRlckdQUik7CiAgICAgaml0LmxvYWQ4KHBvaW50ZXJHUFIsIHBvaW50ZXJHUFIpOwogICAg
IGppdC5wb3BUb1Jlc3RvcmUocG9pbnRlckdQUik7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShq
aXQpOwotICAgIFVOVVNFRF9QQVJBTShwb2ludGVyR1BSKTsKLSNlbmRpZgogfQogCiAvLyBXZSB3
aWxsIGp1bXAgaGVyZSBpZiB0aGUgSklUIGNvZGUgdHJpZXMgdG8gbWFrZSBhIGNhbGwsIGJ1dCB0
aGUKQEAgLTM3Myw3ICszNzAsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2
ZUZvckdlCiAjZWxzZQogI2Vycm9yICJKSVQgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3Jt
LiIKICAgICBVTlVTRURfUEFSQU0oZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pOwotICAgIGJy
ZWFrcG9pbnQoKTsKKyAgICBhYm9ydFdpdGhSZWFzb24oVEdOb3RTdXBwb3J0ZWQpOwogI2VuZGlm
CiAKICAgICAvLyBDaGVjayBmb3IgYW4gZXhjZXB0aW9uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9ZYXJySklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJySklULmNwcAkocmV2aXNpb24gMTY4Njg5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyckpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MzksMTYgKzE2Mzks
MTQgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbQogICAgICAgICAg
ICAgICAgIGNvbnN0IFJlZ2lzdGVySUQgaW5kZXhUZW1wb3JhcnkgPSByZWdUMDsKICAgICAgICAg
ICAgICAgICBBU1NFUlQodGVybS0+cXVhbnRpdHlDb3VudCA9PSAxKTsKIAotI2lmbmRlZiBOREVC
VUcKICAgICAgICAgICAgICAgICAvLyBSdW50aW1lIEFTU0VSVCB0byBtYWtlIHN1cmUgdGhhdCB0
aGUgbmVzdGVkIGFsdGVybmF0aXZlIGhhbmRsZWQgdGhlCiAgICAgICAgICAgICAgICAgLy8gIm5v
IGlucHV0IGNvbnN1bWVkIiBjaGVjay4KLSAgICAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRp
dHlUeXBlICE9IFF1YW50aWZpZXJGaXhlZENvdW50ICYmICF0ZXJtLT5wYXJlbnRoZXNlcy5kaXNq
dW5jdGlvbi0+bV9taW5pbXVtU2l6ZSkgeworICAgICAgICAgICAgICAgIGlmICghQVNTRVJUX0RJ
U0FCTEVEICYmIHRlcm0tPnF1YW50aXR5VHlwZSAhPSBRdWFudGlmaWVyRml4ZWRDb3VudCAmJiAh
dGVybS0+cGFyZW50aGVzZXMuZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemUpIHsKICAgICAgICAg
ICAgICAgICAgICAgSnVtcCBwYXN0QnJlYWtwb2ludDsKICAgICAgICAgICAgICAgICAgICAgcGFz
dEJyZWFrcG9pbnQgPSBicmFuY2gzMihOb3RFcXVhbCwgaW5kZXgsIEFkZHJlc3Moc3RhY2tQb2lu
dGVyUmVnaXN0ZXIsIHRlcm0tPmZyYW1lTG9jYXRpb24gKiBzaXplb2Yodm9pZCopKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgYWJvcnRX
aXRoUmVhc29uKFlBUlJOb0lucHV0Q29uc3VtZWQpOwogICAgICAgICAgICAgICAgICAgICBwYXN0
QnJlYWtwb2ludC5saW5rKHRoaXMpOwogICAgICAgICAgICAgICAgIH0KLSNlbmRpZgogCiAgICAg
ICAgICAgICAgICAgLy8gSWYgdGhlIHBhcmVudGhlc2UgYXJlIGNhcHR1cmluZywgc3RvcmUgdGhl
IGVuZGluZyBpbmRleCB2YWx1ZSB0byB0aGUKICAgICAgICAgICAgICAgICAvLyBjYXB0dXJlcyBh
cnJheSwgb2Zmc2V0dGluZyBhcyBuZWNlc3NhcnkuCkBAIC0xNjk1LDE2ICsxNjkzLDE2IEBAIGNs
YXNzIFlhcnJHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW0KICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGNhc2UgT3BQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEVuZDogewogICAg
ICAgICAgICAgICAgIFlhcnJPcCYgYmVnaW5PcCA9IG1fb3BzW29wLm1fcHJldmlvdXNPcF07Ci0j
aWZuZGVmIE5ERUJVRwotICAgICAgICAgICAgICAgIFBhdHRlcm5UZXJtKiB0ZXJtID0gb3AubV90
ZXJtOwotCi0gICAgICAgICAgICAgICAgLy8gUnVudGltZSBBU1NFUlQgdG8gbWFrZSBzdXJlIHRo
YXQgdGhlIG5lc3RlZCBhbHRlcm5hdGl2ZSBoYW5kbGVkIHRoZQotICAgICAgICAgICAgICAgIC8v
ICJubyBpbnB1dCBjb25zdW1lZCIgY2hlY2suCi0gICAgICAgICAgICAgICAgSnVtcCBwYXN0QnJl
YWtwb2ludDsKLSAgICAgICAgICAgICAgICBwYXN0QnJlYWtwb2ludCA9IGJyYW5jaDMyKE5vdEVx
dWFsLCBpbmRleCwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgdGVybS0+ZnJhbWVMb2Nh
dGlvbiAqIHNpemVvZih2b2lkKikpKTsKLSAgICAgICAgICAgICAgICBicmVha3BvaW50KCk7Ci0g
ICAgICAgICAgICAgICAgcGFzdEJyZWFrcG9pbnQubGluayh0aGlzKTsKLSNlbmRpZgorICAgICAg
ICAgICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgICAgICAgICAgICAgIFBh
dHRlcm5UZXJtKiB0ZXJtID0gb3AubV90ZXJtOworICAgICAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICAgICAgLy8gUnVudGltZSBBU1NFUlQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG5l
c3RlZCBhbHRlcm5hdGl2ZSBoYW5kbGVkIHRoZQorICAgICAgICAgICAgICAgICAgICAvLyAibm8g
aW5wdXQgY29uc3VtZWQiIGNoZWNrLgorICAgICAgICAgICAgICAgICAgICBKdW1wIHBhc3RCcmVh
a3BvaW50OworICAgICAgICAgICAgICAgICAgICBwYXN0QnJlYWtwb2ludCA9IGJyYW5jaDMyKE5v
dEVxdWFsLCBpbmRleCwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgdGVybS0+ZnJhbWVM
b2NhdGlvbiAqIHNpemVvZih2b2lkKikpKTsKKyAgICAgICAgICAgICAgICAgICAgYWJvcnRXaXRo
UmVhc29uKFlBUlJOb0lucHV0Q29uc3VtZWQpOworICAgICAgICAgICAgICAgICAgICBwYXN0QnJl
YWtwb2ludC5saW5rKHRoaXMpOworICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAg
IC8vIFdlIGtub3cgdGhhdCB0aGUgbWF0Y2ggaXMgbm9uLXplcm8sIHdlIGNhbiBhY2NlcHQgaXQg
IGFuZAogICAgICAgICAgICAgICAgIC8vIGxvb3AgYmFjayB1cCB0byB0aGUgaGVhZCBvZiB0aGUg
c3VicGF0dGVybi4K
</data>

          </attachment>
      

    </bug>

</bugzilla>