<?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>168872</bug_id>
          
          <creation_ts>2017-02-25 16:17:16 -0800</creation_ts>
          <short_desc>Simple line layout: Move coverage functions out of SimpleLineLayout.cpp</short_desc>
          <delta_ts>2017-02-25 23:21:16 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1281094</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2017-02-25 16:17:16 -0800</bug_when>
    <thetext>SimpleLineLayou.cpp should only have the core functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281095</commentid>
    <comment_count>1</comment_count>
      <attachid>302764</attachid>
    <who name="alan">zalan</who>
    <bug_when>2017-02-25 16:21:18 -0800</bug_when>
    <thetext>Created attachment 302764
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281097</commentid>
    <comment_count>2</comment_count>
      <attachid>302764</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-25 16:56:14 -0800</bug_when>
    <thetext>Comment on attachment 302764
Patch

Rejecting attachment 302764 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 302764, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

/Volumes/Data/EWS/WebKit/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://webkit-queues.webkit.org/results/3193563</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281110</commentid>
    <comment_count>3</comment_count>
      <attachid>302771</attachid>
    <who name="alan">zalan</who>
    <bug_when>2017-02-25 20:53:57 -0800</bug_when>
    <thetext>Created attachment 302771
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281115</commentid>
    <comment_count>4</comment_count>
      <attachid>302771</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-25 21:26:47 -0800</bug_when>
    <thetext>Comment on attachment 302771
Patch

Rejecting attachment 302771 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=release&apos;, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
86_64/DOMHTMLDListElement.dia -c /Volumes/Data/EWS/WebKit/Source/WebKit/mac/DOM/DOMHTMLDListElement.mm -o /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKitLegacy.build/Objects-normal/x86_64/DOMHTMLDListElement.o

** BUILD FAILED **


The following build commands failed:
	CompileC /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKitLegacy.build/Objects-normal/x86_64/DOM.o mac/DOM/DOM.mm normal x86_64 objective-c++ com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)

Full output: http://webkit-queues.webkit.org/results/3194484</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281129</commentid>
    <comment_count>5</comment_count>
      <attachid>302781</attachid>
    <who name="alan">zalan</who>
    <bug_when>2017-02-25 22:40:28 -0800</bug_when>
    <thetext>Created attachment 302781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281133</commentid>
    <comment_count>6</comment_count>
      <attachid>302781</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-25 23:21:12 -0800</bug_when>
    <thetext>Comment on attachment 302781
Patch

Clearing flags on attachment: 302781

Committed r213009: &lt;http://trac.webkit.org/changeset/213009&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281134</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-25 23:21:16 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302764</attachid>
            <date>2017-02-25 16:21:18 -0800</date>
            <delta_ts>2017-02-25 20:53:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168872-20170225161826.patch</filename>
            <type>text/plain</type>
            <size>44518</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzMDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjhiOWM0NTVmNTdiNDcy
