<?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>79310</bug_id>
          
          <creation_ts>2012-02-22 17:22:48 -0800</creation_ts>
          <short_desc>DFG OSR exit value profiling should have graceful handling of local variables and arguments</short_desc>
          <delta_ts>2012-02-23 16:41:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>562606</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-22 17:22:48 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562611</commentid>
    <comment_count>1</comment_count>
      <attachid>128345</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-22 17:26:17 -0800</bug_when>
    <thetext>Created attachment 128345
work in progress

Work in progress.  Backing up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562782</commentid>
    <comment_count>2</comment_count>
      <attachid>128385</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-22 21:03:44 -0800</bug_when>
    <thetext>Created attachment 128385
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562789</commentid>
    <comment_count>3</comment_count>
      <attachid>128386</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-22 21:10:35 -0800</bug_when>
    <thetext>Created attachment 128386
the patch

Updated the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562802</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-22 21:37:34 -0800</bug_when>
    <thetext>Mac build results seem to be because some of my template foo requires some compiler love.  I&apos;ll fiddle with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562811</commentid>
    <comment_count>5</comment_count>
      <attachid>128386</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-02-22 21:54:04 -0800</bug_when>
    <thetext>Comment on attachment 128386
the patch

Attachment 128386 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11576125</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562873</commentid>
    <comment_count>6</comment_count>
      <attachid>128405</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-22 23:22:43 -0800</bug_when>
    <thetext>Created attachment 128405
the patch

Attempting to fix build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562892</commentid>
    <comment_count>7</comment_count>
      <attachid>128411</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-22 23:42:59 -0800</bug_when>
    <thetext>Created attachment 128411
the patch

More build fixing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563490</commentid>
    <comment_count>8</comment_count>
      <attachid>128411</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-02-23 14:32:40 -0800</bug_when>
    <thetext>Comment on attachment 128411
the patch

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

&gt; Source/JavaScriptCore/bytecode/LazyOperandValueProfile.h:162
&gt; +    OwnPtr&lt;SegmentedVector&lt;LazyOperandValueProfile, 8&gt; &gt; m_data;

typedef for SegmentedVector&lt;LazyOperandValueProfile, 8&gt; wouldn&apos;t hurt.

&gt; Source/JavaScriptCore/dfg/DFGNode.h:488
&gt; +    

Please revert before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563492</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-23 14:33:29 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 128411 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=128411&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/LazyOperandValueProfile.h:162
&gt; &gt; +    OwnPtr&lt;SegmentedVector&lt;LazyOperandValueProfile, 8&gt; &gt; m_data;
&gt; 
&gt; typedef for SegmentedVector&lt;LazyOperandValueProfile, 8&gt; wouldn&apos;t hurt.

Good point!

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGNode.h:488
&gt; &gt; +    
&gt; 
&gt; Please revert before landing.

Will do.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563514</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-23 14:50:53 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/108677</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563679</commentid>
    <comment_count>11</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-23 16:41:49 -0800</bug_when>
    <thetext>&lt;rdar://problem/10923454&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128345</attachid>
            <date>2012-02-22 17:26:17 -0800</date>
            <delta_ts>2012-02-22 21:03:44 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>lazyoperands_patch_1.diff</filename>
            <type>text/plain</type>
            <size>75843</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA4NTgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk3IEBA
CisyMDEyLTAyLTIyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIE9TUiBleGl0IHZhbHVlIHByb2ZpbGluZyBzaG91bGQgaGF2ZSBncmFjZWZ1bCBoYW5kbGlu
ZyBvZiBsb2NhbCB2YXJpYWJsZXMgYW5kIGFyZ3VtZW50cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkzMTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFdvcmsgaW4gcHJvZ3Jlc3MuCisKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c3Ry
b25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9j
ay5oOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsYXp5
T3BlcmFuZFZhbHVlUHJvZmlsZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL0xhenlPcGVyYW5kVmFs
dWVQcm9maWxlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpDb21w
cmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXI6OkNvbXByZXNzZWRMYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZUhvbGRlcik6CisgICAgICAgIChKU0M6OkNvbXByZXNzZWRMYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZUhvbGRlcjo6fkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhv
bGRlcik6CisgICAgICAgIChKU0M6OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhv
bGRlcjo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9ucyk6CisgICAgICAgIChKU0M6OkNvbXByZXNz
ZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6YWRkKToKKyAgICAgICAgKEpTQzo6TGF6
eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXI6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2Vy
KToKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXI6OmdldElmUHJl
c2VudCk6CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyOjpwcmVk
aWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtl
eSk6CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5OjpMYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZUtleSk6CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxl
S2V5OjpvcGVyYW5kKToKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXk6
Oj0pOgorICAgICAgICAoSlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleTo6aGFzaCk6Cisg
ICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5OjpieXRlY29kZU9mZnNldCk6
CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5Ojppc0hhc2hUYWJsZURl
bGV0ZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5SGFz
aDo6aGFzaCk6CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5SGFzaDo6
ZXF1YWwpOgorICAgICAgICAoTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXlIYXNoKToKKyAgICAg
ICAgKFdURik6CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlOjpMYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZSk6CisgICAgICAgIChMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSk6Cisg
ICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlOjprZXkpOgorICAgICAgICAoQ29t
cHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyKToKKyAgICAgICAgKExhenlPcGVy
YW5kVmFsdWVQcm9maWxlUGFyc2VyKToKKyAgICAgICAgKiBieXRlY29kZS9NZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKE1ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpNZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlOjpNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKToKKyAgICAgICAgKEpT
Qzo6TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZnJvbUxhenlPcGVyYW5kKToKKyAgICAg
ICAgKEpTQzo6TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6b3BlcmFuZCk6CisgICAgICAg
IChKU0M6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmdldCk6CisgICAgICAgICogYnl0
ZWNvZGUvVmFsdWVQcm9maWxlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBieXRlY29kZS9WYWx1
ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJh
c2U6OlZhbHVlUHJvZmlsZUJhc2UpOgorICAgICAgICAoVmFsdWVQcm9maWxlQmFzZSk6CisgICAg
ICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OmR1bXApOgorICAgICAgICAoSlNDOjpWYWx1ZVBy
b2ZpbGVCYXNlOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpNaW5p
bWFsVmFsdWVQcm9maWxlOjpNaW5pbWFsVmFsdWVQcm9maWxlKToKKyAgICAgICAgKFZhbHVlUHJv
ZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHMpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGVX
aXRoTG9nTnVtYmVyT2ZCdWNrZXRzOjpWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRz
KToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpWYWx1ZVByb2ZpbGUpOgorICAgICAgICAo
SlNDOjpnZXRWYWx1ZVByb2ZpbGVCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmdldFJh
cmVDYXNlUHJvZmlsZUJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwOgorICAgICAgICAoQnl0ZUNvZGVQYXJzZXIpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjppbmplY3RMYXp5T3BlcmFuZFByZWRpY3Rpb24pOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpnZXRMb2NhbCk6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OmdldEFyZ3VtZW50KToKKyAgICAgICAgKElubGluZVN0YWNrRW50cnkp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpmaXhWYXJpYWJsZUFjY2Vzc1By
ZWRpY3Rpb25zKToKKyAgICAgICAgKERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6
CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OnZhbHVlUHJvZmlsZUZvcik6CisgICAgICAgIChK
U0M6OkRGRzo6R3JhcGg6Om1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3IpOgorICAgICAg
ICAoR3JhcGgpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChOb2RlKToKKyAg
ICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6
T1NSRXhpdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuaDoKKyAgICAgICAgKE9TUkV4aXQp
OgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RG
R09TUkV4aXRDb21waWxlcjY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGls
ZXI6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50VHlwZXMpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpzcGVjdWxhdGlvbkNoZWNrKToKKyAgICAgICAgKiBkZmcvREZHVmFyaWFi
bGVBY2Nlc3NEYXRhLmg6CisgICAgICAgIChKU0M6OkRGRzo6VmFyaWFibGVBY2Nlc3NEYXRhOjpu
b25VbmlmaWVkUHJlZGljdGlvbik6CisgICAgICAgIChWYXJpYWJsZUFjY2Vzc0RhdGEpOgorCiAy
MDEyLTAyLTIyICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAog
ICAgICAgICBGaXggT2JqZWN0LmZyZWV6ZSBmb3Igbm9uLWZpbmFsIG9iamVjdHMuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTA4NDUzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzksOSBAQAogCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJB
RTAgLyogUHV0S2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY5RkM4QzExNEUxQjVGQjAwRDUyQUUwIC8qIFB1dEtpbmQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjlGQzhEMDE0RTYxMkQ4MDBE
NTJBRTAgLyogRGF0YUxvZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjlGQzhDRDE0RTYxMkQ1MDBENTJBRTAgLyogRGF0YUxvZy5jcHAgKi87IH07
CiAJCTBGOUZDOEQxMTRFNjEyREEwMEQ1MkFFMCAvKiBEYXRhTG9nLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlGQzhDRTE0RTYxMkQ1MDBENTJBRTAg
LyogRGF0YUxvZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGQjU0Njc3MTRGNTlCNUMwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmls
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNTQ2
NzYxNEY1OUFEMTAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZCNTQ2NzkxNEY1QzQ2
QjAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjU0Njc4MTRGNUM0NjgwMDJDMjk4OSAv
KiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAgKi87IH07CisJCTBGQjU0NjdCMTRGNUM3RTEw
MDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI1NDY3QTE0RjVDN0Q0MDAyQzI5ODkg
LyogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQkMwQUU3MTQ5NkM3QzQwMEQ0RkJERCAvKiBE
RkdFeGl0UHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkJDMEFFNDE0OTZDN0MxMDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuY3BwICov
OyB9OwogCQkwRkJDMEFFODE0OTZDN0M3MDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkMwQUU1MTQ5NkM3
QzEwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQkQ3RTY5MTQ0Nzk5OTYwMDQ4MTMxNSAvKiBDb2Rl
T3JpZ2luLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkJEN0U2NzE0NDc5OThGMDA0ODEzMTUgLyogQ29kZU9yaWdpbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNjksNyArMTcyLDYgQEAKIAkJMEZE
ODJFNTcxNDFEQUYxMDAwMTc5Qzk0IC8qIERGR09TUkVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MkU1MzE0MURBRURFMDAxNzlDOTQgLyog
REZHT1NSRW50cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRkQ4MkU4NTE0MUYzRkUzMDAxNzlDOTQgLyogQm91bmRzQ2hlY2tlZFBvaW50ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgyRTgy
MTQxRjNGQzkwMDE3OUM5NCAvKiBCb3VuZHNDaGVja2VkUG9pbnRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRDgyRTg2MTQxRjNGRjEwMDE3
OUM5NCAvKiBQcmVkaWN0ZWRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGRDgyRTg0MTQxRjNGREEwMDE3OUM5NCAvKiBQcmVkaWN0ZWRUeXBl
LmNwcCAqLzsgfTsKLQkJMEZEODJFOTAxNDIwN0E1RjAwMTc5Qzk0IC8qIFZhbHVlUHJvZmlsZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MkU4
RTE0MjA3QTUxMDAxNzlDOTQgLyogVmFsdWVQcm9maWxlLmNwcCAqLzsgfTsKIAkJMEZEODJGNEIx
NDI4MDZBMTAwMTc5Qzk0IC8qIEJpdFZlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEODJGNDkxNDI4MDY5MjAwMTc5Qzk0IC8qIEJpdFZlY3Rv
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
RTIyOEVEMTQzNkFCMjcwMDE5NkM0OCAvKiBPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkUyMjhFQjE0MzZBQjIzMDAxOTZDNDggLyogT3B0
aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGRTIyOEVFMTQzNkFCMkMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTIyOEVBMTQzNkFCMjMwMDE5NkM0OCAv
KiBPcHRpb25zLmNwcCAqLzsgfTsKQEAgLTEwMDEsNiArMTAwMyw5IEBACiAJCTBGOUZDOEMxMTRF
MUI1RkIwMEQ1MkFFMCAvKiBQdXRLaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFB1dEtpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5RkM4Q0QxNEU2
MTJENTAwRDUyQUUwIC8qIERhdGFMb2cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRGF0YUxvZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUZD
OENFMTRFNjEyRDUwMEQ1MkFFMCAvKiBEYXRhTG9nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERhdGFMb2cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCNTQ2
NzYxNEY1OUFEMTAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQjU0Njc4MTRGNUM0NjgwMDJDMjk4OSAvKiBMYXp5
T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGQjU0NjdBMTRGNUM3RDQwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQ
cm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCQzBBRTQx
NDk2QzdDMTAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERGR0V4aXRQcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEZCQzBBRTUxNDk2QzdDMTAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERGR0V4aXRQcm9maWxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQkQ3RTY3MTQ0Nzk5OEYwMDQ4MTMxNSAvKiBDb2Rl
T3JpZ2luLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVPcmlnaW4uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMzMsNyArMTAzOCw2IEBACiAJCTBGRDgy
RTUzMTQxREFFREUwMDE3OUM5NCAvKiBERkdPU1JFbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBERkdPU1JFbnRyeS5oOyBwYXRoID0gZGZnL0RGR09TUkVudHJ5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDgyRTgyMTQxRjNGQzkwMDE3OUM5NCAvKiBC
b3VuZHNDaGVja2VkUG9pbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBC
b3VuZHNDaGVja2VkUG9pbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkQ4
MkU4NDE0MUYzRkRBMDAxNzlDOTQgLyogUHJlZGljdGVkVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcmVkaWN0ZWRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMEZEODJFOEUxNDIwN0E1MTAwMTc5Qzk0IC8qIFZhbHVlUHJvZmlsZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWYWx1ZVByb2ZpbGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkQ4MkY0OTE0MjgwNjkyMDAxNzlDOTQg
LyogQml0VmVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJpdFZlY3Rv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkUyMjhFQTE0MzZBQjIzMDAxOTZD
NDggLyogT3B0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBP
cHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFMjI4RUIxNDM2QUIy
MzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
T3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjc3Niw2ICsyNzgwLDkg
QEAKIAkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRkI1NDY3QTE0RjVDN0Q0MDAyQzI5
ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oICovLAorCQkJCTBGQjU0Njc4MTRG
NUM0NjgwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAgKi8sCisJCQkJMEZC
NTQ2NzYxNEY1OUFEMTAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmggKi8sCiAJ
CQkJMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLywK
IAkJCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLywK
IAkJCQkwRjlGQzhCRjE0RTFCNUZCMDBENTJBRTAgLyogUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5j
cHAgKi8sCkBAIC0yODE5LDcgKzI4MjYsNiBAQAogCQkJCTE0MjlEODg0MEVEMjFDM0QwMEI4OTYx
OSAvKiBTYW1wbGluZ1Rvb2wuaCAqLywKIAkJCQlCQ0NGMEQwQjBFRjBCOEE1MDA0MTNDOEYgLyog
U3RydWN0dXJlU3R1YkluZm8uY3BwICovLAogCQkJCUJDQ0YwRDA3MEVGMEFBQjkwMDQxM0M4RiAv
KiBTdHJ1Y3R1cmVTdHViSW5mby5oICovLAotCQkJCTBGRDgyRThFMTQyMDdBNTEwMDE3OUM5NCAv
KiBWYWx1ZVByb2ZpbGUuY3BwICovLAogCQkJCTBGOTYzQjM2MTNGQzZGREUwMDAyRDlCMiAvKiBW
YWx1ZVByb2ZpbGUuaCAqLywKIAkJCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVS
ZWNvdmVyeS5oICovLAogCQkJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVn
aXN0ZXIuaCAqLywKQEAgLTMzOTAsNiArMzM5Niw4IEBACiAJCQkJMEZGRkM5NUUxNEVGOTBCNzAw
QzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkZGQzk2MDE0RUY5MEJEMDBDNzI1MzIgLyogREZHVmlydHVhbFJlZ2lzdGVyQWxsb2Nh
dGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDk3MjA5MTE0RUI4MzE1MDBGRUIxQjcg
LyogUGFzc1dlYWsuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQjU0Njc3MTRGNTlCNUMwMDJDMjk4
OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZCNTQ2
N0IxNEY1QzdFMTAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpAQCAtMzk2Miw3ICszOTcwLDYgQEAKIAkJCQkyNjg0QjJERjE0RDRBOUIyMDA3
MkMwQjYgLyogVVJMU2VnbWVudHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlERUUxMDdF
QzdFNzAwNjUwNDQ2IC8qIFVTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFFRjc5QUEw
Q0U5N0JBNjAwODhENTAwIC8qIFVURjguY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEZEODJFOTAx
NDIwN0E1RjAwMTc5Qzk0IC8qIFZhbHVlUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkM4MTUxNjE0MDUxMUI1MDBDRkE2MDMgLyogVlRhYmxlU3BlY3RydW0uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEZDODE1MEIxNDA0M0MwRTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY4QkZBMTcxMTdDRjE5OTAwQjkwOEIxIC8qIFdURlN0
cmluZy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM5OTgsNiArNDAwNSw3IEBACiAJCQkJMEZGRkM5
NUIxNEVGOTBBRDAwQzcyNTMyIC8qIERGR1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RkZDOTVEMTRFRjkwQjMwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkZGQzk1RjE0RUY5MEJCMDBDNzI1MzIgLyogREZHVmly
dHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGQjU0
Njc5MTRGNUM0NkIwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCShyZXZpc2lvbiAxMDg0NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk0Niw2ICsxOTQ2LDggQEAgdm9p
ZCBDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcgogICAgICAgICAgICAgdmlzaXRv
ci5hcHBlbmQoJmlubGluZUNhbGxGcmFtZS5jYWxsZWUpOwogICAgICAgICB9CiAgICAgfQorICAg
IAorICAgIG1fbGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVzLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bnMoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTA4NDUzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNv
cHkpCkBAIC03MjcsNiArNzI3LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAg
ICAgICAgREZHOjpFeGl0UHJvZmlsZSYgZXhpdFByb2ZpbGUoKSB7IHJldHVybiBtX2V4aXRQcm9m
aWxlOyB9CisgICAgICAgIAorICAgICAgICBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGVIb2xkZXImIGxhenlPcGVyYW5kVmFsdWVQcm9maWxlcygpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBtX2xhenlPcGVyYW5kVmFsdWVQcm9maWxlczsKKyAgICAgICAgfQogI2VuZGlm
CiAKICAgICAgICAgLy8gQ29uc3RhbnQgUG9vbApAQCAtMTE4Nyw2ICsxMTkyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIC8vIFRoaXMgaXMgcmVsZXZhbnQgdG8gbm9uLURGRyBjb2RlIGJs
b2NrcyB0aGF0IHNlcnZlIGFzIHRoZSBwcm9maWxlZCBjb2RlIGJsb2NrCiAgICAgICAgIC8vIGZv
ciBERkcgY29kZSBibG9ja3MuCiAgICAgICAgIERGRzo6RXhpdFByb2ZpbGUgbV9leGl0UHJvZmls
ZTsKKyAgICAgICAgQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyIG1fbGF6
eU9wZXJhbmRWYWx1ZVByb2ZpbGVzOwogI2VuZGlmCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVS
KQogICAgICAgICBWZWN0b3I8VmFsdWVQcm9maWxlPiBtX2FyZ3VtZW50VmFsdWVQcm9maWxlczsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xh
enlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxhenlPcGVyYW5kVmFsdWVQ
cm9maWxlLmgiCisKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisKK25hbWVzcGFjZSBKU0Mg
eworCitDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXI6OkNvbXByZXNzZWRM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcigpIHsgfQorQ29tcHJlc3NlZExhenlPcGVyYW5k
VmFsdWVQcm9maWxlSG9sZGVyOjp+Q29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9s
ZGVyKCkgeyB9CisKK3ZvaWQgQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVy
Ojpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb25zKCkKK3sKKyAgICBpZiAoIW1fZGF0YSkKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2RhdGEtPnNp
emUoKTsgKytpKQorICAgICAgICBtX2RhdGEtPmF0KGkpLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bigpOworfQorCitMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSogQ29tcHJlc3NlZExhenlPcGVyYW5k
VmFsdWVQcm9maWxlSG9sZGVyOjphZGQoCisgICAgY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGVLZXkmIGtleSkKK3sKKyAgICBpZiAoIW1fZGF0YSkKKyAgICAgICAgbV9kYXRhID0gYWRvcHRQ
dHIobmV3IFNlZ21lbnRlZFZlY3RvcjxMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSwgOD4oKSk7Cisg
ICAgZWxzZSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2RhdGEtPnNpemUo
KTsgKytpKSB7CisgICAgICAgICAgICBpZiAobV9kYXRhLT5hdChpKS5rZXkoKSA9PSBrZXkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuICZtX2RhdGEtPmF0KGkpOworICAgICAgICB9CisgICAgfQor
ICAgIAorICAgIG1fZGF0YS0+YXBwZW5kKExhenlPcGVyYW5kVmFsdWVQcm9maWxlKGtleSkpOwor
ICAgIHJldHVybiAmbV9kYXRhLT5sYXN0KCk7Cit9CisKK0xhenlPcGVyYW5kVmFsdWVQcm9maWxl
UGFyc2VyOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlcigKKyAgICBDb21wcmVzc2VkTGF6
eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXImIGhvbGRlcikKKyAgICA6IG1faG9sZGVyKGhvbGRl
cikKK3sKKyAgICBpZiAoIW1faG9sZGVyLm1fZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIAor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2hvbGRlci5tX2RhdGEtPnNpemUoKTsgKytp
KQorICAgICAgICBtX21hcC5hZGQobV9ob2xkZXIubV9kYXRhLT5hdChpKS5rZXkoKSwgJm1faG9s
ZGVyLm1fZGF0YS0+YXQoaSkpOworfQorCitMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSogTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXI6OmdldElmUHJlc2VudCgKKyAgICBjb25zdCBMYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZUtleSYga2V5KSBjb25zdAoreworICAgIEhhc2hNYXA8TGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGVLZXksIExhenlPcGVyYW5kVmFsdWVQcm9maWxlKj46Oml0ZXJhdG9yIGl0
ZXIgPQorICAgICAgICBtX21hcC5maW5kKGtleSk7CisgICAgCisgICAgaWYgKGl0ZXIgPT0gbV9t
YXAuZW5kKCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBpdGVyLT5zZWNv
bmQ7Cit9CisKK1ByZWRpY3RlZFR5cGUgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXI6OnBy
ZWRpY3Rpb24oCisgICAgY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGtleSkgY29u
c3QKK3sKKyAgICBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGdldElmUHJlc2Vu
dChrZXkpOworICAgIGlmICghcHJvZmlsZSkKKyAgICAgICAgcmV0dXJuIFByZWRpY3ROb25lOwor
ICAgIAorICAgIHJldHVybiBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoVkFMVUVfUFJPRklMRVIp
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9M
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVfaAorI2RlZmluZSBMYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZV9oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVO
QUJMRShWQUxVRV9QUk9GSUxFUikKKworI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgorI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CisKK2NsYXNzIExhenlPcGVy
YW5kVmFsdWVQcm9maWxlS2V5IHsKK3B1YmxpYzoKKyAgICBMYXp5T3BlcmFuZFZhbHVlUHJvZmls
ZUtleSgpCisgICAgICAgIDogbV9ieXRlY29kZU9mZnNldCgwKSAvLyAwID0gZW1wdHkgdmFsdWUK
KyAgICAgICAgLCBtX29wZXJhbmQoLTEpIC8vIG5vdCBhIHZhbGlkIG9wZXJhbmQgaW5kZXggaW4g
b3VyIGN1cnJlbnQgc2NoZW1lCisgICAgeworICAgIH0KKyAgICAKKyAgICBMYXp5T3BlcmFuZFZh
bHVlUHJvZmlsZUtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIDog
bV9ieXRlY29kZU9mZnNldCgxKSAvLyAxID0gZGVsZXRlZCB2YWx1ZQorICAgICAgICAsIG1fb3Bl
cmFuZCgtMSkgLy8gbm90IGEgdmFsaWQgb3BlcmFuZCBpbmRleCBpbiBvdXIgY3VycmVudCBzY2hl
bWUKKyAgICB7CisgICAgfQorICAgIAorICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5KHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBpbnQgb3BlcmFuZCkKKyAgICAgICAgOiBtX2J5dGVjb2Rl
T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICAsIG1fb3BlcmFuZChvcGVyYW5kKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKG9wZXJhbmQgIT0gLTEpOworICAgIH0KKyAgICAKKyAgICBib29s
IG9wZXJhbmQhKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX29wZXJhbmQgPT0gLTE7
CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmFuZD09KGNvbnN0IExhenlPcGVyYW5kVmFsdWVQ
cm9maWxlS2V5JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2J5dGVjb2Rl
T2Zmc2V0ID09IG90aGVyLm1fYnl0ZWNvZGVPZmZzZXQKKyAgICAgICAgICAgICYmIG1fb3BlcmFu
ZCA9PSBvdGhlci5tX29wZXJhbmQKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgaGFzaCgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gV1RGOjppbnRIYXNoKG1fYnl0ZWNvZGVPZmZzZXQp
ICsgbV9vcGVyYW5kOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCgp
IGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoISEqdGhpcyk7CisgICAgICAgIHJldHVybiBt
X2J5dGVjb2RlT2Zmc2V0OworICAgIH0KKyAgICBpbnQgb3BlcmFuZCgpIGNvbnN0CisgICAgewor
ICAgICAgICBBU1NFUlQoISEqdGhpcyk7CisgICAgICAgIHJldHVybiBtX29wZXJhbmQ7CisgICAg
fQorICAgIAorICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuICFtX2V4ZWN1dGFibGUgJiYgbV9ieXRlY29kZU9mZnNldDsKKyAgICB9
Citwcml2YXRlOiAKKyAgICB1bnNpZ25lZCBtX2J5dGVjb2RlT2Zmc2V0OworICAgIGludCBtX29w
ZXJhbmQ7Cit9OworCitzdHJ1Y3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXlIYXNoIHsKKyAg
ICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSYg
a2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoCisgICAg
ICAgIGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5JiBhLAorICAgICAgICBjb25zdCBM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3Rh
dGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsK
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFz
aDxKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5PiB7CisgICAgdHlwZWRlZiBKU0M6Okxh
enlPcGVyYW5kVmFsdWVQcm9maWxlS2V5SGFzaCBIYXNoOworfTsKKwordGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RydWN0IEhhc2hUcmFpdHM7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpT
Qzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXk+IDogcHVibGljIFNpbXBsZUNsYXNzSGFzaFRy
YWl0czxKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5PiB7IH07CisKK30gLy8gbmFtZXNw
YWNlIFdURgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IExhenlPcGVyYW5kVmFsdWVQcm9m
aWxlIDogcHVibGljIE1pbmltYWxWYWx1ZVByb2ZpbGUgeworICAgIExhenlPcGVyYW5kVmFsdWVQ
cm9maWxlKCkKKyAgICAgICAgOiBNaW5pbWFsVmFsdWVQcm9maWxlKCkKKyAgICAgICAgLCBtX29w
ZXJhbmQoLTEpCisgICAgeworICAgIH0KKyAgICAKKyAgICBleHBsaWNpdCBMYXp5T3BlcmFuZFZh
bHVlUHJvZmlsZShjb25zdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSYga2V5KQorICAgICAg
ICA6IE1pbmltYWxWYWx1ZVByb2ZpbGUoa2V5LmJ5dGVjb2RlT2Zmc2V0KCkpCisgICAgICAgICwg
bV9vcGVyYW5kKGtleS5vcGVyYW5kKCkpCisgICAgeworICAgIH0KKyAgICAKKyAgICBMYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZUtleSBrZXkoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIExh
enlPcGVyYW5kVmFsdWVQcm9maWxlS2V5KG1fYnl0ZWNvZGVPZmZzZXQsIG1fb3BlcmFuZCk7Cisg
ICAgfQorICAgIAorICAgIGludCBtX29wZXJhbmQ7Cit9OworCitjbGFzcyBMYXp5T3BlcmFuZFZh
bHVlUHJvZmlsZVBhcnNlcjsKKworY2xhc3MgQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9m
aWxlSG9sZGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb21wcmVzc2VkTGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGVIb2xkZXIpOworcHVibGljOgorICAgIENvbXByZXNzZWRMYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZUhvbGRlcigpOworICAgIH5Db21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGVIb2xkZXIoKTsKKyAgICAKKyAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMo
KTsKKyAgICAKKyAgICBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSogYWRkKGNvbnN0IExhenlPcGVy
YW5kVmFsdWVQcm9maWxlS2V5JiBrZXkpOworICAgIAorcHJpdmF0ZToKKyAgICBmcmllbmQgY2xh
c3MgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVFZGl0b3I7CisgICAgT3duUHRyPFNlZ21lbnRlZFZl
Y3RvcjxMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSwgOD4gPiBtX2RhdGE7Cit9OworCitjbGFzcyBM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXIpOworcHVibGljOgorICAgIGV4cGxpY2l0IExh
enlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyKAorICAgICAgICBDb21wcmVzc2VkTGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGVIb2xkZXImIGhvbGRlcik7CisgICAgCisgICAgTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGUqIGdldElmUHJlc2VudCgKKyAgICAgICAgY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGVLZXkmIGtleSkgY29uc3Q7CisgICAgCisgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9u
KGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5JiBrZXkpIGNvbnN0OworcHJpdmF0ZToK
KyAgICBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXImIG1faG9sZGVyOwor
ICAgIEhhc2hNYXA8TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXksIExhenlPcGVyYW5kVmFsdWVQ
cm9maWxlKj4gbV9tYXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVO
QUJMRShWQUxVRV9QUk9GSUxFUikKKworI2VuZGlmIC8vIExhenlPcGVyYW5kVmFsdWVQcm9maWxl
X2gKKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0
aW5nQVZhbHVlUHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVBy
b2ZpbGVfaAorI2RlZmluZSBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlX2gKKworI2luY2x1
ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisvLyBUaGlzIGlzIGd1YXJkZWQgYnkgRU5BQkxFX0RGR19K
SVQgb25seSBiZWNhdXNlIGl0IHVzZXMgc29tZSB2YWx1ZSBwcm9maWxlcworLy8gdGhhdCBhcmUg
Y3VycmVudGx5IG9ubHkgdXNlZCBpZiB0aGUgREZHIGlzIGVuYWJsZWQgKGkuZS4gdGhleSBhcmUg
bm90CisvLyBhdmFpbGFibGUgaW4gdGhlIHByb2ZpbGUtb25seSBjb25maWd1cmF0aW9uKS4gSG9w
ZWZ1bGx5IHNvbWVkYXkgYWxsIG9mCisvLyB0aGVzZSAjaWYncyB3aWxsIGRpc2FwcGVhci4uLgor
I2lmIEVOQUJMRShERkdfSklUKQorCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitjbGFzcyBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHsKK3B1YmxpYzoK
KyAgICBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKCkKKyAgICAgICAgOiBtX2tpbmQoTm9u
ZSkKKyAgICB7CisgICAgfQorICAgIAorICAgIGV4cGxpY2l0IE1ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGUoVmFsdWVQcm9maWxlKiBwcm9maWxlKQorICAgIHsKKyAgICAgICAgaWYgKHByb2Zp
bGUpIHsKKyAgICAgICAgICAgIG1fa2luZCA9IFJlYWR5OworICAgICAgICAgICAgdS5wcm9maWxl
ID0gcHJvZmlsZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2tpbmQgPSBOb25lOwor
ICAgIH0KKyAgICAKKyAgICBzdGF0aWMgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBmcm9t
TGF6eU9wZXJhbmQoCisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBMYXp5T3BlcmFuZFZh
bHVlUHJvZmlsZUtleSBrZXkpCisgICAgeworICAgICAgICBNZXRob2RPZkdldHRpbmdBVmFsdWVQ
cm9maWxlIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fa2luZCA9IExhenlPcGVyYW5kOworICAg
ICAgICByZXN1bHQudS5jb2RlQmxvY2sgPSBjb2RlQmxvY2s7CisgICAgICAgIHJlc3VsdC51LmJ5
dGVjb2RlT2Zmc2V0ID0ga2V5LmJ5dGVjb2RlT2Zmc2V0KCk7CisgICAgICAgIHJlc3VsdC51Lm9w
ZXJhbmQgPSBrZXkub3BlcmFuZCgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAg
ICAKKyAgICBib29sIG9wZXJhbmQhKCkgY29uc3QgeyByZXR1cm4gbV9raW5kID09IE5vbmU7IH0K
KyAgICAKKyAgICBWYWx1ZVByb2ZpbGUqIGdldCgpCisgICAgeworICAgICAgICBzd2l0Y2ggKG1f
a2luZCkgeworICAgICAgICBjYXNlIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgICAgIAorICAgICAgICBjYXNlIFJlYWR5OgorICAgICAgICAgICAgcmV0dXJuIHUucHJvZmls
ZTsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIExhenlPcGVyYW5kOgorICAgICAgICAgICAg
cmV0dXJuIHUubGF6eU9wZXJhbmQuY29kZUJsb2NrLT5sYXp5T3BlcmFuZFZhbHVlUHJvZmlsZXMo
KS5hZGQoCisgICAgICAgICAgICAgICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkodS5sYXp5
T3BlcmFuZC5ieXRlY29kZU9mZnNldCwgdS5sYXp5T3BlcmFuZC5vcGVyYW5kKSk7CisgICAgICAg
IH0KKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIGVudW0gS2luZCB7CisgICAgICAgIE5vbmUs
CisgICAgICAgIFJlYWR5LAorICAgICAgICBMYXp5T3BlcmFuZAorICAgIH07CisgICAgCisgICAg
S2luZCBtX2tpbmQ7CisgICAgdW5pb24geworICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGU7
CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jazsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICAgICAgaW50IG9wZXJh
bmQ7CisgICAgICAgIH0gbGF6eU9wZXJhbmQ7CisgICAgfSB1OworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKworI2VuZGlmIC8vIE1ldGhvZE9m
R2V0dGluZ0FWYWx1ZVByb2ZpbGVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVmFsdWVQcm9maWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmNwcAkocmV2aXNpb24gMTA4NDUzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgot
ICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
LSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlZhbHVlUHJv
ZmlsZS5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikK
LVByZWRpY3RlZFR5cGUgVmFsdWVQcm9maWxlOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKQot
ewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mQnVja2V0czsgKytp
KSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUobV9idWNrZXRzW2ld
KTsKLSAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAK
LSAgICAgICAgbV9udW1iZXJPZlNhbXBsZXNJblByZWRpY3Rpb24rKzsKLSAgICAgICAgbWVyZ2VQ
cmVkaWN0aW9uKG1fcHJlZGljdGlvbiwgcHJlZGljdGlvbkZyb21WYWx1ZSh2YWx1ZSkpOwotICAg
ICAgICAKLSAgICAgICAgbV9idWNrZXRzW2ldID0gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7
Ci0gICAgfQotICAgIAotICAgIHJldHVybiBtX3ByZWRpY3Rpb247Ci19Ci0jZW5kaWYgLy8gRU5B
QkxFKFZBTFVFX1BST0ZJTEVSKQotCi19IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDEwODQ1
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjksNiArMjksMTAgQEAKICNpZm5kZWYgVmFsdWVQcm9maWxlX2gKICNkZWZp
bmUgVmFsdWVQcm9maWxlX2gKIAorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5B
QkxFKFZBTFVFX1BST0ZJTEVSKQorCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIlBy
ZWRpY3RlZFR5cGUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKQEAgLTM2LDE1ICs0MCwxMyBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKLXN0cnVj
dCBWYWx1ZVByb2ZpbGUgewotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb2dOdW1iZXJPZkJ1
Y2tldHMgPSAwOyAvLyAxIGJ1Y2tldAotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJP
ZkJ1Y2tldHMgPSAxIDw8IGxvZ051bWJlck9mQnVja2V0czsKK3RlbXBsYXRlPHVuc2lnbmVkIG51
bWJlck9mQnVja2V0cz4KK3N0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsKICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgbnVtYmVyT2ZTcGVjRmFpbEJ1Y2tldHMgPSAxOwogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBidWNrZXRJbmRleE1hc2sgPSBudW1iZXJPZkJ1Y2tldHMgLSAxOwogICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCB0b3RhbE51bWJlck9mQnVja2V0cyA9IG51bWJlck9mQnVja2V0
cyArIG51bWJlck9mU3BlY0ZhaWxCdWNrZXRzOwogICAgIAotICAgIFZhbHVlUHJvZmlsZSgpCisg
ICAgVmFsdWVQcm9maWxlQmFzZSgpCiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNldCgtMSkKICAg
ICAgICAgLCBtX3ByZWRpY3Rpb24oUHJlZGljdE5vbmUpCiAgICAgICAgICwgbV9udW1iZXJPZlNh
bXBsZXNJblByZWRpY3Rpb24oMCkKQEAgLTUzLDcgKzU1LDcgQEAgc3RydWN0IFZhbHVlUHJvZmls
ZSB7CiAgICAgICAgICAgICBtX2J1Y2tldHNbaV0gPSBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgp
KTsKICAgICB9CiAgICAgCi0gICAgVmFsdWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkKKyAg
ICBWYWx1ZVByb2ZpbGVCYXNlKGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgOiBtX2J5dGVj
b2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICAsIG1fcHJlZGljdGlvbihQcmVkaWN0
Tm9uZSkKICAgICAgICAgLCBtX251bWJlck9mU2FtcGxlc0luUHJlZGljdGlvbigwKQpAQCAtMTAz
LDcgKzEwNSw2IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGUgewogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogICAgIAotI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIGR1bXAoRklMRSogb3V0KQog
ICAgIHsKICAgICAgICAgZnByaW50ZihvdXQsCkBAIC0xMjMsMTAgKzEyNCwyMyBAQCBzdHJ1Y3Qg
VmFsdWVQcm9maWxlIHsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSNlbmRpZgog
ICAgIAogICAgIC8vIFVwZGF0ZXMgdGhlIHByZWRpY3Rpb24gYW5kIHJldHVybnMgdGhlIG5ldyBv
bmUuCi0gICAgUHJlZGljdGVkVHlwZSBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKKyAgICBQ
cmVkaWN0ZWRUeXBlIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpCisgICAgeworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZkJ1Y2tldHM7ICsraSkgeworICAg
ICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShtX2J1Y2tldHNbaV0pOwor
ICAgICAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgbV9udW1iZXJPZlNhbXBsZXNJblByZWRpY3Rpb24rKzsKKyAg
ICAgICAgICAgIG1lcmdlUHJlZGljdGlvbihtX3ByZWRpY3Rpb24sIHByZWRpY3Rpb25Gcm9tVmFs
dWUodmFsdWUpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbV9idWNrZXRzW2ldID0gSlNW
YWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJl
dHVybiBtX3ByZWRpY3Rpb247CisgICAgfQogICAgIAogICAgIGludCBtX2J5dGVjb2RlT2Zmc2V0
OyAvLyAtMSBmb3IgcHJvbG9ndWUKICAgICAKQEAgLTEzNiw3ICsxNTAsMjYgQEAgc3RydWN0IFZh
bHVlUHJvZmlsZSB7CiAgICAgRW5jb2RlZEpTVmFsdWUgbV9idWNrZXRzW3RvdGFsTnVtYmVyT2ZC
dWNrZXRzXTsKIH07CiAKLWlubGluZSBpbnQgZ2V0VmFsdWVQcm9maWxlQnl0ZWNvZGVPZmZzZXQo
VmFsdWVQcm9maWxlKiB2YWx1ZVByb2ZpbGUpCitzdHJ1Y3QgTWluaW1hbFZhbHVlUHJvZmlsZSA6
IHB1YmxpYyBWYWx1ZVByb2ZpbGVCYXNlPDA+IHsKKyAgICBNaW5pbWFsVmFsdWVQcm9maWxlKCk6
IFZhbHVlUHJvZmlsZUJhc2UoKSB7IH0KKyAgICBNaW5pbWFsVmFsdWVQcm9maWxlKGludCBieXRl
Y29kZU9mZnNldCk6IFZhbHVlUHJvZmlsZUJhc2UoYnl0ZWNvZGVPZmZzZXQpIHsgfQorfTsKKwor
dGVtcGxhdGU8dW5zaWduZWQgbG9nTnVtYmVyT2ZCdWNrZXRzQXJndW1lbnQ+CitzdHJ1Y3QgVmFs
dWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0cyA6IHB1YmxpYyBWYWx1ZVByb2ZpbGVCYXNl
PDEgPDwgbG9nTnVtZXJPZkJ1Y2tldHNBcmd1bWVudD4geworICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBsb2dOdW1iZXJPZkJ1Y2tldHMgPSBsb2dOdW1iZXJPZkJ1Y2tldHNBcmd1bWVudDsKKyAg
ICAKKyAgICBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzKCk6IFZhbHVlUHJvZmls
ZUJhc2UoKSB7IH0KKyAgICBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzKGludCBi
eXRlY29kZU9mZnNldCk6IFZhbHVlUHJvZmlsZUJhc2UoYnl0ZWNvZGVPZmZzZXQpIHsgfQorfTsK
Kworc3RydWN0IFZhbHVlUHJvZmlsZSA6IHB1YmxpYyBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVy
T2ZCdWNrZXRzPDA+IHsKKyAgICBWYWx1ZVByb2ZpbGUoKTogVmFsdWVQcm9maWxlQmFzZSgpIHsg
fQorICAgIFZhbHVlUHJvZmlsZShpbnQgYnl0ZWNvZGVPZmZzZXQpOiBWYWx1ZVByb2ZpbGVCYXNl
KGJ5dGVjb2RlT2Zmc2V0KSB7IH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUg
aW50IGdldFZhbHVlUHJvZmlsZUJ5dGVjb2RlT2Zmc2V0KFQqIHZhbHVlUHJvZmlsZSkKIHsKICAg
ICByZXR1cm4gdmFsdWVQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0OwogfQpAQCAtMTU4LDkgKzE5
MSwxMCBAQCBpbmxpbmUgaW50IGdldFJhcmVDYXNlUHJvZmlsZUJ5dGVjb2RlT2ZmCiB7CiAgICAg
cmV0dXJuIHJhcmVDYXNlUHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldDsKIH0KLSNlbmRpZgogCiB9
CiAKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKworI2VuZGlmIC8v
IFZhbHVlUHJvZmlsZV9oCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMDg0NTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4
LDYgKzEwOCw4IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICB0ZW1wbGF0ZTxQaGlTdGFja1R5cGUg
c3RhY2tUeXBlPgogICAgIHZvaWQgcHJvY2Vzc1BoaVN0YWNrKCk7CisgICAgCisgICAgdm9pZCBm
aXhWYXJpYWJsZUFjY2Vzc1ByZWRpY3Rpb25zKCk7CiAgICAgLy8gQWRkIHNwaWxsIGxvY2F0aW9u
cyB0byBub2Rlcy4KICAgICB2b2lkIGFsbG9jYXRlVmlydHVhbFJlZ2lzdGVycygpOwogICAgIApA
QCAtMTU1LDYgKzE1NywxOSBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgc2V0RGlyZWN0KG1f
aW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChvcGVyYW5kKSwgdmFsdWUpOwogICAgIH0KKyAg
ICAKKyAgICBOb2RlSW5kZXggaW5qZWN0TGF6eU9wZXJhbmRQcmVkaWN0aW9uKE5vZGVJbmRleCBu
b2RlSW5kZXgpCisgICAgeworICAgICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFtub2RlSW5kZXhd
OworICAgICAgICBBU1NFUlQobm9kZS5vcCA9PSBOb2RlSW5kZXgpOworICAgICAgICBBU1NFUlQo
bm9kZS5jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXggPT0gbV9jdXJyZW50SW5kZXgpOworICAgICAg
ICBtX2lubGluZVN0YWNrVG9wLT5tX2xhenlPcGVyYW5kcy5wcmVkaWN0aW9uKExhenlPcGVyYW5k
VmFsdWVQcm9maWxlS2V5KG1fY3VycmVudEluZGV4LCBub2RlLmxvY2FsKCkpKTsKKyNpZiBERkdf
RU5BQkxFKERFQlVHX1ZFUkJPU0UpCisgICAgICAgIGRhdGFMb2coIkxhenkgb3BlcmFuZCBbQCV1
LCBiYyN1LCByJWRdIHByZWRpY3Rpb246ICVzXG4iLAorICAgICAgICAgICAgICAgIG5vZGVJbmRl
eCwgbV9jdXJyZW50SW5kZXgsIG5vZGUubG9jYWwoKSk7CisjZW5kaWYKKyAgICAgICAgbm9kZS52
YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgpOworICAgIH0KIAogICAgIC8vIFVzZWQgaW4g
aW1wbGVtZW50aW5nIGdldC9zZXQsIGFib3ZlLCB3aGVyZSB0aGUgb3BlcmFuZCBpcyBhIGxvY2Fs
IHZhcmlhYmxlLgogICAgIE5vZGVJbmRleCBnZXRMb2NhbCh1bnNpZ25lZCBvcGVyYW5kKQpAQCAt
MTcwLDcgKzE4NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgTm9kZSYgZmx1c2hDaGls
ZCA9IG1fZ3JhcGhbbm9kZVB0ci0+Y2hpbGQxKCldOwogICAgICAgICAgICAgICAgIGlmIChmbHVz
aENoaWxkLm9wID09IFBoaSkgewogICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0Rh
dGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IGZsdXNoQ2hpbGQudmFyaWFibGVBY2Nlc3NEYXRhKCk7
Ci0gICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCA9IGFkZFRvR3JhcGgoR2V0TG9jYWwsIE9w
SW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCBub2RlUHRyLT5jaGlsZDEoKS5pbmRleCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ID0gaW5qZWN0TGF6eU9wZXJhbmRQcmVkaWN0aW9u
KGFkZFRvR3JhcGgoR2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCBub2RlUHRy
LT5jaGlsZDEoKS5pbmRleCgpKSk7CiAgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2Nr
LT52YXJpYWJsZXNBdFRhaWwubG9jYWwob3BlcmFuZCkgPSBub2RlSW5kZXg7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBub2RlSW5kZXg7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTkwLDcg
KzIwNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBOb2RlSW5kZXggcGhpID0gYWRk
VG9HcmFwaChQaGksIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpKTsKICAgICAgICAgbV9sb2Nh
bFBoaVN0YWNrLmFwcGVuZChQaGlTdGFja0VudHJ5KG1fY3VycmVudEJsb2NrLCBwaGksIG9wZXJh
bmQpKTsKLSAgICAgICAgbm9kZUluZGV4ID0gYWRkVG9HcmFwaChHZXRMb2NhbCwgT3BJbmZvKHZh
cmlhYmxlQWNjZXNzRGF0YSksIHBoaSk7CisgICAgICAgIG5vZGVJbmRleCA9IGluamVjdExhenlP
cGVyYW5kUHJlZGljdGlvbihhZGRUb0dyYXBoKEdldExvY2FsLCBPcEluZm8odmFyaWFibGVBY2Nl
c3NEYXRhKSwgcGhpKSk7CiAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwu
bG9jYWwob3BlcmFuZCkgPSBub2RlSW5kZXg7CiAgICAgICAgIAogICAgICAgICBtX2N1cnJlbnRC
bG9jay0+dmFyaWFibGVzQXRIZWFkLnNldExvY2FsRmlyc3RUaW1lKG9wZXJhbmQsIG5vZGVJbmRl
eCk7CkBAIC0yMTksNyArMjM0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBOb2RlJiBm
bHVzaENoaWxkID0gbV9ncmFwaFtub2RlUHRyLT5jaGlsZDEoKV07CiAgICAgICAgICAgICAgICAg
aWYgKGZsdXNoQ2hpbGQub3AgPT0gUGhpKSB7CiAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxl
QWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gZmx1c2hDaGlsZC52YXJpYWJsZUFjY2Vz
c0RhdGEoKTsKLSAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ID0gYWRkVG9HcmFwaChHZXRM
b2NhbCwgT3BJbmZvKHZhcmlhYmxlQWNjZXNzRGF0YSksIG5vZGVQdHItPmNoaWxkMSgpLmluZGV4
KCkpOworICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXggPSBpbmplY3RMYXp5T3BlcmFuZFBy
ZWRpY3Rpb24oYWRkVG9HcmFwaChHZXRMb2NhbCwgT3BJbmZvKHZhcmlhYmxlQWNjZXNzRGF0YSks
IG5vZGVQdHItPmNoaWxkMSgpLmluZGV4KCkpKTsKICAgICAgICAgICAgICAgICAgICAgbV9jdXJy
ZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5sb2NhbChvcGVyYW5kKSA9IG5vZGVJbmRleDsKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVJbmRleDsKICAgICAgICAgICAgICAgICB9CkBA
IC0yMjksNyArMjQ0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAvLyBXZSdyZSBnZXR0
aW5nIGFuIGFyZ3VtZW50IGluIHRoZSBmaXJzdCBiYXNpYyBibG9jazsgbGluawogICAgICAgICAg
ICAgICAgIC8vIHRoZSBHZXRMb2NhbCB0byB0aGUgU2V0QXJndW1lbnQuCiAgICAgICAgICAgICAg
ICAgQVNTRVJUKG5vZGVQdHItPmxvY2FsKCkgPT0gc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVy
PihvcGVyYW5kKSk7Ci0gICAgICAgICAgICAgICAgbm9kZUluZGV4ID0gYWRkVG9HcmFwaChHZXRM
b2NhbCwgT3BJbmZvKG5vZGVQdHItPnZhcmlhYmxlQWNjZXNzRGF0YSgpKSwgbm9kZUluZGV4KTsK
KyAgICAgICAgICAgICAgICBub2RlSW5kZXggPSBpbmplY3RMYXp5T3BlcmFuZFByZWRpY3Rpb24o
YWRkVG9HcmFwaChHZXRMb2NhbCwgT3BJbmZvKG5vZGVQdHItPnZhcmlhYmxlQWNjZXNzRGF0YSgp
KSwgbm9kZUluZGV4KSk7CiAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxl
c0F0VGFpbC5hcmd1bWVudChhcmd1bWVudCkgPSBub2RlSW5kZXg7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIG5vZGVJbmRleDsKICAgICAgICAgICAgIH0KQEAgLTI0NSw3ICsyNjAsNyBAQCBwcml2
YXRlOgogCiAgICAgICAgIE5vZGVJbmRleCBwaGkgPSBhZGRUb0dyYXBoKFBoaSwgT3BJbmZvKHZh
cmlhYmxlQWNjZXNzRGF0YSkpOwogICAgICAgICBtX2FyZ3VtZW50UGhpU3RhY2suYXBwZW5kKFBo
aVN0YWNrRW50cnkobV9jdXJyZW50QmxvY2ssIHBoaSwgYXJndW1lbnQpKTsKLSAgICAgICAgbm9k
ZUluZGV4ID0gYWRkVG9HcmFwaChHZXRMb2NhbCwgT3BJbmZvKHZhcmlhYmxlQWNjZXNzRGF0YSks
IHBoaSk7CisgICAgICAgIG5vZGVJbmRleCA9IGluamVjdExhenlPcGVyYW5kUHJlZGljdGlvbihh
ZGRUb0dyYXBoKEdldExvY2FsLCBPcEluZm8odmFyaWFibGVBY2Nlc3NEYXRhKSwgcGhpKSk7CiAg
ICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwuYXJndW1lbnQoYXJndW1lbnQp
ID0gbm9kZUluZGV4OwogICAgICAgICAKICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxl
c0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0VGltZShhcmd1bWVudCwgbm9kZUluZGV4KTsKQEAgLTg0
OCw2ICs4NjMsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIFZpcnR1YWxSZWdpc3Rl
ciBtX3JldHVyblZhbHVlOwogICAgICAgICAKKyAgICAgICAgLy8gUHJlZGljdGlvbnMgYWJvdXQg
dmFyaWFibGUgdHlwZXMgY29sbGVjdGVkIGZyb20gdGhlIHByb2ZpbGVkIGNvZGUgYmxvY2ssCisg
ICAgICAgIC8vIHdoaWNoIGFyZSBiYXNlZCBvbiBPU1IgZXhpdCBwcm9maWxlcyB0aGF0IHBhc3Qg
REZHIGNvbXBpbGF0aW5zIG9mIHRoaXMKKyAgICAgICAgLy8gY29kZSBibG9jayBoYWQgZ2F0aGVy
ZWQuCisgICAgICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyIG1fbGF6eU9wZXJhbmRz
OworICAgICAgICAKICAgICAgICAgLy8gRGlkIHdlIHNlZSBhbnkgcmV0dXJucz8gV2UgbmVlZCB0
byBoYW5kbGUgdGhlICh1bmNvbW1vbiBidXQgbmVjZXNzYXJ5KQogICAgICAgICAvLyBjYXNlIHdo
ZXJlIGEgcHJvY2VkdXJlIHRoYXQgZG9lcyBub3QgcmV0dXJuIHdhcyBpbmxpbmVkLgogICAgICAg
ICBib29sIG1fZGlkUmV0dXJuOwpAQCAtMjMxNSw2ICsyMzM1LDE0IEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OnByb2Nlc3NQaGlTdGFjaygpCiAgICAgfQogfQogCit2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpmaXhWYXJpYWJsZUFjY2Vzc1ByZWRpY3Rpb25zKCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9ncmFwaC5tX3ZhcmlhYmxlQWNjZXNzRGF0YS5zaXplKCk7ICsraSkgeworICAg
ICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGRhdGEgPSAmbV9ncmFwaC5tX3ZhcmlhYmxlQWNjZXNz
RGF0YVtpXTsKKyAgICAgICAgZGF0YS0+ZmluZCgpLT5wcmVkaWN0KGRhdGEtPm5vblVuaWZpZWRQ
cmVkaWN0aW9uKCkpOworICAgIH0KK30KKwogdm9pZCBCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2Nr
KEJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8QmxvY2tJbmRleD4mIHBvc3NpYmxlVGFyZ2V0cykK
IHsKICAgICBBU1NFUlQoYmxvY2stPmVuZCAhPSBOb05vZGUpOwpAQCAtMjQxNyw2ICsyNDQ1LDcg
QEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZQogICAgICwgbV9leGl0
UHJvZmlsZShwcm9maWxlZEJsb2NrLT5leGl0UHJvZmlsZSgpKQogICAgICwgbV9jYWxsc2l0ZUJs
b2NrSGVhZChjYWxsc2l0ZUJsb2NrSGVhZCkKICAgICAsIG1fcmV0dXJuVmFsdWUocmV0dXJuVmFs
dWVWUikKKyAgICAsIG1fbGF6eU9wZXJhbmRzKHByb2ZpbGVkQmxvY2stPmxhenlPcGVyYW5kVmFs
dWVQcm9maWxlcygpKQogICAgICwgbV9kaWRSZXR1cm4oZmFsc2UpCiAgICAgLCBtX2RpZEVhcmx5
UmV0dXJuKGZhbHNlKQogICAgICwgbV9jYWxsZXIoYnl0ZUNvZGVQYXJzZXItPm1faW5saW5lU3Rh
Y2tUb3ApCkBAIC0yNTg1LDYgKzI2MTQsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgp
CiAjZW5kaWYKICAgICBwcm9jZXNzUGhpU3RhY2s8QXJndW1lbnRQaGlTdGFjaz4oKTsKICAgICAK
KyAgICBmaXhWYXJpYWJsZUFjY2Vzc1ByZWRpY3Rpb25zKCk7CisgICAgCiAgICAgbV9ncmFwaC5t
X3ByZXNlcnZlZFZhcnMgPSBtX3ByZXNlcnZlZFZhcnM7CiAgICAgbV9ncmFwaC5tX2xvY2FsVmFy
cyA9IG1fbnVtTG9jYWxzOwogICAgIG1fZ3JhcGgubV9wYXJhbWV0ZXJTbG90cyA9IG1fcGFyYW1l
dGVyU2xvdHM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lv
biAxMDg0NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJERkdBc3NlbWJseUhlbHBlcnMu
aCIKICNpbmNsdWRlICJERkdCYXNpY0Jsb2NrLmgiCiAjaW5jbHVkZSAiREZHTm9kZS5oIgorI2lu
Y2x1ZGUgIk1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCIKICNpbmNsdWRlICJQcmVkaWN0
aW9uVHJhY2tlci5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgogI2luY2x1ZGUgPHd0Zi9C
aXRWZWN0b3IuaD4KQEAgLTI3MSw3ICsyNzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIE5vZGUmIG5v
ZGUgPSBhdChub2RlSW5kZXgpOwogICAgICAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2sgPSBi
YXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLmNvZGVPcmlnaW4pOwogICAgICAgICAKLSAgICAgICAg
aWYgKG5vZGUub3AgPT0gR2V0TG9jYWwpIHsKKyAgICAgICAgaWYgKG5vZGUuaGFzTG9jYWwoKSkg
ewogICAgICAgICAgICAgaWYgKCFvcGVyYW5kSXNBcmd1bWVudChub2RlLmxvY2FsKCkpKQogICAg
ICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgaW50IGFyZ3VtZW50ID0gb3BlcmFu
ZFRvQXJndW1lbnQobm9kZS5sb2NhbCgpKTsKQEAgLTI4Niw2ICsyODcsMjQgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgCisgICAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVl
UHJvZmlsZSBtZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKE5vZGVJbmRleCBub2RlSW5k
ZXgpCisgICAgeworICAgICAgICBpZiAobm9kZUluZGV4ID09IE5vTm9kZSkKKyAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICAKKyAgICAgICAgTm9kZSYgbm9kZSA9IGF0KG5vZGVJbmRleCk7
CisgICAgICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9y
KG5vZGUuY29kZU9yaWdpbik7CisgICAgICAgIAorICAgICAgICBpZiAobm9kZS5vcCA9PSBHZXRM
b2NhbCkgeworICAgICAgICAgICAgcmV0dXJuIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6
OmZyb21MYXp5T3BlcmFuZCgKKyAgICAgICAgICAgICAgICBwcm9maWxlZEJsb2NrLAorICAgICAg
ICAgICAgICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5KAorICAgICAgICAgICAgICAgICAg
ICBub2RlLmNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgbm9kZS5sb2NhbCgpKSk7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
KHZhbHVlUHJvZmlsZUZvcihub2RlSW5kZXgpKTsKKyAgICB9CisgICAgCiAgICAgSlNHbG9iYWxE
YXRhJiBtX2dsb2JhbERhdGE7CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKICAgICBDb2Rl
QmxvY2sqIG1fcHJvZmlsZWRCbG9jazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCShyZXZpc2lvbiAxMDg0NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDg1LDcgKzQ4NSw3IEBAIHN0cnVjdCBOb2RlIHsKICAg
ICB7CiAgICAgICAgIHJldHVybiB2YXJpYWJsZUFjY2Vzc0RhdGEoKS0+bG9jYWwoKTsKICAgICB9
Ci0KKyAgICAKICAgICBib29sIGhhc0lkZW50aWZpZXIoKQogICAgIHsKICAgICAgICAgc3dpdGNo
IChvcCkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCShy
ZXZpc2lvbiAxMDg0NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIAotT1NSRXhpdDo6T1NSRXhpdChFeGl0S2luZCBraW5kLCBKU1ZhbHVl
U291cmNlIGpzVmFsdWVTb3VyY2UsIFZhbHVlUHJvZmlsZSogdmFsdWVQcm9maWxlLCBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBjaGVjaywgU3BlY3VsYXRpdmVKSVQqIGppdCwgdW5zaWduZWQgcmVjb3Zl
cnlJbmRleCkKK09TUkV4aXQ6Ok9TUkV4aXQoRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBq
c1ZhbHVlU291cmNlLCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHZhbHVlUHJvZmlsZSwg
TWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2hlY2ssIFNwZWN1bGF0aXZlSklUKiBqaXQsIHVuc2lnbmVk
IHJlY292ZXJ5SW5kZXgpCiAgICAgOiBtX2pzVmFsdWVTb3VyY2UoanNWYWx1ZVNvdXJjZSkKICAg
ICAsIG1fdmFsdWVQcm9maWxlKHZhbHVlUHJvZmlsZSkKICAgICAsIG1fY2hlY2soY2hlY2spCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAkocmV2aXNpb24gMTA4NDUz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJERkdHUFJJbmZvLmgiCiAjaW5jbHVkZSAi
REZHT3BlcmFuZHMuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIk1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCIKICNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIK
ICNpbmNsdWRlICJWYWx1ZVJlY292ZXJ5LmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAt
ODIsMTIgKzgzLDEyIEBAIHByaXZhdGU6CiAvLyBUaGlzIHN0cnVjdHVyZSBkZXNjcmliZXMgaG93
IHRvIGV4aXQgdGhlIHNwZWN1bGF0aXZlIHBhdGggYnkKIC8vIGdvaW5nIGludG8gYmFzZWxpbmUg
Y29kZS4KIHN0cnVjdCBPU1JFeGl0IHsKLSAgICBPU1JFeGl0KEV4aXRLaW5kLCBKU1ZhbHVlU291
cmNlLCBWYWx1ZVByb2ZpbGUqLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCwgU3BlY3VsYXRpdmVKSVQq
LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4ID0gMCk7CisgICAgT1NSRXhpdChFeGl0S2luZCwgSlNW
YWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSwgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAsIFNwZWN1bGF0aXZlSklUKiwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCA9IDApOwogICAg
IAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBtX2NvZGU7CiAgICAgCiAgICAgSlNWYWx1ZVNv
dXJjZSBtX2pzVmFsdWVTb3VyY2U7Ci0gICAgVmFsdWVQcm9maWxlKiBtX3ZhbHVlUHJvZmlsZTsK
KyAgICBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIG1fdmFsdWVQcm9maWxlOwogICAgIAog
ICAgIENvcnJlY3RhYmxlSnVtcFBvaW50IG1fY2hlY2s7CiAgICAgTm9kZUluZGV4IG1fbm9kZUlu
ZGV4OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIz
Ml82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0Q29tcGlsZXIzMl82NC5jcHAJKHJldmlzaW9uIDEwODQ1MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04Myw2ICs4Myw4IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAK
ICAgICAvLyAzKSBSZWZpbmUgc29tZSB2YWx1ZSBwcm9maWxlLCBpZiBhcHByb3ByaWF0ZS4KICAg
ICAKICAgICBpZiAoISFleGl0Lm1fanNWYWx1ZVNvdXJjZSAmJiAhIWV4aXQubV92YWx1ZVByb2Zp
bGUpIHsKKyAgICAgICAgVmFsdWVQcm9maWxlKiB2YWx1ZVByb2ZpbGUgPSBleGl0Lm1fdmFsdWVQ
cm9maWxlLmdldCgpOworICAgICAgICAKICAgICAgICAgaWYgKGV4aXQubV9qc1ZhbHVlU291cmNl
LmlzQWRkcmVzcygpKSB7CiAgICAgICAgICAgICAvLyBTYXZlIGEgcmVnaXN0ZXIgc28gd2UgY2Fu
IHVzZSBpdC4KICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoID0gR1BSSW5mbzo6cmVnVDA7CkBA
IC05MSwxNiArOTMsMTYgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0
IAogICAgICAgICAgICAgRW5jb2RlZEpTVmFsdWUqIHNjcmF0Y2hCdWZmZXIgPSBzdGF0aWNfY2Fz
dDxFbmNvZGVkSlNWYWx1ZSo+KG1faml0Lmdsb2JhbERhdGEoKS0+c2NyYXRjaEJ1ZmZlckZvclNp
emUoc2l6ZW9mKHVpbnQzMl90KSkpOwogICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihzY3JhdGNo
LCBzY3JhdGNoQnVmZmVyKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihleGl0Lm1fanNWYWx1
ZVNvdXJjZS5hc0FkZHJlc3MoT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3Is
IGFzQml0cy50YWcpKSwgc2NyYXRjaCk7Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHNjcmF0
Y2gsICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KGV4aXQubV92YWx1ZVBy
b2ZpbGUtPnNwZWNGYWlsQnVja2V0KDApKS0+YXNCaXRzLnRhZyk7CisgICAgICAgICAgICBtX2pp
dC5zdG9yZTMyKHNjcmF0Y2gsICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+
KHZhbHVlUHJvZmlsZS0+c3BlY0ZhaWxCdWNrZXQoMCkpLT5hc0JpdHMudGFnKTsKICAgICAgICAg
ICAgIG1faml0LmxvYWQzMihleGl0Lm1fanNWYWx1ZVNvdXJjZS5hc0FkZHJlc3MoT0JKRUNUX09G
RlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHNjcmF0Y2gp
OwotICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihzY3JhdGNoLCAmYml0d2lzZV9jYXN0PEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IqPihleGl0Lm1fdmFsdWVQcm9maWxlLT5zcGVjRmFpbEJ1Y2tldCgw
KSktPmFzQml0cy5wYXlsb2FkKTsKKyAgICAgICAgICAgIG1faml0LnN0b3JlMzIoc2NyYXRjaCwg
JmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4odmFsdWVQcm9maWxlLT5zcGVj
RmFpbEJ1Y2tldCgwKSktPmFzQml0cy5wYXlsb2FkKTsKICAgICAgICAgICAgIG1faml0LmxvYWQz
MihzY3JhdGNoQnVmZmVyLCBzY3JhdGNoKTsKICAgICAgICAgfSBlbHNlIGlmIChleGl0Lm1fanNW
YWx1ZVNvdXJjZS5oYXNLbm93blRhZygpKSB7Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZTMyKEFz
c2VtYmx5SGVscGVyczo6SW1tMzIoZXhpdC5tX2pzVmFsdWVTb3VyY2UudGFnKCkpLCAmYml0d2lz
ZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihleGl0Lm1fdmFsdWVQcm9maWxlLT5zcGVj
RmFpbEJ1Y2tldCgwKSktPmFzQml0cy50YWcpOwotICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihl
eGl0Lm1fanNWYWx1ZVNvdXJjZS5wYXlsb2FkR1BSKCksICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZh
bHVlRGVzY3JpcHRvcio+KGV4aXQubV92YWx1ZVByb2ZpbGUtPnNwZWNGYWlsQnVja2V0KDApKS0+
YXNCaXRzLnBheWxvYWQpOworICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihBc3NlbWJseUhlbHBl
cnM6OkltbTMyKGV4aXQubV9qc1ZhbHVlU291cmNlLnRhZygpKSwgJmJpdHdpc2VfY2FzdDxFbmNv
ZGVkVmFsdWVEZXNjcmlwdG9yKj4odmFsdWVQcm9maWxlLT5zcGVjRmFpbEJ1Y2tldCgwKSktPmFz
Qml0cy50YWcpOworICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihleGl0Lm1fanNWYWx1ZVNvdXJj
ZS5wYXlsb2FkR1BSKCksICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHZh
bHVlUHJvZmlsZS0+c3BlY0ZhaWxCdWNrZXQoMCkpLT5hc0JpdHMucGF5bG9hZCk7CiAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZTMyKGV4aXQubV9qc1ZhbHVlU291cmNl
LnRhZ0dQUigpLCAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihleGl0Lm1f
dmFsdWVQcm9maWxlLT5zcGVjRmFpbEJ1Y2tldCgwKSktPmFzQml0cy50YWcpOwotICAgICAgICAg
ICAgbV9qaXQuc3RvcmUzMihleGl0Lm1fanNWYWx1ZVNvdXJjZS5wYXlsb2FkR1BSKCksICZiaXR3
aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KGV4aXQubV92YWx1ZVByb2ZpbGUtPnNw
ZWNGYWlsQnVja2V0KDApKS0+YXNCaXRzLnBheWxvYWQpOworICAgICAgICAgICAgbV9qaXQuc3Rv
cmUzMihleGl0Lm1fanNWYWx1ZVNvdXJjZS50YWdHUFIoKSwgJmJpdHdpc2VfY2FzdDxFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yKj4odmFsdWVQcm9maWxlLT5zcGVjRmFpbEJ1Y2tldCgwKSktPmFzQml0
cy50YWcpOworICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihleGl0Lm1fanNWYWx1ZVNvdXJjZS5w
YXlsb2FkR1BSKCksICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHZhbHVl
UHJvZmlsZS0+c3BlY0ZhaWxCdWNrZXQoMCkpLT5hc0JpdHMucGF5bG9hZCk7CiAgICAgICAgIH0K
ICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRD
b21waWxlcjY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXRDb21waWxlcjY0LmNwcAkocmV2aXNpb24gMTA4NDUzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg4LDE0ICs4OCwxNiBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3Qg
CiAgICAgLy8gMykgUmVmaW5lIHNvbWUgdmFsdWUgcHJvZmlsZSwgaWYgYXBwcm9wcmlhdGUuCiAg
ICAgCiAgICAgaWYgKCEhZXhpdC5tX2pzVmFsdWVTb3VyY2UgJiYgISFleGl0Lm1fdmFsdWVQcm9m
aWxlKSB7CisgICAgICAgIFZhbHVlUHJvZmlsZSogdmFsdWVQcm9maWxlID0gZXhpdC5tX3ZhbHVl
UHJvZmlsZS5nZXQoKTsKKyAgICAgICAgICAgIAogICAgICAgICBpZiAoZXhpdC5tX2pzVmFsdWVT
b3VyY2UuaXNBZGRyZXNzKCkpIHsKICAgICAgICAgICAgIC8vIFdlIGNhbid0IGJlIHN1cmUgdGhh
dCB3ZSBoYXZlIGEgc3BhcmUgcmVnaXN0ZXIuIFNvIHVzZSB0aGUgdGFnVHlwZU51bWJlclJlZ2lz
dGVyLAogICAgICAgICAgICAgLy8gc2luY2Ugd2Uga25vdyBob3cgdG8gcmVzdG9yZSBpdC4KICAg
ICAgICAgICAgIG1faml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKGV4aXQubV9q
c1ZhbHVlU291cmNlLmFzQWRkcmVzcygpKSwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVy
KTsKLSAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdp
c3RlciwgZXhpdC5tX3ZhbHVlUHJvZmlsZS0+c3BlY0ZhaWxCdWNrZXQoMCkpOworICAgICAgICAg
ICAgbV9qaXQuc3RvcmVQdHIoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCB2YWx1ZVBy
b2ZpbGUtPnNwZWNGYWlsQnVja2V0KDApKTsKICAgICAgICAgICAgIG1faml0Lm1vdmUoQXNzZW1i
bHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oVGFnVHlwZU51bWJl
cikpLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwogICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgIG1faml0LnN0b3JlUHRyKGV4aXQubV9qc1ZhbHVlU291cmNlLmdwcigpLCBleGl0
Lm1fdmFsdWVQcm9maWxlLT5zcGVjRmFpbEJ1Y2tldCgwKSk7CisgICAgICAgICAgICBtX2ppdC5z
dG9yZVB0cihleGl0Lm1fanNWYWx1ZVNvdXJjZS5ncHIoKSwgdmFsdWVQcm9maWxlLT5zcGVjRmFp
bEJ1Y2tldCgwKSk7CiAgICAgfQogCiAgICAgLy8gNCkgRmlndXJlIG91dCBob3cgbWFueSBzY3Jh
dGNoIHNsb3RzIHdlJ2xsIG5lZWQuIFdlIG5lZWQgb25lIGZvciBldmVyeSBHUFIvRlBSCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAko
cmV2aXNpb24gMTA4NDUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNzMsNyArMTA3Myw4IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcygKICAgICAgICAgbV92YXJpYWJsZXNbaV0g
PSBWYWx1ZVNvdXJjZShWYWx1ZUluUmVnaXN0ZXJGaWxlKTsKICAgICAKICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IG1faml0LmNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCk7ICsraSkgewotICAg
ICAgICBOb2RlJiBub2RlID0gYXQobV9qaXQuZ3JhcGgoKS5tX2FyZ3VtZW50c1tpXSk7CisgICAg
ICAgIE5vZGVJbmRleCBub2RlSW5kZXggPSBtX2ppdC5ncmFwaCgpLm1fYXJndW1lbnRzW2ldOwor
ICAgICAgICBOb2RlJiBub2RlID0gYXQobm9kZUluZGV4KTsKICAgICAgICAgQVNTRVJUKG5vZGUu
b3AgPT0gU2V0QXJndW1lbnQpOwogICAgICAgICBpZiAoIW5vZGUuc2hvdWxkR2VuZXJhdGUoKSkg
ewogICAgICAgICAgICAgLy8gVGhlIGFyZ3VtZW50IGlzIGRlYWQuIFdlIGRvbid0IGRvIGFueSBj
aGVja3MgZm9yIHN1Y2ggYXJndW1lbnRzLgpAQCAtMTA4MywxNDEgKzEwODQsMTQ0IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcygKICAgICAgICAgVmFyaWFibGVBY2Nl
c3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpOwog
ICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gdmFyaWFibGVBY2Nlc3NE
YXRhLT5sb2NhbCgpOwogICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3RlZFR5cGUgPSB2YXJp
YWJsZUFjY2Vzc0RhdGEtPnByZWRpY3Rpb24oKTsKKworICAgICAgICBKU1ZhbHVlU291cmNlIHZh
bHVlU291cmNlID0gSlNWYWx1ZVNvdXJjZShKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFs
UmVnaXN0ZXIpOworICAgICAgICAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBpZiAoaXNJ
bnQzMlByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6QmVsb3csIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdp
c3RlciksIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOworICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0
dWFsUmVnaXN0ZXIpLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKICAgICAgICAg
ZWxzZSBpZiAoaXNBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAg
IEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRD
b21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9k
ZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIo
KSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3By
KCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cigmSlNBcnJheTo6c19pbmZvKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhC
YWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIp
KTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5v
ZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSks
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoaXNCeXRlQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAg
ICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0Lmxv
YWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIo
KSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVn
cygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8s
IHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIoJkpTQnl0ZUFycmF5OjpzX2luZm8pKSk7CisgICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5j
aFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRh
Z01hc2tSZWdpc3RlcikpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2
YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNz
SW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQnl0ZUFycmF5
OjpzX2luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNCb29sZWFuUHJlZGljdGlvbihwcmVk
aWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAg
ICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdp
c3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgbV9qaXQueG9yUHRyKFRydXN0ZWRJbW0z
MihzdGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZhbHNlKSksIHRlbXAuZ3ByKCkpOwotICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2Rl
LCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigp
LCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4ofjEpKSkpOworICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5i
cmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBUcnVzdGVk
SW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4ofjEpKSkpOwogICAgICAgICB9IGVsc2UgaWYgKGlz
SW50OEFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVt
cG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVy
OjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2pp
dC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJ
bmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5j
b3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlND
ZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1f
aml0Lmdsb2JhbERhdGEoKS0+aW50OEFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwor
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUlu
ZGV4LCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdw
cigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIo
KSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKG1faml0Lmdsb2JhbERhdGEoKS0+aW50OEFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZv
KSkpOwogICAgICAgICB9IGVsc2UgaWYgKGlzSW50MTZBcnJheVByZWRpY3Rpb24ocHJlZGljdGVk
VHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAg
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIp
LCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUs
IEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05v
ZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmludDE2QXJyYXlE
ZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rl
cikpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwg
bm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgp
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQx
NkFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICB9IGVsc2UgaWYgKGlz
SW50MzJBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRl
bXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxl
cjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9q
aXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BS
SW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVu
Y291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpT
Q2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0ciht
X2ppdC5nbG9iYWxEYXRhKCktPmludDMyQXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7
CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2Rl
SW5kZXgsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAu
Z3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOworICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdw
cigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQzMkFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJ
bmZvKSkpOwogICAgICAgICB9IGVsc2UgaWYgKGlzVWludDhBcnJheVByZWRpY3Rpb24ocHJlZGlj
dGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAg
ICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0
ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFi
bGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0g
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBO
b05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQ4QXJy
YXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFRlc3RQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdp
c3RlcikpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJj
ZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNl
dCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51
aW50OEFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICB9IGVsc2UgaWYg
KGlzVWludDhDbGFtcGVkQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAg
ICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIo
SklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0g
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBO
b05vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAu
Z3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQ
dHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1w
LmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50OENsYW1wZWRBcnJheURlc2NyaXB0b3Io
KS5tX2NsYXNzSW5mbykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
dmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CisgICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgs
IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQ4Q2xhbXBlZEFy
cmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICB9IGVsc2UgaWYgKGlzVWlu
dDE2QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1w
b3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6
OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0
LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUklu
Zm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNv
dW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0Nl
bGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9q
aXQuZ2xvYmFsRGF0YSgpLT51aW50MTZBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsK
KyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJ
bmRleCwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5n
cHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3By
KCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQxNkFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJ
bmZvKSkpOwogICAgICAgICB9IGVsc2UgaWYgKGlzVWludDMyQXJyYXlQcmVkaWN0aW9uKHByZWRp
Y3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAg
ICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lz
dGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRh
YmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwot
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwg
Tm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MzJB
cnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoVGVzdFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1Jl
Z2lzdGVyKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291
cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zm
c2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCkt
PnVpbnQzMkFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICB9IGVsc2Ug
aWYgKGlzRmxvYXQzMkFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAg
ICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJ
VENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9O
b2RlLCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdw
cigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRy
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5n
cHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQzMkFycmF5RGVzY3JpcHRvcigpLm1fY2xh
c3NJbmZvKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNv
dXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25a
ZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQu
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQzMkFycmF5RGVzY3JpcHRv
cigpLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICB9IGVsc2UgaWYgKGlzRmxvYXQ2NEFycmF5UHJl
ZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAo
dGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9y
KHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0
UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNr
UmVnaXN0ZXIpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpT
VmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0lu
Zm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERh
dGEoKS0+ZmxvYXQ2NEFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOworICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2pp
dC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJ
bmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxs
OjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0
Lmdsb2JhbERhdGEoKS0+ZmxvYXQ2NEFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwog
ICAgICAgICB9CiAjZWxzZQogICAgICAgICBpZiAoaXNJbnQzMlByZWRpY3Rpb24ocHJlZGljdGVk
VHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVl
UmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
SklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6SW50MzJUYWcpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZh
bHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwgSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6SW50MzJUYWcpKSk7CiAgICAgICAgIGVsc2UgaWYgKGlzQXJyYXlQcmVkaWN0aW9u
KHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsK
ICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdp
c3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50
YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkp
OworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9k
ZUluZGV4LCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3By
KCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogICAgICAgICAgICAgbV9qaXQu
bG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3By
KCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJl
Z3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNl
dCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsK
KyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJ
bmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAgICAgICAg
IH0gZWxzZSBpZiAoaXNCeXRlQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAg
ICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWQz
MihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9O
b2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCks
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOworICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2gzMihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpDZWxsVGFnKSkpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXls
b2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0
ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIoJkpTQnl0ZUFycmF5OjpzX2luZm8pKSk7CisgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAu
Z3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cigmSlNCeXRlQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0Jv
b2xlYW5QcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lz
dGVyKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcpKSk7CisgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJy
YW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0
dWFsUmVnaXN0ZXIpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZykpKTsKICAgICAg
ICAgZWxzZSBpZiAoaXNJbnQ4QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAg
ICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWQz
MihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9O
b2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCks
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOworICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2gzMihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpDZWxsVGFnKSkpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXls
b2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0
ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQ4QXJyYXlEZXNjcmlwdG9yKCkubV9j
bGFzc0luZm8pKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVl
U291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZv
T2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRh
KCktPmludDhBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSBlbHNl
IGlmIChpc0ludDE2QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAg
ICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRD
b21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBt
X2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2gzMihNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxs
VGFnKSkpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9y
KHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdw
cigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQxNkFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJ
bmZvKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJj
ZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNl
dCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5p
bnQxNkFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICB9IGVsc2UgaWYg
KGlzSW50MzJBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQ
UlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBp
bGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0
LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJh
ZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcp
KSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3Iodmly
dHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCks
IEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihtX2ppdC5nbG9iYWxEYXRhKCktPmludDMyQXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8p
KSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBu
b2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkp
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmludDMy
QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNV
aW50OEFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVt
cG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6
OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJh
bmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6Q2VsbFRhZykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsK
ICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcih2aXJ0dWFs
UmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5j
b3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlND
ZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1f
aml0Lmdsb2JhbERhdGEoKS0+dWludDhBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsK
KyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJ
bmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDhBcnJh
eURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc1VpbnQ4
Q2xhbXBlZEFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BS
VGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGls
ZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQu
YnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykp
KTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcih2aXJ0
dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
VW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwg
SlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDhDbGFtcGVkQXJyYXlEZXNjcmlwdG9yKCkubV9jbGFz
c0luZm8pKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291
cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zm
c2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCkt
PnVpbnQ4Q2xhbXBlZEFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICB9
IGVsc2UgaWYgKGlzVWludDE2QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAg
ICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWQz
MihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9O
b2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCks
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOworICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2gzMihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpDZWxsVGFnKSkpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXls
b2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0
ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MTZBcnJheURlc2NyaXB0b3IoKS5t
X2NsYXNzSW5mbykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFs
dWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0lu
Zm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERh
dGEoKS0+dWludDE2QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0g
IGVsc2UgaWYgKGlzVWludDMyQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAg
ICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWQz
MihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9O
b2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCks
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOworICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2gzMihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpDZWxsVGFnKSkpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXls
b2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0
ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MzJBcnJheURlc2NyaXB0b3IoKS5t
X2NsYXNzSW5mbykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFs
dWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0lu
Zm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERh
dGEoKS0+dWludDMyQXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0g
IGVsc2UgaWYgKGlzRmxvYXQzMkFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAg
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2Fk
MzIoSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5v
Tm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigp
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoMzIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6Q2VsbFRhZykpKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5
bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJh
bmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
dGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQzMkFycmF5RGVzY3JpcHRvcigp
Lm1fY2xhc3NJbmZvKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2
YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNz
SW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFs
RGF0YSgpLT5mbG9hdDMyQXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAg
IH0gICBlbHNlIGlmIChpc0Zsb2F0NjRBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsK
ICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQu
bG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7
Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygp
LCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5n
cHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CisgICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5j
aDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6
OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0NjRBcnJheURlc2NyaXB0
b3IoKS5tX2NsYXNzSW5mbykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpj
bGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmds
b2JhbERhdGEoKS0+ZmxvYXQ2NEFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwogICAg
ICAgICB9IAogI2VuZGlmCiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTA4NDUzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzU5
LDcgKzE3NTksNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5
KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKS0+YXBwZW5k
T1NSRXhpdChPU1JFeGl0KGtpbmQsIGpzVmFsdWVTb3VyY2UsIG1faml0LmdyYXBoKCkudmFsdWVQ
cm9maWxlRm9yKG5vZGVJbmRleCksIGp1bXBUb0ZhaWwsIHRoaXMpKTsKKyAgICAgICAgbV9qaXQu
Y29kZUJsb2NrKCktPmFwcGVuZE9TUkV4aXQoT1NSRXhpdChraW5kLCBqc1ZhbHVlU291cmNlLCBt
X2ppdC5ncmFwaCgpLm1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3Iobm9kZUluZGV4KSwg
anVtcFRvRmFpbCwgdGhpcykpOwogICAgIH0KICAgICB2b2lkIHNwZWN1bGF0aW9uQ2hlY2soRXhp
dEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBOb2RlVXNlIG5vZGVVc2Us
IE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwpCiAgICAgewpAQCAtMTc4Miw3ICsxNzgy
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBtX2ppdC5jb2RlQmxvY2soKS0+YXBwZW5kU3BlY3VsYXRpb25SZWNv
dmVyeShyZWNvdmVyeSk7Ci0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLT5hcHBlbmRPU1JFeGl0
KE9TUkV4aXQoa2luZCwganNWYWx1ZVNvdXJjZSwgbV9qaXQuZ3JhcGgoKS52YWx1ZVByb2ZpbGVG
b3Iobm9kZUluZGV4KSwganVtcFRvRmFpbCwgdGhpcywgbV9qaXQuY29kZUJsb2NrKCktPm51bWJl
ck9mU3BlY3VsYXRpb25SZWNvdmVyaWVzKCkpKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCkt
PmFwcGVuZE9TUkV4aXQoT1NSRXhpdChraW5kLCBqc1ZhbHVlU291cmNlLCBtX2ppdC5ncmFwaCgp
Lm1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3Iobm9kZUluZGV4KSwganVtcFRvRmFpbCwg
dGhpcywgbV9qaXQuY29kZUJsb2NrKCktPm51bWJlck9mU3BlY3VsYXRpb25SZWNvdmVyaWVzKCkp
KTsKICAgICB9CiAgICAgdm9pZCBzcGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5kIGtpbmQsIEpTVmFs
dWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgTm9kZVVzZSBub2RlVXNlLCBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBqdW1wVG9GYWlsLCBjb25zdCBTcGVjdWxhdGlvblJlY292ZXJ5JiByZWNvdmVyeSkKICAg
ICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0
YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVB
Y2Nlc3NEYXRhLmgJKHJldmlzaW9uIDEwODQ1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDEx
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1lcmdlUHJlZGljdGlvbihmaW5kKCktPm1fcHJl
ZGljdGlvbiwgcHJlZGljdGlvbik7CiAgICAgfQogICAgIAorICAgIFByZWRpY3RlZFR5cGUgbm9u
VW5pZmllZFByZWRpY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcHJlZGljdGlvbjsK
KyAgICB9CisgICAgCiAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBmaW5kKCktPm1fcHJlZGljdGlvbjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128385</attachid>
            <date>2012-02-22 21:03:44 -0800</date>
            <delta_ts>2012-02-22 21:10:35 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>lazyoperands_patch_2.diff</filename>
            <type>text/plain</type>
            <size>88766</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA4NjA0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0NSBA
QAorMjAxMi0wMi0yMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBPU1IgZXhpdCB2YWx1ZSBwcm9maWxpbmcgc2hvdWxkIGhhdmUgZ3JhY2VmdWwgaGFuZGxp
bmcgb2YgbG9jYWwgdmFyaWFibGVzIGFuZCBhcmd1bWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MzEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBQcmV2aW91c2x5LCBpZiB3ZSBPU1Ig
ZXhpdGVkIGJlY2F1c2UgYSBwcmVkaWN0aW9uIGluIGEgbG9jYWwgd2FzIHdyb25nLCB3ZSdkCisg
ICAgICAgIG9ubHkgcmVhbGl6ZSB3aGF0IHRoZSB0cnVlIHR5cGUgb2YgdGhlIGxvY2FsIHdhcyBp
ZiB0aGUgcmVndWxhciB2YWx1ZSBwcm9maWxpbmcKKyAgICAgICAga2lja2VkIGluIGFuZCB0b2xk
IHVzLiBVbmxlc3MgdGhlIGxvY2FsIHdhcyBibG9jay1sb2NhbGx5IGNvcHkgcHJvcGFnYXRlZCwg
aW4KKyAgICAgICAgd2hpY2ggY2FzZSB3ZSdkIGtub3cgZnJvbSBhbiBPU1IgZXhpdCBwcm9maWxl
LgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIE9TUiBleGl0IHByb2ZpbGluZyB0
byBhbGwgbG9jYWxzIGFuZCBhcmd1bWVudHMuIE5vdywgaWYgd2UgT1NSCisgICAgICAgIGV4aXQg
YmVjYXVzZSBvZiBhIG1pc3ByZWRpY3RlZCBsb2NhbCBvciBhcmd1bWVudCB0eXBlLCB3ZSdsbCBr
bm93IHdoYXQgdGhlIHR5cGUgb2YKKyAgICAgICAgdGhlIGxvY2FsIG9yIGFyZ3VtZW50IHNob3Vs
ZCBiZSBpbW1lZGlhdGVseSB1cG9uIGV4aXRpbmcuCisgICAgICAgIAorICAgICAgICBUaGUgd2F5
IHRoYXQgbG9jYWwgdmFyaWFibGUgT1NSIGV4aXQgcHJvZmlsaW5nIHdvcmtzIGlzIHRoYXQgd2Ug
bm93IGhhdmUgYSBsYXppbHkKKyAgICAgICAgYWRkZWQgc2V0IG9mIE9TUi1leGl0LW9ubHkgdmFs
dWUgcHJvZmlsZXMgZm9yIGV4aXQgc2l0ZXMgdGhhdCBhcmUgQmFkVHlwZSBhbmQgdGhhdAorICAg
ICAgICBjaXRlZCBhIEdldExvY2FsIGFzIHRoZWlyIHZhbHVlIHNvdXJjZS4gVGhlIHZhbHVlIHBy
b2ZpbGVzIGFyZSBvbmx5IGFkZGVkIGlmIHRoZQorICAgICAgICBPU1IgZXhpdCBpcyB0YWtlbiwg
YW5kIGFyZSBrZXllZCBieSBDb2RlQmxvY2ssIGJ5dGVjb2RlIGluZGV4IG9mIHRoZSBHZXRMb2Nh
bCwgYW5kCisgICAgICAgIG9wZXJhbmQuIFRoZSBsb29rLXVwIGlzIHBlcmZvcm1lZCBieSBxdWVy
eWluZyB0aGUKKyAgICAgICAgQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVy
IGluIHRoZSBDb2RlQmxvY2ssIHVzaW5nIGEga2V5IHRoYXQgY29udGFpbnMKKyAgICAgICAgdGhl
IGJ5dGVjb2RlIGluZGV4IGFuZCB0aGUgb3BlcmFuZC4gQmVjYXVzZSB0aGUgdmFsdWUgcHJvZmls
ZXMgYXJlIGFkZGVkIGF0IHJhbmRvbQorICAgICAgICB0aW1lcywgdGhleSBhcmUgbm90IHNvcnRl
ZDsgaW5zdGVhZCB0aGV5IGFyZSBqdXN0IHN0b3JlZCBpbiBhbiBhcmJpdHJhcmlseS1vcmRlcmVk
CisgICAgICAgIFNlZ21lbnRlZFZlY3Rvci4gTG9vay11cHMgYXJlIG1hZGUgZmFzdCBieSAiZGVj
b21wcmVzc2luZyI6IHRoZSBERkc6OkJ5dGVDb2RlUGFyc2VyCisgICAgICAgIGNyZWF0ZXMgYSBM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlciwgd2hpY2ggdHVybnMgdGhlCisgICAgICAgIENv
bXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcidzIGNvbnRlbnRzIGludG8gYSBI
YXNoTWFwIGZvciB0aGUgZHVyYXRpb24KKyAgICAgICAgb2YgREZHIHBhcnNpbmcuCisgICAgICAg
IAorICAgICAgICBQcmV2aW91c2x5LCBPU1IgZXhpdHMgaGFkIGEgcG9pbnRlciB0byB0aGUgVmFs
dWVQcm9maWxlIHRoYXQgaGFkIHRoZSBzcGVjRmFpbEJ1Y2tldAorICAgICAgICBpbnRvIHdoaWNo
IHZhbHVlcyBvYnNlcnZlZCBkdXJpbmcgT1NSIGV4aXQgd291bGQgYmUgcGxhY2VkLiBOb3cgaXQg
dXNlcyBhIGxhenkKKyAgICAgICAgdGh1bmsgZm9yIGEgVmFsdWVQcm9maWxlLiBJIGNhbGwgdGhp
cyB0aGUgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS4gSXQgbWF5CisgICAgICAgIGVpdGhl
ciBjb250YWluIGEgVmFsdWVQcm9maWxlIGluc2lkZSBpdCAod2hpY2ggd29ya3MgZm9yIHByZXZp
b3VzIHVzZXMgb2YgT1NSIGV4aXQKKyAgICAgICAgcHJvZmlsaW5nKSBvciBpdCBtYXkganVzdCBo
YXZlIGtub3dsZWRnZSBvZiBob3cgdG8gZ28gYWJvdXQgY3JlYXRpbmcgdGhlCisgICAgICAgIExh
enlPcGVyYW5kVmFsdWVQcm9maWxlIGluIHRoZSBjYXNlIHRoYXQgdGhlIE9TUiBleGl0IGlzIGFj
dHVhbGx5IHRha2VuLiBUaGlzCisgICAgICAgIGVuc3VyZXMgdGhhdCB3ZSBuZXZlciBoYXZlIHRv
IGNyZWF0ZSBOdW1PcGVyYW5kcypOdW1CeXRlY29kZUluZGljZXMqTnVtQ29kZUJsb2NrcworICAg
ICAgICB2YWx1ZSBwcm9maWxpbmcgYnVja2V0cyB1bmxlc3Mgd2UgYWN0dWFsbHkgZGlkIE9TUiBl
eGl0IG9uIGV2ZXJ5IHNpbmdsZSBvcGVyYW5kLAorICAgICAgICBpbiBldmVyeSBzaW5nbGUgaW5z
dHJ1Y3Rpb24sIGluIGVhY2ggY29kZSBibG9jayAodGhhdCdzIHByb2JhYmx5IHVubGlrZWx5KS4K
KyAgICAgICAgCisgICAgICAgIFRoaXMgYXBwZWFycyBsaWtlIGEgc2xpZ2h0IFN1blNwaWRlciBh
bmQgS3Jha2VuIHNwZWVkLXVwLCBhbmQgbWF5YmUgYSBzbGlnaHQKKyAgICAgICAgc2xvdy1kb3du
IG9uIFY4LiBPbiBjb2RlIGRlbGliZXJhdGVseSB3cml0dGVuIHRvIGhhdmUgZGF0YSBmbG93IHRo
YXQgc3BhbnMgYmFzaWMKKyAgICAgICAgYmxvY2tzIGFuZCB3aGVyZSB0aGUgY29kZSBleGhpYml0
cyBwb3N0LW9wdGltaXphdGlvbiBwb2x5bW9ycGhpc20gaW4gYSBsb2NhbCwgaXQKKyAgICAgICAg
YXBwZWFycyBsaWtlIGEgZG91YmxlLWRpZ2l0IHNwZWVkLXVwLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcmVuY2VzKToKKyAg
ICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKENvZGVCbG9jayk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6bGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVzKToKKyAgICAgICAg
KiBieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDKToKKyAgICAgICAgKEpTQzo6Q29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9s
ZGVyOjpDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXIpOgorICAgICAgICAo
SlNDOjpDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXI6On5Db21wcmVzc2Vk
TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXIpOgorICAgICAgICAoSlNDOjpDb21wcmVzc2Vk
TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXI6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMp
OgorICAgICAgICAoSlNDOjpDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXI6
OmFkZCk6CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyOjpMYXp5
T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlcik6CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFs
dWVQcm9maWxlUGFyc2VyOjp+TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXIpOgorICAgICAg
ICAoSlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlcjo6Z2V0SWZQcmVzZW50KToKKyAg
ICAgICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXI6OnByZWRpY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmg6IEFkZGVkLgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5KToKKyAgICAg
ICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXk6OkxhenlPcGVyYW5kVmFsdWVQcm9m
aWxlS2V5KToKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXk6Om9wZXJh
dG9yISk6CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5OjpvcGVyYXRv
cj09KToKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXk6Omhhc2gpOgor
ICAgICAgICAoSlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleTo6Ynl0ZWNvZGVPZmZzZXQp
OgorICAgICAgICAoSlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleTo6b3BlcmFuZCk6Cisg
ICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5Ojppc0hhc2hUYWJsZURlbGV0
ZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5SGFzaDo6
aGFzaCk6CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5SGFzaDo6ZXF1
YWwpOgorICAgICAgICAoTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXlIYXNoKToKKyAgICAgICAg
KFdURik6CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlOjpMYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZSk6CisgICAgICAgIChMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSk6CisgICAg
ICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlOjprZXkpOgorICAgICAgICAoQ29tcHJl
c3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyKToKKyAgICAgICAgKExhenlPcGVyYW5k
VmFsdWVQcm9maWxlUGFyc2VyKToKKyAgICAgICAgKiBieXRlY29kZS9NZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpN
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjpmcm9tTGF6eU9wZXJhbmQpOgorICAgICAgICAo
SlNDOjpNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjpnZXRTcGVjRmFpbEJ1Y2tldCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oOiBBZGRlZC4K
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKToK
KyAgICAgICAgKEpTQzo6TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6TWV0aG9kT2ZHZXR0
aW5nQVZhbHVlUHJvZmlsZSk6CisgICAgICAgIChKU0M6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVBy
b2ZpbGU6Om9wZXJhdG9yISk6CisgICAgICAgICogYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBieXRlY29kZS9WYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChWYWx1ZVByb2ZpbGVCYXNlKToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9m
aWxlQmFzZTo6VmFsdWVQcm9maWxlQmFzZSk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJh
c2U6OmR1bXApOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGVCYXNlOjpjb21wdXRlVXBkYXRl
ZFByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpNaW5pbWFsVmFsdWVQcm9maWxlOjpNaW5pbWFs
VmFsdWVQcm9maWxlKToKKyAgICAgICAgKFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tl
dHMpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzOjpW
YWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzKToKKyAgICAgICAgKEpTQzo6VmFsdWVQ
cm9maWxlOjpWYWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpnZXRWYWx1ZVByb2ZpbGVCeXRl
Y29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmdldFJhcmVDYXNlUHJvZmlsZUJ5dGVjb2RlT2Zm
c2V0KToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoQnl0
ZUNvZGVQYXJzZXIpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjppbmplY3RM
YXp5T3BlcmFuZFByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpnZXRMb2NhbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmdldEFyZ3Vt
ZW50KToKKyAgICAgICAgKElubGluZVN0YWNrRW50cnkpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpmaXhWYXJpYWJsZUFjY2Vzc1ByZWRpY3Rpb25zKToKKyAgICAgICAgKERG
Ryk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6
OklubGluZVN0YWNrRW50cnkpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpw
YXJzZSk6CisgICAgICAgICogZGZnL0RGR0RyaXZlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6
R3JhcGg6OnZhbHVlUHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6Om1ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3IpOgorICAgICAgICAoR3JhcGgpOgorICAgICAgICAq
IGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChOb2RlKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhp
dC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6T1NSRXhpdCk6CisgICAgICAgICog
ZGZnL0RGR09TUkV4aXQuaDoKKyAgICAgICAgKE9TUkV4aXQpOgorICAgICAgICAqIGRmZy9ERkdP
U1JFeGl0Q29tcGlsZXIzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdENvbXBp
bGVyOjpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToKKyAg
ICAgICAgKiBkZmcvREZHUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlBoYXNlOjpiZWdp
blBoYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpQaGFzZTo6ZW5kUGhhc2UpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uQ2hl
Y2spOgorICAgICAgICAqIGRmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpWYXJpYWJsZUFjY2Vzc0RhdGE6Om5vblVuaWZpZWRQcmVkaWN0aW9uKToKKyAgICAg
ICAgKFZhcmlhYmxlQWNjZXNzRGF0YSk6CisKIDIwMTItMDItMjIgIEdhdmluIEJhcnJhY2xvdWdo
ICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBbW0RlZmluZU93
blByb3BlcnR5XV0gZm9yIHRoZSBhcmd1bWVudHMgb2JqZWN0CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDg2MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQyLDE1ICs0MiwxNiBAQCBT
RVQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGJ5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNw
cAogICAgIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCiAgICAgYnl0ZWNvZGUvSnVtcFRhYmxl
LmNwcAorICAgIGJ5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAogICAgIGJ5dGVj
b2RlL01ldGhvZENhbGxMaW5rSW5mby5jcHAKICAgICBieXRlY29kZS9NZXRob2RDYWxsTGlua1N0
YXR1cy5jcHAKKyAgICBieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAog
ICAgIGJ5dGVjb2RlL09wY29kZS5jcHAKICAgICBieXRlY29kZS9Qb2x5bW9ycGhpY1B1dEJ5SWRM
aXN0LmNwcAogICAgIGJ5dGVjb2RlL1ByZWRpY3RlZFR5cGUuY3BwCiAgICAgYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5jcHAKICAgICBieXRlY29kZS9TYW1wbGluZ1Rvb2wuY3BwCiAgICAgYnl0ZWNv
ZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCi0gICAgYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmNwcAog
CiAgICAgYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAogICAgIGJ5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQkocmV2aXNpb24gMTA4NjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTEwNCwxMSArMTA0LDE1IEBAIGph
dmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9KdW1wVGFibGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRh
YmxlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5m
by5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGUuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmVJbmZv
LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua0luZm8u
Y3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtJbmZv
LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua1N0YXR1
cy5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua1N0
YXR1cy5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5n
QVZhbHVlUHJvZmlsZS5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PcGNvZGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2Rl
LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY1B1dEJ5SWRM
aXN0LmNwcCBcCkBAIC0xMjQsNyArMTI4LDYgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaCBcCi0JU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5jcHAgXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9U
YXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJp
CShyZXZpc2lvbiAxMDg2MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQko
d29ya2luZyBjb3B5KQpAQCAtNTUsMTUgKzU1LDE2IEBAIFNPVVJDRVMgKz0gXAogICAgIGJ5dGVj
b2RlL0RGR0V4aXRQcm9maWxlLmNwcCBcCiAgICAgYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAg
XAogICAgIGJ5dGVjb2RlL0p1bXBUYWJsZS5jcHAgXAorICAgIGJ5dGVjb2RlL0xhenlPcGVyYW5k
VmFsdWVQcm9maWxlLmNwcCBcCiAgICAgYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtJbmZvLmNwcCBc
CiAgICAgYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwIFwKKyAgICBieXRlY29kZS9N
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcCBcCiAgICAgYnl0ZWNvZGUvT3Bjb2RlLmNw
cCBcCiAgICAgYnl0ZWNvZGUvUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5jcHAgXAogICAgIGJ5dGVj
b2RlL1ByZWRpY3RlZFR5cGUuY3BwIFwKICAgICBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcCBc
CiAgICAgYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcCBcCiAgICAgYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uY3BwIFwKLSAgICBieXRlY29kZS9WYWx1ZVByb2ZpbGUuY3BwIFwKICAgICBieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIFwKICAgICBieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcCBcCiAgICAgaGVhcC9Db3BpZWRTcGFjZS5jcHAgXApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHJl
dmlzaW9uIDEwODYwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDc4LDYgKzE0NzgsMjIgQEAKIAkJCU5hbWU9ImJ5dGVjb2RlIgogCQkJPgogCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGJ5dGVjb2RlXE1ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlwuLlxieXRlY29kZVxNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgiCisJCQkJ
PgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGJ5dGVjb2Rl
XExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8Rmls
ZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVcTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGUuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5c
Li5cYnl0ZWNvZGVcR2V0QnlJZFN0YXR1cy5oIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTE2MTQs
MTAgKzE2MzAsNiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQ
YXRoPSIuLlwuLlxieXRlY29kZVxWYWx1ZVByb2ZpbGUuY3BwIgotCQkJCT4KLQkJCTwvRmlsZT4K
LQkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxieXRlY29kZVxWYWx1ZVByb2ZpbGUu
aCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMTA4NjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzks
MTAgQEAKIAkJMEY5RkM4QzUxNEUxQjYwNDAwRDUyQUUwIC8qIFB1dEtpbmQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUZDOEMxMTRFMUI1RkIwMEQ1
MkFFMCAvKiBQdXRLaW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEY5RkM4RDAxNEU2MTJEODAwRDUyQUUwIC8qIERhdGFMb2cuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RkM4Q0QxNEU2MTJE
NTAwRDUyQUUwIC8qIERhdGFMb2cuY3BwICovOyB9OwogCQkwRjlGQzhEMTE0RTYxMkRBMDBENTJB
RTAgLyogRGF0YUxvZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY5RkM4Q0UxNEU2MTJENTAwRDUyQUUwIC8qIERhdGFMb2cuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkI1NDY3NzE0RjU5QjVDMDAy
QzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjU0Njc2MTRGNTlBRDEwMDJDMjk4OSAvKiBMYXp5
T3BlcmFuZFZhbHVlUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGQjU0Njc5MTRGNUM0NkIwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZh
bHVlUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkI1NDY3ODE0RjVDNDY4MDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUu
Y3BwICovOyB9OworCQkwRkI1NDY3QjE0RjVDN0UxMDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5n
QVZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZCNTQ2N0ExNEY1QzdENDAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVBy
b2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRkI1NDY3RDE0RjVDRkQ2MDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI1
NDY3QzE0RjVDRkQzMDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAg
Ki87IH07CiAJCTBGQkMwQUU3MTQ5NkM3QzQwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkJDMEFFNDE0
OTZDN0MxMDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuY3BwICovOyB9OwogCQkwRkJDMEFFODE0
OTZDN0M3MDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkMwQUU1MTQ5NkM3QzEwMEQ0RkJERCAvKiBERkdF
eGl0UHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGQkQ3RTY5MTQ0Nzk5OTYwMDQ4MTMxNSAvKiBDb2RlT3JpZ2luLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkJEN0U2NzE0NDc5OThGMDA0
ODEzMTUgLyogQ29kZU9yaWdpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0xNjksNyArMTczLDYgQEAKIAkJMEZEODJFNTcxNDFEQUYxMDAwMTc5
Qzk0IC8qIERGR09TUkVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkQ4MkU1MzE0MURBRURFMDAxNzlDOTQgLyogREZHT1NSRW50cnkuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkQ4MkU4NTE0
MUYzRkUzMDAxNzlDOTQgLyogQm91bmRzQ2hlY2tlZFBvaW50ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgyRTgyMTQxRjNGQzkwMDE3OUM5NCAv
KiBCb3VuZHNDaGVja2VkUG9pbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGRDgyRTg2MTQxRjNGRjEwMDE3OUM5NCAvKiBQcmVkaWN0ZWRU
eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RDgyRTg0MTQxRjNGREEwMDE3OUM5NCAvKiBQcmVkaWN0ZWRUeXBlLmNwcCAqLzsgfTsKLQkJMEZE
ODJFOTAxNDIwN0E1RjAwMTc5Qzk0IC8qIFZhbHVlUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MkU4RTE0MjA3QTUxMDAxNzlDOTQg
LyogVmFsdWVQcm9maWxlLmNwcCAqLzsgfTsKIAkJMEZEODJGNEIxNDI4MDZBMTAwMTc5Qzk0IC8q
IEJpdFZlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZEODJGNDkxNDI4MDY5MjAwMTc5Qzk0IC8qIEJpdFZlY3Rvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRTIyOEVEMTQzNkFCMjcwMDE5
NkM0OCAvKiBPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkUyMjhFQjE0MzZBQjIzMDAxOTZDNDggLyogT3B0aW9ucy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRTIyOEVFMTQzNkFCMkMw
MDE5NkM0OCAvKiBPcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRTIyOEVBMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCAqLzsg
fTsKQEAgLTEwMDEsNiArMTAwNCwxMCBAQAogCQkwRjlGQzhDMTE0RTFCNUZCMDBENTJBRTAgLyog
UHV0S2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXRLaW5kLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUZDOENEMTRFNjEyRDUwMEQ1MkFFMCAvKiBE
YXRhTG9nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFMb2cu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjlGQzhDRTE0RTYxMkQ1MDBENTJB
RTAgLyogRGF0YUxvZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhTG9n
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQjU0Njc2MTRGNTlBRDEwMDJDMjk4
OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRkI1NDY3ODE0RjVDNDY4MDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkI1NDY3QTE0
RjVDN0Q0MDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQjU0NjdDMTRGNUNGRDMwMDJDMjk4OSAv
KiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRkJDMEFFNDE0OTZDN0MxMDBENEZCREQgLyogREZHRXhp
dFByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gREZHRXhp
dFByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkJDMEFFNTE0OTZD
N0MxMDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gREZHRXhpdFByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZCRDdFNjcxNDQ3OTk4RjAwNDgxMzE1IC8qIENvZGVPcmlnaW4uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ29kZU9yaWdpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTAzMyw3ICsxMDQwLDYgQEAKIAkJMEZEODJFNTMxNDFEQUVERTAwMTc5Qzk0IC8qIERG
R09TUkVudHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR09TUkVudHJ5
Lmg7IHBhdGggPSBkZmcvREZHT1NSRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEZEODJFODIxNDFGM0ZDOTAwMTc5Qzk0IC8qIEJvdW5kc0NoZWNrZWRQb2ludGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJvdW5kc0NoZWNrZWRQb2ludGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDgyRTg0MTQxRjNGREEwMDE3OUM5NCAvKiBQ
cmVkaWN0ZWRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBy
ZWRpY3RlZFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkQ4MkU4RTE0
MjA3QTUxMDAxNzlDOTQgLyogVmFsdWVQcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFZhbHVlUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGRDgyRjQ5MTQyODA2OTIwMDE3OUM5NCAvKiBCaXRWZWN0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQml0VmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGRTIyOEVBMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9wdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRkUyMjhFQjE0MzZBQjIzMDAxOTZDNDggLyogT3B0aW9ucy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yNzc2LDYgKzI3ODIsMTAgQEAKIAkJOTY5QTA3OEYwRUQxRDNBRTAw
RjFGNjgxIC8qIGJ5dGVjb2RlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQkwRkI1NDY3QzE0RjVDRkQzMDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZS5jcHAgKi8sCisJCQkJMEZCNTQ2N0ExNEY1QzdENDAwMkMyOTg5IC8qIE1ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCAqLywKKwkJCQkwRkI1NDY3ODE0RjVDNDY4MDAyQzI5
ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwICovLAorCQkJCTBGQjU0Njc2MTRGNTlB
RDEwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oICovLAogCQkJCTBGMjFDMjdF
MTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi8sCiAJCQkJMEYwRkM0
NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi8sCiAJCQkJMEY5RkM4
QkYxNEUxQjVGQjAwRDUyQUUwIC8qIFBvbHltb3JwaGljUHV0QnlJZExpc3QuY3BwICovLApAQCAt
MjgxOSw3ICsyODI5LDYgQEAKIAkJCQkxNDI5RDg4NDBFRDIxQzNEMDBCODk2MTkgLyogU2FtcGxp
bmdUb29sLmggKi8sCiAJCQkJQkNDRjBEMEIwRUYwQjhBNTAwNDEzQzhGIC8qIFN0cnVjdHVyZVN0
dWJJbmZvLmNwcCAqLywKIAkJCQlCQ0NGMEQwNzBFRjBBQUI5MDA0MTNDOEYgLyogU3RydWN0dXJl
U3R1YkluZm8uaCAqLywKLQkJCQkwRkQ4MkU4RTE0MjA3QTUxMDAxNzlDOTQgLyogVmFsdWVQcm9m
aWxlLmNwcCAqLywKIAkJCQkwRjk2M0IzNjEzRkM2RkRFMDAwMkQ5QjIgLyogVmFsdWVQcm9maWxl
LmggKi8sCiAJCQkJMEY0MjZBNDUxNDYwQ0JBQjAwMTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCAq
LywKIAkJCQkwRjQyNkE0NjE0NjBDQkFCMDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmggKi8s
CkBAIC0zMzkwLDYgKzMzOTksOCBAQAogCQkJCTBGRkZDOTVFMTRFRjkwQjcwMEM3MjUzMiAvKiBE
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5
NjAxNEVGOTBCRDAwQzcyNTMyIC8qIERGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ5NzIwOTExNEVCODMxNTAwRkVCMUI3IC8qIFBhc3NXZWFr
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkI1NDY3NzE0RjU5QjVDMDAyQzI5ODkgLyogTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQjU0NjdCMTRGNUM3RTEw
MDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
QEAgLTM5NjIsNyArMzk3Myw2IEBACiAJCQkJMjY4NEIyREYxNEQ0QTlCMjAwNzJDMEI2IC8qIFVS
TFNlZ21lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDY5REVFMTA3RUM3RTcwMDY1MDQ0
NiAvKiBVU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxRUY3OUFBMENFOTdCQTYwMDg4
RDUwMCAvKiBVVEY4LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGRDgyRTkwMTQyMDdBNUYwMDE3
OUM5NCAvKiBWYWx1ZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDODE1MTYxNDA1
MTFCNTAwQ0ZBNjAzIC8qIFZUYWJsZVNwZWN0cnVtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
QzgxNTBCMTQwNDNDMEUwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTg2OEJGQTE3MTE3Q0YxOTkwMEI5MDhCMSAvKiBXVEZTdHJpbmcuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0zOTk4LDYgKzQwMDgsOCBAQAogCQkJCTBGRkZDOTVCMTRFRjkwQUQw
MEM3MjUzMiAvKiBERkdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkZGQzk1RDE0RUY5
MEIzMDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZGRkM5NUYxNEVGOTBCQjAwQzcyNTMyIC8qIERGR1ZpcnR1YWxSZWdpc3Rl
ckFsbG9jYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkI1NDY3OTE0RjVDNDZC
MDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMEZCNTQ2N0QxNEY1Q0ZENjAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTA4NjAzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NDYsNiAr
MTk0Niw4IEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXIKICAgICAg
ICAgICAgIHZpc2l0b3IuYXBwZW5kKCZpbmxpbmVDYWxsRnJhbWUuY2FsbGVlKTsKICAgICAgICAg
fQogICAgIH0KKyAgICAKKyAgICBtX2xhenlPcGVyYW5kVmFsdWVQcm9maWxlcy5jb21wdXRlVXBk
YXRlZFByZWRpY3Rpb25zKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlz
aW9uIDEwODYwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiSnVtcFRhYmxlLmgiCiAjaW5jbHVkZSAiTExJbnRDYWxsTGlua0lu
Zm8uaCIKKyNpbmNsdWRlICJMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oIgogI2luY2x1ZGUgIkxp
bmVJbmZvLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJQcmVkaWN0aW9uVHJhY2tl
ci5oIgpAQCAtNzI3LDYgKzcyOCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAg
ICAgICAgIERGRzo6RXhpdFByb2ZpbGUmIGV4aXRQcm9maWxlKCkgeyByZXR1cm4gbV9leGl0UHJv
ZmlsZTsgfQorICAgICAgICAKKyAgICAgICAgQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9m
aWxlSG9sZGVyJiBsYXp5T3BlcmFuZFZhbHVlUHJvZmlsZXMoKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gbV9sYXp5T3BlcmFuZFZhbHVlUHJvZmlsZXM7CisgICAgICAgIH0KICNlbmRp
ZgogCiAgICAgICAgIC8vIENvbnN0YW50IFBvb2wKQEAgLTExODcsNiArMTE5Myw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAvLyBUaGlzIGlzIHJlbGV2YW50IHRvIG5vbi1ERkcgY29kZSBi
bG9ja3MgdGhhdCBzZXJ2ZSBhcyB0aGUgcHJvZmlsZWQgY29kZSBibG9jawogICAgICAgICAvLyBm
b3IgREZHIGNvZGUgYmxvY2tzLgogICAgICAgICBERkc6OkV4aXRQcm9maWxlIG1fZXhpdFByb2Zp
bGU7CisgICAgICAgIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlciBtX2xh
enlPcGVyYW5kVmFsdWVQcm9maWxlczsKICNlbmRpZgogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxF
UikKICAgICAgICAgVmVjdG9yPFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9M
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGUuaCIKKworI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKworbmFtZXNwYWNlIEpT
QyB7CisKK0NvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6Q29tcHJlc3Nl
ZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyKCkgeyB9CitDb21wcmVzc2VkTGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGVIb2xkZXI6On5Db21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVI
b2xkZXIoKSB7IH0KKwordm9pZCBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xk
ZXI6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMoKQoreworICAgIGlmICghbV9kYXRhKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZGF0YS0+
c2l6ZSgpOyArK2kpCisgICAgICAgIG1fZGF0YS0+YXQoaSkuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0
aW9uKCk7Cit9CisKK0xhenlPcGVyYW5kVmFsdWVQcm9maWxlKiBDb21wcmVzc2VkTGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGVIb2xkZXI6OmFkZCgKKyAgICBjb25zdCBMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZUtleSYga2V5KQoreworICAgIGlmICghbV9kYXRhKQorICAgICAgICBtX2RhdGEgPSBhZG9w
dFB0cihuZXcgU2VnbWVudGVkVmVjdG9yPExhenlPcGVyYW5kVmFsdWVQcm9maWxlLCA4PigpKTsK
KyAgICBlbHNlIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZGF0YS0+c2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChtX2RhdGEtPmF0KGkpLmtleSgpID09IGtleSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gJm1fZGF0YS0+YXQoaSk7CisgICAgICAgIH0KKyAgICB9
CisgICAgCisgICAgbV9kYXRhLT5hcHBlbmQoTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUoa2V5KSk7
CisgICAgcmV0dXJuICZtX2RhdGEtPmxhc3QoKTsKK30KKworTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGVQYXJzZXI6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyKAorICAgIENvbXByZXNzZWRM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlciYgaG9sZGVyKQorICAgIDogbV9ob2xkZXIoaG9s
ZGVyKQoreworICAgIGlmICghbV9ob2xkZXIubV9kYXRhKQorICAgICAgICByZXR1cm47CisgICAg
CisgICAgU2VnbWVudGVkVmVjdG9yPExhenlPcGVyYW5kVmFsdWVQcm9maWxlLCA4PiYgZGF0YSA9
ICptX2hvbGRlci5tX2RhdGE7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEuc2l6
ZSgpOyArK2kpCisgICAgICAgIG1fbWFwLmFkZChkYXRhW2ldLmtleSgpLCAmZGF0YVtpXSk7Cit9
CisKK0xhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyOjp+TGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGVQYXJzZXIoKSB7IH0KKworTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUqIExhenlPcGVyYW5kVmFs
dWVQcm9maWxlUGFyc2VyOjpnZXRJZlByZXNlbnQoCisgICAgY29uc3QgTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVLZXkmIGtleSkgY29uc3QKK3sKKyAgICBIYXNoTWFwPExhenlPcGVyYW5kVmFsdWVQ
cm9maWxlS2V5LCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSo+Ojpjb25zdF9pdGVyYXRvciBpdGVy
ID0KKyAgICAgICAgbV9tYXAuZmluZChrZXkpOworICAgIAorICAgIGlmIChpdGVyID09IG1fbWFw
LmVuZCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICByZXR1cm4gaXRlci0+c2Vjb25k
OworfQorCitQcmVkaWN0ZWRUeXBlIExhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyOjpwcmVk
aWN0aW9uKAorICAgIGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5JiBrZXkpIGNvbnN0
Cit7CisgICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBnZXRJZlByZXNlbnQo
a2V5KTsKKyAgICBpZiAoIXByb2ZpbGUpCisgICAgICAgIHJldHVybiBQcmVkaWN0Tm9uZTsKKyAg
ICAKKyAgICByZXR1cm4gcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6
eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIExhenlPcGVyYW5kVmFsdWVQcm9maWxlX2gKKyNkZWZpbmUgTGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGVfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFC
TEUoVkFMVUVfUFJPRklMRVIpCisKKyNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvU2VnbWVudGVkVmVjdG9yLmg+CisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOworCitjbGFzcyBMYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZUtleSB7CitwdWJsaWM6CisgICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVL
ZXkoKQorICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQoMCkgLy8gMCA9IGVtcHR5IHZhbHVlCisg
ICAgICAgICwgbV9vcGVyYW5kKC0xKSAvLyBub3QgYSB2YWxpZCBvcGVyYW5kIGluZGV4IGluIG91
ciBjdXJyZW50IHNjaGVtZQorICAgIHsKKyAgICB9CisgICAgCisgICAgTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQorICAgICAgICA6IG1f
Ynl0ZWNvZGVPZmZzZXQoMSkgLy8gMSA9IGRlbGV0ZWQgdmFsdWUKKyAgICAgICAgLCBtX29wZXJh
bmQoLTEpIC8vIG5vdCBhIHZhbGlkIG9wZXJhbmQgaW5kZXggaW4gb3VyIGN1cnJlbnQgc2NoZW1l
CisgICAgeworICAgIH0KKyAgICAKKyAgICBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSh1bnNp
Z25lZCBieXRlY29kZU9mZnNldCwgaW50IG9wZXJhbmQpCisgICAgICAgIDogbV9ieXRlY29kZU9m
ZnNldChieXRlY29kZU9mZnNldCkKKyAgICAgICAgLCBtX29wZXJhbmQob3BlcmFuZCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChvcGVyYW5kICE9IC0xKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBv
cGVyYXRvciEoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3BlcmFuZCA9PSAtMTsK
KyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExhenlPcGVyYW5kVmFsdWVQ
cm9maWxlS2V5JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2J5dGVjb2Rl
T2Zmc2V0ID09IG90aGVyLm1fYnl0ZWNvZGVPZmZzZXQKKyAgICAgICAgICAgICYmIG1fb3BlcmFu
ZCA9PSBvdGhlci5tX29wZXJhbmQ7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIGhhc2goKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6aW50SGFzaChtX2J5dGVjb2RlT2Zmc2V0
KSArIG1fb3BlcmFuZDsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQo
KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKCEhKnRoaXMpOworICAgICAgICByZXR1cm4g
bV9ieXRlY29kZU9mZnNldDsKKyAgICB9CisgICAgaW50IG9wZXJhbmQoKSBjb25zdAorICAgIHsK
KyAgICAgICAgQVNTRVJUKCEhKnRoaXMpOworICAgICAgICByZXR1cm4gbV9vcGVyYW5kOworICAg
IH0KKyAgICAKKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX29wZXJhbmQgPT0gLTEgJiYgbV9ieXRlY29kZU9mZnNldDsKKyAg
ICB9Citwcml2YXRlOiAKKyAgICB1bnNpZ25lZCBtX2J5dGVjb2RlT2Zmc2V0OworICAgIGludCBt
X29wZXJhbmQ7Cit9OworCitzdHJ1Y3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXlIYXNoIHsK
KyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtl
eSYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoCisg
ICAgICAgIGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5JiBhLAorICAgICAgICBjb25z
dCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAg
c3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0
SGFzaDxKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5PiB7CisgICAgdHlwZWRlZiBKU0M6
OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5SGFzaCBIYXNoOworfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRz
PEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXk+IDogcHVibGljIEdlbmVyaWNIYXNoVHJh
aXRzPEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXk+IHsKKyAgICBzdGF0aWMgdm9pZCBj
b25zdHJ1Y3REZWxldGVkVmFsdWUoSlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSYgc2xv
dCkgeyBuZXcgKE5vdE51bGwsICZzbG90KSBKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5
KEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1
ZShjb25zdCBKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5JiB2YWx1ZSkgeyByZXR1cm4g
dmFsdWUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2Ug
V1RGCisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUg
OiBwdWJsaWMgTWluaW1hbFZhbHVlUHJvZmlsZSB7CisgICAgTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGUoKQorICAgICAgICA6IE1pbmltYWxWYWx1ZVByb2ZpbGUoKQorICAgICAgICAsIG1fb3BlcmFu
ZCgtMSkKKyAgICB7CisgICAgfQorICAgIAorICAgIGV4cGxpY2l0IExhenlPcGVyYW5kVmFsdWVQ
cm9maWxlKGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5JiBrZXkpCisgICAgICAgIDog
TWluaW1hbFZhbHVlUHJvZmlsZShrZXkuYnl0ZWNvZGVPZmZzZXQoKSkKKyAgICAgICAgLCBtX29w
ZXJhbmQoa2V5Lm9wZXJhbmQoKSkKKyAgICB7CisgICAgfQorICAgIAorICAgIExhenlPcGVyYW5k
VmFsdWVQcm9maWxlS2V5IGtleSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVLZXkobV9ieXRlY29kZU9mZnNldCwgbV9vcGVyYW5kKTsKKyAgICB9
CisgICAgCisgICAgaW50IG1fb3BlcmFuZDsKK307CisKK2NsYXNzIExhenlPcGVyYW5kVmFsdWVQ
cm9maWxlUGFyc2VyOworCitjbGFzcyBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVI
b2xkZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvbXByZXNzZWRMYXp5T3BlcmFuZFZh
bHVlUHJvZmlsZUhvbGRlcik7CitwdWJsaWM6CisgICAgQ29tcHJlc3NlZExhenlPcGVyYW5kVmFs
dWVQcm9maWxlSG9sZGVyKCk7CisgICAgfkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmls
ZUhvbGRlcigpOworICAgIAorICAgIHZvaWQgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9ucygpOwor
ICAgIAorICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlKiBhZGQoY29uc3QgTGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGVLZXkmIGtleSk7CisgICAgCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlcjsKKyAgICBPd25QdHI8U2VnbWVudGVkVmVjdG9y
PExhenlPcGVyYW5kVmFsdWVQcm9maWxlLCA4PiA+IG1fZGF0YTsKK307CisKK2NsYXNzIExhenlP
cGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMYXp5
T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlcik7CitwdWJsaWM6CisgICAgZXhwbGljaXQgTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXIoCisgICAgICAgIENvbXByZXNzZWRMYXp5T3BlcmFuZFZh
bHVlUHJvZmlsZUhvbGRlciYgaG9sZGVyKTsKKyAgICB+TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQ
YXJzZXIoKTsKKyAgICAKKyAgICBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSogZ2V0SWZQcmVzZW50
KAorICAgICAgICBjb25zdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSYga2V5KSBjb25zdDsK
KyAgICAKKyAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24oY29uc3QgTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVLZXkmIGtleSkgY29uc3Q7Citwcml2YXRlOgorICAgIENvbXByZXNzZWRMYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZUhvbGRlciYgbV9ob2xkZXI7CisgICAgSGFzaE1hcDxMYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZUtleSwgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUqPiBtX21hcDsKK307CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQor
CisjZW5kaWYgLy8gTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVfaAorCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0
aW5nQVZhbHVlUHJvZmlsZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1ldGhvZE9mR2V0dGluZ0FW
YWx1ZVByb2ZpbGUuaCIKKworI2lmIEVOQUJMRShERkdfSklUKQorCisjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
IE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmZyb21MYXp5T3BlcmFuZCgKKyAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGtleSkK
K3sKKyAgICBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHJlc3VsdDsKKyAgICByZXN1bHQu
bV9raW5kID0gTGF6eU9wZXJhbmQ7CisgICAgcmVzdWx0LnUubGF6eU9wZXJhbmQuY29kZUJsb2Nr
ID0gY29kZUJsb2NrOworICAgIHJlc3VsdC51LmxhenlPcGVyYW5kLmJ5dGVjb2RlT2Zmc2V0ID0g
a2V5LmJ5dGVjb2RlT2Zmc2V0KCk7CisgICAgcmVzdWx0LnUubGF6eU9wZXJhbmQub3BlcmFuZCA9
IGtleS5vcGVyYW5kKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworRW5jb2RlZEpTVmFsdWUq
IE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmdldFNwZWNGYWlsQnVja2V0KHVuc2lnbmVk
IGluZGV4KSBjb25zdAoreworICAgIHN3aXRjaCAobV9raW5kKSB7CisgICAgY2FzZSBOb25lOgor
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgCisgICAgY2FzZSBSZWFkeToKKyAgICAgICAgcmV0
dXJuIHUucHJvZmlsZS0+c3BlY0ZhaWxCdWNrZXQoaW5kZXgpOworICAgICAgICAKKyAgICBjYXNl
IExhenlPcGVyYW5kOgorICAgICAgICByZXR1cm4gdS5sYXp5T3BlcmFuZC5jb2RlQmxvY2stPmxh
enlPcGVyYW5kVmFsdWVQcm9maWxlcygpLmFkZCgKKyAgICAgICAgICAgIExhenlPcGVyYW5kVmFs
dWVQcm9maWxlS2V5KAorICAgICAgICAgICAgICAgIHUubGF6eU9wZXJhbmQuYnl0ZWNvZGVPZmZz
ZXQsIHUubGF6eU9wZXJhbmQub3BlcmFuZCkpLT5zcGVjRmFpbEJ1Y2tldChpbmRleCk7CisgICAg
fQorfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZV9o
CisjZGVmaW5lIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVfaAorCisjaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CisKKy8vIFRoaXMgaXMgZ3VhcmRlZCBieSBFTkFCTEVfREZHX0pJVCBvbmx5
IGJlY2F1c2UgaXQgdXNlcyBzb21lIHZhbHVlIHByb2ZpbGVzCisvLyB0aGF0IGFyZSBjdXJyZW50
bHkgb25seSB1c2VkIGlmIHRoZSBERkcgaXMgZW5hYmxlZCAoaS5lLiB0aGV5IGFyZSBub3QKKy8v
IGF2YWlsYWJsZSBpbiB0aGUgcHJvZmlsZS1vbmx5IGNvbmZpZ3VyYXRpb24pLiBIb3BlZnVsbHkg
c29tZWRheSBhbGwgb2YKKy8vIHRoZXNlICNpZidzIHdpbGwgZGlzYXBwZWFyLi4uCisjaWYgRU5B
QkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBDb2RlQmxvY2s7CitjbGFzcyBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleTsKK3N0
cnVjdCBWYWx1ZVByb2ZpbGU7CisKK2NsYXNzIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUg
eworcHVibGljOgorICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUoKQorICAgICAgICA6
IG1fa2luZChOb25lKQorICAgIHsKKyAgICB9CisgICAgCisgICAgZXhwbGljaXQgTWV0aG9kT2ZH
ZXR0aW5nQVZhbHVlUHJvZmlsZShWYWx1ZVByb2ZpbGUqIHByb2ZpbGUpCisgICAgeworICAgICAg
ICBpZiAocHJvZmlsZSkgeworICAgICAgICAgICAgbV9raW5kID0gUmVhZHk7CisgICAgICAgICAg
ICB1LnByb2ZpbGUgPSBwcm9maWxlOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fa2lu
ZCA9IE5vbmU7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBNZXRob2RPZkdldHRpbmdBVmFsdWVQ
cm9maWxlIGZyb21MYXp5T3BlcmFuZCgKKyAgICAgICAgQ29kZUJsb2NrKiwgY29uc3QgTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVLZXkmKTsKKyAgICAKKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0
IHsgcmV0dXJuIG1fa2luZCA9PSBOb25lOyB9CisgICAgCisgICAgLy8gVGhpcyBsb2dpY2FsbHkg
aGFzIGEgcG9pbnRlciB0byBhICJUaGVyZSBleGlzdHMgWCBzdWNoIHRoYXQKKyAgICAvLyBWYWx1
ZVByb2ZpbGVCYXNlPFg+Ii4gQnV0IHNpbmNlIEMrKyBkb2VzIG5vdCBoYXZlIGV4aXN0ZW50aWFs
CisgICAgLy8gdGVtcGxhdGVzLCBJIGNhbm5vdCByZXR1cm4gaXQuIFNvIGluc3RlYWQsIGZvciBh
bnkgbWV0aG9kcyB0aGF0CisgICAgLy8gdXNlcnMgb2YgdGhpcyBjbGFzcyB3b3VsZCBsaWtlIHRv
IGNhbGwsIHdlJ2xsIGp1c3QgaGF2ZSB0byBwcm92aWRlCisgICAgLy8gYSBtZXRob2QgaGVyZSB0
aGF0IGRvZXMgaXQgdGhyb3VnaCBhbiBpbmRpcmVjdGlvbi4gT3Igd2UgY291bGQKKyAgICAvLyBw
b3NzaWJseSBqdXN0IG1ha2UgVmFsdWVQcm9maWxlIGxlc3MgdGVtcGxhdGUtYmFzZWQuIEJ1dCBs
YXN0IEkKKyAgICAvLyB0cmllZCB0aGF0LCBpdCBmZWx0IG1vcmUgeXVja3kgdGhhbiB0aGlzIGNs
YXNzLgorICAgIAorICAgIEVuY29kZWRKU1ZhbHVlKiBnZXRTcGVjRmFpbEJ1Y2tldCh1bnNpZ25l
ZCBpbmRleCkgY29uc3Q7CisgICAgCitwcml2YXRlOgorICAgIGVudW0gS2luZCB7CisgICAgICAg
IE5vbmUsCisgICAgICAgIFJlYWR5LAorICAgICAgICBMYXp5T3BlcmFuZAorICAgIH07CisgICAg
CisgICAgS2luZCBtX2tpbmQ7CisgICAgdW5pb24geworICAgICAgICBWYWx1ZVByb2ZpbGUqIHBy
b2ZpbGU7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
azsKKyAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICAgICAgaW50
IG9wZXJhbmQ7CisgICAgICAgIH0gbGF6eU9wZXJhbmQ7CisgICAgfSB1OworfTsKKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKworI2VuZGlmIC8vIE1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmNwcAkocmV2aXNpb24gMTA4NjAzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1l
cyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlZh
bHVlUHJvZmlsZS5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotI2lmIEVOQUJMRShWQUxVRV9QUk9G
SUxFUikKLVByZWRpY3RlZFR5cGUgVmFsdWVQcm9maWxlOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rp
b24oKQotewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mQnVja2V0
czsgKytpKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUobV9idWNr
ZXRzW2ldKTsKLSAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAKLSAgICAgICAgbV9udW1iZXJPZlNhbXBsZXNJblByZWRpY3Rpb24rKzsKLSAgICAgICAg
bWVyZ2VQcmVkaWN0aW9uKG1fcHJlZGljdGlvbiwgcHJlZGljdGlvbkZyb21WYWx1ZSh2YWx1ZSkp
OwotICAgICAgICAKLSAgICAgICAgbV9idWNrZXRzW2ldID0gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFs
dWUoKSk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBtX3ByZWRpY3Rpb247Ci19Ci0jZW5kaWYg
Ly8gRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQotCi19IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHJldmlzaW9u
IDEwODYwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksMTAgQEAKICNpZm5kZWYgVmFsdWVQcm9maWxlX2gK
ICNkZWZpbmUgVmFsdWVQcm9maWxlX2gKIAorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisj
aWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1
ZGUgIlByZWRpY3RlZFR5cGUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKQEAgLTM2LDE1ICs0
MCwxNCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikK
LXN0cnVjdCBWYWx1ZVByb2ZpbGUgewotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb2dOdW1i
ZXJPZkJ1Y2tldHMgPSAwOyAvLyAxIGJ1Y2tldAotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBu
dW1iZXJPZkJ1Y2tldHMgPSAxIDw8IGxvZ051bWJlck9mQnVja2V0czsKK3RlbXBsYXRlPHVuc2ln
bmVkIG51bWJlck9mQnVja2V0c0FyZ3VtZW50Pgorc3RydWN0IFZhbHVlUHJvZmlsZUJhc2Ugewor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkJ1Y2tldHMgPSBudW1iZXJPZkJ1Y2tl
dHNBcmd1bWVudDsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZTcGVjRmFpbEJ1
Y2tldHMgPSAxOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBidWNrZXRJbmRleE1hc2sgPSBu
dW1iZXJPZkJ1Y2tldHMgLSAxOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB0b3RhbE51bWJl
ck9mQnVja2V0cyA9IG51bWJlck9mQnVja2V0cyArIG51bWJlck9mU3BlY0ZhaWxCdWNrZXRzOwog
ICAgIAotICAgIFZhbHVlUHJvZmlsZSgpCisgICAgVmFsdWVQcm9maWxlQmFzZSgpCiAgICAgICAg
IDogbV9ieXRlY29kZU9mZnNldCgtMSkKICAgICAgICAgLCBtX3ByZWRpY3Rpb24oUHJlZGljdE5v
bmUpCiAgICAgICAgICwgbV9udW1iZXJPZlNhbXBsZXNJblByZWRpY3Rpb24oMCkKQEAgLTUzLDcg
KzU2LDcgQEAgc3RydWN0IFZhbHVlUHJvZmlsZSB7CiAgICAgICAgICAgICBtX2J1Y2tldHNbaV0g
PSBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAgICB9CiAgICAgCi0gICAgVmFsdWVQcm9m
aWxlKGludCBieXRlY29kZU9mZnNldCkKKyAgICBWYWx1ZVByb2ZpbGVCYXNlKGludCBieXRlY29k
ZU9mZnNldCkKICAgICAgICAgOiBtX2J5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KQogICAg
ICAgICAsIG1fcHJlZGljdGlvbihQcmVkaWN0Tm9uZSkKICAgICAgICAgLCBtX251bWJlck9mU2Ft
cGxlc0luUHJlZGljdGlvbigwKQpAQCAtMTAzLDcgKzEwNiw2IEBAIHN0cnVjdCBWYWx1ZVByb2Zp
bGUgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAotI2lmbmRlZiBOREVCVUcK
ICAgICB2b2lkIGR1bXAoRklMRSogb3V0KQogICAgIHsKICAgICAgICAgZnByaW50ZihvdXQsCkBA
IC0xMjMsMTAgKzEyNSwyMyBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlIHsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KLSNlbmRpZgogICAgIAogICAgIC8vIFVwZGF0ZXMgdGhlIHByZWRp
Y3Rpb24gYW5kIHJldHVybnMgdGhlIG5ldyBvbmUuCi0gICAgUHJlZGljdGVkVHlwZSBjb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24oKTsKKyAgICBQcmVkaWN0ZWRUeXBlIGNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbigpCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxO
dW1iZXJPZkJ1Y2tldHM7ICsraSkgeworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShtX2J1Y2tldHNbaV0pOworICAgICAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbV9udW1iZXJP
ZlNhbXBsZXNJblByZWRpY3Rpb24rKzsKKyAgICAgICAgICAgIG1lcmdlUHJlZGljdGlvbihtX3By
ZWRpY3Rpb24sIHByZWRpY3Rpb25Gcm9tVmFsdWUodmFsdWUpKTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgbV9idWNrZXRzW2ldID0gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBtX3ByZWRpY3Rpb247CisgICAgfQogICAg
IAogICAgIGludCBtX2J5dGVjb2RlT2Zmc2V0OyAvLyAtMSBmb3IgcHJvbG9ndWUKICAgICAKQEAg
LTEzNiw3ICsxNTEsMzIgQEAgc3RydWN0IFZhbHVlUHJvZmlsZSB7CiAgICAgRW5jb2RlZEpTVmFs
dWUgbV9idWNrZXRzW3RvdGFsTnVtYmVyT2ZCdWNrZXRzXTsKIH07CiAKLWlubGluZSBpbnQgZ2V0
VmFsdWVQcm9maWxlQnl0ZWNvZGVPZmZzZXQoVmFsdWVQcm9maWxlKiB2YWx1ZVByb2ZpbGUpCitz
dHJ1Y3QgTWluaW1hbFZhbHVlUHJvZmlsZSA6IHB1YmxpYyBWYWx1ZVByb2ZpbGVCYXNlPDA+IHsK
KyAgICBNaW5pbWFsVmFsdWVQcm9maWxlKCk6IFZhbHVlUHJvZmlsZUJhc2UoKSB7IH0KKyAgICBN
aW5pbWFsVmFsdWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCk6IFZhbHVlUHJvZmlsZUJhc2Uo
Ynl0ZWNvZGVPZmZzZXQpIHsgfQorfTsKKwordGVtcGxhdGU8dW5zaWduZWQgbG9nTnVtYmVyT2ZC
dWNrZXRzQXJndW1lbnQ+CitzdHJ1Y3QgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0
cyA6IHB1YmxpYyBWYWx1ZVByb2ZpbGVCYXNlPDEgPDwgbG9nTnVtYmVyT2ZCdWNrZXRzQXJndW1l
bnQ+IHsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9nTnVtYmVyT2ZCdWNrZXRzID0gbG9n
TnVtYmVyT2ZCdWNrZXRzQXJndW1lbnQ7CisgICAgCisgICAgVmFsdWVQcm9maWxlV2l0aExvZ051
bWJlck9mQnVja2V0cygpCisgICAgICAgIDogVmFsdWVQcm9maWxlQmFzZTwxIDw8IGxvZ051bWJl
ck9mQnVja2V0c0FyZ3VtZW50PigpCisgICAgeworICAgIH0KKyAgICBWYWx1ZVByb2ZpbGVXaXRo
TG9nTnVtYmVyT2ZCdWNrZXRzKGludCBieXRlY29kZU9mZnNldCkKKyAgICAgICAgOiBWYWx1ZVBy
b2ZpbGVCYXNlPDEgPDwgbG9nTnVtYmVyT2ZCdWNrZXRzQXJndW1lbnQ+KGJ5dGVjb2RlT2Zmc2V0
KQorICAgIHsKKyAgICB9Cit9OworCitzdHJ1Y3QgVmFsdWVQcm9maWxlIDogcHVibGljIFZhbHVl
UHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4geworICAgIFZhbHVlUHJvZmlsZSgpOiBW
YWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzKCkgeyB9CisgICAgVmFsdWVQcm9maWxl
KGludCBieXRlY29kZU9mZnNldCk6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHMo
Ynl0ZWNvZGVPZmZzZXQpIHsgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSBp
bnQgZ2V0VmFsdWVQcm9maWxlQnl0ZWNvZGVPZmZzZXQoVCogdmFsdWVQcm9maWxlKQogewogICAg
IHJldHVybiB2YWx1ZVByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQ7CiB9CkBAIC0xNTgsOSArMTk4
LDEwIEBAIGlubGluZSBpbnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0ZWNvZGVPZmYKIHsKICAgICBy
ZXR1cm4gcmFyZUNhc2VQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0OwogfQotI2VuZGlmCiAKIH0K
IAotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorCisjZW5kaWYgLy8g
VmFsdWVQcm9maWxlX2gKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEwODYwMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgs
NiArMTA4LDggQEAgcHJpdmF0ZToKICAgICB9OwogICAgIHRlbXBsYXRlPFBoaVN0YWNrVHlwZSBz
dGFja1R5cGU+CiAgICAgdm9pZCBwcm9jZXNzUGhpU3RhY2soKTsKKyAgICAKKyAgICB2b2lkIGZp
eFZhcmlhYmxlQWNjZXNzUHJlZGljdGlvbnMoKTsKICAgICAvLyBBZGQgc3BpbGwgbG9jYXRpb25z
IHRvIG5vZGVzLgogICAgIHZvaWQgYWxsb2NhdGVWaXJ0dWFsUmVnaXN0ZXJzKCk7CiAgICAgCkBA
IC0xNTUsNiArMTU3LDIyIEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBzZXREaXJlY3QobV9p
bmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKG9wZXJhbmQpLCB2YWx1ZSk7CiAgICAgfQorICAg
IAorICAgIE5vZGVJbmRleCBpbmplY3RMYXp5T3BlcmFuZFByZWRpY3Rpb24oTm9kZUluZGV4IG5v
ZGVJbmRleCkKKyAgICB7CisgICAgICAgIE5vZGUmIG5vZGUgPSBtX2dyYXBoW25vZGVJbmRleF07
CisgICAgICAgIEFTU0VSVChub2RlLm9wID09IEdldExvY2FsKTsKKyAgICAgICAgQVNTRVJUKG5v
ZGUuY29kZU9yaWdpbi5ieXRlY29kZUluZGV4ID09IG1fY3VycmVudEluZGV4KTsKKyAgICAgICAg
UHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gCisgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9w
LT5tX2xhenlPcGVyYW5kcy5wcmVkaWN0aW9uKAorICAgICAgICAgICAgICAgIExhenlPcGVyYW5k
VmFsdWVQcm9maWxlS2V5KG1fY3VycmVudEluZGV4LCBub2RlLmxvY2FsKCkpKTsKKyNpZiBERkdf
RU5BQkxFKERFQlVHX1ZFUkJPU0UpCisgICAgICAgIGRhdGFMb2coIkxhenkgb3BlcmFuZCBbQCV1
LCBiYyMldSwgciVkXSBwcmVkaWN0aW9uOiAlc1xuIiwKKyAgICAgICAgICAgICAgICBub2RlSW5k
ZXgsIG1fY3VycmVudEluZGV4LCBub2RlLmxvY2FsKCksIHByZWRpY3Rpb25Ub1N0cmluZyhwcmVk
aWN0aW9uKSk7CisjZW5kaWYKKyAgICAgICAgbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJl
ZGljdChwcmVkaWN0aW9uKTsKKyAgICAgICAgcmV0dXJuIG5vZGVJbmRleDsKKyAgICB9CiAKICAg
ICAvLyBVc2VkIGluIGltcGxlbWVudGluZyBnZXQvc2V0LCBhYm92ZSwgd2hlcmUgdGhlIG9wZXJh
bmQgaXMgYSBsb2NhbCB2YXJpYWJsZS4KICAgICBOb2RlSW5kZXggZ2V0TG9jYWwodW5zaWduZWQg
b3BlcmFuZCkKQEAgLTE3MCw3ICsxODgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIE5v
ZGUmIGZsdXNoQ2hpbGQgPSBtX2dyYXBoW25vZGVQdHItPmNoaWxkMSgpXTsKICAgICAgICAgICAg
ICAgICBpZiAoZmx1c2hDaGlsZC5vcCA9PSBQaGkpIHsKICAgICAgICAgICAgICAgICAgICAgVmFy
aWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBmbHVzaENoaWxkLnZhcmlhYmxl
QWNjZXNzRGF0YSgpOwotICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXggPSBhZGRUb0dyYXBo
KEdldExvY2FsLCBPcEluZm8odmFyaWFibGVBY2Nlc3NEYXRhKSwgbm9kZVB0ci0+Y2hpbGQxKCku
aW5kZXgoKSk7CisgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCA9IGluamVjdExhenlPcGVy
YW5kUHJlZGljdGlvbihhZGRUb0dyYXBoKEdldExvY2FsLCBPcEluZm8odmFyaWFibGVBY2Nlc3NE
YXRhKSwgbm9kZVB0ci0+Y2hpbGQxKCkuaW5kZXgoKSkpOwogICAgICAgICAgICAgICAgICAgICBt
X2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLmxvY2FsKG9wZXJhbmQpID0gbm9kZUluZGV4
OwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZUluZGV4OwogICAgICAgICAgICAgICAg
IH0KQEAgLTE5MCw3ICsyMDgsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgTm9kZUlu
ZGV4IHBoaSA9IGFkZFRvR3JhcGgoUGhpLCBPcEluZm8odmFyaWFibGVBY2Nlc3NEYXRhKSk7CiAg
ICAgICAgIG1fbG9jYWxQaGlTdGFjay5hcHBlbmQoUGhpU3RhY2tFbnRyeShtX2N1cnJlbnRCbG9j
aywgcGhpLCBvcGVyYW5kKSk7Ci0gICAgICAgIG5vZGVJbmRleCA9IGFkZFRvR3JhcGgoR2V0TG9j
YWwsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCBwaGkpOworICAgICAgICBub2RlSW5kZXgg
PSBpbmplY3RMYXp5T3BlcmFuZFByZWRpY3Rpb24oYWRkVG9HcmFwaChHZXRMb2NhbCwgT3BJbmZv
KHZhcmlhYmxlQWNjZXNzRGF0YSksIHBoaSkpOwogICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFy
aWFibGVzQXRUYWlsLmxvY2FsKG9wZXJhbmQpID0gbm9kZUluZGV4OwogICAgICAgICAKICAgICAg
ICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0SGVhZC5zZXRMb2NhbEZpcnN0VGltZShvcGVy
YW5kLCBub2RlSW5kZXgpOwpAQCAtMjE5LDcgKzIzNyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgTm9kZSYgZmx1c2hDaGlsZCA9IG1fZ3JhcGhbbm9kZVB0ci0+Y2hpbGQxKCldOwogICAg
ICAgICAgICAgICAgIGlmIChmbHVzaENoaWxkLm9wID09IFBoaSkgewogICAgICAgICAgICAgICAg
ICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IGZsdXNoQ2hpbGQu
dmFyaWFibGVBY2Nlc3NEYXRhKCk7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCA9IGFk
ZFRvR3JhcGgoR2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCBub2RlUHRyLT5j
aGlsZDEoKS5pbmRleCgpKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ID0gaW5qZWN0
TGF6eU9wZXJhbmRQcmVkaWN0aW9uKGFkZFRvR3JhcGgoR2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJs
ZUFjY2Vzc0RhdGEpLCBub2RlUHRyLT5jaGlsZDEoKS5pbmRleCgpKSk7CiAgICAgICAgICAgICAg
ICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwubG9jYWwob3BlcmFuZCkgPSBu
b2RlSW5kZXg7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlSW5kZXg7CiAgICAgICAg
ICAgICAgICAgfQpAQCAtMjI5LDcgKzI0Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
Ly8gV2UncmUgZ2V0dGluZyBhbiBhcmd1bWVudCBpbiB0aGUgZmlyc3QgYmFzaWMgYmxvY2s7IGxp
bmsKICAgICAgICAgICAgICAgICAvLyB0aGUgR2V0TG9jYWwgdG8gdGhlIFNldEFyZ3VtZW50Lgog
ICAgICAgICAgICAgICAgIEFTU0VSVChub2RlUHRyLT5sb2NhbCgpID09IHN0YXRpY19jYXN0PFZp
cnR1YWxSZWdpc3Rlcj4ob3BlcmFuZCkpOwotICAgICAgICAgICAgICAgIG5vZGVJbmRleCA9IGFk
ZFRvR3JhcGgoR2V0TG9jYWwsIE9wSW5mbyhub2RlUHRyLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSks
IG5vZGVJbmRleCk7CisgICAgICAgICAgICAgICAgbm9kZUluZGV4ID0gaW5qZWN0TGF6eU9wZXJh
bmRQcmVkaWN0aW9uKGFkZFRvR3JhcGgoR2V0TG9jYWwsIE9wSW5mbyhub2RlUHRyLT52YXJpYWJs
ZUFjY2Vzc0RhdGEoKSksIG5vZGVJbmRleCkpOwogICAgICAgICAgICAgICAgIG1fY3VycmVudEJs
b2NrLT52YXJpYWJsZXNBdFRhaWwuYXJndW1lbnQoYXJndW1lbnQpID0gbm9kZUluZGV4OwogICAg
ICAgICAgICAgICAgIHJldHVybiBub2RlSW5kZXg7CiAgICAgICAgICAgICB9CkBAIC0yNDUsNyAr
MjYzLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBOb2RlSW5kZXggcGhpID0gYWRkVG9HcmFwaChQ
aGksIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpKTsKICAgICAgICAgbV9hcmd1bWVudFBoaVN0
YWNrLmFwcGVuZChQaGlTdGFja0VudHJ5KG1fY3VycmVudEJsb2NrLCBwaGksIGFyZ3VtZW50KSk7
Ci0gICAgICAgIG5vZGVJbmRleCA9IGFkZFRvR3JhcGgoR2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJs
ZUFjY2Vzc0RhdGEpLCBwaGkpOworICAgICAgICBub2RlSW5kZXggPSBpbmplY3RMYXp5T3BlcmFu
ZFByZWRpY3Rpb24oYWRkVG9HcmFwaChHZXRMb2NhbCwgT3BJbmZvKHZhcmlhYmxlQWNjZXNzRGF0
YSksIHBoaSkpOwogICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLmFyZ3Vt
ZW50KGFyZ3VtZW50KSA9IG5vZGVJbmRleDsKICAgICAgICAgCiAgICAgICAgIG1fY3VycmVudEJs
b2NrLT52YXJpYWJsZXNBdEhlYWQuc2V0QXJndW1lbnRGaXJzdFRpbWUoYXJndW1lbnQsIG5vZGVJ
bmRleCk7CkBAIC04NDgsNiArODY2LDExIEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgbV9yZXR1cm5WYWx1ZTsKICAgICAgICAgCisgICAgICAgIC8vIFByZWRp
Y3Rpb25zIGFib3V0IHZhcmlhYmxlIHR5cGVzIGNvbGxlY3RlZCBmcm9tIHRoZSBwcm9maWxlZCBj
b2RlIGJsb2NrLAorICAgICAgICAvLyB3aGljaCBhcmUgYmFzZWQgb24gT1NSIGV4aXQgcHJvZmls
ZXMgdGhhdCBwYXN0IERGRyBjb21waWxhdGlucyBvZiB0aGlzCisgICAgICAgIC8vIGNvZGUgYmxv
Y2sgaGFkIGdhdGhlcmVkLgorICAgICAgICBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlciBt
X2xhenlPcGVyYW5kczsKKyAgICAgICAgCiAgICAgICAgIC8vIERpZCB3ZSBzZWUgYW55IHJldHVy
bnM/IFdlIG5lZWQgdG8gaGFuZGxlIHRoZSAodW5jb21tb24gYnV0IG5lY2Vzc2FyeSkKICAgICAg
ICAgLy8gY2FzZSB3aGVyZSBhIHByb2NlZHVyZSB0aGF0IGRvZXMgbm90IHJldHVybiB3YXMgaW5s
aW5lZC4KICAgICAgICAgYm9vbCBtX2RpZFJldHVybjsKQEAgLTIzMTUsNiArMjMzOCwxNCBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpwcm9jZXNzUGhpU3RhY2soKQogICAgIH0KIH0KIAordm9pZCBC
eXRlQ29kZVBhcnNlcjo6Zml4VmFyaWFibGVBY2Nlc3NQcmVkaWN0aW9ucygpCit7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZ3JhcGgubV92YXJpYWJsZUFjY2Vzc0RhdGEuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBkYXRhID0gJm1fZ3JhcGgubV92
YXJpYWJsZUFjY2Vzc0RhdGFbaV07CisgICAgICAgIGRhdGEtPmZpbmQoKS0+cHJlZGljdChkYXRh
LT5ub25VbmlmaWVkUHJlZGljdGlvbigpKTsKKyAgICB9Cit9CisKIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmxpbmtCbG9jayhCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPEJsb2NrSW5kZXg+JiBwb3Nz
aWJsZVRhcmdldHMpCiB7CiAgICAgQVNTRVJUKGJsb2NrLT5lbmQgIT0gTm9Ob2RlKTsKQEAgLTI0
MTcsNiArMjQ0OCw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmUK
ICAgICAsIG1fZXhpdFByb2ZpbGUocHJvZmlsZWRCbG9jay0+ZXhpdFByb2ZpbGUoKSkKICAgICAs
IG1fY2FsbHNpdGVCbG9ja0hlYWQoY2FsbHNpdGVCbG9ja0hlYWQpCiAgICAgLCBtX3JldHVyblZh
bHVlKHJldHVyblZhbHVlVlIpCisgICAgLCBtX2xhenlPcGVyYW5kcyhwcm9maWxlZEJsb2NrLT5s
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZXMoKSkKICAgICAsIG1fZGlkUmV0dXJuKGZhbHNlKQogICAg
ICwgbV9kaWRFYXJseVJldHVybihmYWxzZSkKICAgICAsIG1fY2FsbGVyKGJ5dGVDb2RlUGFyc2Vy
LT5tX2lubGluZVN0YWNrVG9wKQpAQCAtMjU4NSw2ICsyNjE3LDggQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2UoKQogI2VuZGlmCiAgICAgcHJvY2Vzc1BoaVN0YWNrPEFyZ3VtZW50UGhpU3Rh
Y2s+KCk7CiAgICAgCisgICAgZml4VmFyaWFibGVBY2Nlc3NQcmVkaWN0aW9ucygpOworICAgIAog
ICAgIG1fZ3JhcGgubV9wcmVzZXJ2ZWRWYXJzID0gbV9wcmVzZXJ2ZWRWYXJzOwogICAgIG1fZ3Jh
cGgubV9sb2NhbFZhcnMgPSBtX251bUxvY2FsczsKICAgICBtX2dyYXBoLm1fcGFyYW1ldGVyU2xv
dHMgPSBtX3BhcmFtZXRlclNsb3RzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEcml2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RHJpdmVyLmNwcAkocmV2aXNpb24gMTA4NjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEcml2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2MywxMSBAQCBpbmxpbmUg
Ym9vbCBjb21waWxlKENvbXBpbGVNb2RlIGNvbXBpbGVNCiAgICAgcGVyZm9ybUNTRShkZmcpOwog
ICAgIHBlcmZvcm1WaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uKGRmZyk7CiAgICAgcGVyZm9ybUNG
QShkZmcpOworCisjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQorICAgIGRhdGFMb2coIkdy
YXBoIGFmdGVyIG9wdGltaXphdGlvbjpcbiIpOworICAgIGRmZy5kdW1wKCk7CisjZW5kaWYKICAg
ICAKICAgICBKSVRDb21waWxlciBkYXRhRmxvd0pJVChkZmcpOwogICAgIGlmIChjb21waWxlTW9k
ZSA9PSBDb21waWxlRnVuY3Rpb24pIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmgJKHJldmlzaW9uIDEwODYwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkRGR0Fz
c2VtYmx5SGVscGVycy5oIgogI2luY2x1ZGUgIkRGR0Jhc2ljQmxvY2suaCIKICNpbmNsdWRlICJE
RkdOb2RlLmgiCisjaW5jbHVkZSAiTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oIgogI2lu
Y2x1ZGUgIlByZWRpY3Rpb25UcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCiAj
aW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5oPgpAQCAtMjcxLDcgKzI3Miw3IEBAIHB1YmxpYzoKICAg
ICAgICAgTm9kZSYgbm9kZSA9IGF0KG5vZGVJbmRleCk7CiAgICAgICAgIENvZGVCbG9jayogcHJv
ZmlsZWRCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUuY29kZU9yaWdpbik7CiAgICAg
ICAgIAotICAgICAgICBpZiAobm9kZS5vcCA9PSBHZXRMb2NhbCkgeworICAgICAgICBpZiAobm9k
ZS5oYXNMb2NhbCgpKSB7CiAgICAgICAgICAgICBpZiAoIW9wZXJhbmRJc0FyZ3VtZW50KG5vZGUu
bG9jYWwoKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBpbnQgYXJn
dW1lbnQgPSBvcGVyYW5kVG9Bcmd1bWVudChub2RlLmxvY2FsKCkpOwpAQCAtMjg2LDYgKzI4Nywy
NCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICAKKyAgICBNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlIG1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3IoTm9k
ZUluZGV4IG5vZGVJbmRleCkKKyAgICB7CisgICAgICAgIGlmIChub2RlSW5kZXggPT0gTm9Ob2Rl
KQorICAgICAgICAgICAgcmV0dXJuIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUoKTsKKyAg
ICAgICAgCisgICAgICAgIE5vZGUmIG5vZGUgPSBhdChub2RlSW5kZXgpOworICAgICAgICBDb2Rl
QmxvY2sqIHByb2ZpbGVkQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLmNvZGVPcmln
aW4pOworICAgICAgICAKKyAgICAgICAgaWYgKG5vZGUub3AgPT0gR2V0TG9jYWwpIHsKKyAgICAg
ICAgICAgIHJldHVybiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjpmcm9tTGF6eU9wZXJh
bmQoCisgICAgICAgICAgICAgICAgcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAgICBMYXp5
T3BlcmFuZFZhbHVlUHJvZmlsZUtleSgKKyAgICAgICAgICAgICAgICAgICAgbm9kZS5jb2RlT3Jp
Z2luLmJ5dGVjb2RlSW5kZXgsIG5vZGUubG9jYWwoKSkpOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICByZXR1cm4gTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSh2YWx1ZVByb2ZpbGVG
b3Iobm9kZUluZGV4KSk7CisgICAgfQorICAgIAogICAgIEpTR2xvYmFsRGF0YSYgbV9nbG9iYWxE
YXRhOwogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CiAgICAgQ29kZUJsb2NrKiBtX3Byb2Zp
bGVkQmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24g
MTA4NjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4NSw3ICs0ODUsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgewogICAgICAgICBy
ZXR1cm4gdmFyaWFibGVBY2Nlc3NEYXRhKCktPmxvY2FsKCk7CiAgICAgfQotCisgICAgCiAgICAg
Ym9vbCBoYXNJZGVudGlmaWVyKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3ApIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkocmV2aXNpb24gMTA4NjAz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAKLU9TUkV4aXQ6Ok9TUkV4aXQoRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVl
U291cmNlLCBWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
Y2hlY2ssIFNwZWN1bGF0aXZlSklUKiBqaXQsIHVuc2lnbmVkIHJlY292ZXJ5SW5kZXgpCitPU1JF
eGl0OjpPU1JFeGl0KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwg
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSB2YWx1ZVByb2ZpbGUsIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIGNoZWNrLCBTcGVjdWxhdGl2ZUpJVCogaml0LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4
KQogICAgIDogbV9qc1ZhbHVlU291cmNlKGpzVmFsdWVTb3VyY2UpCiAgICAgLCBtX3ZhbHVlUHJv
ZmlsZSh2YWx1ZVByb2ZpbGUpCiAgICAgLCBtX2NoZWNrKGNoZWNrKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgJKHJldmlzaW9uIDEwODYwMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiREZHR1BSSW5mby5oIgogI2luY2x1ZGUgIkRGR09wZXJhbmRzLmgi
CiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKyNpbmNsdWRlICJNZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlLmgiCiAjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCiAjaW5jbHVkZSAiVmFs
dWVSZWNvdmVyeS5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTgyLDEyICs4MywxMiBA
QCBwcml2YXRlOgogLy8gVGhpcyBzdHJ1Y3R1cmUgZGVzY3JpYmVzIGhvdyB0byBleGl0IHRoZSBz
cGVjdWxhdGl2ZSBwYXRoIGJ5CiAvLyBnb2luZyBpbnRvIGJhc2VsaW5lIGNvZGUuCiBzdHJ1Y3Qg
T1NSRXhpdCB7Ci0gICAgT1NSRXhpdChFeGl0S2luZCwgSlNWYWx1ZVNvdXJjZSwgVmFsdWVQcm9m
aWxlKiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAsIFNwZWN1bGF0aXZlSklUKiwgdW5zaWduZWQgcmVj
b3ZlcnlJbmRleCA9IDApOworICAgIE9TUkV4aXQoRXhpdEtpbmQsIEpTVmFsdWVTb3VyY2UsIE1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUsIE1hY3JvQXNzZW1ibGVyOjpKdW1wLCBTcGVjdWxh
dGl2ZUpJVCosIHVuc2lnbmVkIHJlY292ZXJ5SW5kZXggPSAwKTsKICAgICAKICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgbV9jb2RlOwogICAgIAogICAgIEpTVmFsdWVTb3VyY2UgbV9qc1ZhbHVl
U291cmNlOwotICAgIFZhbHVlUHJvZmlsZSogbV92YWx1ZVByb2ZpbGU7CisgICAgTWV0aG9kT2ZH
ZXR0aW5nQVZhbHVlUHJvZmlsZSBtX3ZhbHVlUHJvZmlsZTsKICAgICAKICAgICBDb3JyZWN0YWJs
ZUp1bXBQb2ludCBtX2NoZWNrOwogICAgIE5vZGVJbmRleCBtX25vZGVJbmRleDsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJf
NjQuY3BwCShyZXZpc2lvbiAxMDg2MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsOCBA
QCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgLy8gMykgUmVm
aW5lIHNvbWUgdmFsdWUgcHJvZmlsZSwgaWYgYXBwcm9wcmlhdGUuCiAgICAgCiAgICAgaWYgKCEh
ZXhpdC5tX2pzVmFsdWVTb3VyY2UgJiYgISFleGl0Lm1fdmFsdWVQcm9maWxlKSB7CisgICAgICAg
IEVuY29kZWRKU1ZhbHVlKiBidWNrZXQgPSBleGl0Lm1fdmFsdWVQcm9maWxlLmdldFNwZWNGYWls
QnVja2V0KDApOworICAgICAgICAKICAgICAgICAgaWYgKGV4aXQubV9qc1ZhbHVlU291cmNlLmlz
QWRkcmVzcygpKSB7CiAgICAgICAgICAgICAvLyBTYXZlIGEgcmVnaXN0ZXIgc28gd2UgY2FuIHVz
ZSBpdC4KICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoID0gR1BSSW5mbzo6cmVnVDA7CkBAIC05
MSwxNiArOTMsMTYgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAog
ICAgICAgICAgICAgRW5jb2RlZEpTVmFsdWUqIHNjcmF0Y2hCdWZmZXIgPSBzdGF0aWNfY2FzdDxF
bmNvZGVkSlNWYWx1ZSo+KG1faml0Lmdsb2JhbERhdGEoKS0+c2NyYXRjaEJ1ZmZlckZvclNpemUo
c2l6ZW9mKHVpbnQzMl90KSkpOwogICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihzY3JhdGNoLCBz
Y3JhdGNoQnVmZmVyKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihleGl0Lm1fanNWYWx1ZVNv
dXJjZS5hc0FkZHJlc3MoT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFz
Qml0cy50YWcpKSwgc2NyYXRjaCk7Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHNjcmF0Y2gs
ICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KGV4aXQubV92YWx1ZVByb2Zp
bGUtPnNwZWNGYWlsQnVja2V0KDApKS0+YXNCaXRzLnRhZyk7CisgICAgICAgICAgICBtX2ppdC5z
dG9yZTMyKHNjcmF0Y2gsICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KGJ1
Y2tldCktPmFzQml0cy50YWcpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKGV4aXQubV9qc1Zh
bHVlU291cmNlLmFzQWRkcmVzcyhPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRv
ciwgYXNCaXRzLnBheWxvYWQpKSwgc2NyYXRjaCk7Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZTMy
KHNjcmF0Y2gsICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KGV4aXQubV92
YWx1ZVByb2ZpbGUtPnNwZWNGYWlsQnVja2V0KDApKS0+YXNCaXRzLnBheWxvYWQpOworICAgICAg
ICAgICAgbV9qaXQuc3RvcmUzMihzY3JhdGNoLCAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IqPihidWNrZXQpLT5hc0JpdHMucGF5bG9hZCk7CiAgICAgICAgICAgICBtX2ppdC5s
b2FkMzIoc2NyYXRjaEJ1ZmZlciwgc2NyYXRjaCk7CiAgICAgICAgIH0gZWxzZSBpZiAoZXhpdC5t
X2pzVmFsdWVTb3VyY2UuaGFzS25vd25UYWcoKSkgewotICAgICAgICAgICAgbV9qaXQuc3RvcmUz
MihBc3NlbWJseUhlbHBlcnM6OkltbTMyKGV4aXQubV9qc1ZhbHVlU291cmNlLnRhZygpKSwgJmJp
dHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oZXhpdC5tX3ZhbHVlUHJvZmlsZS0+
c3BlY0ZhaWxCdWNrZXQoMCkpLT5hc0JpdHMudGFnKTsKLSAgICAgICAgICAgIG1faml0LnN0b3Jl
MzIoZXhpdC5tX2pzVmFsdWVTb3VyY2UucGF5bG9hZEdQUigpLCAmYml0d2lzZV9jYXN0PEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IqPihleGl0Lm1fdmFsdWVQcm9maWxlLT5zcGVjRmFpbEJ1Y2tldCgw
KSktPmFzQml0cy5wYXlsb2FkKTsKKyAgICAgICAgICAgIG1faml0LnN0b3JlMzIoQXNzZW1ibHlI
ZWxwZXJzOjpJbW0zMihleGl0Lm1fanNWYWx1ZVNvdXJjZS50YWcoKSksICZiaXR3aXNlX2Nhc3Q8
RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KGJ1Y2tldCktPmFzQml0cy50YWcpOworICAgICAgICAg
ICAgbV9qaXQuc3RvcmUzMihleGl0Lm1fanNWYWx1ZVNvdXJjZS5wYXlsb2FkR1BSKCksICZiaXR3
aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KGJ1Y2tldCktPmFzQml0cy5wYXlsb2Fk
KTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1faml0LnN0b3JlMzIoZXhpdC5tX2pz
VmFsdWVTb3VyY2UudGFnR1BSKCksICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRv
cio+KGV4aXQubV92YWx1ZVByb2ZpbGUtPnNwZWNGYWlsQnVja2V0KDApKS0+YXNCaXRzLnRhZyk7
Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZTMyKGV4aXQubV9qc1ZhbHVlU291cmNlLnBheWxvYWRH
UFIoKSwgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oZXhpdC5tX3ZhbHVl
UHJvZmlsZS0+c3BlY0ZhaWxCdWNrZXQoMCkpLT5hc0JpdHMucGF5bG9hZCk7CisgICAgICAgICAg
ICBtX2ppdC5zdG9yZTMyKGV4aXQubV9qc1ZhbHVlU291cmNlLnRhZ0dQUigpLCAmYml0d2lzZV9j
YXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihidWNrZXQpLT5hc0JpdHMudGFnKTsKKyAgICAg
ICAgICAgIG1faml0LnN0b3JlMzIoZXhpdC5tX2pzVmFsdWVTb3VyY2UucGF5bG9hZEdQUigpLCAm
Yml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihidWNrZXQpLT5hc0JpdHMucGF5
bG9hZCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAkocmV2aXNpb24gMTA4NjAz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg4LDE0ICs4OCwyMCBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6
Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgLy8gMykgUmVmaW5lIHNvbWUgdmFsdWUgcHJvZmlsZSwg
aWYgYXBwcm9wcmlhdGUuCiAgICAgCiAgICAgaWYgKCEhZXhpdC5tX2pzVmFsdWVTb3VyY2UgJiYg
ISFleGl0Lm1fdmFsdWVQcm9maWxlKSB7CisgICAgICAgIEVuY29kZWRKU1ZhbHVlKiBidWNrZXQg
PSBleGl0Lm1fdmFsdWVQcm9maWxlLmdldFNwZWNGYWlsQnVja2V0KDApOworICAgICAgICAKKyNp
ZiBERkdfRU5BQkxFKFZFUkJPU0VfU1BFQ1VMQVRJT05fRkFJTFVSRSkKKyAgICAgICAgZGF0YUxv
ZygiICAoaGF2ZSBleGl0IHByb2ZpbGUsIGJ1Y2tldCAlcCkgICIsIGJ1Y2tldCk7CisjZW5kaWYK
KyAgICAgICAgICAgIAogICAgICAgICBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaXNBZGRyZXNz
KCkpIHsKICAgICAgICAgICAgIC8vIFdlIGNhbid0IGJlIHN1cmUgdGhhdCB3ZSBoYXZlIGEgc3Bh
cmUgcmVnaXN0ZXIuIFNvIHVzZSB0aGUgdGFnVHlwZU51bWJlclJlZ2lzdGVyLAogICAgICAgICAg
ICAgLy8gc2luY2Ugd2Uga25vdyBob3cgdG8gcmVzdG9yZSBpdC4KICAgICAgICAgICAgIG1faml0
LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKGV4aXQubV9qc1ZhbHVlU291cmNlLmFz
QWRkcmVzcygpKSwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICAgICAgICAg
IG1faml0LnN0b3JlUHRyKEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgZXhpdC5tX3Zh
bHVlUHJvZmlsZS0+c3BlY0ZhaWxCdWNrZXQoMCkpOworICAgICAgICAgICAgbV9qaXQuc3RvcmVQ
dHIoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBidWNrZXQpOwogICAgICAgICAgICAg
bV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZv
aWQqPihUYWdUeXBlTnVtYmVyKSksIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CiAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoZXhpdC5tX2pzVmFsdWVT
b3VyY2UuZ3ByKCksIGV4aXQubV92YWx1ZVByb2ZpbGUtPnNwZWNGYWlsQnVja2V0KDApKTsKKyAg
ICAgICAgICAgIG1faml0LnN0b3JlUHRyKGV4aXQubV9qc1ZhbHVlU291cmNlLmdwcigpLCBidWNr
ZXQpOwogICAgIH0KIAogICAgIC8vIDQpIEZpZ3VyZSBvdXQgaG93IG1hbnkgc2NyYXRjaCBzbG90
cyB3ZSdsbCBuZWVkLiBXZSBuZWVkIG9uZSBmb3IgZXZlcnkgR1BSL0ZQUgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFzZS5jcHAJKHJldmlzaW9uIDEwODYwMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwx
MiArMzQsMTIgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogdm9pZCBQaGFzZTo6
YmVnaW5QaGFzZSgpCiB7CiAgICAgZGF0YUxvZygiQmVnaW5uaW5nIERGRyBwaGFzZSAlcy5cbiIs
IG1fbmFtZSk7CisgICAgZGF0YUxvZygiR3JhcGggYmVmb3JlICVzOlxuIiwgbV9uYW1lKTsKKyAg
ICBtX2dyYXBoLmR1bXAobV9jb2RlQmxvY2spOwogfQogCiB2b2lkIFBoYXNlOjplbmRQaGFzZSgp
CiB7Ci0gICAgZGF0YUxvZygiR3JhcGggYWZ0ZXIgJXM6XG4iLCBtX25hbWUpOwotICAgIG1fZ3Jh
cGguZHVtcChtX2NvZGVCbG9jayk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDEwODYwMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDczLDcgKzEwNzMsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVj
a0FyZ3VtZW50VHlwZXMoCiAgICAgICAgIG1fdmFyaWFibGVzW2ldID0gVmFsdWVTb3VyY2UoVmFs
dWVJblJlZ2lzdGVyRmlsZSk7CiAgICAgCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX2ppdC5j
b2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpOyArK2kpIHsKLSAgICAgICAgTm9kZSYgbm9kZSA9
IGF0KG1faml0LmdyYXBoKCkubV9hcmd1bWVudHNbaV0pOworICAgICAgICBOb2RlSW5kZXggbm9k
ZUluZGV4ID0gbV9qaXQuZ3JhcGgoKS5tX2FyZ3VtZW50c1tpXTsKKyAgICAgICAgTm9kZSYgbm9k
ZSA9IGF0KG5vZGVJbmRleCk7CiAgICAgICAgIEFTU0VSVChub2RlLm9wID09IFNldEFyZ3VtZW50
KTsKICAgICAgICAgaWYgKCFub2RlLnNob3VsZEdlbmVyYXRlKCkpIHsKICAgICAgICAgICAgIC8v
IFRoZSBhcmd1bWVudCBpcyBkZWFkLiBXZSBkb24ndCBkbyBhbnkgY2hlY2tzIGZvciBzdWNoIGFy
Z3VtZW50cy4KQEAgLTEwODMsMTQxICsxMDg0LDE0NCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
aGVja0FyZ3VtZW50VHlwZXMoCiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVB
Y2Nlc3NEYXRhID0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKICAgICAgICAgVmlydHVhbFJl
Z2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IHZhcmlhYmxlQWNjZXNzRGF0YS0+bG9jYWwoKTsKICAg
ICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0ZWRUeXBlID0gdmFyaWFibGVBY2Nlc3NEYXRhLT5w
cmVkaWN0aW9uKCk7CisKKyAgICAgICAgSlNWYWx1ZVNvdXJjZSB2YWx1ZVNvdXJjZSA9IEpTVmFs
dWVTb3VyY2UoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSk7CisgICAg
ICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGlmIChpc0ludDMyUHJlZGljdGlvbihw
cmVkaWN0ZWRUeXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUs
IEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpC
ZWxvdywgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgR1BSSW5mbzo6
dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJh
ZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6QmVsb3csIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIEdQ
UkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwogICAgICAgICBlbHNlIGlmIChpc0FycmF5
UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRl
bXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNz
Rm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hU
ZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdN
YXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUs
IEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFz
c0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5Ojpz
X2luZm8pKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291
cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblpl
cm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOworICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChp
c0J5dGVBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRl
bXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxl
cjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9q
aXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BS
SW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVu
Y291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpT
Q2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigm
SlNCeXRlQXJyYXk6OnNfaW5mbykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7
CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2Rl
SW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNCeXRlQXJyYXk6OnNfaW5mbykpKTsKICAg
ICAgICAgfSBlbHNlIGlmIChpc0Jvb2xlYW5QcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAg
ICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0Lmxv
YWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIo
KSk7CiAgICAgICAgICAgICBtX2ppdC54b3JQdHIoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGlu
dDMyX3Q+KFZhbHVlRmFsc2UpKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRl
c3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihz
dGF0aWNfY2FzdDxpbnQzMl90Pih+MSkpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihzdGF0aWNfY2Fz
dDxpbnQzMl90Pih+MSkpKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNJbnQ4QXJyYXlQcmVkaWN0
aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlz
KTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iodmly
dHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdp
c3RlcikpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1
ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09m
ZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgp
LT5pbnQ4QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CisgICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5j
aFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRh
Z01hc2tSZWdpc3RlcikpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2
YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNz
SW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFs
RGF0YSgpLT5pbnQ4QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0g
ZWxzZSBpZiAoaXNJbnQxNkFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAg
ICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRy
KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwot
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwg
Tm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1w
LmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNo
UHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVt
cC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+aW50MTZBcnJheURlc2NyaXB0b3IoKS5tX2Ns
YXNzSW5mbykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVT
b3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9u
WmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CisgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmludDE2QXJyYXlEZXNjcmlwdG9y
KCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNJbnQzMkFycmF5UHJlZGlj
dGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhp
cyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZp
cnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0UHRy
KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVn
aXN0ZXIpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFs
dWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9P
ZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEo
KS0+aW50MzJBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKKyAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJh
bmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6
dGFnTWFza1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xh
c3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9i
YWxEYXRhKCktPmludDMyQXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAg
IH0gZWxzZSBpZiAoaXNVaW50OEFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAg
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2Fk
UHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkp
OwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3Mo
KSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0
ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJh
bmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
dGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDhBcnJheURlc2NyaXB0b3IoKS5t
X2NsYXNzSW5mbykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFs
dWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CisgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQ4QXJyYXlEZXNjcmlw
dG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNVaW50OENsYW1wZWRB
cnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFy
eSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRk
cmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJh
bmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6
dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRh
YmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6
Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5n
bG9iYWxEYXRhKCktPnVpbnQ4Q2xhbXBlZEFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkp
OworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9k
ZUluZGV4LCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1w
LmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRy
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5n
cHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDhDbGFtcGVkQXJyYXlEZXNjcmlwdG9yKCku
bV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNVaW50MTZBcnJheVByZWRpY3Rp
b24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMp
OwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0
dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
VW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lz
dGVyKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVl
UmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zm
c2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCkt
PnVpbnQxNkFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOworICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFu
Y2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0
YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
dmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFz
c0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2Jh
bERhdGEoKS0+dWludDE2QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAg
IH0gZWxzZSBpZiAoaXNVaW50MzJBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAg
ICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9h
ZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigp
KTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdz
KCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywg
dGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJy
YW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQzMkFycmF5RGVzY3JpcHRvcigp
Lm1fY2xhc3NJbmZvKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2
YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVy
OjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwg
bV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDMyQXJyYXlEZXNj
cmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNGbG9hdDMyQXJy
YXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3Jhcnkg
dGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJl
c3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5j
aFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRh
Z01hc2tSZWdpc3RlcikpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJs
ZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNs
YXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xv
YmFsRGF0YSgpLT5mbG9hdDMyQXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CisgICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgs
IG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCks
IEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBK
U0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDMyQXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8p
KSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNGbG9hdDY0QXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rl
ZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAg
ICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVy
KSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxl
LCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9O
b2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDY0QXJy
YXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFRlc3RQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdp
c3RlcikpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJj
ZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNl
dCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5m
bG9hdDY0QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0KICNlbHNl
CiAgICAgICAgIGlmIChpc0ludDMyUHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkKLSAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwg
bV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6dGFn
Rm9yKHZpcnR1YWxSZWdpc3RlciksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsK
KyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJ
bmRleCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxl
cjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRh
ZykpKTsKICAgICAgICAgZWxzZSBpZiAoaXNBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkp
IHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9q
aXQubG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIo
KSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVn
cygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVt
cC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CisgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJy
YW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGls
ZXI6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOworICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0
ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0J5
dGVBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBv
cmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjp0
YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5j
aDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkNlbGxUYWcpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAg
ICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IodmlydHVhbFJl
Z2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291
bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2Vs
bDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNC
eXRlQXJyYXk6OnNfaW5mbykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpj
bGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0J5dGVB
cnJheTo6c19pbmZvKSkpOwogICAgICAgICB9IGVsc2UgaWYgKGlzQm9vbGVhblByZWRpY3Rpb24o
cHJlZGljdGVkVHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxl
LCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6Qm9vbGVhblRhZykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
QmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpCb29sZWFuVGFnKSkpOwogICAgICAgICBlbHNlIGlmIChpc0lu
dDhBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBv
cmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjp0
YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5j
aDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkNlbGxUYWcpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAg
ICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IodmlydHVhbFJl
Z2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291
bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2Vs
bDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC5nbG9iYWxEYXRhKCktPmludDhBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKKyAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRl
eCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+aW50OEFycmF5RGVz
Y3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICB9IGVsc2UgaWYgKGlzSW50MTZBcnJh
eVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0
ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3Io
dmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkNlbGxUYWcpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVl
U291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAg
ICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVy
KSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxl
LCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xh
c3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9i
YWxEYXRhKCktPmludDE2QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CisgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmludDE2QXJyYXlEZXNjcmlw
dG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNJbnQzMkFycmF5UHJl
ZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAo
dGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0
dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
VW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2Vs
bFRhZykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3Vy
Y2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0
ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKICAgICAgICAgICAg
IG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0
ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpT
VmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0lu
Zm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERh
dGEoKS0+aW50MzJBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKKyAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQu
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+aW50MzJBcnJheURlc2NyaXB0b3Io
KS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc1VpbnQ4QXJyYXlQcmVkaWN0
aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlz
KTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxS
ZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNv
dW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFn
KSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwg
bm9kZUluZGV4LCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAu
Z3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogICAgICAgICAgICAgbV9q
aXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAu
Z3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1
ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09m
ZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgp
LT51aW50OEFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOworICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0
ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50OEFycmF5RGVzY3JpcHRvcigpLm1f
Y2xhc3NJbmZvKSkpOwogICAgICAgICB9IGVsc2UgaWYgKGlzVWludDhDbGFtcGVkQXJyYXlQcmVk
aWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0
aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1
YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhV
bmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxs
VGFnKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJj
ZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRl
bXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogICAgICAgICAgICAg
bV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRl
bXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNW
YWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5m
b09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0
YSgpLT51aW50OENsYW1wZWRBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKKyAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwg
bV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDhDbGFtcGVkQXJy
YXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNVaW50
MTZBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBv
cmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjp0
YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5j
aDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkNlbGxUYWcpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAg
ICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IodmlydHVhbFJl
Z2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291
bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2Vs
bDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC5nbG9iYWxEYXRhKCktPnVpbnQxNkFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwor
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUlu
ZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MTZBcnJh
eURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSAgZWxzZSBpZiAoaXNVaW50
MzJBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBv
cmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjp0
YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5j
aDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkNlbGxUYWcpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAg
ICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IodmlydHVhbFJl
Z2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291
bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2Vs
bDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC5nbG9iYWxEYXRhKCktPnVpbnQzMkFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwor
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUlu
ZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MzJBcnJh
eURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSAgZWxzZSBpZiAoaXNGbG9h
dDMyQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1w
b3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6
dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFu
Y2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpDZWxsVGFnKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBl
LCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwog
ICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxS
ZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNv
dW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0Nl
bGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9q
aXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDMyQXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7
CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2Rl
SW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0MzJB
cnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSAgIGVsc2UgaWYgKGlz
RmxvYXQ2NEFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BS
VGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGls
ZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQu
YnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykp
KTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcih2aXJ0
dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
VW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwg
SlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQ2NEFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZv
KSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwg
bm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgp
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9h
dDY0QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0gCiAjZW5kaWYK
ICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCShyZXZpc2lvbiAxMDg2MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NTksNyArMTc1OSw3IEBAIHBy
aXZhdGU6CiAgICAgewogICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLT5hcHBlbmRPU1JFeGl0KE9TUkV4aXQo
a2luZCwganNWYWx1ZVNvdXJjZSwgbV9qaXQuZ3JhcGgoKS52YWx1ZVByb2ZpbGVGb3Iobm9kZUlu
ZGV4KSwganVtcFRvRmFpbCwgdGhpcykpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKS0+YXBw
ZW5kT1NSRXhpdChPU1JFeGl0KGtpbmQsIGpzVmFsdWVTb3VyY2UsIG1faml0LmdyYXBoKCkubWV0
aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcihub2RlSW5kZXgpLCBqdW1wVG9GYWlsLCB0aGlz
KSk7CiAgICAgfQogICAgIHZvaWQgc3BlY3VsYXRpb25DaGVjayhFeGl0S2luZCBraW5kLCBKU1Zh
bHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE5vZGVVc2Ugbm9kZVVzZSwgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAganVtcFRvRmFpbCkKICAgICB7CkBAIC0xNzgyLDcgKzE3ODIsNyBAQCBwcml2YXRlOgog
ICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IG1faml0LmNvZGVCbG9jaygpLT5hcHBlbmRTcGVjdWxhdGlvblJlY292ZXJ5KHJlY292ZXJ5KTsK
LSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCktPmFwcGVuZE9TUkV4aXQoT1NSRXhpdChraW5kLCBq
c1ZhbHVlU291cmNlLCBtX2ppdC5ncmFwaCgpLnZhbHVlUHJvZmlsZUZvcihub2RlSW5kZXgpLCBq
dW1wVG9GYWlsLCB0aGlzLCBtX2ppdC5jb2RlQmxvY2soKS0+bnVtYmVyT2ZTcGVjdWxhdGlvblJl
Y292ZXJpZXMoKSkpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKS0+YXBwZW5kT1NSRXhpdChP
U1JFeGl0KGtpbmQsIGpzVmFsdWVTb3VyY2UsIG1faml0LmdyYXBoKCkubWV0aG9kT2ZHZXR0aW5n
QVZhbHVlUHJvZmlsZUZvcihub2RlSW5kZXgpLCBqdW1wVG9GYWlsLCB0aGlzLCBtX2ppdC5jb2Rl
QmxvY2soKS0+bnVtYmVyT2ZTcGVjdWxhdGlvblJlY292ZXJpZXMoKSkpOwogICAgIH0KICAgICB2
b2lkIHNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVl
U291cmNlLCBOb2RlVXNlIG5vZGVVc2UsIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWws
IGNvbnN0IFNwZWN1bGF0aW9uUmVjb3ZlcnkmIHJlY292ZXJ5KQogICAgIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaAkocmV2
aXNpb24gMTA4NjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFj
Y2Vzc0RhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsMTEgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gbWVyZ2VQcmVkaWN0aW9uKGZpbmQoKS0+bV9wcmVkaWN0aW9uLCBwcmVkaWN0
aW9uKTsKICAgICB9CiAgICAgCisgICAgUHJlZGljdGVkVHlwZSBub25VbmlmaWVkUHJlZGljdGlv
bigpCisgICAgeworICAgICAgICByZXR1cm4gbV9wcmVkaWN0aW9uOworICAgIH0KKyAgICAKICAg
ICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZpbmQo
KS0+bV9wcmVkaWN0aW9uOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128386</attachid>
            <date>2012-02-22 21:10:35 -0800</date>
            <delta_ts>2012-02-22 23:22:43 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>lazyoperands_patch_3.diff</filename>
            <type>text/plain</type>
            <size>88714</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA4NjA0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0NCBA
QAorMjAxMi0wMi0yMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBPU1IgZXhpdCB2YWx1ZSBwcm9maWxpbmcgc2hvdWxkIGhhdmUgZ3JhY2VmdWwgaGFuZGxp
bmcgb2YgbG9jYWwgdmFyaWFibGVzIGFuZCBhcmd1bWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MzEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBQcmV2aW91c2x5LCBpZiB3ZSBPU1Ig
ZXhpdGVkIGJlY2F1c2UgYSBwcmVkaWN0aW9uIGluIGEgbG9jYWwgd2FzIHdyb25nLCB3ZSdkCisg
ICAgICAgIG9ubHkgcmVhbGl6ZSB3aGF0IHRoZSB0cnVlIHR5cGUgb2YgdGhlIGxvY2FsIHdhcyBp
ZiB0aGUgcmVndWxhciB2YWx1ZSBwcm9maWxpbmcKKyAgICAgICAga2lja2VkIGluIGFuZCB0b2xk
IHVzLiBVbmxlc3MgdGhlIGxvY2FsIHdhcyBibG9jay1sb2NhbGx5IGNvcHkgcHJvcGFnYXRlZCwg
aW4KKyAgICAgICAgd2hpY2ggY2FzZSB3ZSdkIGtub3cgZnJvbSBhbiBPU1IgZXhpdCBwcm9maWxl
LgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIE9TUiBleGl0IHByb2ZpbGluZyB0
byBhbGwgbG9jYWxzIGFuZCBhcmd1bWVudHMuIE5vdywgaWYgd2UgT1NSCisgICAgICAgIGV4aXQg
YmVjYXVzZSBvZiBhIG1pc3ByZWRpY3RlZCBsb2NhbCBvciBhcmd1bWVudCB0eXBlLCB3ZSdsbCBr
bm93IHdoYXQgdGhlIHR5cGUgb2YKKyAgICAgICAgdGhlIGxvY2FsIG9yIGFyZ3VtZW50IHNob3Vs
ZCBiZSBpbW1lZGlhdGVseSB1cG9uIGV4aXRpbmcuCisgICAgICAgIAorICAgICAgICBUaGUgd2F5
IHRoYXQgbG9jYWwgdmFyaWFibGUgT1NSIGV4aXQgcHJvZmlsaW5nIHdvcmtzIGlzIHRoYXQgd2Ug
bm93IGhhdmUgYSBsYXppbHkKKyAgICAgICAgYWRkZWQgc2V0IG9mIE9TUi1leGl0LW9ubHkgdmFs
dWUgcHJvZmlsZXMgZm9yIGV4aXQgc2l0ZXMgdGhhdCBhcmUgQmFkVHlwZSBhbmQgdGhhdAorICAg
ICAgICBjaXRlZCBhIEdldExvY2FsIGFzIHRoZWlyIHZhbHVlIHNvdXJjZS4gVGhlIHZhbHVlIHBy
b2ZpbGVzIGFyZSBvbmx5IGFkZGVkIGlmIHRoZQorICAgICAgICBPU1IgZXhpdCBpcyB0YWtlbiwg
YW5kIGFyZSBrZXllZCBieSBDb2RlQmxvY2ssIGJ5dGVjb2RlIGluZGV4IG9mIHRoZSBHZXRMb2Nh
bCwgYW5kCisgICAgICAgIG9wZXJhbmQuIFRoZSBsb29rLXVwIGlzIHBlcmZvcm1lZCBieSBxdWVy
eWluZyB0aGUKKyAgICAgICAgQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVy
IGluIHRoZSBDb2RlQmxvY2ssIHVzaW5nIGEga2V5IHRoYXQgY29udGFpbnMKKyAgICAgICAgdGhl
IGJ5dGVjb2RlIGluZGV4IGFuZCB0aGUgb3BlcmFuZC4gQmVjYXVzZSB0aGUgdmFsdWUgcHJvZmls
ZXMgYXJlIGFkZGVkIGF0IHJhbmRvbQorICAgICAgICB0aW1lcywgdGhleSBhcmUgbm90IHNvcnRl
ZDsgaW5zdGVhZCB0aGV5IGFyZSBqdXN0IHN0b3JlZCBpbiBhbiBhcmJpdHJhcmlseS1vcmRlcmVk
CisgICAgICAgIFNlZ21lbnRlZFZlY3Rvci4gTG9vay11cHMgYXJlIG1hZGUgZmFzdCBieSAiZGVj
b21wcmVzc2luZyI6IHRoZSBERkc6OkJ5dGVDb2RlUGFyc2VyCisgICAgICAgIGNyZWF0ZXMgYSBM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlciwgd2hpY2ggdHVybnMgdGhlCisgICAgICAgIENv
bXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcidzIGNvbnRlbnRzIGludG8gYSBI
YXNoTWFwIGZvciB0aGUgZHVyYXRpb24KKyAgICAgICAgb2YgREZHIHBhcnNpbmcuCisgICAgICAg
IAorICAgICAgICBQcmV2aW91c2x5LCBPU1IgZXhpdHMgaGFkIGEgcG9pbnRlciB0byB0aGUgVmFs
dWVQcm9maWxlIHRoYXQgaGFkIHRoZSBzcGVjRmFpbEJ1Y2tldAorICAgICAgICBpbnRvIHdoaWNo
IHZhbHVlcyBvYnNlcnZlZCBkdXJpbmcgT1NSIGV4aXQgd291bGQgYmUgcGxhY2VkLiBOb3cgaXQg
dXNlcyBhIGxhenkKKyAgICAgICAgdGh1bmsgZm9yIGEgVmFsdWVQcm9maWxlLiBJIGNhbGwgdGhp
cyB0aGUgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS4gSXQgbWF5CisgICAgICAgIGVpdGhl
ciBjb250YWluIGEgVmFsdWVQcm9maWxlIGluc2lkZSBpdCAod2hpY2ggd29ya3MgZm9yIHByZXZp
b3VzIHVzZXMgb2YgT1NSIGV4aXQKKyAgICAgICAgcHJvZmlsaW5nKSBvciBpdCBtYXkganVzdCBo
YXZlIGtub3dsZWRnZSBvZiBob3cgdG8gZ28gYWJvdXQgY3JlYXRpbmcgdGhlCisgICAgICAgIExh
enlPcGVyYW5kVmFsdWVQcm9maWxlIGluIHRoZSBjYXNlIHRoYXQgdGhlIE9TUiBleGl0IGlzIGFj
dHVhbGx5IHRha2VuLiBUaGlzCisgICAgICAgIGVuc3VyZXMgdGhhdCB3ZSBuZXZlciBoYXZlIHRv
IGNyZWF0ZSBOdW1PcGVyYW5kcypOdW1CeXRlY29kZUluZGljZXMqTnVtQ29kZUJsb2NrcworICAg
ICAgICB2YWx1ZSBwcm9maWxpbmcgYnVja2V0cyB1bmxlc3Mgd2UgYWN0dWFsbHkgZGlkIE9TUiBl
eGl0IG9uIGV2ZXJ5IHNpbmdsZSBvcGVyYW5kLAorICAgICAgICBpbiBldmVyeSBzaW5nbGUgaW5z
dHJ1Y3Rpb24sIGluIGVhY2ggY29kZSBibG9jayAodGhhdCdzIHByb2JhYmx5IHVubGlrZWx5KS4K
KyAgICAgICAgCisgICAgICAgIFRoaXMgYXBwZWFycyB0byBiZSBuZXV0cmFsIG9uIHRoZSBtYWpv
ciBiZW5jaG1hcmtzLCBidXQgaXMgYSBkb3VibGUtZGlnaXQgc3BlZWQtdXAKKyAgICAgICAgb24g
Y29kZSBkZWxpYmVyYXRlbHkgd3JpdHRlbiB0byBoYXZlIGRhdGEgZmxvdyB0aGF0IHNwYW5zIGJh
c2ljIGJsb2NrcyBhbmQgd2hlcmUKKyAgICAgICAgdGhlIGNvZGUgZXhoaWJpdHMgcG9zdC1vcHRp
bWl6YXRpb24gcG9seW1vcnBoaXNtIGluIGEgbG9jYWwgdmFyaWFibGUuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMp
OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoQ29kZUJsb2NrKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsYXp5T3BlcmFuZFZhbHVlUHJvZmlsZXMpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0MpOgorICAgICAgICAoSlNDOjpDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGVIb2xkZXI6OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcik6CisgICAg
ICAgIChKU0M6OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6fkNvbXBy
ZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcik6CisgICAgICAgIChKU0M6OkNvbXBy
ZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0
aW9ucyk6CisgICAgICAgIChKU0M6OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhv
bGRlcjo6YWRkKToKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXI6
OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyKToKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGVQYXJzZXI6On5MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlcik6Cisg
ICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyOjpnZXRJZlByZXNlbnQp
OgorICAgICAgICAoSlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlcjo6cHJlZGljdGlv
bik6CisgICAgICAgICogYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaDogQWRkZWQu
CisgICAgICAgIChKU0MpOgorICAgICAgICAoTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkpOgor
ICAgICAgICAoSlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleTo6TGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVLZXkpOgorICAgICAgICAoSlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleTo6
b3BlcmF0b3IhKToKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXk6Om9w
ZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleTo6aGFz
aCk6CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5OjpieXRlY29kZU9m
ZnNldCk6CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5OjpvcGVyYW5k
KToKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXk6OmlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXlI
YXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXlIYXNo
OjplcXVhbCk6CisgICAgICAgIChMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleUhhc2gpOgorICAg
ICAgICAoV1RGKToKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGU6OkxhenlP
cGVyYW5kVmFsdWVQcm9maWxlKToKKyAgICAgICAgKExhenlPcGVyYW5kVmFsdWVQcm9maWxlKToK
KyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGU6OmtleSk6CisgICAgICAgIChD
b21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXIpOgorICAgICAgICAoTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL01ldGhvZE9mR2V0
dGluZ0FWYWx1ZVByb2ZpbGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChK
U0M6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmZyb21MYXp5T3BlcmFuZCk6CisgICAg
ICAgIChKU0M6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmdldFNwZWNGYWlsQnVja2V0
KToKKyAgICAgICAgKiBieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmg6IEFk
ZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGUpOgorICAgICAgICAoSlNDOjpNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjpNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6TWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZTo6b3BlcmF0b3IhKToKKyAgICAgICAgKiBieXRlY29kZS9WYWx1ZVByb2ZpbGUu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJ5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKFZhbHVlUHJvZmlsZUJhc2UpOgorICAgICAgICAoSlNDOjpWYWx1
ZVByb2ZpbGVCYXNlOjpWYWx1ZVByb2ZpbGVCYXNlKToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9m
aWxlQmFzZTo6ZHVtcCk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OmNvbXB1dGVV
cGRhdGVkUHJlZGljdGlvbik6CisgICAgICAgIChKU0M6Ok1pbmltYWxWYWx1ZVByb2ZpbGU6Ok1p
bmltYWxWYWx1ZVByb2ZpbGUpOgorICAgICAgICAoVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9m
QnVja2V0cyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tl
dHM6OlZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHMpOgorICAgICAgICAoSlNDOjpW
YWx1ZVByb2ZpbGU6OlZhbHVlUHJvZmlsZSk6CisgICAgICAgIChKU0M6OmdldFZhbHVlUHJvZmls
ZUJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Z2V0UmFyZUNhc2VQcm9maWxlQnl0ZWNv
ZGVPZmZzZXQpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAg
IChCeXRlQ29kZVBhcnNlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Omlu
amVjdExhenlPcGVyYW5kUHJlZGljdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmdldExvY2FsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0
QXJndW1lbnQpOgorICAgICAgICAoSW5saW5lU3RhY2tFbnRyeSk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmZpeFZhcmlhYmxlQWNjZXNzUHJlZGljdGlvbnMpOgorICAgICAg
ICAoREZHKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tF
bnRyeTo6SW5saW5lU3RhY2tFbnRyeSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlKToKKyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6
REZHOjpHcmFwaDo6dmFsdWVQcm9maWxlRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6
bWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcik6CisgICAgICAgIChHcmFwaCk6CisgICAg
ICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdP
U1JFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0OjpPU1JFeGl0KToKKyAgICAg
ICAgKiBkZmcvREZHT1NSRXhpdC5oOgorICAgICAgICAoT1NSRXhpdCk6CisgICAgICAgICogZGZn
L0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0
Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVy
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQp
OgorICAgICAgICAqIGRmZy9ERkdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGhhc2U6
OmJlZ2luUGhhc2UpOgorICAgICAgICAoSlNDOjpERkc6OlBoYXNlOjplbmRQaGFzZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRp
b25DaGVjayk6CisgICAgICAgICogZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oOgorICAgICAg
ICAoSlNDOjpERkc6OlZhcmlhYmxlQWNjZXNzRGF0YTo6bm9uVW5pZmllZFByZWRpY3Rpb24pOgor
ICAgICAgICAoVmFyaWFibGVBY2Nlc3NEYXRhKToKKwogMjAxMi0wMi0yMiAgR2F2aW4gQmFycmFj
bG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IFtbRGVm
aW5lT3duUHJvcGVydHldXSBmb3IgdGhlIGFyZ3VtZW50cyBvYmplY3QKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwODYwMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTUgKzQyLDE2
IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYnl0ZWNvZGUvREZHRXhpdFByb2Zp
bGUuY3BwCiAgICAgYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKICAgICBieXRlY29kZS9KdW1w
VGFibGUuY3BwCisgICAgYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCiAgICAg
Ynl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtJbmZvLmNwcAogICAgIGJ5dGVjb2RlL01ldGhvZENhbGxM
aW5rU3RhdHVzLmNwcAorICAgIGJ5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUu
Y3BwCiAgICAgYnl0ZWNvZGUvT3Bjb2RlLmNwcAogICAgIGJ5dGVjb2RlL1BvbHltb3JwaGljUHV0
QnlJZExpc3QuY3BwCiAgICAgYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5jcHAKICAgICBieXRlY29k
ZS9QdXRCeUlkU3RhdHVzLmNwcAogICAgIGJ5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAKICAgICBi
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKLSAgICBieXRlY29kZS9WYWx1ZVByb2ZpbGUu
Y3BwCiAKICAgICBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCiAgICAgYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDg2MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMTA0LDExICsxMDQsMTUg
QEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0p1bXBUYWJsZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9K
dW1wVGFibGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExp
bmtJbmZvLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZh
bHVlUHJvZmlsZS5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlu
ZUluZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5r
SW5mby5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlu
a0luZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5r
U3RhdHVzLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxM
aW5rU3RhdHVzLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL09wY29kZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9P
cGNvZGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljUHV0
QnlJZExpc3QuY3BwIFwKQEAgLTEyNCw3ICsxMjgsNiBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oIFwKLQlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1Rhcmdl
dC5wcmkJKHJldmlzaW9uIDEwODYwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQu
cHJpCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxNSArNTUsMTYgQEAgU09VUkNFUyArPSBcCiAgICAg
Ynl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwIFwKICAgICBieXRlY29kZS9HZXRCeUlkU3RhdHVz
LmNwcCBcCiAgICAgYnl0ZWNvZGUvSnVtcFRhYmxlLmNwcCBcCisgICAgYnl0ZWNvZGUvTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGUuY3BwIFwKICAgICBieXRlY29kZS9NZXRob2RDYWxsTGlua0luZm8u
Y3BwIFwKICAgICBieXRlY29kZS9NZXRob2RDYWxsTGlua1N0YXR1cy5jcHAgXAorICAgIGJ5dGVj
b2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwIFwKICAgICBieXRlY29kZS9PcGNv
ZGUuY3BwIFwKICAgICBieXRlY29kZS9Qb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmNwcCBcCiAgICAg
Ynl0ZWNvZGUvUHJlZGljdGVkVHlwZS5jcHAgXAogICAgIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
Y3BwIFwKICAgICBieXRlY29kZS9TYW1wbGluZ1Rvb2wuY3BwIFwKICAgICBieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5jcHAgXAotICAgIGJ5dGVjb2RlL1ZhbHVlUHJvZmlsZS5jcHAgXAogICAg
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgXAogICAgIGJ5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwIFwKICAgICBoZWFwL0NvcGllZFNwYWNlLmNwcCBcCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
agkocmV2aXNpb24gMTA4NjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTE0NzgsNiArMTQ3OCwyMiBAQAogCQkJTmFtZT0iYnl0ZWNvZGUiCiAJCQk+CiAJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVcTWV0aG9kT2ZHZXR0aW5n
QVZhbHVlUHJvZmlsZS5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXC4uXGJ5dGVjb2RlXE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCIK
KwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0
ZWNvZGVcTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxieXRlY29kZVxMYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRo
PSIuLlwuLlxieXRlY29kZVxHZXRCeUlkU3RhdHVzLmgiCiAJCQkJPgogCQkJPC9GaWxlPgpAQCAt
MTYxNCwxMCArMTYzMCw2IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXC4uXGJ5dGVjb2RlXFZhbHVlUHJvZmlsZS5jcHAiCi0JCQkJPgotCQkJPC9G
aWxlPgotCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGJ5dGVjb2RlXFZhbHVlUHJv
ZmlsZS5oIgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAxMDg2MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYg
KzEzOSwxMCBAQAogCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0S2luZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RkM4QzExNEUxQjVG
QjAwRDUyQUUwIC8qIFB1dEtpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjlGQzhEMDE0RTYxMkQ4MDBENTJBRTAgLyogRGF0YUxvZy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlGQzhDRDE0
RTYxMkQ1MDBENTJBRTAgLyogRGF0YUxvZy5jcHAgKi87IH07CiAJCTBGOUZDOEQxMTRFNjEyREEw
MEQ1MkFFMCAvKiBEYXRhTG9nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjlGQzhDRTE0RTYxMkQ1MDBENTJBRTAgLyogRGF0YUxvZy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQjU0Njc3MTRGNTlC
NUMwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNTQ2NzYxNEY1OUFEMTAwMkMyOTg5IC8q
IExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZCNTQ2NzkxNEY1QzQ2QjAwMkMyOTg5IC8qIExhenlPcGVy
YW5kVmFsdWVQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGQjU0Njc4MTRGNUM0NjgwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZS5jcHAgKi87IH07CisJCTBGQjU0NjdCMTRGNUM3RTEwMDJDMjk4OSAvKiBNZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkI1NDY3QTE0RjVDN0Q0MDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGQjU0NjdEMTRGNUNGRDYwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQ
cm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQjU0NjdDMTRGNUNGRDMwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
LmNwcCAqLzsgfTsKIAkJMEZCQzBBRTcxNDk2QzdDNDAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkMw
QUU0MTQ5NkM3QzEwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5jcHAgKi87IH07CiAJCTBGQkMw
QUU4MTQ5NkM3QzcwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCQzBBRTUxNDk2QzdDMTAwRDRGQkREIC8q
IERGR0V4aXRQcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEZCRDdFNjkxNDQ3OTk5NjAwNDgxMzE1IC8qIENvZGVPcmlnaW4uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkQ3RTY3MTQ0Nzk5
OEYwMDQ4MTMxNSAvKiBDb2RlT3JpZ2luLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE2OSw3ICsxNzMsNiBAQAogCQkwRkQ4MkU1NzE0MURBRjEw
MDAxNzlDOTQgLyogREZHT1NSRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGRDgyRTUzMTQxREFFREUwMDE3OUM5NCAvKiBERkdPU1JFbnRyeS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRDgy
RTg1MTQxRjNGRTMwMDE3OUM5NCAvKiBCb3VuZHNDaGVja2VkUG9pbnRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEODJFODIxNDFGM0ZDOTAwMTc5
Qzk0IC8qIEJvdW5kc0NoZWNrZWRQb2ludGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZEODJFODYxNDFGM0ZGMTAwMTc5Qzk0IC8qIFByZWRp
Y3RlZFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZEODJFODQxNDFGM0ZEQTAwMTc5Qzk0IC8qIFByZWRpY3RlZFR5cGUuY3BwICovOyB9Owot
CQkwRkQ4MkU5MDE0MjA3QTVGMDAxNzlDOTQgLyogVmFsdWVQcm9maWxlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgyRThFMTQyMDdBNTEwMDE3
OUM5NCAvKiBWYWx1ZVByb2ZpbGUuY3BwICovOyB9OwogCQkwRkQ4MkY0QjE0MjgwNkExMDAxNzlD
OTQgLyogQml0VmVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkQ4MkY0OTE0MjgwNjkyMDAxNzlDOTQgLyogQml0VmVjdG9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZFMjI4RUQxNDM2QUIy
NzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZFMjI4RUUxNDM2
QUIyQzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZFMjI4RUExNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3Bw
ICovOyB9OwpAQCAtMTAwMSw2ICsxMDA0LDEwIEBACiAJCTBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFF
MCAvKiBQdXRLaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1dEtpbmQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5RkM4Q0QxNEU2MTJENTAwRDUyQUUw
IC8qIERhdGFMb2cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0
YUxvZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUZDOENFMTRFNjEyRDUw
MEQ1MkFFMCAvKiBEYXRhTG9nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERh
dGFMb2cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCNTQ2NzYxNEY1OUFEMTAw
MkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGQjU0Njc4MTRGNUM0NjgwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQjU0
NjdBMTRGNUM3RDQwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCNTQ2N0MxNEY1Q0ZEMzAwMkMy
OTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQkMwQUU0MTQ5NkM3QzEwMEQ0RkJERCAvKiBE
RkdFeGl0UHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
RkdFeGl0UHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQkMwQUU1
MTQ5NkM3QzEwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBERkdFeGl0UHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRkJEN0U2NzE0NDc5OThGMDA0ODEzMTUgLyogQ29kZU9yaWdpbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlT3JpZ2luLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xMDMzLDcgKzEwNDAsNiBAQAogCQkwRkQ4MkU1MzE0MURBRURFMDAxNzlDOTQg
LyogREZHT1NSRW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT1NS
RW50cnkuaDsgcGF0aCA9IGRmZy9ERkdPU1JFbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRkQ4MkU4MjE0MUYzRkM5MDAxNzlDOTQgLyogQm91bmRzQ2hlY2tlZFBvaW50ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQm91bmRzQ2hlY2tlZFBvaW50ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEODJFODQxNDFGM0ZEQTAwMTc5Qzk0
IC8qIFByZWRpY3RlZFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUHJlZGljdGVkVHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGRDgy
RThFMTQyMDdBNTEwMDE3OUM5NCAvKiBWYWx1ZVByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVmFsdWVQcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEZEODJGNDkxNDI4MDY5MjAwMTc5Qzk0IC8qIEJpdFZlY3Rvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCaXRWZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZFMjI4RUExNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT3B0aW9ucy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wdGlvbnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3NzYsNiArMjc4MiwxMCBAQAogCQk5NjlBMDc4RjBFRDFE
M0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCTBGQjU0NjdDMTRGNUNGRDMwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlLmNwcCAqLywKKwkJCQkwRkI1NDY3QTE0RjVDN0Q0MDAyQzI5ODkgLyog
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oICovLAorCQkJCTBGQjU0Njc4MTRGNUM0Njgw
MDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAgKi8sCisJCQkJMEZCNTQ2NzYx
NEY1OUFEMTAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmggKi8sCiAJCQkJMEYy
MUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLywKIAkJCQkw
RjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLywKIAkJCQkw
RjlGQzhCRjE0RTFCNUZCMDBENTJBRTAgLyogUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5jcHAgKi8s
CkBAIC0yODE5LDcgKzI4MjksNiBAQAogCQkJCTE0MjlEODg0MEVEMjFDM0QwMEI4OTYxOSAvKiBT
YW1wbGluZ1Rvb2wuaCAqLywKIAkJCQlCQ0NGMEQwQjBFRjBCOEE1MDA0MTNDOEYgLyogU3RydWN0
dXJlU3R1YkluZm8uY3BwICovLAogCQkJCUJDQ0YwRDA3MEVGMEFBQjkwMDQxM0M4RiAvKiBTdHJ1
Y3R1cmVTdHViSW5mby5oICovLAotCQkJCTBGRDgyRThFMTQyMDdBNTEwMDE3OUM5NCAvKiBWYWx1
ZVByb2ZpbGUuY3BwICovLAogCQkJCTBGOTYzQjM2MTNGQzZGREUwMDAyRDlCMiAvKiBWYWx1ZVBy
b2ZpbGUuaCAqLywKIAkJCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVy
eS5oICovLAogCQkJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0ZXIu
aCAqLywKQEAgLTMzOTAsNiArMzM5OSw4IEBACiAJCQkJMEZGRkM5NUUxNEVGOTBCNzAwQzcyNTMy
IC8qIERGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkZGQzk2MDE0RUY5MEJEMDBDNzI1MzIgLyogREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBo
YXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDk3MjA5MTE0RUI4MzE1MDBGRUIxQjcgLyogUGFz
c1dlYWsuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQjU0Njc3MTRGNTlCNUMwMDJDMjk4OSAvKiBM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZCNTQ2N0IxNEY1
QzdFMTAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpAQCAtMzk2Miw3ICszOTczLDYgQEAKIAkJCQkyNjg0QjJERjE0RDRBOUIyMDA3MkMwQjYg
LyogVVJMU2VnbWVudHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlERUUxMDdFQzdFNzAw
NjUwNDQ2IC8qIFVTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFFRjc5QUEwQ0U5N0JB
NjAwODhENTAwIC8qIFVURjguY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEZEODJFOTAxNDIwN0E1
RjAwMTc5Qzk0IC8qIFZhbHVlUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkM4MTUx
NjE0MDUxMUI1MDBDRkE2MDMgLyogVlRhYmxlU3BlY3RydW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZDODE1MEIxNDA0M0MwRTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJODY4QkZBMTcxMTdDRjE5OTAwQjkwOEIxIC8qIFdURlN0cmluZy5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTM5OTgsNiArNDAwOCw4IEBACiAJCQkJMEZGRkM5NUIxNEVG
OTBBRDAwQzcyNTMyIC8qIERGR1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRkZDOTVE
MTRFRjkwQjMwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkZGQzk1RjE0RUY5MEJCMDBDNzI1MzIgLyogREZHVmlydHVhbFJl
Z2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGQjU0Njc5MTRG
NUM0NkIwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkwRkI1NDY3RDE0RjVDRkQ2MDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZhbHVl
UHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxMDg2MDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk0
Niw2ICsxOTQ2LDggQEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcgog
ICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmlubGluZUNhbGxGcmFtZS5jYWxsZWUpOwogICAg
ICAgICB9CiAgICAgfQorICAgIAorICAgIG1fbGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVzLmNvbXB1
dGVVcGRhdGVkUHJlZGljdGlvbnMoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJ
TEVSKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
cmV2aXNpb24gMTA4NjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3QuaCIKICNpbmNsdWRlICJKdW1wVGFibGUuaCIKICNpbmNsdWRlICJMTEludENhbGxM
aW5rSW5mby5oIgorI2luY2x1ZGUgIkxhenlPcGVyYW5kVmFsdWVQcm9maWxlLmgiCiAjaW5jbHVk
ZSAiTGluZUluZm8uaCIKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUgIlByZWRpY3Rpb25U
cmFja2VyLmgiCkBAIC03MjcsNiArNzI4LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9
CiAKICAgICAgICAgREZHOjpFeGl0UHJvZmlsZSYgZXhpdFByb2ZpbGUoKSB7IHJldHVybiBtX2V4
aXRQcm9maWxlOyB9CisgICAgICAgIAorICAgICAgICBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVIb2xkZXImIGxhenlPcGVyYW5kVmFsdWVQcm9maWxlcygpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBtX2xhenlPcGVyYW5kVmFsdWVQcm9maWxlczsKKyAgICAgICAgfQog
I2VuZGlmCiAKICAgICAgICAgLy8gQ29uc3RhbnQgUG9vbApAQCAtMTE4Nyw2ICsxMTkzLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIFRoaXMgaXMgcmVsZXZhbnQgdG8gbm9uLURGRyBj
b2RlIGJsb2NrcyB0aGF0IHNlcnZlIGFzIHRoZSBwcm9maWxlZCBjb2RlIGJsb2NrCiAgICAgICAg
IC8vIGZvciBERkcgY29kZSBibG9ja3MuCiAgICAgICAgIERGRzo6RXhpdFByb2ZpbGUgbV9leGl0
UHJvZmlsZTsKKyAgICAgICAgQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVy
IG1fbGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVzOwogI2VuZGlmCiAjaWYgRU5BQkxFKFZBTFVFX1BS
T0ZJTEVSKQogICAgICAgICBWZWN0b3I8VmFsdWVQcm9maWxlPiBtX2FyZ3VtZW50VmFsdWVQcm9m
aWxlczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZh
bHVlUHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZS5oIgorCisjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorCituYW1lc3Bh
Y2UgSlNDIHsKKworQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjpDb21w
cmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXIoKSB7IH0KK0NvbXByZXNzZWRMYXp5
T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6fkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZUhvbGRlcigpIHsgfQorCit2b2lkIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmls
ZUhvbGRlcjo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9ucygpCit7CisgICAgaWYgKCFtX2RhdGEp
CisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9k
YXRhLT5zaXplKCk7ICsraSkKKyAgICAgICAgbV9kYXRhLT5hdChpKS5jb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24oKTsKK30KKworTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUqIENvbXByZXNzZWRMYXp5
T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6YWRkKAorICAgIGNvbnN0IExhenlPcGVyYW5kVmFs
dWVQcm9maWxlS2V5JiBrZXkpCit7CisgICAgaWYgKCFtX2RhdGEpCisgICAgICAgIG1fZGF0YSA9
IGFkb3B0UHRyKG5ldyBTZWdtZW50ZWRWZWN0b3I8TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUsIDg+
KCkpOworICAgIGVsc2UgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9kYXRh
LT5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKG1fZGF0YS0+YXQoaSkua2V5KCkgPT0g
a2V5KQorICAgICAgICAgICAgICAgIHJldHVybiAmbV9kYXRhLT5hdChpKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICAKKyAgICBtX2RhdGEtPmFwcGVuZChMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZShr
ZXkpKTsKKyAgICByZXR1cm4gJm1fZGF0YS0+bGFzdCgpOworfQorCitMYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZVBhcnNlcjo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXIoCisgICAgQ29tcHJl
c3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyJiBob2xkZXIpCisgICAgOiBtX2hvbGRl
cihob2xkZXIpCit7CisgICAgaWYgKCFtX2hvbGRlci5tX2RhdGEpCisgICAgICAgIHJldHVybjsK
KyAgICAKKyAgICBTZWdtZW50ZWRWZWN0b3I8TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUsIDg+JiBk
YXRhID0gKm1faG9sZGVyLm1fZGF0YTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0
YS5zaXplKCk7ICsraSkKKyAgICAgICAgbV9tYXAuYWRkKGRhdGFbaV0ua2V5KCksICZkYXRhW2ld
KTsKK30KKworTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXI6On5MYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZVBhcnNlcigpIHsgfQorCitMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSogTGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGVQYXJzZXI6OmdldElmUHJlc2VudCgKKyAgICBjb25zdCBMYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZUtleSYga2V5KSBjb25zdAoreworICAgIEhhc2hNYXA8TGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGVLZXksIExhenlPcGVyYW5kVmFsdWVQcm9maWxlKj46OmNvbnN0X2l0ZXJhdG9y
IGl0ZXIgPQorICAgICAgICBtX21hcC5maW5kKGtleSk7CisgICAgCisgICAgaWYgKGl0ZXIgPT0g
bV9tYXAuZW5kKCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBpdGVyLT5z
ZWNvbmQ7Cit9CisKK1ByZWRpY3RlZFR5cGUgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXI6
OnByZWRpY3Rpb24oCisgICAgY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGtleSkg
Y29uc3QKK3sKKyAgICBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGdldElmUHJl
c2VudChrZXkpOworICAgIGlmICghcHJvZmlsZSkKKyAgICAgICAgcmV0dXJuIFByZWRpY3ROb25l
OworICAgIAorICAgIHJldHVybiBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoVkFMVUVfUFJPRklM
RVIpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZh
bHVlUHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVfaAorI2RlZmluZSBMYXp5
T3BlcmFuZFZhbHVlUHJvZmlsZV9oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lm
IEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKworI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5j
bHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CisKK2NsYXNzIExhenlP
cGVyYW5kVmFsdWVQcm9maWxlS2V5IHsKK3B1YmxpYzoKKyAgICBMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZUtleSgpCisgICAgICAgIDogbV9ieXRlY29kZU9mZnNldCgwKSAvLyAwID0gZW1wdHkgdmFs
dWUKKyAgICAgICAgLCBtX29wZXJhbmQoLTEpIC8vIG5vdCBhIHZhbGlkIG9wZXJhbmQgaW5kZXgg
aW4gb3VyIGN1cnJlbnQgc2NoZW1lCisgICAgeworICAgIH0KKyAgICAKKyAgICBMYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZUtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAg
IDogbV9ieXRlY29kZU9mZnNldCgxKSAvLyAxID0gZGVsZXRlZCB2YWx1ZQorICAgICAgICAsIG1f
b3BlcmFuZCgtMSkgLy8gbm90IGEgdmFsaWQgb3BlcmFuZCBpbmRleCBpbiBvdXIgY3VycmVudCBz
Y2hlbWUKKyAgICB7CisgICAgfQorICAgIAorICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5
KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBpbnQgb3BlcmFuZCkKKyAgICAgICAgOiBtX2J5dGVj
b2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICAsIG1fb3BlcmFuZChvcGVyYW5kKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG9wZXJhbmQgIT0gLTEpOworICAgIH0KKyAgICAKKyAgICBi
b29sIG9wZXJhdG9yISgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9vcGVyYW5kID09
IC0xOworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGVLZXkmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYnl0
ZWNvZGVPZmZzZXQgPT0gb3RoZXIubV9ieXRlY29kZU9mZnNldAorICAgICAgICAgICAgJiYgbV9v
cGVyYW5kID09IG90aGVyLm1fb3BlcmFuZDsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgaGFz
aCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gV1RGOjppbnRIYXNoKG1fYnl0ZWNvZGVP
ZmZzZXQpICsgbV9vcGVyYW5kOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoISEqdGhpcyk7CisgICAgICAgIHJl
dHVybiBtX2J5dGVjb2RlT2Zmc2V0OworICAgIH0KKyAgICBpbnQgb3BlcmFuZCgpIGNvbnN0Cisg
ICAgeworICAgICAgICBBU1NFUlQoISEqdGhpcyk7CisgICAgICAgIHJldHVybiBtX29wZXJhbmQ7
CisgICAgfQorICAgIAorICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3BlcmFuZCA9PSAtMSAmJiBtX2J5dGVjb2RlT2Zmc2V0
OworICAgIH0KK3ByaXZhdGU6IAorICAgIHVuc2lnbmVkIG1fYnl0ZWNvZGVPZmZzZXQ7CisgICAg
aW50IG1fb3BlcmFuZDsKK307CisKK3N0cnVjdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleUhh
c2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9m
aWxlS2V5JiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVh
bCgKKyAgICAgICAgY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGEsCisgICAgICAg
IGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0K
KyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRy
dWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKK3RlbXBsYXRlPD4gc3RydWN0IERl
ZmF1bHRIYXNoPEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXk+IHsKKyAgICB0eXBlZGVm
IEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXlIYXNoIEhhc2g7Cit9OworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hU
cmFpdHM8SlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleT4gOiBwdWJsaWMgR2VuZXJpY0hh
c2hUcmFpdHM8SlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleT4geworICAgIHN0YXRpYyB2
b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5
JiBzbG90KSB7IG5ldyAoTm90TnVsbCwgJnNsb3QpIEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGVLZXkoSGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRl
ZFZhbHVlKGNvbnN0IEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIHZhbHVlKSB7IHJl
dHVybiB2YWx1ZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXVEYKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZSA6IHB1YmxpYyBNaW5pbWFsVmFsdWVQcm9maWxlIHsKKyAgICBMYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZSgpCisgICAgICAgIDogTWluaW1hbFZhbHVlUHJvZmlsZSgpCisgICAgICAgICwgbV9v
cGVyYW5kKC0xKQorICAgIHsKKyAgICB9CisgICAgCisgICAgZXhwbGljaXQgTGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGUoY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGtleSkKKyAgICAg
ICAgOiBNaW5pbWFsVmFsdWVQcm9maWxlKGtleS5ieXRlY29kZU9mZnNldCgpKQorICAgICAgICAs
IG1fb3BlcmFuZChrZXkub3BlcmFuZCgpKQorICAgIHsKKyAgICB9CisgICAgCisgICAgTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVLZXkga2V5KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleShtX2J5dGVjb2RlT2Zmc2V0LCBtX29wZXJhbmQpOwor
ICAgIH0KKyAgICAKKyAgICBpbnQgbV9vcGVyYW5kOworfTsKKworY2xhc3MgTGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGVQYXJzZXI7CisKK2NsYXNzIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZUhvbGRlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29tcHJlc3NlZExhenlPcGVy
YW5kVmFsdWVQcm9maWxlSG9sZGVyKTsKK3B1YmxpYzoKKyAgICBDb21wcmVzc2VkTGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGVIb2xkZXIoKTsKKyAgICB+Q29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQ
cm9maWxlSG9sZGVyKCk7CisgICAgCisgICAgdm9pZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb25z
KCk7CisgICAgCisgICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUqIGFkZChjb25zdCBMYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZUtleSYga2V5KTsKKyAgICAKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNs
YXNzIExhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyOworICAgIE93blB0cjxTZWdtZW50ZWRW
ZWN0b3I8TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUsIDg+ID4gbV9kYXRhOworfTsKKworY2xhc3Mg
TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KExhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyKTsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlcigKKyAgICAgICAgQ29tcHJlc3NlZExhenlPcGVy
YW5kVmFsdWVQcm9maWxlSG9sZGVyJiBob2xkZXIpOworICAgIH5MYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZVBhcnNlcigpOworICAgIAorICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlKiBnZXRJZlBy
ZXNlbnQoCisgICAgICAgIGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5JiBrZXkpIGNv
bnN0OworICAgIAorICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbihjb25zdCBMYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZUtleSYga2V5KSBjb25zdDsKK3ByaXZhdGU6CisgICAgQ29tcHJlc3NlZExh
enlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyJiBtX2hvbGRlcjsKKyAgICBIYXNoTWFwPExhenlP
cGVyYW5kVmFsdWVQcm9maWxlS2V5LCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSo+IG1fbWFwOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoVkFMVUVfUFJPRklM
RVIpCisKKyNlbmRpZiAvLyBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZV9oCisKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWV0aG9kT2ZHZXR0
aW5nQVZhbHVlUHJvZmlsZS5oIgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJD
b2RlQmxvY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK01ldGhvZE9mR2V0dGluZ0FWYWx1ZVBy
b2ZpbGUgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZnJvbUxhenlPcGVyYW5kKAorICAg
IENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSYg
a2V5KQoreworICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgcmVzdWx0OworICAgIHJl
c3VsdC5tX2tpbmQgPSBMYXp5T3BlcmFuZDsKKyAgICByZXN1bHQudS5sYXp5T3BlcmFuZC5jb2Rl
QmxvY2sgPSBjb2RlQmxvY2s7CisgICAgcmVzdWx0LnUubGF6eU9wZXJhbmQuYnl0ZWNvZGVPZmZz
ZXQgPSBrZXkuYnl0ZWNvZGVPZmZzZXQoKTsKKyAgICByZXN1bHQudS5sYXp5T3BlcmFuZC5vcGVy
YW5kID0ga2V5Lm9wZXJhbmQoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitFbmNvZGVkSlNW
YWx1ZSogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6Z2V0U3BlY0ZhaWxCdWNrZXQodW5z
aWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX2tpbmQpIHsKKyAgICBjYXNlIE5v
bmU6CisgICAgICAgIHJldHVybiAwOworICAgICAgICAKKyAgICBjYXNlIFJlYWR5OgorICAgICAg
ICByZXR1cm4gdS5wcm9maWxlLT5zcGVjRmFpbEJ1Y2tldChpbmRleCk7CisgICAgICAgIAorICAg
IGNhc2UgTGF6eU9wZXJhbmQ6CisgICAgICAgIHJldHVybiB1LmxhenlPcGVyYW5kLmNvZGVCbG9j
ay0+bGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVzKCkuYWRkKAorICAgICAgICAgICAgTGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGVLZXkoCisgICAgICAgICAgICAgICAgdS5sYXp5T3BlcmFuZC5ieXRlY29k
ZU9mZnNldCwgdS5sYXp5T3BlcmFuZC5vcGVyYW5kKSktPnNwZWNGYWlsQnVja2V0KGluZGV4KTsK
KyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKERGR19K
SVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9m
aWxlX2gKKyNkZWZpbmUgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZV9oCisKKyNpbmNsdWRl
IDx3dGYvUGxhdGZvcm0uaD4KKworLy8gVGhpcyBpcyBndWFyZGVkIGJ5IEVOQUJMRV9ERkdfSklU
IG9ubHkgYmVjYXVzZSBpdCB1c2VzIHNvbWUgdmFsdWUgcHJvZmlsZXMKKy8vIHRoYXQgYXJlIGN1
cnJlbnRseSBvbmx5IHVzZWQgaWYgdGhlIERGRyBpcyBlbmFibGVkIChpLmUuIHRoZXkgYXJlIG5v
dAorLy8gYXZhaWxhYmxlIGluIHRoZSBwcm9maWxlLW9ubHkgY29uZmlndXJhdGlvbikuIEhvcGVm
dWxseSBzb21lZGF5IGFsbCBvZgorLy8gdGhlc2UgI2lmJ3Mgd2lsbCBkaXNhcHBlYXIuLi4KKyNp
ZiBFTkFCTEUoREZHX0pJVCkKKworI2luY2x1ZGUgIkpTVmFsdWUuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIENvZGVCbG9jazsKK2NsYXNzIExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5
Oworc3RydWN0IFZhbHVlUHJvZmlsZTsKKworY2xhc3MgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJv
ZmlsZSB7CitwdWJsaWM6CisgICAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSgpCisgICAg
ICAgIDogbV9raW5kKE5vbmUpCisgICAgeworICAgIH0KKyAgICAKKyAgICBleHBsaWNpdCBNZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKFZhbHVlUHJvZmlsZSogcHJvZmlsZSkKKyAgICB7Cisg
ICAgICAgIGlmIChwcm9maWxlKSB7CisgICAgICAgICAgICBtX2tpbmQgPSBSZWFkeTsKKyAgICAg
ICAgICAgIHUucHJvZmlsZSA9IHByb2ZpbGU7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
bV9raW5kID0gTm9uZTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIE1ldGhvZE9mR2V0dGluZ0FW
YWx1ZVByb2ZpbGUgZnJvbUxhenlPcGVyYW5kKAorICAgICAgICBDb2RlQmxvY2sqLCBjb25zdCBM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSYpOworICAgIAorICAgIGJvb2wgb3BlcmF0b3IhKCkg
Y29uc3QgeyByZXR1cm4gbV9raW5kID09IE5vbmU7IH0KKyAgICAKKyAgICAvLyBUaGlzIGxvZ2lj
YWxseSBoYXMgYSBwb2ludGVyIHRvIGEgIlRoZXJlIGV4aXN0cyBYIHN1Y2ggdGhhdAorICAgIC8v
IFZhbHVlUHJvZmlsZUJhc2U8WD4iLiBCdXQgc2luY2UgQysrIGRvZXMgbm90IGhhdmUgZXhpc3Rl
bnRpYWwKKyAgICAvLyB0ZW1wbGF0ZXMsIEkgY2Fubm90IHJldHVybiBpdC4gU28gaW5zdGVhZCwg
Zm9yIGFueSBtZXRob2RzIHRoYXQKKyAgICAvLyB1c2VycyBvZiB0aGlzIGNsYXNzIHdvdWxkIGxp
a2UgdG8gY2FsbCwgd2UnbGwganVzdCBoYXZlIHRvIHByb3ZpZGUKKyAgICAvLyBhIG1ldGhvZCBo
ZXJlIHRoYXQgZG9lcyBpdCB0aHJvdWdoIGFuIGluZGlyZWN0aW9uLiBPciB3ZSBjb3VsZAorICAg
IC8vIHBvc3NpYmx5IGp1c3QgbWFrZSBWYWx1ZVByb2ZpbGUgbGVzcyB0ZW1wbGF0ZS1iYXNlZC4g
QnV0IGxhc3QgSQorICAgIC8vIHRyaWVkIHRoYXQsIGl0IGZlbHQgbW9yZSB5dWNreSB0aGFuIHRo
aXMgY2xhc3MuCisgICAgCisgICAgRW5jb2RlZEpTVmFsdWUqIGdldFNwZWNGYWlsQnVja2V0KHVu
c2lnbmVkIGluZGV4KSBjb25zdDsKKyAgICAKK3ByaXZhdGU6CisgICAgZW51bSBLaW5kIHsKKyAg
ICAgICAgTm9uZSwKKyAgICAgICAgUmVhZHksCisgICAgICAgIExhenlPcGVyYW5kCisgICAgfTsK
KyAgICAKKyAgICBLaW5kIG1fa2luZDsKKyAgICB1bmlvbiB7CisgICAgICAgIFZhbHVlUHJvZmls
ZSogcHJvZmlsZTsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29k
ZUJsb2NrOworICAgICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQ7CisgICAgICAgICAg
ICBpbnQgb3BlcmFuZDsKKyAgICAgICAgfSBsYXp5T3BlcmFuZDsKKyAgICB9IHU7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorCisjZW5kaWYg
Ly8gTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuY3BwCShyZXZpc2lvbiAxMDg2MDMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
LSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiVmFsdWVQcm9maWxlLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi0jaWYgRU5BQkxFKFZBTFVF
X1BST0ZJTEVSKQotUHJlZGljdGVkVHlwZSBWYWx1ZVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbigpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvdGFsTnVtYmVyT2ZC
dWNrZXRzOyArK2kpIHsKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZSht
X2J1Y2tldHNbaV0pOwotICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIAotICAgICAgICBtX251bWJlck9mU2FtcGxlc0luUHJlZGljdGlvbisrOwotICAg
ICAgICBtZXJnZVByZWRpY3Rpb24obV9wcmVkaWN0aW9uLCBwcmVkaWN0aW9uRnJvbVZhbHVlKHZh
bHVlKSk7Ci0gICAgICAgIAotICAgICAgICBtX2J1Y2tldHNbaV0gPSBKU1ZhbHVlOjplbmNvZGUo
SlNWYWx1ZSgpKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIG1fcHJlZGljdGlvbjsKLX0KLSNl
bmRpZiAvLyBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCi0KLX0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkocmV2
aXNpb24gMTA4NjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJv
ZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsyOSwxMCBAQAogI2lmbmRlZiBWYWx1ZVByb2Zp
bGVfaAogI2RlZmluZSBWYWx1ZVByb2ZpbGVfaAogCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+
CisKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisKICNpbmNsdWRlICJKU0FycmF5LmgiCiAj
aW5jbHVkZSAiUHJlZGljdGVkVHlwZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgpAQCAtMzYs
MTUgKzQwLDE0IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0jaWYgRU5BQkxFKFZBTFVFX1BST0ZJ
TEVSKQotc3RydWN0IFZhbHVlUHJvZmlsZSB7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxv
Z051bWJlck9mQnVja2V0cyA9IDA7IC8vIDEgYnVja2V0Ci0gICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIG51bWJlck9mQnVja2V0cyA9IDEgPDwgbG9nTnVtYmVyT2ZCdWNrZXRzOwordGVtcGxhdGU8
dW5zaWduZWQgbnVtYmVyT2ZCdWNrZXRzQXJndW1lbnQ+CitzdHJ1Y3QgVmFsdWVQcm9maWxlQmFz
ZSB7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQnVja2V0cyA9IG51bWJlck9m
QnVja2V0c0FyZ3VtZW50OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlNwZWNG
YWlsQnVja2V0cyA9IDE7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGJ1Y2tldEluZGV4TWFz
ayA9IG51bWJlck9mQnVja2V0cyAtIDE7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHRvdGFs
TnVtYmVyT2ZCdWNrZXRzID0gbnVtYmVyT2ZCdWNrZXRzICsgbnVtYmVyT2ZTcGVjRmFpbEJ1Y2tl
dHM7CiAgICAgCi0gICAgVmFsdWVQcm9maWxlKCkKKyAgICBWYWx1ZVByb2ZpbGVCYXNlKCkKICAg
ICAgICAgOiBtX2J5dGVjb2RlT2Zmc2V0KC0xKQogICAgICAgICAsIG1fcHJlZGljdGlvbihQcmVk
aWN0Tm9uZSkKICAgICAgICAgLCBtX251bWJlck9mU2FtcGxlc0luUHJlZGljdGlvbigwKQpAQCAt
NTMsNyArNTYsNyBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlIHsKICAgICAgICAgICAgIG1fYnVja2V0
c1tpXSA9IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogICAgIH0KICAgICAKLSAgICBWYWx1
ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KQorICAgIFZhbHVlUHJvZmlsZUJhc2UoaW50IGJ5
dGVjb2RlT2Zmc2V0KQogICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQp
CiAgICAgICAgICwgbV9wcmVkaWN0aW9uKFByZWRpY3ROb25lKQogICAgICAgICAsIG1fbnVtYmVy
T2ZTYW1wbGVzSW5QcmVkaWN0aW9uKDApCkBAIC0xMDMsNyArMTA2LDYgQEAgc3RydWN0IFZhbHVl
UHJvZmlsZSB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCi0jaWZuZGVmIE5E
RUJVRwogICAgIHZvaWQgZHVtcChGSUxFKiBvdXQpCiAgICAgewogICAgICAgICBmcHJpbnRmKG91
dCwKQEAgLTEyMywxMCArMTI1LDIzIEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGUgewogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQotI2VuZGlmCiAgICAgCiAgICAgLy8gVXBkYXRlcyB0aGUg
cHJlZGljdGlvbiBhbmQgcmV0dXJucyB0aGUgbmV3IG9uZS4KLSAgICBQcmVkaWN0ZWRUeXBlIGNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOworICAgIFByZWRpY3RlZFR5cGUgY29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9uKCkKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0
b3RhbE51bWJlck9mQnVja2V0czsgKytpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKG1fYnVja2V0c1tpXSk7CisgICAgICAgICAgICBpZiAoIXZhbHVlKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBtX251
bWJlck9mU2FtcGxlc0luUHJlZGljdGlvbisrOworICAgICAgICAgICAgbWVyZ2VQcmVkaWN0aW9u
KG1fcHJlZGljdGlvbiwgcHJlZGljdGlvbkZyb21WYWx1ZSh2YWx1ZSkpOworICAgICAgICAgICAg
CisgICAgICAgICAgICBtX2J1Y2tldHNbaV0gPSBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIG1fcHJlZGljdGlvbjsKKyAgICB9
CiAgICAgCiAgICAgaW50IG1fYnl0ZWNvZGVPZmZzZXQ7IC8vIC0xIGZvciBwcm9sb2d1ZQogICAg
IApAQCAtMTM2LDcgKzE1MSwzMiBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlIHsKICAgICBFbmNvZGVk
SlNWYWx1ZSBtX2J1Y2tldHNbdG90YWxOdW1iZXJPZkJ1Y2tldHNdOwogfTsKIAotaW5saW5lIGlu
dCBnZXRWYWx1ZVByb2ZpbGVCeXRlY29kZU9mZnNldChWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmls
ZSkKK3N0cnVjdCBNaW5pbWFsVmFsdWVQcm9maWxlIDogcHVibGljIFZhbHVlUHJvZmlsZUJhc2U8
MD4geworICAgIE1pbmltYWxWYWx1ZVByb2ZpbGUoKTogVmFsdWVQcm9maWxlQmFzZSgpIHsgfQor
ICAgIE1pbmltYWxWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KTogVmFsdWVQcm9maWxl
QmFzZShieXRlY29kZU9mZnNldCkgeyB9Cit9OworCit0ZW1wbGF0ZTx1bnNpZ25lZCBsb2dOdW1i
ZXJPZkJ1Y2tldHNBcmd1bWVudD4KK3N0cnVjdCBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZC
dWNrZXRzIDogcHVibGljIFZhbHVlUHJvZmlsZUJhc2U8MSA8PCBsb2dOdW1iZXJPZkJ1Y2tldHNB
cmd1bWVudD4geworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb2dOdW1iZXJPZkJ1Y2tldHMg
PSBsb2dOdW1iZXJPZkJ1Y2tldHNBcmd1bWVudDsKKyAgICAKKyAgICBWYWx1ZVByb2ZpbGVXaXRo
TG9nTnVtYmVyT2ZCdWNrZXRzKCkKKyAgICAgICAgOiBWYWx1ZVByb2ZpbGVCYXNlPDEgPDwgbG9n
TnVtYmVyT2ZCdWNrZXRzQXJndW1lbnQ+KCkKKyAgICB7CisgICAgfQorICAgIFZhbHVlUHJvZmls
ZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHMoaW50IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICA6IFZh
bHVlUHJvZmlsZUJhc2U8MSA8PCBsb2dOdW1iZXJPZkJ1Y2tldHNBcmd1bWVudD4oYnl0ZWNvZGVP
ZmZzZXQpCisgICAgeworICAgIH0KK307CisKK3N0cnVjdCBWYWx1ZVByb2ZpbGUgOiBwdWJsaWMg
VmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7CisgICAgVmFsdWVQcm9maWxl
KCk6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHMoKSB7IH0KKyAgICBWYWx1ZVBy
b2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KTogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVj
a2V0cyhieXRlY29kZU9mZnNldCkgeyB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoraW5s
aW5lIGludCBnZXRWYWx1ZVByb2ZpbGVCeXRlY29kZU9mZnNldChUKiB2YWx1ZVByb2ZpbGUpCiB7
CiAgICAgcmV0dXJuIHZhbHVlUHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldDsKIH0KQEAgLTE1OCw5
ICsxOTgsMTAgQEAgaW5saW5lIGludCBnZXRSYXJlQ2FzZVByb2ZpbGVCeXRlY29kZU9mZgogewog
ICAgIHJldHVybiByYXJlQ2FzZVByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQ7CiB9Ci0jZW5kaWYK
IAogfQogCi0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisKKyNlbmRp
ZiAvLyBWYWx1ZVByb2ZpbGVfaAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTA4NjAzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwOCw2ICsxMDgsOCBAQCBwcml2YXRlOgogICAgIH07CiAgICAgdGVtcGxhdGU8UGhpU3RhY2tU
eXBlIHN0YWNrVHlwZT4KICAgICB2b2lkIHByb2Nlc3NQaGlTdGFjaygpOworICAgIAorICAgIHZv
aWQgZml4VmFyaWFibGVBY2Nlc3NQcmVkaWN0aW9ucygpOwogICAgIC8vIEFkZCBzcGlsbCBsb2Nh
dGlvbnMgdG8gbm9kZXMuCiAgICAgdm9pZCBhbGxvY2F0ZVZpcnR1YWxSZWdpc3RlcnMoKTsKICAg
ICAKQEAgLTE1NSw2ICsxNTcsMjIgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHNldERpcmVj
dChtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQob3BlcmFuZCksIHZhbHVlKTsKICAgICB9
CisgICAgCisgICAgTm9kZUluZGV4IGluamVjdExhenlPcGVyYW5kUHJlZGljdGlvbihOb2RlSW5k
ZXggbm9kZUluZGV4KQorICAgIHsKKyAgICAgICAgTm9kZSYgbm9kZSA9IG1fZ3JhcGhbbm9kZUlu
ZGV4XTsKKyAgICAgICAgQVNTRVJUKG5vZGUub3AgPT0gR2V0TG9jYWwpOworICAgICAgICBBU1NF
UlQobm9kZS5jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXggPT0gbV9jdXJyZW50SW5kZXgpOworICAg
ICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24gPSAKKyAgICAgICAgICAgIG1faW5saW5lU3Rh
Y2tUb3AtPm1fbGF6eU9wZXJhbmRzLnByZWRpY3Rpb24oCisgICAgICAgICAgICAgICAgTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVLZXkobV9jdXJyZW50SW5kZXgsIG5vZGUubG9jYWwoKSkpOworI2lm
IERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKKyAgICAgICAgZGF0YUxvZygiTGF6eSBvcGVyYW5k
IFtAJXUsIGJjIyV1LCByJWRdIHByZWRpY3Rpb246ICVzXG4iLAorICAgICAgICAgICAgICAgIG5v
ZGVJbmRleCwgbV9jdXJyZW50SW5kZXgsIG5vZGUubG9jYWwoKSwgcHJlZGljdGlvblRvU3RyaW5n
KHByZWRpY3Rpb24pKTsKKyNlbmRpZgorICAgICAgICBub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgp
LT5wcmVkaWN0KHByZWRpY3Rpb24pOworICAgICAgICByZXR1cm4gbm9kZUluZGV4OworICAgIH0K
IAogICAgIC8vIFVzZWQgaW4gaW1wbGVtZW50aW5nIGdldC9zZXQsIGFib3ZlLCB3aGVyZSB0aGUg
b3BlcmFuZCBpcyBhIGxvY2FsIHZhcmlhYmxlLgogICAgIE5vZGVJbmRleCBnZXRMb2NhbCh1bnNp
Z25lZCBvcGVyYW5kKQpAQCAtMTcwLDcgKzE4OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgTm9kZSYgZmx1c2hDaGlsZCA9IG1fZ3JhcGhbbm9kZVB0ci0+Y2hpbGQxKCldOwogICAgICAg
ICAgICAgICAgIGlmIChmbHVzaENoaWxkLm9wID09IFBoaSkgewogICAgICAgICAgICAgICAgICAg
ICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IGZsdXNoQ2hpbGQudmFy
aWFibGVBY2Nlc3NEYXRhKCk7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCA9IGFkZFRv
R3JhcGgoR2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCBub2RlUHRyLT5jaGls
ZDEoKS5pbmRleCgpKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ID0gaW5qZWN0TGF6
eU9wZXJhbmRQcmVkaWN0aW9uKGFkZFRvR3JhcGgoR2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJsZUFj
Y2Vzc0RhdGEpLCBub2RlUHRyLT5jaGlsZDEoKS5pbmRleCgpKSk7CiAgICAgICAgICAgICAgICAg
ICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwubG9jYWwob3BlcmFuZCkgPSBub2Rl
SW5kZXg7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlSW5kZXg7CiAgICAgICAgICAg
ICAgICAgfQpAQCAtMTkwLDcgKzIwOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBO
b2RlSW5kZXggcGhpID0gYWRkVG9HcmFwaChQaGksIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEp
KTsKICAgICAgICAgbV9sb2NhbFBoaVN0YWNrLmFwcGVuZChQaGlTdGFja0VudHJ5KG1fY3VycmVu
dEJsb2NrLCBwaGksIG9wZXJhbmQpKTsKLSAgICAgICAgbm9kZUluZGV4ID0gYWRkVG9HcmFwaChH
ZXRMb2NhbCwgT3BJbmZvKHZhcmlhYmxlQWNjZXNzRGF0YSksIHBoaSk7CisgICAgICAgIG5vZGVJ
bmRleCA9IGluamVjdExhenlPcGVyYW5kUHJlZGljdGlvbihhZGRUb0dyYXBoKEdldExvY2FsLCBP
cEluZm8odmFyaWFibGVBY2Nlc3NEYXRhKSwgcGhpKSk7CiAgICAgICAgIG1fY3VycmVudEJsb2Nr
LT52YXJpYWJsZXNBdFRhaWwubG9jYWwob3BlcmFuZCkgPSBub2RlSW5kZXg7CiAgICAgICAgIAog
ICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRIZWFkLnNldExvY2FsRmlyc3RUaW1l
KG9wZXJhbmQsIG5vZGVJbmRleCk7CkBAIC0yMTksNyArMjM3LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBOb2RlJiBmbHVzaENoaWxkID0gbV9ncmFwaFtub2RlUHRyLT5jaGlsZDEoKV07
CiAgICAgICAgICAgICAgICAgaWYgKGZsdXNoQ2hpbGQub3AgPT0gUGhpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gZmx1c2hD
aGlsZC52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKLSAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4
ID0gYWRkVG9HcmFwaChHZXRMb2NhbCwgT3BJbmZvKHZhcmlhYmxlQWNjZXNzRGF0YSksIG5vZGVQ
dHItPmNoaWxkMSgpLmluZGV4KCkpOworICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXggPSBp
bmplY3RMYXp5T3BlcmFuZFByZWRpY3Rpb24oYWRkVG9HcmFwaChHZXRMb2NhbCwgT3BJbmZvKHZh
cmlhYmxlQWNjZXNzRGF0YSksIG5vZGVQdHItPmNoaWxkMSgpLmluZGV4KCkpKTsKICAgICAgICAg
ICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5sb2NhbChvcGVyYW5k
KSA9IG5vZGVJbmRleDsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVJbmRleDsKICAg
ICAgICAgICAgICAgICB9CkBAIC0yMjksNyArMjQ3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAvLyBXZSdyZSBnZXR0aW5nIGFuIGFyZ3VtZW50IGluIHRoZSBmaXJzdCBiYXNpYyBibG9j
azsgbGluawogICAgICAgICAgICAgICAgIC8vIHRoZSBHZXRMb2NhbCB0byB0aGUgU2V0QXJndW1l
bnQuCiAgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGVQdHItPmxvY2FsKCkgPT0gc3RhdGljX2Nh
c3Q8VmlydHVhbFJlZ2lzdGVyPihvcGVyYW5kKSk7Ci0gICAgICAgICAgICAgICAgbm9kZUluZGV4
ID0gYWRkVG9HcmFwaChHZXRMb2NhbCwgT3BJbmZvKG5vZGVQdHItPnZhcmlhYmxlQWNjZXNzRGF0
YSgpKSwgbm9kZUluZGV4KTsKKyAgICAgICAgICAgICAgICBub2RlSW5kZXggPSBpbmplY3RMYXp5
T3BlcmFuZFByZWRpY3Rpb24oYWRkVG9HcmFwaChHZXRMb2NhbCwgT3BJbmZvKG5vZGVQdHItPnZh
cmlhYmxlQWNjZXNzRGF0YSgpKSwgbm9kZUluZGV4KSk7CiAgICAgICAgICAgICAgICAgbV9jdXJy
ZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5hcmd1bWVudChhcmd1bWVudCkgPSBub2RlSW5kZXg7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVJbmRleDsKICAgICAgICAgICAgIH0KQEAgLTI0
NSw3ICsyNjMsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIE5vZGVJbmRleCBwaGkgPSBhZGRUb0dy
YXBoKFBoaSwgT3BJbmZvKHZhcmlhYmxlQWNjZXNzRGF0YSkpOwogICAgICAgICBtX2FyZ3VtZW50
UGhpU3RhY2suYXBwZW5kKFBoaVN0YWNrRW50cnkobV9jdXJyZW50QmxvY2ssIHBoaSwgYXJndW1l
bnQpKTsKLSAgICAgICAgbm9kZUluZGV4ID0gYWRkVG9HcmFwaChHZXRMb2NhbCwgT3BJbmZvKHZh
cmlhYmxlQWNjZXNzRGF0YSksIHBoaSk7CisgICAgICAgIG5vZGVJbmRleCA9IGluamVjdExhenlP
cGVyYW5kUHJlZGljdGlvbihhZGRUb0dyYXBoKEdldExvY2FsLCBPcEluZm8odmFyaWFibGVBY2Nl
c3NEYXRhKSwgcGhpKSk7CiAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwu
YXJndW1lbnQoYXJndW1lbnQpID0gbm9kZUluZGV4OwogICAgICAgICAKICAgICAgICAgbV9jdXJy
ZW50QmxvY2stPnZhcmlhYmxlc0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0VGltZShhcmd1bWVudCwg
bm9kZUluZGV4KTsKQEAgLTg0OCw2ICs4NjYsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAg
ICAgIFZpcnR1YWxSZWdpc3RlciBtX3JldHVyblZhbHVlOwogICAgICAgICAKKyAgICAgICAgLy8g
UHJlZGljdGlvbnMgYWJvdXQgdmFyaWFibGUgdHlwZXMgY29sbGVjdGVkIGZyb20gdGhlIHByb2Zp
bGVkIGNvZGUgYmxvY2ssCisgICAgICAgIC8vIHdoaWNoIGFyZSBiYXNlZCBvbiBPU1IgZXhpdCBw
cm9maWxlcyB0aGF0IHBhc3QgREZHIGNvbXBpbGF0aW5zIG9mIHRoaXMKKyAgICAgICAgLy8gY29k
ZSBibG9jayBoYWQgZ2F0aGVyZWQuCisgICAgICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFy
c2VyIG1fbGF6eU9wZXJhbmRzOworICAgICAgICAKICAgICAgICAgLy8gRGlkIHdlIHNlZSBhbnkg
cmV0dXJucz8gV2UgbmVlZCB0byBoYW5kbGUgdGhlICh1bmNvbW1vbiBidXQgbmVjZXNzYXJ5KQog
ICAgICAgICAvLyBjYXNlIHdoZXJlIGEgcHJvY2VkdXJlIHRoYXQgZG9lcyBub3QgcmV0dXJuIHdh
cyBpbmxpbmVkLgogICAgICAgICBib29sIG1fZGlkUmV0dXJuOwpAQCAtMjMxNSw2ICsyMzM4LDE0
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnByb2Nlc3NQaGlTdGFjaygpCiAgICAgfQogfQogCit2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpmaXhWYXJpYWJsZUFjY2Vzc1ByZWRpY3Rpb25zKCkKK3sKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ncmFwaC5tX3ZhcmlhYmxlQWNjZXNzRGF0YS5z
aXplKCk7ICsraSkgeworICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGRhdGEgPSAmbV9ncmFw
aC5tX3ZhcmlhYmxlQWNjZXNzRGF0YVtpXTsKKyAgICAgICAgZGF0YS0+ZmluZCgpLT5wcmVkaWN0
KGRhdGEtPm5vblVuaWZpZWRQcmVkaWN0aW9uKCkpOworICAgIH0KK30KKwogdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6bGlua0Jsb2NrKEJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8QmxvY2tJbmRleD4m
IHBvc3NpYmxlVGFyZ2V0cykKIHsKICAgICBBU1NFUlQoYmxvY2stPmVuZCAhPSBOb05vZGUpOwpA
QCAtMjQxNyw2ICsyNDQ4LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6Oklu
bGluZQogICAgICwgbV9leGl0UHJvZmlsZShwcm9maWxlZEJsb2NrLT5leGl0UHJvZmlsZSgpKQog
ICAgICwgbV9jYWxsc2l0ZUJsb2NrSGVhZChjYWxsc2l0ZUJsb2NrSGVhZCkKICAgICAsIG1fcmV0
dXJuVmFsdWUocmV0dXJuVmFsdWVWUikKKyAgICAsIG1fbGF6eU9wZXJhbmRzKHByb2ZpbGVkQmxv
Y2stPmxhenlPcGVyYW5kVmFsdWVQcm9maWxlcygpKQogICAgICwgbV9kaWRSZXR1cm4oZmFsc2Up
CiAgICAgLCBtX2RpZEVhcmx5UmV0dXJuKGZhbHNlKQogICAgICwgbV9jYWxsZXIoYnl0ZUNvZGVQ
YXJzZXItPm1faW5saW5lU3RhY2tUb3ApCkBAIC0yNTg1LDYgKzI2MTcsOCBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZSgpCiAjZW5kaWYKICAgICBwcm9jZXNzUGhpU3RhY2s8QXJndW1lbnRQ
aGlTdGFjaz4oKTsKICAgICAKKyAgICBmaXhWYXJpYWJsZUFjY2Vzc1ByZWRpY3Rpb25zKCk7Cisg
ICAgCiAgICAgbV9ncmFwaC5tX3ByZXNlcnZlZFZhcnMgPSBtX3ByZXNlcnZlZFZhcnM7CiAgICAg
bV9ncmFwaC5tX2xvY2FsVmFycyA9IG1fbnVtTG9jYWxzOwogICAgIG1fZ3JhcGgubV9wYXJhbWV0
ZXJTbG90cyA9IG1fcGFyYW1ldGVyU2xvdHM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RyaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEcml2ZXIuY3BwCShyZXZpc2lvbiAxMDg2MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RyaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDExIEBAIGlu
bGluZSBib29sIGNvbXBpbGUoQ29tcGlsZU1vZGUgY29tcGlsZU0KICAgICBwZXJmb3JtQ1NFKGRm
Zyk7CiAgICAgcGVyZm9ybVZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb24oZGZnKTsKICAgICBwZXJm
b3JtQ0ZBKGRmZyk7CisKKyNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCisgICAgZGF0YUxv
ZygiR3JhcGggYWZ0ZXIgb3B0aW1pemF0aW9uOlxuIik7CisgICAgZGZnLmR1bXAoKTsKKyNlbmRp
ZgogICAgIAogICAgIEpJVENvbXBpbGVyIGRhdGFGbG93SklUKGRmZyk7CiAgICAgaWYgKGNvbXBp
bGVNb2RlID09IENvbXBpbGVGdW5jdGlvbikgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguaAkocmV2aXNpb24gMTA4NjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
REZHQXNzZW1ibHlIZWxwZXJzLmgiCiAjaW5jbHVkZSAiREZHQmFzaWNCbG9jay5oIgogI2luY2x1
ZGUgIkRGR05vZGUuaCIKKyNpbmNsdWRlICJNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgi
CiAjaW5jbHVkZSAiUHJlZGljdGlvblRyYWNrZXIuaCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUu
aCIKICNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+CkBAIC0yNzEsNyArMjcyLDcgQEAgcHVibGlj
OgogICAgICAgICBOb2RlJiBub2RlID0gYXQobm9kZUluZGV4KTsKICAgICAgICAgQ29kZUJsb2Nr
KiBwcm9maWxlZEJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS5jb2RlT3JpZ2luKTsK
ICAgICAgICAgCi0gICAgICAgIGlmIChub2RlLm9wID09IEdldExvY2FsKSB7CisgICAgICAgIGlm
IChub2RlLmhhc0xvY2FsKCkpIHsKICAgICAgICAgICAgIGlmICghb3BlcmFuZElzQXJndW1lbnQo
bm9kZS5sb2NhbCgpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIGlu
dCBhcmd1bWVudCA9IG9wZXJhbmRUb0FyZ3VtZW50KG5vZGUubG9jYWwoKSk7CkBAIC0yODYsNiAr
Mjg3LDI0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIAorICAgIE1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgbWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZv
cihOb2RlSW5kZXggbm9kZUluZGV4KQorICAgIHsKKyAgICAgICAgaWYgKG5vZGVJbmRleCA9PSBO
b05vZGUpCisgICAgICAgICAgICByZXR1cm4gTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSgp
OworICAgICAgICAKKyAgICAgICAgTm9kZSYgbm9kZSA9IGF0KG5vZGVJbmRleCk7CisgICAgICAg
IENvZGVCbG9jayogcHJvZmlsZWRCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUuY29k
ZU9yaWdpbik7CisgICAgICAgIAorICAgICAgICBpZiAobm9kZS5vcCA9PSBHZXRMb2NhbCkgewor
ICAgICAgICAgICAgcmV0dXJuIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmZyb21MYXp5
T3BlcmFuZCgKKyAgICAgICAgICAgICAgICBwcm9maWxlZEJsb2NrLAorICAgICAgICAgICAgICAg
IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5KAorICAgICAgICAgICAgICAgICAgICBub2RlLmNv
ZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgbm9kZS5sb2NhbCgpKSk7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIHJldHVybiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKHZhbHVlUHJv
ZmlsZUZvcihub2RlSW5kZXgpKTsKKyAgICB9CisgICAgCiAgICAgSlNHbG9iYWxEYXRhJiBtX2ds
b2JhbERhdGE7CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKICAgICBDb2RlQmxvY2sqIG1f
cHJvZmlsZWRCbG9jazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZp
c2lvbiAxMDg2MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29y
a2luZyBjb3B5KQpAQCAtNDg1LDcgKzQ4NSw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICB7CiAgICAg
ICAgIHJldHVybiB2YXJpYWJsZUFjY2Vzc0RhdGEoKS0+bG9jYWwoKTsKICAgICB9Ci0KKyAgICAK
ICAgICBib29sIGhhc0lkZW50aWZpZXIoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCkgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCShyZXZpc2lvbiAx
MDg2MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKIAotT1NSRXhpdDo6T1NSRXhpdChFeGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpz
VmFsdWVTb3VyY2UsIFZhbHVlUHJvZmlsZSogdmFsdWVQcm9maWxlLCBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBjaGVjaywgU3BlY3VsYXRpdmVKSVQqIGppdCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCkK
K09TUkV4aXQ6Ok9TUkV4aXQoRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291
cmNlLCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHZhbHVlUHJvZmlsZSwgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXAgY2hlY2ssIFNwZWN1bGF0aXZlSklUKiBqaXQsIHVuc2lnbmVkIHJlY292ZXJ5
SW5kZXgpCiAgICAgOiBtX2pzVmFsdWVTb3VyY2UoanNWYWx1ZVNvdXJjZSkKICAgICAsIG1fdmFs
dWVQcm9maWxlKHZhbHVlUHJvZmlsZSkKICAgICAsIG1fY2hlY2soY2hlY2spCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAkocmV2aXNpb24gMTA4NjAzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbmNsdWRlICJERkdHUFJJbmZvLmgiCiAjaW5jbHVkZSAiREZHT3BlcmFu
ZHMuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIk1ldGhvZE9mR2V0
dGluZ0FWYWx1ZVByb2ZpbGUuaCIKICNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKICNpbmNsdWRl
ICJWYWx1ZVJlY292ZXJ5LmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtODIsMTIgKzgz
LDEyIEBAIHByaXZhdGU6CiAvLyBUaGlzIHN0cnVjdHVyZSBkZXNjcmliZXMgaG93IHRvIGV4aXQg
dGhlIHNwZWN1bGF0aXZlIHBhdGggYnkKIC8vIGdvaW5nIGludG8gYmFzZWxpbmUgY29kZS4KIHN0
cnVjdCBPU1JFeGl0IHsKLSAgICBPU1JFeGl0KEV4aXRLaW5kLCBKU1ZhbHVlU291cmNlLCBWYWx1
ZVByb2ZpbGUqLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCwgU3BlY3VsYXRpdmVKSVQqLCB1bnNpZ25l
ZCByZWNvdmVyeUluZGV4ID0gMCk7CisgICAgT1NSRXhpdChFeGl0S2luZCwgSlNWYWx1ZVNvdXJj
ZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAsIFNw
ZWN1bGF0aXZlSklUKiwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCA9IDApOwogICAgIAogICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBtX2NvZGU7CiAgICAgCiAgICAgSlNWYWx1ZVNvdXJjZSBtX2pz
VmFsdWVTb3VyY2U7Ci0gICAgVmFsdWVQcm9maWxlKiBtX3ZhbHVlUHJvZmlsZTsKKyAgICBNZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIG1fdmFsdWVQcm9maWxlOwogICAgIAogICAgIENvcnJl
Y3RhYmxlSnVtcFBvaW50IG1fY2hlY2s7CiAgICAgTm9kZUluZGV4IG1fbm9kZUluZGV4OwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGls
ZXIzMl82NC5jcHAJKHJldmlzaW9uIDEwODYwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4
Myw4IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAvLyAz
KSBSZWZpbmUgc29tZSB2YWx1ZSBwcm9maWxlLCBpZiBhcHByb3ByaWF0ZS4KICAgICAKICAgICBp
ZiAoISFleGl0Lm1fanNWYWx1ZVNvdXJjZSAmJiAhIWV4aXQubV92YWx1ZVByb2ZpbGUpIHsKKyAg
ICAgICAgRW5jb2RlZEpTVmFsdWUqIGJ1Y2tldCA9IGV4aXQubV92YWx1ZVByb2ZpbGUuZ2V0U3Bl
Y0ZhaWxCdWNrZXQoMCk7CisgICAgICAgIAogICAgICAgICBpZiAoZXhpdC5tX2pzVmFsdWVTb3Vy
Y2UuaXNBZGRyZXNzKCkpIHsKICAgICAgICAgICAgIC8vIFNhdmUgYSByZWdpc3RlciBzbyB3ZSBj
YW4gdXNlIGl0LgogICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2ggPSBHUFJJbmZvOjpyZWdUMDsK
QEAgLTkxLDE2ICs5MywxNiBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29u
c3QgCiAgICAgICAgICAgICBFbmNvZGVkSlNWYWx1ZSogc2NyYXRjaEJ1ZmZlciA9IHN0YXRpY19j
YXN0PEVuY29kZWRKU1ZhbHVlKj4obV9qaXQuZ2xvYmFsRGF0YSgpLT5zY3JhdGNoQnVmZmVyRm9y
U2l6ZShzaXplb2YodWludDMyX3QpKSk7CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHNjcmF0
Y2gsIHNjcmF0Y2hCdWZmZXIpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKGV4aXQubV9qc1Zh
bHVlU291cmNlLmFzQWRkcmVzcyhPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRv
ciwgYXNCaXRzLnRhZykpLCBzY3JhdGNoKTsKLSAgICAgICAgICAgIG1faml0LnN0b3JlMzIoc2Ny
YXRjaCwgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oZXhpdC5tX3ZhbHVl
UHJvZmlsZS0+c3BlY0ZhaWxCdWNrZXQoMCkpLT5hc0JpdHMudGFnKTsKKyAgICAgICAgICAgIG1f
aml0LnN0b3JlMzIoc2NyYXRjaCwgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9y
Kj4oYnVja2V0KS0+YXNCaXRzLnRhZyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoZXhpdC5t
X2pzVmFsdWVTb3VyY2UuYXNBZGRyZXNzKE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNj
cmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCBzY3JhdGNoKTsKLSAgICAgICAgICAgIG1faml0LnN0
b3JlMzIoc2NyYXRjaCwgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oZXhp
dC5tX3ZhbHVlUHJvZmlsZS0+c3BlY0ZhaWxCdWNrZXQoMCkpLT5hc0JpdHMucGF5bG9hZCk7Cisg
ICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHNjcmF0Y2gsICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZh
bHVlRGVzY3JpcHRvcio+KGJ1Y2tldCktPmFzQml0cy5wYXlsb2FkKTsKICAgICAgICAgICAgIG1f
aml0LmxvYWQzMihzY3JhdGNoQnVmZmVyLCBzY3JhdGNoKTsKICAgICAgICAgfSBlbHNlIGlmIChl
eGl0Lm1fanNWYWx1ZVNvdXJjZS5oYXNLbm93blRhZygpKSB7Ci0gICAgICAgICAgICBtX2ppdC5z
dG9yZTMyKEFzc2VtYmx5SGVscGVyczo6SW1tMzIoZXhpdC5tX2pzVmFsdWVTb3VyY2UudGFnKCkp
LCAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihleGl0Lm1fdmFsdWVQcm9m
aWxlLT5zcGVjRmFpbEJ1Y2tldCgwKSktPmFzQml0cy50YWcpOwotICAgICAgICAgICAgbV9qaXQu
c3RvcmUzMihleGl0Lm1fanNWYWx1ZVNvdXJjZS5wYXlsb2FkR1BSKCksICZiaXR3aXNlX2Nhc3Q8
RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KGV4aXQubV92YWx1ZVByb2ZpbGUtPnNwZWNGYWlsQnVj
a2V0KDApKS0+YXNCaXRzLnBheWxvYWQpOworICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihBc3Nl
bWJseUhlbHBlcnM6OkltbTMyKGV4aXQubV9qc1ZhbHVlU291cmNlLnRhZygpKSwgJmJpdHdpc2Vf
Y2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oYnVja2V0KS0+YXNCaXRzLnRhZyk7CisgICAg
ICAgICAgICBtX2ppdC5zdG9yZTMyKGV4aXQubV9qc1ZhbHVlU291cmNlLnBheWxvYWRHUFIoKSwg
JmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oYnVja2V0KS0+YXNCaXRzLnBh
eWxvYWQpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihleGl0
Lm1fanNWYWx1ZVNvdXJjZS50YWdHUFIoKSwgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNj
cmlwdG9yKj4oZXhpdC5tX3ZhbHVlUHJvZmlsZS0+c3BlY0ZhaWxCdWNrZXQoMCkpLT5hc0JpdHMu
dGFnKTsKLSAgICAgICAgICAgIG1faml0LnN0b3JlMzIoZXhpdC5tX2pzVmFsdWVTb3VyY2UucGF5
bG9hZEdQUigpLCAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihleGl0Lm1f
dmFsdWVQcm9maWxlLT5zcGVjRmFpbEJ1Y2tldCgwKSktPmFzQml0cy5wYXlsb2FkKTsKKyAgICAg
ICAgICAgIG1faml0LnN0b3JlMzIoZXhpdC5tX2pzVmFsdWVTb3VyY2UudGFnR1BSKCksICZiaXR3
aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KGJ1Y2tldCktPmFzQml0cy50YWcpOwor
ICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihleGl0Lm1fanNWYWx1ZVNvdXJjZS5wYXlsb2FkR1BS
KCksICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KGJ1Y2tldCktPmFzQml0
cy5wYXlsb2FkKTsKICAgICAgICAgfQogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCShyZXZpc2lvbiAx
MDg2MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsMTQgKzg4LDIwIEBAIHZvaWQgT1NSRXhpdENvbXBp
bGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAvLyAzKSBSZWZpbmUgc29tZSB2YWx1ZSBwcm9m
aWxlLCBpZiBhcHByb3ByaWF0ZS4KICAgICAKICAgICBpZiAoISFleGl0Lm1fanNWYWx1ZVNvdXJj
ZSAmJiAhIWV4aXQubV92YWx1ZVByb2ZpbGUpIHsKKyAgICAgICAgRW5jb2RlZEpTVmFsdWUqIGJ1
Y2tldCA9IGV4aXQubV92YWx1ZVByb2ZpbGUuZ2V0U3BlY0ZhaWxCdWNrZXQoMCk7CisgICAgICAg
IAorI2lmIERGR19FTkFCTEUoVkVSQk9TRV9TUEVDVUxBVElPTl9GQUlMVVJFKQorICAgICAgICBk
YXRhTG9nKCIgIChoYXZlIGV4aXQgcHJvZmlsZSwgYnVja2V0ICVwKSAgIiwgYnVja2V0KTsKKyNl
bmRpZgorICAgICAgICAgICAgCiAgICAgICAgIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5pc0Fk
ZHJlc3MoKSkgewogICAgICAgICAgICAgLy8gV2UgY2FuJ3QgYmUgc3VyZSB0aGF0IHdlIGhhdmUg
YSBzcGFyZSByZWdpc3Rlci4gU28gdXNlIHRoZSB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsCiAgICAg
ICAgICAgICAvLyBzaW5jZSB3ZSBrbm93IGhvdyB0byByZXN0b3JlIGl0LgogICAgICAgICAgICAg
bV9qaXQubG9hZFB0cihBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoZXhpdC5tX2pzVmFsdWVTb3Vy
Y2UuYXNBZGRyZXNzKCkpLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgICAg
ICAgICAgbV9qaXQuc3RvcmVQdHIoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBleGl0
Lm1fdmFsdWVQcm9maWxlLT5zcGVjRmFpbEJ1Y2tldCgwKSk7CisgICAgICAgICAgICBtX2ppdC5z
dG9yZVB0cihHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIGJ1Y2tldCk7CiAgICAgICAg
ICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nh
c3Q8dm9pZCo+KFRhZ1R5cGVOdW1iZXIpKSwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVy
KTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtX2ppdC5zdG9yZVB0cihleGl0Lm1fanNW
YWx1ZVNvdXJjZS5ncHIoKSwgZXhpdC5tX3ZhbHVlUHJvZmlsZS0+c3BlY0ZhaWxCdWNrZXQoMCkp
OworICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoZXhpdC5tX2pzVmFsdWVTb3VyY2UuZ3ByKCks
IGJ1Y2tldCk7CiAgICAgfQogCiAgICAgLy8gNCkgRmlndXJlIG91dCBob3cgbWFueSBzY3JhdGNo
IHNsb3RzIHdlJ2xsIG5lZWQuIFdlIG5lZWQgb25lIGZvciBldmVyeSBHUFIvRlBSCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYXNlLmNwcAkocmV2aXNpb24gMTA4NjAzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDEyICszNCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiB2b2lkIFBo
YXNlOjpiZWdpblBoYXNlKCkKIHsKICAgICBkYXRhTG9nKCJCZWdpbm5pbmcgREZHIHBoYXNlICVz
LlxuIiwgbV9uYW1lKTsKKyAgICBkYXRhTG9nKCJHcmFwaCBiZWZvcmUgJXM6XG4iLCBtX25hbWUp
OworICAgIG1fZ3JhcGguZHVtcChtX2NvZGVCbG9jayk7CiB9CiAKIHZvaWQgUGhhc2U6OmVuZFBo
YXNlKCkKIHsKLSAgICBkYXRhTG9nKCJHcmFwaCBhZnRlciAlczpcbiIsIG1fbmFtZSk7Ci0gICAg
bV9ncmFwaC5kdW1wKG1fY29kZUJsb2NrKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTA4
NjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNzMsNyArMTA3Myw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNoZWNrQXJndW1lbnRUeXBlcygKICAgICAgICAgbV92YXJpYWJsZXNbaV0gPSBWYWx1ZVNvdXJj
ZShWYWx1ZUluUmVnaXN0ZXJGaWxlKTsKICAgICAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1f
aml0LmNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCk7ICsraSkgewotICAgICAgICBOb2RlJiBu
b2RlID0gYXQobV9qaXQuZ3JhcGgoKS5tX2FyZ3VtZW50c1tpXSk7CisgICAgICAgIE5vZGVJbmRl
eCBub2RlSW5kZXggPSBtX2ppdC5ncmFwaCgpLm1fYXJndW1lbnRzW2ldOworICAgICAgICBOb2Rl
JiBub2RlID0gYXQobm9kZUluZGV4KTsKICAgICAgICAgQVNTRVJUKG5vZGUub3AgPT0gU2V0QXJn
dW1lbnQpOwogICAgICAgICBpZiAoIW5vZGUuc2hvdWxkR2VuZXJhdGUoKSkgewogICAgICAgICAg
ICAgLy8gVGhlIGFyZ3VtZW50IGlzIGRlYWQuIFdlIGRvbid0IGRvIGFueSBjaGVja3MgZm9yIHN1
Y2ggYXJndW1lbnRzLgpAQCAtMTA4MywxNDEgKzEwODQsMTQ0IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNoZWNrQXJndW1lbnRUeXBlcygKICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJp
YWJsZUFjY2Vzc0RhdGEgPSBub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpOwogICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gdmFyaWFibGVBY2Nlc3NEYXRhLT5sb2NhbCgp
OwogICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3RlZFR5cGUgPSB2YXJpYWJsZUFjY2Vzc0Rh
dGEtPnByZWRpY3Rpb24oKTsKKworICAgICAgICBKU1ZhbHVlU291cmNlIHZhbHVlU291cmNlID0g
SlNWYWx1ZVNvdXJjZShKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpKTsK
KyAgICAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgaWYgKGlzSW50MzJQcmVkaWN0
aW9uKHByZWRpY3RlZFR5cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50
YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6OkJlbG93LCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBHUFJJ
bmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3Jv
QXNzZW1ibGVyOjpCZWxvdywgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVy
KSwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CiAgICAgICAgIGVsc2UgaWYgKGlz
QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3Jh
cnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFk
ZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJy
YW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86
OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50
YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6
OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJy
YXk6OnNfaW5mbykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFs
dWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CisgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwogICAgICAgICB9IGVsc2Ug
aWYgKGlzQnl0ZUFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAg
R1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENv
bXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2Rl
LCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigp
LCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIo
KSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKCZKU0J5dGVBcnJheTo6c19pbmZvKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hUZXN0UHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0
ZXIpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2Us
IG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQo
KSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0J5dGVBcnJheTo6c19pbmZvKSkp
OwogICAgICAgICB9IGVsc2UgaWYgKGlzQm9vbGVhblByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkp
IHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9q
aXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1w
LmdwcigpKTsKICAgICAgICAgICAgIG1faml0LnhvclB0cihUcnVzdGVkSW1tMzIoc3RhdGljX2Nh
c3Q8aW50MzJfdD4oVmFsdWVGYWxzZSkpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJh
bmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgVHJ1c3RlZElt
bTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KH4xKSkpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoVGVzdFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKHN0YXRp
Y19jYXN0PGludDMyX3Q+KH4xKSkpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0ludDhBcnJheVBy
ZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1w
KHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zv
cih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVz
dFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFz
a1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBK
U1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJ
bmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxE
YXRhKCktPmludDhBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKKyAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQu
YnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5m
bzo6dGFnTWFza1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5
cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6
Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5n
bG9iYWxEYXRhKCktPmludDhBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAg
ICAgfSBlbHNlIGlmIChpc0ludDE2QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAg
ICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0Lmxv
YWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIo
KSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVn
cygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8s
IHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQxNkFycmF5RGVzY3JpcHRvcigp
Lm1fY2xhc3NJbmZvKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2
YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVy
OjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwg
bV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+aW50MTZBcnJheURlc2Ny
aXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0ludDMyQXJyYXlQ
cmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVt
cCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NG
b3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRl
c3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01h
c2tSZWdpc3RlcikpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwg
SlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNz
SW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFs
RGF0YSgpLT5pbnQzMkFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOworICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2pp
dC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJ
bmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxs
OjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0
Lmdsb2JhbERhdGEoKS0+aW50MzJBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAg
ICAgICAgfSBlbHNlIGlmIChpc1VpbnQ4QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7
CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0
LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5n
cHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVl
UmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblpl
cm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2pp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50OEFycmF5RGVzY3JpcHRv
cigpLm1fY2xhc3NJbmZvKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBl
LCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1i
bGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRl
eCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDhBcnJheURl
c2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc1VpbnQ4Q2xh
bXBlZEFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVt
cG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVy
OjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2pp
dC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJ
bmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5j
b3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlND
ZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1f
aml0Lmdsb2JhbERhdGEoKS0+dWludDhDbGFtcGVkQXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0lu
Zm8pKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNl
LCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8s
IHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOworICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0
ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50OENsYW1wZWRBcnJheURlc2NyaXB0
b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc1VpbnQxNkFycmF5UHJl
ZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAo
dGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9y
KHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0
UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNr
UmVnaXN0ZXIpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpT
VmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0lu
Zm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERh
dGEoKS0+dWludDE2QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CisgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0
LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUklu
Zm86OnRhZ01hc2tSZWdpc3RlcikpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRU
eXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6
OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQu
Z2xvYmFsRGF0YSgpLT51aW50MTZBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAg
ICAgICAgfSBlbHNlIGlmIChpc1VpbnQzMkFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkg
ewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAu
Z3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1
ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25a
ZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDMyQXJyYXlEZXNjcmlw
dG9yKCkubV9jbGFzc0luZm8pKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5
cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwor
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUlu
ZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MzJBcnJh
eURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0Zsb2F0
MzJBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBv
cmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6
YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQu
YnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5m
bzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291
bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2Vs
bDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC5nbG9iYWxEYXRhKCktPmZsb2F0MzJBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsK
KyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJ
bmRleCwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5n
cHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3By
KCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0MzJBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNz
SW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0Zsb2F0NjRBcnJheVByZWRpY3Rpb24ocHJl
ZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAg
ICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVn
aXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3Vu
dGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7
Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygp
LCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkp
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0
NjRBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoVGVz
dFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFz
a1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVl
U291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZv
T2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRh
KCktPmZsb2F0NjRBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfQog
I2Vsc2UKICAgICAgICAgaWYgKGlzSW50MzJQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKQotICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9O
b2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVy
Ojp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFn
KSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwg
bm9kZUluZGV4LCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIEpJVENv
bXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Oklu
dDMyVGFnKSkpOwogICAgICAgICBlbHNlIGlmIChpc0FycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRU
eXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAg
ICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1w
LmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFs
dWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKKyAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9q
aXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRD
b21waWxlcjo6cGF5bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9k
ZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CisgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwogICAgICAgICB9IGVsc2UgaWYg
KGlzQnl0ZUFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BS
VGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGls
ZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQu
YnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykp
KTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcih2aXJ0
dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
VW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwg
SlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KCZKU0J5dGVBcnJheTo6c19pbmZvKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhC
YWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0Nl
bGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpT
Qnl0ZUFycmF5OjpzX2luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNCb29sZWFuUHJlZGlj
dGlvbihwcmVkaWN0ZWRUeXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3Vu
dGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpCb29sZWFuVGFnKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2gzMihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVy
KSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcpKSk7CiAgICAgICAgIGVsc2UgaWYg
KGlzSW50OEFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BS
VGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGls
ZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQu
YnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykp
KTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcih2aXJ0
dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
VW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwg
SlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KG1faml0Lmdsb2JhbERhdGEoKS0+aW50OEFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkp
OworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9k
ZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQ4QXJy
YXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNJbnQx
NkFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9y
YXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnRh
Z0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNo
MzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6Q2VsbFRhZykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
dmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKICAg
ICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcih2aXJ0dWFsUmVn
aXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3Vu
dGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxs
OjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0
Lmdsb2JhbERhdGEoKS0+aW50MTZBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKKyAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRl
eCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+aW50MTZBcnJheURl
c2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0ludDMyQXJy
YXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3Jhcnkg
dGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9y
KHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpDZWxsVGFnKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1
ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogICAgICAg
ICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3Rl
ciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJs
ZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNs
YXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xv
YmFsRGF0YSgpLT5pbnQzMkFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOworICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBt
X2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQzMkFycmF5RGVzY3Jp
cHRvcigpLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICB9IGVsc2UgaWYgKGlzVWludDhBcnJheVBy
ZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1w
KHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3Iodmly
dHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNl
bGxUYWcpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291
cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
dGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgICAg
ICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwg
dGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBK
U1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJ
bmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxE
YXRhKCktPnVpbnQ4QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CisgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQ4QXJyYXlEZXNjcmlwdG9y
KCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNVaW50OENsYW1wZWRBcnJh
eVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0
ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3Io
dmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkNlbGxUYWcpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVl
U291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAg
ICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVy
KSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxl
LCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xh
c3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9i
YWxEYXRhKCktPnVpbnQ4Q2xhbXBlZEFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwor
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUlu
ZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50OENsYW1w
ZWRBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChp
c1VpbnQxNkFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BS
VGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGls
ZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQu
YnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykp
KTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcih2aXJ0
dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
VW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwg
SlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDE2QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8p
KSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBu
b2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkp
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQx
NkFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICB9ICBlbHNlIGlmIChp
c1VpbnQzMkFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BS
VGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGls
ZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQu
YnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykp
KTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcih2aXJ0
dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
VW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwg
SlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDMyQXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8p
KSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBu
b2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkp
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQz
MkFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICB9ICBlbHNlIGlmIChp
c0Zsb2F0MzJBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQ
UlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBp
bGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0
LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJh
ZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcp
KSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3Iodmly
dHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCks
IEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0MzJBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5m
bykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2Us
IG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQo
KSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+Zmxv
YXQzMkFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICB9ICAgZWxzZSBp
ZiAoaXNGbG9hdDY0QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAg
ICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRD
b21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBt
X2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2gzMihNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxs
VGFnKSkpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9y
KHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdw
cigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDY0QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFz
c0luZm8pKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291
cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zm
c2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCkt
PmZsb2F0NjRBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSAKICNl
bmRpZgogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgJKHJldmlzaW9uIDEwODYwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTc1OSw3ICsxNzU5LDcg
QEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCktPmFwcGVuZE9TUkV4aXQoT1NS
RXhpdChraW5kLCBqc1ZhbHVlU291cmNlLCBtX2ppdC5ncmFwaCgpLnZhbHVlUHJvZmlsZUZvcihu
b2RlSW5kZXgpLCBqdW1wVG9GYWlsLCB0aGlzKSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygp
LT5hcHBlbmRPU1JFeGl0KE9TUkV4aXQoa2luZCwganNWYWx1ZVNvdXJjZSwgbV9qaXQuZ3JhcGgo
KS5tZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKG5vZGVJbmRleCksIGp1bXBUb0ZhaWws
IHRoaXMpKTsKICAgICB9CiAgICAgdm9pZCBzcGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5kIGtpbmQs
IEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgTm9kZVVzZSBub2RlVXNlLCBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBqdW1wVG9GYWlsKQogICAgIHsKQEAgLTE3ODIsNyArMTc4Miw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgbV9qaXQuY29kZUJsb2NrKCktPmFwcGVuZFNwZWN1bGF0aW9uUmVjb3ZlcnkocmVjb3Zl
cnkpOwotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKS0+YXBwZW5kT1NSRXhpdChPU1JFeGl0KGtp
bmQsIGpzVmFsdWVTb3VyY2UsIG1faml0LmdyYXBoKCkudmFsdWVQcm9maWxlRm9yKG5vZGVJbmRl
eCksIGp1bXBUb0ZhaWwsIHRoaXMsIG1faml0LmNvZGVCbG9jaygpLT5udW1iZXJPZlNwZWN1bGF0
aW9uUmVjb3ZlcmllcygpKSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLT5hcHBlbmRPU1JF
eGl0KE9TUkV4aXQoa2luZCwganNWYWx1ZVNvdXJjZSwgbV9qaXQuZ3JhcGgoKS5tZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlRm9yKG5vZGVJbmRleCksIGp1bXBUb0ZhaWwsIHRoaXMsIG1faml0
LmNvZGVCbG9jaygpLT5udW1iZXJPZlNwZWN1bGF0aW9uUmVjb3ZlcmllcygpKSk7CiAgICAgfQog
ICAgIHZvaWQgc3BlY3VsYXRpb25DaGVjayhFeGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpz
VmFsdWVTb3VyY2UsIE5vZGVVc2Ugbm9kZVVzZSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAganVtcFRv
RmFpbCwgY29uc3QgU3BlY3VsYXRpb25SZWNvdmVyeSYgcmVjb3ZlcnkpCiAgICAgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5o
CShyZXZpc2lvbiAxMDg2MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zhcmlh
YmxlQWNjZXNzRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCwxMSBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBtZXJnZVByZWRpY3Rpb24oZmluZCgpLT5tX3ByZWRpY3Rpb24sIHBy
ZWRpY3Rpb24pOwogICAgIH0KICAgICAKKyAgICBQcmVkaWN0ZWRUeXBlIG5vblVuaWZpZWRQcmVk
aWN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3ByZWRpY3Rpb247CisgICAgfQorICAg
IAogICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4g
ZmluZCgpLT5tX3ByZWRpY3Rpb247Cg==
</data>
<flag name="commit-queue"
          id="130755"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128405</attachid>
            <date>2012-02-22 23:22:43 -0800</date>
            <delta_ts>2012-02-22 23:42:59 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>lazyoperands_patch_4.diff</filename>
            <type>text/plain</type>
            <size>88746</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA4NjA0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0NCBA
QAorMjAxMi0wMi0yMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBPU1IgZXhpdCB2YWx1ZSBwcm9maWxpbmcgc2hvdWxkIGhhdmUgZ3JhY2VmdWwgaGFuZGxp
bmcgb2YgbG9jYWwgdmFyaWFibGVzIGFuZCBhcmd1bWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MzEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBQcmV2aW91c2x5LCBpZiB3ZSBPU1Ig
ZXhpdGVkIGJlY2F1c2UgYSBwcmVkaWN0aW9uIGluIGEgbG9jYWwgd2FzIHdyb25nLCB3ZSdkCisg
ICAgICAgIG9ubHkgcmVhbGl6ZSB3aGF0IHRoZSB0cnVlIHR5cGUgb2YgdGhlIGxvY2FsIHdhcyBp
ZiB0aGUgcmVndWxhciB2YWx1ZSBwcm9maWxpbmcKKyAgICAgICAga2lja2VkIGluIGFuZCB0b2xk
IHVzLiBVbmxlc3MgdGhlIGxvY2FsIHdhcyBibG9jay1sb2NhbGx5IGNvcHkgcHJvcGFnYXRlZCwg
aW4KKyAgICAgICAgd2hpY2ggY2FzZSB3ZSdkIGtub3cgZnJvbSBhbiBPU1IgZXhpdCBwcm9maWxl
LgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIE9TUiBleGl0IHByb2ZpbGluZyB0
byBhbGwgbG9jYWxzIGFuZCBhcmd1bWVudHMuIE5vdywgaWYgd2UgT1NSCisgICAgICAgIGV4aXQg
YmVjYXVzZSBvZiBhIG1pc3ByZWRpY3RlZCBsb2NhbCBvciBhcmd1bWVudCB0eXBlLCB3ZSdsbCBr
bm93IHdoYXQgdGhlIHR5cGUgb2YKKyAgICAgICAgdGhlIGxvY2FsIG9yIGFyZ3VtZW50IHNob3Vs
ZCBiZSBpbW1lZGlhdGVseSB1cG9uIGV4aXRpbmcuCisgICAgICAgIAorICAgICAgICBUaGUgd2F5
IHRoYXQgbG9jYWwgdmFyaWFibGUgT1NSIGV4aXQgcHJvZmlsaW5nIHdvcmtzIGlzIHRoYXQgd2Ug
bm93IGhhdmUgYSBsYXppbHkKKyAgICAgICAgYWRkZWQgc2V0IG9mIE9TUi1leGl0LW9ubHkgdmFs
dWUgcHJvZmlsZXMgZm9yIGV4aXQgc2l0ZXMgdGhhdCBhcmUgQmFkVHlwZSBhbmQgdGhhdAorICAg
ICAgICBjaXRlZCBhIEdldExvY2FsIGFzIHRoZWlyIHZhbHVlIHNvdXJjZS4gVGhlIHZhbHVlIHBy
b2ZpbGVzIGFyZSBvbmx5IGFkZGVkIGlmIHRoZQorICAgICAgICBPU1IgZXhpdCBpcyB0YWtlbiwg
YW5kIGFyZSBrZXllZCBieSBDb2RlQmxvY2ssIGJ5dGVjb2RlIGluZGV4IG9mIHRoZSBHZXRMb2Nh
bCwgYW5kCisgICAgICAgIG9wZXJhbmQuIFRoZSBsb29rLXVwIGlzIHBlcmZvcm1lZCBieSBxdWVy
eWluZyB0aGUKKyAgICAgICAgQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVy
IGluIHRoZSBDb2RlQmxvY2ssIHVzaW5nIGEga2V5IHRoYXQgY29udGFpbnMKKyAgICAgICAgdGhl
IGJ5dGVjb2RlIGluZGV4IGFuZCB0aGUgb3BlcmFuZC4gQmVjYXVzZSB0aGUgdmFsdWUgcHJvZmls
ZXMgYXJlIGFkZGVkIGF0IHJhbmRvbQorICAgICAgICB0aW1lcywgdGhleSBhcmUgbm90IHNvcnRl
ZDsgaW5zdGVhZCB0aGV5IGFyZSBqdXN0IHN0b3JlZCBpbiBhbiBhcmJpdHJhcmlseS1vcmRlcmVk
CisgICAgICAgIFNlZ21lbnRlZFZlY3Rvci4gTG9vay11cHMgYXJlIG1hZGUgZmFzdCBieSAiZGVj
b21wcmVzc2luZyI6IHRoZSBERkc6OkJ5dGVDb2RlUGFyc2VyCisgICAgICAgIGNyZWF0ZXMgYSBM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlciwgd2hpY2ggdHVybnMgdGhlCisgICAgICAgIENv
bXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcidzIGNvbnRlbnRzIGludG8gYSBI
YXNoTWFwIGZvciB0aGUgZHVyYXRpb24KKyAgICAgICAgb2YgREZHIHBhcnNpbmcuCisgICAgICAg
IAorICAgICAgICBQcmV2aW91c2x5LCBPU1IgZXhpdHMgaGFkIGEgcG9pbnRlciB0byB0aGUgVmFs
dWVQcm9maWxlIHRoYXQgaGFkIHRoZSBzcGVjRmFpbEJ1Y2tldAorICAgICAgICBpbnRvIHdoaWNo
IHZhbHVlcyBvYnNlcnZlZCBkdXJpbmcgT1NSIGV4aXQgd291bGQgYmUgcGxhY2VkLiBOb3cgaXQg
dXNlcyBhIGxhenkKKyAgICAgICAgdGh1bmsgZm9yIGEgVmFsdWVQcm9maWxlLiBJIGNhbGwgdGhp
cyB0aGUgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS4gSXQgbWF5CisgICAgICAgIGVpdGhl
ciBjb250YWluIGEgVmFsdWVQcm9maWxlIGluc2lkZSBpdCAod2hpY2ggd29ya3MgZm9yIHByZXZp
b3VzIHVzZXMgb2YgT1NSIGV4aXQKKyAgICAgICAgcHJvZmlsaW5nKSBvciBpdCBtYXkganVzdCBo
YXZlIGtub3dsZWRnZSBvZiBob3cgdG8gZ28gYWJvdXQgY3JlYXRpbmcgdGhlCisgICAgICAgIExh
enlPcGVyYW5kVmFsdWVQcm9maWxlIGluIHRoZSBjYXNlIHRoYXQgdGhlIE9TUiBleGl0IGlzIGFj
dHVhbGx5IHRha2VuLiBUaGlzCisgICAgICAgIGVuc3VyZXMgdGhhdCB3ZSBuZXZlciBoYXZlIHRv
IGNyZWF0ZSBOdW1PcGVyYW5kcypOdW1CeXRlY29kZUluZGljZXMqTnVtQ29kZUJsb2NrcworICAg
ICAgICB2YWx1ZSBwcm9maWxpbmcgYnVja2V0cyB1bmxlc3Mgd2UgYWN0dWFsbHkgZGlkIE9TUiBl
eGl0IG9uIGV2ZXJ5IHNpbmdsZSBvcGVyYW5kLAorICAgICAgICBpbiBldmVyeSBzaW5nbGUgaW5z
dHJ1Y3Rpb24sIGluIGVhY2ggY29kZSBibG9jayAodGhhdCdzIHByb2JhYmx5IHVubGlrZWx5KS4K
KyAgICAgICAgCisgICAgICAgIFRoaXMgYXBwZWFycyB0byBiZSBuZXV0cmFsIG9uIHRoZSBtYWpv
ciBiZW5jaG1hcmtzLCBidXQgaXMgYSBkb3VibGUtZGlnaXQgc3BlZWQtdXAKKyAgICAgICAgb24g
Y29kZSBkZWxpYmVyYXRlbHkgd3JpdHRlbiB0byBoYXZlIGRhdGEgZmxvdyB0aGF0IHNwYW5zIGJh
c2ljIGJsb2NrcyBhbmQgd2hlcmUKKyAgICAgICAgdGhlIGNvZGUgZXhoaWJpdHMgcG9zdC1vcHRp
bWl6YXRpb24gcG9seW1vcnBoaXNtIGluIGEgbG9jYWwgdmFyaWFibGUuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMp
OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoQ29kZUJsb2NrKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsYXp5T3BlcmFuZFZhbHVlUHJvZmlsZXMpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0MpOgorICAgICAgICAoSlNDOjpDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGVIb2xkZXI6OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcik6CisgICAg
ICAgIChKU0M6OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6fkNvbXBy
ZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcik6CisgICAgICAgIChKU0M6OkNvbXBy
ZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0
aW9ucyk6CisgICAgICAgIChKU0M6OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhv
bGRlcjo6YWRkKToKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXI6
OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyKToKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGVQYXJzZXI6On5MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlcik6Cisg
ICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyOjpnZXRJZlByZXNlbnQp
OgorICAgICAgICAoSlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlcjo6cHJlZGljdGlv
bik6CisgICAgICAgICogYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaDogQWRkZWQu
CisgICAgICAgIChKU0MpOgorICAgICAgICAoTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkpOgor
ICAgICAgICAoSlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleTo6TGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVLZXkpOgorICAgICAgICAoSlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleTo6
b3BlcmF0b3IhKToKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXk6Om9w
ZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleTo6aGFz
aCk6CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5OjpieXRlY29kZU9m
ZnNldCk6CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5OjpvcGVyYW5k
KToKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXk6OmlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXlI
YXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXlIYXNo
OjplcXVhbCk6CisgICAgICAgIChMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleUhhc2gpOgorICAg
ICAgICAoV1RGKToKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGU6OkxhenlP
cGVyYW5kVmFsdWVQcm9maWxlKToKKyAgICAgICAgKExhenlPcGVyYW5kVmFsdWVQcm9maWxlKToK
KyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGU6OmtleSk6CisgICAgICAgIChD
b21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXIpOgorICAgICAgICAoTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL01ldGhvZE9mR2V0
dGluZ0FWYWx1ZVByb2ZpbGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChK
U0M6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmZyb21MYXp5T3BlcmFuZCk6CisgICAg
ICAgIChKU0M6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmdldFNwZWNGYWlsQnVja2V0
KToKKyAgICAgICAgKiBieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmg6IEFk
ZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGUpOgorICAgICAgICAoSlNDOjpNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjpNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6TWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZTo6b3BlcmF0b3IhKToKKyAgICAgICAgKiBieXRlY29kZS9WYWx1ZVByb2ZpbGUu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJ5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKFZhbHVlUHJvZmlsZUJhc2UpOgorICAgICAgICAoSlNDOjpWYWx1
ZVByb2ZpbGVCYXNlOjpWYWx1ZVByb2ZpbGVCYXNlKToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9m
aWxlQmFzZTo6ZHVtcCk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OmNvbXB1dGVV
cGRhdGVkUHJlZGljdGlvbik6CisgICAgICAgIChKU0M6Ok1pbmltYWxWYWx1ZVByb2ZpbGU6Ok1p
bmltYWxWYWx1ZVByb2ZpbGUpOgorICAgICAgICAoVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9m
QnVja2V0cyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tl
dHM6OlZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHMpOgorICAgICAgICAoSlNDOjpW
YWx1ZVByb2ZpbGU6OlZhbHVlUHJvZmlsZSk6CisgICAgICAgIChKU0M6OmdldFZhbHVlUHJvZmls
ZUJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Z2V0UmFyZUNhc2VQcm9maWxlQnl0ZWNv
ZGVPZmZzZXQpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAg
IChCeXRlQ29kZVBhcnNlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Omlu
amVjdExhenlPcGVyYW5kUHJlZGljdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmdldExvY2FsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0
QXJndW1lbnQpOgorICAgICAgICAoSW5saW5lU3RhY2tFbnRyeSk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmZpeFZhcmlhYmxlQWNjZXNzUHJlZGljdGlvbnMpOgorICAgICAg
ICAoREZHKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tF
bnRyeTo6SW5saW5lU3RhY2tFbnRyeSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlKToKKyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6
REZHOjpHcmFwaDo6dmFsdWVQcm9maWxlRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6
bWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcik6CisgICAgICAgIChHcmFwaCk6CisgICAg
ICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdP
U1JFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0OjpPU1JFeGl0KToKKyAgICAg
ICAgKiBkZmcvREZHT1NSRXhpdC5oOgorICAgICAgICAoT1NSRXhpdCk6CisgICAgICAgICogZGZn
L0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0
Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVy
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQp
OgorICAgICAgICAqIGRmZy9ERkdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGhhc2U6
OmJlZ2luUGhhc2UpOgorICAgICAgICAoSlNDOjpERkc6OlBoYXNlOjplbmRQaGFzZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRp
b25DaGVjayk6CisgICAgICAgICogZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oOgorICAgICAg
ICAoSlNDOjpERkc6OlZhcmlhYmxlQWNjZXNzRGF0YTo6bm9uVW5pZmllZFByZWRpY3Rpb24pOgor
ICAgICAgICAoVmFyaWFibGVBY2Nlc3NEYXRhKToKKwogMjAxMi0wMi0yMiAgR2F2aW4gQmFycmFj
bG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IFtbRGVm
aW5lT3duUHJvcGVydHldXSBmb3IgdGhlIGFyZ3VtZW50cyBvYmplY3QKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwODYwMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTUgKzQyLDE2
IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYnl0ZWNvZGUvREZHRXhpdFByb2Zp
bGUuY3BwCiAgICAgYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKICAgICBieXRlY29kZS9KdW1w
VGFibGUuY3BwCisgICAgYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCiAgICAg
Ynl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtJbmZvLmNwcAogICAgIGJ5dGVjb2RlL01ldGhvZENhbGxM
aW5rU3RhdHVzLmNwcAorICAgIGJ5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUu
Y3BwCiAgICAgYnl0ZWNvZGUvT3Bjb2RlLmNwcAogICAgIGJ5dGVjb2RlL1BvbHltb3JwaGljUHV0
QnlJZExpc3QuY3BwCiAgICAgYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5jcHAKICAgICBieXRlY29k
ZS9QdXRCeUlkU3RhdHVzLmNwcAogICAgIGJ5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAKICAgICBi
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKLSAgICBieXRlY29kZS9WYWx1ZVByb2ZpbGUu
Y3BwCiAKICAgICBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCiAgICAgYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDg2MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMTA0LDExICsxMDQsMTUg
QEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0p1bXBUYWJsZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9K
dW1wVGFibGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExp
bmtJbmZvLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZh
bHVlUHJvZmlsZS5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlu
ZUluZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5r
SW5mby5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlu
a0luZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5r
U3RhdHVzLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxM
aW5rU3RhdHVzLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL09wY29kZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9P
cGNvZGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljUHV0
QnlJZExpc3QuY3BwIFwKQEAgLTEyNCw3ICsxMjgsNiBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oIFwKLQlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1Rhcmdl
dC5wcmkJKHJldmlzaW9uIDEwODYwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQu
cHJpCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxNSArNTUsMTYgQEAgU09VUkNFUyArPSBcCiAgICAg
Ynl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwIFwKICAgICBieXRlY29kZS9HZXRCeUlkU3RhdHVz
LmNwcCBcCiAgICAgYnl0ZWNvZGUvSnVtcFRhYmxlLmNwcCBcCisgICAgYnl0ZWNvZGUvTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGUuY3BwIFwKICAgICBieXRlY29kZS9NZXRob2RDYWxsTGlua0luZm8u
Y3BwIFwKICAgICBieXRlY29kZS9NZXRob2RDYWxsTGlua1N0YXR1cy5jcHAgXAorICAgIGJ5dGVj
b2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwIFwKICAgICBieXRlY29kZS9PcGNv
ZGUuY3BwIFwKICAgICBieXRlY29kZS9Qb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmNwcCBcCiAgICAg
Ynl0ZWNvZGUvUHJlZGljdGVkVHlwZS5jcHAgXAogICAgIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
Y3BwIFwKICAgICBieXRlY29kZS9TYW1wbGluZ1Rvb2wuY3BwIFwKICAgICBieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5jcHAgXAotICAgIGJ5dGVjb2RlL1ZhbHVlUHJvZmlsZS5jcHAgXAogICAg
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgXAogICAgIGJ5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwIFwKICAgICBoZWFwL0NvcGllZFNwYWNlLmNwcCBcCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
agkocmV2aXNpb24gMTA4NjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTE0NzgsNiArMTQ3OCwyMiBAQAogCQkJTmFtZT0iYnl0ZWNvZGUiCiAJCQk+CiAJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVcTWV0aG9kT2ZHZXR0aW5n
QVZhbHVlUHJvZmlsZS5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXC4uXGJ5dGVjb2RlXE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCIK
KwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0
ZWNvZGVcTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxieXRlY29kZVxMYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRo
PSIuLlwuLlxieXRlY29kZVxHZXRCeUlkU3RhdHVzLmgiCiAJCQkJPgogCQkJPC9GaWxlPgpAQCAt
MTYxNCwxMCArMTYzMCw2IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXC4uXGJ5dGVjb2RlXFZhbHVlUHJvZmlsZS5jcHAiCi0JCQkJPgotCQkJPC9G
aWxlPgotCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGJ5dGVjb2RlXFZhbHVlUHJv
ZmlsZS5oIgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAxMDg2MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYg
KzEzOSwxMCBAQAogCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0S2luZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RkM4QzExNEUxQjVG
QjAwRDUyQUUwIC8qIFB1dEtpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjlGQzhEMDE0RTYxMkQ4MDBENTJBRTAgLyogRGF0YUxvZy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlGQzhDRDE0
RTYxMkQ1MDBENTJBRTAgLyogRGF0YUxvZy5jcHAgKi87IH07CiAJCTBGOUZDOEQxMTRFNjEyREEw
MEQ1MkFFMCAvKiBEYXRhTG9nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjlGQzhDRTE0RTYxMkQ1MDBENTJBRTAgLyogRGF0YUxvZy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQjU0Njc3MTRGNTlC
NUMwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNTQ2NzYxNEY1OUFEMTAwMkMyOTg5IC8q
IExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZCNTQ2NzkxNEY1QzQ2QjAwMkMyOTg5IC8qIExhenlPcGVy
YW5kVmFsdWVQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGQjU0Njc4MTRGNUM0NjgwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZS5jcHAgKi87IH07CisJCTBGQjU0NjdCMTRGNUM3RTEwMDJDMjk4OSAvKiBNZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkI1NDY3QTE0RjVDN0Q0MDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGQjU0NjdEMTRGNUNGRDYwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQ
cm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQjU0NjdDMTRGNUNGRDMwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
LmNwcCAqLzsgfTsKIAkJMEZCQzBBRTcxNDk2QzdDNDAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkMw
QUU0MTQ5NkM3QzEwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5jcHAgKi87IH07CiAJCTBGQkMw
QUU4MTQ5NkM3QzcwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCQzBBRTUxNDk2QzdDMTAwRDRGQkREIC8q
IERGR0V4aXRQcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEZCRDdFNjkxNDQ3OTk5NjAwNDgxMzE1IC8qIENvZGVPcmlnaW4uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkQ3RTY3MTQ0Nzk5
OEYwMDQ4MTMxNSAvKiBDb2RlT3JpZ2luLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE2OSw3ICsxNzMsNiBAQAogCQkwRkQ4MkU1NzE0MURBRjEw
MDAxNzlDOTQgLyogREZHT1NSRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGRDgyRTUzMTQxREFFREUwMDE3OUM5NCAvKiBERkdPU1JFbnRyeS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRDgy
RTg1MTQxRjNGRTMwMDE3OUM5NCAvKiBCb3VuZHNDaGVja2VkUG9pbnRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEODJFODIxNDFGM0ZDOTAwMTc5
Qzk0IC8qIEJvdW5kc0NoZWNrZWRQb2ludGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZEODJFODYxNDFGM0ZGMTAwMTc5Qzk0IC8qIFByZWRp
Y3RlZFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZEODJFODQxNDFGM0ZEQTAwMTc5Qzk0IC8qIFByZWRpY3RlZFR5cGUuY3BwICovOyB9Owot
CQkwRkQ4MkU5MDE0MjA3QTVGMDAxNzlDOTQgLyogVmFsdWVQcm9maWxlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgyRThFMTQyMDdBNTEwMDE3
OUM5NCAvKiBWYWx1ZVByb2ZpbGUuY3BwICovOyB9OwogCQkwRkQ4MkY0QjE0MjgwNkExMDAxNzlD
OTQgLyogQml0VmVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkQ4MkY0OTE0MjgwNjkyMDAxNzlDOTQgLyogQml0VmVjdG9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZFMjI4RUQxNDM2QUIy
NzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZFMjI4RUUxNDM2
QUIyQzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZFMjI4RUExNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3Bw
ICovOyB9OwpAQCAtMTAwMSw2ICsxMDA0LDEwIEBACiAJCTBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFF
MCAvKiBQdXRLaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1dEtpbmQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5RkM4Q0QxNEU2MTJENTAwRDUyQUUw
IC8qIERhdGFMb2cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0
YUxvZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUZDOENFMTRFNjEyRDUw
MEQ1MkFFMCAvKiBEYXRhTG9nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERh
dGFMb2cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCNTQ2NzYxNEY1OUFEMTAw
MkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGQjU0Njc4MTRGNUM0NjgwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQjU0
NjdBMTRGNUM3RDQwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCNTQ2N0MxNEY1Q0ZEMzAwMkMy
OTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQkMwQUU0MTQ5NkM3QzEwMEQ0RkJERCAvKiBE
RkdFeGl0UHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
RkdFeGl0UHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQkMwQUU1
MTQ5NkM3QzEwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBERkdFeGl0UHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRkJEN0U2NzE0NDc5OThGMDA0ODEzMTUgLyogQ29kZU9yaWdpbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlT3JpZ2luLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xMDMzLDcgKzEwNDAsNiBAQAogCQkwRkQ4MkU1MzE0MURBRURFMDAxNzlDOTQg
LyogREZHT1NSRW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT1NS
RW50cnkuaDsgcGF0aCA9IGRmZy9ERkdPU1JFbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRkQ4MkU4MjE0MUYzRkM5MDAxNzlDOTQgLyogQm91bmRzQ2hlY2tlZFBvaW50ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQm91bmRzQ2hlY2tlZFBvaW50ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEODJFODQxNDFGM0ZEQTAwMTc5Qzk0
IC8qIFByZWRpY3RlZFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUHJlZGljdGVkVHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGRDgy
RThFMTQyMDdBNTEwMDE3OUM5NCAvKiBWYWx1ZVByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVmFsdWVQcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEZEODJGNDkxNDI4MDY5MjAwMTc5Qzk0IC8qIEJpdFZlY3Rvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCaXRWZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZFMjI4RUExNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT3B0aW9ucy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wdGlvbnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3NzYsNiArMjc4MiwxMCBAQAogCQk5NjlBMDc4RjBFRDFE
M0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCTBGQjU0NjdDMTRGNUNGRDMwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlLmNwcCAqLywKKwkJCQkwRkI1NDY3QTE0RjVDN0Q0MDAyQzI5ODkgLyog
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oICovLAorCQkJCTBGQjU0Njc4MTRGNUM0Njgw
MDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAgKi8sCisJCQkJMEZCNTQ2NzYx
NEY1OUFEMTAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmggKi8sCiAJCQkJMEYy
MUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLywKIAkJCQkw
RjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLywKIAkJCQkw
RjlGQzhCRjE0RTFCNUZCMDBENTJBRTAgLyogUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5jcHAgKi8s
CkBAIC0yODE5LDcgKzI4MjksNiBAQAogCQkJCTE0MjlEODg0MEVEMjFDM0QwMEI4OTYxOSAvKiBT
YW1wbGluZ1Rvb2wuaCAqLywKIAkJCQlCQ0NGMEQwQjBFRjBCOEE1MDA0MTNDOEYgLyogU3RydWN0
dXJlU3R1YkluZm8uY3BwICovLAogCQkJCUJDQ0YwRDA3MEVGMEFBQjkwMDQxM0M4RiAvKiBTdHJ1
Y3R1cmVTdHViSW5mby5oICovLAotCQkJCTBGRDgyRThFMTQyMDdBNTEwMDE3OUM5NCAvKiBWYWx1
ZVByb2ZpbGUuY3BwICovLAogCQkJCTBGOTYzQjM2MTNGQzZGREUwMDAyRDlCMiAvKiBWYWx1ZVBy
b2ZpbGUuaCAqLywKIAkJCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVy
eS5oICovLAogCQkJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0ZXIu
aCAqLywKQEAgLTMzOTAsNiArMzM5OSw4IEBACiAJCQkJMEZGRkM5NUUxNEVGOTBCNzAwQzcyNTMy
IC8qIERGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkZGQzk2MDE0RUY5MEJEMDBDNzI1MzIgLyogREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBo
YXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDk3MjA5MTE0RUI4MzE1MDBGRUIxQjcgLyogUGFz
c1dlYWsuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQjU0Njc3MTRGNTlCNUMwMDJDMjk4OSAvKiBM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZCNTQ2N0IxNEY1
QzdFMTAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpAQCAtMzk2Miw3ICszOTczLDYgQEAKIAkJCQkyNjg0QjJERjE0RDRBOUIyMDA3MkMwQjYg
LyogVVJMU2VnbWVudHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlERUUxMDdFQzdFNzAw
NjUwNDQ2IC8qIFVTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFFRjc5QUEwQ0U5N0JB
NjAwODhENTAwIC8qIFVURjguY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEZEODJFOTAxNDIwN0E1
RjAwMTc5Qzk0IC8qIFZhbHVlUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkM4MTUx
NjE0MDUxMUI1MDBDRkE2MDMgLyogVlRhYmxlU3BlY3RydW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZDODE1MEIxNDA0M0MwRTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJODY4QkZBMTcxMTdDRjE5OTAwQjkwOEIxIC8qIFdURlN0cmluZy5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTM5OTgsNiArNDAwOCw4IEBACiAJCQkJMEZGRkM5NUIxNEVG
OTBBRDAwQzcyNTMyIC8qIERGR1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRkZDOTVE
MTRFRjkwQjMwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkZGQzk1RjE0RUY5MEJCMDBDNzI1MzIgLyogREZHVmlydHVhbFJl
Z2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGQjU0Njc5MTRG
NUM0NkIwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkwRkI1NDY3RDE0RjVDRkQ2MDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZhbHVl
UHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxMDg2MDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk0
Niw2ICsxOTQ2LDggQEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcgog
ICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmlubGluZUNhbGxGcmFtZS5jYWxsZWUpOwogICAg
ICAgICB9CiAgICAgfQorICAgIAorICAgIG1fbGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVzLmNvbXB1
dGVVcGRhdGVkUHJlZGljdGlvbnMoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJ
TEVSKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
cmV2aXNpb24gMTA4NjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3QuaCIKICNpbmNsdWRlICJKdW1wVGFibGUuaCIKICNpbmNsdWRlICJMTEludENhbGxM
aW5rSW5mby5oIgorI2luY2x1ZGUgIkxhenlPcGVyYW5kVmFsdWVQcm9maWxlLmgiCiAjaW5jbHVk
ZSAiTGluZUluZm8uaCIKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUgIlByZWRpY3Rpb25U
cmFja2VyLmgiCkBAIC03MjcsNiArNzI4LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9
CiAKICAgICAgICAgREZHOjpFeGl0UHJvZmlsZSYgZXhpdFByb2ZpbGUoKSB7IHJldHVybiBtX2V4
aXRQcm9maWxlOyB9CisgICAgICAgIAorICAgICAgICBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVIb2xkZXImIGxhenlPcGVyYW5kVmFsdWVQcm9maWxlcygpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBtX2xhenlPcGVyYW5kVmFsdWVQcm9maWxlczsKKyAgICAgICAgfQog
I2VuZGlmCiAKICAgICAgICAgLy8gQ29uc3RhbnQgUG9vbApAQCAtMTE4Nyw2ICsxMTkzLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIFRoaXMgaXMgcmVsZXZhbnQgdG8gbm9uLURGRyBj
b2RlIGJsb2NrcyB0aGF0IHNlcnZlIGFzIHRoZSBwcm9maWxlZCBjb2RlIGJsb2NrCiAgICAgICAg
IC8vIGZvciBERkcgY29kZSBibG9ja3MuCiAgICAgICAgIERGRzo6RXhpdFByb2ZpbGUgbV9leGl0
UHJvZmlsZTsKKyAgICAgICAgQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVy
IG1fbGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVzOwogI2VuZGlmCiAjaWYgRU5BQkxFKFZBTFVFX1BS
T0ZJTEVSKQogICAgICAgICBWZWN0b3I8VmFsdWVQcm9maWxlPiBtX2FyZ3VtZW50VmFsdWVQcm9m
aWxlczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZh
bHVlUHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZS5oIgorCisjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorCituYW1lc3Bh
Y2UgSlNDIHsKKworQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjpDb21w
cmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXIoKSB7IH0KK0NvbXByZXNzZWRMYXp5
T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6fkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZUhvbGRlcigpIHsgfQorCit2b2lkIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmls
ZUhvbGRlcjo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9ucygpCit7CisgICAgaWYgKCFtX2RhdGEp
CisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9k
YXRhLT5zaXplKCk7ICsraSkKKyAgICAgICAgbV9kYXRhLT5hdChpKS5jb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24oKTsKK30KKworTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUqIENvbXByZXNzZWRMYXp5
T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6YWRkKAorICAgIGNvbnN0IExhenlPcGVyYW5kVmFs
dWVQcm9maWxlS2V5JiBrZXkpCit7CisgICAgaWYgKCFtX2RhdGEpCisgICAgICAgIG1fZGF0YSA9
IGFkb3B0UHRyKG5ldyBTZWdtZW50ZWRWZWN0b3I8TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUsIDg+
KCkpOworICAgIGVsc2UgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9kYXRh
LT5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKG1fZGF0YS0+YXQoaSkua2V5KCkgPT0g
a2V5KQorICAgICAgICAgICAgICAgIHJldHVybiAmbV9kYXRhLT5hdChpKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICAKKyAgICBtX2RhdGEtPmFwcGVuZChMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZShr
ZXkpKTsKKyAgICByZXR1cm4gJm1fZGF0YS0+bGFzdCgpOworfQorCitMYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZVBhcnNlcjo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXIoCisgICAgQ29tcHJl
c3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyJiBob2xkZXIpCisgICAgOiBtX2hvbGRl
cihob2xkZXIpCit7CisgICAgaWYgKCFtX2hvbGRlci5tX2RhdGEpCisgICAgICAgIHJldHVybjsK
KyAgICAKKyAgICBTZWdtZW50ZWRWZWN0b3I8TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUsIDg+JiBk
YXRhID0gKm1faG9sZGVyLm1fZGF0YTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0
YS5zaXplKCk7ICsraSkKKyAgICAgICAgbV9tYXAuYWRkKGRhdGFbaV0ua2V5KCksICZkYXRhW2ld
KTsKK30KKworTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXI6On5MYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZVBhcnNlcigpIHsgfQorCitMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSogTGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGVQYXJzZXI6OmdldElmUHJlc2VudCgKKyAgICBjb25zdCBMYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZUtleSYga2V5KSBjb25zdAoreworICAgIEhhc2hNYXA8TGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGVLZXksIExhenlPcGVyYW5kVmFsdWVQcm9maWxlKj46OmNvbnN0X2l0ZXJhdG9y
IGl0ZXIgPQorICAgICAgICBtX21hcC5maW5kKGtleSk7CisgICAgCisgICAgaWYgKGl0ZXIgPT0g
bV9tYXAuZW5kKCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBpdGVyLT5z
ZWNvbmQ7Cit9CisKK1ByZWRpY3RlZFR5cGUgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXI6
OnByZWRpY3Rpb24oCisgICAgY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGtleSkg
Y29uc3QKK3sKKyAgICBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGdldElmUHJl
c2VudChrZXkpOworICAgIGlmICghcHJvZmlsZSkKKyAgICAgICAgcmV0dXJuIFByZWRpY3ROb25l
OworICAgIAorICAgIHJldHVybiBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoVkFMVUVfUFJPRklM
RVIpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZh
bHVlUHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVfaAorI2RlZmluZSBMYXp5
T3BlcmFuZFZhbHVlUHJvZmlsZV9oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lm
IEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKworI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5j
bHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CisKK2NsYXNzIExhenlP
cGVyYW5kVmFsdWVQcm9maWxlS2V5IHsKK3B1YmxpYzoKKyAgICBMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZUtleSgpCisgICAgICAgIDogbV9ieXRlY29kZU9mZnNldCgwKSAvLyAwID0gZW1wdHkgdmFs
dWUKKyAgICAgICAgLCBtX29wZXJhbmQoLTEpIC8vIG5vdCBhIHZhbGlkIG9wZXJhbmQgaW5kZXgg
aW4gb3VyIGN1cnJlbnQgc2NoZW1lCisgICAgeworICAgIH0KKyAgICAKKyAgICBMYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZUtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAg
IDogbV9ieXRlY29kZU9mZnNldCgxKSAvLyAxID0gZGVsZXRlZCB2YWx1ZQorICAgICAgICAsIG1f
b3BlcmFuZCgtMSkgLy8gbm90IGEgdmFsaWQgb3BlcmFuZCBpbmRleCBpbiBvdXIgY3VycmVudCBz
Y2hlbWUKKyAgICB7CisgICAgfQorICAgIAorICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5
KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBpbnQgb3BlcmFuZCkKKyAgICAgICAgOiBtX2J5dGVj
b2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICAsIG1fb3BlcmFuZChvcGVyYW5kKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG9wZXJhbmQgIT0gLTEpOworICAgIH0KKyAgICAKKyAgICBi
b29sIG9wZXJhdG9yISgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9vcGVyYW5kID09
IC0xOworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGVLZXkmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYnl0
ZWNvZGVPZmZzZXQgPT0gb3RoZXIubV9ieXRlY29kZU9mZnNldAorICAgICAgICAgICAgJiYgbV9v
cGVyYW5kID09IG90aGVyLm1fb3BlcmFuZDsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgaGFz
aCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gV1RGOjppbnRIYXNoKG1fYnl0ZWNvZGVP
ZmZzZXQpICsgbV9vcGVyYW5kOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoISEqdGhpcyk7CisgICAgICAgIHJl
dHVybiBtX2J5dGVjb2RlT2Zmc2V0OworICAgIH0KKyAgICBpbnQgb3BlcmFuZCgpIGNvbnN0Cisg
ICAgeworICAgICAgICBBU1NFUlQoISEqdGhpcyk7CisgICAgICAgIHJldHVybiBtX29wZXJhbmQ7
CisgICAgfQorICAgIAorICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3BlcmFuZCA9PSAtMSAmJiBtX2J5dGVjb2RlT2Zmc2V0
OworICAgIH0KK3ByaXZhdGU6IAorICAgIHVuc2lnbmVkIG1fYnl0ZWNvZGVPZmZzZXQ7CisgICAg
aW50IG1fb3BlcmFuZDsKK307CisKK3N0cnVjdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleUhh
c2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9m
aWxlS2V5JiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVh
bCgKKyAgICAgICAgY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGEsCisgICAgICAg
IGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0K
KyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRy
dWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKK3RlbXBsYXRlPD4gc3RydWN0IERl
ZmF1bHRIYXNoPEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXk+IHsKKyAgICB0eXBlZGVm
IEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXlIYXNoIEhhc2g7Cit9OworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hU
cmFpdHM8SlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleT4gOiBwdWJsaWMgR2VuZXJpY0hh
c2hUcmFpdHM8SlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleT4geworICAgIHN0YXRpYyB2
b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5
JiBzbG90KSB7IG5ldyAoTm90TnVsbCwgJnNsb3QpIEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGVLZXkoSGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRl
ZFZhbHVlKGNvbnN0IEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIHZhbHVlKSB7IHJl
dHVybiB2YWx1ZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXVEYKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZSA6IHB1YmxpYyBNaW5pbWFsVmFsdWVQcm9maWxlIHsKKyAgICBMYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZSgpCisgICAgICAgIDogTWluaW1hbFZhbHVlUHJvZmlsZSgpCisgICAgICAgICwgbV9v
cGVyYW5kKC0xKQorICAgIHsKKyAgICB9CisgICAgCisgICAgZXhwbGljaXQgTGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGUoY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGtleSkKKyAgICAg
ICAgOiBNaW5pbWFsVmFsdWVQcm9maWxlKGtleS5ieXRlY29kZU9mZnNldCgpKQorICAgICAgICAs
IG1fb3BlcmFuZChrZXkub3BlcmFuZCgpKQorICAgIHsKKyAgICB9CisgICAgCisgICAgTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVLZXkga2V5KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleShtX2J5dGVjb2RlT2Zmc2V0LCBtX29wZXJhbmQpOwor
ICAgIH0KKyAgICAKKyAgICBpbnQgbV9vcGVyYW5kOworfTsKKworY2xhc3MgTGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGVQYXJzZXI7CisKK2NsYXNzIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZUhvbGRlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29tcHJlc3NlZExhenlPcGVy
YW5kVmFsdWVQcm9maWxlSG9sZGVyKTsKK3B1YmxpYzoKKyAgICBDb21wcmVzc2VkTGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGVIb2xkZXIoKTsKKyAgICB+Q29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQ
cm9maWxlSG9sZGVyKCk7CisgICAgCisgICAgdm9pZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb25z
KCk7CisgICAgCisgICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUqIGFkZChjb25zdCBMYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZUtleSYga2V5KTsKKyAgICAKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNs
YXNzIExhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyOworICAgIE93blB0cjxTZWdtZW50ZWRW
ZWN0b3I8TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUsIDg+ID4gbV9kYXRhOworfTsKKworY2xhc3Mg
TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KExhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyKTsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlcigKKyAgICAgICAgQ29tcHJlc3NlZExhenlPcGVy
YW5kVmFsdWVQcm9maWxlSG9sZGVyJiBob2xkZXIpOworICAgIH5MYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZVBhcnNlcigpOworICAgIAorICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlKiBnZXRJZlBy
ZXNlbnQoCisgICAgICAgIGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5JiBrZXkpIGNv
bnN0OworICAgIAorICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbihjb25zdCBMYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZUtleSYga2V5KSBjb25zdDsKK3ByaXZhdGU6CisgICAgQ29tcHJlc3NlZExh
enlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyJiBtX2hvbGRlcjsKKyAgICBIYXNoTWFwPExhenlP
cGVyYW5kVmFsdWVQcm9maWxlS2V5LCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSo+IG1fbWFwOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoVkFMVUVfUFJPRklM
RVIpCisKKyNlbmRpZiAvLyBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZV9oCisKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWV0aG9kT2ZHZXR0
aW5nQVZhbHVlUHJvZmlsZS5oIgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJD
b2RlQmxvY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK01ldGhvZE9mR2V0dGluZ0FWYWx1ZVBy
b2ZpbGUgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZnJvbUxhenlPcGVyYW5kKAorICAg
IENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSYg
a2V5KQoreworICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgcmVzdWx0OworICAgIHJl
c3VsdC5tX2tpbmQgPSBMYXp5T3BlcmFuZDsKKyAgICByZXN1bHQudS5sYXp5T3BlcmFuZC5jb2Rl
QmxvY2sgPSBjb2RlQmxvY2s7CisgICAgcmVzdWx0LnUubGF6eU9wZXJhbmQuYnl0ZWNvZGVPZmZz
ZXQgPSBrZXkuYnl0ZWNvZGVPZmZzZXQoKTsKKyAgICByZXN1bHQudS5sYXp5T3BlcmFuZC5vcGVy
YW5kID0ga2V5Lm9wZXJhbmQoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitFbmNvZGVkSlNW
YWx1ZSogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6Z2V0U3BlY0ZhaWxCdWNrZXQodW5z
aWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX2tpbmQpIHsKKyAgICBjYXNlIE5v
bmU6CisgICAgICAgIHJldHVybiAwOworICAgICAgICAKKyAgICBjYXNlIFJlYWR5OgorICAgICAg
ICByZXR1cm4gdS5wcm9maWxlLT5zcGVjRmFpbEJ1Y2tldChpbmRleCk7CisgICAgICAgIAorICAg
IGNhc2UgTGF6eU9wZXJhbmQ6CisgICAgICAgIHJldHVybiB1LmxhenlPcGVyYW5kLmNvZGVCbG9j
ay0+bGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVzKCkuYWRkKAorICAgICAgICAgICAgTGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGVLZXkoCisgICAgICAgICAgICAgICAgdS5sYXp5T3BlcmFuZC5ieXRlY29k
ZU9mZnNldCwgdS5sYXp5T3BlcmFuZC5vcGVyYW5kKSktPnNwZWNGYWlsQnVja2V0KGluZGV4KTsK
KyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKERGR19K
SVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9m
aWxlX2gKKyNkZWZpbmUgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZV9oCisKKyNpbmNsdWRl
IDx3dGYvUGxhdGZvcm0uaD4KKworLy8gVGhpcyBpcyBndWFyZGVkIGJ5IEVOQUJMRV9ERkdfSklU
IG9ubHkgYmVjYXVzZSBpdCB1c2VzIHNvbWUgdmFsdWUgcHJvZmlsZXMKKy8vIHRoYXQgYXJlIGN1
cnJlbnRseSBvbmx5IHVzZWQgaWYgdGhlIERGRyBpcyBlbmFibGVkIChpLmUuIHRoZXkgYXJlIG5v
dAorLy8gYXZhaWxhYmxlIGluIHRoZSBwcm9maWxlLW9ubHkgY29uZmlndXJhdGlvbikuIEhvcGVm
dWxseSBzb21lZGF5IGFsbCBvZgorLy8gdGhlc2UgI2lmJ3Mgd2lsbCBkaXNhcHBlYXIuLi4KKyNp
ZiBFTkFCTEUoREZHX0pJVCkKKworI2luY2x1ZGUgIkpTVmFsdWUuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIENvZGVCbG9jazsKK2NsYXNzIExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5
Oworc3RydWN0IFZhbHVlUHJvZmlsZTsKKworY2xhc3MgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJv
ZmlsZSB7CitwdWJsaWM6CisgICAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSgpCisgICAg
ICAgIDogbV9raW5kKE5vbmUpCisgICAgeworICAgIH0KKyAgICAKKyAgICBleHBsaWNpdCBNZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKFZhbHVlUHJvZmlsZSogcHJvZmlsZSkKKyAgICB7Cisg
ICAgICAgIGlmIChwcm9maWxlKSB7CisgICAgICAgICAgICBtX2tpbmQgPSBSZWFkeTsKKyAgICAg
ICAgICAgIHUucHJvZmlsZSA9IHByb2ZpbGU7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
bV9raW5kID0gTm9uZTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIE1ldGhvZE9mR2V0dGluZ0FW
YWx1ZVByb2ZpbGUgZnJvbUxhenlPcGVyYW5kKAorICAgICAgICBDb2RlQmxvY2sqLCBjb25zdCBM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSYpOworICAgIAorICAgIGJvb2wgb3BlcmF0b3IhKCkg
Y29uc3QgeyByZXR1cm4gbV9raW5kID09IE5vbmU7IH0KKyAgICAKKyAgICAvLyBUaGlzIGxvZ2lj
YWxseSBoYXMgYSBwb2ludGVyIHRvIGEgIlRoZXJlIGV4aXN0cyBYIHN1Y2ggdGhhdAorICAgIC8v
IFZhbHVlUHJvZmlsZUJhc2U8WD4iLiBCdXQgc2luY2UgQysrIGRvZXMgbm90IGhhdmUgZXhpc3Rl
bnRpYWwKKyAgICAvLyB0ZW1wbGF0ZXMsIEkgY2Fubm90IHJldHVybiBpdC4gU28gaW5zdGVhZCwg
Zm9yIGFueSBtZXRob2RzIHRoYXQKKyAgICAvLyB1c2VycyBvZiB0aGlzIGNsYXNzIHdvdWxkIGxp
a2UgdG8gY2FsbCwgd2UnbGwganVzdCBoYXZlIHRvIHByb3ZpZGUKKyAgICAvLyBhIG1ldGhvZCBo
ZXJlIHRoYXQgZG9lcyBpdCB0aHJvdWdoIGFuIGluZGlyZWN0aW9uLiBPciB3ZSBjb3VsZAorICAg
IC8vIHBvc3NpYmx5IGp1c3QgbWFrZSBWYWx1ZVByb2ZpbGUgbGVzcyB0ZW1wbGF0ZS1iYXNlZC4g
QnV0IGxhc3QgSQorICAgIC8vIHRyaWVkIHRoYXQsIGl0IGZlbHQgbW9yZSB5dWNreSB0aGFuIHRo
aXMgY2xhc3MuCisgICAgCisgICAgRW5jb2RlZEpTVmFsdWUqIGdldFNwZWNGYWlsQnVja2V0KHVu
c2lnbmVkIGluZGV4KSBjb25zdDsKKyAgICAKK3ByaXZhdGU6CisgICAgZW51bSBLaW5kIHsKKyAg
ICAgICAgTm9uZSwKKyAgICAgICAgUmVhZHksCisgICAgICAgIExhenlPcGVyYW5kCisgICAgfTsK
KyAgICAKKyAgICBLaW5kIG1fa2luZDsKKyAgICB1bmlvbiB7CisgICAgICAgIFZhbHVlUHJvZmls
ZSogcHJvZmlsZTsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29k
ZUJsb2NrOworICAgICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQ7CisgICAgICAgICAg
ICBpbnQgb3BlcmFuZDsKKyAgICAgICAgfSBsYXp5T3BlcmFuZDsKKyAgICB9IHU7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorCisjZW5kaWYg
Ly8gTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuY3BwCShyZXZpc2lvbiAxMDg2MDMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
LSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiVmFsdWVQcm9maWxlLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi0jaWYgRU5BQkxFKFZBTFVF
X1BST0ZJTEVSKQotUHJlZGljdGVkVHlwZSBWYWx1ZVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbigpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvdGFsTnVtYmVyT2ZC
dWNrZXRzOyArK2kpIHsKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZSht
X2J1Y2tldHNbaV0pOwotICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIAotICAgICAgICBtX251bWJlck9mU2FtcGxlc0luUHJlZGljdGlvbisrOwotICAg
ICAgICBtZXJnZVByZWRpY3Rpb24obV9wcmVkaWN0aW9uLCBwcmVkaWN0aW9uRnJvbVZhbHVlKHZh
bHVlKSk7Ci0gICAgICAgIAotICAgICAgICBtX2J1Y2tldHNbaV0gPSBKU1ZhbHVlOjplbmNvZGUo
SlNWYWx1ZSgpKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIG1fcHJlZGljdGlvbjsKLX0KLSNl
bmRpZiAvLyBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCi0KLX0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkocmV2
aXNpb24gMTA4NjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJv
ZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsyOSwxMCBAQAogI2lmbmRlZiBWYWx1ZVByb2Zp
bGVfaAogI2RlZmluZSBWYWx1ZVByb2ZpbGVfaAogCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+
CisKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisKICNpbmNsdWRlICJKU0FycmF5LmgiCiAj
aW5jbHVkZSAiUHJlZGljdGVkVHlwZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgpAQCAtMzYs
MTUgKzQwLDE0IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0jaWYgRU5BQkxFKFZBTFVFX1BST0ZJ
TEVSKQotc3RydWN0IFZhbHVlUHJvZmlsZSB7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxv
Z051bWJlck9mQnVja2V0cyA9IDA7IC8vIDEgYnVja2V0Ci0gICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIG51bWJlck9mQnVja2V0cyA9IDEgPDwgbG9nTnVtYmVyT2ZCdWNrZXRzOwordGVtcGxhdGU8
dW5zaWduZWQgbnVtYmVyT2ZCdWNrZXRzQXJndW1lbnQ+CitzdHJ1Y3QgVmFsdWVQcm9maWxlQmFz
ZSB7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQnVja2V0cyA9IG51bWJlck9m
QnVja2V0c0FyZ3VtZW50OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlNwZWNG
YWlsQnVja2V0cyA9IDE7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGJ1Y2tldEluZGV4TWFz
ayA9IG51bWJlck9mQnVja2V0cyAtIDE7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHRvdGFs
TnVtYmVyT2ZCdWNrZXRzID0gbnVtYmVyT2ZCdWNrZXRzICsgbnVtYmVyT2ZTcGVjRmFpbEJ1Y2tl
dHM7CiAgICAgCi0gICAgVmFsdWVQcm9maWxlKCkKKyAgICBWYWx1ZVByb2ZpbGVCYXNlKCkKICAg
ICAgICAgOiBtX2J5dGVjb2RlT2Zmc2V0KC0xKQogICAgICAgICAsIG1fcHJlZGljdGlvbihQcmVk
aWN0Tm9uZSkKICAgICAgICAgLCBtX251bWJlck9mU2FtcGxlc0luUHJlZGljdGlvbigwKQpAQCAt
NTMsNyArNTYsNyBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlIHsKICAgICAgICAgICAgIG1fYnVja2V0
c1tpXSA9IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogICAgIH0KICAgICAKLSAgICBWYWx1
ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KQorICAgIFZhbHVlUHJvZmlsZUJhc2UoaW50IGJ5
dGVjb2RlT2Zmc2V0KQogICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQp
CiAgICAgICAgICwgbV9wcmVkaWN0aW9uKFByZWRpY3ROb25lKQogICAgICAgICAsIG1fbnVtYmVy
T2ZTYW1wbGVzSW5QcmVkaWN0aW9uKDApCkBAIC0xMDMsNyArMTA2LDYgQEAgc3RydWN0IFZhbHVl
UHJvZmlsZSB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCi0jaWZuZGVmIE5E
RUJVRwogICAgIHZvaWQgZHVtcChGSUxFKiBvdXQpCiAgICAgewogICAgICAgICBmcHJpbnRmKG91
dCwKQEAgLTEyMywxMCArMTI1LDIzIEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGUgewogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQotI2VuZGlmCiAgICAgCiAgICAgLy8gVXBkYXRlcyB0aGUg
cHJlZGljdGlvbiBhbmQgcmV0dXJucyB0aGUgbmV3IG9uZS4KLSAgICBQcmVkaWN0ZWRUeXBlIGNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOworICAgIFByZWRpY3RlZFR5cGUgY29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9uKCkKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0
b3RhbE51bWJlck9mQnVja2V0czsgKytpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKG1fYnVja2V0c1tpXSk7CisgICAgICAgICAgICBpZiAoIXZhbHVlKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBtX251
bWJlck9mU2FtcGxlc0luUHJlZGljdGlvbisrOworICAgICAgICAgICAgbWVyZ2VQcmVkaWN0aW9u
KG1fcHJlZGljdGlvbiwgcHJlZGljdGlvbkZyb21WYWx1ZSh2YWx1ZSkpOworICAgICAgICAgICAg
CisgICAgICAgICAgICBtX2J1Y2tldHNbaV0gPSBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIG1fcHJlZGljdGlvbjsKKyAgICB9
CiAgICAgCiAgICAgaW50IG1fYnl0ZWNvZGVPZmZzZXQ7IC8vIC0xIGZvciBwcm9sb2d1ZQogICAg
IApAQCAtMTM2LDcgKzE1MSwzMiBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlIHsKICAgICBFbmNvZGVk
SlNWYWx1ZSBtX2J1Y2tldHNbdG90YWxOdW1iZXJPZkJ1Y2tldHNdOwogfTsKIAotaW5saW5lIGlu
dCBnZXRWYWx1ZVByb2ZpbGVCeXRlY29kZU9mZnNldChWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmls
ZSkKK3N0cnVjdCBNaW5pbWFsVmFsdWVQcm9maWxlIDogcHVibGljIFZhbHVlUHJvZmlsZUJhc2U8
MD4geworICAgIE1pbmltYWxWYWx1ZVByb2ZpbGUoKTogVmFsdWVQcm9maWxlQmFzZTwwPigpIHsg
fQorICAgIE1pbmltYWxWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KTogVmFsdWVQcm9m
aWxlQmFzZTwwPihieXRlY29kZU9mZnNldCkgeyB9Cit9OworCit0ZW1wbGF0ZTx1bnNpZ25lZCBs
b2dOdW1iZXJPZkJ1Y2tldHNBcmd1bWVudD4KK3N0cnVjdCBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVt
YmVyT2ZCdWNrZXRzIDogcHVibGljIFZhbHVlUHJvZmlsZUJhc2U8MSA8PCBsb2dOdW1iZXJPZkJ1
Y2tldHNBcmd1bWVudD4geworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb2dOdW1iZXJPZkJ1
Y2tldHMgPSBsb2dOdW1iZXJPZkJ1Y2tldHNBcmd1bWVudDsKKyAgICAKKyAgICBWYWx1ZVByb2Zp
bGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzKCkKKyAgICAgICAgOiBWYWx1ZVByb2ZpbGVCYXNlPDEg
PDwgbG9nTnVtYmVyT2ZCdWNrZXRzQXJndW1lbnQ+KCkKKyAgICB7CisgICAgfQorICAgIFZhbHVl
UHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHMoaW50IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAg
ICA6IFZhbHVlUHJvZmlsZUJhc2U8MSA8PCBsb2dOdW1iZXJPZkJ1Y2tldHNBcmd1bWVudD4oYnl0
ZWNvZGVPZmZzZXQpCisgICAgeworICAgIH0KK307CisKK3N0cnVjdCBWYWx1ZVByb2ZpbGUgOiBw
dWJsaWMgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7CisgICAgVmFsdWVQ
cm9maWxlKCk6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0KKyAg
ICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KTogVmFsdWVQcm9maWxlV2l0aExvZ051
bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9Cit9OworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgoraW5saW5lIGludCBnZXRWYWx1ZVByb2ZpbGVCeXRlY29kZU9mZnNldChUKiB2YWx1
ZVByb2ZpbGUpCiB7CiAgICAgcmV0dXJuIHZhbHVlUHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldDsK
IH0KQEAgLTE1OCw5ICsxOTgsMTAgQEAgaW5saW5lIGludCBnZXRSYXJlQ2FzZVByb2ZpbGVCeXRl
Y29kZU9mZgogewogICAgIHJldHVybiByYXJlQ2FzZVByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQ7
CiB9Ci0jZW5kaWYKIAotfQorfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUo
VkFMVUVfUFJPRklMRVIpCiAKLSNlbmRpZgorI2VuZGlmIC8vIFZhbHVlUHJvZmlsZV9oCiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CShyZXZpc2lvbiAxMDg2MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDYgKzEwOCw4IEBAIHByaXZhdGU6
CiAgICAgfTsKICAgICB0ZW1wbGF0ZTxQaGlTdGFja1R5cGUgc3RhY2tUeXBlPgogICAgIHZvaWQg
cHJvY2Vzc1BoaVN0YWNrKCk7CisgICAgCisgICAgdm9pZCBmaXhWYXJpYWJsZUFjY2Vzc1ByZWRp
Y3Rpb25zKCk7CiAgICAgLy8gQWRkIHNwaWxsIGxvY2F0aW9ucyB0byBub2Rlcy4KICAgICB2b2lk
IGFsbG9jYXRlVmlydHVhbFJlZ2lzdGVycygpOwogICAgIApAQCAtMTU1LDYgKzE1NywyMiBAQCBw
cml2YXRlOgogICAgIHsKICAgICAgICAgc2V0RGlyZWN0KG1faW5saW5lU3RhY2tUb3AtPnJlbWFw
T3BlcmFuZChvcGVyYW5kKSwgdmFsdWUpOwogICAgIH0KKyAgICAKKyAgICBOb2RlSW5kZXggaW5q
ZWN0TGF6eU9wZXJhbmRQcmVkaWN0aW9uKE5vZGVJbmRleCBub2RlSW5kZXgpCisgICAgeworICAg
ICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFtub2RlSW5kZXhdOworICAgICAgICBBU1NFUlQobm9k
ZS5vcCA9PSBHZXRMb2NhbCk7CisgICAgICAgIEFTU0VSVChub2RlLmNvZGVPcmlnaW4uYnl0ZWNv
ZGVJbmRleCA9PSBtX2N1cnJlbnRJbmRleCk7CisgICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGlj
dGlvbiA9IAorICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9sYXp5T3BlcmFuZHMucHJl
ZGljdGlvbigKKyAgICAgICAgICAgICAgICBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleShtX2N1
cnJlbnRJbmRleCwgbm9kZS5sb2NhbCgpKSk7CisjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NF
KQorICAgICAgICBkYXRhTG9nKCJMYXp5IG9wZXJhbmQgW0AldSwgYmMjJXUsIHIlZF0gcHJlZGlj
dGlvbjogJXNcbiIsCisgICAgICAgICAgICAgICAgbm9kZUluZGV4LCBtX2N1cnJlbnRJbmRleCwg
bm9kZS5sb2NhbCgpLCBwcmVkaWN0aW9uVG9TdHJpbmcocHJlZGljdGlvbikpOworI2VuZGlmCisg
ICAgICAgIG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QocHJlZGljdGlvbik7Cisg
ICAgICAgIHJldHVybiBub2RlSW5kZXg7CisgICAgfQogCiAgICAgLy8gVXNlZCBpbiBpbXBsZW1l
bnRpbmcgZ2V0L3NldCwgYWJvdmUsIHdoZXJlIHRoZSBvcGVyYW5kIGlzIGEgbG9jYWwgdmFyaWFi
bGUuCiAgICAgTm9kZUluZGV4IGdldExvY2FsKHVuc2lnbmVkIG9wZXJhbmQpCkBAIC0xNzAsNyAr
MTg4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBOb2RlJiBmbHVzaENoaWxkID0gbV9n
cmFwaFtub2RlUHRyLT5jaGlsZDEoKV07CiAgICAgICAgICAgICAgICAgaWYgKGZsdXNoQ2hpbGQu
b3AgPT0gUGhpKSB7CiAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFy
aWFibGVBY2Nlc3NEYXRhID0gZmx1c2hDaGlsZC52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKLSAgICAg
ICAgICAgICAgICAgICAgbm9kZUluZGV4ID0gYWRkVG9HcmFwaChHZXRMb2NhbCwgT3BJbmZvKHZh
cmlhYmxlQWNjZXNzRGF0YSksIG5vZGVQdHItPmNoaWxkMSgpLmluZGV4KCkpOworICAgICAgICAg
ICAgICAgICAgICBub2RlSW5kZXggPSBpbmplY3RMYXp5T3BlcmFuZFByZWRpY3Rpb24oYWRkVG9H
cmFwaChHZXRMb2NhbCwgT3BJbmZvKHZhcmlhYmxlQWNjZXNzRGF0YSksIG5vZGVQdHItPmNoaWxk
MSgpLmluZGV4KCkpKTsKICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlh
Ymxlc0F0VGFpbC5sb2NhbChvcGVyYW5kKSA9IG5vZGVJbmRleDsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG5vZGVJbmRleDsKICAgICAgICAgICAgICAgICB9CkBAIC0xOTAsNyArMjA4LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIE5vZGVJbmRleCBwaGkgPSBhZGRUb0dyYXBo
KFBoaSwgT3BJbmZvKHZhcmlhYmxlQWNjZXNzRGF0YSkpOwogICAgICAgICBtX2xvY2FsUGhpU3Rh
Y2suYXBwZW5kKFBoaVN0YWNrRW50cnkobV9jdXJyZW50QmxvY2ssIHBoaSwgb3BlcmFuZCkpOwot
ICAgICAgICBub2RlSW5kZXggPSBhZGRUb0dyYXBoKEdldExvY2FsLCBPcEluZm8odmFyaWFibGVB
Y2Nlc3NEYXRhKSwgcGhpKTsKKyAgICAgICAgbm9kZUluZGV4ID0gaW5qZWN0TGF6eU9wZXJhbmRQ
cmVkaWN0aW9uKGFkZFRvR3JhcGgoR2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEp
LCBwaGkpKTsKICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5sb2NhbChv
cGVyYW5kKSA9IG5vZGVJbmRleDsKICAgICAgICAgCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT52
YXJpYWJsZXNBdEhlYWQuc2V0TG9jYWxGaXJzdFRpbWUob3BlcmFuZCwgbm9kZUluZGV4KTsKQEAg
LTIxOSw3ICsyMzcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIE5vZGUmIGZsdXNoQ2hp
bGQgPSBtX2dyYXBoW25vZGVQdHItPmNoaWxkMSgpXTsKICAgICAgICAgICAgICAgICBpZiAoZmx1
c2hDaGlsZC5vcCA9PSBQaGkpIHsKICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NE
YXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBmbHVzaENoaWxkLnZhcmlhYmxlQWNjZXNzRGF0YSgp
OwotICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXggPSBhZGRUb0dyYXBoKEdldExvY2FsLCBP
cEluZm8odmFyaWFibGVBY2Nlc3NEYXRhKSwgbm9kZVB0ci0+Y2hpbGQxKCkuaW5kZXgoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCA9IGluamVjdExhenlPcGVyYW5kUHJlZGljdGlv
bihhZGRUb0dyYXBoKEdldExvY2FsLCBPcEluZm8odmFyaWFibGVBY2Nlc3NEYXRhKSwgbm9kZVB0
ci0+Y2hpbGQxKCkuaW5kZXgoKSkpOwogICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9j
ay0+dmFyaWFibGVzQXRUYWlsLmxvY2FsKG9wZXJhbmQpID0gbm9kZUluZGV4OwogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbm9kZUluZGV4OwogICAgICAgICAgICAgICAgIH0KQEAgLTIyOSw3
ICsyNDcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIC8vIFdlJ3JlIGdldHRpbmcgYW4g
YXJndW1lbnQgaW4gdGhlIGZpcnN0IGJhc2ljIGJsb2NrOyBsaW5rCiAgICAgICAgICAgICAgICAg
Ly8gdGhlIEdldExvY2FsIHRvIHRoZSBTZXRBcmd1bWVudC4KICAgICAgICAgICAgICAgICBBU1NF
UlQobm9kZVB0ci0+bG9jYWwoKSA9PSBzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KG9wZXJh
bmQpKTsKLSAgICAgICAgICAgICAgICBub2RlSW5kZXggPSBhZGRUb0dyYXBoKEdldExvY2FsLCBP
cEluZm8obm9kZVB0ci0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpLCBub2RlSW5kZXgpOworICAgICAg
ICAgICAgICAgIG5vZGVJbmRleCA9IGluamVjdExhenlPcGVyYW5kUHJlZGljdGlvbihhZGRUb0dy
YXBoKEdldExvY2FsLCBPcEluZm8obm9kZVB0ci0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpLCBub2Rl
SW5kZXgpKTsKICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWls
LmFyZ3VtZW50KGFyZ3VtZW50KSA9IG5vZGVJbmRleDsKICAgICAgICAgICAgICAgICByZXR1cm4g
bm9kZUluZGV4OwogICAgICAgICAgICAgfQpAQCAtMjQ1LDcgKzI2Myw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgTm9kZUluZGV4IHBoaSA9IGFkZFRvR3JhcGgoUGhpLCBPcEluZm8odmFyaWFibGVB
Y2Nlc3NEYXRhKSk7CiAgICAgICAgIG1fYXJndW1lbnRQaGlTdGFjay5hcHBlbmQoUGhpU3RhY2tF
bnRyeShtX2N1cnJlbnRCbG9jaywgcGhpLCBhcmd1bWVudCkpOwotICAgICAgICBub2RlSW5kZXgg
PSBhZGRUb0dyYXBoKEdldExvY2FsLCBPcEluZm8odmFyaWFibGVBY2Nlc3NEYXRhKSwgcGhpKTsK
KyAgICAgICAgbm9kZUluZGV4ID0gaW5qZWN0TGF6eU9wZXJhbmRQcmVkaWN0aW9uKGFkZFRvR3Jh
cGgoR2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCBwaGkpKTsKICAgICAgICAg
bV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5hcmd1bWVudChhcmd1bWVudCkgPSBub2Rl
SW5kZXg7CiAgICAgICAgIAogICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRIZWFk
LnNldEFyZ3VtZW50Rmlyc3RUaW1lKGFyZ3VtZW50LCBub2RlSW5kZXgpOwpAQCAtODQ4LDYgKzg2
NiwxMSBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG1fcmV0
dXJuVmFsdWU7CiAgICAgICAgIAorICAgICAgICAvLyBQcmVkaWN0aW9ucyBhYm91dCB2YXJpYWJs
ZSB0eXBlcyBjb2xsZWN0ZWQgZnJvbSB0aGUgcHJvZmlsZWQgY29kZSBibG9jaywKKyAgICAgICAg
Ly8gd2hpY2ggYXJlIGJhc2VkIG9uIE9TUiBleGl0IHByb2ZpbGVzIHRoYXQgcGFzdCBERkcgY29t
cGlsYXRpbnMgb2YgdGhpcworICAgICAgICAvLyBjb2RlIGJsb2NrIGhhZCBnYXRoZXJlZC4KKyAg
ICAgICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXIgbV9sYXp5T3BlcmFuZHM7CisgICAg
ICAgIAogICAgICAgICAvLyBEaWQgd2Ugc2VlIGFueSByZXR1cm5zPyBXZSBuZWVkIHRvIGhhbmRs
ZSB0aGUgKHVuY29tbW9uIGJ1dCBuZWNlc3NhcnkpCiAgICAgICAgIC8vIGNhc2Ugd2hlcmUgYSBw
cm9jZWR1cmUgdGhhdCBkb2VzIG5vdCByZXR1cm4gd2FzIGlubGluZWQuCiAgICAgICAgIGJvb2wg
bV9kaWRSZXR1cm47CkBAIC0yMzE1LDYgKzIzMzgsMTQgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
cHJvY2Vzc1BoaVN0YWNrKCkKICAgICB9CiB9CiAKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OmZpeFZh
cmlhYmxlQWNjZXNzUHJlZGljdGlvbnMoKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2dyYXBoLm1fdmFyaWFibGVBY2Nlc3NEYXRhLnNpemUoKTsgKytpKSB7CisgICAgICAgIFZh
cmlhYmxlQWNjZXNzRGF0YSogZGF0YSA9ICZtX2dyYXBoLm1fdmFyaWFibGVBY2Nlc3NEYXRhW2ld
OworICAgICAgICBkYXRhLT5maW5kKCktPnByZWRpY3QoZGF0YS0+bm9uVW5pZmllZFByZWRpY3Rp
b24oKSk7CisgICAgfQorfQorCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2soQmFzaWNC
bG9jayogYmxvY2ssIFZlY3RvcjxCbG9ja0luZGV4PiYgcG9zc2libGVUYXJnZXRzKQogewogICAg
IEFTU0VSVChibG9jay0+ZW5kICE9IE5vTm9kZSk7CkBAIC0yNDE3LDYgKzI0NDgsNyBAQCBCeXRl
Q29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lCiAgICAgLCBtX2V4aXRQcm9maWxl
KHByb2ZpbGVkQmxvY2stPmV4aXRQcm9maWxlKCkpCiAgICAgLCBtX2NhbGxzaXRlQmxvY2tIZWFk
KGNhbGxzaXRlQmxvY2tIZWFkKQogICAgICwgbV9yZXR1cm5WYWx1ZShyZXR1cm5WYWx1ZVZSKQor
ICAgICwgbV9sYXp5T3BlcmFuZHMocHJvZmlsZWRCbG9jay0+bGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGVzKCkpCiAgICAgLCBtX2RpZFJldHVybihmYWxzZSkKICAgICAsIG1fZGlkRWFybHlSZXR1cm4o
ZmFsc2UpCiAgICAgLCBtX2NhbGxlcihieXRlQ29kZVBhcnNlci0+bV9pbmxpbmVTdGFja1RvcCkK
QEAgLTI1ODUsNiArMjYxNyw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlKCkKICNlbmRp
ZgogICAgIHByb2Nlc3NQaGlTdGFjazxBcmd1bWVudFBoaVN0YWNrPigpOwogICAgIAorICAgIGZp
eFZhcmlhYmxlQWNjZXNzUHJlZGljdGlvbnMoKTsKKyAgICAKICAgICBtX2dyYXBoLm1fcHJlc2Vy
dmVkVmFycyA9IG1fcHJlc2VydmVkVmFyczsKICAgICBtX2dyYXBoLm1fbG9jYWxWYXJzID0gbV9u
dW1Mb2NhbHM7CiAgICAgbV9ncmFwaC5tX3BhcmFtZXRlclNsb3RzID0gbV9wYXJhbWV0ZXJTbG90
czsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHJldmlzaW9u
IDEwODYwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjMsNiArNjMsMTEgQEAgaW5saW5lIGJvb2wgY29tcGlsZShDb21waWxl
TW9kZSBjb21waWxlTQogICAgIHBlcmZvcm1DU0UoZGZnKTsKICAgICBwZXJmb3JtVmlydHVhbFJl
Z2lzdGVyQWxsb2NhdGlvbihkZmcpOwogICAgIHBlcmZvcm1DRkEoZGZnKTsKKworI2lmIERGR19F
TkFCTEUoREVCVUdfVkVSQk9TRSkKKyAgICBkYXRhTG9nKCJHcmFwaCBhZnRlciBvcHRpbWl6YXRp
b246XG4iKTsKKyAgICBkZmcuZHVtcCgpOworI2VuZGlmCiAgICAgCiAgICAgSklUQ29tcGlsZXIg
ZGF0YUZsb3dKSVQoZGZnKTsKICAgICBpZiAoY29tcGlsZU1vZGUgPT0gQ29tcGlsZUZ1bmN0aW9u
KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAxMDg2
MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJERkdBc3NlbWJseUhlbHBlcnMuaCIKICNp
bmNsdWRlICJERkdCYXNpY0Jsb2NrLmgiCiAjaW5jbHVkZSAiREZHTm9kZS5oIgorI2luY2x1ZGUg
Ik1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCIKICNpbmNsdWRlICJQcmVkaWN0aW9uVHJh
Y2tlci5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0
b3IuaD4KQEAgLTI3MSw3ICsyNzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIE5vZGUmIG5vZGUgPSBh
dChub2RlSW5kZXgpOwogICAgICAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2sgPSBiYXNlbGlu
ZUNvZGVCbG9ja0Zvcihub2RlLmNvZGVPcmlnaW4pOwogICAgICAgICAKLSAgICAgICAgaWYgKG5v
ZGUub3AgPT0gR2V0TG9jYWwpIHsKKyAgICAgICAgaWYgKG5vZGUuaGFzTG9jYWwoKSkgewogICAg
ICAgICAgICAgaWYgKCFvcGVyYW5kSXNBcmd1bWVudChub2RlLmxvY2FsKCkpKQogICAgICAgICAg
ICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgaW50IGFyZ3VtZW50ID0gb3BlcmFuZFRvQXJn
dW1lbnQobm9kZS5sb2NhbCgpKTsKQEAgLTI4Niw2ICsyODcsMjQgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CiAgICAgCisgICAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZSBtZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKE5vZGVJbmRleCBub2RlSW5kZXgpCisg
ICAgeworICAgICAgICBpZiAobm9kZUluZGV4ID09IE5vTm9kZSkKKyAgICAgICAgICAgIHJldHVy
biBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKCk7CisgICAgICAgIAorICAgICAgICBOb2Rl
JiBub2RlID0gYXQobm9kZUluZGV4KTsKKyAgICAgICAgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2Nr
ID0gYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS5jb2RlT3JpZ2luKTsKKyAgICAgICAgCisgICAg
ICAgIGlmIChub2RlLm9wID09IEdldExvY2FsKSB7CisgICAgICAgICAgICByZXR1cm4gTWV0aG9k
T2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZnJvbUxhenlPcGVyYW5kKAorICAgICAgICAgICAgICAg
IHByb2ZpbGVkQmxvY2ssCisgICAgICAgICAgICAgICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVL
ZXkoCisgICAgICAgICAgICAgICAgICAgIG5vZGUuY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBu
b2RlLmxvY2FsKCkpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIE1ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUodmFsdWVQcm9maWxlRm9yKG5vZGVJbmRleCkpOworICAg
IH0KKyAgICAKICAgICBKU0dsb2JhbERhdGEmIG1fZ2xvYmFsRGF0YTsKICAgICBDb2RlQmxvY2sq
IG1fY29kZUJsb2NrOwogICAgIENvZGVCbG9jayogbV9wcm9maWxlZEJsb2NrOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDEwODYwMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00ODUsNyArNDg1
LDcgQEAgc3RydWN0IE5vZGUgewogICAgIHsKICAgICAgICAgcmV0dXJuIHZhcmlhYmxlQWNjZXNz
RGF0YSgpLT5sb2NhbCgpOwogICAgIH0KLQorICAgIAogICAgIGJvb2wgaGFzSWRlbnRpZmllcigp
CiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdC5jcHAJKHJldmlzaW9uIDEwODYwMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcg
QEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1PU1JFeGl0OjpPU1JFeGl0
KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgVmFsdWVQcm9maWxl
KiB2YWx1ZVByb2ZpbGUsIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrLCBTcGVjdWxhdGl2ZUpJ
VCogaml0LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4KQorT1NSRXhpdDo6T1NSRXhpdChFeGl0S2lu
ZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE1ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGUgdmFsdWVQcm9maWxlLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBjaGVjaywgU3BlY3Vs
YXRpdmVKSVQqIGppdCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCkKICAgICA6IG1fanNWYWx1ZVNv
dXJjZShqc1ZhbHVlU291cmNlKQogICAgICwgbV92YWx1ZVByb2ZpbGUodmFsdWVQcm9maWxlKQog
ICAgICwgbV9jaGVjayhjaGVjaykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdC5oCShyZXZpc2lvbiAxMDg2MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkRG
R0dQUkluZm8uaCIKICNpbmNsdWRlICJERkdPcGVyYW5kcy5oIgogI2luY2x1ZGUgIk1hY3JvQXNz
ZW1ibGVyLmgiCisjaW5jbHVkZSAiTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oIgogI2lu
Y2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgogI2luY2x1ZGUgIlZhbHVlUmVjb3ZlcnkuaCIKICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CkBAIC04MiwxMiArODMsMTIgQEAgcHJpdmF0ZToKIC8vIFRoaXMg
c3RydWN0dXJlIGRlc2NyaWJlcyBob3cgdG8gZXhpdCB0aGUgc3BlY3VsYXRpdmUgcGF0aCBieQog
Ly8gZ29pbmcgaW50byBiYXNlbGluZSBjb2RlLgogc3RydWN0IE9TUkV4aXQgewotICAgIE9TUkV4
aXQoRXhpdEtpbmQsIEpTVmFsdWVTb3VyY2UsIFZhbHVlUHJvZmlsZSosIE1hY3JvQXNzZW1ibGVy
OjpKdW1wLCBTcGVjdWxhdGl2ZUpJVCosIHVuc2lnbmVkIHJlY292ZXJ5SW5kZXggPSAwKTsKKyAg
ICBPU1JFeGl0KEV4aXRLaW5kLCBKU1ZhbHVlU291cmNlLCBNZXRob2RPZkdldHRpbmdBVmFsdWVQ
cm9maWxlLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCwgU3BlY3VsYXRpdmVKSVQqLCB1bnNpZ25lZCBy
ZWNvdmVyeUluZGV4ID0gMCk7CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG1fY29k
ZTsKICAgICAKICAgICBKU1ZhbHVlU291cmNlIG1fanNWYWx1ZVNvdXJjZTsKLSAgICBWYWx1ZVBy
b2ZpbGUqIG1fdmFsdWVQcm9maWxlOworICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUg
bV92YWx1ZVByb2ZpbGU7CiAgICAgCiAgICAgQ29ycmVjdGFibGVKdW1wUG9pbnQgbV9jaGVjazsK
ICAgICBOb2RlSW5kZXggbV9ub2RlSW5kZXg7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAkocmV2aXNpb24gMTA4
NjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82
NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDggQEAgdm9pZCBPU1JFeGl0Q29tcGls
ZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgIC8vIDMpIFJlZmluZSBzb21lIHZhbHVlIHByb2Zp
bGUsIGlmIGFwcHJvcHJpYXRlLgogICAgIAogICAgIGlmICghIWV4aXQubV9qc1ZhbHVlU291cmNl
ICYmICEhZXhpdC5tX3ZhbHVlUHJvZmlsZSkgeworICAgICAgICBFbmNvZGVkSlNWYWx1ZSogYnVj
a2V0ID0gZXhpdC5tX3ZhbHVlUHJvZmlsZS5nZXRTcGVjRmFpbEJ1Y2tldCgwKTsKKyAgICAgICAg
CiAgICAgICAgIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5pc0FkZHJlc3MoKSkgewogICAgICAg
ICAgICAgLy8gU2F2ZSBhIHJlZ2lzdGVyIHNvIHdlIGNhbiB1c2UgaXQuCiAgICAgICAgICAgICBH
UFJSZWcgc2NyYXRjaCA9IEdQUkluZm86OnJlZ1QwOwpAQCAtOTEsMTYgKzkzLDE2IEBAIHZvaWQg
T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAgICAgICAgIEVuY29kZWRK
U1ZhbHVlKiBzY3JhdGNoQnVmZmVyID0gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihtX2pp
dC5nbG9iYWxEYXRhKCktPnNjcmF0Y2hCdWZmZXJGb3JTaXplKHNpemVvZih1aW50MzJfdCkpKTsK
ICAgICAgICAgICAgIG1faml0LnN0b3JlMzIoc2NyYXRjaCwgc2NyYXRjaEJ1ZmZlcik7CiAgICAg
ICAgICAgICBtX2ppdC5sb2FkMzIoZXhpdC5tX2pzVmFsdWVTb3VyY2UuYXNBZGRyZXNzKE9CSkVD
VF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHNjcmF0Y2gp
OwotICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihzY3JhdGNoLCAmYml0d2lzZV9jYXN0PEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IqPihleGl0Lm1fdmFsdWVQcm9maWxlLT5zcGVjRmFpbEJ1Y2tldCgw
KSktPmFzQml0cy50YWcpOworICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihzY3JhdGNoLCAmYml0
d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihidWNrZXQpLT5hc0JpdHMudGFnKTsK
ICAgICAgICAgICAgIG1faml0LmxvYWQzMihleGl0Lm1fanNWYWx1ZVNvdXJjZS5hc0FkZHJlc3Mo
T0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSks
IHNjcmF0Y2gpOwotICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihzY3JhdGNoLCAmYml0d2lzZV9j
YXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihleGl0Lm1fdmFsdWVQcm9maWxlLT5zcGVjRmFp
bEJ1Y2tldCgwKSktPmFzQml0cy5wYXlsb2FkKTsKKyAgICAgICAgICAgIG1faml0LnN0b3JlMzIo
c2NyYXRjaCwgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oYnVja2V0KS0+
YXNCaXRzLnBheWxvYWQpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKHNjcmF0Y2hCdWZmZXIs
IHNjcmF0Y2gpOwogICAgICAgICB9IGVsc2UgaWYgKGV4aXQubV9qc1ZhbHVlU291cmNlLmhhc0tu
b3duVGFnKCkpIHsKLSAgICAgICAgICAgIG1faml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpJ
bW0zMihleGl0Lm1fanNWYWx1ZVNvdXJjZS50YWcoKSksICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZh
bHVlRGVzY3JpcHRvcio+KGV4aXQubV92YWx1ZVByb2ZpbGUtPnNwZWNGYWlsQnVja2V0KDApKS0+
YXNCaXRzLnRhZyk7Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZTMyKGV4aXQubV9qc1ZhbHVlU291
cmNlLnBheWxvYWRHUFIoKSwgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4o
ZXhpdC5tX3ZhbHVlUHJvZmlsZS0+c3BlY0ZhaWxCdWNrZXQoMCkpLT5hc0JpdHMucGF5bG9hZCk7
CisgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6SW1tMzIoZXhpdC5t
X2pzVmFsdWVTb3VyY2UudGFnKCkpLCAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IqPihidWNrZXQpLT5hc0JpdHMudGFnKTsKKyAgICAgICAgICAgIG1faml0LnN0b3JlMzIoZXhp
dC5tX2pzVmFsdWVTb3VyY2UucGF5bG9hZEdQUigpLCAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1
ZURlc2NyaXB0b3IqPihidWNrZXQpLT5hc0JpdHMucGF5bG9hZCk7CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZTMyKGV4aXQubV9qc1ZhbHVlU291cmNlLnRhZ0dQUigp
LCAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihleGl0Lm1fdmFsdWVQcm9m
aWxlLT5zcGVjRmFpbEJ1Y2tldCgwKSktPmFzQml0cy50YWcpOwotICAgICAgICAgICAgbV9qaXQu
c3RvcmUzMihleGl0Lm1fanNWYWx1ZVNvdXJjZS5wYXlsb2FkR1BSKCksICZiaXR3aXNlX2Nhc3Q8
RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KGV4aXQubV92YWx1ZVByb2ZpbGUtPnNwZWNGYWlsQnVj
a2V0KDApKS0+YXNCaXRzLnBheWxvYWQpOworICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihleGl0
Lm1fanNWYWx1ZVNvdXJjZS50YWdHUFIoKSwgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNj
cmlwdG9yKj4oYnVja2V0KS0+YXNCaXRzLnRhZyk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTMy
KGV4aXQubV9qc1ZhbHVlU291cmNlLnBheWxvYWRHUFIoKSwgJmJpdHdpc2VfY2FzdDxFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yKj4oYnVja2V0KS0+YXNCaXRzLnBheWxvYWQpOwogICAgICAgICB9CiAg
ICAgfQogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29t
cGlsZXI2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXI2NC5jcHAJKHJldmlzaW9uIDEwODYwMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
OCwxNCArODgsMjAgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAog
ICAgIC8vIDMpIFJlZmluZSBzb21lIHZhbHVlIHByb2ZpbGUsIGlmIGFwcHJvcHJpYXRlLgogICAg
IAogICAgIGlmICghIWV4aXQubV9qc1ZhbHVlU291cmNlICYmICEhZXhpdC5tX3ZhbHVlUHJvZmls
ZSkgeworICAgICAgICBFbmNvZGVkSlNWYWx1ZSogYnVja2V0ID0gZXhpdC5tX3ZhbHVlUHJvZmls
ZS5nZXRTcGVjRmFpbEJ1Y2tldCgwKTsKKyAgICAgICAgCisjaWYgREZHX0VOQUJMRShWRVJCT1NF
X1NQRUNVTEFUSU9OX0ZBSUxVUkUpCisgICAgICAgIGRhdGFMb2coIiAgKGhhdmUgZXhpdCBwcm9m
aWxlLCBidWNrZXQgJXApICAiLCBidWNrZXQpOworI2VuZGlmCisgICAgICAgICAgICAKICAgICAg
ICAgaWYgKGV4aXQubV9qc1ZhbHVlU291cmNlLmlzQWRkcmVzcygpKSB7CiAgICAgICAgICAgICAv
LyBXZSBjYW4ndCBiZSBzdXJlIHRoYXQgd2UgaGF2ZSBhIHNwYXJlIHJlZ2lzdGVyLiBTbyB1c2Ug
dGhlIHRhZ1R5cGVOdW1iZXJSZWdpc3RlciwKICAgICAgICAgICAgIC8vIHNpbmNlIHdlIGtub3cg
aG93IHRvIHJlc3RvcmUgaXQuCiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEFzc2VtYmx5SGVs
cGVyczo6QWRkcmVzcyhleGl0Lm1fanNWYWx1ZVNvdXJjZS5hc0FkZHJlc3MoKSksIEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZVB0cihHUFJJ
bmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIGV4aXQubV92YWx1ZVByb2ZpbGUtPnNwZWNGYWls
QnVja2V0KDApKTsKKyAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKEdQUkluZm86OnRhZ1R5cGVO
dW1iZXJSZWdpc3RlciwgYnVja2V0KTsKICAgICAgICAgICAgIG1faml0Lm1vdmUoQXNzZW1ibHlI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oVGFnVHlwZU51bWJlcikp
LCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwogICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIG1faml0LnN0b3JlUHRyKGV4aXQubV9qc1ZhbHVlU291cmNlLmdwcigpLCBleGl0Lm1f
dmFsdWVQcm9maWxlLT5zcGVjRmFpbEJ1Y2tldCgwKSk7CisgICAgICAgICAgICBtX2ppdC5zdG9y
ZVB0cihleGl0Lm1fanNWYWx1ZVNvdXJjZS5ncHIoKSwgYnVja2V0KTsKICAgICB9CiAKICAgICAv
LyA0KSBGaWd1cmUgb3V0IGhvdyBtYW55IHNjcmF0Y2ggc2xvdHMgd2UnbGwgbmVlZC4gV2UgbmVl
ZCBvbmUgZm9yIGV2ZXJ5IEdQUi9GUFIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UGhhc2UuY3BwCShyZXZpc2lvbiAxMDg2MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTIgKzM0LDEyIEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIHZvaWQgUGhhc2U6OmJlZ2luUGhhc2UoKQogewogICAg
IGRhdGFMb2coIkJlZ2lubmluZyBERkcgcGhhc2UgJXMuXG4iLCBtX25hbWUpOworICAgIGRhdGFM
b2coIkdyYXBoIGJlZm9yZSAlczpcbiIsIG1fbmFtZSk7CisgICAgbV9ncmFwaC5kdW1wKG1fY29k
ZUJsb2NrKTsKIH0KIAogdm9pZCBQaGFzZTo6ZW5kUGhhc2UoKQogewotICAgIGRhdGFMb2coIkdy
YXBoIGFmdGVyICVzOlxuIiwgbV9uYW1lKTsKLSAgICBtX2dyYXBoLmR1bXAobV9jb2RlQmxvY2sp
OwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxMDg2MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3Myw3
ICsxMDczLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKAogICAg
ICAgICBtX3ZhcmlhYmxlc1tpXSA9IFZhbHVlU291cmNlKFZhbHVlSW5SZWdpc3RlckZpbGUpOwog
ICAgIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9qaXQuY29kZUJsb2NrKCktPm51bVBhcmFt
ZXRlcnMoKTsgKytpKSB7Ci0gICAgICAgIE5vZGUmIG5vZGUgPSBhdChtX2ppdC5ncmFwaCgpLm1f
YXJndW1lbnRzW2ldKTsKKyAgICAgICAgTm9kZUluZGV4IG5vZGVJbmRleCA9IG1faml0LmdyYXBo
KCkubV9hcmd1bWVudHNbaV07CisgICAgICAgIE5vZGUmIG5vZGUgPSBhdChub2RlSW5kZXgpOwog
ICAgICAgICBBU1NFUlQobm9kZS5vcCA9PSBTZXRBcmd1bWVudCk7CiAgICAgICAgIGlmICghbm9k
ZS5zaG91bGRHZW5lcmF0ZSgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYXJndW1lbnQgaXMgZGVh
ZC4gV2UgZG9uJ3QgZG8gYW55IGNoZWNrcyBmb3Igc3VjaCBhcmd1bWVudHMuCkBAIC0xMDgzLDE0
MSArMTA4NCwxNDQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKAog
ICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUudmFy
aWFibGVBY2Nlc3NEYXRhKCk7CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0
ZXIgPSB2YXJpYWJsZUFjY2Vzc0RhdGEtPmxvY2FsKCk7CiAgICAgICAgIFByZWRpY3RlZFR5cGUg
cHJlZGljdGVkVHlwZSA9IHZhcmlhYmxlQWNjZXNzRGF0YS0+cHJlZGljdGlvbigpOworCisgICAg
ICAgIEpTVmFsdWVTb3VyY2UgdmFsdWVTb3VyY2UgPSBKU1ZhbHVlU291cmNlKEpJVENvbXBpbGVy
OjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlcikpOworICAgICAgICAKICNpZiBVU0UoSlNWQUxV
RTY0KQogICAgICAgICBpZiAoaXNJbnQzMlByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpCi0gICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05v
ZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6QmVsb3csIEpJVENvbXBpbGVyOjph
ZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
cikpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwg
bm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCBKSVRDb21w
aWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVy
UmVnaXN0ZXIpKTsKICAgICAgICAgZWxzZSBpZiAoaXNBcnJheVByZWRpY3Rpb24ocHJlZGljdGVk
VHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAg
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIp
LCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUs
IEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05v
ZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOworICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2pp
dC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJ
bmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxs
OjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0Fy
cmF5OjpzX2luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNCeXRlQXJyYXlQcmVkaWN0aW9u
KHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsK
ICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVh
bFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVu
Y291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rl
cikpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJl
Z3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNl
dCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQnl0ZUFycmF5OjpzX2luZm8p
KSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBu
b2RlSW5kZXgsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRl
bXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOworICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQ
dHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1w
LmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIoJkpTQnl0ZUFycmF5OjpzX2luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNC
b29sZWFuUHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9y
YXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjph
ZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgbV9q
aXQueG9yUHRyKFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZhbHNlKSks
IHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwg
SlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVy
OjpOb25aZXJvLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
fjEpKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJj
ZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJv
LCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4ofjEpKSkpOwog
ICAgICAgICB9IGVsc2UgaWYgKGlzSW50OEFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkg
ewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAu
Z3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1
ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25a
ZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+aW50OEFycmF5RGVzY3JpcHRv
cigpLm1fY2xhc3NJbmZvKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBl
LCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1i
bGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRl
eCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+aW50OEFycmF5RGVz
Y3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICB9IGVsc2UgaWYgKGlzSW50MTZBcnJh
eVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0
ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVz
c0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNo
VGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFn
TWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxl
LCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xh
c3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9i
YWxEYXRhKCktPmludDE2QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CisgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1f
aml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQ
UkluZm86OnRhZ01hc2tSZWdpc3RlcikpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhC
YWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0Nl
bGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9q
aXQuZ2xvYmFsRGF0YSgpLT5pbnQxNkFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwog
ICAgICAgICB9IGVsc2UgaWYgKGlzSW50MzJBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkp
IHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9q
aXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1w
LmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFs
dWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9u
WmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmludDMyQXJyYXlEZXNjcmlw
dG9yKCkubV9jbGFzc0luZm8pKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5
cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwor
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUlu
ZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQzMkFycmF5
RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICB9IGVsc2UgaWYgKGlzVWludDhB
cnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFy
eSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRk
cmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJh
bmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6
dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRh
YmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6
Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5n
bG9iYWxEYXRhKCktPnVpbnQ4QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CisgICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgs
IG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCks
IEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBK
U0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50OEFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkp
OwogICAgICAgICB9IGVsc2UgaWYgKGlzVWludDhDbGFtcGVkQXJyYXlQcmVkaWN0aW9uKHByZWRp
Y3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAg
ICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lz
dGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRh
YmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwot
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwg
Tm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50OENs
YW1wZWRBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKKyAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNo
VGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFn
TWFza1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZh
bHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJ
bmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxE
YXRhKCktPnVpbnQ4Q2xhbXBlZEFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwogICAg
ICAgICB9IGVsc2UgaWYgKGlzVWludDE2QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7
CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0
LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5n
cHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVl
UmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblpl
cm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2pp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MTZBcnJheURlc2NyaXB0
b3IoKS5tX2NsYXNzSW5mbykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Cisg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5k
ZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQxNkFycmF5
RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICB9IGVsc2UgaWYgKGlzVWludDMy
QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3Jh
cnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFk
ZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJy
YW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86
OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50
YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6
OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQu
Z2xvYmFsRGF0YSgpLT51aW50MzJBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKKyAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRl
eCwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIo
KSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCks
IEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQzMkFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZv
KSkpOwogICAgICAgICB9IGVsc2UgaWYgKGlzRmxvYXQzMkFycmF5UHJlZGljdGlvbihwcmVkaWN0
ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAg
ICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rl
ciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJs
ZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1i
bGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5v
Tm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQzMkFy
cmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hUZXN0UHRy
KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVn
aXN0ZXIpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3Vy
Y2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZz
ZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+
ZmxvYXQzMkFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICB9IGVsc2Ug
aWYgKGlzRmxvYXQ2NEFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAg
ICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJ
VENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9O
b2RlLCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdw
cigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRy
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5n
cHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQ2NEFycmF5RGVzY3JpcHRvcigpLm1fY2xh
c3NJbmZvKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNv
dXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25a
ZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQu
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQ2NEFycmF5RGVzY3JpcHRv
cigpLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICB9CiAjZWxzZQogICAgICAgICBpZiAoaXNJbnQz
MlByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIp
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CisgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaDMy
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVn
aXN0ZXIpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CiAgICAgICAgIGVsc2Ug
aWYgKGlzQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJU
ZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxl
cjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5i
cmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpDZWxsVGFnKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRU
eXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkp
OwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1
YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhV
bmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBK
U0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
JkpTQXJyYXk6OnNfaW5mbykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpj
bGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5
OjpzX2luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNCeXRlQXJyYXlQcmVkaWN0aW9uKHBy
ZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAg
ICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3Rl
ciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJs
ZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwor
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUlu
ZGV4LCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCks
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogICAgICAgICAgICAgbV9qaXQubG9h
ZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkp
OwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3Mo
KSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgp
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQnl0ZUFycmF5OjpzX2luZm8pKSk7
CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2Rl
SW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNCeXRlQXJyYXk6OnNfaW5mbykpKTsKICAg
ICAgICAgfSBlbHNlIGlmIChpc0Jvb2xlYW5QcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKQotICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9O
b2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVy
Ojp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5U
YWcpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNl
LCBub2RlSW5kZXgsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgSklU
Q29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
Qm9vbGVhblRhZykpKTsKICAgICAgICAgZWxzZSBpZiAoaXNJbnQ4QXJyYXlQcmVkaWN0aW9uKHBy
ZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAg
ICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3Rl
ciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJs
ZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwor
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUlu
ZGV4LCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCks
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogICAgICAgICAgICAgbV9qaXQubG9h
ZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkp
OwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3Mo
KSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgp
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQ4
QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3By
KCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmludDhBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5m
bykpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0ludDE2QXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rl
ZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAg
ICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRl
bXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNW
YWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOworICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBt
X2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJ
VENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9O
b2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQxNkFycmF5
RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBK
U0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQxNkFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkp
OwogICAgICAgICB9IGVsc2UgaWYgKGlzSW50MzJBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlw
ZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAg
bV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5n
cHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVl
UmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
dGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CisgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0
LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29t
cGlsZXI6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUs
IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmludDMyQXJyYXlEZXNj
cmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJh
ZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2Vs
bDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC5nbG9iYWxEYXRhKCktPmludDMyQXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAg
ICAgICAgIH0gZWxzZSBpZiAoaXNVaW50OEFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkg
ewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2pp
dC5sb2FkMzIoSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigp
KTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdz
KCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1w
LmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKKyAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJh
bmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6Q2VsbFRhZykpKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxl
cjo6cGF5bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDhBcnJheURlc2NyaXB0
b3IoKS5tX2NsYXNzSW5mbykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpj
bGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmds
b2JhbERhdGEoKS0+dWludDhBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAg
ICAgfSBlbHNlIGlmIChpc1VpbnQ4Q2xhbXBlZEFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBl
KSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBt
X2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdw
cigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVS
ZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0
ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKKyAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQu
YnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21w
aWxlcjo6cGF5bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwg
bV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDhDbGFtcGVkQXJy
YXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCks
IEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQ4Q2xhbXBlZEFycmF5RGVzY3JpcHRvcigpLm1fY2xh
c3NJbmZvKSkpOwogICAgICAgICB9IGVsc2UgaWYgKGlzVWludDE2QXJyYXlQcmVkaWN0aW9uKHBy
ZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAg
ICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3Rl
ciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJs
ZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwor
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUlu
ZGV4LCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCks
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogICAgICAgICAgICAgbV9qaXQubG9h
ZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkp
OwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3Mo
KSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgp
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50
MTZBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRy
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5n
cHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDE2QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFz
c0luZm8pKSk7CiAgICAgICAgIH0gIGVsc2UgaWYgKGlzVWludDMyQXJyYXlQcmVkaWN0aW9uKHBy
ZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAg
ICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3Rl
ciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJs
ZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwor
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUlu
ZGV4LCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCks
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogICAgICAgICAgICAgbV9qaXQubG9h
ZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkp
OwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3Mo
KSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgp
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50
MzJBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRy
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5n
cHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDMyQXJyYXlEZXNjcmlwdG9yKCkubV9jbGFz
c0luZm8pKSk7CiAgICAgICAgIH0gIGVsc2UgaWYgKGlzRmxvYXQzMkFycmF5UHJlZGljdGlvbihw
cmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAg
ICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0
ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFi
bGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsK
KyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJ
bmRleCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigp
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKICAgICAgICAgICAgIG1faml0Lmxv
YWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigp
KTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdz
KCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQo
KSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+Zmxv
YXQzMkFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOworICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQ
dHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1w
LmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDMyQXJyYXlEZXNjcmlwdG9yKCkubV9j
bGFzc0luZm8pKSk7CiAgICAgICAgIH0gICBlbHNlIGlmIChpc0Zsb2F0NjRBcnJheVByZWRpY3Rp
b24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMp
OwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJl
Z2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291
bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcp
KSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBu
b2RlSW5kZXgsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5n
cHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgICAgICBtX2pp
dC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5n
cHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVl
UmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zm
c2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCkt
PmZsb2F0NjRBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKKyAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJh
bmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
dGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQ2NEFycmF5RGVzY3JpcHRvcigp
Lm1fY2xhc3NJbmZvKSkpOwogICAgICAgICB9IAogI2VuZGlmCiAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTA4
NjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzU5LDcgKzE3NTksNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAg
ICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX2pp
dC5jb2RlQmxvY2soKS0+YXBwZW5kT1NSRXhpdChPU1JFeGl0KGtpbmQsIGpzVmFsdWVTb3VyY2Us
IG1faml0LmdyYXBoKCkudmFsdWVQcm9maWxlRm9yKG5vZGVJbmRleCksIGp1bXBUb0ZhaWwsIHRo
aXMpKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCktPmFwcGVuZE9TUkV4aXQoT1NSRXhpdChr
aW5kLCBqc1ZhbHVlU291cmNlLCBtX2ppdC5ncmFwaCgpLm1ldGhvZE9mR2V0dGluZ0FWYWx1ZVBy
b2ZpbGVGb3Iobm9kZUluZGV4KSwganVtcFRvRmFpbCwgdGhpcykpOwogICAgIH0KICAgICB2b2lk
IHNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291
cmNlLCBOb2RlVXNlIG5vZGVVc2UsIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwpCiAg
ICAgewpAQCAtMTc4Miw3ICsxNzgyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCFtX2NvbXBp
bGVPa2F5KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2ppdC5jb2RlQmxvY2soKS0+
YXBwZW5kU3BlY3VsYXRpb25SZWNvdmVyeShyZWNvdmVyeSk7Ci0gICAgICAgIG1faml0LmNvZGVC
bG9jaygpLT5hcHBlbmRPU1JFeGl0KE9TUkV4aXQoa2luZCwganNWYWx1ZVNvdXJjZSwgbV9qaXQu
Z3JhcGgoKS52YWx1ZVByb2ZpbGVGb3Iobm9kZUluZGV4KSwganVtcFRvRmFpbCwgdGhpcywgbV9q
aXQuY29kZUJsb2NrKCktPm51bWJlck9mU3BlY3VsYXRpb25SZWNvdmVyaWVzKCkpKTsKKyAgICAg
ICAgbV9qaXQuY29kZUJsb2NrKCktPmFwcGVuZE9TUkV4aXQoT1NSRXhpdChraW5kLCBqc1ZhbHVl
U291cmNlLCBtX2ppdC5ncmFwaCgpLm1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3Iobm9k
ZUluZGV4KSwganVtcFRvRmFpbCwgdGhpcywgbV9qaXQuY29kZUJsb2NrKCktPm51bWJlck9mU3Bl
Y3VsYXRpb25SZWNvdmVyaWVzKCkpKTsKICAgICB9CiAgICAgdm9pZCBzcGVjdWxhdGlvbkNoZWNr
KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgTm9kZVVzZSBub2Rl
VXNlLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wVG9GYWlsLCBjb25zdCBTcGVjdWxhdGlvblJl
Y292ZXJ5JiByZWNvdmVyeSkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgJKHJldmlzaW9uIDEwODYwMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTcwLDYgKzcwLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1lcmdlUHJl
ZGljdGlvbihmaW5kKCktPm1fcHJlZGljdGlvbiwgcHJlZGljdGlvbik7CiAgICAgfQogICAgIAor
ICAgIFByZWRpY3RlZFR5cGUgbm9uVW5pZmllZFByZWRpY3Rpb24oKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fcHJlZGljdGlvbjsKKyAgICB9CisgICAgCiAgICAgUHJlZGljdGVkVHlwZSBwcmVk
aWN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiBmaW5kKCktPm1fcHJlZGljdGlvbjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128411</attachid>
            <date>2012-02-22 23:42:59 -0800</date>
            <delta_ts>2012-02-23 14:32:40 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>lazyoperands_patch_5.diff</filename>
            <type>text/plain</type>
            <size>89252</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA4NjA0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0NCBA
QAorMjAxMi0wMi0yMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBPU1IgZXhpdCB2YWx1ZSBwcm9maWxpbmcgc2hvdWxkIGhhdmUgZ3JhY2VmdWwgaGFuZGxp
bmcgb2YgbG9jYWwgdmFyaWFibGVzIGFuZCBhcmd1bWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MzEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBQcmV2aW91c2x5LCBpZiB3ZSBPU1Ig
ZXhpdGVkIGJlY2F1c2UgYSBwcmVkaWN0aW9uIGluIGEgbG9jYWwgd2FzIHdyb25nLCB3ZSdkCisg
ICAgICAgIG9ubHkgcmVhbGl6ZSB3aGF0IHRoZSB0cnVlIHR5cGUgb2YgdGhlIGxvY2FsIHdhcyBp
ZiB0aGUgcmVndWxhciB2YWx1ZSBwcm9maWxpbmcKKyAgICAgICAga2lja2VkIGluIGFuZCB0b2xk
IHVzLiBVbmxlc3MgdGhlIGxvY2FsIHdhcyBibG9jay1sb2NhbGx5IGNvcHkgcHJvcGFnYXRlZCwg
aW4KKyAgICAgICAgd2hpY2ggY2FzZSB3ZSdkIGtub3cgZnJvbSBhbiBPU1IgZXhpdCBwcm9maWxl
LgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIE9TUiBleGl0IHByb2ZpbGluZyB0
byBhbGwgbG9jYWxzIGFuZCBhcmd1bWVudHMuIE5vdywgaWYgd2UgT1NSCisgICAgICAgIGV4aXQg
YmVjYXVzZSBvZiBhIG1pc3ByZWRpY3RlZCBsb2NhbCBvciBhcmd1bWVudCB0eXBlLCB3ZSdsbCBr
bm93IHdoYXQgdGhlIHR5cGUgb2YKKyAgICAgICAgdGhlIGxvY2FsIG9yIGFyZ3VtZW50IHNob3Vs
ZCBiZSBpbW1lZGlhdGVseSB1cG9uIGV4aXRpbmcuCisgICAgICAgIAorICAgICAgICBUaGUgd2F5
IHRoYXQgbG9jYWwgdmFyaWFibGUgT1NSIGV4aXQgcHJvZmlsaW5nIHdvcmtzIGlzIHRoYXQgd2Ug
bm93IGhhdmUgYSBsYXppbHkKKyAgICAgICAgYWRkZWQgc2V0IG9mIE9TUi1leGl0LW9ubHkgdmFs
dWUgcHJvZmlsZXMgZm9yIGV4aXQgc2l0ZXMgdGhhdCBhcmUgQmFkVHlwZSBhbmQgdGhhdAorICAg
ICAgICBjaXRlZCBhIEdldExvY2FsIGFzIHRoZWlyIHZhbHVlIHNvdXJjZS4gVGhlIHZhbHVlIHBy
b2ZpbGVzIGFyZSBvbmx5IGFkZGVkIGlmIHRoZQorICAgICAgICBPU1IgZXhpdCBpcyB0YWtlbiwg
YW5kIGFyZSBrZXllZCBieSBDb2RlQmxvY2ssIGJ5dGVjb2RlIGluZGV4IG9mIHRoZSBHZXRMb2Nh
bCwgYW5kCisgICAgICAgIG9wZXJhbmQuIFRoZSBsb29rLXVwIGlzIHBlcmZvcm1lZCBieSBxdWVy
eWluZyB0aGUKKyAgICAgICAgQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVy
IGluIHRoZSBDb2RlQmxvY2ssIHVzaW5nIGEga2V5IHRoYXQgY29udGFpbnMKKyAgICAgICAgdGhl
IGJ5dGVjb2RlIGluZGV4IGFuZCB0aGUgb3BlcmFuZC4gQmVjYXVzZSB0aGUgdmFsdWUgcHJvZmls
ZXMgYXJlIGFkZGVkIGF0IHJhbmRvbQorICAgICAgICB0aW1lcywgdGhleSBhcmUgbm90IHNvcnRl
ZDsgaW5zdGVhZCB0aGV5IGFyZSBqdXN0IHN0b3JlZCBpbiBhbiBhcmJpdHJhcmlseS1vcmRlcmVk
CisgICAgICAgIFNlZ21lbnRlZFZlY3Rvci4gTG9vay11cHMgYXJlIG1hZGUgZmFzdCBieSAiZGVj
b21wcmVzc2luZyI6IHRoZSBERkc6OkJ5dGVDb2RlUGFyc2VyCisgICAgICAgIGNyZWF0ZXMgYSBM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlciwgd2hpY2ggdHVybnMgdGhlCisgICAgICAgIENv
bXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcidzIGNvbnRlbnRzIGludG8gYSBI
YXNoTWFwIGZvciB0aGUgZHVyYXRpb24KKyAgICAgICAgb2YgREZHIHBhcnNpbmcuCisgICAgICAg
IAorICAgICAgICBQcmV2aW91c2x5LCBPU1IgZXhpdHMgaGFkIGEgcG9pbnRlciB0byB0aGUgVmFs
dWVQcm9maWxlIHRoYXQgaGFkIHRoZSBzcGVjRmFpbEJ1Y2tldAorICAgICAgICBpbnRvIHdoaWNo
IHZhbHVlcyBvYnNlcnZlZCBkdXJpbmcgT1NSIGV4aXQgd291bGQgYmUgcGxhY2VkLiBOb3cgaXQg
dXNlcyBhIGxhenkKKyAgICAgICAgdGh1bmsgZm9yIGEgVmFsdWVQcm9maWxlLiBJIGNhbGwgdGhp
cyB0aGUgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS4gSXQgbWF5CisgICAgICAgIGVpdGhl
ciBjb250YWluIGEgVmFsdWVQcm9maWxlIGluc2lkZSBpdCAod2hpY2ggd29ya3MgZm9yIHByZXZp
b3VzIHVzZXMgb2YgT1NSIGV4aXQKKyAgICAgICAgcHJvZmlsaW5nKSBvciBpdCBtYXkganVzdCBo
YXZlIGtub3dsZWRnZSBvZiBob3cgdG8gZ28gYWJvdXQgY3JlYXRpbmcgdGhlCisgICAgICAgIExh
enlPcGVyYW5kVmFsdWVQcm9maWxlIGluIHRoZSBjYXNlIHRoYXQgdGhlIE9TUiBleGl0IGlzIGFj
dHVhbGx5IHRha2VuLiBUaGlzCisgICAgICAgIGVuc3VyZXMgdGhhdCB3ZSBuZXZlciBoYXZlIHRv
IGNyZWF0ZSBOdW1PcGVyYW5kcypOdW1CeXRlY29kZUluZGljZXMqTnVtQ29kZUJsb2NrcworICAg
ICAgICB2YWx1ZSBwcm9maWxpbmcgYnVja2V0cyB1bmxlc3Mgd2UgYWN0dWFsbHkgZGlkIE9TUiBl
eGl0IG9uIGV2ZXJ5IHNpbmdsZSBvcGVyYW5kLAorICAgICAgICBpbiBldmVyeSBzaW5nbGUgaW5z
dHJ1Y3Rpb24sIGluIGVhY2ggY29kZSBibG9jayAodGhhdCdzIHByb2JhYmx5IHVubGlrZWx5KS4K
KyAgICAgICAgCisgICAgICAgIFRoaXMgYXBwZWFycyB0byBiZSBuZXV0cmFsIG9uIHRoZSBtYWpv
ciBiZW5jaG1hcmtzLCBidXQgaXMgYSBkb3VibGUtZGlnaXQgc3BlZWQtdXAKKyAgICAgICAgb24g
Y29kZSBkZWxpYmVyYXRlbHkgd3JpdHRlbiB0byBoYXZlIGRhdGEgZmxvdyB0aGF0IHNwYW5zIGJh
c2ljIGJsb2NrcyBhbmQgd2hlcmUKKyAgICAgICAgdGhlIGNvZGUgZXhoaWJpdHMgcG9zdC1vcHRp
bWl6YXRpb24gcG9seW1vcnBoaXNtIGluIGEgbG9jYWwgdmFyaWFibGUuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMp
OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoQ29kZUJsb2NrKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsYXp5T3BlcmFuZFZhbHVlUHJvZmlsZXMpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0MpOgorICAgICAgICAoSlNDOjpDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGVIb2xkZXI6OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcik6CisgICAg
ICAgIChKU0M6OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6fkNvbXBy
ZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcik6CisgICAgICAgIChKU0M6OkNvbXBy
ZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0
aW9ucyk6CisgICAgICAgIChKU0M6OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhv
bGRlcjo6YWRkKToKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXI6
OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyKToKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGVQYXJzZXI6On5MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlcik6Cisg
ICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyOjpnZXRJZlByZXNlbnQp
OgorICAgICAgICAoSlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlcjo6cHJlZGljdGlv
bik6CisgICAgICAgICogYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaDogQWRkZWQu
CisgICAgICAgIChKU0MpOgorICAgICAgICAoTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkpOgor
ICAgICAgICAoSlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleTo6TGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVLZXkpOgorICAgICAgICAoSlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleTo6
b3BlcmF0b3IhKToKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXk6Om9w
ZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleTo6aGFz
aCk6CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5OjpieXRlY29kZU9m
ZnNldCk6CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5OjpvcGVyYW5k
KToKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXk6OmlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXlI
YXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXlIYXNo
OjplcXVhbCk6CisgICAgICAgIChMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleUhhc2gpOgorICAg
ICAgICAoV1RGKToKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGU6OkxhenlP
cGVyYW5kVmFsdWVQcm9maWxlKToKKyAgICAgICAgKExhenlPcGVyYW5kVmFsdWVQcm9maWxlKToK
KyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGU6OmtleSk6CisgICAgICAgIChD
b21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXIpOgorICAgICAgICAoTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL01ldGhvZE9mR2V0
dGluZ0FWYWx1ZVByb2ZpbGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChK
U0M6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmZyb21MYXp5T3BlcmFuZCk6CisgICAg
ICAgIChKU0M6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmdldFNwZWNGYWlsQnVja2V0
KToKKyAgICAgICAgKiBieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmg6IEFk
ZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGUpOgorICAgICAgICAoSlNDOjpNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjpNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6TWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZTo6b3BlcmF0b3IhKToKKyAgICAgICAgKiBieXRlY29kZS9WYWx1ZVByb2ZpbGUu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJ5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKFZhbHVlUHJvZmlsZUJhc2UpOgorICAgICAgICAoSlNDOjpWYWx1
ZVByb2ZpbGVCYXNlOjpWYWx1ZVByb2ZpbGVCYXNlKToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9m
aWxlQmFzZTo6ZHVtcCk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OmNvbXB1dGVV
cGRhdGVkUHJlZGljdGlvbik6CisgICAgICAgIChKU0M6Ok1pbmltYWxWYWx1ZVByb2ZpbGU6Ok1p
bmltYWxWYWx1ZVByb2ZpbGUpOgorICAgICAgICAoVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9m
QnVja2V0cyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tl
dHM6OlZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHMpOgorICAgICAgICAoSlNDOjpW
YWx1ZVByb2ZpbGU6OlZhbHVlUHJvZmlsZSk6CisgICAgICAgIChKU0M6OmdldFZhbHVlUHJvZmls
ZUJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Z2V0UmFyZUNhc2VQcm9maWxlQnl0ZWNv
ZGVPZmZzZXQpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAg
IChCeXRlQ29kZVBhcnNlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Omlu
amVjdExhenlPcGVyYW5kUHJlZGljdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmdldExvY2FsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0
QXJndW1lbnQpOgorICAgICAgICAoSW5saW5lU3RhY2tFbnRyeSk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmZpeFZhcmlhYmxlQWNjZXNzUHJlZGljdGlvbnMpOgorICAgICAg
ICAoREZHKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tF
bnRyeTo6SW5saW5lU3RhY2tFbnRyeSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlKToKKyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6
REZHOjpHcmFwaDo6dmFsdWVQcm9maWxlRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6
bWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcik6CisgICAgICAgIChHcmFwaCk6CisgICAg
ICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdP
U1JFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0OjpPU1JFeGl0KToKKyAgICAg
ICAgKiBkZmcvREZHT1NSRXhpdC5oOgorICAgICAgICAoT1NSRXhpdCk6CisgICAgICAgICogZGZn
L0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0
Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVy
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQp
OgorICAgICAgICAqIGRmZy9ERkdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGhhc2U6
OmJlZ2luUGhhc2UpOgorICAgICAgICAoSlNDOjpERkc6OlBoYXNlOjplbmRQaGFzZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRp
b25DaGVjayk6CisgICAgICAgICogZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oOgorICAgICAg
ICAoSlNDOjpERkc6OlZhcmlhYmxlQWNjZXNzRGF0YTo6bm9uVW5pZmllZFByZWRpY3Rpb24pOgor
ICAgICAgICAoVmFyaWFibGVBY2Nlc3NEYXRhKToKKwogMjAxMi0wMi0yMiAgR2F2aW4gQmFycmFj
bG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IFtbRGVm
aW5lT3duUHJvcGVydHldXSBmb3IgdGhlIGFyZ3VtZW50cyBvYmplY3QKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwODYwMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTUgKzQyLDE2
IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYnl0ZWNvZGUvREZHRXhpdFByb2Zp
bGUuY3BwCiAgICAgYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKICAgICBieXRlY29kZS9KdW1w
VGFibGUuY3BwCisgICAgYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCiAgICAg
Ynl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtJbmZvLmNwcAogICAgIGJ5dGVjb2RlL01ldGhvZENhbGxM
aW5rU3RhdHVzLmNwcAorICAgIGJ5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUu
Y3BwCiAgICAgYnl0ZWNvZGUvT3Bjb2RlLmNwcAogICAgIGJ5dGVjb2RlL1BvbHltb3JwaGljUHV0
QnlJZExpc3QuY3BwCiAgICAgYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5jcHAKICAgICBieXRlY29k
ZS9QdXRCeUlkU3RhdHVzLmNwcAogICAgIGJ5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAKICAgICBi
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKLSAgICBieXRlY29kZS9WYWx1ZVByb2ZpbGUu
Y3BwCiAKICAgICBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCiAgICAgYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDg2MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMTA0LDExICsxMDQsMTUg
QEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0p1bXBUYWJsZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9K
dW1wVGFibGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExp
bmtJbmZvLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZh
bHVlUHJvZmlsZS5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlu
ZUluZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5r
SW5mby5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlu
a0luZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5r
U3RhdHVzLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxM
aW5rU3RhdHVzLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL09wY29kZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9P
cGNvZGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljUHV0
QnlJZExpc3QuY3BwIFwKQEAgLTEyNCw3ICsxMjgsNiBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oIFwKLQlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1Rhcmdl
dC5wcmkJKHJldmlzaW9uIDEwODYwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQu
cHJpCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxNSArNTUsMTYgQEAgU09VUkNFUyArPSBcCiAgICAg
Ynl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwIFwKICAgICBieXRlY29kZS9HZXRCeUlkU3RhdHVz
LmNwcCBcCiAgICAgYnl0ZWNvZGUvSnVtcFRhYmxlLmNwcCBcCisgICAgYnl0ZWNvZGUvTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGUuY3BwIFwKICAgICBieXRlY29kZS9NZXRob2RDYWxsTGlua0luZm8u
Y3BwIFwKICAgICBieXRlY29kZS9NZXRob2RDYWxsTGlua1N0YXR1cy5jcHAgXAorICAgIGJ5dGVj
b2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwIFwKICAgICBieXRlY29kZS9PcGNv
ZGUuY3BwIFwKICAgICBieXRlY29kZS9Qb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmNwcCBcCiAgICAg
Ynl0ZWNvZGUvUHJlZGljdGVkVHlwZS5jcHAgXAogICAgIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
Y3BwIFwKICAgICBieXRlY29kZS9TYW1wbGluZ1Rvb2wuY3BwIFwKICAgICBieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5jcHAgXAotICAgIGJ5dGVjb2RlL1ZhbHVlUHJvZmlsZS5jcHAgXAogICAg
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgXAogICAgIGJ5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwIFwKICAgICBoZWFwL0NvcGllZFNwYWNlLmNwcCBcCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
agkocmV2aXNpb24gMTA4NjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTE0NzgsNiArMTQ3OCwyMiBAQAogCQkJTmFtZT0iYnl0ZWNvZGUiCiAJCQk+CiAJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVcTWV0aG9kT2ZHZXR0aW5n
QVZhbHVlUHJvZmlsZS5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXC4uXGJ5dGVjb2RlXE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCIK
KwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0
ZWNvZGVcTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxieXRlY29kZVxMYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRo
PSIuLlwuLlxieXRlY29kZVxHZXRCeUlkU3RhdHVzLmgiCiAJCQkJPgogCQkJPC9GaWxlPgpAQCAt
MTYxNCwxMCArMTYzMCw2IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXC4uXGJ5dGVjb2RlXFZhbHVlUHJvZmlsZS5jcHAiCi0JCQkJPgotCQkJPC9G
aWxlPgotCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGJ5dGVjb2RlXFZhbHVlUHJv
ZmlsZS5oIgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAxMDg2MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYg
KzEzOSwxMCBAQAogCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0S2luZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RkM4QzExNEUxQjVG
QjAwRDUyQUUwIC8qIFB1dEtpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjlGQzhEMDE0RTYxMkQ4MDBENTJBRTAgLyogRGF0YUxvZy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlGQzhDRDE0
RTYxMkQ1MDBENTJBRTAgLyogRGF0YUxvZy5jcHAgKi87IH07CiAJCTBGOUZDOEQxMTRFNjEyREEw
MEQ1MkFFMCAvKiBEYXRhTG9nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjlGQzhDRTE0RTYxMkQ1MDBENTJBRTAgLyogRGF0YUxvZy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQjU0Njc3MTRGNTlC
NUMwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNTQ2NzYxNEY1OUFEMTAwMkMyOTg5IC8q
IExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZCNTQ2NzkxNEY1QzQ2QjAwMkMyOTg5IC8qIExhenlPcGVy
YW5kVmFsdWVQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGQjU0Njc4MTRGNUM0NjgwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZS5jcHAgKi87IH07CisJCTBGQjU0NjdCMTRGNUM3RTEwMDJDMjk4OSAvKiBNZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkI1NDY3QTE0RjVDN0Q0MDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGQjU0NjdEMTRGNUNGRDYwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQ
cm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQjU0NjdDMTRGNUNGRDMwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
LmNwcCAqLzsgfTsKIAkJMEZCQzBBRTcxNDk2QzdDNDAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkMw
QUU0MTQ5NkM3QzEwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5jcHAgKi87IH07CiAJCTBGQkMw
QUU4MTQ5NkM3QzcwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCQzBBRTUxNDk2QzdDMTAwRDRGQkREIC8q
IERGR0V4aXRQcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEZCRDdFNjkxNDQ3OTk5NjAwNDgxMzE1IC8qIENvZGVPcmlnaW4uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkQ3RTY3MTQ0Nzk5
OEYwMDQ4MTMxNSAvKiBDb2RlT3JpZ2luLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE2OSw3ICsxNzMsNiBAQAogCQkwRkQ4MkU1NzE0MURBRjEw
MDAxNzlDOTQgLyogREZHT1NSRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGRDgyRTUzMTQxREFFREUwMDE3OUM5NCAvKiBERkdPU1JFbnRyeS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRDgy
RTg1MTQxRjNGRTMwMDE3OUM5NCAvKiBCb3VuZHNDaGVja2VkUG9pbnRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEODJFODIxNDFGM0ZDOTAwMTc5
Qzk0IC8qIEJvdW5kc0NoZWNrZWRQb2ludGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZEODJFODYxNDFGM0ZGMTAwMTc5Qzk0IC8qIFByZWRp
Y3RlZFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZEODJFODQxNDFGM0ZEQTAwMTc5Qzk0IC8qIFByZWRpY3RlZFR5cGUuY3BwICovOyB9Owot
CQkwRkQ4MkU5MDE0MjA3QTVGMDAxNzlDOTQgLyogVmFsdWVQcm9maWxlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgyRThFMTQyMDdBNTEwMDE3
OUM5NCAvKiBWYWx1ZVByb2ZpbGUuY3BwICovOyB9OwogCQkwRkQ4MkY0QjE0MjgwNkExMDAxNzlD
OTQgLyogQml0VmVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkQ4MkY0OTE0MjgwNjkyMDAxNzlDOTQgLyogQml0VmVjdG9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZFMjI4RUQxNDM2QUIy
NzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZFMjI4RUUxNDM2
QUIyQzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZFMjI4RUExNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3Bw
ICovOyB9OwpAQCAtMTAwMSw2ICsxMDA0LDEwIEBACiAJCTBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFF
MCAvKiBQdXRLaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1dEtpbmQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5RkM4Q0QxNEU2MTJENTAwRDUyQUUw
IC8qIERhdGFMb2cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0
YUxvZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUZDOENFMTRFNjEyRDUw
MEQ1MkFFMCAvKiBEYXRhTG9nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERh
dGFMb2cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCNTQ2NzYxNEY1OUFEMTAw
MkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGQjU0Njc4MTRGNUM0NjgwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQjU0
NjdBMTRGNUM3RDQwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCNTQ2N0MxNEY1Q0ZEMzAwMkMy
OTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQkMwQUU0MTQ5NkM3QzEwMEQ0RkJERCAvKiBE
RkdFeGl0UHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
RkdFeGl0UHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQkMwQUU1
MTQ5NkM3QzEwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBERkdFeGl0UHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRkJEN0U2NzE0NDc5OThGMDA0ODEzMTUgLyogQ29kZU9yaWdpbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlT3JpZ2luLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xMDMzLDcgKzEwNDAsNiBAQAogCQkwRkQ4MkU1MzE0MURBRURFMDAxNzlDOTQg
LyogREZHT1NSRW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT1NS
RW50cnkuaDsgcGF0aCA9IGRmZy9ERkdPU1JFbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRkQ4MkU4MjE0MUYzRkM5MDAxNzlDOTQgLyogQm91bmRzQ2hlY2tlZFBvaW50ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQm91bmRzQ2hlY2tlZFBvaW50ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEODJFODQxNDFGM0ZEQTAwMTc5Qzk0
IC8qIFByZWRpY3RlZFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUHJlZGljdGVkVHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGRDgy
RThFMTQyMDdBNTEwMDE3OUM5NCAvKiBWYWx1ZVByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVmFsdWVQcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEZEODJGNDkxNDI4MDY5MjAwMTc5Qzk0IC8qIEJpdFZlY3Rvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCaXRWZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZFMjI4RUExNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT3B0aW9ucy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wdGlvbnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3NzYsNiArMjc4MiwxMCBAQAogCQk5NjlBMDc4RjBFRDFE
M0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCTBGQjU0NjdDMTRGNUNGRDMwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlLmNwcCAqLywKKwkJCQkwRkI1NDY3QTE0RjVDN0Q0MDAyQzI5ODkgLyog
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oICovLAorCQkJCTBGQjU0Njc4MTRGNUM0Njgw
MDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAgKi8sCisJCQkJMEZCNTQ2NzYx
NEY1OUFEMTAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmggKi8sCiAJCQkJMEYy
MUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLywKIAkJCQkw
RjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLywKIAkJCQkw
RjlGQzhCRjE0RTFCNUZCMDBENTJBRTAgLyogUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5jcHAgKi8s
CkBAIC0yODE5LDcgKzI4MjksNiBAQAogCQkJCTE0MjlEODg0MEVEMjFDM0QwMEI4OTYxOSAvKiBT
YW1wbGluZ1Rvb2wuaCAqLywKIAkJCQlCQ0NGMEQwQjBFRjBCOEE1MDA0MTNDOEYgLyogU3RydWN0
dXJlU3R1YkluZm8uY3BwICovLAogCQkJCUJDQ0YwRDA3MEVGMEFBQjkwMDQxM0M4RiAvKiBTdHJ1
Y3R1cmVTdHViSW5mby5oICovLAotCQkJCTBGRDgyRThFMTQyMDdBNTEwMDE3OUM5NCAvKiBWYWx1
ZVByb2ZpbGUuY3BwICovLAogCQkJCTBGOTYzQjM2MTNGQzZGREUwMDAyRDlCMiAvKiBWYWx1ZVBy
b2ZpbGUuaCAqLywKIAkJCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVy
eS5oICovLAogCQkJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0ZXIu
aCAqLywKQEAgLTMzOTAsNiArMzM5OSw4IEBACiAJCQkJMEZGRkM5NUUxNEVGOTBCNzAwQzcyNTMy
IC8qIERGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkZGQzk2MDE0RUY5MEJEMDBDNzI1MzIgLyogREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBo
YXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDk3MjA5MTE0RUI4MzE1MDBGRUIxQjcgLyogUGFz
c1dlYWsuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQjU0Njc3MTRGNTlCNUMwMDJDMjk4OSAvKiBM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZCNTQ2N0IxNEY1
QzdFMTAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpAQCAtMzk2Miw3ICszOTczLDYgQEAKIAkJCQkyNjg0QjJERjE0RDRBOUIyMDA3MkMwQjYg
LyogVVJMU2VnbWVudHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlERUUxMDdFQzdFNzAw
NjUwNDQ2IC8qIFVTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFFRjc5QUEwQ0U5N0JB
NjAwODhENTAwIC8qIFVURjguY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEZEODJFOTAxNDIwN0E1
RjAwMTc5Qzk0IC8qIFZhbHVlUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkM4MTUx
NjE0MDUxMUI1MDBDRkE2MDMgLyogVlRhYmxlU3BlY3RydW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZDODE1MEIxNDA0M0MwRTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJODY4QkZBMTcxMTdDRjE5OTAwQjkwOEIxIC8qIFdURlN0cmluZy5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTM5OTgsNiArNDAwOCw4IEBACiAJCQkJMEZGRkM5NUIxNEVG
OTBBRDAwQzcyNTMyIC8qIERGR1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRkZDOTVE
MTRFRjkwQjMwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkZGQzk1RjE0RUY5MEJCMDBDNzI1MzIgLyogREZHVmlydHVhbFJl
Z2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGQjU0Njc5MTRG
NUM0NkIwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkwRkI1NDY3RDE0RjVDRkQ2MDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZhbHVl
UHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxMDg2MDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk0
Niw2ICsxOTQ2LDggQEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcgog
ICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmlubGluZUNhbGxGcmFtZS5jYWxsZWUpOwogICAg
ICAgICB9CiAgICAgfQorICAgIAorICAgIG1fbGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVzLmNvbXB1
dGVVcGRhdGVkUHJlZGljdGlvbnMoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJ
TEVSKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
cmV2aXNpb24gMTA4NjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3QuaCIKICNpbmNsdWRlICJKdW1wVGFibGUuaCIKICNpbmNsdWRlICJMTEludENhbGxM
aW5rSW5mby5oIgorI2luY2x1ZGUgIkxhenlPcGVyYW5kVmFsdWVQcm9maWxlLmgiCiAjaW5jbHVk
ZSAiTGluZUluZm8uaCIKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUgIlByZWRpY3Rpb25U
cmFja2VyLmgiCkBAIC03MjcsNiArNzI4LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9
CiAKICAgICAgICAgREZHOjpFeGl0UHJvZmlsZSYgZXhpdFByb2ZpbGUoKSB7IHJldHVybiBtX2V4
aXRQcm9maWxlOyB9CisgICAgICAgIAorICAgICAgICBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVIb2xkZXImIGxhenlPcGVyYW5kVmFsdWVQcm9maWxlcygpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBtX2xhenlPcGVyYW5kVmFsdWVQcm9maWxlczsKKyAgICAgICAgfQog
I2VuZGlmCiAKICAgICAgICAgLy8gQ29uc3RhbnQgUG9vbApAQCAtMTE4Nyw2ICsxMTkzLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIFRoaXMgaXMgcmVsZXZhbnQgdG8gbm9uLURGRyBj
b2RlIGJsb2NrcyB0aGF0IHNlcnZlIGFzIHRoZSBwcm9maWxlZCBjb2RlIGJsb2NrCiAgICAgICAg
IC8vIGZvciBERkcgY29kZSBibG9ja3MuCiAgICAgICAgIERGRzo6RXhpdFByb2ZpbGUgbV9leGl0
UHJvZmlsZTsKKyAgICAgICAgQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVy
IG1fbGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVzOwogI2VuZGlmCiAjaWYgRU5BQkxFKFZBTFVFX1BS
T0ZJTEVSKQogICAgICAgICBWZWN0b3I8VmFsdWVQcm9maWxlPiBtX2FyZ3VtZW50VmFsdWVQcm9m
aWxlczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZh
bHVlUHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZS5oIgorCisjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorCituYW1lc3Bh
Y2UgSlNDIHsKKworQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjpDb21w
cmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXIoKSB7IH0KK0NvbXByZXNzZWRMYXp5
T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6fkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZUhvbGRlcigpIHsgfQorCit2b2lkIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmls
ZUhvbGRlcjo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9ucygpCit7CisgICAgaWYgKCFtX2RhdGEp
CisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9k
YXRhLT5zaXplKCk7ICsraSkKKyAgICAgICAgbV9kYXRhLT5hdChpKS5jb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24oKTsKK30KKworTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUqIENvbXByZXNzZWRMYXp5
T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6YWRkKAorICAgIGNvbnN0IExhenlPcGVyYW5kVmFs
dWVQcm9maWxlS2V5JiBrZXkpCit7CisgICAgaWYgKCFtX2RhdGEpCisgICAgICAgIG1fZGF0YSA9
IGFkb3B0UHRyKG5ldyBTZWdtZW50ZWRWZWN0b3I8TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUsIDg+
KCkpOworICAgIGVsc2UgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9kYXRh
LT5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKG1fZGF0YS0+YXQoaSkua2V5KCkgPT0g
a2V5KQorICAgICAgICAgICAgICAgIHJldHVybiAmbV9kYXRhLT5hdChpKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICAKKyAgICBtX2RhdGEtPmFwcGVuZChMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZShr
ZXkpKTsKKyAgICByZXR1cm4gJm1fZGF0YS0+bGFzdCgpOworfQorCitMYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZVBhcnNlcjo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXIoCisgICAgQ29tcHJl
c3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyJiBob2xkZXIpCisgICAgOiBtX2hvbGRl
cihob2xkZXIpCit7CisgICAgaWYgKCFtX2hvbGRlci5tX2RhdGEpCisgICAgICAgIHJldHVybjsK
KyAgICAKKyAgICBTZWdtZW50ZWRWZWN0b3I8TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUsIDg+JiBk
YXRhID0gKm1faG9sZGVyLm1fZGF0YTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0
YS5zaXplKCk7ICsraSkKKyAgICAgICAgbV9tYXAuYWRkKGRhdGFbaV0ua2V5KCksICZkYXRhW2ld
KTsKK30KKworTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXI6On5MYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZVBhcnNlcigpIHsgfQorCitMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSogTGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGVQYXJzZXI6OmdldElmUHJlc2VudCgKKyAgICBjb25zdCBMYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZUtleSYga2V5KSBjb25zdAoreworICAgIEhhc2hNYXA8TGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGVLZXksIExhenlPcGVyYW5kVmFsdWVQcm9maWxlKj46OmNvbnN0X2l0ZXJhdG9y
IGl0ZXIgPQorICAgICAgICBtX21hcC5maW5kKGtleSk7CisgICAgCisgICAgaWYgKGl0ZXIgPT0g
bV9tYXAuZW5kKCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBpdGVyLT5z
ZWNvbmQ7Cit9CisKK1ByZWRpY3RlZFR5cGUgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXI6
OnByZWRpY3Rpb24oCisgICAgY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGtleSkg
Y29uc3QKK3sKKyAgICBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGdldElmUHJl
c2VudChrZXkpOworICAgIGlmICghcHJvZmlsZSkKKyAgICAgICAgcmV0dXJuIFByZWRpY3ROb25l
OworICAgIAorICAgIHJldHVybiBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoVkFMVUVfUFJPRklM
RVIpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZh
bHVlUHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVfaAorI2RlZmluZSBMYXp5
T3BlcmFuZFZhbHVlUHJvZmlsZV9oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lm
IEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKworI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5j
bHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CisKK2NsYXNzIExhenlP
cGVyYW5kVmFsdWVQcm9maWxlS2V5IHsKK3B1YmxpYzoKKyAgICBMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZUtleSgpCisgICAgICAgIDogbV9ieXRlY29kZU9mZnNldCgwKSAvLyAwID0gZW1wdHkgdmFs
dWUKKyAgICAgICAgLCBtX29wZXJhbmQoLTEpIC8vIG5vdCBhIHZhbGlkIG9wZXJhbmQgaW5kZXgg
aW4gb3VyIGN1cnJlbnQgc2NoZW1lCisgICAgeworICAgIH0KKyAgICAKKyAgICBMYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZUtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAg
IDogbV9ieXRlY29kZU9mZnNldCgxKSAvLyAxID0gZGVsZXRlZCB2YWx1ZQorICAgICAgICAsIG1f
b3BlcmFuZCgtMSkgLy8gbm90IGEgdmFsaWQgb3BlcmFuZCBpbmRleCBpbiBvdXIgY3VycmVudCBz
Y2hlbWUKKyAgICB7CisgICAgfQorICAgIAorICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5
KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBpbnQgb3BlcmFuZCkKKyAgICAgICAgOiBtX2J5dGVj
b2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICAsIG1fb3BlcmFuZChvcGVyYW5kKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG9wZXJhbmQgIT0gLTEpOworICAgIH0KKyAgICAKKyAgICBi
b29sIG9wZXJhdG9yISgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9vcGVyYW5kID09
IC0xOworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGVLZXkmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYnl0
ZWNvZGVPZmZzZXQgPT0gb3RoZXIubV9ieXRlY29kZU9mZnNldAorICAgICAgICAgICAgJiYgbV9v
cGVyYW5kID09IG90aGVyLm1fb3BlcmFuZDsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgaGFz
aCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gV1RGOjppbnRIYXNoKG1fYnl0ZWNvZGVP
ZmZzZXQpICsgbV9vcGVyYW5kOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoISEqdGhpcyk7CisgICAgICAgIHJl
dHVybiBtX2J5dGVjb2RlT2Zmc2V0OworICAgIH0KKyAgICBpbnQgb3BlcmFuZCgpIGNvbnN0Cisg
ICAgeworICAgICAgICBBU1NFUlQoISEqdGhpcyk7CisgICAgICAgIHJldHVybiBtX29wZXJhbmQ7
CisgICAgfQorICAgIAorICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3BlcmFuZCA9PSAtMSAmJiBtX2J5dGVjb2RlT2Zmc2V0
OworICAgIH0KK3ByaXZhdGU6IAorICAgIHVuc2lnbmVkIG1fYnl0ZWNvZGVPZmZzZXQ7CisgICAg
aW50IG1fb3BlcmFuZDsKK307CisKK3N0cnVjdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleUhh
c2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9m
aWxlS2V5JiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVh
bCgKKyAgICAgICAgY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGEsCisgICAgICAg
IGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0K
KyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRy
dWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKK3RlbXBsYXRlPD4gc3RydWN0IERl
ZmF1bHRIYXNoPEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXk+IHsKKyAgICB0eXBlZGVm
IEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXlIYXNoIEhhc2g7Cit9OworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hU
cmFpdHM8SlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleT4gOiBwdWJsaWMgR2VuZXJpY0hh
c2hUcmFpdHM8SlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleT4geworICAgIHN0YXRpYyB2
b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5
JiBzbG90KSB7IG5ldyAoTm90TnVsbCwgJnNsb3QpIEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGVLZXkoSGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRl
ZFZhbHVlKGNvbnN0IEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIHZhbHVlKSB7IHJl
dHVybiB2YWx1ZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXVEYKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZSA6IHB1YmxpYyBNaW5pbWFsVmFsdWVQcm9maWxlIHsKKyAgICBMYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZSgpCisgICAgICAgIDogTWluaW1hbFZhbHVlUHJvZmlsZSgpCisgICAgICAgICwgbV9v
cGVyYW5kKC0xKQorICAgIHsKKyAgICB9CisgICAgCisgICAgZXhwbGljaXQgTGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGUoY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGtleSkKKyAgICAg
ICAgOiBNaW5pbWFsVmFsdWVQcm9maWxlKGtleS5ieXRlY29kZU9mZnNldCgpKQorICAgICAgICAs
IG1fb3BlcmFuZChrZXkub3BlcmFuZCgpKQorICAgIHsKKyAgICB9CisgICAgCisgICAgTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVLZXkga2V5KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleShtX2J5dGVjb2RlT2Zmc2V0LCBtX29wZXJhbmQpOwor
ICAgIH0KKyAgICAKKyAgICBpbnQgbV9vcGVyYW5kOworfTsKKworY2xhc3MgTGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGVQYXJzZXI7CisKK2NsYXNzIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZUhvbGRlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29tcHJlc3NlZExhenlPcGVy
YW5kVmFsdWVQcm9maWxlSG9sZGVyKTsKK3B1YmxpYzoKKyAgICBDb21wcmVzc2VkTGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGVIb2xkZXIoKTsKKyAgICB+Q29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQ
cm9maWxlSG9sZGVyKCk7CisgICAgCisgICAgdm9pZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb25z
KCk7CisgICAgCisgICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUqIGFkZChjb25zdCBMYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZUtleSYga2V5KTsKKyAgICAKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNs
YXNzIExhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyOworICAgIE93blB0cjxTZWdtZW50ZWRW
ZWN0b3I8TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUsIDg+ID4gbV9kYXRhOworfTsKKworY2xhc3Mg
TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KExhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyKTsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlcigKKyAgICAgICAgQ29tcHJlc3NlZExhenlPcGVy
YW5kVmFsdWVQcm9maWxlSG9sZGVyJiBob2xkZXIpOworICAgIH5MYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZVBhcnNlcigpOworICAgIAorICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlKiBnZXRJZlBy
ZXNlbnQoCisgICAgICAgIGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5JiBrZXkpIGNv
bnN0OworICAgIAorICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbihjb25zdCBMYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZUtleSYga2V5KSBjb25zdDsKK3ByaXZhdGU6CisgICAgQ29tcHJlc3NlZExh
enlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyJiBtX2hvbGRlcjsKKyAgICBIYXNoTWFwPExhenlP
cGVyYW5kVmFsdWVQcm9maWxlS2V5LCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSo+IG1fbWFwOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoVkFMVUVfUFJPRklM
RVIpCisKKyNlbmRpZiAvLyBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZV9oCisKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWV0aG9kT2ZHZXR0
aW5nQVZhbHVlUHJvZmlsZS5oIgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJD
b2RlQmxvY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK01ldGhvZE9mR2V0dGluZ0FWYWx1ZVBy
b2ZpbGUgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZnJvbUxhenlPcGVyYW5kKAorICAg
IENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSYg
a2V5KQoreworICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgcmVzdWx0OworICAgIHJl
c3VsdC5tX2tpbmQgPSBMYXp5T3BlcmFuZDsKKyAgICByZXN1bHQudS5sYXp5T3BlcmFuZC5jb2Rl
QmxvY2sgPSBjb2RlQmxvY2s7CisgICAgcmVzdWx0LnUubGF6eU9wZXJhbmQuYnl0ZWNvZGVPZmZz
ZXQgPSBrZXkuYnl0ZWNvZGVPZmZzZXQoKTsKKyAgICByZXN1bHQudS5sYXp5T3BlcmFuZC5vcGVy
YW5kID0ga2V5Lm9wZXJhbmQoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitFbmNvZGVkSlNW
YWx1ZSogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6Z2V0U3BlY0ZhaWxCdWNrZXQodW5z
aWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX2tpbmQpIHsKKyAgICBjYXNlIE5v
bmU6CisgICAgICAgIHJldHVybiAwOworICAgICAgICAKKyAgICBjYXNlIFJlYWR5OgorICAgICAg
ICByZXR1cm4gdS5wcm9maWxlLT5zcGVjRmFpbEJ1Y2tldChpbmRleCk7CisgICAgICAgIAorICAg
IGNhc2UgTGF6eU9wZXJhbmQ6CisgICAgICAgIHJldHVybiB1LmxhenlPcGVyYW5kLmNvZGVCbG9j
ay0+bGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVzKCkuYWRkKAorICAgICAgICAgICAgTGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGVLZXkoCisgICAgICAgICAgICAgICAgdS5sYXp5T3BlcmFuZC5ieXRlY29k
ZU9mZnNldCwgdS5sYXp5T3BlcmFuZC5vcGVyYW5kKSktPnNwZWNGYWlsQnVja2V0KGluZGV4KTsK
KyAgICAgICAgCisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBFTkFCTEUoREZHX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0
dGluZ0FWYWx1ZVByb2ZpbGUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1ldGhvZE9m
R2V0dGluZ0FWYWx1ZVByb2ZpbGVfaAorI2RlZmluZSBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9m
aWxlX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisvLyBUaGlzIGlzIGd1YXJkZWQg
YnkgRU5BQkxFX0RGR19KSVQgb25seSBiZWNhdXNlIGl0IHVzZXMgc29tZSB2YWx1ZSBwcm9maWxl
cworLy8gdGhhdCBhcmUgY3VycmVudGx5IG9ubHkgdXNlZCBpZiB0aGUgREZHIGlzIGVuYWJsZWQg
KGkuZS4gdGhleSBhcmUgbm90CisvLyBhdmFpbGFibGUgaW4gdGhlIHByb2ZpbGUtb25seSBjb25m
aWd1cmF0aW9uKS4gSG9wZWZ1bGx5IHNvbWVkYXkgYWxsIG9mCisvLyB0aGVzZSAjaWYncyB3aWxs
IGRpc2FwcGVhci4uLgorI2lmIEVOQUJMRShERkdfSklUKQorCisjaW5jbHVkZSAiSlNWYWx1ZS5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQ29kZUJsb2NrOworY2xhc3MgTGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGVLZXk7CitzdHJ1Y3QgVmFsdWVQcm9maWxlOworCitjbGFzcyBNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlIHsKK3B1YmxpYzoKKyAgICBNZXRob2RPZkdldHRpbmdBVmFs
dWVQcm9maWxlKCkKKyAgICAgICAgOiBtX2tpbmQoTm9uZSkKKyAgICB7CisgICAgfQorICAgIAor
ICAgIGV4cGxpY2l0IE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUoVmFsdWVQcm9maWxlKiBw
cm9maWxlKQorICAgIHsKKyAgICAgICAgaWYgKHByb2ZpbGUpIHsKKyAgICAgICAgICAgIG1fa2lu
ZCA9IFJlYWR5OworICAgICAgICAgICAgdS5wcm9maWxlID0gcHJvZmlsZTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBtX2tpbmQgPSBOb25lOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMg
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBmcm9tTGF6eU9wZXJhbmQoCisgICAgICAgIENv
ZGVCbG9jayosIGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5Jik7CisgICAgCisgICAg
Ym9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBtX2tpbmQgPT0gTm9uZTsgfQorICAgIAor
ICAgIC8vIFRoaXMgbG9naWNhbGx5IGhhcyBhIHBvaW50ZXIgdG8gYSAiVGhlcmUgZXhpc3RzIFgg
c3VjaCB0aGF0CisgICAgLy8gVmFsdWVQcm9maWxlQmFzZTxYPiIuIEJ1dCBzaW5jZSBDKysgZG9l
cyBub3QgaGF2ZSBleGlzdGVudGlhbAorICAgIC8vIHRlbXBsYXRlcywgSSBjYW5ub3QgcmV0dXJu
IGl0LiBTbyBpbnN0ZWFkLCBmb3IgYW55IG1ldGhvZHMgdGhhdAorICAgIC8vIHVzZXJzIG9mIHRo
aXMgY2xhc3Mgd291bGQgbGlrZSB0byBjYWxsLCB3ZSdsbCBqdXN0IGhhdmUgdG8gcHJvdmlkZQor
ICAgIC8vIGEgbWV0aG9kIGhlcmUgdGhhdCBkb2VzIGl0IHRocm91Z2ggYW4gaW5kaXJlY3Rpb24u
IE9yIHdlIGNvdWxkCisgICAgLy8gcG9zc2libHkganVzdCBtYWtlIFZhbHVlUHJvZmlsZSBsZXNz
IHRlbXBsYXRlLWJhc2VkLiBCdXQgbGFzdCBJCisgICAgLy8gdHJpZWQgdGhhdCwgaXQgZmVsdCBt
b3JlIHl1Y2t5IHRoYW4gdGhpcyBjbGFzcy4KKyAgICAKKyAgICBFbmNvZGVkSlNWYWx1ZSogZ2V0
U3BlY0ZhaWxCdWNrZXQodW5zaWduZWQgaW5kZXgpIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAg
ICBlbnVtIEtpbmQgeworICAgICAgICBOb25lLAorICAgICAgICBSZWFkeSwKKyAgICAgICAgTGF6
eU9wZXJhbmQKKyAgICB9OworICAgIAorICAgIEtpbmQgbV9raW5kOworICAgIHVuaW9uIHsKKyAg
ICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlOworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2s7CisgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldDsKKyAgICAgICAgICAgIGludCBvcGVyYW5kOworICAgICAgICB9IGxhenlPcGVyYW5kOwor
ICAgIH0gdTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKERG
R19KSVQpCisKKyNlbmRpZiAvLyBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlX2gKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWRpY3RlZFR5cGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmNw
cAkocmV2aXNpb24gMTA4NjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1By
ZWRpY3RlZFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJlZGljdGVkVHlwZS5oIgogCisjaW5jbHVkZSAiSlNB
cnJheS5oIgogI2luY2x1ZGUgIkpTQnl0ZUFycmF5LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5o
IgogI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5jcHAJKHJldmlzaW9uIDEwODYwMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
Ci0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJWYWx1
ZVByb2ZpbGUuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLSNpZiBFTkFCTEUoVkFMVUVfUFJPRklM
RVIpCi1QcmVkaWN0ZWRUeXBlIFZhbHVlUHJvZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9u
KCkKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZkJ1Y2tldHM7
ICsraSkgewotICAgICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKG1fYnVja2V0
c1tpXSk7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgCi0gICAgICAgIG1fbnVtYmVyT2ZTYW1wbGVzSW5QcmVkaWN0aW9uKys7Ci0gICAgICAgIG1l
cmdlUHJlZGljdGlvbihtX3ByZWRpY3Rpb24sIHByZWRpY3Rpb25Gcm9tVmFsdWUodmFsdWUpKTsK
LSAgICAgICAgCi0gICAgICAgIG1fYnVja2V0c1tpXSA9IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVl
KCkpOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gbV9wcmVkaWN0aW9uOwotfQotI2VuZGlmIC8v
IEVOQUJMRShWQUxVRV9QUk9GSUxFUikKLQotfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiAx
MDg2MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDEwIEBACiAjaWZuZGVmIFZhbHVlUHJvZmlsZV9oCiAj
ZGVmaW5lIFZhbHVlUHJvZmlsZV9oCiAKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lm
IEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKwogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRl
ICJQcmVkaWN0ZWRUeXBlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCkBAIC0zNiwxNSArNDAs
MTQgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCi1z
dHJ1Y3QgVmFsdWVQcm9maWxlIHsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9nTnVtYmVy
T2ZCdWNrZXRzID0gMDsgLy8gMSBidWNrZXQKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVt
YmVyT2ZCdWNrZXRzID0gMSA8PCBsb2dOdW1iZXJPZkJ1Y2tldHM7Cit0ZW1wbGF0ZTx1bnNpZ25l
ZCBudW1iZXJPZkJ1Y2tldHNBcmd1bWVudD4KK3N0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZCdWNrZXRzID0gbnVtYmVyT2ZCdWNrZXRz
QXJndW1lbnQ7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mU3BlY0ZhaWxCdWNr
ZXRzID0gMTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgYnVja2V0SW5kZXhNYXNrID0gbnVt
YmVyT2ZCdWNrZXRzIC0gMTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdG90YWxOdW1iZXJP
ZkJ1Y2tldHMgPSBudW1iZXJPZkJ1Y2tldHMgKyBudW1iZXJPZlNwZWNGYWlsQnVja2V0czsKICAg
ICAKLSAgICBWYWx1ZVByb2ZpbGUoKQorICAgIFZhbHVlUHJvZmlsZUJhc2UoKQogICAgICAgICA6
IG1fYnl0ZWNvZGVPZmZzZXQoLTEpCiAgICAgICAgICwgbV9wcmVkaWN0aW9uKFByZWRpY3ROb25l
KQogICAgICAgICAsIG1fbnVtYmVyT2ZTYW1wbGVzSW5QcmVkaWN0aW9uKDApCkBAIC01Myw3ICs1
Niw3IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGUgewogICAgICAgICAgICAgbV9idWNrZXRzW2ldID0g
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgfQogICAgIAotICAgIFZhbHVlUHJvZmls
ZShpbnQgYnl0ZWNvZGVPZmZzZXQpCisgICAgVmFsdWVQcm9maWxlQmFzZShpbnQgYnl0ZWNvZGVP
ZmZzZXQpCiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkKICAgICAg
ICAgLCBtX3ByZWRpY3Rpb24oUHJlZGljdE5vbmUpCiAgICAgICAgICwgbV9udW1iZXJPZlNhbXBs
ZXNJblByZWRpY3Rpb24oMCkKQEAgLTEwMyw3ICsxMDYsNiBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxl
IHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKLSNpZm5kZWYgTkRFQlVHCiAg
ICAgdm9pZCBkdW1wKEZJTEUqIG91dCkKICAgICB7CiAgICAgICAgIGZwcmludGYob3V0LApAQCAt
MTIzLDEwICsxMjUsMjMgQEAgc3RydWN0IFZhbHVlUHJvZmlsZSB7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9Ci0jZW5kaWYKICAgICAKICAgICAvLyBVcGRhdGVzIHRoZSBwcmVkaWN0
aW9uIGFuZCByZXR1cm5zIHRoZSBuZXcgb25lLgotICAgIFByZWRpY3RlZFR5cGUgY29tcHV0ZVVw
ZGF0ZWRQcmVkaWN0aW9uKCk7CisgICAgUHJlZGljdGVkVHlwZSBjb21wdXRlVXBkYXRlZFByZWRp
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvdGFsTnVt
YmVyT2ZCdWNrZXRzOyArK2kpIHsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUobV9idWNrZXRzW2ldKTsKKyAgICAgICAgICAgIGlmICghdmFsdWUpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fbnVtYmVyT2ZT
YW1wbGVzSW5QcmVkaWN0aW9uKys7CisgICAgICAgICAgICBtZXJnZVByZWRpY3Rpb24obV9wcmVk
aWN0aW9uLCBwcmVkaWN0aW9uRnJvbVZhbHVlKHZhbHVlKSk7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIG1fYnVja2V0c1tpXSA9IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gbV9wcmVkaWN0aW9uOworICAgIH0KICAgICAK
ICAgICBpbnQgbV9ieXRlY29kZU9mZnNldDsgLy8gLTEgZm9yIHByb2xvZ3VlCiAgICAgCkBAIC0x
MzYsNyArMTUxLDMyIEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGUgewogICAgIEVuY29kZWRKU1ZhbHVl
IG1fYnVja2V0c1t0b3RhbE51bWJlck9mQnVja2V0c107CiB9OwogCi1pbmxpbmUgaW50IGdldFZh
bHVlUHJvZmlsZUJ5dGVjb2RlT2Zmc2V0KFZhbHVlUHJvZmlsZSogdmFsdWVQcm9maWxlKQorc3Ry
dWN0IE1pbmltYWxWYWx1ZVByb2ZpbGUgOiBwdWJsaWMgVmFsdWVQcm9maWxlQmFzZTwwPiB7Cisg
ICAgTWluaW1hbFZhbHVlUHJvZmlsZSgpOiBWYWx1ZVByb2ZpbGVCYXNlPDA+KCkgeyB9CisgICAg
TWluaW1hbFZhbHVlUHJvZmlsZShpbnQgYnl0ZWNvZGVPZmZzZXQpOiBWYWx1ZVByb2ZpbGVCYXNl
PDA+KGJ5dGVjb2RlT2Zmc2V0KSB7IH0KK307CisKK3RlbXBsYXRlPHVuc2lnbmVkIGxvZ051bWJl
ck9mQnVja2V0c0FyZ3VtZW50Pgorc3RydWN0IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1
Y2tldHMgOiBwdWJsaWMgVmFsdWVQcm9maWxlQmFzZTwxIDw8IGxvZ051bWJlck9mQnVja2V0c0Fy
Z3VtZW50PiB7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvZ051bWJlck9mQnVja2V0cyA9
IGxvZ051bWJlck9mQnVja2V0c0FyZ3VtZW50OworICAgIAorICAgIFZhbHVlUHJvZmlsZVdpdGhM
b2dOdW1iZXJPZkJ1Y2tldHMoKQorICAgICAgICA6IFZhbHVlUHJvZmlsZUJhc2U8MSA8PCBsb2dO
dW1iZXJPZkJ1Y2tldHNBcmd1bWVudD4oKQorICAgIHsKKyAgICB9CisgICAgVmFsdWVQcm9maWxl
V2l0aExvZ051bWJlck9mQnVja2V0cyhpbnQgYnl0ZWNvZGVPZmZzZXQpCisgICAgICAgIDogVmFs
dWVQcm9maWxlQmFzZTwxIDw8IGxvZ051bWJlck9mQnVja2V0c0FyZ3VtZW50PihieXRlY29kZU9m
ZnNldCkKKyAgICB7CisgICAgfQorfTsKKworc3RydWN0IFZhbHVlUHJvZmlsZSA6IHB1YmxpYyBW
YWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+IHsKKyAgICBWYWx1ZVByb2ZpbGUo
KTogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPigpIHsgfQorICAgIFZhbHVl
UHJvZmlsZShpbnQgYnl0ZWNvZGVPZmZzZXQpOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZC
dWNrZXRzPDA+KGJ5dGVjb2RlT2Zmc2V0KSB7IH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
CitpbmxpbmUgaW50IGdldFZhbHVlUHJvZmlsZUJ5dGVjb2RlT2Zmc2V0KFQqIHZhbHVlUHJvZmls
ZSkKIHsKICAgICByZXR1cm4gdmFsdWVQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0OwogfQpAQCAt
MTU4LDkgKzE5OCwxMCBAQCBpbmxpbmUgaW50IGdldFJhcmVDYXNlUHJvZmlsZUJ5dGVjb2RlT2Zm
CiB7CiAgICAgcmV0dXJuIHJhcmVDYXNlUHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldDsKIH0KLSNl
bmRpZgogCi19Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShWQUxVRV9Q
Uk9GSUxFUikKIAotI2VuZGlmCisjZW5kaWYgLy8gVmFsdWVQcm9maWxlX2gKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlz
aW9uIDEwODYwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDggQEAgcHJpdmF0ZToKICAgICB9
OwogICAgIHRlbXBsYXRlPFBoaVN0YWNrVHlwZSBzdGFja1R5cGU+CiAgICAgdm9pZCBwcm9jZXNz
UGhpU3RhY2soKTsKKyAgICAKKyAgICB2b2lkIGZpeFZhcmlhYmxlQWNjZXNzUHJlZGljdGlvbnMo
KTsKICAgICAvLyBBZGQgc3BpbGwgbG9jYXRpb25zIHRvIG5vZGVzLgogICAgIHZvaWQgYWxsb2Nh
dGVWaXJ0dWFsUmVnaXN0ZXJzKCk7CiAgICAgCkBAIC0xNTUsNiArMTU3LDIyIEBAIHByaXZhdGU6
CiAgICAgewogICAgICAgICBzZXREaXJlY3QobV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5k
KG9wZXJhbmQpLCB2YWx1ZSk7CiAgICAgfQorICAgIAorICAgIE5vZGVJbmRleCBpbmplY3RMYXp5
T3BlcmFuZFByZWRpY3Rpb24oTm9kZUluZGV4IG5vZGVJbmRleCkKKyAgICB7CisgICAgICAgIE5v
ZGUmIG5vZGUgPSBtX2dyYXBoW25vZGVJbmRleF07CisgICAgICAgIEFTU0VSVChub2RlLm9wID09
IEdldExvY2FsKTsKKyAgICAgICAgQVNTRVJUKG5vZGUuY29kZU9yaWdpbi5ieXRlY29kZUluZGV4
ID09IG1fY3VycmVudEluZGV4KTsKKyAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0g
CisgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2xhenlPcGVyYW5kcy5wcmVkaWN0aW9u
KAorICAgICAgICAgICAgICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5KG1fY3VycmVudElu
ZGV4LCBub2RlLmxvY2FsKCkpKTsKKyNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCisgICAg
ICAgIGRhdGFMb2coIkxhenkgb3BlcmFuZCBbQCV1LCBiYyMldSwgciVkXSBwcmVkaWN0aW9uOiAl
c1xuIiwKKyAgICAgICAgICAgICAgICBub2RlSW5kZXgsIG1fY3VycmVudEluZGV4LCBub2RlLmxv
Y2FsKCksIHByZWRpY3Rpb25Ub1N0cmluZyhwcmVkaWN0aW9uKSk7CisjZW5kaWYKKyAgICAgICAg
bm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdChwcmVkaWN0aW9uKTsKKyAgICAgICAg
cmV0dXJuIG5vZGVJbmRleDsKKyAgICB9CiAKICAgICAvLyBVc2VkIGluIGltcGxlbWVudGluZyBn
ZXQvc2V0LCBhYm92ZSwgd2hlcmUgdGhlIG9wZXJhbmQgaXMgYSBsb2NhbCB2YXJpYWJsZS4KICAg
ICBOb2RlSW5kZXggZ2V0TG9jYWwodW5zaWduZWQgb3BlcmFuZCkKQEAgLTE3MCw3ICsxODgsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIE5vZGUmIGZsdXNoQ2hpbGQgPSBtX2dyYXBoW25v
ZGVQdHItPmNoaWxkMSgpXTsKICAgICAgICAgICAgICAgICBpZiAoZmx1c2hDaGlsZC5vcCA9PSBQ
aGkpIHsKICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFj
Y2Vzc0RhdGEgPSBmbHVzaENoaWxkLnZhcmlhYmxlQWNjZXNzRGF0YSgpOwotICAgICAgICAgICAg
ICAgICAgICBub2RlSW5kZXggPSBhZGRUb0dyYXBoKEdldExvY2FsLCBPcEluZm8odmFyaWFibGVB
Y2Nlc3NEYXRhKSwgbm9kZVB0ci0+Y2hpbGQxKCkuaW5kZXgoKSk7CisgICAgICAgICAgICAgICAg
ICAgIG5vZGVJbmRleCA9IGluamVjdExhenlPcGVyYW5kUHJlZGljdGlvbihhZGRUb0dyYXBoKEdl
dExvY2FsLCBPcEluZm8odmFyaWFibGVBY2Nlc3NEYXRhKSwgbm9kZVB0ci0+Y2hpbGQxKCkuaW5k
ZXgoKSkpOwogICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRU
YWlsLmxvY2FsKG9wZXJhbmQpID0gbm9kZUluZGV4OwogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbm9kZUluZGV4OwogICAgICAgICAgICAgICAgIH0KQEAgLTE5MCw3ICsyMDgsNyBAQCBwcml2
YXRlOgogICAgICAgICAKICAgICAgICAgTm9kZUluZGV4IHBoaSA9IGFkZFRvR3JhcGgoUGhpLCBP
cEluZm8odmFyaWFibGVBY2Nlc3NEYXRhKSk7CiAgICAgICAgIG1fbG9jYWxQaGlTdGFjay5hcHBl
bmQoUGhpU3RhY2tFbnRyeShtX2N1cnJlbnRCbG9jaywgcGhpLCBvcGVyYW5kKSk7Ci0gICAgICAg
IG5vZGVJbmRleCA9IGFkZFRvR3JhcGgoR2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0Rh
dGEpLCBwaGkpOworICAgICAgICBub2RlSW5kZXggPSBpbmplY3RMYXp5T3BlcmFuZFByZWRpY3Rp
b24oYWRkVG9HcmFwaChHZXRMb2NhbCwgT3BJbmZvKHZhcmlhYmxlQWNjZXNzRGF0YSksIHBoaSkp
OwogICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLmxvY2FsKG9wZXJhbmQp
ID0gbm9kZUluZGV4OwogICAgICAgICAKICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxl
c0F0SGVhZC5zZXRMb2NhbEZpcnN0VGltZShvcGVyYW5kLCBub2RlSW5kZXgpOwpAQCAtMjE5LDcg
KzIzNyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgTm9kZSYgZmx1c2hDaGlsZCA9IG1f
Z3JhcGhbbm9kZVB0ci0+Y2hpbGQxKCldOwogICAgICAgICAgICAgICAgIGlmIChmbHVzaENoaWxk
Lm9wID09IFBoaSkgewogICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZh
cmlhYmxlQWNjZXNzRGF0YSA9IGZsdXNoQ2hpbGQudmFyaWFibGVBY2Nlc3NEYXRhKCk7Ci0gICAg
ICAgICAgICAgICAgICAgIG5vZGVJbmRleCA9IGFkZFRvR3JhcGgoR2V0TG9jYWwsIE9wSW5mbyh2
YXJpYWJsZUFjY2Vzc0RhdGEpLCBub2RlUHRyLT5jaGlsZDEoKS5pbmRleCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgbm9kZUluZGV4ID0gaW5qZWN0TGF6eU9wZXJhbmRQcmVkaWN0aW9uKGFkZFRv
R3JhcGgoR2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCBub2RlUHRyLT5jaGls
ZDEoKS5pbmRleCgpKSk7CiAgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJp
YWJsZXNBdFRhaWwubG9jYWwob3BlcmFuZCkgPSBub2RlSW5kZXg7CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBub2RlSW5kZXg7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjI5LDcgKzI0Nyw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgLy8gV2UncmUgZ2V0dGluZyBhbiBhcmd1bWVu
dCBpbiB0aGUgZmlyc3QgYmFzaWMgYmxvY2s7IGxpbmsKICAgICAgICAgICAgICAgICAvLyB0aGUg
R2V0TG9jYWwgdG8gdGhlIFNldEFyZ3VtZW50LgogICAgICAgICAgICAgICAgIEFTU0VSVChub2Rl
UHRyLT5sb2NhbCgpID09IHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4ob3BlcmFuZCkpOwot
ICAgICAgICAgICAgICAgIG5vZGVJbmRleCA9IGFkZFRvR3JhcGgoR2V0TG9jYWwsIE9wSW5mbyhu
b2RlUHRyLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSksIG5vZGVJbmRleCk7CisgICAgICAgICAgICAg
ICAgbm9kZUluZGV4ID0gaW5qZWN0TGF6eU9wZXJhbmRQcmVkaWN0aW9uKGFkZFRvR3JhcGgoR2V0
TG9jYWwsIE9wSW5mbyhub2RlUHRyLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSksIG5vZGVJbmRleCkp
OwogICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwuYXJndW1l
bnQoYXJndW1lbnQpID0gbm9kZUluZGV4OwogICAgICAgICAgICAgICAgIHJldHVybiBub2RlSW5k
ZXg7CiAgICAgICAgICAgICB9CkBAIC0yNDUsNyArMjYzLDcgQEAgcHJpdmF0ZToKIAogICAgICAg
ICBOb2RlSW5kZXggcGhpID0gYWRkVG9HcmFwaChQaGksIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0Rh
dGEpKTsKICAgICAgICAgbV9hcmd1bWVudFBoaVN0YWNrLmFwcGVuZChQaGlTdGFja0VudHJ5KG1f
Y3VycmVudEJsb2NrLCBwaGksIGFyZ3VtZW50KSk7Ci0gICAgICAgIG5vZGVJbmRleCA9IGFkZFRv
R3JhcGgoR2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCBwaGkpOworICAgICAg
ICBub2RlSW5kZXggPSBpbmplY3RMYXp5T3BlcmFuZFByZWRpY3Rpb24oYWRkVG9HcmFwaChHZXRM
b2NhbCwgT3BJbmZvKHZhcmlhYmxlQWNjZXNzRGF0YSksIHBoaSkpOwogICAgICAgICBtX2N1cnJl
bnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLmFyZ3VtZW50KGFyZ3VtZW50KSA9IG5vZGVJbmRleDsK
ICAgICAgICAgCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdEhlYWQuc2V0QXJn
dW1lbnRGaXJzdFRpbWUoYXJndW1lbnQsIG5vZGVJbmRleCk7CkBAIC04NDgsNiArODY2LDExIEBA
IHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV9yZXR1cm5WYWx1
ZTsKICAgICAgICAgCisgICAgICAgIC8vIFByZWRpY3Rpb25zIGFib3V0IHZhcmlhYmxlIHR5cGVz
IGNvbGxlY3RlZCBmcm9tIHRoZSBwcm9maWxlZCBjb2RlIGJsb2NrLAorICAgICAgICAvLyB3aGlj
aCBhcmUgYmFzZWQgb24gT1NSIGV4aXQgcHJvZmlsZXMgdGhhdCBwYXN0IERGRyBjb21waWxhdGlu
cyBvZiB0aGlzCisgICAgICAgIC8vIGNvZGUgYmxvY2sgaGFkIGdhdGhlcmVkLgorICAgICAgICBM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlciBtX2xhenlPcGVyYW5kczsKKyAgICAgICAgCiAg
ICAgICAgIC8vIERpZCB3ZSBzZWUgYW55IHJldHVybnM/IFdlIG5lZWQgdG8gaGFuZGxlIHRoZSAo
dW5jb21tb24gYnV0IG5lY2Vzc2FyeSkKICAgICAgICAgLy8gY2FzZSB3aGVyZSBhIHByb2NlZHVy
ZSB0aGF0IGRvZXMgbm90IHJldHVybiB3YXMgaW5saW5lZC4KICAgICAgICAgYm9vbCBtX2RpZFJl
dHVybjsKQEAgLTIzMTUsNiArMjMzOCwxNCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwcm9jZXNz
UGhpU3RhY2soKQogICAgIH0KIH0KIAordm9pZCBCeXRlQ29kZVBhcnNlcjo6Zml4VmFyaWFibGVB
Y2Nlc3NQcmVkaWN0aW9ucygpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZ3Jh
cGgubV92YXJpYWJsZUFjY2Vzc0RhdGEuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgVmFyaWFibGVB
Y2Nlc3NEYXRhKiBkYXRhID0gJm1fZ3JhcGgubV92YXJpYWJsZUFjY2Vzc0RhdGFbaV07CisgICAg
ICAgIGRhdGEtPmZpbmQoKS0+cHJlZGljdChkYXRhLT5ub25VbmlmaWVkUHJlZGljdGlvbigpKTsK
KyAgICB9Cit9CisKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmxpbmtCbG9jayhCYXNpY0Jsb2NrKiBi
bG9jaywgVmVjdG9yPEJsb2NrSW5kZXg+JiBwb3NzaWJsZVRhcmdldHMpCiB7CiAgICAgQVNTRVJU
KGJsb2NrLT5lbmQgIT0gTm9Ob2RlKTsKQEAgLTI0MTcsNiArMjQ0OCw3IEBAIEJ5dGVDb2RlUGFy
c2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmUKICAgICAsIG1fZXhpdFByb2ZpbGUocHJvZmls
ZWRCbG9jay0+ZXhpdFByb2ZpbGUoKSkKICAgICAsIG1fY2FsbHNpdGVCbG9ja0hlYWQoY2FsbHNp
dGVCbG9ja0hlYWQpCiAgICAgLCBtX3JldHVyblZhbHVlKHJldHVyblZhbHVlVlIpCisgICAgLCBt
X2xhenlPcGVyYW5kcyhwcm9maWxlZEJsb2NrLT5sYXp5T3BlcmFuZFZhbHVlUHJvZmlsZXMoKSkK
ICAgICAsIG1fZGlkUmV0dXJuKGZhbHNlKQogICAgICwgbV9kaWRFYXJseVJldHVybihmYWxzZSkK
ICAgICAsIG1fY2FsbGVyKGJ5dGVDb2RlUGFyc2VyLT5tX2lubGluZVN0YWNrVG9wKQpAQCAtMjU4
NSw2ICsyNjE3LDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2UoKQogI2VuZGlmCiAgICAg
cHJvY2Vzc1BoaVN0YWNrPEFyZ3VtZW50UGhpU3RhY2s+KCk7CiAgICAgCisgICAgZml4VmFyaWFi
bGVBY2Nlc3NQcmVkaWN0aW9ucygpOworICAgIAogICAgIG1fZ3JhcGgubV9wcmVzZXJ2ZWRWYXJz
ID0gbV9wcmVzZXJ2ZWRWYXJzOwogICAgIG1fZ3JhcGgubV9sb2NhbFZhcnMgPSBtX251bUxvY2Fs
czsKICAgICBtX2dyYXBoLm1fcGFyYW1ldGVyU2xvdHMgPSBtX3BhcmFtZXRlclNsb3RzOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkocmV2aXNpb24gMTA4NjAz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02Myw2ICs2MywxMSBAQCBpbmxpbmUgYm9vbCBjb21waWxlKENvbXBpbGVNb2RlIGNv
bXBpbGVNCiAgICAgcGVyZm9ybUNTRShkZmcpOwogICAgIHBlcmZvcm1WaXJ0dWFsUmVnaXN0ZXJB
bGxvY2F0aW9uKGRmZyk7CiAgICAgcGVyZm9ybUNGQShkZmcpOworCisjaWYgREZHX0VOQUJMRShE
RUJVR19WRVJCT1NFKQorICAgIGRhdGFMb2coIkdyYXBoIGFmdGVyIG9wdGltaXphdGlvbjpcbiIp
OworICAgIGRmZy5kdW1wKCk7CisjZW5kaWYKICAgICAKICAgICBKSVRDb21waWxlciBkYXRhRmxv
d0pJVChkZmcpOwogICAgIGlmIChjb21waWxlTW9kZSA9PSBDb21waWxlRnVuY3Rpb24pIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDEwODYwMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAt
MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkRGR0Fzc2VtYmx5SGVscGVycy5oIgogI2luY2x1ZGUg
IkRGR0Jhc2ljQmxvY2suaCIKICNpbmNsdWRlICJERkdOb2RlLmgiCisjaW5jbHVkZSAiTWV0aG9k
T2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oIgogI2luY2x1ZGUgIlByZWRpY3Rpb25UcmFja2VyLmgi
CiAjaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCiAjaW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5oPgpA
QCAtMjcxLDcgKzI3Miw3IEBAIHB1YmxpYzoKICAgICAgICAgTm9kZSYgbm9kZSA9IGF0KG5vZGVJ
bmRleCk7CiAgICAgICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jayA9IGJhc2VsaW5lQ29kZUJs
b2NrRm9yKG5vZGUuY29kZU9yaWdpbik7CiAgICAgICAgIAotICAgICAgICBpZiAobm9kZS5vcCA9
PSBHZXRMb2NhbCkgeworICAgICAgICBpZiAobm9kZS5oYXNMb2NhbCgpKSB7CiAgICAgICAgICAg
ICBpZiAoIW9wZXJhbmRJc0FyZ3VtZW50KG5vZGUubG9jYWwoKSkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIDA7CiAgICAgICAgICAgICBpbnQgYXJndW1lbnQgPSBvcGVyYW5kVG9Bcmd1bWVudChu
b2RlLmxvY2FsKCkpOwpAQCAtMjg2LDYgKzI4NywyNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KICAgICAKKyAgICBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIG1ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3IoTm9kZUluZGV4IG5vZGVJbmRleCkKKyAgICB7Cisg
ICAgICAgIGlmIChub2RlSW5kZXggPT0gTm9Ob2RlKQorICAgICAgICAgICAgcmV0dXJuIE1ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUoKTsKKyAgICAgICAgCisgICAgICAgIE5vZGUmIG5vZGUg
PSBhdChub2RlSW5kZXgpOworICAgICAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2sgPSBiYXNl
bGluZUNvZGVCbG9ja0Zvcihub2RlLmNvZGVPcmlnaW4pOworICAgICAgICAKKyAgICAgICAgaWYg
KG5vZGUub3AgPT0gR2V0TG9jYWwpIHsKKyAgICAgICAgICAgIHJldHVybiBNZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlOjpmcm9tTGF6eU9wZXJhbmQoCisgICAgICAgICAgICAgICAgcHJvZmls
ZWRCbG9jaywKKyAgICAgICAgICAgICAgICBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSgKKyAg
ICAgICAgICAgICAgICAgICAgbm9kZS5jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIG5vZGUubG9j
YWwoKSkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gTWV0aG9kT2ZHZXR0
aW5nQVZhbHVlUHJvZmlsZSh2YWx1ZVByb2ZpbGVGb3Iobm9kZUluZGV4KSk7CisgICAgfQorICAg
IAogICAgIEpTR2xvYmFsRGF0YSYgbV9nbG9iYWxEYXRhOwogICAgIENvZGVCbG9jayogbV9jb2Rl
QmxvY2s7CiAgICAgQ29kZUJsb2NrKiBtX3Byb2ZpbGVkQmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTA4NjAzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4NSw3ICs0ODUsNyBAQCBz
dHJ1Y3QgTm9kZSB7CiAgICAgewogICAgICAgICByZXR1cm4gdmFyaWFibGVBY2Nlc3NEYXRhKCkt
PmxvY2FsKCk7CiAgICAgfQotCisgICAgCiAgICAgYm9vbCBoYXNJZGVudGlmaWVyKCkKICAgICB7
CiAgICAgICAgIHN3aXRjaCAob3ApIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0LmNwcAkocmV2aXNpb24gMTA4NjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLU9TUkV4aXQ6Ok9TUkV4aXQoRXhpdEtp
bmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBWYWx1ZVByb2ZpbGUqIHZhbHVl
UHJvZmlsZSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2hlY2ssIFNwZWN1bGF0aXZlSklUKiBqaXQs
IHVuc2lnbmVkIHJlY292ZXJ5SW5kZXgpCitPU1JFeGl0OjpPU1JFeGl0KEV4aXRLaW5kIGtpbmQs
IEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZSB2YWx1ZVByb2ZpbGUsIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrLCBTcGVjdWxhdGl2ZUpJ
VCogaml0LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4KQogICAgIDogbV9qc1ZhbHVlU291cmNlKGpz
VmFsdWVTb3VyY2UpCiAgICAgLCBtX3ZhbHVlUHJvZmlsZSh2YWx1ZVByb2ZpbGUpCiAgICAgLCBt
X2NoZWNrKGNoZWNrKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgJ
KHJldmlzaW9uIDEwODYwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiREZHR1BSSW5m
by5oIgogI2luY2x1ZGUgIkRGR09wZXJhbmRzLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIu
aCIKKyNpbmNsdWRlICJNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgiCiAjaW5jbHVkZSAi
VmFsdWVQcm9maWxlLmgiCiAjaW5jbHVkZSAiVmFsdWVSZWNvdmVyeS5oIgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KQEAgLTgyLDEyICs4MywxMiBAQCBwcml2YXRlOgogLy8gVGhpcyBzdHJ1Y3R1
cmUgZGVzY3JpYmVzIGhvdyB0byBleGl0IHRoZSBzcGVjdWxhdGl2ZSBwYXRoIGJ5CiAvLyBnb2lu
ZyBpbnRvIGJhc2VsaW5lIGNvZGUuCiBzdHJ1Y3QgT1NSRXhpdCB7Ci0gICAgT1NSRXhpdChFeGl0
S2luZCwgSlNWYWx1ZVNvdXJjZSwgVmFsdWVQcm9maWxlKiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAs
IFNwZWN1bGF0aXZlSklUKiwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCA9IDApOworICAgIE9TUkV4
aXQoRXhpdEtpbmQsIEpTVmFsdWVTb3VyY2UsIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUs
IE1hY3JvQXNzZW1ibGVyOjpKdW1wLCBTcGVjdWxhdGl2ZUpJVCosIHVuc2lnbmVkIHJlY292ZXJ5
SW5kZXggPSAwKTsKICAgICAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbV9jb2RlOwogICAg
IAogICAgIEpTVmFsdWVTb3VyY2UgbV9qc1ZhbHVlU291cmNlOwotICAgIFZhbHVlUHJvZmlsZSog
bV92YWx1ZVByb2ZpbGU7CisgICAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBtX3ZhbHVl
UHJvZmlsZTsKICAgICAKICAgICBDb3JyZWN0YWJsZUp1bXBQb2ludCBtX2NoZWNrOwogICAgIE5v
ZGVJbmRleCBtX25vZGVJbmRleDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCShyZXZpc2lvbiAxMDg2MDMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsOCBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29t
cGlsZUV4aXQoY29uc3QgCiAgICAgLy8gMykgUmVmaW5lIHNvbWUgdmFsdWUgcHJvZmlsZSwgaWYg
YXBwcm9wcmlhdGUuCiAgICAgCiAgICAgaWYgKCEhZXhpdC5tX2pzVmFsdWVTb3VyY2UgJiYgISFl
eGl0Lm1fdmFsdWVQcm9maWxlKSB7CisgICAgICAgIEVuY29kZWRKU1ZhbHVlKiBidWNrZXQgPSBl
eGl0Lm1fdmFsdWVQcm9maWxlLmdldFNwZWNGYWlsQnVja2V0KDApOworICAgICAgICAKICAgICAg
ICAgaWYgKGV4aXQubV9qc1ZhbHVlU291cmNlLmlzQWRkcmVzcygpKSB7CiAgICAgICAgICAgICAv
LyBTYXZlIGEgcmVnaXN0ZXIgc28gd2UgY2FuIHVzZSBpdC4KICAgICAgICAgICAgIEdQUlJlZyBz
Y3JhdGNoID0gR1BSSW5mbzo6cmVnVDA7CkBAIC05MSwxNiArOTMsMTYgQEAgdm9pZCBPU1JFeGl0
Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICAgICAgRW5jb2RlZEpTVmFsdWUq
IHNjcmF0Y2hCdWZmZXIgPSBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KG1faml0Lmdsb2Jh
bERhdGEoKS0+c2NyYXRjaEJ1ZmZlckZvclNpemUoc2l6ZW9mKHVpbnQzMl90KSkpOwogICAgICAg
ICAgICAgbV9qaXQuc3RvcmUzMihzY3JhdGNoLCBzY3JhdGNoQnVmZmVyKTsKICAgICAgICAgICAg
IG1faml0LmxvYWQzMihleGl0Lm1fanNWYWx1ZVNvdXJjZS5hc0FkZHJlc3MoT0JKRUNUX09GRlNF
VE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSwgc2NyYXRjaCk7Ci0gICAg
ICAgICAgICBtX2ppdC5zdG9yZTMyKHNjcmF0Y2gsICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVl
RGVzY3JpcHRvcio+KGV4aXQubV92YWx1ZVByb2ZpbGUtPnNwZWNGYWlsQnVja2V0KDApKS0+YXNC
aXRzLnRhZyk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHNjcmF0Y2gsICZiaXR3aXNlX2Nh
c3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KGJ1Y2tldCktPmFzQml0cy50YWcpOwogICAgICAg
ICAgICAgbV9qaXQubG9hZDMyKGV4aXQubV9qc1ZhbHVlU291cmNlLmFzQWRkcmVzcyhPQkpFQ1Rf
T0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSwgc2NyYXRj
aCk7Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHNjcmF0Y2gsICZiaXR3aXNlX2Nhc3Q8RW5j
b2RlZFZhbHVlRGVzY3JpcHRvcio+KGV4aXQubV92YWx1ZVByb2ZpbGUtPnNwZWNGYWlsQnVja2V0
KDApKS0+YXNCaXRzLnBheWxvYWQpOworICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihzY3JhdGNo
LCAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihidWNrZXQpLT5hc0JpdHMu
cGF5bG9hZCk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoc2NyYXRjaEJ1ZmZlciwgc2NyYXRj
aCk7CiAgICAgICAgIH0gZWxzZSBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaGFzS25vd25UYWco
KSkgewotICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OkltbTMyKGV4
aXQubV9qc1ZhbHVlU291cmNlLnRhZygpKSwgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNj
cmlwdG9yKj4oZXhpdC5tX3ZhbHVlUHJvZmlsZS0+c3BlY0ZhaWxCdWNrZXQoMCkpLT5hc0JpdHMu
dGFnKTsKLSAgICAgICAgICAgIG1faml0LnN0b3JlMzIoZXhpdC5tX2pzVmFsdWVTb3VyY2UucGF5
bG9hZEdQUigpLCAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihleGl0Lm1f
dmFsdWVQcm9maWxlLT5zcGVjRmFpbEJ1Y2tldCgwKSktPmFzQml0cy5wYXlsb2FkKTsKKyAgICAg
ICAgICAgIG1faml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpJbW0zMihleGl0Lm1fanNWYWx1
ZVNvdXJjZS50YWcoKSksICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KGJ1
Y2tldCktPmFzQml0cy50YWcpOworICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihleGl0Lm1fanNW
YWx1ZVNvdXJjZS5wYXlsb2FkR1BSKCksICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3Jp
cHRvcio+KGJ1Y2tldCktPmFzQml0cy5wYXlsb2FkKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIG1faml0LnN0b3JlMzIoZXhpdC5tX2pzVmFsdWVTb3VyY2UudGFnR1BSKCksICZiaXR3
aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KGV4aXQubV92YWx1ZVByb2ZpbGUtPnNw
ZWNGYWlsQnVja2V0KDApKS0+YXNCaXRzLnRhZyk7Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZTMy
KGV4aXQubV9qc1ZhbHVlU291cmNlLnBheWxvYWRHUFIoKSwgJmJpdHdpc2VfY2FzdDxFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yKj4oZXhpdC5tX3ZhbHVlUHJvZmlsZS0+c3BlY0ZhaWxCdWNrZXQoMCkp
LT5hc0JpdHMucGF5bG9hZCk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKGV4aXQubV9qc1Zh
bHVlU291cmNlLnRhZ0dQUigpLCAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3Iq
PihidWNrZXQpLT5hc0JpdHMudGFnKTsKKyAgICAgICAgICAgIG1faml0LnN0b3JlMzIoZXhpdC5t
X2pzVmFsdWVTb3VyY2UucGF5bG9hZEdQUigpLCAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IqPihidWNrZXQpLT5hc0JpdHMucGF5bG9hZCk7CiAgICAgICAgIH0KICAgICB9CiAg
ICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRD
b21waWxlcjY0LmNwcAkocmV2aXNpb24gMTA4NjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDE0ICs4
OCwyMCBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgLy8g
MykgUmVmaW5lIHNvbWUgdmFsdWUgcHJvZmlsZSwgaWYgYXBwcm9wcmlhdGUuCiAgICAgCiAgICAg
aWYgKCEhZXhpdC5tX2pzVmFsdWVTb3VyY2UgJiYgISFleGl0Lm1fdmFsdWVQcm9maWxlKSB7Cisg
ICAgICAgIEVuY29kZWRKU1ZhbHVlKiBidWNrZXQgPSBleGl0Lm1fdmFsdWVQcm9maWxlLmdldFNw
ZWNGYWlsQnVja2V0KDApOworICAgICAgICAKKyNpZiBERkdfRU5BQkxFKFZFUkJPU0VfU1BFQ1VM
QVRJT05fRkFJTFVSRSkKKyAgICAgICAgZGF0YUxvZygiICAoaGF2ZSBleGl0IHByb2ZpbGUsIGJ1
Y2tldCAlcCkgICIsIGJ1Y2tldCk7CisjZW5kaWYKKyAgICAgICAgICAgIAogICAgICAgICBpZiAo
ZXhpdC5tX2pzVmFsdWVTb3VyY2UuaXNBZGRyZXNzKCkpIHsKICAgICAgICAgICAgIC8vIFdlIGNh
bid0IGJlIHN1cmUgdGhhdCB3ZSBoYXZlIGEgc3BhcmUgcmVnaXN0ZXIuIFNvIHVzZSB0aGUgdGFn
VHlwZU51bWJlclJlZ2lzdGVyLAogICAgICAgICAgICAgLy8gc2luY2Ugd2Uga25vdyBob3cgdG8g
cmVzdG9yZSBpdC4KICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpB
ZGRyZXNzKGV4aXQubV9qc1ZhbHVlU291cmNlLmFzQWRkcmVzcygpKSwgR1BSSW5mbzo6dGFnVHlw
ZU51bWJlclJlZ2lzdGVyKTsKLSAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKEdQUkluZm86OnRh
Z1R5cGVOdW1iZXJSZWdpc3RlciwgZXhpdC5tX3ZhbHVlUHJvZmlsZS0+c3BlY0ZhaWxCdWNrZXQo
MCkpOworICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJl
Z2lzdGVyLCBidWNrZXQpOwogICAgICAgICAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihUYWdUeXBlTnVtYmVyKSksIEdQUklu
Zm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
bV9qaXQuc3RvcmVQdHIoZXhpdC5tX2pzVmFsdWVTb3VyY2UuZ3ByKCksIGV4aXQubV92YWx1ZVBy
b2ZpbGUtPnNwZWNGYWlsQnVja2V0KDApKTsKKyAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKGV4
aXQubV9qc1ZhbHVlU291cmNlLmdwcigpLCBidWNrZXQpOwogICAgIH0KIAogICAgIC8vIDQpIEZp
Z3VyZSBvdXQgaG93IG1hbnkgc2NyYXRjaCBzbG90cyB3ZSdsbCBuZWVkLiBXZSBuZWVkIG9uZSBm
b3IgZXZlcnkgR1BSL0ZQUgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFzZS5j
cHAJKHJldmlzaW9uIDEwODYwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMiArMzQsMTIgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogdm9pZCBQaGFzZTo6YmVnaW5QaGFzZSgpCiB7CiAgICAgZGF0YUxv
ZygiQmVnaW5uaW5nIERGRyBwaGFzZSAlcy5cbiIsIG1fbmFtZSk7CisgICAgZGF0YUxvZygiR3Jh
cGggYmVmb3JlICVzOlxuIiwgbV9uYW1lKTsKKyAgICBtX2dyYXBoLmR1bXAobV9jb2RlQmxvY2sp
OwogfQogCiB2b2lkIFBoYXNlOjplbmRQaGFzZSgpCiB7Ci0gICAgZGF0YUxvZygiR3JhcGggYWZ0
ZXIgJXM6XG4iLCBtX25hbWUpOwotICAgIG1fZ3JhcGguZHVtcChtX2NvZGVCbG9jayk7CiB9CiAj
ZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAJKHJldmlzaW9uIDEwODYwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDczLDcgKzEwNzMs
OCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50VHlwZXMoCiAgICAgICAgIG1f
dmFyaWFibGVzW2ldID0gVmFsdWVTb3VyY2UoVmFsdWVJblJlZ2lzdGVyRmlsZSk7CiAgICAgCiAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX2ppdC5jb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygp
OyArK2kpIHsKLSAgICAgICAgTm9kZSYgbm9kZSA9IGF0KG1faml0LmdyYXBoKCkubV9hcmd1bWVu
dHNbaV0pOworICAgICAgICBOb2RlSW5kZXggbm9kZUluZGV4ID0gbV9qaXQuZ3JhcGgoKS5tX2Fy
Z3VtZW50c1tpXTsKKyAgICAgICAgTm9kZSYgbm9kZSA9IGF0KG5vZGVJbmRleCk7CiAgICAgICAg
IEFTU0VSVChub2RlLm9wID09IFNldEFyZ3VtZW50KTsKICAgICAgICAgaWYgKCFub2RlLnNob3Vs
ZEdlbmVyYXRlKCkpIHsKICAgICAgICAgICAgIC8vIFRoZSBhcmd1bWVudCBpcyBkZWFkLiBXZSBk
b24ndCBkbyBhbnkgY2hlY2tzIGZvciBzdWNoIGFyZ3VtZW50cy4KQEAgLTEwODMsMTQxICsxMDg0
LDE0NCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50VHlwZXMoCiAgICAgICAg
IFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbm9kZS52YXJpYWJsZUFj
Y2Vzc0RhdGEoKTsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IHZh
cmlhYmxlQWNjZXNzRGF0YS0+bG9jYWwoKTsKICAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0
ZWRUeXBlID0gdmFyaWFibGVBY2Nlc3NEYXRhLT5wcmVkaWN0aW9uKCk7CisKKyAgICAgICAgSlNW
YWx1ZVNvdXJjZSB2YWx1ZVNvdXJjZSA9IEpTVmFsdWVTb3VyY2UoSklUQ29tcGlsZXI6OmFkZHJl
c3NGb3IodmlydHVhbFJlZ2lzdGVyKSk7CisgICAgICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAg
ICAgICAgIGlmIChpc0ludDMyUHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkKLSAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgSklUQ29tcGlsZXI6OmFkZHJlc3NG
b3IodmlydHVhbFJlZ2lzdGVyKSwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7Cisg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5k
ZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6QmVsb3csIEpJVENvbXBpbGVyOjph
ZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
cikpOwogICAgICAgICBlbHNlIGlmIChpc0FycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkg
ewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAu
Z3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1
ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25a
ZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CisgICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5j
aFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRh
Z01hc2tSZWdpc3RlcikpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2
YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNz
SW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNf
aW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0J5dGVBcnJheVByZWRpY3Rpb24ocHJlZGlj
dGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAg
ICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0
ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFi
bGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0g
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBO
b05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNCeXRlQXJyYXk6OnNfaW5mbykpKTsKKyAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRl
eCwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIo
KSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCks
IEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cigmSlNCeXRlQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0Jvb2xlYW5Q
cmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVt
cCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NG
b3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBtX2ppdC54b3JQ
dHIoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KFZhbHVlRmFsc2UpKSwgdGVtcC5n
cHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVl
UmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblpl
cm8sIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90Pih+MSkpKSk7
CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2Rl
SW5kZXgsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAu
Z3ByKCksIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90Pih+MSkpKSk7CiAgICAgICAg
IH0gZWxzZSBpZiAoaXNJbnQ4QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAg
ICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQ
dHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7
Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygp
LCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRl
bXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0
ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQ4QXJyYXlEZXNjcmlwdG9yKCkubV9j
bGFzc0luZm8pKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVl
U291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5v
blplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOworICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2pp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQ4QXJyYXlEZXNjcmlwdG9y
KCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNJbnQxNkFycmF5UHJlZGlj
dGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhp
cyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZp
cnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0UHRy
KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVn
aXN0ZXIpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFs
dWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9P
ZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEo
KS0+aW50MTZBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKKyAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJh
bmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6
dGFnTWFza1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xh
c3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9i
YWxEYXRhKCktPmludDE2QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAg
IH0gZWxzZSBpZiAoaXNJbnQzMkFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAg
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2Fk
UHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkp
OwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3Mo
KSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0
ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJh
bmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
dGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+aW50MzJBcnJheURlc2NyaXB0b3IoKS5t
X2NsYXNzSW5mbykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFs
dWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CisgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmludDMyQXJyYXlEZXNjcmlw
dG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNVaW50OEFycmF5UHJl
ZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAo
dGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9y
KHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0
UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNr
UmVnaXN0ZXIpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpT
VmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0lu
Zm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERh
dGEoKS0+dWludDhBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKKyAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQu
YnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5m
bzo6dGFnTWFza1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5
cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6
Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5n
bG9iYWxEYXRhKCktPnVpbnQ4QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoaXNVaW50OENsYW1wZWRBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlw
ZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAg
bV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0
ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpT
VmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUs
IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQ4Q2xhbXBlZEFy
cmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hUZXN0UHRy
KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVn
aXN0ZXIpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3Vy
Y2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZz
ZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+
dWludDhDbGFtcGVkQXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0g
ZWxzZSBpZiAoaXNVaW50MTZBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAg
ICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0
cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsK
LSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCks
IE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVt
cC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5j
aFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRl
bXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQxNkFycmF5RGVzY3JpcHRvcigpLm1f
Y2xhc3NJbmZvKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1
ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpO
b25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDE2QXJyYXlEZXNjcmlw
dG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNVaW50MzJBcnJheVBy
ZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1w
KHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zv
cih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVz
dFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFz
a1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBK
U1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJ
bmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxE
YXRhKCktPnVpbnQzMkFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOworICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2pp
dC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJ
bmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxs
OjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0
Lmdsb2JhbERhdGEoKS0+dWludDMyQXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAg
ICAgICAgIH0gZWxzZSBpZiAoaXNGbG9hdDMyQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUp
KSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVt
cC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1Zh
bHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5v
blplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBt
X2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDMyQXJyYXlEZXNj
cmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJh
ZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9B
c3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcikp
OworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9k
ZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDMy
QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNG
bG9hdDY0QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJU
ZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1f
aml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQ
UkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhV
bmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBK
U0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDY0QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8p
KSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBu
b2RlSW5kZXgsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRl
bXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOworICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQ
dHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1w
LmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDY0QXJyYXlEZXNjcmlwdG9yKCkubV9j
bGFzc0luZm8pKSk7CiAgICAgICAgIH0KICNlbHNlCiAgICAgICAgIGlmIChpc0ludDMyUHJlZGlj
dGlvbihwcmVkaWN0ZWRUeXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3Vu
dGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3Rlciks
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKICAgICAgICAgZWxzZSBpZiAoaXNB
cnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFy
eSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjp0YWdG
b3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMy
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkNlbGxUYWcpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZh
bHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAg
ICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lz
dGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRh
YmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6
Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNBcnJh
eTo6c19pbmZvKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1
ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5m
b09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5m
bykpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0J5dGVBcnJheVByZWRpY3Rpb24ocHJlZGljdGVk
VHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAg
ICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVt
cC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1Zh
bHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CisgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1f
aml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklU
Q29tcGlsZXI6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05v
ZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNCeXRlQXJyYXk6OnNfaW5mbykpKTsKKyAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwg
bV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0J5dGVBcnJheTo6c19pbmZvKSkpOwogICAgICAgICB9
IGVsc2UgaWYgKGlzQm9vbGVhblByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpCi0gICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1f
aml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OnRhZ0Zv
cih2aXJ0dWFsUmVnaXN0ZXIpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZykpKTsK
KyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJ
bmRleCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxl
cjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCb29sZWFu
VGFnKSkpOwogICAgICAgICBlbHNlIGlmIChpc0ludDhBcnJheVByZWRpY3Rpb24ocHJlZGljdGVk
VHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAg
ICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVt
cC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1Zh
bHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CisgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1f
aml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklU
Q29tcGlsZXI6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05v
ZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmludDhBcnJheURl
c2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
QmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlND
ZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1f
aml0Lmdsb2JhbERhdGEoKS0+aW50OEFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwog
ICAgICAgICB9IGVsc2UgaWYgKGlzSW50MTZBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkp
IHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9q
aXQubG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIo
KSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVn
cygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVt
cC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CisgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJy
YW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGls
ZXI6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmludDE2QXJyYXlEZXNjcmlw
dG9yKCkubV9jbGFzc0luZm8pKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5
cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6
Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5n
bG9iYWxEYXRhKCktPmludDE2QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoaXNJbnQzMkFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewog
ICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5s
b2FkMzIoSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsK
LSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCks
IE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdw
cigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKKyAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNo
MzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6Q2VsbFRhZykpKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6
cGF5bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQu
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+aW50MzJBcnJheURlc2NyaXB0b3Io
KS5tX2NsYXNzSW5mbykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
dmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFz
c0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2Jh
bERhdGEoKS0+aW50MzJBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAg
fSBlbHNlIGlmIChpc1VpbnQ4QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAg
ICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWQz
MihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9O
b2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCks
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOworICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2gzMihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpDZWxsVGFnKSkpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXls
b2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0
ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50OEFycmF5RGVzY3JpcHRvcigpLm1f
Y2xhc3NJbmZvKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1
ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5m
b09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0
YSgpLT51aW50OEFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICB9IGVs
c2UgaWYgKGlzVWludDhDbGFtcGVkQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAg
ICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0Lmxv
YWQzMihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwot
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwg
Tm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3By
KCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOworICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2gz
MihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpDZWxsVGFnKSkpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpw
YXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50OENsYW1wZWRBcnJheURlc2Ny
aXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxs
OjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0
Lmdsb2JhbERhdGEoKS0+dWludDhDbGFtcGVkQXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8p
KSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNVaW50MTZBcnJheVByZWRpY3Rpb24ocHJlZGljdGVk
VHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAg
ICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVt
cC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1Zh
bHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CisgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1f
aml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklU
Q29tcGlsZXI6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05v
ZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQxNkFycmF5
RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBK
U0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MTZBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykp
KTsKICAgICAgICAgfSAgZWxzZSBpZiAoaXNVaW50MzJBcnJheVByZWRpY3Rpb24ocHJlZGljdGVk
VHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAg
ICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVt
cC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1Zh
bHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CisgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1f
aml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklU
Q29tcGlsZXI6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05v
ZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQzMkFycmF5
RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBK
U0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MzJBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykp
KTsKICAgICAgICAgfSAgZWxzZSBpZiAoaXNGbG9hdDMyQXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rl
ZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAg
ICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRl
bXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNW
YWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOworICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBt
X2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJ
VENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9O
b2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDMyQXJy
YXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCks
IEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0MzJBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5m
bykpKTsKICAgICAgICAgfSAgIGVsc2UgaWYgKGlzRmxvYXQ2NEFycmF5UHJlZGljdGlvbihwcmVk
aWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAg
ICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIp
LCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUs
IEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKKyAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRl
eCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKICAgICAgICAgICAgIG1faml0LmxvYWQz
MihKSVRDb21waWxlcjo6cGF5bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsK
LSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCks
IE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSks
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQ2
NEFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOworICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdw
cigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDY0QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFz
c0luZm8pKSk7CiAgICAgICAgIH0gCiAjZW5kaWYKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxMDg2MDMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE3NTksNyArMTc1OSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBpZiAo
IW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1faml0LmNvZGVC
bG9jaygpLT5hcHBlbmRPU1JFeGl0KE9TUkV4aXQoa2luZCwganNWYWx1ZVNvdXJjZSwgbV9qaXQu
Z3JhcGgoKS52YWx1ZVByb2ZpbGVGb3Iobm9kZUluZGV4KSwganVtcFRvRmFpbCwgdGhpcykpOwor
ICAgICAgICBtX2ppdC5jb2RlQmxvY2soKS0+YXBwZW5kT1NSRXhpdChPU1JFeGl0KGtpbmQsIGpz
VmFsdWVTb3VyY2UsIG1faml0LmdyYXBoKCkubWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZv
cihub2RlSW5kZXgpLCBqdW1wVG9GYWlsLCB0aGlzKSk7CiAgICAgfQogICAgIHZvaWQgc3BlY3Vs
YXRpb25DaGVjayhFeGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE5v
ZGVVc2Ugbm9kZVVzZSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAganVtcFRvRmFpbCkKICAgICB7CkBA
IC0xNzgyLDcgKzE3ODIsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLT5hcHBlbmRT
cGVjdWxhdGlvblJlY292ZXJ5KHJlY292ZXJ5KTsKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCkt
PmFwcGVuZE9TUkV4aXQoT1NSRXhpdChraW5kLCBqc1ZhbHVlU291cmNlLCBtX2ppdC5ncmFwaCgp
LnZhbHVlUHJvZmlsZUZvcihub2RlSW5kZXgpLCBqdW1wVG9GYWlsLCB0aGlzLCBtX2ppdC5jb2Rl
QmxvY2soKS0+bnVtYmVyT2ZTcGVjdWxhdGlvblJlY292ZXJpZXMoKSkpOworICAgICAgICBtX2pp
dC5jb2RlQmxvY2soKS0+YXBwZW5kT1NSRXhpdChPU1JFeGl0KGtpbmQsIGpzVmFsdWVTb3VyY2Us
IG1faml0LmdyYXBoKCkubWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcihub2RlSW5kZXgp
LCBqdW1wVG9GYWlsLCB0aGlzLCBtX2ppdC5jb2RlQmxvY2soKS0+bnVtYmVyT2ZTcGVjdWxhdGlv
blJlY292ZXJpZXMoKSkpOwogICAgIH0KICAgICB2b2lkIHNwZWN1bGF0aW9uQ2hlY2soRXhpdEtp
bmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBOb2RlVXNlIG5vZGVVc2UsIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwsIGNvbnN0IFNwZWN1bGF0aW9uUmVjb3Zlcnkm
IHJlY292ZXJ5KQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFy
aWFibGVBY2Nlc3NEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaAkocmV2aXNpb24gMTA4NjAzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaAkod29ya2luZyBjb3B5KQpA
QCAtNzAsNiArNzAsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbWVyZ2VQcmVkaWN0aW9u
KGZpbmQoKS0+bV9wcmVkaWN0aW9uLCBwcmVkaWN0aW9uKTsKICAgICB9CiAgICAgCisgICAgUHJl
ZGljdGVkVHlwZSBub25VbmlmaWVkUHJlZGljdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4g
bV9wcmVkaWN0aW9uOworICAgIH0KKyAgICAKICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24o
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGZpbmQoKS0+bV9wcmVkaWN0aW9uOwo=
</data>
<flag name="review"
          id="130780"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>