MjBlZmM4MGE5OWMxZjg0MzRjZjMyZWU3Zi4uMTA0Y2ZmYWIwMjNhN2Q0ODljMDI3ZTJkOWJjMTBj
ODVhNThhYjQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE3LTAyLTI1ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxlIGxpbmUgbGF5b3V0
OiBNb3ZlIGNvdmVyYWdlIGZ1bmN0aW9ucyBvdXQgb2YgU2ltcGxlTGluZUxheW91dC5jcHAKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODg3MgorCisg
ICAgICAgIFNpbXBsZUxpbmVMYXlvdXQuY3BwIGlzIGZvciBjb3JlIGZ1bmN0aW9ucyBvbmx5Lgor
CisgICAgICAgIE5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHA6CisgICAgICAgICogcmVu
ZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGlu
ZUxheW91dDo6Y2FuVXNlRm9yV2l0aFJlYXNvbik6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVM
aW5lTGF5b3V0OjpwcmludFJlYXNvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVMaW5lTGF5b3V0OjpwcmludFJlYXNvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U2ltcGxlTGluZUxheW91dDo6cHJpbnRUZXh0Rm9yU3VidHJlZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojp0ZXh0TGVuZ3RoRm9yU3VidHJlZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojpjb2xsZWN0Tm9uRW1wdHlM
ZWFmUmVuZGVyQmxvY2tGbG93cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVM
aW5lTGF5b3V0Ojpjb2xsZWN0Tm9uRW1wdHlMZWFmUmVuZGVyQmxvY2tGbG93c0ZvckN1cnJlbnRQ
YWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OnRvZ2ds
ZVNpbXBsZUxpbmVMYXlvdXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGlu
ZUxheW91dDo6cHJpbnRTaW1wbGVMaW5lTGF5b3V0QmxvY2tMaXN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OnByaW50U2ltcGxlTGluZUxheW91dENvdmVy
YWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OnByaW50UmVhc29uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OnByaW50UmVhc29ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpwcmludFRleHRGb3JTdWJ0cmVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OnRleHRMZW5ndGhGb3JTdWJ0cmVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmNvbGxlY3ROb25FbXB0eUxlYWZSZW5kZXJC
bG9ja0Zsb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmNvbGxlY3RO
b25FbXB0eUxlYWZSZW5kZXJCbG9ja0Zsb3dzRm9yQ3VycmVudFBhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U2ltcGxlTGluZUxheW91dDo6dG9nZ2xlU2ltcGxlTGluZUxheW91dCk6CisgICAgICAg
IChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpwcmludFNpbXBsZUxpbmVMYXlvdXRCbG9ja0xp
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6cHJpbnRTaW1wbGVMaW5l
TGF5b3V0Q292ZXJhZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Q292
ZXJhZ2UuaDogQWRkZWQuCisKIDIwMTctMDItMjQgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJv
QGFwcGxlLmNvbT4KIAogICAgICAgICBbUmVzb3VyY2UgVGltaW5nXSBNZWRpYSBlbGVtZW50cyBp
bml0aWF0ZWQgbG9hZHMgc2hvdWxkIHNldCB0aGUgaW5pdGlhdG9yVHlwZSB0byB0aGVpciBlbGVt
ZW50IG5hbWUgKHZpZGVvL2F1ZGlvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAyZWVlMmExNGE2
NTMzMjIyZDYyOTlhZmU3NDY2NDM3MWQxNTZkMmM1Li5jOTIxOWI1YzQ2MWU0YTJjMDc3OWEzNDEz
ZTVjZDM2ZWYzZDY3MDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjQ4MCw2ICsyNDgwLDcg
QEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9TY3JvbGxBbGlnbm1lbnQuY3Bw
CiAgICAgcmVuZGVyaW5nL1NlbGVjdGlvblN1YnRyZWVSb290LmNwcAogICAgIHJlbmRlcmluZy9T
aW1wbGVMaW5lTGF5b3V0LmNwcAorICAgIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Q292ZXJh
Z2UuY3BwCiAgICAgcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMuY3BwCiAg
ICAgcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCiAgICAgcmVuZGVyaW5n
L1NpbXBsZUxpbmVMYXlvdXRQYWdpbmF0aW9uLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFkMTk5ODVhN2ZkZGY4NjM5YmQ1
ODM0NjhlZWJmYWM5NzJlMDk3ZjQuLjk4ZThiMGM5NGIwYWQxYjMwN2VjYmUyYzU5YzlhZWI1ZjRk
M2I1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTU2OSw2ICs1NjksOCBAQAogCQkxMEZCMDg0QjE0RTE1QzdFMDBBM0RCOTgg
LyogUHVibGljVVJMTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTBGQjA4NEExNEUxNUM3RTAwQTNEQjk4IC8qIFB1YmxpY1VSTE1hbmFnZXIu
aCAqLzsgfTsKIAkJMTEyQjM0RDIxRTYwQjhBNzAwQkIzMTBBIC8qIFNpbXBsZUxpbmVMYXlvdXRQ
YWdpbmF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDExMkIzNEQwMUU2MEI4QTcwMEJCMzEwQSAvKiBTaW1wbGVMaW5lTGF5b3V0UGFnaW5hdGlv
bi5jcHAgKi87IH07CiAJCTExMkIzNEQ1MUU2MEI5ODMwMEJCMzEwQSAvKiBTaW1wbGVMaW5lTGF5
b3V0UGFnaW5hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTEyQjM0RDQxRTYwQjk4MzAwQkIzMTBBIC8qIFNpbXBsZUxpbmVMYXlvdXRQYWdpbmF0
aW9uLmggKi87IH07CisJCTExRTA2N0VDMUU2MjQ2MTMwMDE2MkQxNiAvKiBTaW1wbGVMaW5lTGF5
b3V0Q292ZXJhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTFFMDY3RUIxRTYyNDYxMzAwMTYyRDE2IC8qIFNpbXBsZUxpbmVMYXlvdXRDb3ZlcmFn
ZS5jcHAgKi87IH07CisJCTExRTA2N0VFMUU2MjQ2RTUwMDE2MkQxNiAvKiBTaW1wbGVMaW5lTGF5
b3V0Q292ZXJhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDExRTA2N0VEMUU2MjQ2RTUwMDE2MkQxNiAvKiBTaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2Uu
aCAqLzsgfTsKIAkJMTIwREUzRUQxQzg2Q0EzRTAwQjZENEREIC8qIFdlYkFuaW1hdGlvbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMjBERTNFQTFD
ODAxNjFDMDBCNkQ0REQgLyogV2ViQW5pbWF0aW9uLmNwcCAqLzsgfTsKIAkJMTIwREUzRjExQzg2
Q0NDNjAwQjZENEREIC8qIEFuaW1hdGlvbkVmZmVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMjBERTNFRTFDODZDQ0JEMDBCNkQ0REQgLyogQW5p
bWF0aW9uRWZmZWN0LmNwcCAqLzsgfTsKIAkJMTIwREUzRjgxQzg3QzVBODAwQjZENEREIC8qIEpT
V2ViQW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxMjBERTNGNTFDODdDNThFMDBCNkQ0REQgLyogSlNXZWJBbmltYXRpb24uaCAqLzsgfTsK
QEAgLTc2OTIsNiArNzY5NCw4IEBACiAJCTEwRkIwODRBMTRFMTVDN0UwMEEzREI5OCAvKiBQdWJs
aWNVUkxNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1YmxpY1VS
TE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTEyQjM0RDAxRTYwQjhB
NzAwQkIzMTBBIC8qIFNpbXBsZUxpbmVMYXlvdXRQYWdpbmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpbXBsZUxpbmVMYXlvdXRQYWdpbmF0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTEyQjM0RDQxRTYwQjk4MzAwQkIzMTBBIC8q
IFNpbXBsZUxpbmVMYXlvdXRQYWdpbmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNpbXBsZUxpbmVMYXlvdXRQYWdpbmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTExRTA2N0VCMUU2MjQ2MTMwMDE2MkQxNiAvKiBTaW1wbGVMaW5lTGF5b3V0Q292
ZXJhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2ltcGxlTGlu
ZUxheW91dENvdmVyYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTFFMDY3
RUQxRTYyNDZFNTAwMTYyRDE2IC8qIFNpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTIwREUzRUExQzgwMTYxQzAwQjZENEREIC8qIFdl
YkFuaW1hdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJB
bmltYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxMjBERTNFQjFDODAx
NjFDMDBCNkQ0REQgLyogV2ViQW5pbWF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkFuaW1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxMjBE
RTNFQzFDODAxNjFDMDBCNkQ0REQgLyogV2ViQW5pbWF0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBXZWJBbmltYXRpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjQzNTEsNiArMjQzNTUsOCBAQAogCQkJCUNEQ0ZBQkJCMThDMEFFMzEwMDZGODQ1MCAvKiBTZWxl
Y3Rpb25TdWJ0cmVlUm9vdC5oICovLAogCQkJCUU0ODk0NEEwMTgwQjU3RDgwMEYxNjVEOCAvKiBT
aW1wbGVMaW5lTGF5b3V0LmNwcCAqLywKIAkJCQlFNDg5NDRBMTE4MEI1N0Q4MDBGMTY1RDggLyog
U2ltcGxlTGluZUxheW91dC5oICovLAorCQkJCTExRTA2N0VCMUU2MjQ2MTMwMDE2MkQxNiAvKiBT
aW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuY3BwICovLAorCQkJCTExRTA2N0VEMUU2MjQ2RTUwMDE2
MkQxNiAvKiBTaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuaCAqLywKIAkJCQk1ODVENkUwMTFBMUE3
OTJFMDBGQTRGMTIgLyogU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5jcHAgKi8sCiAJCQkJ
NTg1RDZFMDIxQTFBNzkyRTAwRkE0RjEyIC8qIFNpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMu
aCAqLywKIAkJCQlFNEU5QjExQTE4MTQ1NjkyMDAzQUNDREYgLyogU2ltcGxlTGluZUxheW91dEZ1
bmN0aW9ucy5jcHAgKi8sCkBAIC0yNTk2MSw2ICsyNTk2Nyw3IEBACiAJCQkJOTdCMzhFMjcxNTFD
NDI3MTAwNDYyMkU5IC8qIERPTVdpbmRvd05vdGlmaWNhdGlvbnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk3RDJBRDA0MTRCODIzQTYwMDkzREYzMiAvKiBET01XaW5kb3dQcm9wZXJ0eS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODlGNjBCMTExNTdGNjg2RTAwNzVFMTU3IC8qIERPTVdpbmRvd1F1b3Rh
LmggaW4gSGVhZGVycyAqLywKKwkJCQkxMUUwNjdFRTFFNjI0NkU1MDAxNjJEMTYgLyogU2ltcGxl
TGluZUxheW91dENvdmVyYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBQTJBNUFENjE2QTQ4NjE2
MDA5NzVBMjUgLyogRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBOENDQkI0OTE1MUY4MzE2MDBBQjdDRTkgLyogRE9NV2luZG93V2ViRGF0YWJhc2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDNTNEQTJFMTE0MzEyMUUwMDBEODE3RSAvKiBET01XcmFwcGVyV29y
bGQuaCBpbiBIZWFkZXJzICovLApAQCAtMzIxMzYsNiArMzIxNDMsNyBAQAogCQkJCTk3NTlFOTQy
MTRFRjFDRjgwMDI2QTJERCAvKiBUZXh0VHJhY2tDdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MDcxQTlFQzIxNjhGQkM0MzAwMjYyOUY5IC8qIFRleHRUcmFja0N1ZUdlbmVyaWMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTc1OUU5NDUxNEVGMUNGODAwMjZBMkREIC8qIFRleHRUcmFja0N1ZUxp
c3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTFFMDY3RUMxRTYyNDYxMzAwMTYyRDE2IC8qIFNp
bXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzY5NzA4NjE0
NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
MUFENEU3MzEzQTEyQTQ2MDA4NDZCMjcgLyogVGV4dFRyYWNrTG9hZGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUNEMUU3MzQ3MTY3QkM3OEUwMDlBODg1RCAvKiBUZXh0VHJhY2tSZXByZXNlbnRh
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyaW5nQWxsSW5PbmUuY3BwCmluZGV4IDI2ZmRlNWVlMTIxNTc3ZTkxOGVjYzQyZGQyODgyYmUx
OWZmMzU3YjIuLmFjNTc2MTU3NThjMDc2MDYwOTExMjEyNDg4YTJlMTgwODc2MGI4MGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcmluZ0FsbEluT25lLmNwcApAQCAtMTQy
LDYgKzE0Miw3IEBACiAjaW5jbHVkZSAiU2Nyb2xsQWxpZ25tZW50LmNwcCIKICNpbmNsdWRlICJT
ZWxlY3Rpb25TdWJ0cmVlUm9vdC5jcHAiCiAjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dC5jcHAi
CisjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmNwcCIKICNpbmNsdWRlICJTaW1w
bGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmNwcCIKICNpbmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0
RnVuY3Rpb25zLmNwcCIKICNpbmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0UGFnaW5hdGlvbi5jcHAi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKaW5kZXgg
ZWE0MjI2MjBjZTdlMWI0MWFjZThiYTQyNTRmY2QxMWFkNDBmNzM2ZS4uNTQyMTE1MzA3YWRhZjc0
ZGQ5NDRmY2RjMjEyMjg1MzcxMjk2NDllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9TaW1wbGVMaW5lTGF5b3V0LmNwcApAQCAtNDQsODYgKzQ0LDE3IEBACiAjaW5jbHVkZSAiUmVu
ZGVyU3R5bGUuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4
dENvbnRyb2wuaCIKLSNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmgiCiAjaW5jbHVkZSAi
U2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXRU
ZXh0RnJhZ21lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0
UGFpbnRTdHlsZS5oIgotI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogbmFtZXNwYWNlIFNpbXBsZUxpbmVMYXlvdXQgewogCiAjaWZuZGVmIE5ERUJVRwotdm9p
ZCBwcmludFNpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZSgpOwotdm9pZCBwcmludFNpbXBsZUxpbmVM
YXlvdXRCbG9ja0xpc3QoKTsKLXZvaWQgdG9nZ2xlU2ltcGxlTGluZUxheW91dCgpOwotI2VuZGlm
Ci0KLWVudW0gQXZvaWRhbmNlUmVhc29uXyA6IHVpbnQ2NF90IHsKLSAgICBGbG93SXNJbnNpZGVS
ZWdpb24gICAgICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgMCwKLSAgICBGbG93SGFzSG9yaXpv
bmFsV3JpdGluZ01vZGUgICAgICAgICAgID0gMUxMVSAgPDwgMSwKLSAgICBGbG93SGFzT3V0bGlu
ZSAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgMiwKLSAgICBGbG93SXNSdWJ5ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgMywKLSAgICBGbG93SXNQYWdpbmF0
ZWQgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgNCwKLSAgICBGbG93SGFzVGV4dE92
ZXJmbG93ICAgICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgNSwKLSAgICBGbG93SXNEZXByaWNh
dGVkRmxleEJveCAgICAgICAgICAgICAgID0gMUxMVSAgPDwgNiwKLSAgICBGbG93UGFyZW50SXNQ
bGFjZWhvbGRlckVsZW1lbnQgICAgICAgID0gMUxMVSAgPDwgNywKLSAgICBGbG93UGFyZW50SXNU
ZXh0QXJlYVdpdGhXcmFwcGluZyAgICAgID0gMUxMVSAgPDwgOCwKLSAgICBGbG93SGFzTm9uU3Vw
cG9ydGVkQ2hpbGQgICAgICAgICAgICAgID0gMUxMVSAgPDwgOSwKLSAgICBGbG93SGFzVW5zdXBw
b3J0ZWRGbG9hdCAgICAgICAgICAgICAgID0gMUxMVSAgPDwgMTAsCi0gICAgRmxvd0hhc1Vuc3Vw
cG9ydGVkVW5kZXJsaW5lRGVjb3JhdGlvbiA9IDFMTFUgIDw8IDExLAotICAgIEZsb3dIYXNKdXN0
aWZpZWROb25MYXRpblRleHQgICAgICAgICAgPSAxTExVICA8PCAxMiwKLSAgICBGbG93SGFzT3Zl
cmZsb3dOb3RWaXNpYmxlICAgICAgICAgICAgID0gMUxMVSAgPDwgMTMsCi0gICAgRmxvd0hhc1dl
YktpdE5CU1BNb2RlICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDE0LAotICAgIEZsb3dJc05v
dExUUiAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVICA8PCAxNSwKLSAgICBGbG93SGFz
TGluZUJveENvbnRhaW5Qcm9wZXJ0eSAgICAgICAgID0gMUxMVSAgPDwgMTYsCi0gICAgRmxvd0lz
Tm90VG9wVG9Cb3R0b20gICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDE3LAotICAgIEZsb3dI
YXNMaW5lQnJlYWsgICAgICAgICAgICAgICAgICAgICAgPSAxTExVICA8PCAxOCwKLSAgICBGbG93
SGFzTm9uTm9ybWFsVW5pY29kZUJpRGkgICAgICAgICAgID0gMUxMVSAgPDwgMTksCi0gICAgRmxv
d0hhc1JUTE9yZGVyaW5nICAgICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDIwLAotICAgIEZs
b3dIYXNMaW5lQWxpZ25FZGdlcyAgICAgICAgICAgICAgICAgPSAxTExVICA8PCAyMSwKLSAgICBG
bG93SGFzTGluZVNuYXAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgMjIsCi0gICAg
Rmxvd0hhc1RleHRFbXBoYXNpc0ZpbGxPck1hcmsgICAgICAgICA9IDFMTFUgIDw8IDIzLAotICAg
IEZsb3dIYXNUZXh0U2hhZG93ICAgICAgICAgICAgICAgICAgICAgPSAxTExVICA8PCAyNCwKLSAg
ICBGbG93SGFzUHNldWRvRmlyc3RMaW5lICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgMjUsCi0g
ICAgRmxvd0hhc1BzZXVkb0ZpcnN0TGV0dGVyICAgICAgICAgICAgICA9IDFMTFUgIDw8IDI2LAot
ICAgIEZsb3dIYXNUZXh0Q29tYmluZSAgICAgICAgICAgICAgICAgICAgPSAxTExVICA8PCAyNywK
LSAgICBGbG93SGFzVGV4dEZpbGxCb3ggICAgICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgMjgs
Ci0gICAgRmxvd0hhc0JvcmRlckZpdExpbmVzICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDI5
LAotICAgIEZsb3dIYXNOb25BdXRvTGluZUJyZWFrICAgICAgICAgICAgICAgPSAxTExVICA8PCAz
MCwKLSAgICBGbG93SGFzTm9uQXV0b1RyYWlsaW5nV29yZCAgICAgICAgICAgID0gMUxMVSAgPDwg
MzEsCi0gICAgRmxvd0hhc1NWR0ZvbnQgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8
IDMyLAotICAgIEZsb3dUZXh0SXNFbXB0eSAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVICA8
PCAzMywKLSAgICBGbG93VGV4dEhhc1NvZnRIeXBoZW4gICAgICAgICAgICAgICAgID0gMUxMVSAg
PDwgMzQsCi0gICAgRmxvd1RleHRIYXNEaXJlY3Rpb25DaGFyYWN0ZXIgICAgICAgICA9IDFMTFUg
IDw8IDM1LAotICAgIEZsb3dJc01pc3NpbmdQcmltYXJ5Rm9udCAgICAgICAgICAgICAgPSAxTExV
ICA8PCAzNiwKLSAgICBGbG93UHJpbWFyeUZvbnRJc0luc3VmZmljaWVudCAgICAgICAgID0gMUxM
VSAgPDwgMzcsCi0gICAgRmxvd1RleHRJc0NvbWJpbmVUZXh0ICAgICAgICAgICAgICAgICA9IDFM
TFUgIDw8IDM4LAotICAgIEZsb3dUZXh0SXNSZW5kZXJDb3VudGVyICAgICAgICAgICAgICAgPSAx
TExVICA8PCAzOSwKLSAgICBGbG93VGV4dElzUmVuZGVyUXVvdGUgICAgICAgICAgICAgICAgID0g
MUxMVSAgPDwgNDAsCi0gICAgRmxvd1RleHRJc1RleHRGcmFnbWVudCAgICAgICAgICAgICAgICA9
IDFMTFUgIDw8IDQxLAotICAgIEZsb3dUZXh0SXNTVkdJbmxpbmVUZXh0ICAgICAgICAgICAgICAg
PSAxTExVICA8PCA0MiwKLSAgICBGbG93SGFzQ29tcGxleEZvbnRDb2RlUGF0aCAgICAgICAgICAg
ID0gMUxMVSAgPDwgNDMsCi0gICAgRmVhdHVyZUlzRGlzYWJsZWQgICAgICAgICAgICAgICAgICAg
ICA9IDFMTFUgIDw8IDQ0LAotICAgIEZsb3dIYXNOb1BhcmVudCAgICAgICAgICAgICAgICAgICAg
ICAgPSAxTExVICA8PCA0NSwKLSAgICBGbG93SGFzTm9DaGlsZCAgICAgICAgICAgICAgICAgICAg
ICAgID0gMUxMVSAgPDwgNDYsCi0gICAgRmxvd0NoaWxkSXNTZWxlY3RlZCAgICAgICAgICAgICAg
ICAgICA9IDFMTFUgIDw8IDQ3LAotICAgIEZsb3dIYXNIYW5naW5nUHVuY3R1YXRpb24gICAgICAg
ICAgICAgPSAxTExVICA8PCA0OCwKLSAgICBGbG93Rm9udEhhc092ZXJmbG93R2x5cGggICAgICAg
ICAgICAgID0gMUxMVSAgPDwgNDksCi0gICAgRmxvd1RleHRIYXNTdXJyb2dhdGVQYWlyICAgICAg
ICAgICAgICA9IDFMTFUgIDw8IDUwLAotICAgIEVuZE9mUmVhc29ucyAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAxTExVICA8PCA1MQotfTsKLWNvbnN0IHVuc2lnbmVkIE5vUmVhc29uID0gMDsK
LQotdHlwZWRlZiB1aW50NjRfdCBBdm9pZGFuY2VSZWFzb247Ci10eXBlZGVmIHVpbnQ2NF90IEF2
b2lkYW5jZVJlYXNvbkZsYWdzOwotCi1lbnVtIGNsYXNzIEluY2x1ZGVSZWFzb25zIHsgRmlyc3Qg
LCBBbGwgfTsKLQotI2lmbmRlZiBOREVCVUcKICNkZWZpbmUgU0VUX1JFQVNPTl9BTkRfUkVUVVJO
X0lGX05FRURFRChyZWFzb24sIHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKSB7IFwKICAgICAgICAg
cmVhc29ucyB8PSByZWFzb247IFwKICAgICAgICAgaWYgKGluY2x1ZGVSZWFzb25zID09IEluY2x1
ZGVSZWFzb25zOjpGaXJzdCkgXApAQCAtMjk4LDcgKzIyOSw3IEBAIHN0YXRpYyBBdm9pZGFuY2VS
ZWFzb25GbGFncyBjYW5Vc2VGb3JTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEluY2x1
ZGVSZWFzCiAgICAgcmV0dXJuIHJlYXNvbnM7CiB9CiAKLXN0YXRpYyBBdm9pZGFuY2VSZWFzb25G
bGFncyBjYW5Vc2VGb3JXaXRoUmVhc29uKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgSW5j
bHVkZVJlYXNvbnMgaW5jbHVkZVJlYXNvbnMpCitBdm9pZGFuY2VSZWFzb25GbGFncyBjYW5Vc2VG
b3JXaXRoUmVhc29uKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgSW5jbHVkZVJlYXNvbnMg
aW5jbHVkZVJlYXNvbnMpCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIHN0YXRpYyBzdGQ6Om9uY2Vf
ZmxhZyBvbmNlRmxhZzsKQEAgLTk0OCwzMTkgKzg3OSw1IEBAIExheW91dDo6TGF5b3V0KGNvbnN0
IFJ1blZlY3RvciYgcnVuVmVjdG9yLCB1bnNpZ25lZCBsaW5lQ291bnQpCiAgICAgbWVtY3B5KG1f
cnVucywgcnVuVmVjdG9yLmRhdGEoKSwgbV9ydW5Db3VudCAqIHNpemVvZihSdW4pKTsKIH0KIAot
I2lmbmRlZiBOREVCVUcKLXN0YXRpYyB2b2lkIHByaW50UmVhc29uKEF2b2lkYW5jZVJlYXNvbiBy
ZWFzb24sIFRleHRTdHJlYW0mIHN0cmVhbSkKLXsKLSAgICBzd2l0Y2ggKHJlYXNvbikgewotICAg
IGNhc2UgRmxvd0lzSW5zaWRlUmVnaW9uOgotICAgICAgICBzdHJlYW0gPDwgImZsb3cgaXMgaW5z
aWRlIHJlZ2lvbiI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmxvd0hhc0hvcml6b25hbFdy
aXRpbmdNb2RlOgotICAgICAgICBzdHJlYW0gPDwgImhvcml6b250YWwgd3JpdGluZyBtb2RlIjsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93SGFzT3V0bGluZToKLSAgICAgICAgc3RyZWFt
IDw8ICJvdXRsaW5lIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93SXNSdWJ5OgotICAg
ICAgICBzdHJlYW0gPDwgInJ1YnkiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dIYXNI
YW5naW5nUHVuY3R1YXRpb246Ci0gICAgICAgIHN0cmVhbSA8PCAiaGFuZ2luZyBwdW5jdHVhdGlv
biI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmxvd0lzUGFnaW5hdGVkOgotICAgICAgICBz
dHJlYW0gPDwgInBhZ2luYXRlZCI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmxvd0hhc1Rl
eHRPdmVyZmxvdzoKLSAgICAgICAgc3RyZWFtIDw8ICJ0ZXh0LW92ZXJmbG93IjsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBGbG93SXNEZXByaWNhdGVkRmxleEJveDoKLSAgICAgICAgc3RyZWFt
IDw8ICJkZXByaWNhdGVkRmxleEJveCI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmxvd1Bh
cmVudElzUGxhY2Vob2xkZXJFbGVtZW50OgotICAgICAgICBzdHJlYW0gPDwgInBsYWNlaG9sZGVy
IGVsZW1lbnQiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dQYXJlbnRJc1RleHRBcmVh
V2l0aFdyYXBwaW5nOgotICAgICAgICBzdHJlYW0gPDwgIndyYXBwaW5nIHRleHRhcmVhIjsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93SGFzTm9uU3VwcG9ydGVkQ2hpbGQ6Ci0gICAgICAg
IHN0cmVhbSA8PCAibmVzdGVkIHJlbmRlcmVycyI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
Rmxvd0hhc1Vuc3VwcG9ydGVkRmxvYXQ6Ci0gICAgICAgIHN0cmVhbSA8PCAiY29tcGxpY2F0ZWQg
ZmxvYXQiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dIYXNVbnN1cHBvcnRlZFVuZGVy
bGluZURlY29yYXRpb246Ci0gICAgICAgIHN0cmVhbSA8PCAidGV4dC11bmRlcmxpbmUtcG9zaXRp
b246IHVuZGVyIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93SGFzSnVzdGlmaWVkTm9u
TGF0aW5UZXh0OgotICAgICAgICBzdHJlYW0gPDwgInRleHQtYWxpZ246IGp1c3RpZnkgd2l0aCBu
b24tbGF0aW4gdGV4dCI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmxvd0hhc092ZXJmbG93
Tm90VmlzaWJsZToKLSAgICAgICAgc3RyZWFtIDw8ICJvdmVyZmxvdzogaGlkZGVuIHwgc2Nyb2xs
IHwgYXV0byI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmxvd0hhc1dlYktpdE5CU1BNb2Rl
OgotICAgICAgICBzdHJlYW0gPDwgIi13ZWJraXQtbmJzcC1tb2RlOiBzcGFjZSI7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgRmxvd0lzTm90TFRSOgotICAgICAgICBzdHJlYW0gPDwgImRpciBp
cyBub3QgTFRSIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93SGFzTGluZUJveENvbnRh
aW5Qcm9wZXJ0eToKLSAgICAgICAgc3RyZWFtIDw8ICJsaW5lLWJveC1jb250YWluIHZhbHVlIGlu
ZGljYXRlcyB2YXJpYWJsZSBsaW5lIGhlaWdodCI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
Rmxvd0lzTm90VG9wVG9Cb3R0b206Ci0gICAgICAgIHN0cmVhbSA8PCAibm9uIHRvcC10by1ib3R0
b20gZmxvdyI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmxvd0hhc0xpbmVCcmVhazoKLSAg
ICAgICAgc3RyZWFtIDw8ICJsaW5lLWJyZWFrIHByb3BlcnR5IjsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBGbG93SGFzTm9uTm9ybWFsVW5pY29kZUJpRGk6Ci0gICAgICAgIHN0cmVhbSA8PCAi
bm9uLW5vcm1hbCBVbmljb2RlIGJpZGkiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dI
YXNSVExPcmRlcmluZzoKLSAgICAgICAgc3RyZWFtIDw8ICItd2Via2l0LXJ0bC1vcmRlcmluZyI7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmxvd0hhc0xpbmVBbGlnbkVkZ2VzOgotICAgICAg
ICBzdHJlYW0gPDwgIi13ZWJraXQtbGluZS1hbGlnbiBlZGdlcyI7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgRmxvd0hhc0xpbmVTbmFwOgotICAgICAgICBzdHJlYW0gPDwgIi13ZWJraXQtbGlu
ZS1zbmFwIHByb3BlcnR5IjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93SGFzVGV4dEVt
cGhhc2lzRmlsbE9yTWFyazoKLSAgICAgICAgc3RyZWFtIDw8ICJ0ZXh0LWVtcGhhc2lzIChmaWxs
L21hcmspIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93SGFzUHNldWRvRmlyc3RMaW5l
OgotICAgICAgICBzdHJlYW0gPDwgImZpcnN0LWxpbmUiOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEZsb3dIYXNQc2V1ZG9GaXJzdExldHRlcjoKLSAgICAgICAgc3RyZWFtIDw8ICJmaXJzdC1s
ZXR0ZXIiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dIYXNUZXh0Q29tYmluZToKLSAg
ICAgICAgc3RyZWFtIDw8ICJ0ZXh0IGNvbWJpbmUiOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEZsb3dIYXNUZXh0RmlsbEJveDoKLSAgICAgICAgc3RyZWFtIDw8ICJiYWNrZ3JvdW5kLWNvbG9y
ICh0ZXh0LWZpbGwpIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93SGFzQm9yZGVyRml0
TGluZXM6Ci0gICAgICAgIHN0cmVhbSA8PCAiLXdlYmtpdC1ib3JkZXItZml0IjsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBGbG93SGFzTm9uQXV0b0xpbmVCcmVhazoKLSAgICAgICAgc3RyZWFt
IDw8ICJsaW5lLWJyZWFrIGlzIG5vdCBhdXRvIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBG
bG93SGFzTm9uQXV0b1RyYWlsaW5nV29yZDoKLSAgICAgICAgc3RyZWFtIDw8ICItYXBwbGUtdHJh
aWxpbmctd29yZCBpcyBub3QgYXV0byI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmxvd0hh
c1NWR0ZvbnQ6Ci0gICAgICAgIHN0cmVhbSA8PCAiU1ZHIGZvbnQiOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEZsb3dUZXh0SGFzU29mdEh5cGhlbjoKLSAgICAgICAgc3RyZWFtIDw8ICJzb2Z0
IGh5cGhlbiBjaGFyYWN0ZXIiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dUZXh0SGFz
RGlyZWN0aW9uQ2hhcmFjdGVyOgotICAgICAgICBzdHJlYW0gPDwgImRpcmVjdGlvbiBjaGFyYWN0
ZXIiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dJc01pc3NpbmdQcmltYXJ5Rm9udDoK
LSAgICAgICAgc3RyZWFtIDw8ICJtaXNzaW5nIHByaW1hcnkgZm9udCI7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgRmxvd1ByaW1hcnlGb250SXNJbnN1ZmZpY2llbnQ6Ci0gICAgICAgIHN0cmVh
bSA8PCAibWlzc2luZyBnbHlwaCBvciBnbHlwaCBuZWVkcyBhbm90aGVyIGZvbnQiOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEZsb3dUZXh0SXNDb21iaW5lVGV4dDoKLSAgICAgICAgc3RyZWFt
IDw8ICJ0ZXh0IGlzIGNvbWJpbmUiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dUZXh0
SXNSZW5kZXJDb3VudGVyOgotICAgICAgICBzdHJlYW0gPDwgInVuc3VwcG9ydGVkIFJlbmRlckNv
dW50ZXIiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dUZXh0SXNSZW5kZXJRdW90ZToK
LSAgICAgICAgc3RyZWFtIDw8ICJ1bnN1cHBvcnRlZCBSZW5kZXJRdW90ZSI7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgRmxvd1RleHRJc1RleHRGcmFnbWVudDoKLSAgICAgICAgc3RyZWFtIDw8
ICJ1bnN1cHBvcnRlZCBUZXh0RnJhZ21lbnQiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZs
b3dUZXh0SXNTVkdJbmxpbmVUZXh0OgotICAgICAgICBzdHJlYW0gPDwgInVuc3VwcG9ydGVkIFNW
R0lubGluZVRleHQiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dIYXNDb21wbGV4Rm9u
dENvZGVQYXRoOgotICAgICAgICBzdHJlYW0gPDwgInRleHQgd2l0aCBjb21wbGV4IGZvbnQgY29k
ZXBhdGgiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dIYXNUZXh0U2hhZG93OgotICAg
ICAgICBzdHJlYW0gPDwgInRleHQtc2hhZG93IjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBG
bG93Q2hpbGRJc1NlbGVjdGVkOgotICAgICAgICBzdHJlYW0gPDwgInNlbGVjdGVkIGNvbnRlbnQi
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dGb250SGFzT3ZlcmZsb3dHbHlwaDoKLSAg
ICAgICAgc3RyZWFtIDw8ICItd2Via2l0LWxpbmUtYm94LWNvbnRhaW46IGdseXBocyB3aXRoIG92
ZXJmbG93aW5nIHRleHQuIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93VGV4dEhhc1N1
cnJvZ2F0ZVBhaXI6Ci0gICAgICAgIHN0cmVhbSA8PCAic3Vycm9nYXRlIHBhaXIiOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEZsb3dUZXh0SXNFbXB0eToKLSAgICBjYXNlIEZsb3dIYXNOb0No
aWxkOgotICAgIGNhc2UgRmxvd0hhc05vUGFyZW50OgotICAgIGNhc2UgRmVhdHVyZUlzRGlzYWJs
ZWQ6Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9p
ZCBwcmludFJlYXNvbnMoQXZvaWRhbmNlUmVhc29uRmxhZ3MgcmVhc29ucywgVGV4dFN0cmVhbSYg
c3RyZWFtKQotewotICAgIGJvb2wgZmlyc3QgPSB0cnVlOwotICAgIGZvciAoYXV0byByZWFzb25J
dGVtID0gRW5kT2ZSZWFzb25zID4+IDE7IHJlYXNvbkl0ZW0gIT0gTm9SZWFzb247IHJlYXNvbkl0
ZW0gPj49IDEpIHsKLSAgICAgICAgaWYgKCEocmVhc29ucyAmIHJlYXNvbkl0ZW0pKQotICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIHN0cmVhbSA8PCAoZmlyc3QgPyAiICIgOiAiLCAiKTsK
LSAgICAgICAgZmlyc3QgPSBmYWxzZTsKLSAgICAgICAgcHJpbnRSZWFzb24ocmVhc29uSXRlbSwg
c3RyZWFtKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIHByaW50VGV4dEZvclN1YnRyZWUoY29u
c3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgdW5zaWduZWQmIGNoYXJhY3RlcnNMZWZ0LCBUZXh0
U3RyZWFtJiBzdHJlYW0pCi17Ci0gICAgaWYgKCFjaGFyYWN0ZXJzTGVmdCkKLSAgICAgICAgcmV0
dXJuOwotICAgIGlmIChpczxSZW5kZXJUZXh0PihyZW5kZXJlcikpIHsKLSAgICAgICAgU3RyaW5n
IHRleHQgPSBkb3duY2FzdDxSZW5kZXJUZXh0PihyZW5kZXJlcikudGV4dCgpOwotICAgICAgICB0
ZXh0ID0gdGV4dC5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICAgICAgdW5zaWduZWQgbGVuID0gc3Rk
OjptaW4oY2hhcmFjdGVyc0xlZnQsIHRleHQubGVuZ3RoKCkpOwotICAgICAgICBzdHJlYW0gPDwg
dGV4dC5sZWZ0KGxlbik7Ci0gICAgICAgIGNoYXJhY3RlcnNMZWZ0IC09IGxlbjsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBpZiAoIWlzPFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVyKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIGZvciAoY29uc3QgYXV0byogY2hpbGQgPSBkb3duY2FzdDxSZW5k
ZXJFbGVtZW50PihyZW5kZXJlcikuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+
bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgcHJpbnRUZXh0Rm9yU3VidHJlZSgqY2hpbGQsIGNoYXJh
Y3RlcnNMZWZ0LCBzdHJlYW0pOwotfQotCi1zdGF0aWMgdW5zaWduZWQgdGV4dExlbmd0aEZvclN1
YnRyZWUoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKLXsKLSAgICBpZiAoaXM8UmVuZGVy
VGV4dD4ocmVuZGVyZXIpKQotICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVu
ZGVyZXIpLnRleHRMZW5ndGgoKTsKLSAgICBpZiAoIWlzPFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVy
KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgdW5zaWduZWQgdGV4dExlbmd0aCA9IDA7Ci0gICAg
Zm9yIChjb25zdCBhdXRvKiBjaGlsZCA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVy
KS5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQotICAg
ICAgICB0ZXh0TGVuZ3RoICs9IHRleHRMZW5ndGhGb3JTdWJ0cmVlKCpjaGlsZCk7Ci0gICAgcmV0
dXJuIHRleHRMZW5ndGg7Ci19Ci0KLXN0YXRpYyB2b2lkIGNvbGxlY3ROb25FbXB0eUxlYWZSZW5k
ZXJCbG9ja0Zsb3dzKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIEhhc2hTZXQ8Y29uc3Qg
UmVuZGVyQmxvY2tGbG93Kj4mIGxlYWZSZW5kZXJlcnMpCi17Ci0gICAgaWYgKGlzPFJlbmRlclRl
eHQ+KHJlbmRlcmVyKSkgewotICAgICAgICBpZiAoIWRvd25jYXN0PFJlbmRlclRleHQ+KHJlbmRl
cmVyKS50ZXh0TGVuZ3RoKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIC8vIEZpbmQg
UmVuZGVyQmxvY2tGbG93IGFuY2VzdG9yLgotICAgICAgICBmb3IgKGNvbnN0IGF1dG8qIGN1cnJl
bnQgPSByZW5kZXJlci5wYXJlbnQoKTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPnBhcmVu
dCgpKSB7Ci0gICAgICAgICAgICBpZiAoIWlzPFJlbmRlckJsb2NrRmxvdz4oY3VycmVudCkpCi0g
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBsZWFmUmVuZGVyZXJzLmFkZChk
b3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KGN1cnJlbnQpKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCFpczxSZW5kZXJFbGVt
ZW50PihyZW5kZXJlcikpCi0gICAgICAgIHJldHVybjsKLSAgICBmb3IgKGNvbnN0IGF1dG8qIGNo
aWxkID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIpLmZpcnN0Q2hpbGQoKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCi0gICAgICAgIGNvbGxlY3ROb25FbXB0
eUxlYWZSZW5kZXJCbG9ja0Zsb3dzKCpjaGlsZCwgbGVhZlJlbmRlcmVycyk7Ci19Ci0KLXN0YXRp
YyB2b2lkIGNvbGxlY3ROb25FbXB0eUxlYWZSZW5kZXJCbG9ja0Zsb3dzRm9yQ3VycmVudFBhZ2Uo
SGFzaFNldDxjb25zdCBSZW5kZXJCbG9ja0Zsb3cqPiYgbGVhZlJlbmRlcmVycykKLXsKLSAgICBm
b3IgKGNvbnN0IGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKSB7Ci0g
ICAgICAgIGlmICghZG9jdW1lbnQtPnJlbmRlclZpZXcoKSB8fCBkb2N1bWVudC0+cGFnZUNhY2hl
U3RhdGUoKSAhPSBEb2N1bWVudDo6Tm90SW5QYWdlQ2FjaGUpCi0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgaWYgKCFkb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSAmJiAhZG9jdW1lbnQt
PmlzWEhUTUxEb2N1bWVudCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGNvbGxl
Y3ROb25FbXB0eUxlYWZSZW5kZXJCbG9ja0Zsb3dzKCpkb2N1bWVudC0+cmVuZGVyVmlldygpLCBs
ZWFmUmVuZGVyZXJzKTsKLSAgICB9Ci19Ci0KLXZvaWQgdG9nZ2xlU2ltcGxlTGluZUxheW91dCgp
Ci17Ci0gICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkg
ewotICAgICAgICBhdXRvJiBzZXR0aW5ncyA9IGRvY3VtZW50LT5tdXRhYmxlU2V0dGluZ3MoKTsK
LSAgICAgICAgc2V0dGluZ3Muc2V0U2ltcGxlTGluZUxheW91dEVuYWJsZWQoIXNldHRpbmdzLnNp
bXBsZUxpbmVMYXlvdXRFbmFibGVkKCkpOwotICAgIH0KLX0KLQotdm9pZCBwcmludFNpbXBsZUxp
bmVMYXlvdXRCbG9ja0xpc3QoKQotewotICAgIEhhc2hTZXQ8Y29uc3QgUmVuZGVyQmxvY2tGbG93
Kj4gbGVhZlJlbmRlcmVyczsKLSAgICBjb2xsZWN0Tm9uRW1wdHlMZWFmUmVuZGVyQmxvY2tGbG93
c0ZvckN1cnJlbnRQYWdlKGxlYWZSZW5kZXJlcnMpOwotICAgIGlmICghbGVhZlJlbmRlcmVycy5z
aXplKCkpIHsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJObyB0ZXh0IGZvdW5kIGluIHRoaXMgZG9j
dW1lbnRcbiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIFRleHRTdHJlYW0gc3RyZWFt
OwotICAgIHN0cmVhbSA8PCAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tXG4iOwotICAgIGZvciAoY29uc3QgYXV0byogZmxvdyA6IGxlYWZSZW5kZXJl
cnMpIHsKLSAgICAgICAgYXV0byByZWFzb24gPSBjYW5Vc2VGb3JXaXRoUmVhc29uKCpmbG93LCBJ
bmNsdWRlUmVhc29uczo6QWxsKTsKLSAgICAgICAgaWYgKHJlYXNvbiA9PSBOb1JlYXNvbikKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB1bnNpZ25lZCBwcmludGVkTGVuZ3RoID0gMzA7
Ci0gICAgICAgIHN0cmVhbSA8PCAiXCIiOwotICAgICAgICBwcmludFRleHRGb3JTdWJ0cmVlKCpm
bG93LCBwcmludGVkTGVuZ3RoLCBzdHJlYW0pOwotICAgICAgICBmb3IgKDtwcmludGVkTGVuZ3Ro
ID4gMDsgLS1wcmludGVkTGVuZ3RoKQotICAgICAgICAgICAgc3RyZWFtIDw8ICIgIjsKLSAgICAg
ICAgc3RyZWFtIDw8ICJcIigiIDw8IHRleHRMZW5ndGhGb3JTdWJ0cmVlKCpmbG93KSA8PCAiKToi
OwotICAgICAgICBwcmludFJlYXNvbnMocmVhc29uLCBzdHJlYW0pOwotICAgICAgICBzdHJlYW0g
PDwgIlxuIjsKLSAgICB9Ci0gICAgc3RyZWFtIDw8ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiI7Ci0gICAgV1RGTG9nQWx3YXlzKCIlcyIsIHN0
cmVhbS5yZWxlYXNlKCkudXRmOCgpLmRhdGEoKSk7Ci19Ci0KLXZvaWQgcHJpbnRTaW1wbGVMaW5l
TGF5b3V0Q292ZXJhZ2UoKQotewotICAgIEhhc2hTZXQ8Y29uc3QgUmVuZGVyQmxvY2tGbG93Kj4g
bGVhZlJlbmRlcmVyczsKLSAgICBjb2xsZWN0Tm9uRW1wdHlMZWFmUmVuZGVyQmxvY2tGbG93c0Zv
ckN1cnJlbnRQYWdlKGxlYWZSZW5kZXJlcnMpOwotICAgIGlmICghbGVhZlJlbmRlcmVycy5zaXpl
KCkpIHsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJObyB0ZXh0IGZvdW5kIGluIHRoaXMgZG9jdW1l
bnRcbiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIFRleHRTdHJlYW0gc3RyZWFtOwot
ICAgIEhhc2hNYXA8QXZvaWRhbmNlUmVhc29uLCB1bnNpZ25lZD4gZmxvd1N0YXRpc3RpY3M7Ci0g
ICAgdW5zaWduZWQgdGV4dExlbmd0aCA9IDA7Ci0gICAgdW5zaWduZWQgdW5zdXBwb3J0ZWRUZXh0
TGVuZ3RoID0gMDsKLSAgICB1bnNpZ25lZCBudW1iZXJPZlVuc3VwcG9ydGVkTGVhZkJsb2NrcyA9
IDA7Ci0gICAgdW5zaWduZWQgc3VwcG9ydGVkQnV0Rm9yY2VkVG9MaW5lTGF5b3V0VGV4dExlbmd0
aCA9IDA7Ci0gICAgdW5zaWduZWQgbnVtYmVyT2ZTdXBwb3J0ZWRCdXRGb3JjZWRUb0xpbmVMYXlv
dXRMZWFmQmxvY2tzID0gMDsKLSAgICBmb3IgKGNvbnN0IGF1dG8qIGZsb3cgOiBsZWFmUmVuZGVy
ZXJzKSB7Ci0gICAgICAgIGF1dG8gZmxvd0xlbmd0aCA9IHRleHRMZW5ndGhGb3JTdWJ0cmVlKCpm
bG93KTsKLSAgICAgICAgdGV4dExlbmd0aCArPSBmbG93TGVuZ3RoOwotICAgICAgICBhdXRvIHJl
YXNvbnMgPSBjYW5Vc2VGb3JXaXRoUmVhc29uKCpmbG93LCBJbmNsdWRlUmVhc29uczo6QWxsKTsK
LSAgICAgICAgaWYgKHJlYXNvbnMgPT0gTm9SZWFzb24pIHsKLSAgICAgICAgICAgIGlmIChmbG93
LT5saW5lTGF5b3V0UGF0aCgpID09IFJlbmRlckJsb2NrRmxvdzo6Rm9yY2VMaW5lQm94ZXNQYXRo
KSB7Ci0gICAgICAgICAgICAgICAgc3VwcG9ydGVkQnV0Rm9yY2VkVG9MaW5lTGF5b3V0VGV4dExl
bmd0aCArPSBmbG93TGVuZ3RoOwotICAgICAgICAgICAgICAgICsrbnVtYmVyT2ZTdXBwb3J0ZWRC
dXRGb3JjZWRUb0xpbmVMYXlvdXRMZWFmQmxvY2tzOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgKytudW1iZXJPZlVuc3VwcG9ydGVkTGVh
ZkJsb2NrczsKLSAgICAgICAgdW5zdXBwb3J0ZWRUZXh0TGVuZ3RoICs9IGZsb3dMZW5ndGg7Ci0g
ICAgICAgIGZvciAoYXV0byByZWFzb25JdGVtID0gRW5kT2ZSZWFzb25zID4+IDE7IHJlYXNvbkl0
ZW0gIT0gTm9SZWFzb247IHJlYXNvbkl0ZW0gPj49IDEpIHsKLSAgICAgICAgICAgIGlmICghKHJl
YXNvbnMgJiByZWFzb25JdGVtKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIGF1dG8gcmVzdWx0ID0gZmxvd1N0YXRpc3RpY3MuYWRkKHJlYXNvbkl0ZW0sIGZsb3dMZW5n
dGgpOwotICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgICAgICAg
ICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlICs9IGZsb3dMZW5ndGg7Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgc3RyZWFtIDw8ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS1cbiI7Ci0gICAgc3RyZWFtIDw8ICJOdW1iZXIgb2YgYmxvY2tzOiB0b3RhbCgi
IDw8ICBsZWFmUmVuZGVyZXJzLnNpemUoKSA8PCAiKSBub24tc2ltcGxlKCIgPDwgbnVtYmVyT2ZV
bnN1cHBvcnRlZExlYWZCbG9ja3MgPDwgIilcbkNvbnRlbnQgbGVuZ3RoOiB0b3RhbCgiIDw8Ci0g
ICAgICAgIHRleHRMZW5ndGggPDwgIikgbm9uLXNpbXBsZSgiIDw8IHVuc3VwcG9ydGVkVGV4dExl
bmd0aCA8PCAiKVxuIjsKLSAgICBmb3IgKGNvbnN0IGF1dG8gcmVhc29uRW50cnkgOiBmbG93U3Rh
dGlzdGljcykgewotICAgICAgICBwcmludFJlYXNvbihyZWFzb25FbnRyeS5rZXksIHN0cmVhbSk7
Ci0gICAgICAgIHN0cmVhbSA8PCAiOiAiIDw8IChmbG9hdClyZWFzb25FbnRyeS52YWx1ZSAvIChm
bG9hdCl0ZXh0TGVuZ3RoICogMTAwIDw8ICIlXG4iOwotICAgIH0KLSAgICBpZiAoc3VwcG9ydGVk
QnV0Rm9yY2VkVG9MaW5lTGF5b3V0VGV4dExlbmd0aCkgewotICAgICAgICBzdHJlYW0gPDwgIlNp
bXBsZSBsaW5lIGxheW91dCBwb3RlbnRpYWwgY292ZXJhZ2U6ICIgPDwgKGZsb2F0KSh0ZXh0TGVu
Z3RoIC0gdW5zdXBwb3J0ZWRUZXh0TGVuZ3RoKSAvIChmbG9hdCl0ZXh0TGVuZ3RoICogMTAwIDw8
ICIlXG5cbiI7Ci0gICAgICAgIHN0cmVhbSA8PCAiU2ltcGxlIGxpbmUgbGF5b3V0IGFjdHVhbCBj
b3ZlcmFnZTogIiA8PCAoZmxvYXQpKHRleHRMZW5ndGggLSB1bnN1cHBvcnRlZFRleHRMZW5ndGgg
LSBzdXBwb3J0ZWRCdXRGb3JjZWRUb0xpbmVMYXlvdXRUZXh0TGVuZ3RoKSAvIChmbG9hdCl0ZXh0
TGVuZ3RoICogMTAwIDw8ICIlXG5Gb3JjZWQgbGluZSBsYXlvdXQgYmxvY2tzOiAiIDw8IG51bWJl
ck9mU3VwcG9ydGVkQnV0Rm9yY2VkVG9MaW5lTGF5b3V0TGVhZkJsb2NrcyA8PCAiIGNvbnRlbnQg
bGVuZ3RoOiAiIDw8IHN1cHBvcnRlZEJ1dEZvcmNlZFRvTGluZUxheW91dFRleHRMZW5ndGggPDwg
IigiIDw8IChmbG9hdClzdXBwb3J0ZWRCdXRGb3JjZWRUb0xpbmVMYXlvdXRUZXh0TGVuZ3RoIC8g
KGZsb2F0KXRleHRMZW5ndGggKiAxMDAgPDwgIiUpIjsKLSAgICB9IGVsc2UKLSAgICAgICAgc3Ry
ZWFtIDw8ICJTaW1wbGUgbGluZSBsYXlvdXQgY292ZXJhZ2U6ICIgPDwgKGZsb2F0KSh0ZXh0TGVu
Z3RoIC0gdW5zdXBwb3J0ZWRUZXh0TGVuZ3RoKSAvIChmbG9hdCl0ZXh0TGVuZ3RoICogMTAwIDw8
ICIlIjsKLSAgICBzdHJlYW0gPDwgIlxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tXG4iOwotICAgIFdURkxvZ0Fsd2F5cygiJXMiLCBzdHJlYW0ucmVs
ZWFzZSgpLnV0ZjgoKS5kYXRhKCkpOwotfQotI2VuZGlmCiB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuaAppbmRleCAzZWIwNDFiMTkyMTFjZGM0MDhmZjlk
YjFjNGMyOWU1MWY4NDQ2NmY1Li5kNTg3MjllM2M3OTA5OGIwMDliZjBjZjAyYWM4ODhmNjRmZGQy
NjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmgKQEAg
LTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJTaW1wbGVMaW5lTGF5
b3V0Q292ZXJhZ2UuaCIKICNpbmNsdWRlICJUZXh0RmxhZ3MuaCIKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00MSw2ICs0Miw4IEBA
IGNsYXNzIFJlbmRlckJsb2NrRmxvdzsKIG5hbWVzcGFjZSBTaW1wbGVMaW5lTGF5b3V0IHsKIAog
Ym9vbCBjYW5Vc2VGb3IoY29uc3QgUmVuZGVyQmxvY2tGbG93Jik7CitBdm9pZGFuY2VSZWFzb25G
bGFncyBjYW5Vc2VGb3JXaXRoUmVhc29uKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYsIEluY2x1ZGVS
ZWFzb25zKTsKKwogCiBzdHJ1Y3QgUnVuIHsKICNpZiBDT01QSUxFUihNU1ZDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iYTQ2MmFmMWE1ZjRkMTI3NjQxN2M3ZTg0YzEyNzQzZTVhNjFjZTVkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRD
b3ZlcmFnZS5jcHAKQEAgLTAsMCArMSwzNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmgiCisKKyNpbmNsdWRl
ICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUmVuZGVyQmxvY2tGbG93LmgiCisjaW5jbHVkZSAiUmVu
ZGVyQ2hpbGRJdGVyYXRvci5oIgorI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSAi
UmVuZGVyVmlldy5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiU2ltcGxlTGlu
ZUxheW91dC5oIgorI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworbmFtZXNwYWNlIFNpbXBsZUxpbmVMYXlvdXQgeworCisjaWZuZGVmIE5ERUJVRworc3RhdGlj
IHZvaWQgcHJpbnRSZWFzb24oQXZvaWRhbmNlUmVhc29uIHJlYXNvbiwgVGV4dFN0cmVhbSYgc3Ry
ZWFtKQoreworICAgIHN3aXRjaCAocmVhc29uKSB7CisgICAgY2FzZSBGbG93SXNJbnNpZGVSZWdp
b246CisgICAgICAgIHN0cmVhbSA8PCAiZmxvdyBpcyBpbnNpZGUgcmVnaW9uIjsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBGbG93SGFzSG9yaXpvbmFsV3JpdGluZ01vZGU6CisgICAgICAgIHN0
cmVhbSA8PCAiaG9yaXpvbnRhbCB3cml0aW5nIG1vZGUiOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEZsb3dIYXNPdXRsaW5lOgorICAgICAgICBzdHJlYW0gPDwgIm91dGxpbmUiOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEZsb3dJc1J1Ynk6CisgICAgICAgIHN0cmVhbSA8PCAicnVieSI7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmxvd0hhc0hhbmdpbmdQdW5jdHVhdGlvbjoKKyAg
ICAgICAgc3RyZWFtIDw8ICJoYW5naW5nIHB1bmN0dWF0aW9uIjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBGbG93SXNQYWdpbmF0ZWQ6CisgICAgICAgIHN0cmVhbSA8PCAicGFnaW5hdGVkIjsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGbG93SGFzVGV4dE92ZXJmbG93OgorICAgICAgICBz
dHJlYW0gPDwgInRleHQtb3ZlcmZsb3ciOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZsb3dJ
c0RlcHJpY2F0ZWRGbGV4Qm94OgorICAgICAgICBzdHJlYW0gPDwgImRlcHJpY2F0ZWRGbGV4Qm94
IjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGbG93UGFyZW50SXNQbGFjZWhvbGRlckVsZW1l
bnQ6CisgICAgICAgIHN0cmVhbSA8PCAicGxhY2Vob2xkZXIgZWxlbWVudCI7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgRmxvd1BhcmVudElzVGV4dEFyZWFXaXRoV3JhcHBpbmc6CisgICAgICAg
IHN0cmVhbSA8PCAid3JhcHBpbmcgdGV4dGFyZWEiOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEZsb3dIYXNOb25TdXBwb3J0ZWRDaGlsZDoKKyAgICAgICAgc3RyZWFtIDw8ICJuZXN0ZWQgcmVu
ZGVyZXJzIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGbG93SGFzVW5zdXBwb3J0ZWRGbG9h
dDoKKyAgICAgICAgc3RyZWFtIDw8ICJjb21wbGljYXRlZCBmbG9hdCI7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgRmxvd0hhc1Vuc3VwcG9ydGVkVW5kZXJsaW5lRGVjb3JhdGlvbjoKKyAgICAg
ICAgc3RyZWFtIDw8ICJ0ZXh0LXVuZGVybGluZS1wb3NpdGlvbjogdW5kZXIiOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEZsb3dIYXNKdXN0aWZpZWROb25MYXRpblRleHQ6CisgICAgICAgIHN0
cmVhbSA8PCAidGV4dC1hbGlnbjoganVzdGlmeSB3aXRoIG5vbi1sYXRpbiB0ZXh0IjsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBGbG93SGFzT3ZlcmZsb3dOb3RWaXNpYmxlOgorICAgICAgICBz
dHJlYW0gPDwgIm92ZXJmbG93OiBoaWRkZW4gfCBzY3JvbGwgfCBhdXRvIjsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBGbG93SGFzV2ViS2l0TkJTUE1vZGU6CisgICAgICAgIHN0cmVhbSA8PCAi
LXdlYmtpdC1uYnNwLW1vZGU6IHNwYWNlIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGbG93
SXNOb3RMVFI6CisgICAgICAgIHN0cmVhbSA8PCAiZGlyIGlzIG5vdCBMVFIiOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEZsb3dIYXNMaW5lQm94Q29udGFpblByb3BlcnR5OgorICAgICAgICBz
dHJlYW0gPDwgImxpbmUtYm94LWNvbnRhaW4gdmFsdWUgaW5kaWNhdGVzIHZhcmlhYmxlIGxpbmUg
aGVpZ2h0IjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGbG93SXNOb3RUb3BUb0JvdHRvbToK
KyAgICAgICAgc3RyZWFtIDw8ICJub24gdG9wLXRvLWJvdHRvbSBmbG93IjsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBGbG93SGFzTGluZUJyZWFrOgorICAgICAgICBzdHJlYW0gPDwgImxpbmUt
YnJlYWsgcHJvcGVydHkiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZsb3dIYXNOb25Ob3Jt
YWxVbmljb2RlQmlEaToKKyAgICAgICAgc3RyZWFtIDw8ICJub24tbm9ybWFsIFVuaWNvZGUgYmlk
aSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmxvd0hhc1JUTE9yZGVyaW5nOgorICAgICAg
ICBzdHJlYW0gPDwgIi13ZWJraXQtcnRsLW9yZGVyaW5nIjsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBGbG93SGFzTGluZUFsaWduRWRnZXM6CisgICAgICAgIHN0cmVhbSA8PCAiLXdlYmtpdC1s
aW5lLWFsaWduIGVkZ2VzIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGbG93SGFzTGluZVNu
YXA6CisgICAgICAgIHN0cmVhbSA8PCAiLXdlYmtpdC1saW5lLXNuYXAgcHJvcGVydHkiOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEZsb3dIYXNUZXh0RW1waGFzaXNGaWxsT3JNYXJrOgorICAg
ICAgICBzdHJlYW0gPDwgInRleHQtZW1waGFzaXMgKGZpbGwvbWFyaykiOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEZsb3dIYXNQc2V1ZG9GaXJzdExpbmU6CisgICAgICAgIHN0cmVhbSA8PCAi
Zmlyc3QtbGluZSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmxvd0hhc1BzZXVkb0ZpcnN0
TGV0dGVyOgorICAgICAgICBzdHJlYW0gPDwgImZpcnN0LWxldHRlciI7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgRmxvd0hhc1RleHRDb21iaW5lOgorICAgICAgICBzdHJlYW0gPDwgInRleHQg
Y29tYmluZSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmxvd0hhc1RleHRGaWxsQm94Ogor
ICAgICAgICBzdHJlYW0gPDwgImJhY2tncm91bmQtY29sb3IgKHRleHQtZmlsbCkiOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEZsb3dIYXNCb3JkZXJGaXRMaW5lczoKKyAgICAgICAgc3RyZWFt
IDw8ICItd2Via2l0LWJvcmRlci1maXQiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZsb3dI
YXNOb25BdXRvTGluZUJyZWFrOgorICAgICAgICBzdHJlYW0gPDwgImxpbmUtYnJlYWsgaXMgbm90
IGF1dG8iOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZsb3dIYXNOb25BdXRvVHJhaWxpbmdX
b3JkOgorICAgICAgICBzdHJlYW0gPDwgIi1hcHBsZS10cmFpbGluZy13b3JkIGlzIG5vdCBhdXRv
IjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGbG93SGFzU1ZHRm9udDoKKyAgICAgICAgc3Ry
ZWFtIDw8ICJTVkcgZm9udCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmxvd1RleHRIYXNT
b2Z0SHlwaGVuOgorICAgICAgICBzdHJlYW0gPDwgInNvZnQgaHlwaGVuIGNoYXJhY3RlciI7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgRmxvd1RleHRIYXNEaXJlY3Rpb25DaGFyYWN0ZXI6Cisg
ICAgICAgIHN0cmVhbSA8PCAiZGlyZWN0aW9uIGNoYXJhY3RlciI7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgRmxvd0lzTWlzc2luZ1ByaW1hcnlGb250OgorICAgICAgICBzdHJlYW0gPDwgIm1p
c3NpbmcgcHJpbWFyeSBmb250IjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGbG93UHJpbWFy
eUZvbnRJc0luc3VmZmljaWVudDoKKyAgICAgICAgc3RyZWFtIDw8ICJtaXNzaW5nIGdseXBoIG9y
IGdseXBoIG5lZWRzIGFub3RoZXIgZm9udCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmxv
d1RleHRJc0NvbWJpbmVUZXh0OgorICAgICAgICBzdHJlYW0gPDwgInRleHQgaXMgY29tYmluZSI7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmxvd1RleHRJc1JlbmRlckNvdW50ZXI6CisgICAg
ICAgIHN0cmVhbSA8PCAidW5zdXBwb3J0ZWQgUmVuZGVyQ291bnRlciI7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgRmxvd1RleHRJc1JlbmRlclF1b3RlOgorICAgICAgICBzdHJlYW0gPDwgInVu
c3VwcG9ydGVkIFJlbmRlclF1b3RlIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGbG93VGV4
dElzVGV4dEZyYWdtZW50OgorICAgICAgICBzdHJlYW0gPDwgInVuc3VwcG9ydGVkIFRleHRGcmFn
bWVudCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmxvd1RleHRJc1NWR0lubGluZVRleHQ6
CisgICAgICAgIHN0cmVhbSA8PCAidW5zdXBwb3J0ZWQgU1ZHSW5saW5lVGV4dCI7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgRmxvd0hhc0NvbXBsZXhGb250Q29kZVBhdGg6CisgICAgICAgIHN0
cmVhbSA8PCAidGV4dCB3aXRoIGNvbXBsZXggZm9udCBjb2RlcGF0aCI7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgRmxvd0hhc1RleHRTaGFkb3c6CisgICAgICAgIHN0cmVhbSA8PCAidGV4dC1z
aGFkb3ciOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZsb3dDaGlsZElzU2VsZWN0ZWQ6Cisg
ICAgICAgIHN0cmVhbSA8PCAic2VsZWN0ZWQgY29udGVudCI7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgRmxvd0ZvbnRIYXNPdmVyZmxvd0dseXBoOgorICAgICAgICBzdHJlYW0gPDwgIi13ZWJr
aXQtbGluZS1ib3gtY29udGFpbjogZ2x5cGhzIHdpdGggb3ZlcmZsb3dpbmcgdGV4dC4iOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEZsb3dUZXh0SGFzU3Vycm9nYXRlUGFpcjoKKyAgICAgICAg
c3RyZWFtIDw8ICJzdXJyb2dhdGUgcGFpciI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmxv
d1RleHRJc0VtcHR5OgorICAgIGNhc2UgRmxvd0hhc05vQ2hpbGQ6CisgICAgY2FzZSBGbG93SGFz
Tm9QYXJlbnQ6CisgICAgY2FzZSBGZWF0dXJlSXNEaXNhYmxlZDoKKyAgICBkZWZhdWx0OgorICAg
ICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHByaW50UmVhc29ucyhBdm9pZGFu
Y2VSZWFzb25GbGFncyByZWFzb25zLCBUZXh0U3RyZWFtJiBzdHJlYW0pCit7CisgICAgYm9vbCBm
aXJzdCA9IHRydWU7CisgICAgZm9yIChhdXRvIHJlYXNvbkl0ZW0gPSBFbmRPZlJlYXNvbnMgPj4g
MTsgcmVhc29uSXRlbSAhPSBOb1JlYXNvbjsgcmVhc29uSXRlbSA+Pj0gMSkgeworICAgICAgICBp
ZiAoIShyZWFzb25zICYgcmVhc29uSXRlbSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgc3RyZWFtIDw8IChmaXJzdCA/ICIgIiA6ICIsICIpOworICAgICAgICBmaXJzdCA9IGZhbHNl
OworICAgICAgICBwcmludFJlYXNvbihyZWFzb25JdGVtLCBzdHJlYW0pOworICAgIH0KK30KKwor
c3RhdGljIHZvaWQgcHJpbnRUZXh0Rm9yU3VidHJlZShjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRl
cmVyLCB1bnNpZ25lZCYgY2hhcmFjdGVyc0xlZnQsIFRleHRTdHJlYW0mIHN0cmVhbSkKK3sKKyAg
ICBpZiAoIWNoYXJhY3RlcnNMZWZ0KQorICAgICAgICByZXR1cm47CisgICAgaWYgKGlzPFJlbmRl
clRleHQ+KHJlbmRlcmVyKSkgeworICAgICAgICBTdHJpbmcgdGV4dCA9IGRvd25jYXN0PFJlbmRl
clRleHQ+KHJlbmRlcmVyKS50ZXh0KCk7CisgICAgICAgIHRleHQgPSB0ZXh0LnN0cmlwV2hpdGVT
cGFjZSgpOworICAgICAgICB1bnNpZ25lZCBsZW4gPSBzdGQ6Om1pbihjaGFyYWN0ZXJzTGVmdCwg
dGV4dC5sZW5ndGgoKSk7CisgICAgICAgIHN0cmVhbSA8PCB0ZXh0LmxlZnQobGVuKTsKKyAgICAg
ICAgY2hhcmFjdGVyc0xlZnQgLT0gbGVuOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlm
ICghaXM8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIpKQorICAgICAgICByZXR1cm47CisgICAgZm9y
IChjb25zdCBhdXRvKiBjaGlsZCA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVyKS5m
aXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQorICAgICAg
ICBwcmludFRleHRGb3JTdWJ0cmVlKCpjaGlsZCwgY2hhcmFjdGVyc0xlZnQsIHN0cmVhbSk7Cit9
CisKK3N0YXRpYyB1bnNpZ25lZCB0ZXh0TGVuZ3RoRm9yU3VidHJlZShjb25zdCBSZW5kZXJPYmpl
Y3QmIHJlbmRlcmVyKQoreworICAgIGlmIChpczxSZW5kZXJUZXh0PihyZW5kZXJlcikpCisgICAg
ICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJUZXh0PihyZW5kZXJlcikudGV4dExlbmd0aCgpOwor
ICAgIGlmICghaXM8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIpKQorICAgICAgICByZXR1cm4gMDsK
KyAgICB1bnNpZ25lZCB0ZXh0TGVuZ3RoID0gMDsKKyAgICBmb3IgKGNvbnN0IGF1dG8qIGNoaWxk
ID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7
IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCisgICAgICAgIHRleHRMZW5ndGggKz0gdGV4
dExlbmd0aEZvclN1YnRyZWUoKmNoaWxkKTsKKyAgICByZXR1cm4gdGV4dExlbmd0aDsKK30KKwor
c3RhdGljIHZvaWQgY29sbGVjdE5vbkVtcHR5TGVhZlJlbmRlckJsb2NrRmxvd3MoY29uc3QgUmVu
ZGVyT2JqZWN0JiByZW5kZXJlciwgSGFzaFNldDxjb25zdCBSZW5kZXJCbG9ja0Zsb3cqPiYgbGVh
ZlJlbmRlcmVycykKK3sKKyAgICBpZiAoaXM8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKSB7CisgICAg
ICAgIGlmICghZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpLnRleHRMZW5ndGgoKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgLy8gRmluZCBSZW5kZXJCbG9ja0Zsb3cgYW5jZXN0
b3IuCisgICAgICAgIGZvciAoY29uc3QgYXV0byogY3VycmVudCA9IHJlbmRlcmVyLnBhcmVudCgp
OyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+cGFyZW50KCkpIHsKKyAgICAgICAgICAgIGlm
ICghaXM8UmVuZGVyQmxvY2tGbG93PihjdXJyZW50KSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIGxlYWZSZW5kZXJlcnMuYWRkKGRvd25jYXN0PFJlbmRlckJsb2NrRmxv
dz4oY3VycmVudCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBpZiAoIWlzPFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVyKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIGZvciAoY29uc3QgYXV0byogY2hpbGQgPSBkb3duY2FzdDxSZW5kZXJF
bGVtZW50PihyZW5kZXJlcikuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4
dFNpYmxpbmcoKSkKKyAgICAgICAgY29sbGVjdE5vbkVtcHR5TGVhZlJlbmRlckJsb2NrRmxvd3Mo
KmNoaWxkLCBsZWFmUmVuZGVyZXJzKTsKK30KKworc3RhdGljIHZvaWQgY29sbGVjdE5vbkVtcHR5
TGVhZlJlbmRlckJsb2NrRmxvd3NGb3JDdXJyZW50UGFnZShIYXNoU2V0PGNvbnN0IFJlbmRlckJs
b2NrRmxvdyo+JiBsZWFmUmVuZGVyZXJzKQoreworICAgIGZvciAoY29uc3QgYXV0byogZG9jdW1l
bnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkpIHsKKyAgICAgICAgaWYgKCFkb2N1bWVudC0+
cmVuZGVyVmlldygpIHx8IGRvY3VtZW50LT5wYWdlQ2FjaGVTdGF0ZSgpICE9IERvY3VtZW50OjpO
b3RJblBhZ2VDYWNoZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoIWRvY3Vt
ZW50LT5pc0hUTUxEb2N1bWVudCgpICYmICFkb2N1bWVudC0+aXNYSFRNTERvY3VtZW50KCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgY29sbGVjdE5vbkVtcHR5TGVhZlJlbmRlckJs
b2NrRmxvd3MoKmRvY3VtZW50LT5yZW5kZXJWaWV3KCksIGxlYWZSZW5kZXJlcnMpOworICAgIH0K
K30KKwordm9pZCB0b2dnbGVTaW1wbGVMaW5lTGF5b3V0KCkKK3sKKyAgICBmb3IgKGF1dG8qIGRv
Y3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKSB7CisgICAgICAgIGF1dG8mIHNldHRp
bmdzID0gZG9jdW1lbnQtPm11dGFibGVTZXR0aW5ncygpOworICAgICAgICBzZXR0aW5ncy5zZXRT
aW1wbGVMaW5lTGF5b3V0RW5hYmxlZCghc2V0dGluZ3Muc2ltcGxlTGluZUxheW91dEVuYWJsZWQo
KSk7CisgICAgfQorfQorCit2b2lkIHByaW50U2ltcGxlTGluZUxheW91dEJsb2NrTGlzdCgpCit7
CisgICAgSGFzaFNldDxjb25zdCBSZW5kZXJCbG9ja0Zsb3cqPiBsZWFmUmVuZGVyZXJzOworICAg
IGNvbGxlY3ROb25FbXB0eUxlYWZSZW5kZXJCbG9ja0Zsb3dzRm9yQ3VycmVudFBhZ2UobGVhZlJl
bmRlcmVycyk7CisgICAgaWYgKCFsZWFmUmVuZGVyZXJzLnNpemUoKSkgeworICAgICAgICBXVEZM
b2dBbHdheXMoIk5vIHRleHQgZm91bmQgaW4gdGhpcyBkb2N1bWVudFxuIik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgVGV4dFN0cmVhbSBzdHJlYW07CisgICAgc3RyZWFtIDw8ICItLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiI7CisgICAg
Zm9yIChjb25zdCBhdXRvKiBmbG93IDogbGVhZlJlbmRlcmVycykgeworICAgICAgICBhdXRvIHJl
YXNvbiA9IGNhblVzZUZvcldpdGhSZWFzb24oKmZsb3csIEluY2x1ZGVSZWFzb25zOjpBbGwpOwor
ICAgICAgICBpZiAocmVhc29uID09IE5vUmVhc29uKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIHVuc2lnbmVkIHByaW50ZWRMZW5ndGggPSAzMDsKKyAgICAgICAgc3RyZWFtIDw8ICJc
IiI7CisgICAgICAgIHByaW50VGV4dEZvclN1YnRyZWUoKmZsb3csIHByaW50ZWRMZW5ndGgsIHN0
cmVhbSk7CisgICAgICAgIGZvciAoO3ByaW50ZWRMZW5ndGggPiAwOyAtLXByaW50ZWRMZW5ndGgp
CisgICAgICAgICAgICBzdHJlYW0gPDwgIiAiOworICAgICAgICBzdHJlYW0gPDwgIlwiKCIgPDwg
dGV4dExlbmd0aEZvclN1YnRyZWUoKmZsb3cpIDw8ICIpOiI7CisgICAgICAgIHByaW50UmVhc29u
cyhyZWFzb24sIHN0cmVhbSk7CisgICAgICAgIHN0cmVhbSA8PCAiXG4iOworICAgIH0KKyAgICBz
dHJlYW0gPDwgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLVxuIjsKKyAgICBXVEZMb2dBbHdheXMoIiVzIiwgc3RyZWFtLnJlbGVhc2UoKS51dGY4KCku
ZGF0YSgpKTsKK30KKwordm9pZCBwcmludFNpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZSgpCit7Cisg
ICAgSGFzaFNldDxjb25zdCBSZW5kZXJCbG9ja0Zsb3cqPiBsZWFmUmVuZGVyZXJzOworICAgIGNv
bGxlY3ROb25FbXB0eUxlYWZSZW5kZXJCbG9ja0Zsb3dzRm9yQ3VycmVudFBhZ2UobGVhZlJlbmRl
cmVycyk7CisgICAgaWYgKCFsZWFmUmVuZGVyZXJzLnNpemUoKSkgeworICAgICAgICBXVEZMb2dB
bHdheXMoIk5vIHRleHQgZm91bmQgaW4gdGhpcyBkb2N1bWVudFxuIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgVGV4dFN0cmVhbSBzdHJlYW07CisgICAgSGFzaE1hcDxBdm9pZGFuY2VS
ZWFzb24sIHVuc2lnbmVkPiBmbG93U3RhdGlzdGljczsKKyAgICB1bnNpZ25lZCB0ZXh0TGVuZ3Ro
ID0gMDsKKyAgICB1bnNpZ25lZCB1bnN1cHBvcnRlZFRleHRMZW5ndGggPSAwOworICAgIHVuc2ln
bmVkIG51bWJlck9mVW5zdXBwb3J0ZWRMZWFmQmxvY2tzID0gMDsKKyAgICB1bnNpZ25lZCBzdXBw
b3J0ZWRCdXRGb3JjZWRUb0xpbmVMYXlvdXRUZXh0TGVuZ3RoID0gMDsKKyAgICB1bnNpZ25lZCBu
dW1iZXJPZlN1cHBvcnRlZEJ1dEZvcmNlZFRvTGluZUxheW91dExlYWZCbG9ja3MgPSAwOworICAg
IGZvciAoY29uc3QgYXV0byogZmxvdyA6IGxlYWZSZW5kZXJlcnMpIHsKKyAgICAgICAgYXV0byBm
bG93TGVuZ3RoID0gdGV4dExlbmd0aEZvclN1YnRyZWUoKmZsb3cpOworICAgICAgICB0ZXh0TGVu
Z3RoICs9IGZsb3dMZW5ndGg7CisgICAgICAgIGF1dG8gcmVhc29ucyA9IGNhblVzZUZvcldpdGhS
ZWFzb24oKmZsb3csIEluY2x1ZGVSZWFzb25zOjpBbGwpOworICAgICAgICBpZiAocmVhc29ucyA9
PSBOb1JlYXNvbikgeworICAgICAgICAgICAgaWYgKGZsb3ctPmxpbmVMYXlvdXRQYXRoKCkgPT0g
UmVuZGVyQmxvY2tGbG93OjpGb3JjZUxpbmVCb3hlc1BhdGgpIHsKKyAgICAgICAgICAgICAgICBz
dXBwb3J0ZWRCdXRGb3JjZWRUb0xpbmVMYXlvdXRUZXh0TGVuZ3RoICs9IGZsb3dMZW5ndGg7Cisg
ICAgICAgICAgICAgICAgKytudW1iZXJPZlN1cHBvcnRlZEJ1dEZvcmNlZFRvTGluZUxheW91dExl
YWZCbG9ja3M7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
fQorICAgICAgICArK251bWJlck9mVW5zdXBwb3J0ZWRMZWFmQmxvY2tzOworICAgICAgICB1bnN1
cHBvcnRlZFRleHRMZW5ndGggKz0gZmxvd0xlbmd0aDsKKyAgICAgICAgZm9yIChhdXRvIHJlYXNv
bkl0ZW0gPSBFbmRPZlJlYXNvbnMgPj4gMTsgcmVhc29uSXRlbSAhPSBOb1JlYXNvbjsgcmVhc29u
SXRlbSA+Pj0gMSkgeworICAgICAgICAgICAgaWYgKCEocmVhc29ucyAmIHJlYXNvbkl0ZW0pKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBmbG93
U3RhdGlzdGljcy5hZGQocmVhc29uSXRlbSwgZmxvd0xlbmd0aCk7CisgICAgICAgICAgICBpZiAo
IXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUgKz0gZmxvd0xlbmd0aDsKKyAgICAgICAgfQorICAgIH0KKyAgICBzdHJlYW0gPDwgIi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIjsKKyAgICBz
dHJlYW0gPDwgIk51bWJlciBvZiBibG9ja3M6IHRvdGFsKCIgPDwgIGxlYWZSZW5kZXJlcnMuc2l6
ZSgpIDw8ICIpIG5vbi1zaW1wbGUoIiA8PCBudW1iZXJPZlVuc3VwcG9ydGVkTGVhZkJsb2NrcyA8
PCAiKVxuQ29udGVudCBsZW5ndGg6IHRvdGFsKCIgPDwKKyAgICAgICAgdGV4dExlbmd0aCA8PCAi
KSBub24tc2ltcGxlKCIgPDwgdW5zdXBwb3J0ZWRUZXh0TGVuZ3RoIDw8ICIpXG4iOworICAgIGZv
ciAoY29uc3QgYXV0byByZWFzb25FbnRyeSA6IGZsb3dTdGF0aXN0aWNzKSB7CisgICAgICAgIHBy
aW50UmVhc29uKHJlYXNvbkVudHJ5LmtleSwgc3RyZWFtKTsKKyAgICAgICAgc3RyZWFtIDw8ICI6
ICIgPDwgKGZsb2F0KXJlYXNvbkVudHJ5LnZhbHVlIC8gKGZsb2F0KXRleHRMZW5ndGggKiAxMDAg
PDwgIiVcbiI7CisgICAgfQorICAgIGlmIChzdXBwb3J0ZWRCdXRGb3JjZWRUb0xpbmVMYXlvdXRU
ZXh0TGVuZ3RoKSB7CisgICAgICAgIHN0cmVhbSA8PCAiU2ltcGxlIGxpbmUgbGF5b3V0IHBvdGVu
dGlhbCBjb3ZlcmFnZTogIiA8PCAoZmxvYXQpKHRleHRMZW5ndGggLSB1bnN1cHBvcnRlZFRleHRM
ZW5ndGgpIC8gKGZsb2F0KXRleHRMZW5ndGggKiAxMDAgPDwgIiVcblxuIjsKKyAgICAgICAgc3Ry
ZWFtIDw8ICJTaW1wbGUgbGluZSBsYXlvdXQgYWN0dWFsIGNvdmVyYWdlOiAiIDw8IChmbG9hdCko
dGV4dExlbmd0aCAtIHVuc3VwcG9ydGVkVGV4dExlbmd0aCAtIHN1cHBvcnRlZEJ1dEZvcmNlZFRv
TGluZUxheW91dFRleHRMZW5ndGgpIC8gKGZsb2F0KXRleHRMZW5ndGggKiAxMDAgPDwgIiVcbkZv
cmNlZCBsaW5lIGxheW91dCBibG9ja3M6ICIgPDwgbnVtYmVyT2ZTdXBwb3J0ZWRCdXRGb3JjZWRU
b0xpbmVMYXlvdXRMZWFmQmxvY2tzIDw8ICIgY29udGVudCBsZW5ndGg6ICIgPDwgc3VwcG9ydGVk
QnV0Rm9yY2VkVG9MaW5lTGF5b3V0VGV4dExlbmd0aCA8PCAiKCIgPDwgKGZsb2F0KXN1cHBvcnRl
ZEJ1dEZvcmNlZFRvTGluZUxheW91dFRleHRMZW5ndGggLyAoZmxvYXQpdGV4dExlbmd0aCAqIDEw
MCA8PCAiJSkiOworICAgIH0gZWxzZQorICAgICAgICBzdHJlYW0gPDwgIlNpbXBsZSBsaW5lIGxh
eW91dCBjb3ZlcmFnZTogIiA8PCAoZmxvYXQpKHRleHRMZW5ndGggLSB1bnN1cHBvcnRlZFRleHRM
ZW5ndGgpIC8gKGZsb2F0KXRleHRMZW5ndGggKiAxMDAgPDwgIiUiOworICAgIHN0cmVhbSA8PCAi
XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiI7
CisgICAgV1RGTG9nQWx3YXlzKCIlcyIsIHN0cmVhbS5yZWxlYXNlKCkudXRmOCgpLmRhdGEoKSk7
Cit9CisjZW5kaWYKKworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1NpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5ZDJhMTM2ZjdjODFmMWZlM2Iz
NTkwMDg4MzE4OGZlZThiZDhhMjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmgKQEAgLTAsMCArMSw5OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2Ug
U2ltcGxlTGluZUxheW91dCB7CisKKyNpZm5kZWYgTkRFQlVHCit2b2lkIHByaW50U2ltcGxlTGlu
ZUxheW91dENvdmVyYWdlKCk7Cit2b2lkIHByaW50U2ltcGxlTGluZUxheW91dEJsb2NrTGlzdCgp
Owordm9pZCB0b2dnbGVTaW1wbGVMaW5lTGF5b3V0KCk7CisjZW5kaWYKKworZW51bSBBdm9pZGFu
Y2VSZWFzb25fIDogdWludDY0X3QgeworICAgIEZsb3dJc0luc2lkZVJlZ2lvbiAgICAgICAgICAg
ICAgICAgICAgPSAxTExVICA8PCAwLAorICAgIEZsb3dIYXNIb3Jpem9uYWxXcml0aW5nTW9kZSAg
ICAgICAgICAgPSAxTExVICA8PCAxLAorICAgIEZsb3dIYXNPdXRsaW5lICAgICAgICAgICAgICAg
ICAgICAgICAgPSAxTExVICA8PCAyLAorICAgIEZsb3dJc1J1YnkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAxTExVICA8PCAzLAorICAgIEZsb3dJc1BhZ2luYXRlZCAgICAgICAgICAgICAg
ICAgICAgICAgPSAxTExVICA8PCA0LAorICAgIEZsb3dIYXNUZXh0T3ZlcmZsb3cgICAgICAgICAg
ICAgICAgICAgPSAxTExVICA8PCA1LAorICAgIEZsb3dJc0RlcHJpY2F0ZWRGbGV4Qm94ICAgICAg
ICAgICAgICAgPSAxTExVICA8PCA2LAorICAgIEZsb3dQYXJlbnRJc1BsYWNlaG9sZGVyRWxlbWVu
dCAgICAgICAgPSAxTExVICA8PCA3LAorICAgIEZsb3dQYXJlbnRJc1RleHRBcmVhV2l0aFdyYXBw
aW5nICAgICAgPSAxTExVICA8PCA4LAorICAgIEZsb3dIYXNOb25TdXBwb3J0ZWRDaGlsZCAgICAg
ICAgICAgICAgPSAxTExVICA8PCA5LAorICAgIEZsb3dIYXNVbnN1cHBvcnRlZEZsb2F0ICAgICAg
ICAgICAgICAgPSAxTExVICA8PCAxMCwKKyAgICBGbG93SGFzVW5zdXBwb3J0ZWRVbmRlcmxpbmVE
ZWNvcmF0aW9uID0gMUxMVSAgPDwgMTEsCisgICAgRmxvd0hhc0p1c3RpZmllZE5vbkxhdGluVGV4
dCAgICAgICAgICA9IDFMTFUgIDw8IDEyLAorICAgIEZsb3dIYXNPdmVyZmxvd05vdFZpc2libGUg
ICAgICAgICAgICAgPSAxTExVICA8PCAxMywKKyAgICBGbG93SGFzV2ViS2l0TkJTUE1vZGUgICAg
ICAgICAgICAgICAgID0gMUxMVSAgPDwgMTQsCisgICAgRmxvd0lzTm90TFRSICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IDFMTFUgIDw8IDE1LAorICAgIEZsb3dIYXNMaW5lQm94Q29udGFpblBy
b3BlcnR5ICAgICAgICAgPSAxTExVICA8PCAxNiwKKyAgICBGbG93SXNOb3RUb3BUb0JvdHRvbSAg
ICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgMTcsCisgICAgRmxvd0hhc0xpbmVCcmVhayAgICAg
ICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDE4LAorICAgIEZsb3dIYXNOb25Ob3JtYWxVbmlj
b2RlQmlEaSAgICAgICAgICAgPSAxTExVICA8PCAxOSwKKyAgICBGbG93SGFzUlRMT3JkZXJpbmcg
ICAgICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgMjAsCisgICAgRmxvd0hhc0xpbmVBbGlnbkVk
Z2VzICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDIxLAorICAgIEZsb3dIYXNMaW5lU25hcCAg
ICAgICAgICAgICAgICAgICAgICAgPSAxTExVICA8PCAyMiwKKyAgICBGbG93SGFzVGV4dEVtcGhh
c2lzRmlsbE9yTWFyayAgICAgICAgID0gMUxMVSAgPDwgMjMsCisgICAgRmxvd0hhc1RleHRTaGFk
b3cgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDI0LAorICAgIEZsb3dIYXNQc2V1ZG9G
aXJzdExpbmUgICAgICAgICAgICAgICAgPSAxTExVICA8PCAyNSwKKyAgICBGbG93SGFzUHNldWRv
Rmlyc3RMZXR0ZXIgICAgICAgICAgICAgID0gMUxMVSAgPDwgMjYsCisgICAgRmxvd0hhc1RleHRD
b21iaW5lICAgICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDI3LAorICAgIEZsb3dIYXNUZXh0
RmlsbEJveCAgICAgICAgICAgICAgICAgICAgPSAxTExVICA8PCAyOCwKKyAgICBGbG93SGFzQm9y
ZGVyRml0TGluZXMgICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgMjksCisgICAgRmxvd0hhc05v
bkF1dG9MaW5lQnJlYWsgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDMwLAorICAgIEZsb3dIYXNO
b25BdXRvVHJhaWxpbmdXb3JkICAgICAgICAgICAgPSAxTExVICA8PCAzMSwKKyAgICBGbG93SGFz
U1ZHRm9udCAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgMzIsCisgICAgRmxvd1Rl
eHRJc0VtcHR5ICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDMzLAorICAgIEZsb3dU
ZXh0SGFzU29mdEh5cGhlbiAgICAgICAgICAgICAgICAgPSAxTExVICA8PCAzNCwKKyAgICBGbG93
VGV4dEhhc0RpcmVjdGlvbkNoYXJhY3RlciAgICAgICAgID0gMUxMVSAgPDwgMzUsCisgICAgRmxv
d0lzTWlzc2luZ1ByaW1hcnlGb250ICAgICAgICAgICAgICA9IDFMTFUgIDw8IDM2LAorICAgIEZs
b3dQcmltYXJ5Rm9udElzSW5zdWZmaWNpZW50ICAgICAgICAgPSAxTExVICA8PCAzNywKKyAgICBG
bG93VGV4dElzQ29tYmluZVRleHQgICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgMzgsCisgICAg
Rmxvd1RleHRJc1JlbmRlckNvdW50ZXIgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDM5LAorICAg
IEZsb3dUZXh0SXNSZW5kZXJRdW90ZSAgICAgICAgICAgICAgICAgPSAxTExVICA8PCA0MCwKKyAg
ICBGbG93VGV4dElzVGV4dEZyYWdtZW50ICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgNDEsCisg
ICAgRmxvd1RleHRJc1NWR0lubGluZVRleHQgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDQyLAor
ICAgIEZsb3dIYXNDb21wbGV4Rm9udENvZGVQYXRoICAgICAgICAgICAgPSAxTExVICA8PCA0MywK
KyAgICBGZWF0dXJlSXNEaXNhYmxlZCAgICAgICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgNDQs
CisgICAgRmxvd0hhc05vUGFyZW50ICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDQ1
LAorICAgIEZsb3dIYXNOb0NoaWxkICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVICA8PCA0
NiwKKyAgICBGbG93Q2hpbGRJc1NlbGVjdGVkICAgICAgICAgICAgICAgICAgID0gMUxMVSAgPDwg
NDcsCisgICAgRmxvd0hhc0hhbmdpbmdQdW5jdHVhdGlvbiAgICAgICAgICAgICA9IDFMTFUgIDw8
IDQ4LAorICAgIEZsb3dGb250SGFzT3ZlcmZsb3dHbHlwaCAgICAgICAgICAgICAgPSAxTExVICA8
PCA0OSwKKyAgICBGbG93VGV4dEhhc1N1cnJvZ2F0ZVBhaXIgICAgICAgICAgICAgID0gMUxMVSAg
PDwgNTAsCisgICAgRW5kT2ZSZWFzb25zICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUg
IDw8IDUxCit9OworY29uc3QgdW5zaWduZWQgTm9SZWFzb24gPSAwOworCit0eXBlZGVmIHVpbnQ2
NF90IEF2b2lkYW5jZVJlYXNvbjsKK3R5cGVkZWYgdWludDY0X3QgQXZvaWRhbmNlUmVhc29uRmxh
Z3M7CisKK2VudW0gY2xhc3MgSW5jbHVkZVJlYXNvbnMgeyBGaXJzdCAsIEFsbCB9OworCit9Cit9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302771</attachid>
            <date>2017-02-25 20:53:57 -0800</date>
            <delta_ts>2017-02-25 22:40:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168872-20170225205105.patch</filename>
            <type>text/plain</type>
            <size>44624</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzMDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmJlN2QzOWQ2MWYxYTdm
YTBkYmFlYzgyNzI1NDg0NjU2OTM5YmE3NC4uZjc2MTk5OTNiNDczZjI0YjliODlmZWViNmM3NTY4
OTAyNjg0YjJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQzIEBACiAyMDE3LTAyLTI1ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKKyAgICAgICAgU2ltcGxlIGxpbmUgbGF5b3V0
OiBNb3ZlIGNvdmVyYWdlIGZ1bmN0aW9ucyBvdXQgb2YgU2ltcGxlTGluZUxheW91dC5jcHAKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODg3MgorICAg
ICAgICAKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIFNpbXBs
ZUxpbmVMYXlvdXQuY3BwIGlzIGZvciBjb3JlIGZ1bmN0aW9ucyBvbmx5LgorCisgICAgICAgIE5v
IGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Y2Fu
VXNlRm9yV2l0aFJlYXNvbik6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojpw
cmludFJlYXNvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0
OjpwcmludFJlYXNvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxh
eW91dDo6cHJpbnRUZXh0Rm9yU3VidHJlZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
aW1wbGVMaW5lTGF5b3V0Ojp0ZXh0TGVuZ3RoRm9yU3VidHJlZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojpjb2xsZWN0Tm9uRW1wdHlMZWFmUmVuZGVyQmxv
Y2tGbG93cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojpj
b2xsZWN0Tm9uRW1wdHlMZWFmUmVuZGVyQmxvY2tGbG93c0ZvckN1cnJlbnRQYWdlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OnRvZ2dsZVNpbXBsZUxpbmVM
YXlvdXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6cHJp
bnRTaW1wbGVMaW5lTGF5b3V0QmxvY2tMaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUxpbmVMYXlvdXQ6OnByaW50U2ltcGxlTGluZUxheW91dENvdmVyYWdlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OnByaW50UmVhc29uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUxpbmVMYXlvdXQ6OnByaW50UmVhc29ucyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVMaW5lTGF5b3V0OjpwcmludFRleHRGb3JTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNp
bXBsZUxpbmVMYXlvdXQ6OnRleHRMZW5ndGhGb3JTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUxpbmVMYXlvdXQ6OmNvbGxlY3ROb25FbXB0eUxlYWZSZW5kZXJCbG9ja0Zsb3dzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmNvbGxlY3ROb25FbXB0eUxlYWZS
ZW5kZXJCbG9ja0Zsb3dzRm9yQ3VycmVudFBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxl
TGluZUxheW91dDo6dG9nZ2xlU2ltcGxlTGluZUxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpT
aW1wbGVMaW5lTGF5b3V0OjpwcmludFNpbXBsZUxpbmVMYXlvdXRCbG9ja0xpc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6cHJpbnRTaW1wbGVMaW5lTGF5b3V0Q292ZXJh
Z2UpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuaDogQWRk
ZWQuCisKKzIwMTctMDItMjUgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKwogICAg
ICAgICBUZXh0IG1pZ2h0IHdyYXAgd2hlbiBpdHMgcHJlZmVycmVkIGxvZ2ljYWwgd2lkdGggaXMg
dXNlZCBmb3Igc2l6aW5nIHRoZSBjb250YWluaW5nIGJsb2NrLgogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4ODY0CiAgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zMDY5MDczND4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMmVlZTJhMTRhNjUzMzIyMmQ2
Mjk5YWZlNzQ2NjQzNzFkMTU2ZDJjNS4uYzkyMTliNWM0NjFlNGEyYzA3NzlhMzQxM2U1Y2QzNmVm
M2Q2NzAwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTI0ODAsNiArMjQ4MCw3IEBAIHNldChX
ZWJDb3JlX1NPVVJDRVMKICAgICByZW5kZXJpbmcvU2Nyb2xsQWxpZ25tZW50LmNwcAogICAgIHJl
bmRlcmluZy9TZWxlY3Rpb25TdWJ0cmVlUm9vdC5jcHAKICAgICByZW5kZXJpbmcvU2ltcGxlTGlu
ZUxheW91dC5jcHAKKyAgICByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmNwcAog
ICAgIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmNwcAogICAgIHJlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAogICAgIHJlbmRlcmluZy9TaW1wbGVM
aW5lTGF5b3V0UGFnaW5hdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhZDE5OTg1YTdmZGRmODYzOWJkNTgzNDY4ZWVi
ZmFjOTcyZTA5N2Y0Li45OGU4YjBjOTRiMGFkMWIzMDdlY2JlMmM1OWM5YWViNWY0ZDNiNTgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC01NjksNiArNTY5LDggQEAKIAkJMTBGQjA4NEIxNEUxNUM3RTAwQTNEQjk4IC8qIFB1Ymxp
Y1VSTE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDEwRkIwODRBMTRFMTVDN0UwMEEzREI5OCAvKiBQdWJsaWNVUkxNYW5hZ2VyLmggKi87IH07
CiAJCTExMkIzNEQyMUU2MEI4QTcwMEJCMzEwQSAvKiBTaW1wbGVMaW5lTGF5b3V0UGFnaW5hdGlv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMTJC
MzREMDFFNjBCOEE3MDBCQjMxMEEgLyogU2ltcGxlTGluZUxheW91dFBhZ2luYXRpb24uY3BwICov
OyB9OwogCQkxMTJCMzRENTFFNjBCOTgzMDBCQjMxMEEgLyogU2ltcGxlTGluZUxheW91dFBhZ2lu
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDEx
MkIzNEQ0MUU2MEI5ODMwMEJCMzEwQSAvKiBTaW1wbGVMaW5lTGF5b3V0UGFnaW5hdGlvbi5oICov
OyB9OworCQkxMUUwNjdFQzFFNjI0NjEzMDAxNjJEMTYgLyogU2ltcGxlTGluZUxheW91dENvdmVy
YWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDEx
RTA2N0VCMUU2MjQ2MTMwMDE2MkQxNiAvKiBTaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuY3BwICov
OyB9OworCQkxMUUwNjdFRTFFNjI0NkU1MDAxNjJEMTYgLyogU2ltcGxlTGluZUxheW91dENvdmVy
YWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMUUw
NjdFRDFFNjI0NkU1MDAxNjJEMTYgLyogU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmggKi87IH07
CiAJCTEyMERFM0VEMUM4NkNBM0UwMEI2RDRERCAvKiBXZWJBbmltYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTIwREUzRUExQzgwMTYxQzAw
QjZENEREIC8qIFdlYkFuaW1hdGlvbi5jcHAgKi87IH07CiAJCTEyMERFM0YxMUM4NkNDQzYwMEI2
RDRERCAvKiBBbmltYXRpb25FZmZlY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMTIwREUzRUUxQzg2Q0NCRDAwQjZENEREIC8qIEFuaW1hdGlvbkVm
ZmVjdC5jcHAgKi87IH07CiAJCTEyMERFM0Y4MUM4N0M1QTgwMEI2RDRERCAvKiBKU1dlYkFuaW1h
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTIw
REUzRjUxQzg3QzU4RTAwQjZENEREIC8qIEpTV2ViQW5pbWF0aW9uLmggKi87IH07CkBAIC03Njky
LDYgKzc2OTQsOCBAQAogCQkxMEZCMDg0QTE0RTE1QzdFMDBBM0RCOTggLyogUHVibGljVVJMTWFu
YWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdWJsaWNVUkxNYW5hZ2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTExMkIzNEQwMUU2MEI4QTcwMEJCMzEw
QSAvKiBTaW1wbGVMaW5lTGF5b3V0UGFnaW5hdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTaW1wbGVMaW5lTGF5b3V0UGFnaW5hdGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTExMkIzNEQ0MUU2MEI5ODMwMEJCMzEwQSAvKiBTaW1wbGVM
aW5lTGF5b3V0UGFnaW5hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
aW1wbGVMaW5lTGF5b3V0UGFnaW5hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxMUUwNjdFQjFFNjI0NjEzMDAxNjJEMTYgLyogU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpbXBsZUxpbmVMYXlvdXRD
b3ZlcmFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExRTA2N0VEMUU2MjQ2
RTUwMDE2MkQxNiAvKiBTaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTEyMERFM0VBMUM4MDE2MUMwMEI2RDRERCAvKiBXZWJBbmltYXRp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQW5pbWF0aW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTIwREUzRUIxQzgwMTYxQzAwQjZE
NEREIC8qIFdlYkFuaW1hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJBbmltYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTIwREUzRUMxQzgw
MTYxQzAwQjZENEREIC8qIFdlYkFuaW1hdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
V2ViQW5pbWF0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0MzUxLDYg
KzI0MzU1LDggQEAKIAkJCQlDRENGQUJCQjE4QzBBRTMxMDA2Rjg0NTAgLyogU2VsZWN0aW9uU3Vi
dHJlZVJvb3QuaCAqLywKIAkJCQlFNDg5NDRBMDE4MEI1N0Q4MDBGMTY1RDggLyogU2ltcGxlTGlu
ZUxheW91dC5jcHAgKi8sCiAJCQkJRTQ4OTQ0QTExODBCNTdEODAwRjE2NUQ4IC8qIFNpbXBsZUxp
bmVMYXlvdXQuaCAqLywKKwkJCQkxMUUwNjdFQjFFNjI0NjEzMDAxNjJEMTYgLyogU2ltcGxlTGlu
ZUxheW91dENvdmVyYWdlLmNwcCAqLywKKwkJCQkxMUUwNjdFRDFFNjI0NkU1MDAxNjJEMTYgLyog
U2ltcGxlTGluZUxheW91dENvdmVyYWdlLmggKi8sCiAJCQkJNTg1RDZFMDExQTFBNzkyRTAwRkE0
RjEyIC8qIFNpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMuY3BwICovLAogCQkJCTU4NUQ2RTAy
MUExQTc5MkUwMEZBNEYxMiAvKiBTaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmggKi8sCiAJ
CQkJRTRFOUIxMUExODE0NTY5MjAwM0FDQ0RGIC8qIFNpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMu
Y3BwICovLApAQCAtMjU5NjEsNiArMjU5NjcsNyBAQAogCQkJCTk3QjM4RTI3MTUxQzQyNzEwMDQ2
MjJFOSAvKiBET01XaW5kb3dOb3RpZmljYXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0Qy
QUQwNDE0QjgyM0E2MDA5M0RGMzIgLyogRE9NV2luZG93UHJvcGVydHkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg5RjYwQjExMTU3RjY4NkUwMDc1RTE1NyAvKiBET01XaW5kb3dRdW90YS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMTFFMDY3RUUxRTYyNDZFNTAwMTYyRDE2IC8qIFNpbXBsZUxpbmVMYXlv
dXRDb3ZlcmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUEyQTVBRDYxNkE0ODYxNjAwOTc1QTI1
IC8qIERPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThDQ0JC
NDkxNTFGODMxNjAwQUI3Q0U5IC8qIERPTVdpbmRvd1dlYkRhdGFiYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzUzREEyRTExNDMxMjFFMDAwRDgxN0UgLyogRE9NV3JhcHBlcldvcmxkLmggaW4g
SGVhZGVycyAqLywKQEAgLTMyMTM2LDYgKzMyMTQzLDcgQEAKIAkJCQk5NzU5RTk0MjE0RUYxQ0Y4
MDAyNkEyREQgLyogVGV4dFRyYWNrQ3VlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3MUE5RUMy
MTY4RkJDNDMwMDI2MjlGOSAvKiBUZXh0VHJhY2tDdWVHZW5lcmljLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTk3NTlFOTQ1MTRFRjFDRjgwMDI2QTJERCAvKiBUZXh0VHJhY2tDdWVMaXN0LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTExRTA2N0VDMUU2MjQ2MTMwMDE2MkQxNiAvKiBTaW1wbGVMaW5l
TGF5b3V0Q292ZXJhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc2OTcwODYxNDYzQUQ4NzAw
RjUwMkNGIC8qIFRleHRUcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjFBRDRFNzMx
M0ExMkE0NjAwODQ2QjI3IC8qIFRleHRUcmFja0xvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDRDFFNzM0NzE2N0JDNzhFMDA5QTg4NUQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyaW5nQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcmluZ0Fs
bEluT25lLmNwcAppbmRleCAyNmZkZTVlZTEyMTU3N2U5MThlY2M0MmRkMjg4MmJlMTlmZjM1N2Iy
Li5hYzU3NjE1NzU4YzA3NjA2MDkxMTIxMjQ4OGEyZTE4MDg3NjBiODBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHAKQEAgLTE0Miw2ICsxNDIs
NyBAQAogI2luY2x1ZGUgIlNjcm9sbEFsaWdubWVudC5jcHAiCiAjaW5jbHVkZSAiU2VsZWN0aW9u
U3VidHJlZVJvb3QuY3BwIgogI2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXQuY3BwIgorI2luY2x1
ZGUgIlNpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5jcHAiCiAjaW5jbHVkZSAiU2ltcGxlTGluZUxh
eW91dEZsb3dDb250ZW50cy5jcHAiCiAjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dEZ1bmN0aW9u
cy5jcHAiCiAjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dFBhZ2luYXRpb24uY3BwIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCmluZGV4IGVhNDIyNjIw
Y2U3ZTFiNDFhY2U4YmE0MjU0ZmNkMTFhZDQwZjczNmUuLjU0MjExNTMwN2FkYWY3NGRkOTQ0ZmNk
YzIxMjI4NTM3MTI5NjQ5ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9T
aW1wbGVMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxl
TGluZUxheW91dC5jcHAKQEAgLTQ0LDg2ICs0NCwxNyBAQAogI2luY2x1ZGUgIlJlbmRlclN0eWxl
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9s
LmgiCi0jaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5oIgogI2luY2x1ZGUgIlNpbXBsZUxp
bmVMYXlvdXRGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdt
ZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFBhaW50U3R5
bGUuaCIKLSNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5h
bWVzcGFjZSBTaW1wbGVMaW5lTGF5b3V0IHsKIAogI2lmbmRlZiBOREVCVUcKLXZvaWQgcHJpbnRT
aW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UoKTsKLXZvaWQgcHJpbnRTaW1wbGVMaW5lTGF5b3V0Qmxv
Y2tMaXN0KCk7Ci12b2lkIHRvZ2dsZVNpbXBsZUxpbmVMYXlvdXQoKTsKLSNlbmRpZgotCi1lbnVt
IEF2b2lkYW5jZVJlYXNvbl8gOiB1aW50NjRfdCB7Ci0gICAgRmxvd0lzSW5zaWRlUmVnaW9uICAg
ICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDAsCi0gICAgRmxvd0hhc0hvcml6b25hbFdyaXRp
bmdNb2RlICAgICAgICAgICA9IDFMTFUgIDw8IDEsCi0gICAgRmxvd0hhc091dGxpbmUgICAgICAg
ICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDIsCi0gICAgRmxvd0lzUnVieSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDMsCi0gICAgRmxvd0lzUGFnaW5hdGVkICAgICAg
ICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDQsCi0gICAgRmxvd0hhc1RleHRPdmVyZmxvdyAg
ICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDUsCi0gICAgRmxvd0lzRGVwcmljYXRlZEZsZXhC
b3ggICAgICAgICAgICAgICA9IDFMTFUgIDw8IDYsCi0gICAgRmxvd1BhcmVudElzUGxhY2Vob2xk
ZXJFbGVtZW50ICAgICAgICA9IDFMTFUgIDw8IDcsCi0gICAgRmxvd1BhcmVudElzVGV4dEFyZWFX
aXRoV3JhcHBpbmcgICAgICA9IDFMTFUgIDw8IDgsCi0gICAgRmxvd0hhc05vblN1cHBvcnRlZENo
aWxkICAgICAgICAgICAgICA9IDFMTFUgIDw8IDksCi0gICAgRmxvd0hhc1Vuc3VwcG9ydGVkRmxv
YXQgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDEwLAotICAgIEZsb3dIYXNVbnN1cHBvcnRlZFVu
ZGVybGluZURlY29yYXRpb24gPSAxTExVICA8PCAxMSwKLSAgICBGbG93SGFzSnVzdGlmaWVkTm9u
TGF0aW5UZXh0ICAgICAgICAgID0gMUxMVSAgPDwgMTIsCi0gICAgRmxvd0hhc092ZXJmbG93Tm90
VmlzaWJsZSAgICAgICAgICAgICA9IDFMTFUgIDw8IDEzLAotICAgIEZsb3dIYXNXZWJLaXROQlNQ
TW9kZSAgICAgICAgICAgICAgICAgPSAxTExVICA8PCAxNCwKLSAgICBGbG93SXNOb3RMVFIgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgMTUsCi0gICAgRmxvd0hhc0xpbmVCb3hD
b250YWluUHJvcGVydHkgICAgICAgICA9IDFMTFUgIDw8IDE2LAotICAgIEZsb3dJc05vdFRvcFRv
Qm90dG9tICAgICAgICAgICAgICAgICAgPSAxTExVICA8PCAxNywKLSAgICBGbG93SGFzTGluZUJy
ZWFrICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgMTgsCi0gICAgRmxvd0hhc05vbk5v
cm1hbFVuaWNvZGVCaURpICAgICAgICAgICA9IDFMTFUgIDw8IDE5LAotICAgIEZsb3dIYXNSVExP
cmRlcmluZyAgICAgICAgICAgICAgICAgICAgPSAxTExVICA8PCAyMCwKLSAgICBGbG93SGFzTGlu
ZUFsaWduRWRnZXMgICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgMjEsCi0gICAgRmxvd0hhc0xp
bmVTbmFwICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDIyLAotICAgIEZsb3dIYXNU
ZXh0RW1waGFzaXNGaWxsT3JNYXJrICAgICAgICAgPSAxTExVICA8PCAyMywKLSAgICBGbG93SGFz
VGV4dFNoYWRvdyAgICAgICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgMjQsCi0gICAgRmxvd0hh
c1BzZXVkb0ZpcnN0TGluZSAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDI1LAotICAgIEZsb3dI
YXNQc2V1ZG9GaXJzdExldHRlciAgICAgICAgICAgICAgPSAxTExVICA8PCAyNiwKLSAgICBGbG93
SGFzVGV4dENvbWJpbmUgICAgICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgMjcsCi0gICAgRmxv
d0hhc1RleHRGaWxsQm94ICAgICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDI4LAotICAgIEZs
b3dIYXNCb3JkZXJGaXRMaW5lcyAgICAgICAgICAgICAgICAgPSAxTExVICA8PCAyOSwKLSAgICBG
bG93SGFzTm9uQXV0b0xpbmVCcmVhayAgICAgICAgICAgICAgID0gMUxMVSAgPDwgMzAsCi0gICAg
Rmxvd0hhc05vbkF1dG9UcmFpbGluZ1dvcmQgICAgICAgICAgICA9IDFMTFUgIDw8IDMxLAotICAg
IEZsb3dIYXNTVkdGb250ICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVICA8PCAzMiwKLSAg
ICBGbG93VGV4dElzRW1wdHkgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgMzMsCi0g
ICAgRmxvd1RleHRIYXNTb2Z0SHlwaGVuICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDM0LAot
ICAgIEZsb3dUZXh0SGFzRGlyZWN0aW9uQ2hhcmFjdGVyICAgICAgICAgPSAxTExVICA8PCAzNSwK
LSAgICBGbG93SXNNaXNzaW5nUHJpbWFyeUZvbnQgICAgICAgICAgICAgID0gMUxMVSAgPDwgMzYs
Ci0gICAgRmxvd1ByaW1hcnlGb250SXNJbnN1ZmZpY2llbnQgICAgICAgICA9IDFMTFUgIDw8IDM3
LAotICAgIEZsb3dUZXh0SXNDb21iaW5lVGV4dCAgICAgICAgICAgICAgICAgPSAxTExVICA8PCAz
OCwKLSAgICBGbG93VGV4dElzUmVuZGVyQ291bnRlciAgICAgICAgICAgICAgID0gMUxMVSAgPDwg
MzksCi0gICAgRmxvd1RleHRJc1JlbmRlclF1b3RlICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8
IDQwLAotICAgIEZsb3dUZXh0SXNUZXh0RnJhZ21lbnQgICAgICAgICAgICAgICAgPSAxTExVICA8
PCA0MSwKLSAgICBGbG93VGV4dElzU1ZHSW5saW5lVGV4dCAgICAgICAgICAgICAgID0gMUxMVSAg
PDwgNDIsCi0gICAgRmxvd0hhc0NvbXBsZXhGb250Q29kZVBhdGggICAgICAgICAgICA9IDFMTFUg
IDw8IDQzLAotICAgIEZlYXR1cmVJc0Rpc2FibGVkICAgICAgICAgICAgICAgICAgICAgPSAxTExV
ICA8PCA0NCwKLSAgICBGbG93SGFzTm9QYXJlbnQgICAgICAgICAgICAgICAgICAgICAgID0gMUxM
VSAgPDwgNDUsCi0gICAgRmxvd0hhc05vQ2hpbGQgICAgICAgICAgICAgICAgICAgICAgICA9IDFM
TFUgIDw8IDQ2LAotICAgIEZsb3dDaGlsZElzU2VsZWN0ZWQgICAgICAgICAgICAgICAgICAgPSAx
TExVICA8PCA0NywKLSAgICBGbG93SGFzSGFuZ2luZ1B1bmN0dWF0aW9uICAgICAgICAgICAgID0g
MUxMVSAgPDwgNDgsCi0gICAgRmxvd0ZvbnRIYXNPdmVyZmxvd0dseXBoICAgICAgICAgICAgICA9
IDFMTFUgIDw8IDQ5LAotICAgIEZsb3dUZXh0SGFzU3Vycm9nYXRlUGFpciAgICAgICAgICAgICAg
PSAxTExVICA8PCA1MCwKLSAgICBFbmRPZlJlYXNvbnMgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gMUxMVSAgPDwgNTEKLX07Ci1jb25zdCB1bnNpZ25lZCBOb1JlYXNvbiA9IDA7Ci0KLXR5cGVk
ZWYgdWludDY0X3QgQXZvaWRhbmNlUmVhc29uOwotdHlwZWRlZiB1aW50NjRfdCBBdm9pZGFuY2VS
ZWFzb25GbGFnczsKLQotZW51bSBjbGFzcyBJbmNsdWRlUmVhc29ucyB7IEZpcnN0ICwgQWxsIH07
Ci0KLSNpZm5kZWYgTkRFQlVHCiAjZGVmaW5lIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9JRl9ORUVE
RUQocmVhc29uLCByZWFzb25zLCBpbmNsdWRlUmVhc29ucykgeyBcCiAgICAgICAgIHJlYXNvbnMg
fD0gcmVhc29uOyBcCiAgICAgICAgIGlmIChpbmNsdWRlUmVhc29ucyA9PSBJbmNsdWRlUmVhc29u
czo6Rmlyc3QpIFwKQEAgLTI5OCw3ICsyMjksNyBAQCBzdGF0aWMgQXZvaWRhbmNlUmVhc29uRmxh
Z3MgY2FuVXNlRm9yU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBJbmNsdWRlUmVhcwog
ICAgIHJldHVybiByZWFzb25zOwogfQogCi1zdGF0aWMgQXZvaWRhbmNlUmVhc29uRmxhZ3MgY2Fu
VXNlRm9yV2l0aFJlYXNvbihjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIEluY2x1ZGVSZWFz
b25zIGluY2x1ZGVSZWFzb25zKQorQXZvaWRhbmNlUmVhc29uRmxhZ3MgY2FuVXNlRm9yV2l0aFJl
YXNvbihjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIEluY2x1ZGVSZWFzb25zIGluY2x1ZGVS
ZWFzb25zKQogewogI2lmbmRlZiBOREVCVUcKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25j
ZUZsYWc7CkBAIC05NDgsMzE5ICs4NzksNSBAQCBMYXlvdXQ6OkxheW91dChjb25zdCBSdW5WZWN0
b3ImIHJ1blZlY3RvciwgdW5zaWduZWQgbGluZUNvdW50KQogICAgIG1lbWNweShtX3J1bnMsIHJ1
blZlY3Rvci5kYXRhKCksIG1fcnVuQ291bnQgKiBzaXplb2YoUnVuKSk7CiB9CiAKLSNpZm5kZWYg
TkRFQlVHCi1zdGF0aWMgdm9pZCBwcmludFJlYXNvbihBdm9pZGFuY2VSZWFzb24gcmVhc29uLCBU
ZXh0U3RyZWFtJiBzdHJlYW0pCi17Ci0gICAgc3dpdGNoIChyZWFzb24pIHsKLSAgICBjYXNlIEZs
b3dJc0luc2lkZVJlZ2lvbjoKLSAgICAgICAgc3RyZWFtIDw8ICJmbG93IGlzIGluc2lkZSByZWdp
b24iOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dIYXNIb3Jpem9uYWxXcml0aW5nTW9k
ZToKLSAgICAgICAgc3RyZWFtIDw8ICJob3Jpem9udGFsIHdyaXRpbmcgbW9kZSI7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgRmxvd0hhc091dGxpbmU6Ci0gICAgICAgIHN0cmVhbSA8PCAib3V0
bGluZSI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmxvd0lzUnVieToKLSAgICAgICAgc3Ry
ZWFtIDw8ICJydWJ5IjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93SGFzSGFuZ2luZ1B1
bmN0dWF0aW9uOgotICAgICAgICBzdHJlYW0gPDwgImhhbmdpbmcgcHVuY3R1YXRpb24iOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dJc1BhZ2luYXRlZDoKLSAgICAgICAgc3RyZWFtIDw8
ICJwYWdpbmF0ZWQiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dIYXNUZXh0T3ZlcmZs
b3c6Ci0gICAgICAgIHN0cmVhbSA8PCAidGV4dC1vdmVyZmxvdyI7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgRmxvd0lzRGVwcmljYXRlZEZsZXhCb3g6Ci0gICAgICAgIHN0cmVhbSA8PCAiZGVw
cmljYXRlZEZsZXhCb3giOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dQYXJlbnRJc1Bs
YWNlaG9sZGVyRWxlbWVudDoKLSAgICAgICAgc3RyZWFtIDw8ICJwbGFjZWhvbGRlciBlbGVtZW50
IjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93UGFyZW50SXNUZXh0QXJlYVdpdGhXcmFw
cGluZzoKLSAgICAgICAgc3RyZWFtIDw8ICJ3cmFwcGluZyB0ZXh0YXJlYSI7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgRmxvd0hhc05vblN1cHBvcnRlZENoaWxkOgotICAgICAgICBzdHJlYW0g
PDwgIm5lc3RlZCByZW5kZXJlcnMiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dIYXNV
bnN1cHBvcnRlZEZsb2F0OgotICAgICAgICBzdHJlYW0gPDwgImNvbXBsaWNhdGVkIGZsb2F0IjsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93SGFzVW5zdXBwb3J0ZWRVbmRlcmxpbmVEZWNv
cmF0aW9uOgotICAgICAgICBzdHJlYW0gPDwgInRleHQtdW5kZXJsaW5lLXBvc2l0aW9uOiB1bmRl
ciI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmxvd0hhc0p1c3RpZmllZE5vbkxhdGluVGV4
dDoKLSAgICAgICAgc3RyZWFtIDw8ICJ0ZXh0LWFsaWduOiBqdXN0aWZ5IHdpdGggbm9uLWxhdGlu
IHRleHQiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dIYXNPdmVyZmxvd05vdFZpc2li
bGU6Ci0gICAgICAgIHN0cmVhbSA8PCAib3ZlcmZsb3c6IGhpZGRlbiB8IHNjcm9sbCB8IGF1dG8i
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dIYXNXZWJLaXROQlNQTW9kZToKLSAgICAg
ICAgc3RyZWFtIDw8ICItd2Via2l0LW5ic3AtbW9kZTogc3BhY2UiOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEZsb3dJc05vdExUUjoKLSAgICAgICAgc3RyZWFtIDw8ICJkaXIgaXMgbm90IExU
UiI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmxvd0hhc0xpbmVCb3hDb250YWluUHJvcGVy
dHk6Ci0gICAgICAgIHN0cmVhbSA8PCAibGluZS1ib3gtY29udGFpbiB2YWx1ZSBpbmRpY2F0ZXMg
dmFyaWFibGUgbGluZSBoZWlnaHQiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dJc05v
dFRvcFRvQm90dG9tOgotICAgICAgICBzdHJlYW0gPDwgIm5vbiB0b3AtdG8tYm90dG9tIGZsb3ci
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dIYXNMaW5lQnJlYWs6Ci0gICAgICAgIHN0
cmVhbSA8PCAibGluZS1icmVhayBwcm9wZXJ0eSI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
Rmxvd0hhc05vbk5vcm1hbFVuaWNvZGVCaURpOgotICAgICAgICBzdHJlYW0gPDwgIm5vbi1ub3Jt
YWwgVW5pY29kZSBiaWRpIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93SGFzUlRMT3Jk
ZXJpbmc6Ci0gICAgICAgIHN0cmVhbSA8PCAiLXdlYmtpdC1ydGwtb3JkZXJpbmciOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEZsb3dIYXNMaW5lQWxpZ25FZGdlczoKLSAgICAgICAgc3RyZWFt
IDw8ICItd2Via2l0LWxpbmUtYWxpZ24gZWRnZXMiOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEZsb3dIYXNMaW5lU25hcDoKLSAgICAgICAgc3RyZWFtIDw8ICItd2Via2l0LWxpbmUtc25hcCBw
cm9wZXJ0eSI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmxvd0hhc1RleHRFbXBoYXNpc0Zp
bGxPck1hcms6Ci0gICAgICAgIHN0cmVhbSA8PCAidGV4dC1lbXBoYXNpcyAoZmlsbC9tYXJrKSI7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmxvd0hhc1BzZXVkb0ZpcnN0TGluZToKLSAgICAg
ICAgc3RyZWFtIDw8ICJmaXJzdC1saW5lIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93
SGFzUHNldWRvRmlyc3RMZXR0ZXI6Ci0gICAgICAgIHN0cmVhbSA8PCAiZmlyc3QtbGV0dGVyIjsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93SGFzVGV4dENvbWJpbmU6Ci0gICAgICAgIHN0
cmVhbSA8PCAidGV4dCBjb21iaW5lIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93SGFz
VGV4dEZpbGxCb3g6Ci0gICAgICAgIHN0cmVhbSA8PCAiYmFja2dyb3VuZC1jb2xvciAodGV4dC1m
aWxsKSI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmxvd0hhc0JvcmRlckZpdExpbmVzOgot
ICAgICAgICBzdHJlYW0gPDwgIi13ZWJraXQtYm9yZGVyLWZpdCI7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgRmxvd0hhc05vbkF1dG9MaW5lQnJlYWs6Ci0gICAgICAgIHN0cmVhbSA8PCAibGlu
ZS1icmVhayBpcyBub3QgYXV0byI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmxvd0hhc05v
bkF1dG9UcmFpbGluZ1dvcmQ6Ci0gICAgICAgIHN0cmVhbSA8PCAiLWFwcGxlLXRyYWlsaW5nLXdv
cmQgaXMgbm90IGF1dG8iOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dIYXNTVkdGb250
OgotICAgICAgICBzdHJlYW0gPDwgIlNWRyBmb250IjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBGbG93VGV4dEhhc1NvZnRIeXBoZW46Ci0gICAgICAgIHN0cmVhbSA8PCAic29mdCBoeXBoZW4g
Y2hhcmFjdGVyIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93VGV4dEhhc0RpcmVjdGlv
bkNoYXJhY3RlcjoKLSAgICAgICAgc3RyZWFtIDw8ICJkaXJlY3Rpb24gY2hhcmFjdGVyIjsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93SXNNaXNzaW5nUHJpbWFyeUZvbnQ6Ci0gICAgICAg
IHN0cmVhbSA8PCAibWlzc2luZyBwcmltYXJ5IGZvbnQiOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEZsb3dQcmltYXJ5Rm9udElzSW5zdWZmaWNpZW50OgotICAgICAgICBzdHJlYW0gPDwgIm1p
c3NpbmcgZ2x5cGggb3IgZ2x5cGggbmVlZHMgYW5vdGhlciBmb250IjsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBGbG93VGV4dElzQ29tYmluZVRleHQ6Ci0gICAgICAgIHN0cmVhbSA8PCAidGV4
dCBpcyBjb21iaW5lIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93VGV4dElzUmVuZGVy
Q291bnRlcjoKLSAgICAgICAgc3RyZWFtIDw8ICJ1bnN1cHBvcnRlZCBSZW5kZXJDb3VudGVyIjsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93VGV4dElzUmVuZGVyUXVvdGU6Ci0gICAgICAg
IHN0cmVhbSA8PCAidW5zdXBwb3J0ZWQgUmVuZGVyUXVvdGUiOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEZsb3dUZXh0SXNUZXh0RnJhZ21lbnQ6Ci0gICAgICAgIHN0cmVhbSA8PCAidW5zdXBw
b3J0ZWQgVGV4dEZyYWdtZW50IjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93VGV4dElz
U1ZHSW5saW5lVGV4dDoKLSAgICAgICAgc3RyZWFtIDw8ICJ1bnN1cHBvcnRlZCBTVkdJbmxpbmVU
ZXh0IjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93SGFzQ29tcGxleEZvbnRDb2RlUGF0
aDoKLSAgICAgICAgc3RyZWFtIDw8ICJ0ZXh0IHdpdGggY29tcGxleCBmb250IGNvZGVwYXRoIjsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93SGFzVGV4dFNoYWRvdzoKLSAgICAgICAgc3Ry
ZWFtIDw8ICJ0ZXh0LXNoYWRvdyI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmxvd0NoaWxk
SXNTZWxlY3RlZDoKLSAgICAgICAgc3RyZWFtIDw8ICJzZWxlY3RlZCBjb250ZW50IjsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93Rm9udEhhc092ZXJmbG93R2x5cGg6Ci0gICAgICAgIHN0
cmVhbSA8PCAiLXdlYmtpdC1saW5lLWJveC1jb250YWluOiBnbHlwaHMgd2l0aCBvdmVyZmxvd2lu
ZyB0ZXh0LiI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmxvd1RleHRIYXNTdXJyb2dhdGVQ
YWlyOgotICAgICAgICBzdHJlYW0gPDwgInN1cnJvZ2F0ZSBwYWlyIjsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBGbG93VGV4dElzRW1wdHk6Ci0gICAgY2FzZSBGbG93SGFzTm9DaGlsZDoKLSAg
ICBjYXNlIEZsb3dIYXNOb1BhcmVudDoKLSAgICBjYXNlIEZlYXR1cmVJc0Rpc2FibGVkOgotICAg
IGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgcHJpbnRS
ZWFzb25zKEF2b2lkYW5jZVJlYXNvbkZsYWdzIHJlYXNvbnMsIFRleHRTdHJlYW0mIHN0cmVhbSkK
LXsKLSAgICBib29sIGZpcnN0ID0gdHJ1ZTsKLSAgICBmb3IgKGF1dG8gcmVhc29uSXRlbSA9IEVu
ZE9mUmVhc29ucyA+PiAxOyByZWFzb25JdGVtICE9IE5vUmVhc29uOyByZWFzb25JdGVtID4+PSAx
KSB7Ci0gICAgICAgIGlmICghKHJlYXNvbnMgJiByZWFzb25JdGVtKSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICBzdHJlYW0gPDwgKGZpcnN0ID8gIiAiIDogIiwgIik7Ci0gICAgICAg
IGZpcnN0ID0gZmFsc2U7Ci0gICAgICAgIHByaW50UmVhc29uKHJlYXNvbkl0ZW0sIHN0cmVhbSk7
Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCBwcmludFRleHRGb3JTdWJ0cmVlKGNvbnN0IFJlbmRl
ck9iamVjdCYgcmVuZGVyZXIsIHVuc2lnbmVkJiBjaGFyYWN0ZXJzTGVmdCwgVGV4dFN0cmVhbSYg
c3RyZWFtKQotewotICAgIGlmICghY2hhcmFjdGVyc0xlZnQpCi0gICAgICAgIHJldHVybjsKLSAg
ICBpZiAoaXM8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKSB7Ci0gICAgICAgIFN0cmluZyB0ZXh0ID0g
ZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpLnRleHQoKTsKLSAgICAgICAgdGV4dCA9IHRl
eHQuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgIHVuc2lnbmVkIGxlbiA9IHN0ZDo6bWluKGNo
YXJhY3RlcnNMZWZ0LCB0ZXh0Lmxlbmd0aCgpKTsKLSAgICAgICAgc3RyZWFtIDw8IHRleHQubGVm
dChsZW4pOwotICAgICAgICBjaGFyYWN0ZXJzTGVmdCAtPSBsZW47Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgaWYgKCFpczxSZW5kZXJFbGVtZW50PihyZW5kZXJlcikpCi0gICAgICAgIHJl
dHVybjsKLSAgICBmb3IgKGNvbnN0IGF1dG8qIGNoaWxkID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVu
dD4ocmVuZGVyZXIpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJs
aW5nKCkpCi0gICAgICAgIHByaW50VGV4dEZvclN1YnRyZWUoKmNoaWxkLCBjaGFyYWN0ZXJzTGVm
dCwgc3RyZWFtKTsKLX0KLQotc3RhdGljIHVuc2lnbmVkIHRleHRMZW5ndGhGb3JTdWJ0cmVlKGNv
bnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCi17Ci0gICAgaWYgKGlzPFJlbmRlclRleHQ+KHJl
bmRlcmVyKSkKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclRleHQ+KHJlbmRlcmVyKS50
ZXh0TGVuZ3RoKCk7Ci0gICAgaWYgKCFpczxSZW5kZXJFbGVtZW50PihyZW5kZXJlcikpCi0gICAg
ICAgIHJldHVybiAwOwotICAgIHVuc2lnbmVkIHRleHRMZW5ndGggPSAwOwotICAgIGZvciAoY29u
c3QgYXV0byogY2hpbGQgPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihyZW5kZXJlcikuZmlyc3RD
aGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgdGV4
dExlbmd0aCArPSB0ZXh0TGVuZ3RoRm9yU3VidHJlZSgqY2hpbGQpOwotICAgIHJldHVybiB0ZXh0
TGVuZ3RoOwotfQotCi1zdGF0aWMgdm9pZCBjb2xsZWN0Tm9uRW1wdHlMZWFmUmVuZGVyQmxvY2tG
bG93cyhjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBIYXNoU2V0PGNvbnN0IFJlbmRlckJs
b2NrRmxvdyo+JiBsZWFmUmVuZGVyZXJzKQotewotICAgIGlmIChpczxSZW5kZXJUZXh0PihyZW5k
ZXJlcikpIHsKLSAgICAgICAgaWYgKCFkb3duY2FzdDxSZW5kZXJUZXh0PihyZW5kZXJlcikudGV4
dExlbmd0aCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAvLyBGaW5kIFJlbmRlckJs
b2NrRmxvdyBhbmNlc3Rvci4KLSAgICAgICAgZm9yIChjb25zdCBhdXRvKiBjdXJyZW50ID0gcmVu
ZGVyZXIucGFyZW50KCk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5wYXJlbnQoKSkgewot
ICAgICAgICAgICAgaWYgKCFpczxSZW5kZXJCbG9ja0Zsb3c+KGN1cnJlbnQpKQotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgbGVhZlJlbmRlcmVycy5hZGQoZG93bmNhc3Q8
UmVuZGVyQmxvY2tGbG93PihjdXJyZW50KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghaXM8UmVuZGVyRWxlbWVudD4ocmVu
ZGVyZXIpKQotICAgICAgICByZXR1cm47Ci0gICAgZm9yIChjb25zdCBhdXRvKiBjaGlsZCA9IGRv
d25jYXN0PFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVyKS5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGls
ZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQotICAgICAgICBjb2xsZWN0Tm9uRW1wdHlMZWFmUmVu
ZGVyQmxvY2tGbG93cygqY2hpbGQsIGxlYWZSZW5kZXJlcnMpOwotfQotCi1zdGF0aWMgdm9pZCBj
b2xsZWN0Tm9uRW1wdHlMZWFmUmVuZGVyQmxvY2tGbG93c0ZvckN1cnJlbnRQYWdlKEhhc2hTZXQ8
Y29uc3QgUmVuZGVyQmxvY2tGbG93Kj4mIGxlYWZSZW5kZXJlcnMpCi17Ci0gICAgZm9yIChjb25z
dCBhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkgewotICAgICAgICBp
ZiAoIWRvY3VtZW50LT5yZW5kZXJWaWV3KCkgfHwgZG9jdW1lbnQtPnBhZ2VDYWNoZVN0YXRlKCkg
IT0gRG9jdW1lbnQ6Ok5vdEluUGFnZUNhY2hlKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIGlmICghZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkgJiYgIWRvY3VtZW50LT5pc1hIVE1M
RG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBjb2xsZWN0Tm9uRW1w
dHlMZWFmUmVuZGVyQmxvY2tGbG93cygqZG9jdW1lbnQtPnJlbmRlclZpZXcoKSwgbGVhZlJlbmRl
cmVycyk7Ci0gICAgfQotfQotCi12b2lkIHRvZ2dsZVNpbXBsZUxpbmVMYXlvdXQoKQotewotICAg
IGZvciAoYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkpIHsKLSAgICAg
ICAgYXV0byYgc2V0dGluZ3MgPSBkb2N1bWVudC0+bXV0YWJsZVNldHRpbmdzKCk7Ci0gICAgICAg
IHNldHRpbmdzLnNldFNpbXBsZUxpbmVMYXlvdXRFbmFibGVkKCFzZXR0aW5ncy5zaW1wbGVMaW5l
TGF5b3V0RW5hYmxlZCgpKTsKLSAgICB9Ci19Ci0KLXZvaWQgcHJpbnRTaW1wbGVMaW5lTGF5b3V0
QmxvY2tMaXN0KCkKLXsKLSAgICBIYXNoU2V0PGNvbnN0IFJlbmRlckJsb2NrRmxvdyo+IGxlYWZS
ZW5kZXJlcnM7Ci0gICAgY29sbGVjdE5vbkVtcHR5TGVhZlJlbmRlckJsb2NrRmxvd3NGb3JDdXJy
ZW50UGFnZShsZWFmUmVuZGVyZXJzKTsKLSAgICBpZiAoIWxlYWZSZW5kZXJlcnMuc2l6ZSgpKSB7
Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiTm8gdGV4dCBmb3VuZCBpbiB0aGlzIGRvY3VtZW50XG4i
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBUZXh0U3RyZWFtIHN0cmVhbTsKLSAgICBz
dHJlYW0gPDwgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLVxuIjsKLSAgICBmb3IgKGNvbnN0IGF1dG8qIGZsb3cgOiBsZWFmUmVuZGVyZXJzKSB7Ci0g
ICAgICAgIGF1dG8gcmVhc29uID0gY2FuVXNlRm9yV2l0aFJlYXNvbigqZmxvdywgSW5jbHVkZVJl
YXNvbnM6OkFsbCk7Ci0gICAgICAgIGlmIChyZWFzb24gPT0gTm9SZWFzb24pCi0gICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgdW5zaWduZWQgcHJpbnRlZExlbmd0aCA9IDMwOwotICAgICAg
ICBzdHJlYW0gPDwgIlwiIjsKLSAgICAgICAgcHJpbnRUZXh0Rm9yU3VidHJlZSgqZmxvdywgcHJp
bnRlZExlbmd0aCwgc3RyZWFtKTsKLSAgICAgICAgZm9yICg7cHJpbnRlZExlbmd0aCA+IDA7IC0t
cHJpbnRlZExlbmd0aCkKLSAgICAgICAgICAgIHN0cmVhbSA8PCAiICI7Ci0gICAgICAgIHN0cmVh
bSA8PCAiXCIoIiA8PCB0ZXh0TGVuZ3RoRm9yU3VidHJlZSgqZmxvdykgPDwgIik6IjsKLSAgICAg
ICAgcHJpbnRSZWFzb25zKHJlYXNvbiwgc3RyZWFtKTsKLSAgICAgICAgc3RyZWFtIDw8ICJcbiI7
Ci0gICAgfQotICAgIHN0cmVhbSA8PCAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tXG4iOwotICAgIFdURkxvZ0Fsd2F5cygiJXMiLCBzdHJlYW0ucmVs
ZWFzZSgpLnV0ZjgoKS5kYXRhKCkpOwotfQotCi12b2lkIHByaW50U2ltcGxlTGluZUxheW91dENv
dmVyYWdlKCkKLXsKLSAgICBIYXNoU2V0PGNvbnN0IFJlbmRlckJsb2NrRmxvdyo+IGxlYWZSZW5k
ZXJlcnM7Ci0gICAgY29sbGVjdE5vbkVtcHR5TGVhZlJlbmRlckJsb2NrRmxvd3NGb3JDdXJyZW50
UGFnZShsZWFmUmVuZGVyZXJzKTsKLSAgICBpZiAoIWxlYWZSZW5kZXJlcnMuc2l6ZSgpKSB7Ci0g
ICAgICAgIFdURkxvZ0Fsd2F5cygiTm8gdGV4dCBmb3VuZCBpbiB0aGlzIGRvY3VtZW50XG4iKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBUZXh0U3RyZWFtIHN0cmVhbTsKLSAgICBIYXNo
TWFwPEF2b2lkYW5jZVJlYXNvbiwgdW5zaWduZWQ+IGZsb3dTdGF0aXN0aWNzOwotICAgIHVuc2ln
bmVkIHRleHRMZW5ndGggPSAwOwotICAgIHVuc2lnbmVkIHVuc3VwcG9ydGVkVGV4dExlbmd0aCA9
IDA7Ci0gICAgdW5zaWduZWQgbnVtYmVyT2ZVbnN1cHBvcnRlZExlYWZCbG9ja3MgPSAwOwotICAg
IHVuc2lnbmVkIHN1cHBvcnRlZEJ1dEZvcmNlZFRvTGluZUxheW91dFRleHRMZW5ndGggPSAwOwot
ICAgIHVuc2lnbmVkIG51bWJlck9mU3VwcG9ydGVkQnV0Rm9yY2VkVG9MaW5lTGF5b3V0TGVhZkJs
b2NrcyA9IDA7Ci0gICAgZm9yIChjb25zdCBhdXRvKiBmbG93IDogbGVhZlJlbmRlcmVycykgewot
ICAgICAgICBhdXRvIGZsb3dMZW5ndGggPSB0ZXh0TGVuZ3RoRm9yU3VidHJlZSgqZmxvdyk7Ci0g
ICAgICAgIHRleHRMZW5ndGggKz0gZmxvd0xlbmd0aDsKLSAgICAgICAgYXV0byByZWFzb25zID0g
Y2FuVXNlRm9yV2l0aFJlYXNvbigqZmxvdywgSW5jbHVkZVJlYXNvbnM6OkFsbCk7Ci0gICAgICAg
IGlmIChyZWFzb25zID09IE5vUmVhc29uKSB7Ci0gICAgICAgICAgICBpZiAoZmxvdy0+bGluZUxh
eW91dFBhdGgoKSA9PSBSZW5kZXJCbG9ja0Zsb3c6OkZvcmNlTGluZUJveGVzUGF0aCkgewotICAg
ICAgICAgICAgICAgIHN1cHBvcnRlZEJ1dEZvcmNlZFRvTGluZUxheW91dFRleHRMZW5ndGggKz0g
Zmxvd0xlbmd0aDsKLSAgICAgICAgICAgICAgICArK251bWJlck9mU3VwcG9ydGVkQnV0Rm9yY2Vk
VG9MaW5lTGF5b3V0TGVhZkJsb2NrczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICB9Ci0gICAgICAgICsrbnVtYmVyT2ZVbnN1cHBvcnRlZExlYWZCbG9ja3M7
Ci0gICAgICAgIHVuc3VwcG9ydGVkVGV4dExlbmd0aCArPSBmbG93TGVuZ3RoOwotICAgICAgICBm
b3IgKGF1dG8gcmVhc29uSXRlbSA9IEVuZE9mUmVhc29ucyA+PiAxOyByZWFzb25JdGVtICE9IE5v
UmVhc29uOyByZWFzb25JdGVtID4+PSAxKSB7Ci0gICAgICAgICAgICBpZiAoIShyZWFzb25zICYg
cmVhc29uSXRlbSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBhdXRv
IHJlc3VsdCA9IGZsb3dTdGF0aXN0aWNzLmFkZChyZWFzb25JdGVtLCBmbG93TGVuZ3RoKTsKLSAg
ICAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgICAgICAgICAgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSArPSBmbG93TGVuZ3RoOwotICAgICAgICB9Ci0gICAgfQotICAgIHN0
cmVhbSA8PCAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tXG4iOwotICAgIHN0cmVhbSA8PCAiTnVtYmVyIG9mIGJsb2NrczogdG90YWwoIiA8PCAgbGVh
ZlJlbmRlcmVycy5zaXplKCkgPDwgIikgbm9uLXNpbXBsZSgiIDw8IG51bWJlck9mVW5zdXBwb3J0
ZWRMZWFmQmxvY2tzIDw8ICIpXG5Db250ZW50IGxlbmd0aDogdG90YWwoIiA8PAotICAgICAgICB0
ZXh0TGVuZ3RoIDw8ICIpIG5vbi1zaW1wbGUoIiA8PCB1bnN1cHBvcnRlZFRleHRMZW5ndGggPDwg
IilcbiI7Ci0gICAgZm9yIChjb25zdCBhdXRvIHJlYXNvbkVudHJ5IDogZmxvd1N0YXRpc3RpY3Mp
IHsKLSAgICAgICAgcHJpbnRSZWFzb24ocmVhc29uRW50cnkua2V5LCBzdHJlYW0pOwotICAgICAg
ICBzdHJlYW0gPDwgIjogIiA8PCAoZmxvYXQpcmVhc29uRW50cnkudmFsdWUgLyAoZmxvYXQpdGV4
dExlbmd0aCAqIDEwMCA8PCAiJVxuIjsKLSAgICB9Ci0gICAgaWYgKHN1cHBvcnRlZEJ1dEZvcmNl
ZFRvTGluZUxheW91dFRleHRMZW5ndGgpIHsKLSAgICAgICAgc3RyZWFtIDw8ICJTaW1wbGUgbGlu
ZSBsYXlvdXQgcG90ZW50aWFsIGNvdmVyYWdlOiAiIDw8IChmbG9hdCkodGV4dExlbmd0aCAtIHVu
c3VwcG9ydGVkVGV4dExlbmd0aCkgLyAoZmxvYXQpdGV4dExlbmd0aCAqIDEwMCA8PCAiJVxuXG4i
OwotICAgICAgICBzdHJlYW0gPDwgIlNpbXBsZSBsaW5lIGxheW91dCBhY3R1YWwgY292ZXJhZ2U6
ICIgPDwgKGZsb2F0KSh0ZXh0TGVuZ3RoIC0gdW5zdXBwb3J0ZWRUZXh0TGVuZ3RoIC0gc3VwcG9y
dGVkQnV0Rm9yY2VkVG9MaW5lTGF5b3V0VGV4dExlbmd0aCkgLyAoZmxvYXQpdGV4dExlbmd0aCAq
IDEwMCA8PCAiJVxuRm9yY2VkIGxpbmUgbGF5b3V0IGJsb2NrczogIiA8PCBudW1iZXJPZlN1cHBv
cnRlZEJ1dEZvcmNlZFRvTGluZUxheW91dExlYWZCbG9ja3MgPDwgIiBjb250ZW50IGxlbmd0aDog
IiA8PCBzdXBwb3J0ZWRCdXRGb3JjZWRUb0xpbmVMYXlvdXRUZXh0TGVuZ3RoIDw8ICIoIiA8PCAo
ZmxvYXQpc3VwcG9ydGVkQnV0Rm9yY2VkVG9MaW5lTGF5b3V0VGV4dExlbmd0aCAvIChmbG9hdCl0
ZXh0TGVuZ3RoICogMTAwIDw8ICIlKSI7Ci0gICAgfSBlbHNlCi0gICAgICAgIHN0cmVhbSA8PCAi
U2ltcGxlIGxpbmUgbGF5b3V0IGNvdmVyYWdlOiAiIDw8IChmbG9hdCkodGV4dExlbmd0aCAtIHVu
c3VwcG9ydGVkVGV4dExlbmd0aCkgLyAoZmxvYXQpdGV4dExlbmd0aCAqIDEwMCA8PCAiJSI7Ci0g
ICAgc3RyZWFtIDw8ICJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLVxuIjsKLSAgICBXVEZMb2dBbHdheXMoIiVzIiwgc3RyZWFtLnJlbGVhc2UoKS51
dGY4KCkuZGF0YSgpKTsKLX0KLSNlbmRpZgogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9TaW1wbGVMaW5lTGF5b3V0LmgKaW5kZXggM2ViMDQxYjE5MjExY2RjNDA4ZmY5ZGIxYzRjMjll
NTFmODQ0NjZmNS4uZDU4NzI5ZTNjNzkwOThiMDA5YmYwY2YwMmFjODg4ZjY0ZmRkMjY1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5oCkBAIC0yNSw2ICsy
NSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dENvdmVy
YWdlLmgiCiAjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDEsNiArNDIsOCBAQCBjbGFzcyBS
ZW5kZXJCbG9ja0Zsb3c7CiBuYW1lc3BhY2UgU2ltcGxlTGluZUxheW91dCB7CiAKIGJvb2wgY2Fu
VXNlRm9yKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYpOworQXZvaWRhbmNlUmVhc29uRmxhZ3MgY2Fu
VXNlRm9yV2l0aFJlYXNvbihjb25zdCBSZW5kZXJCbG9ja0Zsb3cmLCBJbmNsdWRlUmVhc29ucyk7
CisKIAogc3RydWN0IFJ1biB7CiAjaWYgQ09NUElMRVIoTVNWQykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmE0NjJhZjFhNWY0ZDEyNzY0MTdjN2U4NGMxMjc0M2U1YTYxY2U1ZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2Uu
Y3BwCkBAIC0wLDAgKzEsMzU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5oIgorCisjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgIlJlbmRlckJsb2NrRmxvdy5oIgorI2luY2x1ZGUgIlJlbmRlckNoaWxk
SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgorI2luY2x1ZGUgIlJlbmRlclZp
ZXcuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXQu
aCIKKyNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVz
cGFjZSBTaW1wbGVMaW5lTGF5b3V0IHsKKworI2lmbmRlZiBOREVCVUcKK3N0YXRpYyB2b2lkIHBy
aW50UmVhc29uKEF2b2lkYW5jZVJlYXNvbiByZWFzb24sIFRleHRTdHJlYW0mIHN0cmVhbSkKK3sK
KyAgICBzd2l0Y2ggKHJlYXNvbikgeworICAgIGNhc2UgRmxvd0lzSW5zaWRlUmVnaW9uOgorICAg
ICAgICBzdHJlYW0gPDwgImZsb3cgaXMgaW5zaWRlIHJlZ2lvbiI7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgRmxvd0hhc0hvcml6b25hbFdyaXRpbmdNb2RlOgorICAgICAgICBzdHJlYW0gPDwg
Imhvcml6b250YWwgd3JpdGluZyBtb2RlIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGbG93
SGFzT3V0bGluZToKKyAgICAgICAgc3RyZWFtIDw8ICJvdXRsaW5lIjsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBGbG93SXNSdWJ5OgorICAgICAgICBzdHJlYW0gPDwgInJ1YnkiOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEZsb3dIYXNIYW5naW5nUHVuY3R1YXRpb246CisgICAgICAgIHN0
cmVhbSA8PCAiaGFuZ2luZyBwdW5jdHVhdGlvbiI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Rmxvd0lzUGFnaW5hdGVkOgorICAgICAgICBzdHJlYW0gPDwgInBhZ2luYXRlZCI7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgRmxvd0hhc1RleHRPdmVyZmxvdzoKKyAgICAgICAgc3RyZWFtIDw8
ICJ0ZXh0LW92ZXJmbG93IjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGbG93SXNEZXByaWNh
dGVkRmxleEJveDoKKyAgICAgICAgc3RyZWFtIDw8ICJkZXByaWNhdGVkRmxleEJveCI7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgRmxvd1BhcmVudElzUGxhY2Vob2xkZXJFbGVtZW50OgorICAg
ICAgICBzdHJlYW0gPDwgInBsYWNlaG9sZGVyIGVsZW1lbnQiOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEZsb3dQYXJlbnRJc1RleHRBcmVhV2l0aFdyYXBwaW5nOgorICAgICAgICBzdHJlYW0g
PDwgIndyYXBwaW5nIHRleHRhcmVhIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGbG93SGFz
Tm9uU3VwcG9ydGVkQ2hpbGQ6CisgICAgICAgIHN0cmVhbSA8PCAibmVzdGVkIHJlbmRlcmVycyI7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmxvd0hhc1Vuc3VwcG9ydGVkRmxvYXQ6CisgICAg
ICAgIHN0cmVhbSA8PCAiY29tcGxpY2F0ZWQgZmxvYXQiOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEZsb3dIYXNVbnN1cHBvcnRlZFVuZGVybGluZURlY29yYXRpb246CisgICAgICAgIHN0cmVh
bSA8PCAidGV4dC11bmRlcmxpbmUtcG9zaXRpb246IHVuZGVyIjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBGbG93SGFzSnVzdGlmaWVkTm9uTGF0aW5UZXh0OgorICAgICAgICBzdHJlYW0gPDwg
InRleHQtYWxpZ246IGp1c3RpZnkgd2l0aCBub24tbGF0aW4gdGV4dCI7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgRmxvd0hhc092ZXJmbG93Tm90VmlzaWJsZToKKyAgICAgICAgc3RyZWFtIDw8
ICJvdmVyZmxvdzogaGlkZGVuIHwgc2Nyb2xsIHwgYXV0byI7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgRmxvd0hhc1dlYktpdE5CU1BNb2RlOgorICAgICAgICBzdHJlYW0gPDwgIi13ZWJraXQt
bmJzcC1tb2RlOiBzcGFjZSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmxvd0lzTm90TFRS
OgorICAgICAgICBzdHJlYW0gPDwgImRpciBpcyBub3QgTFRSIjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBGbG93SGFzTGluZUJveENvbnRhaW5Qcm9wZXJ0eToKKyAgICAgICAgc3RyZWFtIDw8
ICJsaW5lLWJveC1jb250YWluIHZhbHVlIGluZGljYXRlcyB2YXJpYWJsZSBsaW5lIGhlaWdodCI7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmxvd0lzTm90VG9wVG9Cb3R0b206CisgICAgICAg
IHN0cmVhbSA8PCAibm9uIHRvcC10by1ib3R0b20gZmxvdyI7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgRmxvd0hhc0xpbmVCcmVhazoKKyAgICAgICAgc3RyZWFtIDw8ICJsaW5lLWJyZWFrIHBy
b3BlcnR5IjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGbG93SGFzTm9uTm9ybWFsVW5pY29k
ZUJpRGk6CisgICAgICAgIHN0cmVhbSA8PCAibm9uLW5vcm1hbCBVbmljb2RlIGJpZGkiOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEZsb3dIYXNSVExPcmRlcmluZzoKKyAgICAgICAgc3RyZWFt
IDw8ICItd2Via2l0LXJ0bC1vcmRlcmluZyI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmxv
d0hhc0xpbmVBbGlnbkVkZ2VzOgorICAgICAgICBzdHJlYW0gPDwgIi13ZWJraXQtbGluZS1hbGln
biBlZGdlcyI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmxvd0hhc0xpbmVTbmFwOgorICAg
ICAgICBzdHJlYW0gPDwgIi13ZWJraXQtbGluZS1zbmFwIHByb3BlcnR5IjsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBGbG93SGFzVGV4dEVtcGhhc2lzRmlsbE9yTWFyazoKKyAgICAgICAgc3Ry
ZWFtIDw8ICJ0ZXh0LWVtcGhhc2lzIChmaWxsL21hcmspIjsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBGbG93SGFzUHNldWRvRmlyc3RMaW5lOgorICAgICAgICBzdHJlYW0gPDwgImZpcnN0LWxp
bmUiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZsb3dIYXNQc2V1ZG9GaXJzdExldHRlcjoK
KyAgICAgICAgc3RyZWFtIDw8ICJmaXJzdC1sZXR0ZXIiOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEZsb3dIYXNUZXh0Q29tYmluZToKKyAgICAgICAgc3RyZWFtIDw8ICJ0ZXh0IGNvbWJpbmUi
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZsb3dIYXNUZXh0RmlsbEJveDoKKyAgICAgICAg
c3RyZWFtIDw8ICJiYWNrZ3JvdW5kLWNvbG9yICh0ZXh0LWZpbGwpIjsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBGbG93SGFzQm9yZGVyRml0TGluZXM6CisgICAgICAgIHN0cmVhbSA8PCAiLXdl
YmtpdC1ib3JkZXItZml0IjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGbG93SGFzTm9uQXV0
b0xpbmVCcmVhazoKKyAgICAgICAgc3RyZWFtIDw8ICJsaW5lLWJyZWFrIGlzIG5vdCBhdXRvIjsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGbG93SGFzTm9uQXV0b1RyYWlsaW5nV29yZDoKKyAg
ICAgICAgc3RyZWFtIDw8ICItYXBwbGUtdHJhaWxpbmctd29yZCBpcyBub3QgYXV0byI7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgRmxvd0hhc1NWR0ZvbnQ6CisgICAgICAgIHN0cmVhbSA8PCAi
U1ZHIGZvbnQiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZsb3dUZXh0SGFzU29mdEh5cGhl
bjoKKyAgICAgICAgc3RyZWFtIDw8ICJzb2Z0IGh5cGhlbiBjaGFyYWN0ZXIiOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEZsb3dUZXh0SGFzRGlyZWN0aW9uQ2hhcmFjdGVyOgorICAgICAgICBz
dHJlYW0gPDwgImRpcmVjdGlvbiBjaGFyYWN0ZXIiOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEZsb3dJc01pc3NpbmdQcmltYXJ5Rm9udDoKKyAgICAgICAgc3RyZWFtIDw8ICJtaXNzaW5nIHBy
aW1hcnkgZm9udCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmxvd1ByaW1hcnlGb250SXNJ
bnN1ZmZpY2llbnQ6CisgICAgICAgIHN0cmVhbSA8PCAibWlzc2luZyBnbHlwaCBvciBnbHlwaCBu
ZWVkcyBhbm90aGVyIGZvbnQiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZsb3dUZXh0SXND
b21iaW5lVGV4dDoKKyAgICAgICAgc3RyZWFtIDw8ICJ0ZXh0IGlzIGNvbWJpbmUiOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEZsb3dUZXh0SXNSZW5kZXJDb3VudGVyOgorICAgICAgICBzdHJl
YW0gPDwgInVuc3VwcG9ydGVkIFJlbmRlckNvdW50ZXIiOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEZsb3dUZXh0SXNSZW5kZXJRdW90ZToKKyAgICAgICAgc3RyZWFtIDw8ICJ1bnN1cHBvcnRl
ZCBSZW5kZXJRdW90ZSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmxvd1RleHRJc1RleHRG
cmFnbWVudDoKKyAgICAgICAgc3RyZWFtIDw8ICJ1bnN1cHBvcnRlZCBUZXh0RnJhZ21lbnQiOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEZsb3dUZXh0SXNTVkdJbmxpbmVUZXh0OgorICAgICAg
ICBzdHJlYW0gPDwgInVuc3VwcG9ydGVkIFNWR0lubGluZVRleHQiOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEZsb3dIYXNDb21wbGV4Rm9udENvZGVQYXRoOgorICAgICAgICBzdHJlYW0gPDwg
InRleHQgd2l0aCBjb21wbGV4IGZvbnQgY29kZXBhdGgiOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEZsb3dIYXNUZXh0U2hhZG93OgorICAgICAgICBzdHJlYW0gPDwgInRleHQtc2hhZG93IjsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGbG93Q2hpbGRJc1NlbGVjdGVkOgorICAgICAgICBz
dHJlYW0gPDwgInNlbGVjdGVkIGNvbnRlbnQiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZs
b3dGb250SGFzT3ZlcmZsb3dHbHlwaDoKKyAgICAgICAgc3RyZWFtIDw8ICItd2Via2l0LWxpbmUt
Ym94LWNvbnRhaW46IGdseXBocyB3aXRoIG92ZXJmbG93aW5nIHRleHQuIjsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBGbG93VGV4dEhhc1N1cnJvZ2F0ZVBhaXI6CisgICAgICAgIHN0cmVhbSA8
PCAic3Vycm9nYXRlIHBhaXIiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZsb3dUZXh0SXNF
bXB0eToKKyAgICBjYXNlIEZsb3dIYXNOb0NoaWxkOgorICAgIGNhc2UgRmxvd0hhc05vUGFyZW50
OgorICAgIGNhc2UgRmVhdHVyZUlzRGlzYWJsZWQ6CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJl
YWs7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBwcmludFJlYXNvbnMoQXZvaWRhbmNlUmVhc29u
RmxhZ3MgcmVhc29ucywgVGV4dFN0cmVhbSYgc3RyZWFtKQoreworICAgIGJvb2wgZmlyc3QgPSB0
cnVlOworICAgIGZvciAoYXV0byByZWFzb25JdGVtID0gRW5kT2ZSZWFzb25zID4+IDE7IHJlYXNv
bkl0ZW0gIT0gTm9SZWFzb247IHJlYXNvbkl0ZW0gPj49IDEpIHsKKyAgICAgICAgaWYgKCEocmVh
c29ucyAmIHJlYXNvbkl0ZW0pKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHN0cmVh
bSA8PCAoZmlyc3QgPyAiICIgOiAiLCAiKTsKKyAgICAgICAgZmlyc3QgPSBmYWxzZTsKKyAgICAg
ICAgcHJpbnRSZWFzb24ocmVhc29uSXRlbSwgc3RyZWFtKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2
b2lkIHByaW50VGV4dEZvclN1YnRyZWUoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgdW5z
aWduZWQmIGNoYXJhY3RlcnNMZWZ0LCBUZXh0U3RyZWFtJiBzdHJlYW0pCit7CisgICAgaWYgKCFj
aGFyYWN0ZXJzTGVmdCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChpczxSZW5kZXJUZXh0Pihy
ZW5kZXJlcikpIHsKKyAgICAgICAgU3RyaW5nIHRleHQgPSBkb3duY2FzdDxSZW5kZXJUZXh0Pihy
ZW5kZXJlcikudGV4dCgpOworICAgICAgICB0ZXh0ID0gdGV4dC5zdHJpcFdoaXRlU3BhY2UoKTsK
KyAgICAgICAgdW5zaWduZWQgbGVuID0gc3RkOjptaW4oY2hhcmFjdGVyc0xlZnQsIHRleHQubGVu
Z3RoKCkpOworICAgICAgICBzdHJlYW0gPDwgdGV4dC5sZWZ0KGxlbik7CisgICAgICAgIGNoYXJh
Y3RlcnNMZWZ0IC09IGxlbjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIWlzPFJl
bmRlckVsZW1lbnQ+KHJlbmRlcmVyKSkKKyAgICAgICAgcmV0dXJuOworICAgIGZvciAoY29uc3Qg
YXV0byogY2hpbGQgPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihyZW5kZXJlcikuZmlyc3RDaGls
ZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgcHJpbnRU
ZXh0Rm9yU3VidHJlZSgqY2hpbGQsIGNoYXJhY3RlcnNMZWZ0LCBzdHJlYW0pOworfQorCitzdGF0
aWMgdW5zaWduZWQgdGV4dExlbmd0aEZvclN1YnRyZWUoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5k
ZXJlcikKK3sKKyAgICBpZiAoaXM8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKQorICAgICAgICByZXR1
cm4gZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpLnRleHRMZW5ndGgoKTsKKyAgICBpZiAo
IWlzPFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVyKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgdW5z
aWduZWQgdGV4dExlbmd0aCA9IDA7CisgICAgZm9yIChjb25zdCBhdXRvKiBjaGlsZCA9IGRvd25j
YXN0PFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVyKS5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9
IGNoaWxkLT5uZXh0U2libGluZygpKQorICAgICAgICB0ZXh0TGVuZ3RoICs9IHRleHRMZW5ndGhG
b3JTdWJ0cmVlKCpjaGlsZCk7CisgICAgcmV0dXJuIHRleHRMZW5ndGg7Cit9CisKK3N0YXRpYyB2
b2lkIGNvbGxlY3ROb25FbXB0eUxlYWZSZW5kZXJCbG9ja0Zsb3dzKGNvbnN0IFJlbmRlck9iamVj
dCYgcmVuZGVyZXIsIEhhc2hTZXQ8Y29uc3QgUmVuZGVyQmxvY2tGbG93Kj4mIGxlYWZSZW5kZXJl
cnMpCit7CisgICAgaWYgKGlzPFJlbmRlclRleHQ+KHJlbmRlcmVyKSkgeworICAgICAgICBpZiAo
IWRvd25jYXN0PFJlbmRlclRleHQ+KHJlbmRlcmVyKS50ZXh0TGVuZ3RoKCkpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIC8vIEZpbmQgUmVuZGVyQmxvY2tGbG93IGFuY2VzdG9yLgorICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8qIGN1cnJlbnQgPSByZW5kZXJlci5wYXJlbnQoKTsgY3VycmVu
dDsgY3VycmVudCA9IGN1cnJlbnQtPnBhcmVudCgpKSB7CisgICAgICAgICAgICBpZiAoIWlzPFJl
bmRlckJsb2NrRmxvdz4oY3VycmVudCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICBsZWFmUmVuZGVyZXJzLmFkZChkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KGN1cnJl
bnQpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgaWYgKCFpczxSZW5kZXJFbGVtZW50PihyZW5kZXJlcikpCisgICAgICAgIHJldHVy
bjsKKyAgICBmb3IgKGNvbnN0IGF1dG8qIGNoaWxkID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4o
cmVuZGVyZXIpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5n
KCkpCisgICAgICAgIGNvbGxlY3ROb25FbXB0eUxlYWZSZW5kZXJCbG9ja0Zsb3dzKCpjaGlsZCwg
bGVhZlJlbmRlcmVycyk7Cit9CisKK3N0YXRpYyB2b2lkIGNvbGxlY3ROb25FbXB0eUxlYWZSZW5k
ZXJCbG9ja0Zsb3dzRm9yQ3VycmVudFBhZ2UoSGFzaFNldDxjb25zdCBSZW5kZXJCbG9ja0Zsb3cq
PiYgbGVhZlJlbmRlcmVycykKK3sKKyAgICBmb3IgKGNvbnN0IGF1dG8qIGRvY3VtZW50IDogRG9j
dW1lbnQ6OmFsbERvY3VtZW50cygpKSB7CisgICAgICAgIGlmICghZG9jdW1lbnQtPnJlbmRlclZp
ZXcoKSB8fCBkb2N1bWVudC0+cGFnZUNhY2hlU3RhdGUoKSAhPSBEb2N1bWVudDo6Tm90SW5QYWdl
Q2FjaGUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFkb2N1bWVudC0+aXNI
VE1MRG9jdW1lbnQoKSAmJiAhZG9jdW1lbnQtPmlzWEhUTUxEb2N1bWVudCgpKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIGNvbGxlY3ROb25FbXB0eUxlYWZSZW5kZXJCbG9ja0Zsb3dz
KCpkb2N1bWVudC0+cmVuZGVyVmlldygpLCBsZWFmUmVuZGVyZXJzKTsKKyAgICB9Cit9CisKK3Zv
aWQgdG9nZ2xlU2ltcGxlTGluZUxheW91dCgpCit7CisgICAgZm9yIChhdXRvKiBkb2N1bWVudCA6
IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkgeworICAgICAgICBhdXRvJiBzZXR0aW5ncyA9IGRv
Y3VtZW50LT5tdXRhYmxlU2V0dGluZ3MoKTsKKyAgICAgICAgc2V0dGluZ3Muc2V0U2ltcGxlTGlu
ZUxheW91dEVuYWJsZWQoIXNldHRpbmdzLnNpbXBsZUxpbmVMYXlvdXRFbmFibGVkKCkpOworICAg
IH0KK30KKwordm9pZCBwcmludFNpbXBsZUxpbmVMYXlvdXRCbG9ja0xpc3QoKQoreworICAgIEhh
c2hTZXQ8Y29uc3QgUmVuZGVyQmxvY2tGbG93Kj4gbGVhZlJlbmRlcmVyczsKKyAgICBjb2xsZWN0
Tm9uRW1wdHlMZWFmUmVuZGVyQmxvY2tGbG93c0ZvckN1cnJlbnRQYWdlKGxlYWZSZW5kZXJlcnMp
OworICAgIGlmICghbGVhZlJlbmRlcmVycy5zaXplKCkpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlz
KCJObyB0ZXh0IGZvdW5kIGluIHRoaXMgZG9jdW1lbnRcbiIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIFRleHRTdHJlYW0gc3RyZWFtOworICAgIHN0cmVhbSA8PCAiLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iOworICAgIGZvciAoY29u
c3QgYXV0byogZmxvdyA6IGxlYWZSZW5kZXJlcnMpIHsKKyAgICAgICAgYXV0byByZWFzb24gPSBj
YW5Vc2VGb3JXaXRoUmVhc29uKCpmbG93LCBJbmNsdWRlUmVhc29uczo6QWxsKTsKKyAgICAgICAg
aWYgKHJlYXNvbiA9PSBOb1JlYXNvbikKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB1
bnNpZ25lZCBwcmludGVkTGVuZ3RoID0gMzA7CisgICAgICAgIHN0cmVhbSA8PCAiXCIiOworICAg
ICAgICBwcmludFRleHRGb3JTdWJ0cmVlKCpmbG93LCBwcmludGVkTGVuZ3RoLCBzdHJlYW0pOwor
ICAgICAgICBmb3IgKDtwcmludGVkTGVuZ3RoID4gMDsgLS1wcmludGVkTGVuZ3RoKQorICAgICAg
ICAgICAgc3RyZWFtIDw8ICIgIjsKKyAgICAgICAgc3RyZWFtIDw8ICJcIigiIDw8IHRleHRMZW5n
dGhGb3JTdWJ0cmVlKCpmbG93KSA8PCAiKToiOworICAgICAgICBwcmludFJlYXNvbnMocmVhc29u
LCBzdHJlYW0pOworICAgICAgICBzdHJlYW0gPDwgIlxuIjsKKyAgICB9CisgICAgc3RyZWFtIDw8
ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiI7
CisgICAgV1RGTG9nQWx3YXlzKCIlcyIsIHN0cmVhbS5yZWxlYXNlKCkudXRmOCgpLmRhdGEoKSk7
Cit9CisKK3ZvaWQgcHJpbnRTaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UoKQoreworICAgIEhhc2hT
ZXQ8Y29uc3QgUmVuZGVyQmxvY2tGbG93Kj4gbGVhZlJlbmRlcmVyczsKKyAgICBjb2xsZWN0Tm9u
RW1wdHlMZWFmUmVuZGVyQmxvY2tGbG93c0ZvckN1cnJlbnRQYWdlKGxlYWZSZW5kZXJlcnMpOwor
ICAgIGlmICghbGVhZlJlbmRlcmVycy5zaXplKCkpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJO
byB0ZXh0IGZvdW5kIGluIHRoaXMgZG9jdW1lbnRcbiIpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIFRleHRTdHJlYW0gc3RyZWFtOworICAgIEhhc2hNYXA8QXZvaWRhbmNlUmVhc29uLCB1
bnNpZ25lZD4gZmxvd1N0YXRpc3RpY3M7CisgICAgdW5zaWduZWQgdGV4dExlbmd0aCA9IDA7Cisg
ICAgdW5zaWduZWQgdW5zdXBwb3J0ZWRUZXh0TGVuZ3RoID0gMDsKKyAgICB1bnNpZ25lZCBudW1i
ZXJPZlVuc3VwcG9ydGVkTGVhZkJsb2NrcyA9IDA7CisgICAgdW5zaWduZWQgc3VwcG9ydGVkQnV0
Rm9yY2VkVG9MaW5lTGF5b3V0VGV4dExlbmd0aCA9IDA7CisgICAgdW5zaWduZWQgbnVtYmVyT2ZT
dXBwb3J0ZWRCdXRGb3JjZWRUb0xpbmVMYXlvdXRMZWFmQmxvY2tzID0gMDsKKyAgICBmb3IgKGNv
bnN0IGF1dG8qIGZsb3cgOiBsZWFmUmVuZGVyZXJzKSB7CisgICAgICAgIGF1dG8gZmxvd0xlbmd0
aCA9IHRleHRMZW5ndGhGb3JTdWJ0cmVlKCpmbG93KTsKKyAgICAgICAgdGV4dExlbmd0aCArPSBm
bG93TGVuZ3RoOworICAgICAgICBhdXRvIHJlYXNvbnMgPSBjYW5Vc2VGb3JXaXRoUmVhc29uKCpm
bG93LCBJbmNsdWRlUmVhc29uczo6QWxsKTsKKyAgICAgICAgaWYgKHJlYXNvbnMgPT0gTm9SZWFz
b24pIHsKKyAgICAgICAgICAgIGlmIChmbG93LT5saW5lTGF5b3V0UGF0aCgpID09IFJlbmRlckJs
b2NrRmxvdzo6Rm9yY2VMaW5lQm94ZXNQYXRoKSB7CisgICAgICAgICAgICAgICAgc3VwcG9ydGVk
QnV0Rm9yY2VkVG9MaW5lTGF5b3V0VGV4dExlbmd0aCArPSBmbG93TGVuZ3RoOworICAgICAgICAg
ICAgICAgICsrbnVtYmVyT2ZTdXBwb3J0ZWRCdXRGb3JjZWRUb0xpbmVMYXlvdXRMZWFmQmxvY2tz
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAg
ICAgKytudW1iZXJPZlVuc3VwcG9ydGVkTGVhZkJsb2NrczsKKyAgICAgICAgdW5zdXBwb3J0ZWRU
ZXh0TGVuZ3RoICs9IGZsb3dMZW5ndGg7CisgICAgICAgIGZvciAoYXV0byByZWFzb25JdGVtID0g
RW5kT2ZSZWFzb25zID4+IDE7IHJlYXNvbkl0ZW0gIT0gTm9SZWFzb247IHJlYXNvbkl0ZW0gPj49
IDEpIHsKKyAgICAgICAgICAgIGlmICghKHJlYXNvbnMgJiByZWFzb25JdGVtKSkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gZmxvd1N0YXRpc3Rp
Y3MuYWRkKHJlYXNvbkl0ZW0sIGZsb3dMZW5ndGgpOworICAgICAgICAgICAgaWYgKCFyZXN1bHQu
aXNOZXdFbnRyeSkKKyAgICAgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlICs9IGZs
b3dMZW5ndGg7CisgICAgICAgIH0KKyAgICB9CisgICAgc3RyZWFtIDw8ICItLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiI7CisgICAgc3RyZWFtIDw8
ICJOdW1iZXIgb2YgYmxvY2tzOiB0b3RhbCgiIDw8ICBsZWFmUmVuZGVyZXJzLnNpemUoKSA8PCAi
KSBub24tc2ltcGxlKCIgPDwgbnVtYmVyT2ZVbnN1cHBvcnRlZExlYWZCbG9ja3MgPDwgIilcbkNv
bnRlbnQgbGVuZ3RoOiB0b3RhbCgiIDw8CisgICAgICAgIHRleHRMZW5ndGggPDwgIikgbm9uLXNp
bXBsZSgiIDw8IHVuc3VwcG9ydGVkVGV4dExlbmd0aCA8PCAiKVxuIjsKKyAgICBmb3IgKGNvbnN0
IGF1dG8gcmVhc29uRW50cnkgOiBmbG93U3RhdGlzdGljcykgeworICAgICAgICBwcmludFJlYXNv
bihyZWFzb25FbnRyeS5rZXksIHN0cmVhbSk7CisgICAgICAgIHN0cmVhbSA8PCAiOiAiIDw8IChm
bG9hdClyZWFzb25FbnRyeS52YWx1ZSAvIChmbG9hdCl0ZXh0TGVuZ3RoICogMTAwIDw8ICIlXG4i
OworICAgIH0KKyAgICBpZiAoc3VwcG9ydGVkQnV0Rm9yY2VkVG9MaW5lTGF5b3V0VGV4dExlbmd0
aCkgeworICAgICAgICBzdHJlYW0gPDwgIlNpbXBsZSBsaW5lIGxheW91dCBwb3RlbnRpYWwgY292
ZXJhZ2U6ICIgPDwgKGZsb2F0KSh0ZXh0TGVuZ3RoIC0gdW5zdXBwb3J0ZWRUZXh0TGVuZ3RoKSAv
IChmbG9hdCl0ZXh0TGVuZ3RoICogMTAwIDw8ICIlXG5cbiI7CisgICAgICAgIHN0cmVhbSA8PCAi
U2ltcGxlIGxpbmUgbGF5b3V0IGFjdHVhbCBjb3ZlcmFnZTogIiA8PCAoZmxvYXQpKHRleHRMZW5n
dGggLSB1bnN1cHBvcnRlZFRleHRMZW5ndGggLSBzdXBwb3J0ZWRCdXRGb3JjZWRUb0xpbmVMYXlv
dXRUZXh0TGVuZ3RoKSAvIChmbG9hdCl0ZXh0TGVuZ3RoICogMTAwIDw8ICIlXG5Gb3JjZWQgbGlu
ZSBsYXlvdXQgYmxvY2tzOiAiIDw8IG51bWJlck9mU3VwcG9ydGVkQnV0Rm9yY2VkVG9MaW5lTGF5
b3V0TGVhZkJsb2NrcyA8PCAiIGNvbnRlbnQgbGVuZ3RoOiAiIDw8IHN1cHBvcnRlZEJ1dEZvcmNl
ZFRvTGluZUxheW91dFRleHRMZW5ndGggPDwgIigiIDw8IChmbG9hdClzdXBwb3J0ZWRCdXRGb3Jj
ZWRUb0xpbmVMYXlvdXRUZXh0TGVuZ3RoIC8gKGZsb2F0KXRleHRMZW5ndGggKiAxMDAgPDwgIiUp
IjsKKyAgICB9IGVsc2UKKyAgICAgICAgc3RyZWFtIDw8ICJTaW1wbGUgbGluZSBsYXlvdXQgY292
ZXJhZ2U6ICIgPDwgKGZsb2F0KSh0ZXh0TGVuZ3RoIC0gdW5zdXBwb3J0ZWRUZXh0TGVuZ3RoKSAv
IChmbG9hdCl0ZXh0TGVuZ3RoICogMTAwIDw8ICIlIjsKKyAgICBzdHJlYW0gPDwgIlxuLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iOworICAgIFdU
RkxvZ0Fsd2F5cygiJXMiLCBzdHJlYW0ucmVsZWFzZSgpLnV0ZjgoKS5kYXRhKCkpOworfQorI2Vu
ZGlmCisKK30KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVM
aW5lTGF5b3V0Q292ZXJhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5l
TGF5b3V0Q292ZXJhZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OWQyYTEzNmY3YzgxZjFmZTNiMzU5MDA4ODMx
ODhmZWU4YmQ4YTIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1NpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIFNpbXBsZUxp
bmVMYXlvdXQgeworCisjaWZuZGVmIE5ERUJVRwordm9pZCBwcmludFNpbXBsZUxpbmVMYXlvdXRD
b3ZlcmFnZSgpOwordm9pZCBwcmludFNpbXBsZUxpbmVMYXlvdXRCbG9ja0xpc3QoKTsKK3ZvaWQg
dG9nZ2xlU2ltcGxlTGluZUxheW91dCgpOworI2VuZGlmCisKK2VudW0gQXZvaWRhbmNlUmVhc29u
XyA6IHVpbnQ2NF90IHsKKyAgICBGbG93SXNJbnNpZGVSZWdpb24gICAgICAgICAgICAgICAgICAg
ID0gMUxMVSAgPDwgMCwKKyAgICBGbG93SGFzSG9yaXpvbmFsV3JpdGluZ01vZGUgICAgICAgICAg
ID0gMUxMVSAgPDwgMSwKKyAgICBGbG93SGFzT3V0bGluZSAgICAgICAgICAgICAgICAgICAgICAg
ID0gMUxMVSAgPDwgMiwKKyAgICBGbG93SXNSdWJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gMUxMVSAgPDwgMywKKyAgICBGbG93SXNQYWdpbmF0ZWQgICAgICAgICAgICAgICAgICAgICAg
ID0gMUxMVSAgPDwgNCwKKyAgICBGbG93SGFzVGV4dE92ZXJmbG93ICAgICAgICAgICAgICAgICAg
ID0gMUxMVSAgPDwgNSwKKyAgICBGbG93SXNEZXByaWNhdGVkRmxleEJveCAgICAgICAgICAgICAg
ID0gMUxMVSAgPDwgNiwKKyAgICBGbG93UGFyZW50SXNQbGFjZWhvbGRlckVsZW1lbnQgICAgICAg
ID0gMUxMVSAgPDwgNywKKyAgICBGbG93UGFyZW50SXNUZXh0QXJlYVdpdGhXcmFwcGluZyAgICAg
ID0gMUxMVSAgPDwgOCwKKyAgICBGbG93SGFzTm9uU3VwcG9ydGVkQ2hpbGQgICAgICAgICAgICAg
ID0gMUxMVSAgPDwgOSwKKyAgICBGbG93SGFzVW5zdXBwb3J0ZWRGbG9hdCAgICAgICAgICAgICAg
ID0gMUxMVSAgPDwgMTAsCisgICAgRmxvd0hhc1Vuc3VwcG9ydGVkVW5kZXJsaW5lRGVjb3JhdGlv
biA9IDFMTFUgIDw8IDExLAorICAgIEZsb3dIYXNKdXN0aWZpZWROb25MYXRpblRleHQgICAgICAg
ICAgPSAxTExVICA8PCAxMiwKKyAgICBGbG93SGFzT3ZlcmZsb3dOb3RWaXNpYmxlICAgICAgICAg
ICAgID0gMUxMVSAgPDwgMTMsCisgICAgRmxvd0hhc1dlYktpdE5CU1BNb2RlICAgICAgICAgICAg
ICAgICA9IDFMTFUgIDw8IDE0LAorICAgIEZsb3dJc05vdExUUiAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAxTExVICA8PCAxNSwKKyAgICBGbG93SGFzTGluZUJveENvbnRhaW5Qcm9wZXJ0eSAg
ICAgICAgID0gMUxMVSAgPDwgMTYsCisgICAgRmxvd0lzTm90VG9wVG9Cb3R0b20gICAgICAgICAg
ICAgICAgICA9IDFMTFUgIDw8IDE3LAorICAgIEZsb3dIYXNMaW5lQnJlYWsgICAgICAgICAgICAg
ICAgICAgICAgPSAxTExVICA8PCAxOCwKKyAgICBGbG93SGFzTm9uTm9ybWFsVW5pY29kZUJpRGkg
ICAgICAgICAgID0gMUxMVSAgPDwgMTksCisgICAgRmxvd0hhc1JUTE9yZGVyaW5nICAgICAgICAg
ICAgICAgICAgICA9IDFMTFUgIDw8IDIwLAorICAgIEZsb3dIYXNMaW5lQWxpZ25FZGdlcyAgICAg
ICAgICAgICAgICAgPSAxTExVICA8PCAyMSwKKyAgICBGbG93SGFzTGluZVNuYXAgICAgICAgICAg
ICAgICAgICAgICAgID0gMUxMVSAgPDwgMjIsCisgICAgRmxvd0hhc1RleHRFbXBoYXNpc0ZpbGxP
ck1hcmsgICAgICAgICA9IDFMTFUgIDw8IDIzLAorICAgIEZsb3dIYXNUZXh0U2hhZG93ICAgICAg
ICAgICAgICAgICAgICAgPSAxTExVICA8PCAyNCwKKyAgICBGbG93SGFzUHNldWRvRmlyc3RMaW5l
ICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgMjUsCisgICAgRmxvd0hhc1BzZXVkb0ZpcnN0TGV0
dGVyICAgICAgICAgICAgICA9IDFMTFUgIDw8IDI2LAorICAgIEZsb3dIYXNUZXh0Q29tYmluZSAg
ICAgICAgICAgICAgICAgICAgPSAxTExVICA8PCAyNywKKyAgICBGbG93SGFzVGV4dEZpbGxCb3gg
ICAgICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgMjgsCisgICAgRmxvd0hhc0JvcmRlckZpdExp
bmVzICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDI5LAorICAgIEZsb3dIYXNOb25BdXRvTGlu
ZUJyZWFrICAgICAgICAgICAgICAgPSAxTExVICA8PCAzMCwKKyAgICBGbG93SGFzTm9uQXV0b1Ry
YWlsaW5nV29yZCAgICAgICAgICAgID0gMUxMVSAgPDwgMzEsCisgICAgRmxvd0hhc1NWR0ZvbnQg
ICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDMyLAorICAgIEZsb3dUZXh0SXNFbXB0
eSAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVICA8PCAzMywKKyAgICBGbG93VGV4dEhhc1Nv
ZnRIeXBoZW4gICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgMzQsCisgICAgRmxvd1RleHRIYXNE
aXJlY3Rpb25DaGFyYWN0ZXIgICAgICAgICA9IDFMTFUgIDw8IDM1LAorICAgIEZsb3dJc01pc3Np
bmdQcmltYXJ5Rm9udCAgICAgICAgICAgICAgPSAxTExVICA8PCAzNiwKKyAgICBGbG93UHJpbWFy
eUZvbnRJc0luc3VmZmljaWVudCAgICAgICAgID0gMUxMVSAgPDwgMzcsCisgICAgRmxvd1RleHRJ
c0NvbWJpbmVUZXh0ICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDM4LAorICAgIEZsb3dUZXh0
SXNSZW5kZXJDb3VudGVyICAgICAgICAgICAgICAgPSAxTExVICA8PCAzOSwKKyAgICBGbG93VGV4
dElzUmVuZGVyUXVvdGUgICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgNDAsCisgICAgRmxvd1Rl
eHRJc1RleHRGcmFnbWVudCAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDQxLAorICAgIEZsb3dU
ZXh0SXNTVkdJbmxpbmVUZXh0ICAgICAgICAgICAgICAgPSAxTExVICA8PCA0MiwKKyAgICBGbG93
SGFzQ29tcGxleEZvbnRDb2RlUGF0aCAgICAgICAgICAgID0gMUxMVSAgPDwgNDMsCisgICAgRmVh
dHVyZUlzRGlzYWJsZWQgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDQ0LAorICAgIEZs
b3dIYXNOb1BhcmVudCAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVICA8PCA0NSwKKyAgICBG
bG93SGFzTm9DaGlsZCAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgNDYsCisgICAg
Rmxvd0NoaWxkSXNTZWxlY3RlZCAgICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDQ3LAorICAg
IEZsb3dIYXNIYW5naW5nUHVuY3R1YXRpb24gICAgICAgICAgICAgPSAxTExVICA8PCA0OCwKKyAg
ICBGbG93Rm9udEhhc092ZXJmbG93R2x5cGggICAgICAgICAgICAgID0gMUxMVSAgPDwgNDksCisg
ICAgRmxvd1RleHRIYXNTdXJyb2dhdGVQYWlyICAgICAgICAgICAgICA9IDFMTFUgIDw8IDUwLAor
ICAgIEVuZE9mUmVhc29ucyAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVICA8PCA1MQor
fTsKK2NvbnN0IHVuc2lnbmVkIE5vUmVhc29uID0gMDsKKwordHlwZWRlZiB1aW50NjRfdCBBdm9p
ZGFuY2VSZWFzb247Cit0eXBlZGVmIHVpbnQ2NF90IEF2b2lkYW5jZVJlYXNvbkZsYWdzOworCitl
bnVtIGNsYXNzIEluY2x1ZGVSZWFzb25zIHsgRmlyc3QgLCBBbGwgfTsKKworfQorfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302781</attachid>
            <date>2017-02-25 22:40:28 -0800</date>
            <delta_ts>2017-02-25 23:21:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168872-20170225223736.patch</filename>
            <type>text/plain</type>
            <size>44665</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzMDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmJlN2QzOWQ2MWYxYTdm
YTBkYmFlYzgyNzI1NDg0NjU2OTM5YmE3NC4uZjc2MTk5OTNiNDczZjI0YjliODlmZWViNmM3NTY4
OTAyNjg0YjJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQzIEBACiAyMDE3LTAyLTI1ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKKyAgICAgICAgU2ltcGxlIGxpbmUgbGF5b3V0
OiBNb3ZlIGNvdmVyYWdlIGZ1bmN0aW9ucyBvdXQgb2YgU2ltcGxlTGluZUxheW91dC5jcHAKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODg3MgorICAg
ICAgICAKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIFNpbXBs
ZUxpbmVMYXlvdXQuY3BwIGlzIGZvciBjb3JlIGZ1bmN0aW9ucyBvbmx5LgorCisgICAgICAgIE5v
IGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Y2Fu
VXNlRm9yV2l0aFJlYXNvbik6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojpw
cmludFJlYXNvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0
OjpwcmludFJlYXNvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxh
eW91dDo6cHJpbnRUZXh0Rm9yU3VidHJlZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
aW1wbGVMaW5lTGF5b3V0Ojp0ZXh0TGVuZ3RoRm9yU3VidHJlZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojpjb2xsZWN0Tm9uRW1wdHlMZWFmUmVuZGVyQmxv
Y2tGbG93cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojpj
b2xsZWN0Tm9uRW1wdHlMZWFmUmVuZGVyQmxvY2tGbG93c0ZvckN1cnJlbnRQYWdlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OnRvZ2dsZVNpbXBsZUxpbmVM
YXlvdXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6cHJp
bnRTaW1wbGVMaW5lTGF5b3V0QmxvY2tMaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUxpbmVMYXlvdXQ6OnByaW50U2ltcGxlTGluZUxheW91dENvdmVyYWdlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OnByaW50UmVhc29uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUxpbmVMYXlvdXQ6OnByaW50UmVhc29ucyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVMaW5lTGF5b3V0OjpwcmludFRleHRGb3JTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNp
bXBsZUxpbmVMYXlvdXQ6OnRleHRMZW5ndGhGb3JTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUxpbmVMYXlvdXQ6OmNvbGxlY3ROb25FbXB0eUxlYWZSZW5kZXJCbG9ja0Zsb3dzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmNvbGxlY3ROb25FbXB0eUxlYWZS
ZW5kZXJCbG9ja0Zsb3dzRm9yQ3VycmVudFBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxl
TGluZUxheW91dDo6dG9nZ2xlU2ltcGxlTGluZUxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpT
aW1wbGVMaW5lTGF5b3V0OjpwcmludFNpbXBsZUxpbmVMYXlvdXRCbG9ja0xpc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6cHJpbnRTaW1wbGVMaW5lTGF5b3V0Q292ZXJh
Z2UpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuaDogQWRk
ZWQuCisKKzIwMTctMDItMjUgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKwogICAg
ICAgICBUZXh0IG1pZ2h0IHdyYXAgd2hlbiBpdHMgcHJlZmVycmVkIGxvZ2ljYWwgd2lkdGggaXMg
dXNlZCBmb3Igc2l6aW5nIHRoZSBjb250YWluaW5nIGJsb2NrLgogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4ODY0CiAgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zMDY5MDczND4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMmVlZTJhMTRhNjUzMzIyMmQ2
Mjk5YWZlNzQ2NjQzNzFkMTU2ZDJjNS4uYzkyMTliNWM0NjFlNGEyYzA3NzlhMzQxM2U1Y2QzNmVm
M2Q2NzAwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTI0ODAsNiArMjQ4MCw3IEBAIHNldChX
ZWJDb3JlX1NPVVJDRVMKICAgICByZW5kZXJpbmcvU2Nyb2xsQWxpZ25tZW50LmNwcAogICAgIHJl
bmRlcmluZy9TZWxlY3Rpb25TdWJ0cmVlUm9vdC5jcHAKICAgICByZW5kZXJpbmcvU2ltcGxlTGlu
ZUxheW91dC5jcHAKKyAgICByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmNwcAog
ICAgIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmNwcAogICAgIHJlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAogICAgIHJlbmRlcmluZy9TaW1wbGVM
aW5lTGF5b3V0UGFnaW5hdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhZDE5OTg1YTdmZGRmODYzOWJkNTgzNDY4ZWVi
ZmFjOTcyZTA5N2Y0Li5kZTAxNzExYTFhY2Y1YjY2OWZkYWNiNGI4NTk0MTNhZDI1MmU3Yjc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC01NjksNiArNTY5LDggQEAKIAkJMTBGQjA4NEIxNEUxNUM3RTAwQTNEQjk4IC8qIFB1Ymxp
Y1VSTE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDEwRkIwODRBMTRFMTVDN0UwMEEzREI5OCAvKiBQdWJsaWNVUkxNYW5hZ2VyLmggKi87IH07
CiAJCTExMkIzNEQyMUU2MEI4QTcwMEJCMzEwQSAvKiBTaW1wbGVMaW5lTGF5b3V0UGFnaW5hdGlv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMTJC
MzREMDFFNjBCOEE3MDBCQjMxMEEgLyogU2ltcGxlTGluZUxheW91dFBhZ2luYXRpb24uY3BwICov
OyB9OwogCQkxMTJCMzRENTFFNjBCOTgzMDBCQjMxMEEgLyogU2ltcGxlTGluZUxheW91dFBhZ2lu
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDEx
MkIzNEQ0MUU2MEI5ODMwMEJCMzEwQSAvKiBTaW1wbGVMaW5lTGF5b3V0UGFnaW5hdGlvbi5oICov
OyB9OworCQkxMUUwNjdFQzFFNjI0NjEzMDAxNjJEMTYgLyogU2ltcGxlTGluZUxheW91dENvdmVy
YWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDEx
RTA2N0VCMUU2MjQ2MTMwMDE2MkQxNiAvKiBTaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuY3BwICov
OyB9OworCQkxMUUwNjdFRTFFNjI0NkU1MDAxNjJEMTYgLyogU2ltcGxlTGluZUxheW91dENvdmVy
YWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMUUw
NjdFRDFFNjI0NkU1MDAxNjJEMTYgLyogU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTIwREUzRUQxQzg2
Q0EzRTAwQjZENEREIC8qIFdlYkFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMjBERTNFQTFDODAxNjFDMDBCNkQ0REQgLyogV2ViQW5p
bWF0aW9uLmNwcCAqLzsgfTsKIAkJMTIwREUzRjExQzg2Q0NDNjAwQjZENEREIC8qIEFuaW1hdGlv
bkVmZmVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxMjBERTNFRTFDODZDQ0JEMDBCNkQ0REQgLyogQW5pbWF0aW9uRWZmZWN0LmNwcCAqLzsgfTsK
IAkJMTIwREUzRjgxQzg3QzVBODAwQjZENEREIC8qIEpTV2ViQW5pbWF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMjBERTNGNTFDODdDNThFMDBC
NkQ0REQgLyogSlNXZWJBbmltYXRpb24uaCAqLzsgfTsKQEAgLTc2OTIsNiArNzY5NCw4IEBACiAJ
CTEwRkIwODRBMTRFMTVDN0UwMEEzREI5OCAvKiBQdWJsaWNVUkxNYW5hZ2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1YmxpY1VSTE1hbmFnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMTEyQjM0RDAxRTYwQjhBNzAwQkIzMTBBIC8qIFNpbXBsZUxpbmVM
YXlvdXRQYWdpbmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNpbXBsZUxpbmVMYXlvdXRQYWdpbmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMTEyQjM0RDQxRTYwQjk4MzAwQkIzMTBBIC8qIFNpbXBsZUxpbmVMYXlvdXRQYWdpbmF0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbXBsZUxpbmVMYXlvdXRQ
YWdpbmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExRTA2N0VCMUU2MjQ2
MTMwMDE2MkQxNiAvKiBTaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTFFMDY3RUQxRTYyNDZFNTAwMTYyRDE2IC8qIFNp
bXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMTIwREUzRUExQzgwMTYxQzAwQjZENEREIC8qIFdlYkFuaW1hdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBbmltYXRpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxMjBERTNFQjFDODAxNjFDMDBCNkQ0REQgLyogV2ViQW5pbWF0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkFuaW1hdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxMjBERTNFQzFDODAxNjFDMDBCNkQ0REQgLyog
V2ViQW5pbWF0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJBbmltYXRpb24uaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQzNTEsNiArMjQzNTUsOCBAQAogCQkJ
CUNEQ0ZBQkJCMThDMEFFMzEwMDZGODQ1MCAvKiBTZWxlY3Rpb25TdWJ0cmVlUm9vdC5oICovLAog
CQkJCUU0ODk0NEEwMTgwQjU3RDgwMEYxNjVEOCAvKiBTaW1wbGVMaW5lTGF5b3V0LmNwcCAqLywK
IAkJCQlFNDg5NDRBMTE4MEI1N0Q4MDBGMTY1RDggLyogU2ltcGxlTGluZUxheW91dC5oICovLAor
CQkJCTExRTA2N0VCMUU2MjQ2MTMwMDE2MkQxNiAvKiBTaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2Uu
Y3BwICovLAorCQkJCTExRTA2N0VEMUU2MjQ2RTUwMDE2MkQxNiAvKiBTaW1wbGVMaW5lTGF5b3V0
Q292ZXJhZ2UuaCAqLywKIAkJCQk1ODVENkUwMTFBMUE3OTJFMDBGQTRGMTIgLyogU2ltcGxlTGlu
ZUxheW91dEZsb3dDb250ZW50cy5jcHAgKi8sCiAJCQkJNTg1RDZFMDIxQTFBNzkyRTAwRkE0RjEy
IC8qIFNpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMuaCAqLywKIAkJCQlFNEU5QjExQTE4MTQ1
NjkyMDAzQUNDREYgLyogU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAgKi8sCkBAIC0yNTk2
MSw2ICsyNTk2Nyw3IEBACiAJCQkJOTdCMzhFMjcxNTFDNDI3MTAwNDYyMkU5IC8qIERPTVdpbmRv
d05vdGlmaWNhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3RDJBRDA0MTRCODIzQTYwMDkz
REYzMiAvKiBET01XaW5kb3dQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODlGNjBCMTEx
NTdGNjg2RTAwNzVFMTU3IC8qIERPTVdpbmRvd1F1b3RhLmggaW4gSGVhZGVycyAqLywKKwkJCQkx
MUUwNjdFRTFFNjI0NkU1MDAxNjJEMTYgLyogU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBQTJBNUFENjE2QTQ4NjE2MDA5NzVBMjUgLyogRE9NV2luZG93U3Bl
ZWNoU3ludGhlc2lzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOENDQkI0OTE1MUY4MzE2MDBBQjdD
RTkgLyogRE9NV2luZG93V2ViRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTNEQTJF
MTE0MzEyMUUwMDBEODE3RSAvKiBET01XcmFwcGVyV29ybGQuaCBpbiBIZWFkZXJzICovLApAQCAt
MzIxMzYsNiArMzIxNDMsNyBAQAogCQkJCTk3NTlFOTQyMTRFRjFDRjgwMDI2QTJERCAvKiBUZXh0
VHJhY2tDdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcxQTlFQzIxNjhGQkM0MzAwMjYyOUY5
IC8qIFRleHRUcmFja0N1ZUdlbmVyaWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc1OUU5NDUx
NEVGMUNGODAwMjZBMkREIC8qIFRleHRUcmFja0N1ZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMTFFMDY3RUMxRTYyNDYxMzAwMTYyRDE2IC8qIFNpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzY5NzA4NjE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRy
YWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMUFENEU3MzEzQTEyQTQ2MDA4NDZCMjcg
LyogVGV4dFRyYWNrTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEMUU3MzQ3MTY3QkM3
OEUwMDlBODg1RCAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwCmluZGV4
IDI2ZmRlNWVlMTIxNTc3ZTkxOGVjYzQyZGQyODgyYmUxOWZmMzU3YjIuLmFjNTc2MTU3NThjMDc2
MDYwOTExMjEyNDg4YTJlMTgwODc2MGI4MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcmluZ0FsbEluT25lLmNwcApAQCAtMTQyLDYgKzE0Miw3IEBACiAjaW5jbHVkZSAi
U2Nyb2xsQWxpZ25tZW50LmNwcCIKICNpbmNsdWRlICJTZWxlY3Rpb25TdWJ0cmVlUm9vdC5jcHAi
CiAjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dC5jcHAiCisjaW5jbHVkZSAiU2ltcGxlTGluZUxh
eW91dENvdmVyYWdlLmNwcCIKICNpbmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRz
LmNwcCIKICNpbmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcCIKICNpbmNsdWRl
ICJTaW1wbGVMaW5lTGF5b3V0UGFnaW5hdGlvbi5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKaW5kZXggZWE0MjI2MjBjZTdlMWI0MWFjZThiYTQy
NTRmY2QxMWFkNDBmNzM2ZS4uNTQyMTE1MzA3YWRhZjc0ZGQ5NDRmY2RjMjEyMjg1MzcxMjk2NDll
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcApA
QCAtNDQsODYgKzQ0LDE3IEBACiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJS
ZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2wuaCIKLSNpbmNsdWRlICJS
ZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaW1wbGVMaW5l
TGF5b3V0Rmxvd0NvbnRlbnRzLmgiCiAjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dEZ1bmN0aW9u
cy5oIgogI2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5oIgog
I2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0UGFpbnRTdHlsZS5oIgotI2luY2x1ZGUg
IlRleHRTdHJlYW0uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIFNpbXBsZUxp
bmVMYXlvdXQgewogCiAjaWZuZGVmIE5ERUJVRwotdm9pZCBwcmludFNpbXBsZUxpbmVMYXlvdXRD
b3ZlcmFnZSgpOwotdm9pZCBwcmludFNpbXBsZUxpbmVMYXlvdXRCbG9ja0xpc3QoKTsKLXZvaWQg
dG9nZ2xlU2ltcGxlTGluZUxheW91dCgpOwotI2VuZGlmCi0KLWVudW0gQXZvaWRhbmNlUmVhc29u
XyA6IHVpbnQ2NF90IHsKLSAgICBGbG93SXNJbnNpZGVSZWdpb24gICAgICAgICAgICAgICAgICAg
ID0gMUxMVSAgPDwgMCwKLSAgICBGbG93SGFzSG9yaXpvbmFsV3JpdGluZ01vZGUgICAgICAgICAg
ID0gMUxMVSAgPDwgMSwKLSAgICBGbG93SGFzT3V0bGluZSAgICAgICAgICAgICAgICAgICAgICAg
ID0gMUxMVSAgPDwgMiwKLSAgICBGbG93SXNSdWJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gMUxMVSAgPDwgMywKLSAgICBGbG93SXNQYWdpbmF0ZWQgICAgICAgICAgICAgICAgICAgICAg
ID0gMUxMVSAgPDwgNCwKLSAgICBGbG93SGFzVGV4dE92ZXJmbG93ICAgICAgICAgICAgICAgICAg
ID0gMUxMVSAgPDwgNSwKLSAgICBGbG93SXNEZXByaWNhdGVkRmxleEJveCAgICAgICAgICAgICAg
ID0gMUxMVSAgPDwgNiwKLSAgICBGbG93UGFyZW50SXNQbGFjZWhvbGRlckVsZW1lbnQgICAgICAg
ID0gMUxMVSAgPDwgNywKLSAgICBGbG93UGFyZW50SXNUZXh0QXJlYVdpdGhXcmFwcGluZyAgICAg
ID0gMUxMVSAgPDwgOCwKLSAgICBGbG93SGFzTm9uU3VwcG9ydGVkQ2hpbGQgICAgICAgICAgICAg
ID0gMUxMVSAgPDwgOSwKLSAgICBGbG93SGFzVW5zdXBwb3J0ZWRGbG9hdCAgICAgICAgICAgICAg
ID0gMUxMVSAgPDwgMTAsCi0gICAgRmxvd0hhc1Vuc3VwcG9ydGVkVW5kZXJsaW5lRGVjb3JhdGlv
biA9IDFMTFUgIDw8IDExLAotICAgIEZsb3dIYXNKdXN0aWZpZWROb25MYXRpblRleHQgICAgICAg
ICAgPSAxTExVICA8PCAxMiwKLSAgICBGbG93SGFzT3ZlcmZsb3dOb3RWaXNpYmxlICAgICAgICAg
ICAgID0gMUxMVSAgPDwgMTMsCi0gICAgRmxvd0hhc1dlYktpdE5CU1BNb2RlICAgICAgICAgICAg
ICAgICA9IDFMTFUgIDw8IDE0LAotICAgIEZsb3dJc05vdExUUiAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAxTExVICA8PCAxNSwKLSAgICBGbG93SGFzTGluZUJveENvbnRhaW5Qcm9wZXJ0eSAg
ICAgICAgID0gMUxMVSAgPDwgMTYsCi0gICAgRmxvd0lzTm90VG9wVG9Cb3R0b20gICAgICAgICAg
ICAgICAgICA9IDFMTFUgIDw8IDE3LAotICAgIEZsb3dIYXNMaW5lQnJlYWsgICAgICAgICAgICAg
ICAgICAgICAgPSAxTExVICA8PCAxOCwKLSAgICBGbG93SGFzTm9uTm9ybWFsVW5pY29kZUJpRGkg
ICAgICAgICAgID0gMUxMVSAgPDwgMTksCi0gICAgRmxvd0hhc1JUTE9yZGVyaW5nICAgICAgICAg
ICAgICAgICAgICA9IDFMTFUgIDw8IDIwLAotICAgIEZsb3dIYXNMaW5lQWxpZ25FZGdlcyAgICAg
ICAgICAgICAgICAgPSAxTExVICA8PCAyMSwKLSAgICBGbG93SGFzTGluZVNuYXAgICAgICAgICAg
ICAgICAgICAgICAgID0gMUxMVSAgPDwgMjIsCi0gICAgRmxvd0hhc1RleHRFbXBoYXNpc0ZpbGxP
ck1hcmsgICAgICAgICA9IDFMTFUgIDw8IDIzLAotICAgIEZsb3dIYXNUZXh0U2hhZG93ICAgICAg
ICAgICAgICAgICAgICAgPSAxTExVICA8PCAyNCwKLSAgICBGbG93SGFzUHNldWRvRmlyc3RMaW5l
ICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgMjUsCi0gICAgRmxvd0hhc1BzZXVkb0ZpcnN0TGV0
dGVyICAgICAgICAgICAgICA9IDFMTFUgIDw8IDI2LAotICAgIEZsb3dIYXNUZXh0Q29tYmluZSAg
ICAgICAgICAgICAgICAgICAgPSAxTExVICA8PCAyNywKLSAgICBGbG93SGFzVGV4dEZpbGxCb3gg
ICAgICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgMjgsCi0gICAgRmxvd0hhc0JvcmRlckZpdExp
bmVzICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDI5LAotICAgIEZsb3dIYXNOb25BdXRvTGlu
ZUJyZWFrICAgICAgICAgICAgICAgPSAxTExVICA8PCAzMCwKLSAgICBGbG93SGFzTm9uQXV0b1Ry
YWlsaW5nV29yZCAgICAgICAgICAgID0gMUxMVSAgPDwgMzEsCi0gICAgRmxvd0hhc1NWR0ZvbnQg
ICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDMyLAotICAgIEZsb3dUZXh0SXNFbXB0
eSAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVICA8PCAzMywKLSAgICBGbG93VGV4dEhhc1Nv
ZnRIeXBoZW4gICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgMzQsCi0gICAgRmxvd1RleHRIYXNE
aXJlY3Rpb25DaGFyYWN0ZXIgICAgICAgICA9IDFMTFUgIDw8IDM1LAotICAgIEZsb3dJc01pc3Np
bmdQcmltYXJ5Rm9udCAgICAgICAgICAgICAgPSAxTExVICA8PCAzNiwKLSAgICBGbG93UHJpbWFy
eUZvbnRJc0luc3VmZmljaWVudCAgICAgICAgID0gMUxMVSAgPDwgMzcsCi0gICAgRmxvd1RleHRJ
c0NvbWJpbmVUZXh0ICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDM4LAotICAgIEZsb3dUZXh0
SXNSZW5kZXJDb3VudGVyICAgICAgICAgICAgICAgPSAxTExVICA8PCAzOSwKLSAgICBGbG93VGV4
dElzUmVuZGVyUXVvdGUgICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgNDAsCi0gICAgRmxvd1Rl
eHRJc1RleHRGcmFnbWVudCAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDQxLAotICAgIEZsb3dU
ZXh0SXNTVkdJbmxpbmVUZXh0ICAgICAgICAgICAgICAgPSAxTExVICA8PCA0MiwKLSAgICBGbG93
SGFzQ29tcGxleEZvbnRDb2RlUGF0aCAgICAgICAgICAgID0gMUxMVSAgPDwgNDMsCi0gICAgRmVh
dHVyZUlzRGlzYWJsZWQgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDQ0LAotICAgIEZs
b3dIYXNOb1BhcmVudCAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVICA8PCA0NSwKLSAgICBG
bG93SGFzTm9DaGlsZCAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgNDYsCi0gICAg
Rmxvd0NoaWxkSXNTZWxlY3RlZCAgICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDQ3LAotICAg
IEZsb3dIYXNIYW5naW5nUHVuY3R1YXRpb24gICAgICAgICAgICAgPSAxTExVICA8PCA0OCwKLSAg
ICBGbG93Rm9udEhhc092ZXJmbG93R2x5cGggICAgICAgICAgICAgID0gMUxMVSAgPDwgNDksCi0g
ICAgRmxvd1RleHRIYXNTdXJyb2dhdGVQYWlyICAgICAgICAgICAgICA9IDFMTFUgIDw8IDUwLAot
ICAgIEVuZE9mUmVhc29ucyAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVICA8PCA1MQot
fTsKLWNvbnN0IHVuc2lnbmVkIE5vUmVhc29uID0gMDsKLQotdHlwZWRlZiB1aW50NjRfdCBBdm9p
ZGFuY2VSZWFzb247Ci10eXBlZGVmIHVpbnQ2NF90IEF2b2lkYW5jZVJlYXNvbkZsYWdzOwotCi1l
bnVtIGNsYXNzIEluY2x1ZGVSZWFzb25zIHsgRmlyc3QgLCBBbGwgfTsKLQotI2lmbmRlZiBOREVC
VUcKICNkZWZpbmUgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURFRChyZWFzb24sIHJlYXNv
bnMsIGluY2x1ZGVSZWFzb25zKSB7IFwKICAgICAgICAgcmVhc29ucyB8PSByZWFzb247IFwKICAg
ICAgICAgaWYgKGluY2x1ZGVSZWFzb25zID09IEluY2x1ZGVSZWFzb25zOjpGaXJzdCkgXApAQCAt
Mjk4LDcgKzIyOSw3IEBAIHN0YXRpYyBBdm9pZGFuY2VSZWFzb25GbGFncyBjYW5Vc2VGb3JTdHls
ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEluY2x1ZGVSZWFzCiAgICAgcmV0dXJuIHJlYXNv
bnM7CiB9CiAKLXN0YXRpYyBBdm9pZGFuY2VSZWFzb25GbGFncyBjYW5Vc2VGb3JXaXRoUmVhc29u
KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgSW5jbHVkZVJlYXNvbnMgaW5jbHVkZVJlYXNv
bnMpCitBdm9pZGFuY2VSZWFzb25GbGFncyBjYW5Vc2VGb3JXaXRoUmVhc29uKGNvbnN0IFJlbmRl
ckJsb2NrRmxvdyYgZmxvdywgSW5jbHVkZVJlYXNvbnMgaW5jbHVkZVJlYXNvbnMpCiB7CiAjaWZu
ZGVmIE5ERUJVRwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKQEAgLTk0OCwz
MTkgKzg3OSw1IEBAIExheW91dDo6TGF5b3V0KGNvbnN0IFJ1blZlY3RvciYgcnVuVmVjdG9yLCB1
bnNpZ25lZCBsaW5lQ291bnQpCiAgICAgbWVtY3B5KG1fcnVucywgcnVuVmVjdG9yLmRhdGEoKSwg
bV9ydW5Db3VudCAqIHNpemVvZihSdW4pKTsKIH0KIAotI2lmbmRlZiBOREVCVUcKLXN0YXRpYyB2
b2lkIHByaW50UmVhc29uKEF2b2lkYW5jZVJlYXNvbiByZWFzb24sIFRleHRTdHJlYW0mIHN0cmVh
bSkKLXsKLSAgICBzd2l0Y2ggKHJlYXNvbikgewotICAgIGNhc2UgRmxvd0lzSW5zaWRlUmVnaW9u
OgotICAgICAgICBzdHJlYW0gPDwgImZsb3cgaXMgaW5zaWRlIHJlZ2lvbiI7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgRmxvd0hhc0hvcml6b25hbFdyaXRpbmdNb2RlOgotICAgICAgICBzdHJl
YW0gPDwgImhvcml6b250YWwgd3JpdGluZyBtb2RlIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBGbG93SGFzT3V0bGluZToKLSAgICAgICAgc3RyZWFtIDw8ICJvdXRsaW5lIjsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBGbG93SXNSdWJ5OgotICAgICAgICBzdHJlYW0gPDwgInJ1YnkiOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dIYXNIYW5naW5nUHVuY3R1YXRpb246Ci0gICAg
ICAgIHN0cmVhbSA8PCAiaGFuZ2luZyBwdW5jdHVhdGlvbiI7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRmxvd0lzUGFnaW5hdGVkOgotICAgICAgICBzdHJlYW0gPDwgInBhZ2luYXRlZCI7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmxvd0hhc1RleHRPdmVyZmxvdzoKLSAgICAgICAgc3Ry
ZWFtIDw8ICJ0ZXh0LW92ZXJmbG93IjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93SXNE
ZXByaWNhdGVkRmxleEJveDoKLSAgICAgICAgc3RyZWFtIDw8ICJkZXByaWNhdGVkRmxleEJveCI7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmxvd1BhcmVudElzUGxhY2Vob2xkZXJFbGVtZW50
OgotICAgICAgICBzdHJlYW0gPDwgInBsYWNlaG9sZGVyIGVsZW1lbnQiOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEZsb3dQYXJlbnRJc1RleHRBcmVhV2l0aFdyYXBwaW5nOgotICAgICAgICBz
dHJlYW0gPDwgIndyYXBwaW5nIHRleHRhcmVhIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBG
bG93SGFzTm9uU3VwcG9ydGVkQ2hpbGQ6Ci0gICAgICAgIHN0cmVhbSA8PCAibmVzdGVkIHJlbmRl
cmVycyI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmxvd0hhc1Vuc3VwcG9ydGVkRmxvYXQ6
Ci0gICAgICAgIHN0cmVhbSA8PCAiY29tcGxpY2F0ZWQgZmxvYXQiOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEZsb3dIYXNVbnN1cHBvcnRlZFVuZGVybGluZURlY29yYXRpb246Ci0gICAgICAg
IHN0cmVhbSA8PCAidGV4dC11bmRlcmxpbmUtcG9zaXRpb246IHVuZGVyIjsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBGbG93SGFzSnVzdGlmaWVkTm9uTGF0aW5UZXh0OgotICAgICAgICBzdHJl
YW0gPDwgInRleHQtYWxpZ246IGp1c3RpZnkgd2l0aCBub24tbGF0aW4gdGV4dCI7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgRmxvd0hhc092ZXJmbG93Tm90VmlzaWJsZToKLSAgICAgICAgc3Ry
ZWFtIDw8ICJvdmVyZmxvdzogaGlkZGVuIHwgc2Nyb2xsIHwgYXV0byI7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgRmxvd0hhc1dlYktpdE5CU1BNb2RlOgotICAgICAgICBzdHJlYW0gPDwgIi13
ZWJraXQtbmJzcC1tb2RlOiBzcGFjZSI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmxvd0lz
Tm90TFRSOgotICAgICAgICBzdHJlYW0gPDwgImRpciBpcyBub3QgTFRSIjsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBGbG93SGFzTGluZUJveENvbnRhaW5Qcm9wZXJ0eToKLSAgICAgICAgc3Ry
ZWFtIDw8ICJsaW5lLWJveC1jb250YWluIHZhbHVlIGluZGljYXRlcyB2YXJpYWJsZSBsaW5lIGhl
aWdodCI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmxvd0lzTm90VG9wVG9Cb3R0b206Ci0g
ICAgICAgIHN0cmVhbSA8PCAibm9uIHRvcC10by1ib3R0b20gZmxvdyI7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgRmxvd0hhc0xpbmVCcmVhazoKLSAgICAgICAgc3RyZWFtIDw8ICJsaW5lLWJy
ZWFrIHByb3BlcnR5IjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93SGFzTm9uTm9ybWFs
VW5pY29kZUJpRGk6Ci0gICAgICAgIHN0cmVhbSA8PCAibm9uLW5vcm1hbCBVbmljb2RlIGJpZGki
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dIYXNSVExPcmRlcmluZzoKLSAgICAgICAg
c3RyZWFtIDw8ICItd2Via2l0LXJ0bC1vcmRlcmluZyI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgRmxvd0hhc0xpbmVBbGlnbkVkZ2VzOgotICAgICAgICBzdHJlYW0gPDwgIi13ZWJraXQtbGlu
ZS1hbGlnbiBlZGdlcyI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmxvd0hhc0xpbmVTbmFw
OgotICAgICAgICBzdHJlYW0gPDwgIi13ZWJraXQtbGluZS1zbmFwIHByb3BlcnR5IjsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93SGFzVGV4dEVtcGhhc2lzRmlsbE9yTWFyazoKLSAgICAg
ICAgc3RyZWFtIDw8ICJ0ZXh0LWVtcGhhc2lzIChmaWxsL21hcmspIjsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBGbG93SGFzUHNldWRvRmlyc3RMaW5lOgotICAgICAgICBzdHJlYW0gPDwgImZp
cnN0LWxpbmUiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dIYXNQc2V1ZG9GaXJzdExl
dHRlcjoKLSAgICAgICAgc3RyZWFtIDw8ICJmaXJzdC1sZXR0ZXIiOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEZsb3dIYXNUZXh0Q29tYmluZToKLSAgICAgICAgc3RyZWFtIDw8ICJ0ZXh0IGNv
bWJpbmUiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dIYXNUZXh0RmlsbEJveDoKLSAg
ICAgICAgc3RyZWFtIDw8ICJiYWNrZ3JvdW5kLWNvbG9yICh0ZXh0LWZpbGwpIjsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBGbG93SGFzQm9yZGVyRml0TGluZXM6Ci0gICAgICAgIHN0cmVhbSA8
PCAiLXdlYmtpdC1ib3JkZXItZml0IjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93SGFz
Tm9uQXV0b0xpbmVCcmVhazoKLSAgICAgICAgc3RyZWFtIDw8ICJsaW5lLWJyZWFrIGlzIG5vdCBh
dXRvIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93SGFzTm9uQXV0b1RyYWlsaW5nV29y
ZDoKLSAgICAgICAgc3RyZWFtIDw8ICItYXBwbGUtdHJhaWxpbmctd29yZCBpcyBub3QgYXV0byI7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmxvd0hhc1NWR0ZvbnQ6Ci0gICAgICAgIHN0cmVh
bSA8PCAiU1ZHIGZvbnQiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dUZXh0SGFzU29m
dEh5cGhlbjoKLSAgICAgICAgc3RyZWFtIDw8ICJzb2Z0IGh5cGhlbiBjaGFyYWN0ZXIiOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dUZXh0SGFzRGlyZWN0aW9uQ2hhcmFjdGVyOgotICAg
ICAgICBzdHJlYW0gPDwgImRpcmVjdGlvbiBjaGFyYWN0ZXIiOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEZsb3dJc01pc3NpbmdQcmltYXJ5Rm9udDoKLSAgICAgICAgc3RyZWFtIDw8ICJtaXNz
aW5nIHByaW1hcnkgZm9udCI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmxvd1ByaW1hcnlG
b250SXNJbnN1ZmZpY2llbnQ6Ci0gICAgICAgIHN0cmVhbSA8PCAibWlzc2luZyBnbHlwaCBvciBn
bHlwaCBuZWVkcyBhbm90aGVyIGZvbnQiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dU
ZXh0SXNDb21iaW5lVGV4dDoKLSAgICAgICAgc3RyZWFtIDw8ICJ0ZXh0IGlzIGNvbWJpbmUiOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dUZXh0SXNSZW5kZXJDb3VudGVyOgotICAgICAg
ICBzdHJlYW0gPDwgInVuc3VwcG9ydGVkIFJlbmRlckNvdW50ZXIiOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEZsb3dUZXh0SXNSZW5kZXJRdW90ZToKLSAgICAgICAgc3RyZWFtIDw8ICJ1bnN1
cHBvcnRlZCBSZW5kZXJRdW90ZSI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmxvd1RleHRJ
c1RleHRGcmFnbWVudDoKLSAgICAgICAgc3RyZWFtIDw8ICJ1bnN1cHBvcnRlZCBUZXh0RnJhZ21l
bnQiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dUZXh0SXNTVkdJbmxpbmVUZXh0Ogot
ICAgICAgICBzdHJlYW0gPDwgInVuc3VwcG9ydGVkIFNWR0lubGluZVRleHQiOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEZsb3dIYXNDb21wbGV4Rm9udENvZGVQYXRoOgotICAgICAgICBzdHJl
YW0gPDwgInRleHQgd2l0aCBjb21wbGV4IGZvbnQgY29kZXBhdGgiOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEZsb3dIYXNUZXh0U2hhZG93OgotICAgICAgICBzdHJlYW0gPDwgInRleHQtc2hh
ZG93IjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93Q2hpbGRJc1NlbGVjdGVkOgotICAg
ICAgICBzdHJlYW0gPDwgInNlbGVjdGVkIGNvbnRlbnQiOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEZsb3dGb250SGFzT3ZlcmZsb3dHbHlwaDoKLSAgICAgICAgc3RyZWFtIDw8ICItd2Via2l0
LWxpbmUtYm94LWNvbnRhaW46IGdseXBocyB3aXRoIG92ZXJmbG93aW5nIHRleHQuIjsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBGbG93VGV4dEhhc1N1cnJvZ2F0ZVBhaXI6Ci0gICAgICAgIHN0
cmVhbSA8PCAic3Vycm9nYXRlIHBhaXIiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZsb3dU
ZXh0SXNFbXB0eToKLSAgICBjYXNlIEZsb3dIYXNOb0NoaWxkOgotICAgIGNhc2UgRmxvd0hhc05v
UGFyZW50OgotICAgIGNhc2UgRmVhdHVyZUlzRGlzYWJsZWQ6Ci0gICAgZGVmYXVsdDoKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCBwcmludFJlYXNvbnMoQXZvaWRhbmNl
UmVhc29uRmxhZ3MgcmVhc29ucywgVGV4dFN0cmVhbSYgc3RyZWFtKQotewotICAgIGJvb2wgZmly
c3QgPSB0cnVlOwotICAgIGZvciAoYXV0byByZWFzb25JdGVtID0gRW5kT2ZSZWFzb25zID4+IDE7
IHJlYXNvbkl0ZW0gIT0gTm9SZWFzb247IHJlYXNvbkl0ZW0gPj49IDEpIHsKLSAgICAgICAgaWYg
KCEocmVhc29ucyAmIHJlYXNvbkl0ZW0pKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IHN0cmVhbSA8PCAoZmlyc3QgPyAiICIgOiAiLCAiKTsKLSAgICAgICAgZmlyc3QgPSBmYWxzZTsK
LSAgICAgICAgcHJpbnRSZWFzb24ocmVhc29uSXRlbSwgc3RyZWFtKTsKLSAgICB9Ci19Ci0KLXN0
YXRpYyB2b2lkIHByaW50VGV4dEZvclN1YnRyZWUoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJl
ciwgdW5zaWduZWQmIGNoYXJhY3RlcnNMZWZ0LCBUZXh0U3RyZWFtJiBzdHJlYW0pCi17Ci0gICAg
aWYgKCFjaGFyYWN0ZXJzTGVmdCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChpczxSZW5kZXJU
ZXh0PihyZW5kZXJlcikpIHsKLSAgICAgICAgU3RyaW5nIHRleHQgPSBkb3duY2FzdDxSZW5kZXJU
ZXh0PihyZW5kZXJlcikudGV4dCgpOwotICAgICAgICB0ZXh0ID0gdGV4dC5zdHJpcFdoaXRlU3Bh
Y2UoKTsKLSAgICAgICAgdW5zaWduZWQgbGVuID0gc3RkOjptaW4oY2hhcmFjdGVyc0xlZnQsIHRl
eHQubGVuZ3RoKCkpOwotICAgICAgICBzdHJlYW0gPDwgdGV4dC5sZWZ0KGxlbik7Ci0gICAgICAg
IGNoYXJhY3RlcnNMZWZ0IC09IGxlbjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAo
IWlzPFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVyKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGZvciAo
Y29uc3QgYXV0byogY2hpbGQgPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihyZW5kZXJlcikuZmly
c3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAg
cHJpbnRUZXh0Rm9yU3VidHJlZSgqY2hpbGQsIGNoYXJhY3RlcnNMZWZ0LCBzdHJlYW0pOwotfQot
Ci1zdGF0aWMgdW5zaWduZWQgdGV4dExlbmd0aEZvclN1YnRyZWUoY29uc3QgUmVuZGVyT2JqZWN0
JiByZW5kZXJlcikKLXsKLSAgICBpZiAoaXM8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKQotICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpLnRleHRMZW5ndGgoKTsKLSAg
ICBpZiAoIWlzPFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVyKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgdW5zaWduZWQgdGV4dExlbmd0aCA9IDA7Ci0gICAgZm9yIChjb25zdCBhdXRvKiBjaGlsZCA9
IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVyKS5maXJzdENoaWxkKCk7IGNoaWxkOyBj
aGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQotICAgICAgICB0ZXh0TGVuZ3RoICs9IHRleHRM
ZW5ndGhGb3JTdWJ0cmVlKCpjaGlsZCk7Ci0gICAgcmV0dXJuIHRleHRMZW5ndGg7Ci19Ci0KLXN0
YXRpYyB2b2lkIGNvbGxlY3ROb25FbXB0eUxlYWZSZW5kZXJCbG9ja0Zsb3dzKGNvbnN0IFJlbmRl
ck9iamVjdCYgcmVuZGVyZXIsIEhhc2hTZXQ8Y29uc3QgUmVuZGVyQmxvY2tGbG93Kj4mIGxlYWZS
ZW5kZXJlcnMpCi17Ci0gICAgaWYgKGlzPFJlbmRlclRleHQ+KHJlbmRlcmVyKSkgewotICAgICAg
ICBpZiAoIWRvd25jYXN0PFJlbmRlclRleHQ+KHJlbmRlcmVyKS50ZXh0TGVuZ3RoKCkpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIC8vIEZpbmQgUmVuZGVyQmxvY2tGbG93IGFuY2VzdG9y
LgotICAgICAgICBmb3IgKGNvbnN0IGF1dG8qIGN1cnJlbnQgPSByZW5kZXJlci5wYXJlbnQoKTsg
Y3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPnBhcmVudCgpKSB7Ci0gICAgICAgICAgICBpZiAo
IWlzPFJlbmRlckJsb2NrRmxvdz4oY3VycmVudCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICBsZWFmUmVuZGVyZXJzLmFkZChkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+
KGN1cnJlbnQpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgaWYgKCFpczxSZW5kZXJFbGVtZW50PihyZW5kZXJlcikpCi0gICAgICAg
IHJldHVybjsKLSAgICBmb3IgKGNvbnN0IGF1dG8qIGNoaWxkID0gZG93bmNhc3Q8UmVuZGVyRWxl
bWVudD4ocmVuZGVyZXIpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRT
aWJsaW5nKCkpCi0gICAgICAgIGNvbGxlY3ROb25FbXB0eUxlYWZSZW5kZXJCbG9ja0Zsb3dzKCpj
aGlsZCwgbGVhZlJlbmRlcmVycyk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNvbGxlY3ROb25FbXB0eUxl
YWZSZW5kZXJCbG9ja0Zsb3dzRm9yQ3VycmVudFBhZ2UoSGFzaFNldDxjb25zdCBSZW5kZXJCbG9j
a0Zsb3cqPiYgbGVhZlJlbmRlcmVycykKLXsKLSAgICBmb3IgKGNvbnN0IGF1dG8qIGRvY3VtZW50
IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKSB7Ci0gICAgICAgIGlmICghZG9jdW1lbnQtPnJl
bmRlclZpZXcoKSB8fCBkb2N1bWVudC0+cGFnZUNhY2hlU3RhdGUoKSAhPSBEb2N1bWVudDo6Tm90
SW5QYWdlQ2FjaGUpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFkb2N1bWVu
dC0+aXNIVE1MRG9jdW1lbnQoKSAmJiAhZG9jdW1lbnQtPmlzWEhUTUxEb2N1bWVudCgpKQotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGNvbGxlY3ROb25FbXB0eUxlYWZSZW5kZXJCbG9j
a0Zsb3dzKCpkb2N1bWVudC0+cmVuZGVyVmlldygpLCBsZWFmUmVuZGVyZXJzKTsKLSAgICB9Ci19
Ci0KLXZvaWQgdG9nZ2xlU2ltcGxlTGluZUxheW91dCgpCi17Ci0gICAgZm9yIChhdXRvKiBkb2N1
bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkgewotICAgICAgICBhdXRvJiBzZXR0aW5n
cyA9IGRvY3VtZW50LT5tdXRhYmxlU2V0dGluZ3MoKTsKLSAgICAgICAgc2V0dGluZ3Muc2V0U2lt
cGxlTGluZUxheW91dEVuYWJsZWQoIXNldHRpbmdzLnNpbXBsZUxpbmVMYXlvdXRFbmFibGVkKCkp
OwotICAgIH0KLX0KLQotdm9pZCBwcmludFNpbXBsZUxpbmVMYXlvdXRCbG9ja0xpc3QoKQotewot
ICAgIEhhc2hTZXQ8Y29uc3QgUmVuZGVyQmxvY2tGbG93Kj4gbGVhZlJlbmRlcmVyczsKLSAgICBj
b2xsZWN0Tm9uRW1wdHlMZWFmUmVuZGVyQmxvY2tGbG93c0ZvckN1cnJlbnRQYWdlKGxlYWZSZW5k
ZXJlcnMpOwotICAgIGlmICghbGVhZlJlbmRlcmVycy5zaXplKCkpIHsKLSAgICAgICAgV1RGTG9n
QWx3YXlzKCJObyB0ZXh0IGZvdW5kIGluIHRoaXMgZG9jdW1lbnRcbiIpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIFRleHRTdHJlYW0gc3RyZWFtOwotICAgIHN0cmVhbSA8PCAiLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iOwotICAgIGZv
ciAoY29uc3QgYXV0byogZmxvdyA6IGxlYWZSZW5kZXJlcnMpIHsKLSAgICAgICAgYXV0byByZWFz
b24gPSBjYW5Vc2VGb3JXaXRoUmVhc29uKCpmbG93LCBJbmNsdWRlUmVhc29uczo6QWxsKTsKLSAg
ICAgICAgaWYgKHJlYXNvbiA9PSBOb1JlYXNvbikKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICB1bnNpZ25lZCBwcmludGVkTGVuZ3RoID0gMzA7Ci0gICAgICAgIHN0cmVhbSA8PCAiXCIi
OwotICAgICAgICBwcmludFRleHRGb3JTdWJ0cmVlKCpmbG93LCBwcmludGVkTGVuZ3RoLCBzdHJl
YW0pOwotICAgICAgICBmb3IgKDtwcmludGVkTGVuZ3RoID4gMDsgLS1wcmludGVkTGVuZ3RoKQot
ICAgICAgICAgICAgc3RyZWFtIDw8ICIgIjsKLSAgICAgICAgc3RyZWFtIDw8ICJcIigiIDw8IHRl
eHRMZW5ndGhGb3JTdWJ0cmVlKCpmbG93KSA8PCAiKToiOwotICAgICAgICBwcmludFJlYXNvbnMo
cmVhc29uLCBzdHJlYW0pOwotICAgICAgICBzdHJlYW0gPDwgIlxuIjsKLSAgICB9Ci0gICAgc3Ry
ZWFtIDw8ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS1cbiI7Ci0gICAgV1RGTG9nQWx3YXlzKCIlcyIsIHN0cmVhbS5yZWxlYXNlKCkudXRmOCgpLmRh
dGEoKSk7Ci19Ci0KLXZvaWQgcHJpbnRTaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UoKQotewotICAg
IEhhc2hTZXQ8Y29uc3QgUmVuZGVyQmxvY2tGbG93Kj4gbGVhZlJlbmRlcmVyczsKLSAgICBjb2xs
ZWN0Tm9uRW1wdHlMZWFmUmVuZGVyQmxvY2tGbG93c0ZvckN1cnJlbnRQYWdlKGxlYWZSZW5kZXJl
cnMpOwotICAgIGlmICghbGVhZlJlbmRlcmVycy5zaXplKCkpIHsKLSAgICAgICAgV1RGTG9nQWx3
YXlzKCJObyB0ZXh0IGZvdW5kIGluIHRoaXMgZG9jdW1lbnRcbiIpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIFRleHRTdHJlYW0gc3RyZWFtOwotICAgIEhhc2hNYXA8QXZvaWRhbmNlUmVh
c29uLCB1bnNpZ25lZD4gZmxvd1N0YXRpc3RpY3M7Ci0gICAgdW5zaWduZWQgdGV4dExlbmd0aCA9
IDA7Ci0gICAgdW5zaWduZWQgdW5zdXBwb3J0ZWRUZXh0TGVuZ3RoID0gMDsKLSAgICB1bnNpZ25l
ZCBudW1iZXJPZlVuc3VwcG9ydGVkTGVhZkJsb2NrcyA9IDA7Ci0gICAgdW5zaWduZWQgc3VwcG9y
dGVkQnV0Rm9yY2VkVG9MaW5lTGF5b3V0VGV4dExlbmd0aCA9IDA7Ci0gICAgdW5zaWduZWQgbnVt
YmVyT2ZTdXBwb3J0ZWRCdXRGb3JjZWRUb0xpbmVMYXlvdXRMZWFmQmxvY2tzID0gMDsKLSAgICBm
b3IgKGNvbnN0IGF1dG8qIGZsb3cgOiBsZWFmUmVuZGVyZXJzKSB7Ci0gICAgICAgIGF1dG8gZmxv
d0xlbmd0aCA9IHRleHRMZW5ndGhGb3JTdWJ0cmVlKCpmbG93KTsKLSAgICAgICAgdGV4dExlbmd0
aCArPSBmbG93TGVuZ3RoOwotICAgICAgICBhdXRvIHJlYXNvbnMgPSBjYW5Vc2VGb3JXaXRoUmVh
c29uKCpmbG93LCBJbmNsdWRlUmVhc29uczo6QWxsKTsKLSAgICAgICAgaWYgKHJlYXNvbnMgPT0g
Tm9SZWFzb24pIHsKLSAgICAgICAgICAgIGlmIChmbG93LT5saW5lTGF5b3V0UGF0aCgpID09IFJl
bmRlckJsb2NrRmxvdzo6Rm9yY2VMaW5lQm94ZXNQYXRoKSB7Ci0gICAgICAgICAgICAgICAgc3Vw
cG9ydGVkQnV0Rm9yY2VkVG9MaW5lTGF5b3V0VGV4dExlbmd0aCArPSBmbG93TGVuZ3RoOwotICAg
ICAgICAgICAgICAgICsrbnVtYmVyT2ZTdXBwb3J0ZWRCdXRGb3JjZWRUb0xpbmVMYXlvdXRMZWFm
QmxvY2tzOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0K
LSAgICAgICAgKytudW1iZXJPZlVuc3VwcG9ydGVkTGVhZkJsb2NrczsKLSAgICAgICAgdW5zdXBw
b3J0ZWRUZXh0TGVuZ3RoICs9IGZsb3dMZW5ndGg7Ci0gICAgICAgIGZvciAoYXV0byByZWFzb25J
dGVtID0gRW5kT2ZSZWFzb25zID4+IDE7IHJlYXNvbkl0ZW0gIT0gTm9SZWFzb247IHJlYXNvbkl0
ZW0gPj49IDEpIHsKLSAgICAgICAgICAgIGlmICghKHJlYXNvbnMgJiByZWFzb25JdGVtKSkKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gZmxvd1N0
YXRpc3RpY3MuYWRkKHJlYXNvbkl0ZW0sIGZsb3dMZW5ndGgpOwotICAgICAgICAgICAgaWYgKCFy
ZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVl
ICs9IGZsb3dMZW5ndGg7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgc3RyZWFtIDw8ICItLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiI7Ci0gICAgc3Ry
ZWFtIDw8ICJOdW1iZXIgb2YgYmxvY2tzOiB0b3RhbCgiIDw8ICBsZWFmUmVuZGVyZXJzLnNpemUo
KSA8PCAiKSBub24tc2ltcGxlKCIgPDwgbnVtYmVyT2ZVbnN1cHBvcnRlZExlYWZCbG9ja3MgPDwg
IilcbkNvbnRlbnQgbGVuZ3RoOiB0b3RhbCgiIDw8Ci0gICAgICAgIHRleHRMZW5ndGggPDwgIikg
bm9uLXNpbXBsZSgiIDw8IHVuc3VwcG9ydGVkVGV4dExlbmd0aCA8PCAiKVxuIjsKLSAgICBmb3Ig
KGNvbnN0IGF1dG8gcmVhc29uRW50cnkgOiBmbG93U3RhdGlzdGljcykgewotICAgICAgICBwcmlu
dFJlYXNvbihyZWFzb25FbnRyeS5rZXksIHN0cmVhbSk7Ci0gICAgICAgIHN0cmVhbSA8PCAiOiAi
IDw8IChmbG9hdClyZWFzb25FbnRyeS52YWx1ZSAvIChmbG9hdCl0ZXh0TGVuZ3RoICogMTAwIDw8
ICIlXG4iOwotICAgIH0KLSAgICBpZiAoc3VwcG9ydGVkQnV0Rm9yY2VkVG9MaW5lTGF5b3V0VGV4
dExlbmd0aCkgewotICAgICAgICBzdHJlYW0gPDwgIlNpbXBsZSBsaW5lIGxheW91dCBwb3RlbnRp
YWwgY292ZXJhZ2U6ICIgPDwgKGZsb2F0KSh0ZXh0TGVuZ3RoIC0gdW5zdXBwb3J0ZWRUZXh0TGVu
Z3RoKSAvIChmbG9hdCl0ZXh0TGVuZ3RoICogMTAwIDw8ICIlXG5cbiI7Ci0gICAgICAgIHN0cmVh
bSA8PCAiU2ltcGxlIGxpbmUgbGF5b3V0IGFjdHVhbCBjb3ZlcmFnZTogIiA8PCAoZmxvYXQpKHRl
eHRMZW5ndGggLSB1bnN1cHBvcnRlZFRleHRMZW5ndGggLSBzdXBwb3J0ZWRCdXRGb3JjZWRUb0xp
bmVMYXlvdXRUZXh0TGVuZ3RoKSAvIChmbG9hdCl0ZXh0TGVuZ3RoICogMTAwIDw8ICIlXG5Gb3Jj
ZWQgbGluZSBsYXlvdXQgYmxvY2tzOiAiIDw8IG51bWJlck9mU3VwcG9ydGVkQnV0Rm9yY2VkVG9M
aW5lTGF5b3V0TGVhZkJsb2NrcyA8PCAiIGNvbnRlbnQgbGVuZ3RoOiAiIDw8IHN1cHBvcnRlZEJ1
dEZvcmNlZFRvTGluZUxheW91dFRleHRMZW5ndGggPDwgIigiIDw8IChmbG9hdClzdXBwb3J0ZWRC
dXRGb3JjZWRUb0xpbmVMYXlvdXRUZXh0TGVuZ3RoIC8gKGZsb2F0KXRleHRMZW5ndGggKiAxMDAg
PDwgIiUpIjsKLSAgICB9IGVsc2UKLSAgICAgICAgc3RyZWFtIDw8ICJTaW1wbGUgbGluZSBsYXlv
dXQgY292ZXJhZ2U6ICIgPDwgKGZsb2F0KSh0ZXh0TGVuZ3RoIC0gdW5zdXBwb3J0ZWRUZXh0TGVu
Z3RoKSAvIChmbG9hdCl0ZXh0TGVuZ3RoICogMTAwIDw8ICIlIjsKLSAgICBzdHJlYW0gPDwgIlxu
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iOwot
ICAgIFdURkxvZ0Fsd2F5cygiJXMiLCBzdHJlYW0ucmVsZWFzZSgpLnV0ZjgoKS5kYXRhKCkpOwot
fQotI2VuZGlmCiB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2lt
cGxlTGluZUxheW91dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXQuaAppbmRleCAzZWIwNDFiMTkyMTFjZGM0MDhmZjlkYjFjNGMyOWU1MWY4NDQ2NmY1Li5kNTg3
MjllM2M3OTA5OGIwMDliZjBjZjAyYWM4ODhmNjRmZGQyNjVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuaCIKICNpbmNsdWRl
ICJUZXh0RmxhZ3MuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CkBAIC00MSw2ICs0Miw4IEBAIGNsYXNzIFJlbmRlckJsb2NrRmxvdzsK
IG5hbWVzcGFjZSBTaW1wbGVMaW5lTGF5b3V0IHsKIAogYm9vbCBjYW5Vc2VGb3IoY29uc3QgUmVu
ZGVyQmxvY2tGbG93Jik7CitBdm9pZGFuY2VSZWFzb25GbGFncyBjYW5Vc2VGb3JXaXRoUmVhc29u
KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYsIEluY2x1ZGVSZWFzb25zKTsKKwogCiBzdHJ1Y3QgUnVu
IHsKICNpZiBDT01QSUxFUihNU1ZDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1NpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTQ2MmFmMWE1ZjRk
MTI3NjQxN2M3ZTg0YzEyNzQzZTVhNjFjZTVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5jcHAKQEAgLTAsMCArMSwz
NTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2ltcGxl
TGluZUxheW91dENvdmVyYWdlLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAi
UmVuZGVyQmxvY2tGbG93LmgiCisjaW5jbHVkZSAiUmVuZGVyQ2hpbGRJdGVyYXRvci5oIgorI2lu
Y2x1ZGUgIlJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorI2luY2x1ZGUg
IlNldHRpbmdzLmgiCisjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dC5oIgorI2luY2x1ZGUgIlRl
eHRTdHJlYW0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIFNpbXBsZUxpbmVM
YXlvdXQgeworCisjaWZuZGVmIE5ERUJVRworc3RhdGljIHZvaWQgcHJpbnRSZWFzb24oQXZvaWRh
bmNlUmVhc29uIHJlYXNvbiwgVGV4dFN0cmVhbSYgc3RyZWFtKQoreworICAgIHN3aXRjaCAocmVh
c29uKSB7CisgICAgY2FzZSBGbG93SXNJbnNpZGVSZWdpb246CisgICAgICAgIHN0cmVhbSA8PCAi
ZmxvdyBpcyBpbnNpZGUgcmVnaW9uIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGbG93SGFz
SG9yaXpvbmFsV3JpdGluZ01vZGU6CisgICAgICAgIHN0cmVhbSA8PCAiaG9yaXpvbnRhbCB3cml0
aW5nIG1vZGUiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZsb3dIYXNPdXRsaW5lOgorICAg
ICAgICBzdHJlYW0gPDwgIm91dGxpbmUiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZsb3dJ
c1J1Ynk6CisgICAgICAgIHN0cmVhbSA8PCAicnVieSI7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgRmxvd0hhc0hhbmdpbmdQdW5jdHVhdGlvbjoKKyAgICAgICAgc3RyZWFtIDw8ICJoYW5naW5n
IHB1bmN0dWF0aW9uIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGbG93SXNQYWdpbmF0ZWQ6
CisgICAgICAgIHN0cmVhbSA8PCAicGFnaW5hdGVkIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBGbG93SGFzVGV4dE92ZXJmbG93OgorICAgICAgICBzdHJlYW0gPDwgInRleHQtb3ZlcmZsb3ci
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZsb3dJc0RlcHJpY2F0ZWRGbGV4Qm94OgorICAg
ICAgICBzdHJlYW0gPDwgImRlcHJpY2F0ZWRGbGV4Qm94IjsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBGbG93UGFyZW50SXNQbGFjZWhvbGRlckVsZW1lbnQ6CisgICAgICAgIHN0cmVhbSA8PCAi
cGxhY2Vob2xkZXIgZWxlbWVudCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmxvd1BhcmVu
dElzVGV4dEFyZWFXaXRoV3JhcHBpbmc6CisgICAgICAgIHN0cmVhbSA8PCAid3JhcHBpbmcgdGV4
dGFyZWEiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZsb3dIYXNOb25TdXBwb3J0ZWRDaGls
ZDoKKyAgICAgICAgc3RyZWFtIDw8ICJuZXN0ZWQgcmVuZGVyZXJzIjsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBGbG93SGFzVW5zdXBwb3J0ZWRGbG9hdDoKKyAgICAgICAgc3RyZWFtIDw8ICJj
b21wbGljYXRlZCBmbG9hdCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmxvd0hhc1Vuc3Vw
cG9ydGVkVW5kZXJsaW5lRGVjb3JhdGlvbjoKKyAgICAgICAgc3RyZWFtIDw8ICJ0ZXh0LXVuZGVy
bGluZS1wb3NpdGlvbjogdW5kZXIiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZsb3dIYXNK
dXN0aWZpZWROb25MYXRpblRleHQ6CisgICAgICAgIHN0cmVhbSA8PCAidGV4dC1hbGlnbjoganVz
dGlmeSB3aXRoIG5vbi1sYXRpbiB0ZXh0IjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGbG93
SGFzT3ZlcmZsb3dOb3RWaXNpYmxlOgorICAgICAgICBzdHJlYW0gPDwgIm92ZXJmbG93OiBoaWRk
ZW4gfCBzY3JvbGwgfCBhdXRvIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGbG93SGFzV2Vi
S2l0TkJTUE1vZGU6CisgICAgICAgIHN0cmVhbSA8PCAiLXdlYmtpdC1uYnNwLW1vZGU6IHNwYWNl
IjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGbG93SXNOb3RMVFI6CisgICAgICAgIHN0cmVh
bSA8PCAiZGlyIGlzIG5vdCBMVFIiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZsb3dIYXNM
aW5lQm94Q29udGFpblByb3BlcnR5OgorICAgICAgICBzdHJlYW0gPDwgImxpbmUtYm94LWNvbnRh
aW4gdmFsdWUgaW5kaWNhdGVzIHZhcmlhYmxlIGxpbmUgaGVpZ2h0IjsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBGbG93SXNOb3RUb3BUb0JvdHRvbToKKyAgICAgICAgc3RyZWFtIDw8ICJub24g
dG9wLXRvLWJvdHRvbSBmbG93IjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGbG93SGFzTGlu
ZUJyZWFrOgorICAgICAgICBzdHJlYW0gPDwgImxpbmUtYnJlYWsgcHJvcGVydHkiOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEZsb3dIYXNOb25Ob3JtYWxVbmljb2RlQmlEaToKKyAgICAgICAg
c3RyZWFtIDw8ICJub24tbm9ybWFsIFVuaWNvZGUgYmlkaSI7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgRmxvd0hhc1JUTE9yZGVyaW5nOgorICAgICAgICBzdHJlYW0gPDwgIi13ZWJraXQtcnRs
LW9yZGVyaW5nIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGbG93SGFzTGluZUFsaWduRWRn
ZXM6CisgICAgICAgIHN0cmVhbSA8PCAiLXdlYmtpdC1saW5lLWFsaWduIGVkZ2VzIjsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBGbG93SGFzTGluZVNuYXA6CisgICAgICAgIHN0cmVhbSA8PCAi
LXdlYmtpdC1saW5lLXNuYXAgcHJvcGVydHkiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZs
b3dIYXNUZXh0RW1waGFzaXNGaWxsT3JNYXJrOgorICAgICAgICBzdHJlYW0gPDwgInRleHQtZW1w
aGFzaXMgKGZpbGwvbWFyaykiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZsb3dIYXNQc2V1
ZG9GaXJzdExpbmU6CisgICAgICAgIHN0cmVhbSA8PCAiZmlyc3QtbGluZSI7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgRmxvd0hhc1BzZXVkb0ZpcnN0TGV0dGVyOgorICAgICAgICBzdHJlYW0g
PDwgImZpcnN0LWxldHRlciI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmxvd0hhc1RleHRD
b21iaW5lOgorICAgICAgICBzdHJlYW0gPDwgInRleHQgY29tYmluZSI7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgRmxvd0hhc1RleHRGaWxsQm94OgorICAgICAgICBzdHJlYW0gPDwgImJhY2tn
cm91bmQtY29sb3IgKHRleHQtZmlsbCkiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZsb3dI
YXNCb3JkZXJGaXRMaW5lczoKKyAgICAgICAgc3RyZWFtIDw8ICItd2Via2l0LWJvcmRlci1maXQi
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZsb3dIYXNOb25BdXRvTGluZUJyZWFrOgorICAg
ICAgICBzdHJlYW0gPDwgImxpbmUtYnJlYWsgaXMgbm90IGF1dG8iOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEZsb3dIYXNOb25BdXRvVHJhaWxpbmdXb3JkOgorICAgICAgICBzdHJlYW0gPDwg
Ii1hcHBsZS10cmFpbGluZy13b3JkIGlzIG5vdCBhdXRvIjsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBGbG93SGFzU1ZHRm9udDoKKyAgICAgICAgc3RyZWFtIDw8ICJTVkcgZm9udCI7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgRmxvd1RleHRIYXNTb2Z0SHlwaGVuOgorICAgICAgICBzdHJl
YW0gPDwgInNvZnQgaHlwaGVuIGNoYXJhY3RlciI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Rmxvd1RleHRIYXNEaXJlY3Rpb25DaGFyYWN0ZXI6CisgICAgICAgIHN0cmVhbSA8PCAiZGlyZWN0
aW9uIGNoYXJhY3RlciI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmxvd0lzTWlzc2luZ1By
aW1hcnlGb250OgorICAgICAgICBzdHJlYW0gPDwgIm1pc3NpbmcgcHJpbWFyeSBmb250IjsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBGbG93UHJpbWFyeUZvbnRJc0luc3VmZmljaWVudDoKKyAg
ICAgICAgc3RyZWFtIDw8ICJtaXNzaW5nIGdseXBoIG9yIGdseXBoIG5lZWRzIGFub3RoZXIgZm9u
dCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmxvd1RleHRJc0NvbWJpbmVUZXh0OgorICAg
ICAgICBzdHJlYW0gPDwgInRleHQgaXMgY29tYmluZSI7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgRmxvd1RleHRJc1JlbmRlckNvdW50ZXI6CisgICAgICAgIHN0cmVhbSA8PCAidW5zdXBwb3J0
ZWQgUmVuZGVyQ291bnRlciI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmxvd1RleHRJc1Jl
bmRlclF1b3RlOgorICAgICAgICBzdHJlYW0gPDwgInVuc3VwcG9ydGVkIFJlbmRlclF1b3RlIjsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGbG93VGV4dElzVGV4dEZyYWdtZW50OgorICAgICAg
ICBzdHJlYW0gPDwgInVuc3VwcG9ydGVkIFRleHRGcmFnbWVudCI7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgRmxvd1RleHRJc1NWR0lubGluZVRleHQ6CisgICAgICAgIHN0cmVhbSA8PCAidW5z
dXBwb3J0ZWQgU1ZHSW5saW5lVGV4dCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmxvd0hh
c0NvbXBsZXhGb250Q29kZVBhdGg6CisgICAgICAgIHN0cmVhbSA8PCAidGV4dCB3aXRoIGNvbXBs
ZXggZm9udCBjb2RlcGF0aCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmxvd0hhc1RleHRT
aGFkb3c6CisgICAgICAgIHN0cmVhbSA8PCAidGV4dC1zaGFkb3ciOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEZsb3dDaGlsZElzU2VsZWN0ZWQ6CisgICAgICAgIHN0cmVhbSA8PCAic2VsZWN0
ZWQgY29udGVudCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmxvd0ZvbnRIYXNPdmVyZmxv
d0dseXBoOgorICAgICAgICBzdHJlYW0gPDwgIi13ZWJraXQtbGluZS1ib3gtY29udGFpbjogZ2x5
cGhzIHdpdGggb3ZlcmZsb3dpbmcgdGV4dC4iOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZs
b3dUZXh0SGFzU3Vycm9nYXRlUGFpcjoKKyAgICAgICAgc3RyZWFtIDw8ICJzdXJyb2dhdGUgcGFp
ciI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmxvd1RleHRJc0VtcHR5OgorICAgIGNhc2Ug
Rmxvd0hhc05vQ2hpbGQ6CisgICAgY2FzZSBGbG93SGFzTm9QYXJlbnQ6CisgICAgY2FzZSBGZWF0
dXJlSXNEaXNhYmxlZDoKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9Cit9CisK
K3N0YXRpYyB2b2lkIHByaW50UmVhc29ucyhBdm9pZGFuY2VSZWFzb25GbGFncyByZWFzb25zLCBU
ZXh0U3RyZWFtJiBzdHJlYW0pCit7CisgICAgYm9vbCBmaXJzdCA9IHRydWU7CisgICAgZm9yIChh
dXRvIHJlYXNvbkl0ZW0gPSBFbmRPZlJlYXNvbnMgPj4gMTsgcmVhc29uSXRlbSAhPSBOb1JlYXNv
bjsgcmVhc29uSXRlbSA+Pj0gMSkgeworICAgICAgICBpZiAoIShyZWFzb25zICYgcmVhc29uSXRl
bSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgc3RyZWFtIDw8IChmaXJzdCA/ICIg
IiA6ICIsICIpOworICAgICAgICBmaXJzdCA9IGZhbHNlOworICAgICAgICBwcmludFJlYXNvbihy
ZWFzb25JdGVtLCBzdHJlYW0pOworICAgIH0KK30KKworc3RhdGljIHZvaWQgcHJpbnRUZXh0Rm9y
U3VidHJlZShjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCB1bnNpZ25lZCYgY2hhcmFjdGVy
c0xlZnQsIFRleHRTdHJlYW0mIHN0cmVhbSkKK3sKKyAgICBpZiAoIWNoYXJhY3RlcnNMZWZ0KQor
ICAgICAgICByZXR1cm47CisgICAgaWYgKGlzPFJlbmRlclRleHQ+KHJlbmRlcmVyKSkgeworICAg
ICAgICBTdHJpbmcgdGV4dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+KHJlbmRlcmVyKS50ZXh0KCk7
CisgICAgICAgIHRleHQgPSB0ZXh0LnN0cmlwV2hpdGVTcGFjZSgpOworICAgICAgICB1bnNpZ25l
ZCBsZW4gPSBzdGQ6Om1pbihjaGFyYWN0ZXJzTGVmdCwgdGV4dC5sZW5ndGgoKSk7CisgICAgICAg
IHN0cmVhbSA8PCB0ZXh0LmxlZnQobGVuKTsKKyAgICAgICAgY2hhcmFjdGVyc0xlZnQgLT0gbGVu
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICghaXM8UmVuZGVyRWxlbWVudD4ocmVu
ZGVyZXIpKQorICAgICAgICByZXR1cm47CisgICAgZm9yIChjb25zdCBhdXRvKiBjaGlsZCA9IGRv
d25jYXN0PFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVyKS5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGls
ZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQorICAgICAgICBwcmludFRleHRGb3JTdWJ0cmVlKCpj
aGlsZCwgY2hhcmFjdGVyc0xlZnQsIHN0cmVhbSk7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCB0ZXh0
TGVuZ3RoRm9yU3VidHJlZShjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQoreworICAgIGlm
IChpczxSZW5kZXJUZXh0PihyZW5kZXJlcikpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5k
ZXJUZXh0PihyZW5kZXJlcikudGV4dExlbmd0aCgpOworICAgIGlmICghaXM8UmVuZGVyRWxlbWVu
dD4ocmVuZGVyZXIpKQorICAgICAgICByZXR1cm4gMDsKKyAgICB1bnNpZ25lZCB0ZXh0TGVuZ3Ro
ID0gMDsKKyAgICBmb3IgKGNvbnN0IGF1dG8qIGNoaWxkID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVu
dD4ocmVuZGVyZXIpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJs
aW5nKCkpCisgICAgICAgIHRleHRMZW5ndGggKz0gdGV4dExlbmd0aEZvclN1YnRyZWUoKmNoaWxk
KTsKKyAgICByZXR1cm4gdGV4dExlbmd0aDsKK30KKworc3RhdGljIHZvaWQgY29sbGVjdE5vbkVt
cHR5TGVhZlJlbmRlckJsb2NrRmxvd3MoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgSGFz
aFNldDxjb25zdCBSZW5kZXJCbG9ja0Zsb3cqPiYgbGVhZlJlbmRlcmVycykKK3sKKyAgICBpZiAo
aXM8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKSB7CisgICAgICAgIGlmICghZG93bmNhc3Q8UmVuZGVy
VGV4dD4ocmVuZGVyZXIpLnRleHRMZW5ndGgoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgLy8gRmluZCBSZW5kZXJCbG9ja0Zsb3cgYW5jZXN0b3IuCisgICAgICAgIGZvciAoY29uc3Qg
YXV0byogY3VycmVudCA9IHJlbmRlcmVyLnBhcmVudCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3Vy
cmVudC0+cGFyZW50KCkpIHsKKyAgICAgICAgICAgIGlmICghaXM8UmVuZGVyQmxvY2tGbG93Pihj
dXJyZW50KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGxlYWZSZW5k
ZXJlcnMuYWRkKGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oY3VycmVudCkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIWlz
PFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVyKSkKKyAgICAgICAgcmV0dXJuOworICAgIGZvciAoY29u
c3QgYXV0byogY2hpbGQgPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihyZW5kZXJlcikuZmlyc3RD
aGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgY29s
bGVjdE5vbkVtcHR5TGVhZlJlbmRlckJsb2NrRmxvd3MoKmNoaWxkLCBsZWFmUmVuZGVyZXJzKTsK
K30KKworc3RhdGljIHZvaWQgY29sbGVjdE5vbkVtcHR5TGVhZlJlbmRlckJsb2NrRmxvd3NGb3JD
dXJyZW50UGFnZShIYXNoU2V0PGNvbnN0IFJlbmRlckJsb2NrRmxvdyo+JiBsZWFmUmVuZGVyZXJz
KQoreworICAgIGZvciAoY29uc3QgYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1l
bnRzKCkpIHsKKyAgICAgICAgaWYgKCFkb2N1bWVudC0+cmVuZGVyVmlldygpIHx8IGRvY3VtZW50
LT5wYWdlQ2FjaGVTdGF0ZSgpICE9IERvY3VtZW50OjpOb3RJblBhZ2VDYWNoZSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoIWRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpICYm
ICFkb2N1bWVudC0+aXNYSFRNTERvY3VtZW50KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgY29sbGVjdE5vbkVtcHR5TGVhZlJlbmRlckJsb2NrRmxvd3MoKmRvY3VtZW50LT5yZW5k
ZXJWaWV3KCksIGxlYWZSZW5kZXJlcnMpOworICAgIH0KK30KKwordm9pZCB0b2dnbGVTaW1wbGVM
aW5lTGF5b3V0KCkKK3sKKyAgICBmb3IgKGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERv
Y3VtZW50cygpKSB7CisgICAgICAgIGF1dG8mIHNldHRpbmdzID0gZG9jdW1lbnQtPm11dGFibGVT
ZXR0aW5ncygpOworICAgICAgICBzZXR0aW5ncy5zZXRTaW1wbGVMaW5lTGF5b3V0RW5hYmxlZCgh
c2V0dGluZ3Muc2ltcGxlTGluZUxheW91dEVuYWJsZWQoKSk7CisgICAgfQorfQorCit2b2lkIHBy
aW50U2ltcGxlTGluZUxheW91dEJsb2NrTGlzdCgpCit7CisgICAgSGFzaFNldDxjb25zdCBSZW5k
ZXJCbG9ja0Zsb3cqPiBsZWFmUmVuZGVyZXJzOworICAgIGNvbGxlY3ROb25FbXB0eUxlYWZSZW5k
ZXJCbG9ja0Zsb3dzRm9yQ3VycmVudFBhZ2UobGVhZlJlbmRlcmVycyk7CisgICAgaWYgKCFsZWFm
UmVuZGVyZXJzLnNpemUoKSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIk5vIHRleHQgZm91bmQg
aW4gdGhpcyBkb2N1bWVudFxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgVGV4dFN0
cmVhbSBzdHJlYW07CisgICAgc3RyZWFtIDw8ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiI7CisgICAgZm9yIChjb25zdCBhdXRvKiBmbG93IDog
bGVhZlJlbmRlcmVycykgeworICAgICAgICBhdXRvIHJlYXNvbiA9IGNhblVzZUZvcldpdGhSZWFz
b24oKmZsb3csIEluY2x1ZGVSZWFzb25zOjpBbGwpOworICAgICAgICBpZiAocmVhc29uID09IE5v
UmVhc29uKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHVuc2lnbmVkIHByaW50ZWRM
ZW5ndGggPSAzMDsKKyAgICAgICAgc3RyZWFtIDw8ICJcIiI7CisgICAgICAgIHByaW50VGV4dEZv
clN1YnRyZWUoKmZsb3csIHByaW50ZWRMZW5ndGgsIHN0cmVhbSk7CisgICAgICAgIGZvciAoO3By
aW50ZWRMZW5ndGggPiAwOyAtLXByaW50ZWRMZW5ndGgpCisgICAgICAgICAgICBzdHJlYW0gPDwg
IiAiOworICAgICAgICBzdHJlYW0gPDwgIlwiKCIgPDwgdGV4dExlbmd0aEZvclN1YnRyZWUoKmZs
b3cpIDw8ICIpOiI7CisgICAgICAgIHByaW50UmVhc29ucyhyZWFzb24sIHN0cmVhbSk7CisgICAg
ICAgIHN0cmVhbSA8PCAiXG4iOworICAgIH0KKyAgICBzdHJlYW0gPDwgIi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIjsKKyAgICBXVEZMb2dBbHdh
eXMoIiVzIiwgc3RyZWFtLnJlbGVhc2UoKS51dGY4KCkuZGF0YSgpKTsKK30KKwordm9pZCBwcmlu
dFNpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZSgpCit7CisgICAgSGFzaFNldDxjb25zdCBSZW5kZXJC
bG9ja0Zsb3cqPiBsZWFmUmVuZGVyZXJzOworICAgIGNvbGxlY3ROb25FbXB0eUxlYWZSZW5kZXJC
bG9ja0Zsb3dzRm9yQ3VycmVudFBhZ2UobGVhZlJlbmRlcmVycyk7CisgICAgaWYgKCFsZWFmUmVu
ZGVyZXJzLnNpemUoKSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIk5vIHRleHQgZm91bmQgaW4g
dGhpcyBkb2N1bWVudFxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgVGV4dFN0cmVh
bSBzdHJlYW07CisgICAgSGFzaE1hcDxBdm9pZGFuY2VSZWFzb24sIHVuc2lnbmVkPiBmbG93U3Rh
dGlzdGljczsKKyAgICB1bnNpZ25lZCB0ZXh0TGVuZ3RoID0gMDsKKyAgICB1bnNpZ25lZCB1bnN1
cHBvcnRlZFRleHRMZW5ndGggPSAwOworICAgIHVuc2lnbmVkIG51bWJlck9mVW5zdXBwb3J0ZWRM
ZWFmQmxvY2tzID0gMDsKKyAgICB1bnNpZ25lZCBzdXBwb3J0ZWRCdXRGb3JjZWRUb0xpbmVMYXlv
dXRUZXh0TGVuZ3RoID0gMDsKKyAgICB1bnNpZ25lZCBudW1iZXJPZlN1cHBvcnRlZEJ1dEZvcmNl
ZFRvTGluZUxheW91dExlYWZCbG9ja3MgPSAwOworICAgIGZvciAoY29uc3QgYXV0byogZmxvdyA6
IGxlYWZSZW5kZXJlcnMpIHsKKyAgICAgICAgYXV0byBmbG93TGVuZ3RoID0gdGV4dExlbmd0aEZv
clN1YnRyZWUoKmZsb3cpOworICAgICAgICB0ZXh0TGVuZ3RoICs9IGZsb3dMZW5ndGg7CisgICAg
ICAgIGF1dG8gcmVhc29ucyA9IGNhblVzZUZvcldpdGhSZWFzb24oKmZsb3csIEluY2x1ZGVSZWFz
b25zOjpBbGwpOworICAgICAgICBpZiAocmVhc29ucyA9PSBOb1JlYXNvbikgeworICAgICAgICAg
ICAgaWYgKGZsb3ctPmxpbmVMYXlvdXRQYXRoKCkgPT0gUmVuZGVyQmxvY2tGbG93OjpGb3JjZUxp
bmVCb3hlc1BhdGgpIHsKKyAgICAgICAgICAgICAgICBzdXBwb3J0ZWRCdXRGb3JjZWRUb0xpbmVM
YXlvdXRUZXh0TGVuZ3RoICs9IGZsb3dMZW5ndGg7CisgICAgICAgICAgICAgICAgKytudW1iZXJP
ZlN1cHBvcnRlZEJ1dEZvcmNlZFRvTGluZUxheW91dExlYWZCbG9ja3M7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICArK251bWJlck9mVW5z
dXBwb3J0ZWRMZWFmQmxvY2tzOworICAgICAgICB1bnN1cHBvcnRlZFRleHRMZW5ndGggKz0gZmxv
d0xlbmd0aDsKKyAgICAgICAgZm9yIChhdXRvIHJlYXNvbkl0ZW0gPSBFbmRPZlJlYXNvbnMgPj4g
MTsgcmVhc29uSXRlbSAhPSBOb1JlYXNvbjsgcmVhc29uSXRlbSA+Pj0gMSkgeworICAgICAgICAg
ICAgaWYgKCEocmVhc29ucyAmIHJlYXNvbkl0ZW0pKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBmbG93U3RhdGlzdGljcy5hZGQocmVhc29uSXRl
bSwgZmxvd0xlbmd0aCk7CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAg
ICAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgKz0gZmxvd0xlbmd0aDsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBzdHJlYW0gPDwgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIjsKKyAgICBzdHJlYW0gPDwgIk51bWJlciBvZiBibG9j
a3M6IHRvdGFsKCIgPDwgIGxlYWZSZW5kZXJlcnMuc2l6ZSgpIDw8ICIpIG5vbi1zaW1wbGUoIiA8
PCBudW1iZXJPZlVuc3VwcG9ydGVkTGVhZkJsb2NrcyA8PCAiKVxuQ29udGVudCBsZW5ndGg6IHRv
dGFsKCIgPDwKKyAgICAgICAgdGV4dExlbmd0aCA8PCAiKSBub24tc2ltcGxlKCIgPDwgdW5zdXBw
b3J0ZWRUZXh0TGVuZ3RoIDw8ICIpXG4iOworICAgIGZvciAoY29uc3QgYXV0byByZWFzb25FbnRy
eSA6IGZsb3dTdGF0aXN0aWNzKSB7CisgICAgICAgIHByaW50UmVhc29uKHJlYXNvbkVudHJ5Lmtl
eSwgc3RyZWFtKTsKKyAgICAgICAgc3RyZWFtIDw8ICI6ICIgPDwgKGZsb2F0KXJlYXNvbkVudHJ5
LnZhbHVlIC8gKGZsb2F0KXRleHRMZW5ndGggKiAxMDAgPDwgIiVcbiI7CisgICAgfQorICAgIGlm
IChzdXBwb3J0ZWRCdXRGb3JjZWRUb0xpbmVMYXlvdXRUZXh0TGVuZ3RoKSB7CisgICAgICAgIHN0
cmVhbSA8PCAiU2ltcGxlIGxpbmUgbGF5b3V0IHBvdGVudGlhbCBjb3ZlcmFnZTogIiA8PCAoZmxv
YXQpKHRleHRMZW5ndGggLSB1bnN1cHBvcnRlZFRleHRMZW5ndGgpIC8gKGZsb2F0KXRleHRMZW5n
dGggKiAxMDAgPDwgIiVcblxuIjsKKyAgICAgICAgc3RyZWFtIDw8ICJTaW1wbGUgbGluZSBsYXlv
dXQgYWN0dWFsIGNvdmVyYWdlOiAiIDw8IChmbG9hdCkodGV4dExlbmd0aCAtIHVuc3VwcG9ydGVk
VGV4dExlbmd0aCAtIHN1cHBvcnRlZEJ1dEZvcmNlZFRvTGluZUxheW91dFRleHRMZW5ndGgpIC8g
KGZsb2F0KXRleHRMZW5ndGggKiAxMDAgPDwgIiVcbkZvcmNlZCBsaW5lIGxheW91dCBibG9ja3M6
ICIgPDwgbnVtYmVyT2ZTdXBwb3J0ZWRCdXRGb3JjZWRUb0xpbmVMYXlvdXRMZWFmQmxvY2tzIDw8
ICIgY29udGVudCBsZW5ndGg6ICIgPDwgc3VwcG9ydGVkQnV0Rm9yY2VkVG9MaW5lTGF5b3V0VGV4
dExlbmd0aCA8PCAiKCIgPDwgKGZsb2F0KXN1cHBvcnRlZEJ1dEZvcmNlZFRvTGluZUxheW91dFRl
eHRMZW5ndGggLyAoZmxvYXQpdGV4dExlbmd0aCAqIDEwMCA8PCAiJSkiOworICAgIH0gZWxzZQor
ICAgICAgICBzdHJlYW0gPDwgIlNpbXBsZSBsaW5lIGxheW91dCBjb3ZlcmFnZTogIiA8PCAoZmxv
YXQpKHRleHRMZW5ndGggLSB1bnN1cHBvcnRlZFRleHRMZW5ndGgpIC8gKGZsb2F0KXRleHRMZW5n
dGggKiAxMDAgPDwgIiUiOworICAgIHN0cmVhbSA8PCAiXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiI7CisgICAgV1RGTG9nQWx3YXlzKCIlcyIs
IHN0cmVhbS5yZWxlYXNlKCkudXRmOCgpLmRhdGEoKSk7Cit9CisjZW5kaWYKKworfQorfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRDb3ZlcmFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjY5ZDJhMTM2ZjdjODFmMWZlM2IzNTkwMDg4MzE4OGZlZThiZDhhMjIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dENvdmVyYWdlLmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgU2ltcGxlTGluZUxheW91dCB7CisKKyNp
Zm5kZWYgTkRFQlVHCit2b2lkIHByaW50U2ltcGxlTGluZUxheW91dENvdmVyYWdlKCk7Cit2b2lk
IHByaW50U2ltcGxlTGluZUxheW91dEJsb2NrTGlzdCgpOwordm9pZCB0b2dnbGVTaW1wbGVMaW5l
TGF5b3V0KCk7CisjZW5kaWYKKworZW51bSBBdm9pZGFuY2VSZWFzb25fIDogdWludDY0X3Qgewor
ICAgIEZsb3dJc0luc2lkZVJlZ2lvbiAgICAgICAgICAgICAgICAgICAgPSAxTExVICA8PCAwLAor
ICAgIEZsb3dIYXNIb3Jpem9uYWxXcml0aW5nTW9kZSAgICAgICAgICAgPSAxTExVICA8PCAxLAor
ICAgIEZsb3dIYXNPdXRsaW5lICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVICA8PCAyLAor
ICAgIEZsb3dJc1J1YnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVICA8PCAzLAor
ICAgIEZsb3dJc1BhZ2luYXRlZCAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVICA8PCA0LAor
ICAgIEZsb3dIYXNUZXh0T3ZlcmZsb3cgICAgICAgICAgICAgICAgICAgPSAxTExVICA8PCA1LAor
ICAgIEZsb3dJc0RlcHJpY2F0ZWRGbGV4Qm94ICAgICAgICAgICAgICAgPSAxTExVICA8PCA2LAor
ICAgIEZsb3dQYXJlbnRJc1BsYWNlaG9sZGVyRWxlbWVudCAgICAgICAgPSAxTExVICA8PCA3LAor
ICAgIEZsb3dQYXJlbnRJc1RleHRBcmVhV2l0aFdyYXBwaW5nICAgICAgPSAxTExVICA8PCA4LAor
ICAgIEZsb3dIYXNOb25TdXBwb3J0ZWRDaGlsZCAgICAgICAgICAgICAgPSAxTExVICA8PCA5LAor
ICAgIEZsb3dIYXNVbnN1cHBvcnRlZEZsb2F0ICAgICAgICAgICAgICAgPSAxTExVICA8PCAxMCwK
KyAgICBGbG93SGFzVW5zdXBwb3J0ZWRVbmRlcmxpbmVEZWNvcmF0aW9uID0gMUxMVSAgPDwgMTEs
CisgICAgRmxvd0hhc0p1c3RpZmllZE5vbkxhdGluVGV4dCAgICAgICAgICA9IDFMTFUgIDw8IDEy
LAorICAgIEZsb3dIYXNPdmVyZmxvd05vdFZpc2libGUgICAgICAgICAgICAgPSAxTExVICA8PCAx
MywKKyAgICBGbG93SGFzV2ViS2l0TkJTUE1vZGUgICAgICAgICAgICAgICAgID0gMUxMVSAgPDwg
MTQsCisgICAgRmxvd0lzTm90TFRSICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8
IDE1LAorICAgIEZsb3dIYXNMaW5lQm94Q29udGFpblByb3BlcnR5ICAgICAgICAgPSAxTExVICA8
PCAxNiwKKyAgICBGbG93SXNOb3RUb3BUb0JvdHRvbSAgICAgICAgICAgICAgICAgID0gMUxMVSAg
PDwgMTcsCisgICAgRmxvd0hhc0xpbmVCcmVhayAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUg
IDw8IDE4LAorICAgIEZsb3dIYXNOb25Ob3JtYWxVbmljb2RlQmlEaSAgICAgICAgICAgPSAxTExV
ICA8PCAxOSwKKyAgICBGbG93SGFzUlRMT3JkZXJpbmcgICAgICAgICAgICAgICAgICAgID0gMUxM
VSAgPDwgMjAsCisgICAgRmxvd0hhc0xpbmVBbGlnbkVkZ2VzICAgICAgICAgICAgICAgICA9IDFM
TFUgIDw8IDIxLAorICAgIEZsb3dIYXNMaW5lU25hcCAgICAgICAgICAgICAgICAgICAgICAgPSAx
TExVICA8PCAyMiwKKyAgICBGbG93SGFzVGV4dEVtcGhhc2lzRmlsbE9yTWFyayAgICAgICAgID0g
MUxMVSAgPDwgMjMsCisgICAgRmxvd0hhc1RleHRTaGFkb3cgICAgICAgICAgICAgICAgICAgICA9
IDFMTFUgIDw8IDI0LAorICAgIEZsb3dIYXNQc2V1ZG9GaXJzdExpbmUgICAgICAgICAgICAgICAg
PSAxTExVICA8PCAyNSwKKyAgICBGbG93SGFzUHNldWRvRmlyc3RMZXR0ZXIgICAgICAgICAgICAg
ID0gMUxMVSAgPDwgMjYsCisgICAgRmxvd0hhc1RleHRDb21iaW5lICAgICAgICAgICAgICAgICAg
ICA9IDFMTFUgIDw8IDI3LAorICAgIEZsb3dIYXNUZXh0RmlsbEJveCAgICAgICAgICAgICAgICAg
ICAgPSAxTExVICA8PCAyOCwKKyAgICBGbG93SGFzQm9yZGVyRml0TGluZXMgICAgICAgICAgICAg
ICAgID0gMUxMVSAgPDwgMjksCisgICAgRmxvd0hhc05vbkF1dG9MaW5lQnJlYWsgICAgICAgICAg
ICAgICA9IDFMTFUgIDw8IDMwLAorICAgIEZsb3dIYXNOb25BdXRvVHJhaWxpbmdXb3JkICAgICAg
ICAgICAgPSAxTExVICA8PCAzMSwKKyAgICBGbG93SGFzU1ZHRm9udCAgICAgICAgICAgICAgICAg
ICAgICAgID0gMUxMVSAgPDwgMzIsCisgICAgRmxvd1RleHRJc0VtcHR5ICAgICAgICAgICAgICAg
ICAgICAgICA9IDFMTFUgIDw8IDMzLAorICAgIEZsb3dUZXh0SGFzU29mdEh5cGhlbiAgICAgICAg
ICAgICAgICAgPSAxTExVICA8PCAzNCwKKyAgICBGbG93VGV4dEhhc0RpcmVjdGlvbkNoYXJhY3Rl
ciAgICAgICAgID0gMUxMVSAgPDwgMzUsCisgICAgRmxvd0lzTWlzc2luZ1ByaW1hcnlGb250ICAg
ICAgICAgICAgICA9IDFMTFUgIDw8IDM2LAorICAgIEZsb3dQcmltYXJ5Rm9udElzSW5zdWZmaWNp
ZW50ICAgICAgICAgPSAxTExVICA8PCAzNywKKyAgICBGbG93VGV4dElzQ29tYmluZVRleHQgICAg
ICAgICAgICAgICAgID0gMUxMVSAgPDwgMzgsCisgICAgRmxvd1RleHRJc1JlbmRlckNvdW50ZXIg
ICAgICAgICAgICAgICA9IDFMTFUgIDw8IDM5LAorICAgIEZsb3dUZXh0SXNSZW5kZXJRdW90ZSAg
ICAgICAgICAgICAgICAgPSAxTExVICA8PCA0MCwKKyAgICBGbG93VGV4dElzVGV4dEZyYWdtZW50
ICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgNDEsCisgICAgRmxvd1RleHRJc1NWR0lubGluZVRl
eHQgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDQyLAorICAgIEZsb3dIYXNDb21wbGV4Rm9udENv
ZGVQYXRoICAgICAgICAgICAgPSAxTExVICA8PCA0MywKKyAgICBGZWF0dXJlSXNEaXNhYmxlZCAg
ICAgICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgNDQsCisgICAgRmxvd0hhc05vUGFyZW50ICAg
ICAgICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDQ1LAorICAgIEZsb3dIYXNOb0NoaWxkICAg
ICAgICAgICAgICAgICAgICAgICAgPSAxTExVICA8PCA0NiwKKyAgICBGbG93Q2hpbGRJc1NlbGVj
dGVkICAgICAgICAgICAgICAgICAgID0gMUxMVSAgPDwgNDcsCisgICAgRmxvd0hhc0hhbmdpbmdQ
dW5jdHVhdGlvbiAgICAgICAgICAgICA9IDFMTFUgIDw8IDQ4LAorICAgIEZsb3dGb250SGFzT3Zl
cmZsb3dHbHlwaCAgICAgICAgICAgICAgPSAxTExVICA8PCA0OSwKKyAgICBGbG93VGV4dEhhc1N1
cnJvZ2F0ZVBhaXIgICAgICAgICAgICAgID0gMUxMVSAgPDwgNTAsCisgICAgRW5kT2ZSZWFzb25z
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgIDw8IDUxCit9OworY29uc3QgdW5zaWdu
ZWQgTm9SZWFzb24gPSAwOworCit0eXBlZGVmIHVpbnQ2NF90IEF2b2lkYW5jZVJlYXNvbjsKK3R5
cGVkZWYgdWludDY0X3QgQXZvaWRhbmNlUmVhc29uRmxhZ3M7CisKK2VudW0gY2xhc3MgSW5jbHVk
ZVJlYXNvbnMgeyBGaXJzdCAsIEFsbCB9OworCit9Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>