<?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>58084</bug_id>
          
          <creation_ts>2011-04-07 14:52:48 -0700</creation_ts>
          <short_desc>[CG] Refactor get/putImageData routines from ImageBufferCG into a (new) ImageBufferDataCG.cpp</short_desc>
          <delta_ts>2011-04-13 16:49:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Canvas</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>58088</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Matthew Delaney">mdelaney7</reporter>
          <assigned_to name="Matthew Delaney">mdelaney7</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>mdelaney7</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>381741</commentid>
    <comment_count>0</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-04-07 14:52:48 -0700</bug_when>
    <thetext>The routines for getting/putting image data from/to the ImageBuffer&apos;s backing store are solely tied to that backing store and are also getting a bit complicated. It makes sense to create an ImageBufferData.cpp to house this logic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382408</commentid>
    <comment_count>1</comment_count>
      <attachid>88846</attachid>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-04-08 11:40:20 -0700</bug_when>
    <thetext>Created attachment 88846
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382596</commentid>
    <comment_count>2</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-04-08 15:31:02 -0700</bug_when>
    <thetext>EWS bots likely couldn&apos;t patch because of the xcodeproj file changing in the interim. I&apos;m going to try again on the EWS bots by uploading the same patch again (after an update). If they just fail again (likely), I&apos;ll give it a run this evening when traffic is hopefully slower. I&apos;m unsure of the project file changes needed for other projects and am pretty sure that the refactoring may need extra changes on other projects anyhow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382610</commentid>
    <comment_count>3</comment_count>
      <attachid>88887</attachid>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-04-08 15:45:59 -0700</bug_when>
    <thetext>Created attachment 88887
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382637</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-08 16:26:39 -0700</bug_when>
    <thetext>Attachment 88887 did not build on chromium:
Build output: http://queues.webkit.org/results/8377184</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385336</commentid>
    <comment_count>5</comment_count>
      <attachid>89485</attachid>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-04-13 16:05:03 -0700</bug_when>
    <thetext>Created attachment 89485
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385348</commentid>
    <comment_count>6</comment_count>
      <attachid>89490</attachid>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-04-13 16:29:08 -0700</bug_when>
    <thetext>Created attachment 89490
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385353</commentid>
    <comment_count>7</comment_count>
      <attachid>89490</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-04-13 16:36:09 -0700</bug_when>
    <thetext>Comment on attachment 89490
Patch

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

&gt; Source/WebCore/platform/graphics/ImageBufferData.h:44
&gt; +#if (PLATFORM(MAC) &amp;&amp; PLATFORM(CA) &amp;&amp; !defined(BUILDING_ON_TIGER) &amp;&amp; !defined(BUILDING_ON_LEOPARD) &amp;&amp; !defined(BUILDING_ON_SNOW_LEOPARD))
&gt; +#define WTF_USE_IOSURFACE_CANVAS_BACKING_STORE 1
&gt; +#endif

Shouldn&apos;t this be in ImageBufferCG.h?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385356</commentid>
    <comment_count>8</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-04-13 16:39:50 -0700</bug_when>
    <thetext>&gt; &gt; +#if (PLATFORM(MAC) &amp;&amp; PLATFORM(CA) &amp;&amp; !defined(BUILDING_ON_TIGER) &amp;&amp; !defined(BUILDING_ON_LEOPARD) &amp;&amp; !defined(BUILDING_ON_SNOW_LEOPARD))
&gt; &gt; +#define WTF_USE_IOSURFACE_CANVAS_BACKING_STORE 1
&gt; &gt; +#endif
&gt; 
&gt; Shouldn&apos;t this be in ImageBufferCG.h?

It was in ImageBuffer.h because it was need there and below. I suppose since it&apos;s more specific to CG land and it wouldn&apos;t hurt, I&apos;ll just move it to ImageBufferCG.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385358</commentid>
    <comment_count>9</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-04-13 16:49:46 -0700</bug_when>
    <thetext>Committed r83786: &lt;http://trac.webkit.org/changeset/83786&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88846</attachid>
            <date>2011-04-08 11:40:20 -0700</date>
            <delta_ts>2011-04-08 15:45:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58084-20110408114019.patch</filename>
            <type>text/plain</type>
            <size>31909</size>
            <attacher name="Matthew Delaney">mdelaney7</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzMjI2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDQtMDcgIE1hdHRoZXcg
RGVsYW5leSAgPG1kZWxhbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbQ0ddIFJlZmFjdG9yIGdldC9wdXRJbWFnZURhdGEgcm91
dGluZXMgZnJvbSBJbWFnZUJ1ZmZlckNHIGludG8gYSAobmV3KSBJbWFnZUJ1ZmZlckRhdGEuY3Bw
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODA4NAor
CisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gb3V0d2FyZCBiZWhhdmlvciBjaGFuZ2UuIEN1cnJl
bnQgdGVzdHMgc3VmZmljaWVudC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
ajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDogQ2hhbmdlIHJvdXRpbmVzIHRvIGNhbGwgdGhy
b3VnaCB0byB0aGUgSW1hZ2VCdWZmZXJEYXRhJ3Mgcm91dGluZXMuCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6cHV0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyOjpwdXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGEuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyRGF0YTo6SW1hZ2VCdWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OmhhdmVWSW1hZ2VSb3VuZGluZ0Vycm9yRml4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyRGF0YTo6Z2V0RGF0YSk6IFJlZmFjdG9yZWQgZnJvbSBJbWFnZUJ1ZmZlcidzIGdldEltYWdl
RGF0YQorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKTogUmVmYWN0
b3JlZCBmcm9tIEltYWdlQnVmZmVyJ3MgcHV0SW1hZ2VEYXRhCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhLmg6CisKIDIwMTEtMDQtMDcgIERhbiBCZXJuc3Rl
aW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXguCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAkocmV2aXNpb24gODMxODkpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTA4Nyw2ICsxMDg3LDcgQEAgU0VUKFdlYkNvcmVfU09V
UkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
Y3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJEYXRhLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0ludFJlY3QuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCShyZXZpc2lvbiA4MzE4OSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQkod29ya2luZyBjb3B5KQpAQCAtMzkzMSw2ICszOTMxLDcgQEAKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCcsCisgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhLmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmgnLApJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDgzMTg5KQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTI3ODQ4LDYgKzI3ODQ4LDI2IEBACiAJCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgog
CQkJCQk8L0ZpbGU+CiAJCQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3Jt
XGdyYXBoaWNzXGNnXEltYWdlQnVmZmVyRGF0YS5jcHAiCisJCQkJCQk+CisJCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQkJPgorCQkJCQkJCTxUb29sCisJCQkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkJLz4KKwkJCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCQlOYW1lPSJSZWxlYXNl
X0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJ
CQkJCQk+CisJCQkJCQkJPFRvb2wKKwkJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJ
CQkJCQkvPgorCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPC9GaWxlPgorCQkJCQk8
RmlsZQogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xjZ1xJbWFnZUNH
LmNwcCIKIAkJCQkJCT4KIAkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
ODMxODkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTY0NSw2ICs2NDUsNyBAQAogCQkxQ0ZBRTMyMzBBNkQ2QTNG
MDAzMjU5M0QgLyogbGlib2JqYy5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDRkFFMzIyMEE2RDZBM0YwMDMyNTkzRCAvKiBsaWJvYmpjLmR5
bGliICovOyB9OwogCQkyMEQ2MjkyNjEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDIwRDYyOTI0MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
Y3BwICovOyB9OwogCQkyMEQ2MjkyNzEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyMEQ2MjkyNTEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgg
Ki87IH07CisJCTIyNjgxMjc3MTM0RTVBQTUwMDdFNjg3QiAvKiBJbWFnZUJ1ZmZlckRhdGEuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjI2ODEyNzYx
MzRFNUFBNTAwN0U2ODdCIC8qIEltYWdlQnVmZmVyRGF0YS5jcHAgKi87IH07CiAJCTIyNzc3NzYw
MTM0NURFQTkwMDhFQTQ1NSAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyNzc3NzVGMTM0NURFQTkwMDhF
QTQ1NSAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyMjg4NUU2NDEzMDFBRTRDMDA1MjZFNjggLyog
SlNET01JbXBsZW1lbnRhdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyMjg4NUU2MzEzMDFBRTRDMDA1MjZFNjggLyogSlNET01JbXBs
ZW1lbnRhdGlvbkN1c3RvbS5jcHAgKi87IH07CiAJCTIyOEMyODQ1MTBEODI1MDAwMDlEMEQwRSAv
KiBTY3JpcHRXcmFwcGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDIyOEMyODQ0MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzA2NSw2
ICs3MDY2LDcgQEAKIAkJMUNGQUUzMjIwQTZENkEzRjAwMzI1OTNEIC8qIGxpYm9iamMuZHlsaWIg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGls
ZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYm9iamMuZHlsaWI7IHBhdGggPSAvdXNyL2xpYi9s
aWJvYmpjLmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQkyMEQ2MjkyNDEy
NTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIwRDYyOTI1MTI1MzY5MEIwMDA4MTU0MyAv
KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTIyNjgxMjc2MTM0RTVBQTUwMDdFNjg3QiAvKiBJbWFnZUJ1ZmZlckRhdGEuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJEYXRhLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjI3Nzc3NUYxMzQ1REVBOTAwOEVBNDU1IC8q
IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMjI4ODVFNjMxMzAxQUU0QzAwNTI2RTY4IC8qIEpTRE9NSW1wbGVtZW50YXRpb25DdXN0
b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01JbXBsZW1l
bnRhdGlvbkN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIyOEMyODQ0
MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2NyaXB0V3JhcHBhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNzYzOCw2ICsxNzY0MCw3IEBACiAJCQkJOTM0OTA3RTMxMjVCQkJDODAwN0YyM0Ew
IC8qIEdyYXBoaWNzQ29udGV4dENHLmggKi8sCiAJCQkJQTgwRDY3MDcwRTlFOURFQjAwRTQyMEYw
IC8qIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmggKi8sCiAJCQkJQjJBMTBCOTMw
QjM4MThENzAwMDk5QUE0IC8qIEltYWdlQnVmZmVyQ0cuY3BwICovLAorCQkJCTIyNjgxMjc2MTM0
RTVBQTUwMDdFNjg3QiAvKiBJbWFnZUJ1ZmZlckRhdGEuY3BwICovLAogCQkJCUJDQTk3OTE2MTIx
NUQwNTUwMDVDNDg1QyAvKiBJbWFnZUJ1ZmZlckRhdGEuaCAqLywKIAkJCQlCMjc1MzUzMDBCMDUz
ODE0MDAyQ0U2NEYgLyogSW1hZ2VDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MzEwQjA1MzgxNDAwMkNF
NjRGIC8qIEltYWdlU291cmNlQ0cuY3BwICovLApAQCAtMjU1MjYsNiArMjU1MjksNyBAQAogCQkJ
CUZEMDZERkE1MTM0QTRERUYwMDZGNUQ3RCAvKiBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFBMzE2MkUxMzRCQzMyRDAwN0M5QTRGIC8qIFdlYk5T
QXR0cmlidXRlZFN0cmluZ0V4dHJhcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIxODI3NDkzMTM0
Q0E0QzEwMEI5OEMyRCAvKiBDYWxsYmFja0Z1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTIyNjgxMjc3MTM0RTVBQTUwMDdFNjg3QiAvKiBJbWFnZUJ1ZmZlckRhdGEuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyLmgJKHJldmlzaW9uIDgzMTg5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTAgKzQxLDYgQEAKICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2lm
IChQTEFURk9STShNQUMpICYmIFBMQVRGT1JNKENBKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9U
SUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJ
TkdfT05fU05PV19MRU9QQVJEKSkKLSNkZWZpbmUgV1RGX1VTRV9JT1NVUkZBQ0VfQ0FOVkFTX0JB
Q0tJTkdfU1RPUkUgMQotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNz
IEdyYXBoaWNzQ29udGV4dDsKQEAgLTUzLDExICs0OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBJbnRQb2ludDsKICAgICBjbGFzcyBJbnRSZWN0OwogCi0gICAgZW51bSBNdWx0
aXBseSB7Ci0gICAgICAgIFByZW11bHRpcGxpZWQsCi0gICAgICAgIFVubXVsdGlwbGllZAotICAg
IH07Ci0KICAgICBlbnVtIFJlbmRlcmluZ01vZGUgewogICAgICAgICBVbmFjY2VsZXJhdGVkLAog
ICAgICAgICBBY2NlbGVyYXRlZApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAJKHJldmlzaW9uIDgzMTg5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDEwICs0Miw2IEBACiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5o
PgogI2luY2x1ZGUgPG1hdGguaD4KIAotI2lmIFVTRShBQ0NFTEVSQVRFKQotI2luY2x1ZGUgPEFj
Y2VsZXJhdGUvQWNjZWxlcmF0ZS5oPgotI2VuZGlmCi0KICNpZiBVU0UoSU9TVVJGQUNFX0NBTlZB
U19CQUNLSU5HX1NUT1JFKQogI2luY2x1ZGUgPElPU3VyZmFjZS9JT1N1cmZhY2UuaD4KICNlbmRp
ZgpAQCAtNTgsMTYgKzU0LDYgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0jaWYgVVNFKEFDQ0VMRVJBVEUpCi0vLyBUaGUgdkltYWdlIHVucHJlbXVsdGlw
bHkgcm91dGluZSBoYWQgYSByb3VuZGluZyBidWcgYmVmb3JlIDEwLjYuNyA8cmRhcjovL3Byb2Js
ZW0vODYzMTU0OD4KLXN0YXRpYyBib29sIGhhdmVWSW1hZ2VSb3VuZGluZ0Vycm9yRml4KCkKLXsK
LSAgICBTSW50MzIgdmVyc2lvbjsKLSAgICBzdGF0aWMgYm9vbCByZXN1bHQgPSAoR2VzdGFsdChn
ZXN0YWx0U3lzdGVtVmVyc2lvbiwgJnZlcnNpb24pID09IG5vRXJyICYmIHZlcnNpb24gPiAweDEw
NjYpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0jZW5kaWYKLQogI2lmIFVTRShJT1NVUkZBQ0Vf
Q0FOVkFTX0JBQ0tJTkdfU1RPUkUpCiBzdGF0aWMgY29uc3QgaW50IG1heElPU3VyZmFjZURpbWVu
c2lvbiA9IDQwOTY7CiBzdGF0aWMgY29uc3QgaW50IG1pbklPU3VyZmFjZUFyZWEgPSA1MCAqIDEw
MDsKQEAgLTExNSwxNCArMTAxLDYgQEAgc3RhdGljIHZvaWQgcmVsZWFzZUltYWdlRGF0YSh2b2lk
KiwgY29ucwogICAgIGZhc3RGcmVlKGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKTsKIH0KIAotSW1h
Z2VCdWZmZXJEYXRhOjpJbWFnZUJ1ZmZlckRhdGEoY29uc3QgSW50U2l6ZSYpCi0gICAgOiBtX2Rh
dGEoMCkKLSNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQotICAgICwgbV9z
dXJmYWNlKDApCi0jZW5kaWYKLXsKLX0KLQogSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0
IEludFNpemUmIHNpemUsIENvbG9yU3BhY2UgaW1hZ2VDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2Rl
IHJlbmRlcmluZ01vZGUsIGJvb2wmIHN1Y2Nlc3MpCiAgICAgOiBtX2RhdGEoc2l6ZSkKICAgICAs
IG1fc2l6ZShzaXplKQpAQCAtMjc3LDI1MSArMjU1LDMyIEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmNs
aXAoR3JhcGhpY3NDb250ZXh0KiAKICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0ocGxhdGZvcm1D
b250ZXh0VG9DbGlwLCAtcmVjdC54KCksIC1yZWN0LnkoKSAtIHJlY3QuaGVpZ2h0KCkpOwogfQog
Ci10ZW1wbGF0ZSA8TXVsdGlwbHkgbXVsdGlwbGllZD4KLVBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBn
ZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZmZXJEYXRhJiBp
bWFnZURhdGEsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZykK
LXsKLSAgICBSZWZQdHI8Qnl0ZUFycmF5PiByZXN1bHQgPSBCeXRlQXJyYXk6OmNyZWF0ZShyZWN0
LndpZHRoKCkgKiByZWN0LmhlaWdodCgpICogNCk7Ci0gICAgdW5zaWduZWQgY2hhciogZGF0YSA9
IHJlc3VsdC0+ZGF0YSgpOwotCi0gICAgaWYgKHJlY3QueCgpIDwgMCB8fCByZWN0LnkoKSA8IDAg
fHwgcmVjdC5tYXhYKCkgPiBzaXplLndpZHRoKCkgfHwgcmVjdC5tYXhZKCkgPiBzaXplLmhlaWdo
dCgpKQotICAgICAgICBtZW1zZXQoZGF0YSwgMCwgcmVzdWx0LT5sZW5ndGgoKSk7Ci0KLSAgICBp
bnQgb3JpZ2lueCA9IHJlY3QueCgpOwotICAgIGludCBkZXN0eCA9IDA7Ci0gICAgaWYgKG9yaWdp
bnggPCAwKSB7Ci0gICAgICAgIGRlc3R4ID0gLW9yaWdpbng7Ci0gICAgICAgIG9yaWdpbnggPSAw
OwotICAgIH0KLSAgICBpbnQgZW5keCA9IHJlY3QubWF4WCgpOwotICAgIGlmIChlbmR4ID4gc2l6
ZS53aWR0aCgpKQotICAgICAgICBlbmR4ID0gc2l6ZS53aWR0aCgpOwotICAgIGludCB3aWR0aCA9
IGVuZHggLSBvcmlnaW54OwotCi0gICAgaW50IG9yaWdpbnkgPSByZWN0LnkoKTsKLSAgICBpbnQg
ZGVzdHkgPSAwOwotICAgIGlmIChvcmlnaW55IDwgMCkgewotICAgICAgICBkZXN0eSA9IC1vcmln
aW55OwotICAgICAgICBvcmlnaW55ID0gMDsKLSAgICB9Ci0gICAgaW50IGVuZHkgPSByZWN0Lm1h
eFkoKTsKLSAgICBpZiAoZW5keSA+IHNpemUuaGVpZ2h0KCkpCi0gICAgICAgIGVuZHkgPSBzaXpl
LmhlaWdodCgpOwotICAgIGludCBoZWlnaHQgPSBlbmR5IC0gb3JpZ2lueTsKLQotICAgIGlmICh3
aWR0aCA8PSAwIHx8IGhlaWdodCA8PSAwKQotICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2Uo
KTsKLQotICAgIHVuc2lnbmVkIGRlc3RCeXRlc1BlclJvdyA9IDQgKiByZWN0LndpZHRoKCk7Ci0g
ICAgdW5zaWduZWQgY2hhciogZGVzdFJvd3MgPSBkYXRhICsgZGVzdHkgKiBkZXN0Qnl0ZXNQZXJS
b3cgKyBkZXN0eCAqIDQ7Ci0KLSAgICB1bnNpZ25lZCBzcmNCeXRlc1BlclJvdzsKLSAgICB1bnNp
Z25lZCBjaGFyKiBzcmNSb3dzOwotCi0gICAgaWYgKCFhY2NlbGVyYXRlUmVuZGVyaW5nKSB7Ci0g
ICAgICAgIHNyY0J5dGVzUGVyUm93ID0gNCAqIHNpemUud2lkdGgoKTsKLSAgICAgICAgc3JjUm93
cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGltYWdlRGF0YS5tX2RhdGEpICsg
b3JpZ2lueSAqIHNyY0J5dGVzUGVyUm93ICsgb3JpZ2lueCAqIDQ7Ci0KLSNpZiBVU0UoQUNDRUxF
UkFURSkKLSAgICAgICAgaWYgKG11bHRpcGxpZWQgPT0gVW5tdWx0aXBsaWVkICYmIGhhdmVWSW1h
Z2VSb3VuZGluZ0Vycm9yRml4KCkpIHsKLSAgICAgICAgICAgIHZJbWFnZV9CdWZmZXIgc3JjOwot
ICAgICAgICAgICAgc3JjLmhlaWdodCA9IGhlaWdodDsKLSAgICAgICAgICAgIHNyYy53aWR0aCA9
IHdpZHRoOwotICAgICAgICAgICAgc3JjLnJvd0J5dGVzID0gc3JjQnl0ZXNQZXJSb3c7Ci0gICAg
ICAgICAgICBzcmMuZGF0YSA9IHNyY1Jvd3M7Ci0KLSAgICAgICAgICAgIHZJbWFnZV9CdWZmZXIg
ZHN0OwotICAgICAgICAgICAgZHN0LmhlaWdodCA9IGhlaWdodDsKLSAgICAgICAgICAgIGRzdC53
aWR0aCA9IHdpZHRoOwotICAgICAgICAgICAgZHN0LnJvd0J5dGVzID0gZGVzdEJ5dGVzUGVyUm93
OwotICAgICAgICAgICAgZHN0LmRhdGEgPSBkZXN0Um93czsKLQotICAgICAgICAgICAgdkltYWdl
VW5wcmVtdWx0aXBseURhdGFfUkdCQTg4ODgoJnNyYywgJmRzdCwga3ZJbWFnZU5vRmxhZ3MpOwot
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7Ci0gICAgICAgIH0KLSNlbmRpZgot
ICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgKyt5KSB7Ci0gICAgICAgICAgICBm
b3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKLSAgICAgICAgICAgICAgICBpbnQgYmFz
ZXggPSB4ICogNDsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGFscGhhID0gc3JjUm93
c1tiYXNleCArIDNdOwotICAgICAgICAgICAgICAgIGlmIChtdWx0aXBsaWVkID09IFVubXVsdGlw
bGllZCAmJiBhbHBoYSkgewotICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleF0gPSAo
c3JjUm93c1tiYXNleF0gKiAyNTUpIC8gYWxwaGE7Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RS
b3dzW2Jhc2V4ICsgMV0gPSAoc3JjUm93c1tiYXNleCArIDFdICogMjU1KSAvIGFscGhhOwotICAg
ICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDJdID0gKHNyY1Jvd3NbYmFzZXggKyAy
XSAqIDI1NSkgLyBhbHBoYTsKLSAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAz
XSA9IGFscGhhOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBy
ZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oZGVzdFJvd3MgKyBiYXNleClbMF0gPSByZWludGVy
cHJldF9jYXN0PHVpbnQzMl90Kj4oc3JjUm93cyArIGJhc2V4KVswXTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHNyY1Jvd3MgKz0gc3JjQnl0ZXNQZXJSb3c7Ci0gICAgICAgICAgICBkZXN0
Um93cyArPSBkZXN0Qnl0ZXNQZXJSb3c7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotI2lmIFVT
RShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCi0gICAgICAgIElPU3VyZmFjZVJlZiBz
dXJmYWNlID0gaW1hZ2VEYXRhLm1fc3VyZmFjZS5nZXQoKTsKLSAgICAgICAgSU9TdXJmYWNlTG9j
ayhzdXJmYWNlLCBrSU9TdXJmYWNlTG9ja1JlYWRPbmx5LCAwKTsKLSAgICAgICAgc3JjQnl0ZXNQ
ZXJSb3cgPSBJT1N1cmZhY2VHZXRCeXRlc1BlclJvdyhzdXJmYWNlKTsKLSAgICAgICAgc3JjUm93
cyA9ICh1bnNpZ25lZCBjaGFyKikoSU9TdXJmYWNlR2V0QmFzZUFkZHJlc3Moc3VyZmFjZSkpICsg
b3JpZ2lueSAqIHNyY0J5dGVzUGVyUm93ICsgb3JpZ2lueCAqIDQ7Ci0gICAgICAgIAotICAgICAg
ICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgKyt5KSB7Ci0gICAgICAgICAgICBmb3IgKGlu
dCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKLSAgICAgICAgICAgICAgICBpbnQgYmFzZXggPSB4
ICogNDsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGFscGhhID0gc3JjUm93c1tiYXNl
eCArIDNdOwotICAgICAgICAgICAgICAgIGlmIChtdWx0aXBsaWVkID09IFVubXVsdGlwbGllZCAm
JiBhbHBoYSkgewotICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleF0gPSAoc3JjUm93
c1tiYXNleCArIDJdICogMjU1KSAvIGFscGhhOwotICAgICAgICAgICAgICAgICAgICBkZXN0Um93
c1tiYXNleCArIDFdID0gKHNyY1Jvd3NbYmFzZXggKyAxXSAqIDI1NSkgLyBhbHBoYTsKLSAgICAg
ICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAyXSA9IChzcmNSb3dzW2Jhc2V4XSAqIDI1
NSkgLyBhbHBoYTsKLSAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAzXSA9IGFs
cGhhOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RS
b3dzW2Jhc2V4XSA9IHNyY1Jvd3NbYmFzZXggKyAyXTsKLSAgICAgICAgICAgICAgICAgICAgZGVz
dFJvd3NbYmFzZXggKyAxXSA9IHNyY1Jvd3NbYmFzZXggKyAxXTsKLSAgICAgICAgICAgICAgICAg
ICAgZGVzdFJvd3NbYmFzZXggKyAyXSA9IHNyY1Jvd3NbYmFzZXhdOwotICAgICAgICAgICAgICAg
ICAgICBkZXN0Um93c1tiYXNleCArIDNdID0gYWxwaGE7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgc3JjUm93cyArPSBzcmNCeXRlc1BlclJvdzsKLSAgICAg
ICAgICAgIGRlc3RSb3dzICs9IGRlc3RCeXRlc1BlclJvdzsKLSAgICAgICAgfQotICAgICAgICBJ
T1N1cmZhY2VVbmxvY2soc3VyZmFjZSwga0lPU3VyZmFjZUxvY2tSZWFkT25seSwgMCk7Ci0jZWxz
ZQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbmRpZgotICAgIH0KLSAgICAKLSAg
ICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKLX0KLQogUGFzc1JlZlB0cjxCeXRlQXJyYXk+IElt
YWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCkg
Y29uc3QKIHsKICAgICBpZiAobV9hY2NlbGVyYXRlUmVuZGVyaW5nKQogICAgICAgICBDR0NvbnRl
eHRGbHVzaChjb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpKTsKLSAgICByZXR1cm4gZ2V0SW1h
Z2VEYXRhPFVubXVsdGlwbGllZD4ocmVjdCwgbV9kYXRhLCBtX3NpemUsIG1fYWNjZWxlcmF0ZVJl
bmRlcmluZyk7CisgICAgcmV0dXJuIG1fZGF0YS5nZXREYXRhKHJlY3QsIG1fc2l6ZSwgbV9hY2Nl
bGVyYXRlUmVuZGVyaW5nLCBVbm11bHRpcGxpZWQpOwogfQogCiBQYXNzUmVmUHRyPEJ5dGVBcnJh
eT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYg
cmVjdCkgY29uc3QKIHsKICAgICBpZiAobV9hY2NlbGVyYXRlUmVuZGVyaW5nKQogICAgICAgICBD
R0NvbnRleHRGbHVzaChjb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpKTsKLSAgICByZXR1cm4g
Z2V0SW1hZ2VEYXRhPFByZW11bHRpcGxpZWQ+KHJlY3QsIG1fZGF0YSwgbV9zaXplLCBtX2FjY2Vs
ZXJhdGVSZW5kZXJpbmcpOwotfQotCi10ZW1wbGF0ZSA8TXVsdGlwbHkgbXVsdGlwbGllZD4KLXZv
aWQgcHV0SW1hZ2VEYXRhKEJ5dGVBcnJheSomIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNl
U2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2lu
dCwgSW1hZ2VCdWZmZXJEYXRhJiBpbWFnZURhdGEsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wg
YWNjZWxlcmF0ZVJlbmRlcmluZykKLXsKLSAgICBBU1NFUlQoc291cmNlUmVjdC53aWR0aCgpID4g
MCk7Ci0gICAgQVNTRVJUKHNvdXJjZVJlY3QuaGVpZ2h0KCkgPiAwKTsKLQotICAgIGludCBvcmln
aW54ID0gc291cmNlUmVjdC54KCk7Ci0gICAgaW50IGRlc3R4ID0gZGVzdFBvaW50LngoKSArIHNv
dXJjZVJlY3QueCgpOwotICAgIEFTU0VSVChkZXN0eCA+PSAwKTsKLSAgICBBU1NFUlQoZGVzdHgg
PCBzaXplLndpZHRoKCkpOwotICAgIEFTU0VSVChvcmlnaW54ID49IDApOwotICAgIEFTU0VSVChv
cmlnaW54IDw9IHNvdXJjZVJlY3QubWF4WCgpKTsKLQotICAgIGludCBlbmR4ID0gZGVzdFBvaW50
LngoKSArIHNvdXJjZVJlY3QubWF4WCgpOwotICAgIEFTU0VSVChlbmR4IDw9IHNpemUud2lkdGgo
KSk7Ci0KLSAgICBpbnQgd2lkdGggPSBlbmR4IC0gZGVzdHg7Ci0KLSAgICBpbnQgb3JpZ2lueSA9
IHNvdXJjZVJlY3QueSgpOwotICAgIGludCBkZXN0eSA9IGRlc3RQb2ludC55KCkgKyBzb3VyY2VS
ZWN0LnkoKTsKLSAgICBBU1NFUlQoZGVzdHkgPj0gMCk7Ci0gICAgQVNTRVJUKGRlc3R5IDwgc2l6
ZS5oZWlnaHQoKSk7Ci0gICAgQVNTRVJUKG9yaWdpbnkgPj0gMCk7Ci0gICAgQVNTRVJUKG9yaWdp
bnkgPD0gc291cmNlUmVjdC5tYXhZKCkpOwotCi0gICAgaW50IGVuZHkgPSBkZXN0UG9pbnQueSgp
ICsgc291cmNlUmVjdC5tYXhZKCk7Ci0gICAgQVNTRVJUKGVuZHkgPD0gc2l6ZS5oZWlnaHQoKSk7
Ci0gICAgaW50IGhlaWdodCA9IGVuZHkgLSBkZXN0eTsKLQotICAgIGlmICh3aWR0aCA8PSAwIHx8
IGhlaWdodCA8PSAwKQotICAgICAgICByZXR1cm47Ci0KLSAgICB1bnNpZ25lZCBzcmNCeXRlc1Bl
clJvdyA9IDQgKiBzb3VyY2VTaXplLndpZHRoKCk7Ci0gICAgdW5zaWduZWQgY2hhciogc3JjUm93
cyA9IHNvdXJjZS0+ZGF0YSgpICsgb3JpZ2lueSAqIHNyY0J5dGVzUGVyUm93ICsgb3JpZ2lueCAq
IDQ7Ci0gICAgdW5zaWduZWQgZGVzdEJ5dGVzUGVyUm93OwotICAgIHVuc2lnbmVkIGNoYXIqIGRl
c3RSb3dzOwotCi0gICAgaWYgKCFhY2NlbGVyYXRlUmVuZGVyaW5nKSB7Ci0gICAgICAgIGRlc3RC
eXRlc1BlclJvdyA9IDQgKiBzaXplLndpZHRoKCk7Ci0gICAgICAgIGRlc3RSb3dzID0gcmVpbnRl
cnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oaW1hZ2VEYXRhLm1fZGF0YSkgKyBkZXN0eSAqIGRl
c3RCeXRlc1BlclJvdyArIGRlc3R4ICogNDsKLQotI2lmIFVTRShBQ0NFTEVSQVRFKQotICAgICAg
ICBpZiAoaGF2ZVZJbWFnZVJvdW5kaW5nRXJyb3JGaXgoKSAmJiBtdWx0aXBsaWVkID09IFVubXVs
dGlwbGllZCkgewotICAgICAgICAgICAgdkltYWdlX0J1ZmZlciBzcmM7Ci0gICAgICAgICAgICBz
cmMuaGVpZ2h0ID0gaGVpZ2h0OwotICAgICAgICAgICAgc3JjLndpZHRoID0gd2lkdGg7Ci0gICAg
ICAgICAgICBzcmMucm93Qnl0ZXMgPSBzcmNCeXRlc1BlclJvdzsKLSAgICAgICAgICAgIHNyYy5k
YXRhID0gc3JjUm93czsKLQotICAgICAgICAgICAgdkltYWdlX0J1ZmZlciBkc3Q7Ci0gICAgICAg
ICAgICBkc3QuaGVpZ2h0ID0gaGVpZ2h0OwotICAgICAgICAgICAgZHN0LndpZHRoID0gd2lkdGg7
Ci0gICAgICAgICAgICBkc3Qucm93Qnl0ZXMgPSBkZXN0Qnl0ZXNQZXJSb3c7Ci0gICAgICAgICAg
ICBkc3QuZGF0YSA9IGRlc3RSb3dzOwotCi0gICAgICAgICAgICB2SW1hZ2VQcmVtdWx0aXBseURh
dGFfUkdCQTg4ODgoJnNyYywgJmRzdCwga3ZJbWFnZU5vRmxhZ3MpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWln
aHQ7ICsreSkgewotICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7
Ci0gICAgICAgICAgICAgICAgaW50IGJhc2V4ID0geCAqIDQ7Ci0gICAgICAgICAgICAgICAgdW5z
aWduZWQgY2hhciBhbHBoYSA9IHNyY1Jvd3NbYmFzZXggKyAzXTsKLSAgICAgICAgICAgICAgICBp
ZiAobXVsdGlwbGllZCA9PSBVbm11bHRpcGxpZWQgJiYgYWxwaGEgIT0gMjU1KSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4XSA9IChzcmNSb3dzW2Jhc2V4XSAqIGFscGhhICsg
MjU0KSAvIDI1NTsKLSAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAxXSA9IChz
cmNSb3dzW2Jhc2V4ICsgMV0gKiBhbHBoYSArIDI1NCkgLyAyNTU7Ci0gICAgICAgICAgICAgICAg
ICAgIGRlc3RSb3dzW2Jhc2V4ICsgMl0gPSAoc3JjUm93c1tiYXNleCArIDJdICogYWxwaGEgKyAy
NTQpIC8gMjU1OwotICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDNdID0gYWxw
aGE7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDMyX3QqPihkZXN0Um93cyArIGJhc2V4KVswXSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDMyX3QqPihzcmNSb3dzICsgYmFzZXgpWzBdOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgZGVzdFJvd3MgKz0gZGVzdEJ5dGVzUGVyUm93OwotICAgICAgICAgICAgc3JjUm93cyAr
PSBzcmNCeXRlc1BlclJvdzsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0jaWYgVVNFKElPU1VS
RkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKLSAgICAgICAgSU9TdXJmYWNlUmVmIHN1cmZhY2Ug
PSBpbWFnZURhdGEubV9zdXJmYWNlLmdldCgpOwotICAgICAgICBJT1N1cmZhY2VMb2NrKHN1cmZh
Y2UsIDAsIDApOwotICAgICAgICBkZXN0Qnl0ZXNQZXJSb3cgPSBJT1N1cmZhY2VHZXRCeXRlc1Bl
clJvdyhzdXJmYWNlKTsKLSAgICAgICAgZGVzdFJvd3MgPSAodW5zaWduZWQgY2hhciopKElPU3Vy
ZmFjZUdldEJhc2VBZGRyZXNzKHN1cmZhY2UpKSArIGRlc3R5ICogZGVzdEJ5dGVzUGVyUm93ICsg
ZGVzdHggKiA0OwotICAgICAgICAKLSAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7
ICsreSkgewotICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7Ci0g
ICAgICAgICAgICAgICAgaW50IGJhc2V4ID0geCAqIDQ7Ci0gICAgICAgICAgICAgICAgdW5zaWdu
ZWQgY2hhciBhbHBoYSA9IHNyY1Jvd3NbYmFzZXggKyAzXTsKLSAgICAgICAgICAgICAgICBpZiAo
bXVsdGlwbGllZCA9PSBVbm11bHRpcGxpZWQgJiYgYWxwaGEgIT0gMjU1KSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4XSA9IChzcmNSb3dzW2Jhc2V4ICsgMl0gKiBhbHBoYSAr
IDI1NCkgLyAyNTU7Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMV0gPSAo
c3JjUm93c1tiYXNleCArIDFdICogYWxwaGEgKyAyNTQpIC8gMjU1OwotICAgICAgICAgICAgICAg
ICAgICBkZXN0Um93c1tiYXNleCArIDJdID0gKHNyY1Jvd3NbYmFzZXhdICogYWxwaGEgKyAyNTQp
IC8gMjU1OwotICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDNdID0gYWxwaGE7
Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3Nb
YmFzZXhdID0gc3JjUm93c1tiYXNleCArIDJdOwotICAgICAgICAgICAgICAgICAgICBkZXN0Um93
c1tiYXNleCArIDFdID0gc3JjUm93c1tiYXNleCArIDFdOwotICAgICAgICAgICAgICAgICAgICBk
ZXN0Um93c1tiYXNleCArIDJdID0gc3JjUm93c1tiYXNleF07Ci0gICAgICAgICAgICAgICAgICAg
IGRlc3RSb3dzW2Jhc2V4ICsgM10gPSBhbHBoYTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBkZXN0Um93cyArPSBkZXN0Qnl0ZXNQZXJSb3c7Ci0gICAgICAg
ICAgICBzcmNSb3dzICs9IHNyY0J5dGVzUGVyUm93OwotICAgICAgICB9Ci0gICAgICAgIElPU3Vy
ZmFjZVVubG9jayhzdXJmYWNlLCAwLCAwKTsKLSNlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotI2VuZGlmCi0gICAgfQorICAgIHJldHVybiBtX2RhdGEuZ2V0RGF0YShyZWN0LCBt
X3NpemUsIG1fYWNjZWxlcmF0ZVJlbmRlcmluZywgUHJlbXVsdGlwbGllZCk7CiB9CiAKIHZvaWQg
SW1hZ2VCdWZmZXI6OnB1dFVubXVsdGlwbGllZEltYWdlRGF0YShCeXRlQXJyYXkqIHNvdXJjZSwg
Y29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UG9pbnQmIGRlc3RQb2ludCkKIHsKICAgICBpZiAobV9hY2NlbGVyYXRlUmVuZGVyaW5n
KQogICAgICAgICBDR0NvbnRleHRGbHVzaChjb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpKTsK
LSAgICBwdXRJbWFnZURhdGE8VW5tdWx0aXBsaWVkPihzb3VyY2UsIHNvdXJjZVNpemUsIHNvdXJj
ZVJlY3QsIGRlc3RQb2ludCwgbV9kYXRhLCBtX3NpemUsIG1fYWNjZWxlcmF0ZVJlbmRlcmluZyk7
CisgICAgbV9kYXRhLnB1dERhdGEoc291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBkZXN0
UG9pbnQsIG1fc2l6ZSwgbV9hY2NlbGVyYXRlUmVuZGVyaW5nLCBVbm11bHRpcGxpZWQpOwogfQog
CiB2b2lkIEltYWdlQnVmZmVyOjpwdXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKEJ5dGVBcnJheSog
c291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQogewogICAgIGlmIChtX2FjY2VsZXJhdGVS
ZW5kZXJpbmcpCiAgICAgICAgIENHQ29udGV4dEZsdXNoKGNvbnRleHQoKS0+cGxhdGZvcm1Db250
ZXh0KCkpOwotICAgIHB1dEltYWdlRGF0YTxQcmVtdWx0aXBsaWVkPihzb3VyY2UsIHNvdXJjZVNp
emUsIHNvdXJjZVJlY3QsIGRlc3RQb2ludCwgbV9kYXRhLCBtX3NpemUsIG1fYWNjZWxlcmF0ZVJl
bmRlcmluZyk7CisgICAgbV9kYXRhLnB1dERhdGEoc291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VS
ZWN0LCBkZXN0UG9pbnQsIG1fc2l6ZSwgbV9hY2NlbGVyYXRlUmVuZGVyaW5nLCBQcmVtdWx0aXBs
aWVkKTsKIH0KIAogc3RhdGljIGlubGluZSBDRlN0cmluZ1JlZiBqcGVnVVRJKCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJEYXRhLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyRGF0YS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjc2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJEYXRh
LmgiCisKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCisjaWYgVVNFKEFDQ0VMRVJBVEUp
CisjaW5jbHVkZSA8QWNjZWxlcmF0ZS9BY2NlbGVyYXRlLmg+CisjZW5kaWYKKworI2lmIFVTRShJ
T1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCisjaW5jbHVkZSA8SU9TdXJmYWNlL0lPU3Vy
ZmFjZS5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSW1hZ2VCdWZmZXJEYXRh
OjpJbWFnZUJ1ZmZlckRhdGEoY29uc3QgSW50U2l6ZSYpCis6IG1fZGF0YSgwKQorI2lmIFVTRShJ
T1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCissIG1fc3VyZmFjZSgwKQorI2VuZGlmCit7
Cit9CisKKyNpZiBVU0UoQUNDRUxFUkFURSkKKy8vIFRoZSB2SW1hZ2UgdW5wcmVtdWx0aXBseSBy
b3V0aW5lIGhhZCBhIHJvdW5kaW5nIGJ1ZyBiZWZvcmUgMTAuNi43IDxyZGFyOi8vcHJvYmxlbS84
NjMxNTQ4Pgorc3RhdGljIGJvb2wgaGF2ZVZJbWFnZVJvdW5kaW5nRXJyb3JGaXgoKQoreworICAg
IFNJbnQzMiB2ZXJzaW9uOworICAgIHN0YXRpYyBib29sIHJlc3VsdCA9IChHZXN0YWx0KGdlc3Rh
bHRTeXN0ZW1WZXJzaW9uLCAmdmVyc2lvbikgPT0gbm9FcnIgJiYgdmVyc2lvbiA+IDB4MTA2Nik7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZgorCitQYXNzUmVmUHRyPEJ5dGVBcnJheT4g
SW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNp
emUmIHNpemUsIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZywgTXVsdGlwbHkgbXVsdGlwbGllZCkg
Y29uc3QKK3sKKyAgICBSZWZQdHI8Qnl0ZUFycmF5PiByZXN1bHQgPSBCeXRlQXJyYXk6OmNyZWF0
ZShyZWN0LndpZHRoKCkgKiByZWN0LmhlaWdodCgpICogNCk7CisgICAgdW5zaWduZWQgY2hhciog
ZGF0YSA9IHJlc3VsdC0+ZGF0YSgpOworCisgICAgaWYgKHJlY3QueCgpIDwgMCB8fCByZWN0Lnko
KSA8IDAgfHwgcmVjdC5tYXhYKCkgPiBzaXplLndpZHRoKCkgfHwgcmVjdC5tYXhZKCkgPiBzaXpl
LmhlaWdodCgpKQorICAgICAgICBtZW1zZXQoZGF0YSwgMCwgcmVzdWx0LT5sZW5ndGgoKSk7CisK
KyAgICBpbnQgb3JpZ2lueCA9IHJlY3QueCgpOworICAgIGludCBkZXN0eCA9IDA7CisgICAgaWYg
KG9yaWdpbnggPCAwKSB7CisgICAgICAgIGRlc3R4ID0gLW9yaWdpbng7CisgICAgICAgIG9yaWdp
bnggPSAwOworICAgIH0KKyAgICBpbnQgZW5keCA9IHJlY3QubWF4WCgpOworICAgIGlmIChlbmR4
ID4gc2l6ZS53aWR0aCgpKQorICAgICAgICBlbmR4ID0gc2l6ZS53aWR0aCgpOworICAgIGludCB3
aWR0aCA9IGVuZHggLSBvcmlnaW54OworCisgICAgaW50IG9yaWdpbnkgPSByZWN0LnkoKTsKKyAg
ICBpbnQgZGVzdHkgPSAwOworICAgIGlmIChvcmlnaW55IDwgMCkgeworICAgICAgICBkZXN0eSA9
IC1vcmlnaW55OworICAgICAgICBvcmlnaW55ID0gMDsKKyAgICB9CisgICAgaW50IGVuZHkgPSBy
ZWN0Lm1heFkoKTsKKyAgICBpZiAoZW5keSA+IHNpemUuaGVpZ2h0KCkpCisgICAgICAgIGVuZHkg
PSBzaXplLmhlaWdodCgpOworICAgIGludCBoZWlnaHQgPSBlbmR5IC0gb3JpZ2lueTsKKworICAg
IGlmICh3aWR0aCA8PSAwIHx8IGhlaWdodCA8PSAwKQorICAgICAgICByZXR1cm4gcmVzdWx0LnJl
bGVhc2UoKTsKKworICAgIHVuc2lnbmVkIGRlc3RCeXRlc1BlclJvdyA9IDQgKiByZWN0LndpZHRo
KCk7CisgICAgdW5zaWduZWQgY2hhciogZGVzdFJvd3MgPSBkYXRhICsgZGVzdHkgKiBkZXN0Qnl0
ZXNQZXJSb3cgKyBkZXN0eCAqIDQ7CisKKyAgICB1bnNpZ25lZCBzcmNCeXRlc1BlclJvdzsKKyAg
ICB1bnNpZ25lZCBjaGFyKiBzcmNSb3dzOworCisgICAgaWYgKCFhY2NlbGVyYXRlUmVuZGVyaW5n
KSB7CisgICAgICAgIHNyY0J5dGVzUGVyUm93ID0gNCAqIHNpemUud2lkdGgoKTsKKyAgICAgICAg
c3JjUm93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KG1fZGF0YSkgKyBvcmln
aW55ICogc3JjQnl0ZXNQZXJSb3cgKyBvcmlnaW54ICogNDsKKworI2lmIFVTRShBQ0NFTEVSQVRF
KQorICAgICAgICBpZiAobXVsdGlwbGllZCA9PSBVbm11bHRpcGxpZWQgJiYgaGF2ZVZJbWFnZVJv
dW5kaW5nRXJyb3JGaXgoKSkgeworICAgICAgICAgICAgdkltYWdlX0J1ZmZlciBzcmM7CisgICAg
ICAgICAgICBzcmMuaGVpZ2h0ID0gaGVpZ2h0OworICAgICAgICAgICAgc3JjLndpZHRoID0gd2lk
dGg7CisgICAgICAgICAgICBzcmMucm93Qnl0ZXMgPSBzcmNCeXRlc1BlclJvdzsKKyAgICAgICAg
ICAgIHNyYy5kYXRhID0gc3JjUm93czsKKworICAgICAgICAgICAgdkltYWdlX0J1ZmZlciBkc3Q7
CisgICAgICAgICAgICBkc3QuaGVpZ2h0ID0gaGVpZ2h0OworICAgICAgICAgICAgZHN0LndpZHRo
ID0gd2lkdGg7CisgICAgICAgICAgICBkc3Qucm93Qnl0ZXMgPSBkZXN0Qnl0ZXNQZXJSb3c7Cisg
ICAgICAgICAgICBkc3QuZGF0YSA9IGRlc3RSb3dzOworCisgICAgICAgICAgICB2SW1hZ2VVbnBy
ZW11bHRpcGx5RGF0YV9SR0JBODg4OCgmc3JjLCAmZHN0LCBrdkltYWdlTm9GbGFncyk7CisgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICAgICAgfQorI2VuZGlmCisgICAg
ICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsKKyAgICAgICAgICAgIGZvciAo
aW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykgeworICAgICAgICAgICAgICAgIGludCBiYXNleCA9
IHggKiA0OworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYWxwaGEgPSBzcmNSb3dzW2Jh
c2V4ICsgM107CisgICAgICAgICAgICAgICAgaWYgKG11bHRpcGxpZWQgPT0gVW5tdWx0aXBsaWVk
ICYmIGFscGhhKSB7CisgICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4XSA9IChzcmNS
b3dzW2Jhc2V4XSAqIDI1NSkgLyBhbHBoYTsKKyAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3Nb
YmFzZXggKyAxXSA9IChzcmNSb3dzW2Jhc2V4ICsgMV0gKiAyNTUpIC8gYWxwaGE7CisgICAgICAg
ICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMl0gPSAoc3JjUm93c1tiYXNleCArIDJdICog
MjU1KSAvIGFscGhhOworICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDNdID0g
YWxwaGE7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihkZXN0Um93cyArIGJhc2V4KVswXSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDMyX3QqPihzcmNSb3dzICsgYmFzZXgpWzBdOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgc3JjUm93cyArPSBzcmNCeXRlc1BlclJvdzsKKyAgICAgICAgICAgIGRlc3RSb3dz
ICs9IGRlc3RCeXRlc1BlclJvdzsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisjaWYgVVNFKElP
U1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKKyAgICAgICAgSU9TdXJmYWNlUmVmIHN1cmZh
Y2UgPSBtX3N1cmZhY2UuZ2V0KCk7CisgICAgICAgIElPU3VyZmFjZUxvY2soc3VyZmFjZSwga0lP
U3VyZmFjZUxvY2tSZWFkT25seSwgMCk7CisgICAgICAgIHNyY0J5dGVzUGVyUm93ID0gSU9TdXJm
YWNlR2V0Qnl0ZXNQZXJSb3coc3VyZmFjZSk7CisgICAgICAgIHNyY1Jvd3MgPSAodW5zaWduZWQg
Y2hhciopKElPU3VyZmFjZUdldEJhc2VBZGRyZXNzKHN1cmZhY2UpKSArIG9yaWdpbnkgKiBzcmNC
eXRlc1BlclJvdyArIG9yaWdpbnggKiA0OworCisgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwg
aGVpZ2h0OyArK3kpIHsKKyAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgr
KykgeworICAgICAgICAgICAgICAgIGludCBiYXNleCA9IHggKiA0OworICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGNoYXIgYWxwaGEgPSBzcmNSb3dzW2Jhc2V4ICsgM107CisgICAgICAgICAgICAg
ICAgaWYgKG11bHRpcGxpZWQgPT0gVW5tdWx0aXBsaWVkICYmIGFscGhhKSB7CisgICAgICAgICAg
ICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4XSA9IChzcmNSb3dzW2Jhc2V4ICsgMl0gKiAyNTUpIC8g
YWxwaGE7CisgICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMV0gPSAoc3JjUm93
c1tiYXNleCArIDFdICogMjU1KSAvIGFscGhhOworICAgICAgICAgICAgICAgICAgICBkZXN0Um93
c1tiYXNleCArIDJdID0gKHNyY1Jvd3NbYmFzZXhdICogMjU1KSAvIGFscGhhOworICAgICAgICAg
ICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDNdID0gYWxwaGE7CisgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXhdID0gc3JjUm93c1ti
YXNleCArIDJdOworICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDFdID0gc3Jj
Um93c1tiYXNleCArIDFdOworICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDJd
ID0gc3JjUm93c1tiYXNleF07CisgICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsg
M10gPSBhbHBoYTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBzcmNSb3dzICs9IHNyY0J5dGVzUGVyUm93OworICAgICAgICAgICAgZGVzdFJvd3MgKz0gZGVz
dEJ5dGVzUGVyUm93OworICAgICAgICB9CisgICAgICAgIElPU3VyZmFjZVVubG9jayhzdXJmYWNl
LCBrSU9TdXJmYWNlTG9ja1JlYWRPbmx5LCAwKTsKKyNlbHNlCisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworI2VuZGlmCisgICAgfQorICAgIAorICAgIHJldHVybiByZXN1bHQucmVsZWFz
ZSgpOworfQorCit2b2lkIEltYWdlQnVmZmVyRGF0YTo6cHV0RGF0YShCeXRlQXJyYXkqJiBzb3Vy
Y2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgYWNj
ZWxlcmF0ZVJlbmRlcmluZywgTXVsdGlwbHkgbXVsdGlwbGllZCkKK3sKKyAgICBBU1NFUlQoc291
cmNlUmVjdC53aWR0aCgpID4gMCk7CisgICAgQVNTRVJUKHNvdXJjZVJlY3QuaGVpZ2h0KCkgPiAw
KTsKKyAgICAKKyAgICBpbnQgb3JpZ2lueCA9IHNvdXJjZVJlY3QueCgpOworICAgIGludCBkZXN0
eCA9IGRlc3RQb2ludC54KCkgKyBzb3VyY2VSZWN0LngoKTsKKyAgICBBU1NFUlQoZGVzdHggPj0g
MCk7CisgICAgQVNTRVJUKGRlc3R4IDwgc2l6ZS53aWR0aCgpKTsKKyAgICBBU1NFUlQob3JpZ2lu
eCA+PSAwKTsKKyAgICBBU1NFUlQob3JpZ2lueCA8PSBzb3VyY2VSZWN0Lm1heFgoKSk7CisgICAg
CisgICAgaW50IGVuZHggPSBkZXN0UG9pbnQueCgpICsgc291cmNlUmVjdC5tYXhYKCk7CisgICAg
QVNTRVJUKGVuZHggPD0gc2l6ZS53aWR0aCgpKTsKKyAgICAKKyAgICBpbnQgd2lkdGggPSBlbmR4
IC0gZGVzdHg7CisgICAgCisgICAgaW50IG9yaWdpbnkgPSBzb3VyY2VSZWN0LnkoKTsKKyAgICBp
bnQgZGVzdHkgPSBkZXN0UG9pbnQueSgpICsgc291cmNlUmVjdC55KCk7CisgICAgQVNTRVJUKGRl
c3R5ID49IDApOworICAgIEFTU0VSVChkZXN0eSA8IHNpemUuaGVpZ2h0KCkpOworICAgIEFTU0VS
VChvcmlnaW55ID49IDApOworICAgIEFTU0VSVChvcmlnaW55IDw9IHNvdXJjZVJlY3QubWF4WSgp
KTsKKyAgICAKKyAgICBpbnQgZW5keSA9IGRlc3RQb2ludC55KCkgKyBzb3VyY2VSZWN0Lm1heFko
KTsKKyAgICBBU1NFUlQoZW5keSA8PSBzaXplLmhlaWdodCgpKTsKKyAgICBpbnQgaGVpZ2h0ID0g
ZW5keSAtIGRlc3R5OworICAgIAorICAgIGlmICh3aWR0aCA8PSAwIHx8IGhlaWdodCA8PSAwKQor
ICAgICAgICByZXR1cm47CisgICAgCisgICAgdW5zaWduZWQgc3JjQnl0ZXNQZXJSb3cgPSA0ICog
c291cmNlU2l6ZS53aWR0aCgpOworICAgIHVuc2lnbmVkIGNoYXIqIHNyY1Jvd3MgPSBzb3VyY2Ut
PmRhdGEoKSArIG9yaWdpbnkgKiBzcmNCeXRlc1BlclJvdyArIG9yaWdpbnggKiA0OworICAgIHVu
c2lnbmVkIGRlc3RCeXRlc1BlclJvdzsKKyAgICB1bnNpZ25lZCBjaGFyKiBkZXN0Um93czsKKyAg
ICAKKyAgICBpZiAoIWFjY2VsZXJhdGVSZW5kZXJpbmcpIHsKKyAgICAgICAgZGVzdEJ5dGVzUGVy
Um93ID0gNCAqIHNpemUud2lkdGgoKTsKKyAgICAgICAgZGVzdFJvd3MgPSByZWludGVycHJldF9j
YXN0PHVuc2lnbmVkIGNoYXIqPihtX2RhdGEpICsgZGVzdHkgKiBkZXN0Qnl0ZXNQZXJSb3cgKyBk
ZXN0eCAqIDQ7CisgICAgICAgIAorI2lmIFVTRShBQ0NFTEVSQVRFKQorICAgICAgICBpZiAoaGF2
ZVZJbWFnZVJvdW5kaW5nRXJyb3JGaXgoKSAmJiBtdWx0aXBsaWVkID09IFVubXVsdGlwbGllZCkg
eworICAgICAgICAgICAgdkltYWdlX0J1ZmZlciBzcmM7CisgICAgICAgICAgICBzcmMuaGVpZ2h0
ID0gaGVpZ2h0OworICAgICAgICAgICAgc3JjLndpZHRoID0gd2lkdGg7CisgICAgICAgICAgICBz
cmMucm93Qnl0ZXMgPSBzcmNCeXRlc1BlclJvdzsKKyAgICAgICAgICAgIHNyYy5kYXRhID0gc3Jj
Um93czsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdkltYWdlX0J1ZmZlciBkc3Q7CisgICAg
ICAgICAgICBkc3QuaGVpZ2h0ID0gaGVpZ2h0OworICAgICAgICAgICAgZHN0LndpZHRoID0gd2lk
dGg7CisgICAgICAgICAgICBkc3Qucm93Qnl0ZXMgPSBkZXN0Qnl0ZXNQZXJSb3c7CisgICAgICAg
ICAgICBkc3QuZGF0YSA9IGRlc3RSb3dzOworICAgICAgICAgICAgCisgICAgICAgICAgICB2SW1h
Z2VQcmVtdWx0aXBseURhdGFfUkdCQTg4ODgoJnNyYywgJmRzdCwga3ZJbWFnZU5vRmxhZ3MpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgZm9yIChpbnQg
eSA9IDA7IHkgPCBoZWlnaHQ7ICsreSkgeworICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHgg
PCB3aWR0aDsgeCsrKSB7CisgICAgICAgICAgICAgICAgaW50IGJhc2V4ID0geCAqIDQ7CisgICAg
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciBhbHBoYSA9IHNyY1Jvd3NbYmFzZXggKyAzXTsKKyAg
ICAgICAgICAgICAgICBpZiAobXVsdGlwbGllZCA9PSBVbm11bHRpcGxpZWQgJiYgYWxwaGEgIT0g
MjU1KSB7CisgICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4XSA9IChzcmNSb3dzW2Jh
c2V4XSAqIGFscGhhICsgMjU0KSAvIDI1NTsKKyAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3Nb
YmFzZXggKyAxXSA9IChzcmNSb3dzW2Jhc2V4ICsgMV0gKiBhbHBoYSArIDI1NCkgLyAyNTU7Cisg
ICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMl0gPSAoc3JjUm93c1tiYXNleCAr
IDJdICogYWxwaGEgKyAyNTQpIC8gMjU1OworICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1ti
YXNleCArIDNdID0gYWxwaGE7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihkZXN0Um93cyArIGJhc2V4KVswXSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihzcmNSb3dzICsgYmFzZXgpWzBdOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZGVzdFJvd3MgKz0gZGVzdEJ5dGVzUGVyUm93OworICAgICAg
ICAgICAgc3JjUm93cyArPSBzcmNCeXRlc1BlclJvdzsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7
CisjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKKyAgICAgICAgSU9TdXJm
YWNlUmVmIHN1cmZhY2UgPSBtX3N1cmZhY2UuZ2V0KCk7CisgICAgICAgIElPU3VyZmFjZUxvY2so
c3VyZmFjZSwgMCwgMCk7CisgICAgICAgIGRlc3RCeXRlc1BlclJvdyA9IElPU3VyZmFjZUdldEJ5
dGVzUGVyUm93KHN1cmZhY2UpOworICAgICAgICBkZXN0Um93cyA9ICh1bnNpZ25lZCBjaGFyKiko
SU9TdXJmYWNlR2V0QmFzZUFkZHJlc3Moc3VyZmFjZSkpICsgZGVzdHkgKiBkZXN0Qnl0ZXNQZXJS
b3cgKyBkZXN0eCAqIDQ7CisgICAgICAgIAorICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhl
aWdodDsgKyt5KSB7CisgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4Kysp
IHsKKyAgICAgICAgICAgICAgICBpbnQgYmFzZXggPSB4ICogNDsKKyAgICAgICAgICAgICAgICB1
bnNpZ25lZCBjaGFyIGFscGhhID0gc3JjUm93c1tiYXNleCArIDNdOworICAgICAgICAgICAgICAg
IGlmIChtdWx0aXBsaWVkID09IFVubXVsdGlwbGllZCAmJiBhbHBoYSAhPSAyNTUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXhdID0gKHNyY1Jvd3NbYmFzZXggKyAyXSAqIGFs
cGhhICsgMjU0KSAvIDI1NTsKKyAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAx
XSA9IChzcmNSb3dzW2Jhc2V4ICsgMV0gKiBhbHBoYSArIDI1NCkgLyAyNTU7CisgICAgICAgICAg
ICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMl0gPSAoc3JjUm93c1tiYXNleF0gKiBhbHBoYSAr
IDI1NCkgLyAyNTU7CisgICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgM10gPSBh
bHBoYTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBkZXN0
Um93c1tiYXNleF0gPSBzcmNSb3dzW2Jhc2V4ICsgMl07CisgICAgICAgICAgICAgICAgICAgIGRl
c3RSb3dzW2Jhc2V4ICsgMV0gPSBzcmNSb3dzW2Jhc2V4ICsgMV07CisgICAgICAgICAgICAgICAg
ICAgIGRlc3RSb3dzW2Jhc2V4ICsgMl0gPSBzcmNSb3dzW2Jhc2V4XTsKKyAgICAgICAgICAgICAg
ICAgICAgZGVzdFJvd3NbYmFzZXggKyAzXSA9IGFscGhhOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlc3RSb3dzICs9IGRlc3RCeXRlc1BlclJvdzsKKyAg
ICAgICAgICAgIHNyY1Jvd3MgKz0gc3JjQnl0ZXNQZXJSb3c7CisgICAgICAgIH0KKyAgICAgICAg
SU9TdXJmYWNlVW5sb2NrKHN1cmZhY2UsIDAsIDApOworI2Vsc2UKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0
YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyRGF0YS5oCShyZXZpc2lvbiA4MzE4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw5
ICsyNywxNCBAQAogI2RlZmluZSBJbWFnZUJ1ZmZlckRhdGFfaAogCiAjaW5jbHVkZSAiSW1hZ2Uu
aCIKKyNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAorI2lmIChQTEFURk9STShNQUMpICYmIFBMQVRG
T1JNKENBKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJ
TkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKSkKKyNk
ZWZpbmUgV1RGX1VTRV9JT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUgMQorI2VuZGlmCisK
IHR5cGVkZWYgc3RydWN0IF9fSU9TdXJmYWNlICpJT1N1cmZhY2VSZWY7CiB0eXBlZGVmIHN0cnVj
dCBDR0NvbG9yU3BhY2UgKkNHQ29sb3JTcGFjZVJlZjsKIHR5cGVkZWYgc3RydWN0IENHRGF0YVBy
b3ZpZGVyICpDR0RhdGFQcm92aWRlclJlZjsKQEAgLTM3LDYgKzQyLDExIEBAIHR5cGVkZWYgdWlu
dDMyX3QgQ0dCaXRtYXBJbmZvOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2VudW0gTXVsdGlw
bHkgeworICAgIFByZW11bHRpcGxpZWQsCisgICAgVW5tdWx0aXBsaWVkCit9OworCiBjbGFzcyBJ
bnRTaXplOwogCiBjbGFzcyBJbWFnZUJ1ZmZlckRhdGEgewpAQCAtNTAsNiArNjAsOSBAQCBwdWJs
aWM6CiAgICAgdW5zaWduZWQgbV9ieXRlc1BlclJvdzsKICAgICBDR0NvbG9yU3BhY2VSZWYgbV9j
b2xvclNwYWNlOwogICAgIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IG1fc3VyZmFjZTsKKworICAg
IFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBnZXREYXRhKGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRT
aXplJiwgYm9vbCBhY2NlbGVyYXRlUmVuZGVyaW5nLCBNdWx0aXBseSBtdWx0aXBsaWVkKSBjb25z
dDsKKyAgICB2b2lkIHB1dERhdGEoQnl0ZUFycmF5KiYgc291cmNlLCBjb25zdCBJbnRTaXplJiBz
b3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVz
dFBvaW50LCBjb25zdCBJbnRTaXplJiwgYm9vbCBhY2NlbGVyYXRlUmVuZGVyaW5nLCBNdWx0aXBs
eSBtdWx0aXBsaWVkKTsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88887</attachid>
            <date>2011-04-08 15:45:59 -0700</date>
            <delta_ts>2011-04-13 16:05:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58084-20110408154558.patch</filename>
            <type>text/plain</type>
            <size>31948</size>
            <attacher name="Matthew Delaney">mdelaney7</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzMzQ3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDQtMDcgIE1hdHRoZXcg
RGVsYW5leSAgPG1kZWxhbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbQ0ddIFJlZmFjdG9yIGdldC9wdXRJbWFnZURhdGEgcm91
dGluZXMgZnJvbSBJbWFnZUJ1ZmZlckNHIGludG8gYSAobmV3KSBJbWFnZUJ1ZmZlckRhdGEuY3Bw
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODA4NAor
CisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gb3V0d2FyZCBiZWhhdmlvciBjaGFuZ2UuIEN1cnJl
bnQgdGVzdHMgc3VmZmljaWVudC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
ajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDogQ2hhbmdlIHJvdXRpbmVzIHRvIGNhbGwgdGhy
b3VnaCB0byB0aGUgSW1hZ2VCdWZmZXJEYXRhJ3Mgcm91dGluZXMuCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6cHV0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyOjpwdXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGEuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyRGF0YTo6SW1hZ2VCdWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OmhhdmVWSW1hZ2VSb3VuZGluZ0Vycm9yRml4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyRGF0YTo6Z2V0RGF0YSk6IFJlZmFjdG9yZWQgZnJvbSBJbWFnZUJ1ZmZlcidzIGdldEltYWdl
RGF0YQorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKTogUmVmYWN0
b3JlZCBmcm9tIEltYWdlQnVmZmVyJ3MgcHV0SW1hZ2VEYXRhCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhLmg6CisKIDIwMTEtMDQtMDggIE1PUklUQSBIYWpp
bWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXgu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gODMzNDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTA5MSw2ICsxMDkxLDcgQEAg
U0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJEYXRh
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0aC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUu
Y3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA4MzM0NykKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMzk0NSw2ICszOTQ1LDcgQEAKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVBy
aXZhdGVDRy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJE
YXRhLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmgnLApJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlz
aW9uIDgzMzQ3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oJKHdvcmtpbmcgY29weSkKQEAgLTI4MDI4LDYgKzI4MDI4LDI2IEBACiAJCQkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgogCQkJCQk8L0ZpbGU+CiAJCQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGNnXEltYWdlQnVmZmVyRGF0YS5jcHAiCisJCQkJCQk+
CisJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxp
dGV8V2luMzIiCisJCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQkJPgorCQkJ
CQkJCTxUb29sCisJCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkJLz4KKwkJ
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
CQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJCQk+CisJCQkJCQkJPFRvb2wKKwkJCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQkJCQkvPgorCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJ
PC9GaWxlPgorCQkJCQk8RmlsZQogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1xjZ1xJbWFnZUNHLmNwcCIKIAkJCQkJCT4KIAkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gODMzNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTY0NSw2ICs2NDUsNyBAQAogCQkx
Q0ZBRTMyMzBBNkQ2QTNGMDAzMjU5M0QgLyogbGlib2JqYy5keWxpYiBpbiBGcmFtZXdvcmtzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRkFFMzIyMEE2RDZBM0YwMDMyNTkz
RCAvKiBsaWJvYmpjLmR5bGliICovOyB9OwogCQkyMEQ2MjkyNjEyNTM2OTBCMDAwODE1NDMgLyog
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDIwRDYyOTI0MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwICovOyB9OwogCQkyMEQ2MjkyNzEyNTM2OTBCMDAwODE1NDMgLyog
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyMEQ2MjkyNTEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmggKi87IH07CisJCTIyNjgxMjc3MTM0RTVBQTUwMDdFNjg3QiAvKiBJbWFn
ZUJ1ZmZlckRhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMjI2ODEyNzYxMzRFNUFBNTAwN0U2ODdCIC8qIEltYWdlQnVmZmVyRGF0YS5jcHAgKi87
IH07CiAJCTIyNzc3NzYwMTM0NURFQTkwMDhFQTQ1NSAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyNzc3
NzVGMTM0NURFQTkwMDhFQTQ1NSAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyMjg4NUU2NDEzMDFB
RTRDMDA1MjZFNjggLyogSlNET01JbXBsZW1lbnRhdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMjg4NUU2MzEzMDFBRTRDMDA1MjZF
NjggLyogSlNET01JbXBsZW1lbnRhdGlvbkN1c3RvbS5jcHAgKi87IH07CiAJCTIyOEMyODQ1MTBE
ODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyOEMyODQ0MTBEODI1MDAwMDlEMEQwRSAvKiBTY3Jp
cHRXcmFwcGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtNzA3OCw2ICs3MDc5LDcgQEAKIAkJMUNGQUUzMjIwQTZENkEzRjAwMzI1OTNEIC8q
IGxpYm9iamMuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYm9iamMuZHlsaWI7IHBh
dGggPSAvdXNyL2xpYi9saWJvYmpjLmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9
OwogCQkyMEQ2MjkyNDEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIwRDYyOTI1MTI1
MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTIyNjgxMjc2MTM0RTVBQTUwMDdFNjg3QiAvKiBJbWFnZUJ1
ZmZlckRhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VC
dWZmZXJEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjI3Nzc3NUYxMzQ1
REVBOTAwOEVBNDU1IC8qIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjI4ODVFNjMxMzAxQUU0QzAwNTI2RTY4IC8qIEpTRE9NSW1w
bGVtZW50YXRpb25DdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNET01JbXBsZW1lbnRhdGlvbkN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTIyOEMyODQ0MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0V3JhcHBhYmxlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzY3NCw2ICsxNzY3Niw3IEBACiAJCQkJOTM0OTA3RTMx
MjVCQkJDODAwN0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4dENHLmggKi8sCiAJCQkJQTgwRDY3MDcw
RTlFOURFQjAwRTQyMEYwIC8qIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmggKi8s
CiAJCQkJQjJBMTBCOTMwQjM4MThENzAwMDk5QUE0IC8qIEltYWdlQnVmZmVyQ0cuY3BwICovLAor
CQkJCTIyNjgxMjc2MTM0RTVBQTUwMDdFNjg3QiAvKiBJbWFnZUJ1ZmZlckRhdGEuY3BwICovLAog
CQkJCUJDQTk3OTE2MTIxNUQwNTUwMDVDNDg1QyAvKiBJbWFnZUJ1ZmZlckRhdGEuaCAqLywKIAkJ
CQlCMjc1MzUzMDBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VDRy5jcHAgKi8sCiAJCQkJQjI3NTM1
MzEwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNlQ0cuY3BwICovLApAQCAtMjU1OTIsNiAr
MjU1OTUsNyBAQAogCQkJCUIxRTU0NURGMTM0NjJCMEIwMDkyQTU0NSAvKiBKU05hdmlnYXRvclVz
ZXJNZWRpYUVycm9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIxRTU0NUUxMTM0NjJCMEIwMDky
QTU0NSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQjFFNTQ1RTMxMzQ2MkIwQjAwOTJBNTQ1IC8qIEpTTmF2aWdhdG9yVXNlck1lZGlh
U3VjY2Vzc0NhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTIyNjgxMjc3MTM0RTVBQTUw
MDdFNjg3QiAvKiBJbWFnZUJ1ZmZlckRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJKHJldmlzaW9u
IDgzMzQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTAgKzQxLDYgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2lmIChQTEFURk9STShNQUMpICYm
IFBMQVRGT1JNKENBKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQo
QlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJE
KSkKLSNkZWZpbmUgV1RGX1VTRV9JT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUgMQotI2Vu
ZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsK
QEAgLTUzLDExICs0OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBJbnRQb2lu
dDsKICAgICBjbGFzcyBJbnRSZWN0OwogCi0gICAgZW51bSBNdWx0aXBseSB7Ci0gICAgICAgIFBy
ZW11bHRpcGxpZWQsCi0gICAgICAgIFVubXVsdGlwbGllZAotICAgIH07Ci0KICAgICBlbnVtIFJl
bmRlcmluZ01vZGUgewogICAgICAgICBVbmFjY2VsZXJhdGVkLAogICAgICAgICBBY2NlbGVyYXRl
ZApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJD
Ry5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDRy5jcHAJKHJldmlzaW9uIDgzMzQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQy
LDEwICs0Miw2IEBACiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPG1hdGgu
aD4KIAotI2lmIFVTRShBQ0NFTEVSQVRFKQotI2luY2x1ZGUgPEFjY2VsZXJhdGUvQWNjZWxlcmF0
ZS5oPgotI2VuZGlmCi0KICNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQog
I2luY2x1ZGUgPElPU3VyZmFjZS9JT1N1cmZhY2UuaD4KICNlbmRpZgpAQCAtNTgsMTYgKzU0LDYg
QEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNF
KEFDQ0VMRVJBVEUpCi0vLyBUaGUgdkltYWdlIHVucHJlbXVsdGlwbHkgcm91dGluZSBoYWQgYSBy
b3VuZGluZyBidWcgYmVmb3JlIDEwLjYuNyA8cmRhcjovL3Byb2JsZW0vODYzMTU0OD4KLXN0YXRp
YyBib29sIGhhdmVWSW1hZ2VSb3VuZGluZ0Vycm9yRml4KCkKLXsKLSAgICBTSW50MzIgdmVyc2lv
bjsKLSAgICBzdGF0aWMgYm9vbCByZXN1bHQgPSAoR2VzdGFsdChnZXN0YWx0U3lzdGVtVmVyc2lv
biwgJnZlcnNpb24pID09IG5vRXJyICYmIHZlcnNpb24gPiAweDEwNjYpOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0jZW5kaWYKLQogI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RP
UkUpCiBzdGF0aWMgY29uc3QgaW50IG1heElPU3VyZmFjZURpbWVuc2lvbiA9IDQwOTY7CiBzdGF0
aWMgY29uc3QgaW50IG1pbklPU3VyZmFjZUFyZWEgPSA1MCAqIDEwMDsKQEAgLTExNSwxNCArMTAx
LDYgQEAgc3RhdGljIHZvaWQgcmVsZWFzZUltYWdlRGF0YSh2b2lkKiwgY29ucwogICAgIGZhc3RG
cmVlKGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKTsKIH0KIAotSW1hZ2VCdWZmZXJEYXRhOjpJbWFn
ZUJ1ZmZlckRhdGEoY29uc3QgSW50U2l6ZSYpCi0gICAgOiBtX2RhdGEoMCkKLSNpZiBVU0UoSU9T
VVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQotICAgICwgbV9zdXJmYWNlKDApCi0jZW5kaWYK
LXsKLX0KLQogSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIENv
bG9yU3BhY2UgaW1hZ2VDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGJv
b2wmIHN1Y2Nlc3MpCiAgICAgOiBtX2RhdGEoc2l6ZSkKICAgICAsIG1fc2l6ZShzaXplKQpAQCAt
Mjc3LDI1MSArMjU1LDMyIEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmNsaXAoR3JhcGhpY3NDb250ZXh0
KiAKICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0ocGxhdGZvcm1Db250ZXh0VG9DbGlwLCAtcmVj
dC54KCksIC1yZWN0LnkoKSAtIHJlY3QuaGVpZ2h0KCkpOwogfQogCi10ZW1wbGF0ZSA8TXVsdGlw
bHkgbXVsdGlwbGllZD4KLVBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBnZXRJbWFnZURhdGEoY29uc3Qg
SW50UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZmZXJEYXRhJiBpbWFnZURhdGEsIGNvbnN0IElu
dFNpemUmIHNpemUsIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZykKLXsKLSAgICBSZWZQdHI8Qnl0
ZUFycmF5PiByZXN1bHQgPSBCeXRlQXJyYXk6OmNyZWF0ZShyZWN0LndpZHRoKCkgKiByZWN0Lmhl
aWdodCgpICogNCk7Ci0gICAgdW5zaWduZWQgY2hhciogZGF0YSA9IHJlc3VsdC0+ZGF0YSgpOwot
Ci0gICAgaWYgKHJlY3QueCgpIDwgMCB8fCByZWN0LnkoKSA8IDAgfHwgcmVjdC5tYXhYKCkgPiBz
aXplLndpZHRoKCkgfHwgcmVjdC5tYXhZKCkgPiBzaXplLmhlaWdodCgpKQotICAgICAgICBtZW1z
ZXQoZGF0YSwgMCwgcmVzdWx0LT5sZW5ndGgoKSk7Ci0KLSAgICBpbnQgb3JpZ2lueCA9IHJlY3Qu
eCgpOwotICAgIGludCBkZXN0eCA9IDA7Ci0gICAgaWYgKG9yaWdpbnggPCAwKSB7Ci0gICAgICAg
IGRlc3R4ID0gLW9yaWdpbng7Ci0gICAgICAgIG9yaWdpbnggPSAwOwotICAgIH0KLSAgICBpbnQg
ZW5keCA9IHJlY3QubWF4WCgpOwotICAgIGlmIChlbmR4ID4gc2l6ZS53aWR0aCgpKQotICAgICAg
ICBlbmR4ID0gc2l6ZS53aWR0aCgpOwotICAgIGludCB3aWR0aCA9IGVuZHggLSBvcmlnaW54Owot
Ci0gICAgaW50IG9yaWdpbnkgPSByZWN0LnkoKTsKLSAgICBpbnQgZGVzdHkgPSAwOwotICAgIGlm
IChvcmlnaW55IDwgMCkgewotICAgICAgICBkZXN0eSA9IC1vcmlnaW55OwotICAgICAgICBvcmln
aW55ID0gMDsKLSAgICB9Ci0gICAgaW50IGVuZHkgPSByZWN0Lm1heFkoKTsKLSAgICBpZiAoZW5k
eSA+IHNpemUuaGVpZ2h0KCkpCi0gICAgICAgIGVuZHkgPSBzaXplLmhlaWdodCgpOwotICAgIGlu
dCBoZWlnaHQgPSBlbmR5IC0gb3JpZ2lueTsKLQotICAgIGlmICh3aWR0aCA8PSAwIHx8IGhlaWdo
dCA8PSAwKQotICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKLQotICAgIHVuc2lnbmVk
IGRlc3RCeXRlc1BlclJvdyA9IDQgKiByZWN0LndpZHRoKCk7Ci0gICAgdW5zaWduZWQgY2hhciog
ZGVzdFJvd3MgPSBkYXRhICsgZGVzdHkgKiBkZXN0Qnl0ZXNQZXJSb3cgKyBkZXN0eCAqIDQ7Ci0K
LSAgICB1bnNpZ25lZCBzcmNCeXRlc1BlclJvdzsKLSAgICB1bnNpZ25lZCBjaGFyKiBzcmNSb3dz
OwotCi0gICAgaWYgKCFhY2NlbGVyYXRlUmVuZGVyaW5nKSB7Ci0gICAgICAgIHNyY0J5dGVzUGVy
Um93ID0gNCAqIHNpemUud2lkdGgoKTsKLSAgICAgICAgc3JjUm93cyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dW5zaWduZWQgY2hhcio+KGltYWdlRGF0YS5tX2RhdGEpICsgb3JpZ2lueSAqIHNyY0J5dGVz
UGVyUm93ICsgb3JpZ2lueCAqIDQ7Ci0KLSNpZiBVU0UoQUNDRUxFUkFURSkKLSAgICAgICAgaWYg
KG11bHRpcGxpZWQgPT0gVW5tdWx0aXBsaWVkICYmIGhhdmVWSW1hZ2VSb3VuZGluZ0Vycm9yRml4
KCkpIHsKLSAgICAgICAgICAgIHZJbWFnZV9CdWZmZXIgc3JjOwotICAgICAgICAgICAgc3JjLmhl
aWdodCA9IGhlaWdodDsKLSAgICAgICAgICAgIHNyYy53aWR0aCA9IHdpZHRoOwotICAgICAgICAg
ICAgc3JjLnJvd0J5dGVzID0gc3JjQnl0ZXNQZXJSb3c7Ci0gICAgICAgICAgICBzcmMuZGF0YSA9
IHNyY1Jvd3M7Ci0KLSAgICAgICAgICAgIHZJbWFnZV9CdWZmZXIgZHN0OwotICAgICAgICAgICAg
ZHN0LmhlaWdodCA9IGhlaWdodDsKLSAgICAgICAgICAgIGRzdC53aWR0aCA9IHdpZHRoOwotICAg
ICAgICAgICAgZHN0LnJvd0J5dGVzID0gZGVzdEJ5dGVzUGVyUm93OwotICAgICAgICAgICAgZHN0
LmRhdGEgPSBkZXN0Um93czsKLQotICAgICAgICAgICAgdkltYWdlVW5wcmVtdWx0aXBseURhdGFf
UkdCQTg4ODgoJnNyYywgJmRzdCwga3ZJbWFnZU5vRmxhZ3MpOwotICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdC5yZWxlYXNlKCk7Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICBmb3IgKGludCB5
ID0gMDsgeSA8IGhlaWdodDsgKyt5KSB7Ci0gICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8
IHdpZHRoOyB4KyspIHsKLSAgICAgICAgICAgICAgICBpbnQgYmFzZXggPSB4ICogNDsKLSAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGFscGhhID0gc3JjUm93c1tiYXNleCArIDNdOwotICAg
ICAgICAgICAgICAgIGlmIChtdWx0aXBsaWVkID09IFVubXVsdGlwbGllZCAmJiBhbHBoYSkgewot
ICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleF0gPSAoc3JjUm93c1tiYXNleF0gKiAy
NTUpIC8gYWxwaGE7Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMV0gPSAo
c3JjUm93c1tiYXNleCArIDFdICogMjU1KSAvIGFscGhhOwotICAgICAgICAgICAgICAgICAgICBk
ZXN0Um93c1tiYXNleCArIDJdID0gKHNyY1Jvd3NbYmFzZXggKyAyXSAqIDI1NSkgLyBhbHBoYTsK
LSAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAzXSA9IGFscGhhOwotICAgICAg
ICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHVp
bnQzMl90Kj4oZGVzdFJvd3MgKyBiYXNleClbMF0gPSByZWludGVycHJldF9jYXN0PHVpbnQzMl90
Kj4oc3JjUm93cyArIGJhc2V4KVswXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNyY1Jv
d3MgKz0gc3JjQnl0ZXNQZXJSb3c7Ci0gICAgICAgICAgICBkZXN0Um93cyArPSBkZXN0Qnl0ZXNQ
ZXJSb3c7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFT
X0JBQ0tJTkdfU1RPUkUpCi0gICAgICAgIElPU3VyZmFjZVJlZiBzdXJmYWNlID0gaW1hZ2VEYXRh
Lm1fc3VyZmFjZS5nZXQoKTsKLSAgICAgICAgSU9TdXJmYWNlTG9jayhzdXJmYWNlLCBrSU9TdXJm
YWNlTG9ja1JlYWRPbmx5LCAwKTsKLSAgICAgICAgc3JjQnl0ZXNQZXJSb3cgPSBJT1N1cmZhY2VH
ZXRCeXRlc1BlclJvdyhzdXJmYWNlKTsKLSAgICAgICAgc3JjUm93cyA9ICh1bnNpZ25lZCBjaGFy
KikoSU9TdXJmYWNlR2V0QmFzZUFkZHJlc3Moc3VyZmFjZSkpICsgb3JpZ2lueSAqIHNyY0J5dGVz
UGVyUm93ICsgb3JpZ2lueCAqIDQ7Ci0gICAgICAgIAotICAgICAgICBmb3IgKGludCB5ID0gMDsg
eSA8IGhlaWdodDsgKyt5KSB7Ci0gICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRo
OyB4KyspIHsKLSAgICAgICAgICAgICAgICBpbnQgYmFzZXggPSB4ICogNDsKLSAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBjaGFyIGFscGhhID0gc3JjUm93c1tiYXNleCArIDNdOwotICAgICAgICAg
ICAgICAgIGlmIChtdWx0aXBsaWVkID09IFVubXVsdGlwbGllZCAmJiBhbHBoYSkgewotICAgICAg
ICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleF0gPSAoc3JjUm93c1tiYXNleCArIDJdICogMjU1
KSAvIGFscGhhOwotICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDFdID0gKHNy
Y1Jvd3NbYmFzZXggKyAxXSAqIDI1NSkgLyBhbHBoYTsKLSAgICAgICAgICAgICAgICAgICAgZGVz
dFJvd3NbYmFzZXggKyAyXSA9IChzcmNSb3dzW2Jhc2V4XSAqIDI1NSkgLyBhbHBoYTsKLSAgICAg
ICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAzXSA9IGFscGhhOwotICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4XSA9IHNyY1Jv
d3NbYmFzZXggKyAyXTsKLSAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAxXSA9
IHNyY1Jvd3NbYmFzZXggKyAxXTsKLSAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXgg
KyAyXSA9IHNyY1Jvd3NbYmFzZXhdOwotICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNl
eCArIDNdID0gYWxwaGE7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgc3JjUm93cyArPSBzcmNCeXRlc1BlclJvdzsKLSAgICAgICAgICAgIGRlc3RSb3dzICs9
IGRlc3RCeXRlc1BlclJvdzsKLSAgICAgICAgfQotICAgICAgICBJT1N1cmZhY2VVbmxvY2soc3Vy
ZmFjZSwga0lPU3VyZmFjZUxvY2tSZWFkT25seSwgMCk7Ci0jZWxzZQotICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSNlbmRpZgotICAgIH0KLSAgICAKLSAgICByZXR1cm4gcmVzdWx0LnJl
bGVhc2UoKTsKLX0KLQogUGFzc1JlZlB0cjxCeXRlQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRVbm11
bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QKIHsKICAgICBpZiAo
bV9hY2NlbGVyYXRlUmVuZGVyaW5nKQogICAgICAgICBDR0NvbnRleHRGbHVzaChjb250ZXh0KCkt
PnBsYXRmb3JtQ29udGV4dCgpKTsKLSAgICByZXR1cm4gZ2V0SW1hZ2VEYXRhPFVubXVsdGlwbGll
ZD4ocmVjdCwgbV9kYXRhLCBtX3NpemUsIG1fYWNjZWxlcmF0ZVJlbmRlcmluZyk7CisgICAgcmV0
dXJuIG1fZGF0YS5nZXREYXRhKHJlY3QsIG1fc2l6ZSwgbV9hY2NlbGVyYXRlUmVuZGVyaW5nLCBV
bm11bHRpcGxpZWQpOwogfQogCiBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gSW1hZ2VCdWZmZXI6Omdl
dFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QKIHsKICAg
ICBpZiAobV9hY2NlbGVyYXRlUmVuZGVyaW5nKQogICAgICAgICBDR0NvbnRleHRGbHVzaChjb250
ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpKTsKLSAgICByZXR1cm4gZ2V0SW1hZ2VEYXRhPFByZW11
bHRpcGxpZWQ+KHJlY3QsIG1fZGF0YSwgbV9zaXplLCBtX2FjY2VsZXJhdGVSZW5kZXJpbmcpOwot
fQotCi10ZW1wbGF0ZSA8TXVsdGlwbHkgbXVsdGlwbGllZD4KLXZvaWQgcHV0SW1hZ2VEYXRhKEJ5
dGVBcnJheSomIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgSW1hZ2VCdWZmZXJEYXRh
JiBpbWFnZURhdGEsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmlu
ZykKLXsKLSAgICBBU1NFUlQoc291cmNlUmVjdC53aWR0aCgpID4gMCk7Ci0gICAgQVNTRVJUKHNv
dXJjZVJlY3QuaGVpZ2h0KCkgPiAwKTsKLQotICAgIGludCBvcmlnaW54ID0gc291cmNlUmVjdC54
KCk7Ci0gICAgaW50IGRlc3R4ID0gZGVzdFBvaW50LngoKSArIHNvdXJjZVJlY3QueCgpOwotICAg
IEFTU0VSVChkZXN0eCA+PSAwKTsKLSAgICBBU1NFUlQoZGVzdHggPCBzaXplLndpZHRoKCkpOwot
ICAgIEFTU0VSVChvcmlnaW54ID49IDApOwotICAgIEFTU0VSVChvcmlnaW54IDw9IHNvdXJjZVJl
Y3QubWF4WCgpKTsKLQotICAgIGludCBlbmR4ID0gZGVzdFBvaW50LngoKSArIHNvdXJjZVJlY3Qu
bWF4WCgpOwotICAgIEFTU0VSVChlbmR4IDw9IHNpemUud2lkdGgoKSk7Ci0KLSAgICBpbnQgd2lk
dGggPSBlbmR4IC0gZGVzdHg7Ci0KLSAgICBpbnQgb3JpZ2lueSA9IHNvdXJjZVJlY3QueSgpOwot
ICAgIGludCBkZXN0eSA9IGRlc3RQb2ludC55KCkgKyBzb3VyY2VSZWN0LnkoKTsKLSAgICBBU1NF
UlQoZGVzdHkgPj0gMCk7Ci0gICAgQVNTRVJUKGRlc3R5IDwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAg
QVNTRVJUKG9yaWdpbnkgPj0gMCk7Ci0gICAgQVNTRVJUKG9yaWdpbnkgPD0gc291cmNlUmVjdC5t
YXhZKCkpOwotCi0gICAgaW50IGVuZHkgPSBkZXN0UG9pbnQueSgpICsgc291cmNlUmVjdC5tYXhZ
KCk7Ci0gICAgQVNTRVJUKGVuZHkgPD0gc2l6ZS5oZWlnaHQoKSk7Ci0gICAgaW50IGhlaWdodCA9
IGVuZHkgLSBkZXN0eTsKLQotICAgIGlmICh3aWR0aCA8PSAwIHx8IGhlaWdodCA8PSAwKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICB1bnNpZ25lZCBzcmNCeXRlc1BlclJvdyA9IDQgKiBzb3VyY2VT
aXplLndpZHRoKCk7Ci0gICAgdW5zaWduZWQgY2hhciogc3JjUm93cyA9IHNvdXJjZS0+ZGF0YSgp
ICsgb3JpZ2lueSAqIHNyY0J5dGVzUGVyUm93ICsgb3JpZ2lueCAqIDQ7Ci0gICAgdW5zaWduZWQg
ZGVzdEJ5dGVzUGVyUm93OwotICAgIHVuc2lnbmVkIGNoYXIqIGRlc3RSb3dzOwotCi0gICAgaWYg
KCFhY2NlbGVyYXRlUmVuZGVyaW5nKSB7Ci0gICAgICAgIGRlc3RCeXRlc1BlclJvdyA9IDQgKiBz
aXplLndpZHRoKCk7Ci0gICAgICAgIGRlc3RSb3dzID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25l
ZCBjaGFyKj4oaW1hZ2VEYXRhLm1fZGF0YSkgKyBkZXN0eSAqIGRlc3RCeXRlc1BlclJvdyArIGRl
c3R4ICogNDsKLQotI2lmIFVTRShBQ0NFTEVSQVRFKQotICAgICAgICBpZiAoaGF2ZVZJbWFnZVJv
dW5kaW5nRXJyb3JGaXgoKSAmJiBtdWx0aXBsaWVkID09IFVubXVsdGlwbGllZCkgewotICAgICAg
ICAgICAgdkltYWdlX0J1ZmZlciBzcmM7Ci0gICAgICAgICAgICBzcmMuaGVpZ2h0ID0gaGVpZ2h0
OwotICAgICAgICAgICAgc3JjLndpZHRoID0gd2lkdGg7Ci0gICAgICAgICAgICBzcmMucm93Qnl0
ZXMgPSBzcmNCeXRlc1BlclJvdzsKLSAgICAgICAgICAgIHNyYy5kYXRhID0gc3JjUm93czsKLQot
ICAgICAgICAgICAgdkltYWdlX0J1ZmZlciBkc3Q7Ci0gICAgICAgICAgICBkc3QuaGVpZ2h0ID0g
aGVpZ2h0OwotICAgICAgICAgICAgZHN0LndpZHRoID0gd2lkdGg7Ci0gICAgICAgICAgICBkc3Qu
cm93Qnl0ZXMgPSBkZXN0Qnl0ZXNQZXJSb3c7Ci0gICAgICAgICAgICBkc3QuZGF0YSA9IGRlc3RS
b3dzOwotCi0gICAgICAgICAgICB2SW1hZ2VQcmVtdWx0aXBseURhdGFfUkdCQTg4ODgoJnNyYywg
JmRzdCwga3ZJbWFnZU5vRmxhZ3MpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0j
ZW5kaWYKLSAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7ICsreSkgewotICAgICAg
ICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7Ci0gICAgICAgICAgICAgICAg
aW50IGJhc2V4ID0geCAqIDQ7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBhbHBoYSA9
IHNyY1Jvd3NbYmFzZXggKyAzXTsKLSAgICAgICAgICAgICAgICBpZiAobXVsdGlwbGllZCA9PSBV
bm11bHRpcGxpZWQgJiYgYWxwaGEgIT0gMjU1KSB7Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RS
b3dzW2Jhc2V4XSA9IChzcmNSb3dzW2Jhc2V4XSAqIGFscGhhICsgMjU0KSAvIDI1NTsKLSAgICAg
ICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAxXSA9IChzcmNSb3dzW2Jhc2V4ICsgMV0g
KiBhbHBoYSArIDI1NCkgLyAyNTU7Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4
ICsgMl0gPSAoc3JjUm93c1tiYXNleCArIDJdICogYWxwaGEgKyAyNTQpIC8gMjU1OwotICAgICAg
ICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDNdID0gYWxwaGE7Ci0gICAgICAgICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Qq
PihkZXN0Um93cyArIGJhc2V4KVswXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihzcmNS
b3dzICsgYmFzZXgpWzBdOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZGVzdFJvd3MgKz0g
ZGVzdEJ5dGVzUGVyUm93OwotICAgICAgICAgICAgc3JjUm93cyArPSBzcmNCeXRlc1BlclJvdzsK
LSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0jaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lO
R19TVE9SRSkKLSAgICAgICAgSU9TdXJmYWNlUmVmIHN1cmZhY2UgPSBpbWFnZURhdGEubV9zdXJm
YWNlLmdldCgpOwotICAgICAgICBJT1N1cmZhY2VMb2NrKHN1cmZhY2UsIDAsIDApOwotICAgICAg
ICBkZXN0Qnl0ZXNQZXJSb3cgPSBJT1N1cmZhY2VHZXRCeXRlc1BlclJvdyhzdXJmYWNlKTsKLSAg
ICAgICAgZGVzdFJvd3MgPSAodW5zaWduZWQgY2hhciopKElPU3VyZmFjZUdldEJhc2VBZGRyZXNz
KHN1cmZhY2UpKSArIGRlc3R5ICogZGVzdEJ5dGVzUGVyUm93ICsgZGVzdHggKiA0OwotICAgICAg
ICAKLSAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7ICsreSkgewotICAgICAgICAg
ICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7Ci0gICAgICAgICAgICAgICAgaW50
IGJhc2V4ID0geCAqIDQ7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBhbHBoYSA9IHNy
Y1Jvd3NbYmFzZXggKyAzXTsKLSAgICAgICAgICAgICAgICBpZiAobXVsdGlwbGllZCA9PSBVbm11
bHRpcGxpZWQgJiYgYWxwaGEgIT0gMjU1KSB7Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RSb3dz
W2Jhc2V4XSA9IChzcmNSb3dzW2Jhc2V4ICsgMl0gKiBhbHBoYSArIDI1NCkgLyAyNTU7Ci0gICAg
ICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMV0gPSAoc3JjUm93c1tiYXNleCArIDFd
ICogYWxwaGEgKyAyNTQpIC8gMjU1OwotICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNl
eCArIDJdID0gKHNyY1Jvd3NbYmFzZXhdICogYWxwaGEgKyAyNTQpIC8gMjU1OwotICAgICAgICAg
ICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDNdID0gYWxwaGE7Ci0gICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXhdID0gc3JjUm93c1ti
YXNleCArIDJdOwotICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDFdID0gc3Jj
Um93c1tiYXNleCArIDFdOwotICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDJd
ID0gc3JjUm93c1tiYXNleF07Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsg
M10gPSBhbHBoYTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBkZXN0Um93cyArPSBkZXN0Qnl0ZXNQZXJSb3c7Ci0gICAgICAgICAgICBzcmNSb3dzICs9IHNy
Y0J5dGVzUGVyUm93OwotICAgICAgICB9Ci0gICAgICAgIElPU3VyZmFjZVVubG9jayhzdXJmYWNl
LCAwLCAwKTsKLSNlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotI2VuZGlmCi0g
ICAgfQorICAgIHJldHVybiBtX2RhdGEuZ2V0RGF0YShyZWN0LCBtX3NpemUsIG1fYWNjZWxlcmF0
ZVJlbmRlcmluZywgUHJlbXVsdGlwbGllZCk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OnB1dFVu
bXVsdGlwbGllZEltYWdlRGF0YShCeXRlQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291
cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQ
b2ludCkKIHsKICAgICBpZiAobV9hY2NlbGVyYXRlUmVuZGVyaW5nKQogICAgICAgICBDR0NvbnRl
eHRGbHVzaChjb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpKTsKLSAgICBwdXRJbWFnZURhdGE8
VW5tdWx0aXBsaWVkPihzb3VyY2UsIHNvdXJjZVNpemUsIHNvdXJjZVJlY3QsIGRlc3RQb2ludCwg
bV9kYXRhLCBtX3NpemUsIG1fYWNjZWxlcmF0ZVJlbmRlcmluZyk7CisgICAgbV9kYXRhLnB1dERh
dGEoc291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBkZXN0UG9pbnQsIG1fc2l6ZSwgbV9h
Y2NlbGVyYXRlUmVuZGVyaW5nLCBVbm11bHRpcGxpZWQpOwogfQogCiB2b2lkIEltYWdlQnVmZmVy
OjpwdXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRT
aXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2lu
dCYgZGVzdFBvaW50KQogewogICAgIGlmIChtX2FjY2VsZXJhdGVSZW5kZXJpbmcpCiAgICAgICAg
IENHQ29udGV4dEZsdXNoKGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCkpOwotICAgIHB1dElt
YWdlRGF0YTxQcmVtdWx0aXBsaWVkPihzb3VyY2UsIHNvdXJjZVNpemUsIHNvdXJjZVJlY3QsIGRl
c3RQb2ludCwgbV9kYXRhLCBtX3NpemUsIG1fYWNjZWxlcmF0ZVJlbmRlcmluZyk7CisgICAgbV9k
YXRhLnB1dERhdGEoc291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBkZXN0UG9pbnQsIG1f
c2l6ZSwgbV9hY2NlbGVyYXRlUmVuZGVyaW5nLCBQcmVtdWx0aXBsaWVkKTsKIH0KIAogc3RhdGlj
IGlubGluZSBDRlN0cmluZ1JlZiBqcGVnVVRJKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
RGF0YS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjc2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJEYXRhLmgiCisKKyNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgorCisjaWYgVVNFKEFDQ0VMRVJBVEUpCisjaW5jbHVkZSA8QWNjZWxl
cmF0ZS9BY2NlbGVyYXRlLmg+CisjZW5kaWYKKworI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JB
Q0tJTkdfU1RPUkUpCisjaW5jbHVkZSA8SU9TdXJmYWNlL0lPU3VyZmFjZS5oPgorI2VuZGlmCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworSW1hZ2VCdWZmZXJEYXRhOjpJbWFnZUJ1ZmZlckRhdGEo
Y29uc3QgSW50U2l6ZSYpCis6IG1fZGF0YSgwKQorI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JB
Q0tJTkdfU1RPUkUpCissIG1fc3VyZmFjZSgwKQorI2VuZGlmCit7Cit9CisKKyNpZiBVU0UoQUND
RUxFUkFURSkKKy8vIFRoZSB2SW1hZ2UgdW5wcmVtdWx0aXBseSByb3V0aW5lIGhhZCBhIHJvdW5k
aW5nIGJ1ZyBiZWZvcmUgMTAuNi43IDxyZGFyOi8vcHJvYmxlbS84NjMxNTQ4Pgorc3RhdGljIGJv
b2wgaGF2ZVZJbWFnZVJvdW5kaW5nRXJyb3JGaXgoKQoreworICAgIFNJbnQzMiB2ZXJzaW9uOwor
ICAgIHN0YXRpYyBib29sIHJlc3VsdCA9IChHZXN0YWx0KGdlc3RhbHRTeXN0ZW1WZXJzaW9uLCAm
dmVyc2lvbikgPT0gbm9FcnIgJiYgdmVyc2lvbiA+IDB4MTA2Nik7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKyNlbmRpZgorCitQYXNzUmVmUHRyPEJ5dGVBcnJheT4gSW1hZ2VCdWZmZXJEYXRhOjpn
ZXREYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgYWNj
ZWxlcmF0ZVJlbmRlcmluZywgTXVsdGlwbHkgbXVsdGlwbGllZCkgY29uc3QKK3sKKyAgICBSZWZQ
dHI8Qnl0ZUFycmF5PiByZXN1bHQgPSBCeXRlQXJyYXk6OmNyZWF0ZShyZWN0LndpZHRoKCkgKiBy
ZWN0LmhlaWdodCgpICogNCk7CisgICAgdW5zaWduZWQgY2hhciogZGF0YSA9IHJlc3VsdC0+ZGF0
YSgpOworCisgICAgaWYgKHJlY3QueCgpIDwgMCB8fCByZWN0LnkoKSA8IDAgfHwgcmVjdC5tYXhY
KCkgPiBzaXplLndpZHRoKCkgfHwgcmVjdC5tYXhZKCkgPiBzaXplLmhlaWdodCgpKQorICAgICAg
ICBtZW1zZXQoZGF0YSwgMCwgcmVzdWx0LT5sZW5ndGgoKSk7CisKKyAgICBpbnQgb3JpZ2lueCA9
IHJlY3QueCgpOworICAgIGludCBkZXN0eCA9IDA7CisgICAgaWYgKG9yaWdpbnggPCAwKSB7Cisg
ICAgICAgIGRlc3R4ID0gLW9yaWdpbng7CisgICAgICAgIG9yaWdpbnggPSAwOworICAgIH0KKyAg
ICBpbnQgZW5keCA9IHJlY3QubWF4WCgpOworICAgIGlmIChlbmR4ID4gc2l6ZS53aWR0aCgpKQor
ICAgICAgICBlbmR4ID0gc2l6ZS53aWR0aCgpOworICAgIGludCB3aWR0aCA9IGVuZHggLSBvcmln
aW54OworCisgICAgaW50IG9yaWdpbnkgPSByZWN0LnkoKTsKKyAgICBpbnQgZGVzdHkgPSAwOwor
ICAgIGlmIChvcmlnaW55IDwgMCkgeworICAgICAgICBkZXN0eSA9IC1vcmlnaW55OworICAgICAg
ICBvcmlnaW55ID0gMDsKKyAgICB9CisgICAgaW50IGVuZHkgPSByZWN0Lm1heFkoKTsKKyAgICBp
ZiAoZW5keSA+IHNpemUuaGVpZ2h0KCkpCisgICAgICAgIGVuZHkgPSBzaXplLmhlaWdodCgpOwor
ICAgIGludCBoZWlnaHQgPSBlbmR5IC0gb3JpZ2lueTsKKworICAgIGlmICh3aWR0aCA8PSAwIHx8
IGhlaWdodCA8PSAwKQorICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKworICAgIHVu
c2lnbmVkIGRlc3RCeXRlc1BlclJvdyA9IDQgKiByZWN0LndpZHRoKCk7CisgICAgdW5zaWduZWQg
Y2hhciogZGVzdFJvd3MgPSBkYXRhICsgZGVzdHkgKiBkZXN0Qnl0ZXNQZXJSb3cgKyBkZXN0eCAq
IDQ7CisKKyAgICB1bnNpZ25lZCBzcmNCeXRlc1BlclJvdzsKKyAgICB1bnNpZ25lZCBjaGFyKiBz
cmNSb3dzOworCisgICAgaWYgKCFhY2NlbGVyYXRlUmVuZGVyaW5nKSB7CisgICAgICAgIHNyY0J5
dGVzUGVyUm93ID0gNCAqIHNpemUud2lkdGgoKTsKKyAgICAgICAgc3JjUm93cyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KG1fZGF0YSkgKyBvcmlnaW55ICogc3JjQnl0ZXNQZXJS
b3cgKyBvcmlnaW54ICogNDsKKworI2lmIFVTRShBQ0NFTEVSQVRFKQorICAgICAgICBpZiAobXVs
dGlwbGllZCA9PSBVbm11bHRpcGxpZWQgJiYgaGF2ZVZJbWFnZVJvdW5kaW5nRXJyb3JGaXgoKSkg
eworICAgICAgICAgICAgdkltYWdlX0J1ZmZlciBzcmM7CisgICAgICAgICAgICBzcmMuaGVpZ2h0
ID0gaGVpZ2h0OworICAgICAgICAgICAgc3JjLndpZHRoID0gd2lkdGg7CisgICAgICAgICAgICBz
cmMucm93Qnl0ZXMgPSBzcmNCeXRlc1BlclJvdzsKKyAgICAgICAgICAgIHNyYy5kYXRhID0gc3Jj
Um93czsKKworICAgICAgICAgICAgdkltYWdlX0J1ZmZlciBkc3Q7CisgICAgICAgICAgICBkc3Qu
aGVpZ2h0ID0gaGVpZ2h0OworICAgICAgICAgICAgZHN0LndpZHRoID0gd2lkdGg7CisgICAgICAg
ICAgICBkc3Qucm93Qnl0ZXMgPSBkZXN0Qnl0ZXNQZXJSb3c7CisgICAgICAgICAgICBkc3QuZGF0
YSA9IGRlc3RSb3dzOworCisgICAgICAgICAgICB2SW1hZ2VVbnByZW11bHRpcGx5RGF0YV9SR0JB
ODg4OCgmc3JjLCAmZHN0LCBrdkltYWdlTm9GbGFncyk7CisgICAgICAgICAgICByZXR1cm4gcmVz
dWx0LnJlbGVhc2UoKTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIGZvciAoaW50IHkgPSAw
OyB5IDwgaGVpZ2h0OyArK3kpIHsKKyAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lk
dGg7IHgrKykgeworICAgICAgICAgICAgICAgIGludCBiYXNleCA9IHggKiA0OworICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGNoYXIgYWxwaGEgPSBzcmNSb3dzW2Jhc2V4ICsgM107CisgICAgICAg
ICAgICAgICAgaWYgKG11bHRpcGxpZWQgPT0gVW5tdWx0aXBsaWVkICYmIGFscGhhKSB7CisgICAg
ICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4XSA9IChzcmNSb3dzW2Jhc2V4XSAqIDI1NSkg
LyBhbHBoYTsKKyAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAxXSA9IChzcmNS
b3dzW2Jhc2V4ICsgMV0gKiAyNTUpIC8gYWxwaGE7CisgICAgICAgICAgICAgICAgICAgIGRlc3RS
b3dzW2Jhc2V4ICsgMl0gPSAoc3JjUm93c1tiYXNleCArIDJdICogMjU1KSAvIGFscGhhOworICAg
ICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDNdID0gYWxwaGE7CisgICAgICAgICAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMy
X3QqPihkZXN0Um93cyArIGJhc2V4KVswXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihz
cmNSb3dzICsgYmFzZXgpWzBdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3JjUm93cyAr
PSBzcmNCeXRlc1BlclJvdzsKKyAgICAgICAgICAgIGRlc3RSb3dzICs9IGRlc3RCeXRlc1BlclJv
dzsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFD
S0lOR19TVE9SRSkKKyAgICAgICAgSU9TdXJmYWNlUmVmIHN1cmZhY2UgPSBtX3N1cmZhY2UuZ2V0
KCk7CisgICAgICAgIElPU3VyZmFjZUxvY2soc3VyZmFjZSwga0lPU3VyZmFjZUxvY2tSZWFkT25s
eSwgMCk7CisgICAgICAgIHNyY0J5dGVzUGVyUm93ID0gSU9TdXJmYWNlR2V0Qnl0ZXNQZXJSb3co
c3VyZmFjZSk7CisgICAgICAgIHNyY1Jvd3MgPSAodW5zaWduZWQgY2hhciopKElPU3VyZmFjZUdl
dEJhc2VBZGRyZXNzKHN1cmZhY2UpKSArIG9yaWdpbnkgKiBzcmNCeXRlc1BlclJvdyArIG9yaWdp
bnggKiA0OworCisgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsKKyAg
ICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykgeworICAgICAgICAgICAg
ICAgIGludCBiYXNleCA9IHggKiA0OworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYWxw
aGEgPSBzcmNSb3dzW2Jhc2V4ICsgM107CisgICAgICAgICAgICAgICAgaWYgKG11bHRpcGxpZWQg
PT0gVW5tdWx0aXBsaWVkICYmIGFscGhhKSB7CisgICAgICAgICAgICAgICAgICAgIGRlc3RSb3dz
W2Jhc2V4XSA9IChzcmNSb3dzW2Jhc2V4ICsgMl0gKiAyNTUpIC8gYWxwaGE7CisgICAgICAgICAg
ICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMV0gPSAoc3JjUm93c1tiYXNleCArIDFdICogMjU1
KSAvIGFscGhhOworICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDJdID0gKHNy
Y1Jvd3NbYmFzZXhdICogMjU1KSAvIGFscGhhOworICAgICAgICAgICAgICAgICAgICBkZXN0Um93
c1tiYXNleCArIDNdID0gYWxwaGE7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXhdID0gc3JjUm93c1tiYXNleCArIDJdOworICAgICAg
ICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDFdID0gc3JjUm93c1tiYXNleCArIDFdOwor
ICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDJdID0gc3JjUm93c1tiYXNleF07
CisgICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgM10gPSBhbHBoYTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzcmNSb3dzICs9IHNyY0J5
dGVzUGVyUm93OworICAgICAgICAgICAgZGVzdFJvd3MgKz0gZGVzdEJ5dGVzUGVyUm93OworICAg
ICAgICB9CisgICAgICAgIElPU3VyZmFjZVVubG9jayhzdXJmYWNlLCBrSU9TdXJmYWNlTG9ja1Jl
YWRPbmx5LCAwKTsKKyNlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlm
CisgICAgfQorICAgIAorICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOworfQorCit2b2lkIElt
YWdlQnVmZmVyRGF0YTo6cHV0RGF0YShCeXRlQXJyYXkqJiBzb3VyY2UsIGNvbnN0IEludFNpemUm
IHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBk
ZXN0UG9pbnQsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZywg
TXVsdGlwbHkgbXVsdGlwbGllZCkKK3sKKyAgICBBU1NFUlQoc291cmNlUmVjdC53aWR0aCgpID4g
MCk7CisgICAgQVNTRVJUKHNvdXJjZVJlY3QuaGVpZ2h0KCkgPiAwKTsKKyAgICAKKyAgICBpbnQg
b3JpZ2lueCA9IHNvdXJjZVJlY3QueCgpOworICAgIGludCBkZXN0eCA9IGRlc3RQb2ludC54KCkg
KyBzb3VyY2VSZWN0LngoKTsKKyAgICBBU1NFUlQoZGVzdHggPj0gMCk7CisgICAgQVNTRVJUKGRl
c3R4IDwgc2l6ZS53aWR0aCgpKTsKKyAgICBBU1NFUlQob3JpZ2lueCA+PSAwKTsKKyAgICBBU1NF
UlQob3JpZ2lueCA8PSBzb3VyY2VSZWN0Lm1heFgoKSk7CisgICAgCisgICAgaW50IGVuZHggPSBk
ZXN0UG9pbnQueCgpICsgc291cmNlUmVjdC5tYXhYKCk7CisgICAgQVNTRVJUKGVuZHggPD0gc2l6
ZS53aWR0aCgpKTsKKyAgICAKKyAgICBpbnQgd2lkdGggPSBlbmR4IC0gZGVzdHg7CisgICAgCisg
ICAgaW50IG9yaWdpbnkgPSBzb3VyY2VSZWN0LnkoKTsKKyAgICBpbnQgZGVzdHkgPSBkZXN0UG9p
bnQueSgpICsgc291cmNlUmVjdC55KCk7CisgICAgQVNTRVJUKGRlc3R5ID49IDApOworICAgIEFT
U0VSVChkZXN0eSA8IHNpemUuaGVpZ2h0KCkpOworICAgIEFTU0VSVChvcmlnaW55ID49IDApOwor
ICAgIEFTU0VSVChvcmlnaW55IDw9IHNvdXJjZVJlY3QubWF4WSgpKTsKKyAgICAKKyAgICBpbnQg
ZW5keSA9IGRlc3RQb2ludC55KCkgKyBzb3VyY2VSZWN0Lm1heFkoKTsKKyAgICBBU1NFUlQoZW5k
eSA8PSBzaXplLmhlaWdodCgpKTsKKyAgICBpbnQgaGVpZ2h0ID0gZW5keSAtIGRlc3R5OworICAg
IAorICAgIGlmICh3aWR0aCA8PSAwIHx8IGhlaWdodCA8PSAwKQorICAgICAgICByZXR1cm47Cisg
ICAgCisgICAgdW5zaWduZWQgc3JjQnl0ZXNQZXJSb3cgPSA0ICogc291cmNlU2l6ZS53aWR0aCgp
OworICAgIHVuc2lnbmVkIGNoYXIqIHNyY1Jvd3MgPSBzb3VyY2UtPmRhdGEoKSArIG9yaWdpbnkg
KiBzcmNCeXRlc1BlclJvdyArIG9yaWdpbnggKiA0OworICAgIHVuc2lnbmVkIGRlc3RCeXRlc1Bl
clJvdzsKKyAgICB1bnNpZ25lZCBjaGFyKiBkZXN0Um93czsKKyAgICAKKyAgICBpZiAoIWFjY2Vs
ZXJhdGVSZW5kZXJpbmcpIHsKKyAgICAgICAgZGVzdEJ5dGVzUGVyUm93ID0gNCAqIHNpemUud2lk
dGgoKTsKKyAgICAgICAgZGVzdFJvd3MgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIq
PihtX2RhdGEpICsgZGVzdHkgKiBkZXN0Qnl0ZXNQZXJSb3cgKyBkZXN0eCAqIDQ7CisgICAgICAg
IAorI2lmIFVTRShBQ0NFTEVSQVRFKQorICAgICAgICBpZiAoaGF2ZVZJbWFnZVJvdW5kaW5nRXJy
b3JGaXgoKSAmJiBtdWx0aXBsaWVkID09IFVubXVsdGlwbGllZCkgeworICAgICAgICAgICAgdklt
YWdlX0J1ZmZlciBzcmM7CisgICAgICAgICAgICBzcmMuaGVpZ2h0ID0gaGVpZ2h0OworICAgICAg
ICAgICAgc3JjLndpZHRoID0gd2lkdGg7CisgICAgICAgICAgICBzcmMucm93Qnl0ZXMgPSBzcmNC
eXRlc1BlclJvdzsKKyAgICAgICAgICAgIHNyYy5kYXRhID0gc3JjUm93czsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgdkltYWdlX0J1ZmZlciBkc3Q7CisgICAgICAgICAgICBkc3QuaGVpZ2h0
ID0gaGVpZ2h0OworICAgICAgICAgICAgZHN0LndpZHRoID0gd2lkdGg7CisgICAgICAgICAgICBk
c3Qucm93Qnl0ZXMgPSBkZXN0Qnl0ZXNQZXJSb3c7CisgICAgICAgICAgICBkc3QuZGF0YSA9IGRl
c3RSb3dzOworICAgICAgICAgICAgCisgICAgICAgICAgICB2SW1hZ2VQcmVtdWx0aXBseURhdGFf
UkdCQTg4ODgoJnNyYywgJmRzdCwga3ZJbWFnZU5vRmxhZ3MpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7
ICsreSkgeworICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7Cisg
ICAgICAgICAgICAgICAgaW50IGJhc2V4ID0geCAqIDQ7CisgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgY2hhciBhbHBoYSA9IHNyY1Jvd3NbYmFzZXggKyAzXTsKKyAgICAgICAgICAgICAgICBpZiAo
bXVsdGlwbGllZCA9PSBVbm11bHRpcGxpZWQgJiYgYWxwaGEgIT0gMjU1KSB7CisgICAgICAgICAg
ICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4XSA9IChzcmNSb3dzW2Jhc2V4XSAqIGFscGhhICsgMjU0
KSAvIDI1NTsKKyAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAxXSA9IChzcmNS
b3dzW2Jhc2V4ICsgMV0gKiBhbHBoYSArIDI1NCkgLyAyNTU7CisgICAgICAgICAgICAgICAgICAg
IGRlc3RSb3dzW2Jhc2V4ICsgMl0gPSAoc3JjUm93c1tiYXNleCArIDJdICogYWxwaGEgKyAyNTQp
IC8gMjU1OworICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDNdID0gYWxwaGE7
CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDMyX3QqPihkZXN0Um93cyArIGJhc2V4KVswXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDMyX3QqPihzcmNSb3dzICsgYmFzZXgpWzBdOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZGVzdFJvd3MgKz0gZGVzdEJ5dGVzUGVyUm93OworICAgICAgICAgICAgc3JjUm93cyArPSBz
cmNCeXRlc1BlclJvdzsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisjaWYgVVNFKElPU1VSRkFD
RV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKKyAgICAgICAgSU9TdXJmYWNlUmVmIHN1cmZhY2UgPSBt
X3N1cmZhY2UuZ2V0KCk7CisgICAgICAgIElPU3VyZmFjZUxvY2soc3VyZmFjZSwgMCwgMCk7Cisg
ICAgICAgIGRlc3RCeXRlc1BlclJvdyA9IElPU3VyZmFjZUdldEJ5dGVzUGVyUm93KHN1cmZhY2Up
OworICAgICAgICBkZXN0Um93cyA9ICh1bnNpZ25lZCBjaGFyKikoSU9TdXJmYWNlR2V0QmFzZUFk
ZHJlc3Moc3VyZmFjZSkpICsgZGVzdHkgKiBkZXN0Qnl0ZXNQZXJSb3cgKyBkZXN0eCAqIDQ7Cisg
ICAgICAgIAorICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgKyt5KSB7CisgICAg
ICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKKyAgICAgICAgICAgICAg
ICBpbnQgYmFzZXggPSB4ICogNDsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGFscGhh
ID0gc3JjUm93c1tiYXNleCArIDNdOworICAgICAgICAgICAgICAgIGlmIChtdWx0aXBsaWVkID09
IFVubXVsdGlwbGllZCAmJiBhbHBoYSAhPSAyNTUpIHsKKyAgICAgICAgICAgICAgICAgICAgZGVz
dFJvd3NbYmFzZXhdID0gKHNyY1Jvd3NbYmFzZXggKyAyXSAqIGFscGhhICsgMjU0KSAvIDI1NTsK
KyAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAxXSA9IChzcmNSb3dzW2Jhc2V4
ICsgMV0gKiBhbHBoYSArIDI1NCkgLyAyNTU7CisgICAgICAgICAgICAgICAgICAgIGRlc3RSb3dz
W2Jhc2V4ICsgMl0gPSAoc3JjUm93c1tiYXNleF0gKiBhbHBoYSArIDI1NCkgLyAyNTU7CisgICAg
ICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgM10gPSBhbHBoYTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleF0gPSBzcmNS
b3dzW2Jhc2V4ICsgMl07CisgICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMV0g
PSBzcmNSb3dzW2Jhc2V4ICsgMV07CisgICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4
ICsgMl0gPSBzcmNSb3dzW2Jhc2V4XTsKKyAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFz
ZXggKyAzXSA9IGFscGhhOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGRlc3RSb3dzICs9IGRlc3RCeXRlc1BlclJvdzsKKyAgICAgICAgICAgIHNyY1Jvd3Mg
Kz0gc3JjQnl0ZXNQZXJSb3c7CisgICAgICAgIH0KKyAgICAgICAgSU9TdXJmYWNlVW5sb2NrKHN1
cmZhY2UsIDAsIDApOworI2Vsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5k
aWYKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YS5oCShy
ZXZpc2lvbiA4MzM0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw5ICsyNywxNCBAQAogI2RlZmlu
ZSBJbWFnZUJ1ZmZlckRhdGFfaAogCiAjaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlIDx3dGYv
Qnl0ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KIAorI2lmIChQTEFURk9STShNQUMpICYmIFBMQVRGT1JNKENBKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYg
IWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKSkKKyNkZWZpbmUgV1RGX1VTRV9JT1NV
UkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUgMQorI2VuZGlmCisKIHR5cGVkZWYgc3RydWN0IF9f
SU9TdXJmYWNlICpJT1N1cmZhY2VSZWY7CiB0eXBlZGVmIHN0cnVjdCBDR0NvbG9yU3BhY2UgKkNH
Q29sb3JTcGFjZVJlZjsKIHR5cGVkZWYgc3RydWN0IENHRGF0YVByb3ZpZGVyICpDR0RhdGFQcm92
aWRlclJlZjsKQEAgLTM3LDYgKzQyLDExIEBAIHR5cGVkZWYgdWludDMyX3QgQ0dCaXRtYXBJbmZv
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2VudW0gTXVsdGlwbHkgeworICAgIFByZW11bHRp
cGxpZWQsCisgICAgVW5tdWx0aXBsaWVkCit9OworCiBjbGFzcyBJbnRTaXplOwogCiBjbGFzcyBJ
bWFnZUJ1ZmZlckRhdGEgewpAQCAtNTAsNiArNjAsOSBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQg
bV9ieXRlc1BlclJvdzsKICAgICBDR0NvbG9yU3BhY2VSZWYgbV9jb2xvclNwYWNlOwogICAgIFJl
dGFpblB0cjxJT1N1cmZhY2VSZWY+IG1fc3VyZmFjZTsKKworICAgIFBhc3NSZWZQdHI8Qnl0ZUFy
cmF5PiBnZXREYXRhKGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiwgYm9vbCBhY2NlbGVy
YXRlUmVuZGVyaW5nLCBNdWx0aXBseSBtdWx0aXBsaWVkKSBjb25zdDsKKyAgICB2b2lkIHB1dERh
dGEoQnl0ZUFycmF5KiYgc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBjb25zdCBJbnRT
aXplJiwgYm9vbCBhY2NlbGVyYXRlUmVuZGVyaW5nLCBNdWx0aXBseSBtdWx0aXBsaWVkKTsKIH07
CiAKIH0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89485</attachid>
            <date>2011-04-13 16:05:03 -0700</date>
            <delta_ts>2011-04-13 16:29:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58084-20110413160503.patch</filename>
            <type>text/plain</type>
            <size>70111</size>
            <attacher name="Matthew Delaney">mdelaney7</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzNzgxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMDQtMTMgIE1hdHRoZXcg
RGVsYW5leSAgPG1kZWxhbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbQ0ddIFJlZmFjdG9yIGdldC9wdXRJbWFnZURhdGEgcm91
dGluZXMgZnJvbSBJbWFnZUJ1ZmZlckNHIGludG8gYSAobmV3KSBJbWFnZUJ1ZmZlckRhdGEuY3Bw
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODA4NAor
CisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogV2ViQ29yZS5neXBp
OgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyRGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckRhdGEuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckRhdGFDYWlyby5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
OjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXI6OnB1dFVubXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6cHV0UHJlbXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckRhdGE6OkltYWdlQnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpo
YXZlVkltYWdlUm91bmRpbmdFcnJvckZpeCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
ckRhdGE6OmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpwdXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGEuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFD
Ry5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUJ1
ZmZlckRhdGEuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9JbWFnZUJ1ZmZlckRhdGFTa2lhLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2hhaWt1L0ltYWdlQnVmZmVyRGF0YS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2hhaWt1L0ltYWdlQnVmZmVyRGF0YUhhaWt1Lmg6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyRGF0YS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyRGF0YVF0Lmg6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyRGF0YS5oOiBSZW1vdmVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyRGF0YVdpbmNl
Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlQnVmZmVyRGF0
YS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlQnVmZmVy
RGF0YVd4Lmg6IEFkZGVkLgorCiAyMDExLTA0LTEzICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1l
bmFyZEBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA4Mzc3NikKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtODMxLDYgKzgzMSw3IEBACiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckRhdGEu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5oJywKQEAgLTg0OCw3ICs4NDksNyBAQAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSZW5kZXJpbmdNb2RlLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvVHlwZXNldHRpbmdGZWF0dXJlcy5oJywKLSAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGEuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0NvbG9yTWFjLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9NZWRpYVBsYXllclByb3h5LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmgnLApAQCAtMzkzMSw3ICszOTMyLDcgQEAKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGEuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJEYXRhQ2Fpcm8uaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL093blB0ckNhaXJvLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vT3duUHRyQ2Fpcm8uaCcsCkBAIC0zOTk3LDcgKzM5OTgsNyBAQAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0hhcmZidXp6U2tpYS5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0hhcmZidXp6U2tpYS5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JY29uQ2hyb21pdW0uY3Bw
JywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUJ1ZmZlckRh
dGEuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VCdWZm
ZXJEYXRhU2tpYS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9J
bWFnZUNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vSW1hZ2VDaHJvbWl1bU1hYy5tbScsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcCcsCkBAIC00MjAyLDcgKzQyMDMsNyBAQAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0dyYWRpZW50SGFpa3UuY3BwJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9HcmFwaGljc0NvbnRleHRIYWlr
dS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0ljb25IYWlrdS5j
cHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0ltYWdlQnVmZmVyRGF0
YS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9JbWFnZUJ1ZmZlckRh
dGFIYWlrdS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9JbWFnZUJ1
ZmZlckhhaWt1LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW1h
Z2VIYWlrdS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0ludFBv
aW50SGFpa3UuY3BwJywKQEAgLTQyOTUsNyArNDI5Niw3IEBACiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NMYXllclF0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NMYXllclF0LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0ljb25RdC5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0ltYWdlQnVmZmVyRGF0YS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9x
dC9JbWFnZUJ1ZmZlckRhdGFRdC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9x
dC9JbWFnZUJ1ZmZlclF0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvcXQv
SW1hZ2VEZWNvZGVyUXQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9xdC9J
bWFnZURlY29kZXJRdC5oJywKQEAgLTQ0NDMsNyArNDQ0NCw3IEBACiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3Mvd2luY2UvR2x5cGhQYWdlVHJlZU5vZGVXaW5DRS5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYWRpZW50V2luQ0UuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5DRS5jcHAn
LAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyRGF0YS5o
JywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlckRhdGFX
aW5jZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZl
cldpbkNFLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VX
aW5DRS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL01lZGlhUGxh
eWVyUHJpdmF0ZVdpbkNFLmgnLApAQCAtNDQ2OSw3ICs0NDcwLDcgQEAKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy93eC9HcmFkaWVudFd4LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3Mvd3gvR3JhcGhpY3NDb250ZXh0V3guY3BwJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy93eC9JY29uV3guY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy93eC9JbWFnZUJ1ZmZlckRhdGEuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3Mvd3gvSW1hZ2VCdWZmZXJEYXRhV3guaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3Mvd3gvSW1hZ2VCdWZmZXJXeC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L3d4L0ltYWdlV3guY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy93eC9JbnRQ
b2ludFd4LmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkocmV2aXNpb24gODM3NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjcwOTMsNiArMjcwOTMsMTAg
QEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHBsYXRmb3JtXGdyYXBoaWNzXEltYWdlQnVmZmVyRGF0YS5oIgorCQkJCQk+CisJCQkJPC9GaWxl
PgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcSW1h
Z2VPYnNlcnZlci5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtMjgwMjgsNiArMjgwMzIsMjYg
QEAKIAkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUK
KwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcY2dcSW1hZ2VCdWZmZXJE
YXRhLmNwcCIKKwkJCQkJCT4KKwkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJCU5hbWU9
IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKKwkJCQkJCQk+CisJCQkJCQkJPFRvb2wKKwkJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQkJCQkvPgorCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgorCQkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJ
CQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJCT4KKwkJCQkJCQk8VG9vbAorCQkJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJCS8+CisJCQkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCiAJCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGNnXEltYWdlQ0cuY3BwIgogCQkJCQkJPgogCQkJCQkJPEZp
bGVDb25maWd1cmF0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA4Mzc3NikKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjQ2
LDggKzY0NiwxMSBAQAogCQkyMEQ2MjkyNjEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDIwRDYyOTI0MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwICovOyB9OwogCQkyMEQ2MjkyNzEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyMEQ2MjkyNTEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmggKi87IH07CiAJCTIyNzc3NzYwMTM0NURFQTkwMDhFQTQ1NSAvKiBJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDIyNzc3NzVGMTM0NURFQTkwMDhFQTQ1NSAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkyMjgxOUMx
MDEzNTYxMUY1MDA1MkRBNkMgLyogSW1hZ2VCdWZmZXJEYXRhLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyODE5QzBGMTM1NjExRjUwMDUyREE2QyAv
KiBJbWFnZUJ1ZmZlckRhdGEuY3BwICovOyB9OwogCQkyMjg4NUU2NDEzMDFBRTRDMDA1MjZFNjgg
LyogSlNET01JbXBsZW1lbnRhdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMjg4NUU2MzEzMDFBRTRDMDA1MjZFNjggLyogSlNET01J
bXBsZW1lbnRhdGlvbkN1c3RvbS5jcHAgKi87IH07CiAJCTIyOEMyODQ1MTBEODI1MDAwMDlEMEQw
RSAvKiBTY3JpcHRXcmFwcGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDIyOEMyODQ0MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkyMkJE
OUY3RjEzNTM2MjVDMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMkJEOUY3RDEzNTM2MjVDMDA5QkQxMDIg
LyogSW1hZ2VCdWZmZXJEYXRhLmggKi87IH07CisJCTIyQkQ5RjgxMTM1MzY0RkUwMDlCRDEwMiAv
KiBJbWFnZUJ1ZmZlckRhdGFDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjJCRDlGODAxMzUzNjRGRTAwOUJEMTAyIC8qIEltYWdlQnVmZmVyRGF0YUNH
LmggKi87IH07CiAJCTI0NUQ4MEEzMTMyODBFNDAwMDM0OTJBNiAvKiBTUUxDYWxsYmFja1dyYXBw
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI0NUQ4
MEEyMTMyODBFNDAwMDM0OTJBNiAvKiBTUUxDYWxsYmFja1dyYXBwZXIuaCAqLzsgfTsKIAkJMjRG
NTRFQUMxMDFGRTkxNDAwMEFFNzQxIC8qIEFwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI0RjU0RUFBMTAxRkU5MTQw
MDBBRTc0MSAvKiBBcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgKi87IH07CiAJCTI0RjU0RUFEMTAx
RkU5MTQwMDBBRTc0MSAvKiBBcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjRGNTRFQUIxMDFGRTkxNDAwMEFFNzQxIC8q
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsg
fTsgfTsKQEAgLTUxNjIsNyArNTE2NSw2IEBACiAJCUJDQThDODFGMTFFM0QzNjkwMDgxMkZCNyAv
KiBCYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNBOEM4MUQxMUUzRDM2OTAwODEyRkI3IC8qIEJhY2tGb3J3YXJk
Q29udHJvbGxlci5jcHAgKi87IH07CiAJCUJDQThDQTVGMTFFNEU2RDEwMDgxMkZCNyAvKiBCYWNr
Rm9yd2FyZExpc3RJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDQThDQTVEMTFFNEU2RDEwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZExpc3RJbXBs
LmNwcCAqLzsgfTsKIAkJQkNBOENBNjAxMUU0RTZEMTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkTGlz
dEltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
QThDQTVFMTFFNEU2RDEwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZExpc3RJbXBsLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQkNBOTc5MTcxMjE1RDA1
NTAwNUM0ODVDIC8qIEltYWdlQnVmZmVyRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBOTc5MTYxMjE1RDA1NTAwNUM0ODVDIC8qIEltYWdlQnVm
ZmVyRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUJDQUE5MEMzMEE3RUJBNjAwMDhCMTIyOSAvKiBTY3JvbGxiYXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQTkwQzIwQTdFQkE2MDAwOEIx
MjI5IC8qIFNjcm9sbGJhci5jcHAgKi87IH07CiAJCUJDQUNGM0JDMTA3MjkyMUEwMEMwQzhBMyAv
KiBVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNBQ0YzQkExMDcyOTIxQTAwQzBDOEEzIC8qIFVzZXJDb250ZW50
VVJMUGF0dGVybi5jcHAgKi87IH07CiAJCUJDQUNGM0JEMTA3MjkyMUEwMEMwQzhBMyAvKiBVc2Vy
Q29udGVudFVSTFBhdHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDQUNGM0JCMTA3MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVudFVSTFBhdHRl
cm4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
NzA4Miw4ICs3MDg0LDExIEBACiAJCTIwRDYyOTI0MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMjBENjI5MjUxMjUzNjkwQjAwMDgxNTQzIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjI3Nzc3NUYxMzQ1REVBOTAw
OEVBNDU1IC8qIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMjI4MTlDMEYxMzU2MTFGNTAwNTJEQTZDIC8qIEltYWdlQnVmZmVyRGF0
YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZlckRh
dGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyMjg4NUU2MzEzMDFBRTRDMDA1
MjZFNjggLyogSlNET01JbXBsZW1lbnRhdGlvbkN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTUltcGxlbWVudGF0aW9uQ3VzdG9tLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjI4QzI4NDQxMEQ4MjUwMDAwOUQwRDBFIC8qIFNjcmlw
dFdyYXBwYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRXcmFw
cGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjJCRDlGN0QxMzUzNjI1QzAw
OUJEMTAyIC8qIEltYWdlQnVmZmVyRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbWFnZUJ1ZmZlckRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjJC
RDlGODAxMzUzNjRGRTAwOUJEMTAyIC8qIEltYWdlQnVmZmVyRGF0YUNHLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyRGF0YUNHLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTI0NDJCQkY4MTE5NEM5RDMwMEQ0OTQ2OSAvKiBIYXNoQ2hhbmdlRXZl
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFzaENoYW5nZUV2ZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI0NUQ4MEEyMTMyODBFNDAwMDM0OTJBNiAv
KiBTUUxDYWxsYmFja1dyYXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U1FMQ2FsbGJhY2tXcmFwcGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI0RjU0
RUFBMTAxRkU5MTQwMDBBRTc0MSAvKiBBcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTYzOSw3ICsxMTY0NCw2IEBACiAJCUJDQThD
ODFEMTFFM0QzNjkwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFja0ZvcndhcmRDb250cm9sbGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBOENBNUQxMUU0RTZEMTAwODEyRkI3IC8q
IEJhY2tGb3J3YXJkTGlzdEltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQmFja0ZvcndhcmRMaXN0SW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDQThDQTVFMTFFNEU2RDEwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZExpc3RJbXBsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhY2tGb3J3YXJkTGlzdEltcGwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkNBOTc5MTYxMjE1RDA1NTAwNUM0ODVDIC8qIElt
YWdlQnVmZmVyRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1
ZmZlckRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBQTkwQzIwQTdFQkE2
MDAwOEIxMjI5IC8qIFNjcm9sbGJhci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2Nyb2xsYmFyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNB
Q0YzQkExMDcyOTIxQTAwQzBDOEEzIC8qIFVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VyQ29udGVudFVSTFBhdHRlcm4uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0FDRjNCQjEwNzI5MjFBMDBDMEM4QTMg
LyogVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFVzZXJDb250ZW50VVJMUGF0dGVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTc2ODcsNyArMTc2OTEsOCBAQAogCQkJCTkzNDkwN0UzMTI1QkJCQzgwMDdGMjNBMCAvKiBH
cmFwaGljc0NvbnRleHRDRy5oICovLAogCQkJCUE4MEQ2NzA3MEU5RTlERUIwMEU0MjBGMCAvKiBH
cmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oICovLAogCQkJCUIyQTEwQjkzMEIzODE4
RDcwMDA5OUFBNCAvKiBJbWFnZUJ1ZmZlckNHLmNwcCAqLywKLQkJCQlCQ0E5NzkxNjEyMTVEMDU1
MDA1QzQ4NUMgLyogSW1hZ2VCdWZmZXJEYXRhLmggKi8sCisJCQkJMjI4MTlDMEYxMzU2MTFGNTAw
NTJEQTZDIC8qIEltYWdlQnVmZmVyRGF0YS5jcHAgKi8sCisJCQkJMjJCRDlGODAxMzUzNjRGRTAw
OUJEMTAyIC8qIEltYWdlQnVmZmVyRGF0YUNHLmggKi8sCiAJCQkJQjI3NTM1MzAwQjA1MzgxNDAw
MkNFNjRGIC8qIEltYWdlQ0cuY3BwICovLAogCQkJCUIyNzUzNTMxMEIwNTM4MTQwMDJDRTY0RiAv
KiBJbWFnZVNvdXJjZUNHLmNwcCAqLywKIAkJCQk0QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyog
SW1hZ2VTb3VyY2VDRy5oICovLApAQCAtMTc4MjMsNiArMTc4MjgsNyBAQAogCQkJCUIyNzUzNTQx
MEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZS5jcHAgKi8sCiAJCQkJQjI3NTM1NDIwQjA1MzgxNDAw
MkNFNjRGIC8qIEltYWdlLmggKi8sCiAJCQkJQjJBMTBCOTEwQjM4MThCRDAwMDk5QUE0IC8qIElt
YWdlQnVmZmVyLmggKi8sCisJCQkJMjJCRDlGN0QxMzUzNjI1QzAwOUJEMTAyIC8qIEltYWdlQnVm
ZmVyRGF0YS5oICovLAogCQkJCUJDN0Y0NEE3MEI5RTMyNEUwMEE5RDA4MSAvKiBJbWFnZU9ic2Vy
dmVyLmggKi8sCiAJCQkJQjI3NTM1NDMwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNlLmgg
Ki8sCiAJCQkJQjI3NTM1NDQwQjA1MzgxNDAwMkNFNjRGIC8qIEludFBvaW50LmggKi8sCkBAIC0y
MTI4NCw3ICsyMTI5MCw2IEBACiAJCQkJOEFCNEJDNzcxMjZGREI3MTAwREVCNzI3IC8qIElnbm9y
ZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Mjc1MzU3MDBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
QTEwQjkyMEIzODE4QkQwMDA5OUFBNCAvKiBJbWFnZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJQkNBOTc5MTcxMjE1RDA1NTAwNUM0ODVDIC8qIEltYWdlQnVmZmVyRGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTc3OTc5MUEwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTcyMDVBQjYxMjM5MjkxMDAwQjE3MzgwIC8qIEltYWdlRG9jdW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIzREMyMTI1MUYxMkQwMDNFRjI2OSAvKiBJbWFnZUlu
cHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjkwNiw2ICsyMjkxMSw4IEBACiAJCQkJOTNG
MTk5RUQwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NGaWx0ZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTIyQkQ5RjdGMTM1MzYyNUMwMDlCRDEwMiAvKiBJbWFnZUJ1ZmZlckRh
dGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTIyQkQ5RjgxMTM1MzY0RkUwMDlCRDEwMiAvKiBJbWFn
ZUJ1ZmZlckRhdGFDRy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNTYwNCw2ICsyNTYxMSw3IEBACiAJ
CQkJOTNGMTlCMDUwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29k
ZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5IC8q
IFhTU0ZpbHRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyMjgxOUMxMDEzNTYxMUY1MDA1MkRB
NkMgLyogSW1hZ2VCdWZmZXJEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCShyZXZpc2lvbiA4Mzc3
NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDEwICs0MSw2IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBQTEFU
Rk9STShDQSkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxE
SU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkpCi0j
ZGVmaW5lIFdURl9VU0VfSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFIDEKLSNlbmRpZgot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckRhdGEuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckRh
dGEuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyRGF0YS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2lmIFBMQVRGT1JNKENHKQorI2luY2x1ZGUgIkltYWdlQnVmZmVyRGF0YUNHLmgiCisjZWxpZiBQ
TEFURk9STShDQUlSTykKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckRhdGFDYWlyby5oIgorI2VsaWYg
UExBVEZPUk0oUVQpCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJEYXRhUXQuaCIKKyNlbGlmIFVTRShT
S0lBKQorI2luY2x1ZGUgIkltYWdlQnVmZmVyRGF0YVNraWEuaCIKKyNlbGlmIFBMQVRGT1JNKEhB
SUtVKQorI2luY2x1ZGUgIkltYWdlQnVmZmVyRGF0YUhhaWt1LmgiCisjZWxpZiBPUyhXSU5DRSkK
KyNpbmNsdWRlICJJbWFnZUJ1ZmZlckRhdGFXaW5jZS5oIgorI2VsaWYgUExBVEZPUk0oV1gpCisj
aW5jbHVkZSAiSW1hZ2VCdWZmZXJEYXRhV3guaCIKKyNlbmRpZgorCisjaWYgKFBMQVRGT1JNKE1B
QykgJiYgUExBVEZPUk0oQ0EpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVm
aW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xF
T1BBUkQpKQorI2RlZmluZSBXVEZfVVNFX0lPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSAx
CisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YS5oCShyZXZpc2lvbiA4Mzc3NikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEltYWdlQnVmZmVy
RGF0YV9oCi0jZGVmaW5lIEltYWdlQnVmZmVyRGF0YV9oCi0KLSNpbmNsdWRlICJQbGF0Zm9ybUNv
bnRleHRDYWlyby5oIgotCi10eXBlZGVmIHN0cnVjdCBfY2Fpcm9fc3VyZmFjZSBjYWlyb19zdXJm
YWNlX3Q7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSW50U2l6ZTsKLQotY2xhc3Mg
SW1hZ2VCdWZmZXJEYXRhIHsKLXB1YmxpYzoKLSAgICBJbWFnZUJ1ZmZlckRhdGEoY29uc3QgSW50
U2l6ZSYpOwotCi0gICAgY2Fpcm9fc3VyZmFjZV90KiBtX3N1cmZhY2U7Ci0gICAgUGxhdGZvcm1D
b250ZXh0Q2Fpcm8gbV9wbGF0Zm9ybUNvbnRleHQ7Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgIC8vIEltYWdlQnVmZmVyRGF0YV9oCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWlyby5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
RGF0YUNhaXJvLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWlyby5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCisKK3R5
cGVkZWYgc3RydWN0IF9jYWlyb19zdXJmYWNlIGNhaXJvX3N1cmZhY2VfdDsKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBJbnRTaXplOworCitjbGFzcyBJbWFnZUJ1ZmZlckRhdGEgewor
cHVibGljOgorICAgIEltYWdlQnVmZmVyRGF0YShjb25zdCBJbnRTaXplJik7CisKKyAgICBjYWly
b19zdXJmYWNlX3QqIG1fc3VyZmFjZTsKKyAgICBQbGF0Zm9ybUNvbnRleHRDYWlybyBtX3BsYXRm
b3JtQ29udGV4dDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3Bw
CShyZXZpc2lvbiA4Mzc3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxNCArNDIsNiBAQAogI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDxtYXRoLmg+CiAKLSNpZiBVU0UoQUND
RUxFUkFURSkKLSNpbmNsdWRlIDxBY2NlbGVyYXRlL0FjY2VsZXJhdGUuaD4KLSNlbmRpZgotCi0j
aWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKLSNpbmNsdWRlIDxJT1N1cmZh
Y2UvSU9TdXJmYWNlLmg+Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
Q0hST01JVU0pCiAjaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2VuZGlmCkBA
IC01OCwxNiArNTAsNiBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLSNpZiBVU0UoQUNDRUxFUkFURSkKLS8vIFRoZSB2SW1hZ2UgdW5wcmVtdWx0aXBseSBy
b3V0aW5lIGhhZCBhIHJvdW5kaW5nIGJ1ZyBiZWZvcmUgMTAuNi43IDxyZGFyOi8vcHJvYmxlbS84
NjMxNTQ4Pgotc3RhdGljIGJvb2wgaGF2ZVZJbWFnZVJvdW5kaW5nRXJyb3JGaXgoKQotewotICAg
IFNJbnQzMiB2ZXJzaW9uOwotICAgIHN0YXRpYyBib29sIHJlc3VsdCA9IChHZXN0YWx0KGdlc3Rh
bHRTeXN0ZW1WZXJzaW9uLCAmdmVyc2lvbikgPT0gbm9FcnIgJiYgdmVyc2lvbiA+IDB4MTA2Nik7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLSNlbmRpZgotCiAjaWYgVVNFKElPU1VSRkFDRV9DQU5W
QVNfQkFDS0lOR19TVE9SRSkKIHN0YXRpYyBjb25zdCBpbnQgbWF4SU9TdXJmYWNlRGltZW5zaW9u
ID0gNDA5NjsKIHN0YXRpYyBjb25zdCBpbnQgbWluSU9TdXJmYWNlQXJlYSA9IDUwICogMTAwOwpA
QCAtMTE1LDE0ICs5Nyw2IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VJbWFnZURhdGEodm9pZCosIGNv
bnMKICAgICBmYXN0RnJlZShjb25zdF9jYXN0PHZvaWQqPihkYXRhKSk7CiB9CiAKLUltYWdlQnVm
ZmVyRGF0YTo6SW1hZ2VCdWZmZXJEYXRhKGNvbnN0IEludFNpemUmKQotICAgIDogbV9kYXRhKDAp
Ci0jaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKLSAgICAsIG1fc3VyZmFj
ZSgwKQotI2VuZGlmCi17Ci19Ci0KIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRT
aXplJiBzaXplLCBDb2xvclNwYWNlIGltYWdlQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlLCBib29sJiBzdWNjZXNzKQogICAgIDogbV9kYXRhKHNpemUpCiAgICAgLCBtX3Np
emUoc2l6ZSkKQEAgLTI3NywyNTEgKzI1MSwzMiBAQCB2b2lkIEltYWdlQnVmZmVyOjpjbGlwKEdy
YXBoaWNzQ29udGV4dCogCiAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3JtQ29udGV4
dFRvQ2xpcCwgLXJlY3QueCgpLCAtcmVjdC55KCkgLSByZWN0LmhlaWdodCgpKTsKIH0KIAotdGVt
cGxhdGUgPE11bHRpcGx5IG11bHRpcGxpZWQ+Ci1QYXNzUmVmUHRyPEJ5dGVBcnJheT4gZ2V0SW1h
Z2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEltYWdlQnVmZmVyRGF0YSYgaW1hZ2VE
YXRhLCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIGFjY2VsZXJhdGVSZW5kZXJpbmcpCi17Ci0g
ICAgUmVmUHRyPEJ5dGVBcnJheT4gcmVzdWx0ID0gQnl0ZUFycmF5OjpjcmVhdGUocmVjdC53aWR0
aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpOwotICAgIHVuc2lnbmVkIGNoYXIqIGRhdGEgPSByZXN1
bHQtPmRhdGEoKTsKLQotICAgIGlmIChyZWN0LngoKSA8IDAgfHwgcmVjdC55KCkgPCAwIHx8IHJl
Y3QubWF4WCgpID4gc2l6ZS53aWR0aCgpIHx8IHJlY3QubWF4WSgpID4gc2l6ZS5oZWlnaHQoKSkK
LSAgICAgICAgbWVtc2V0KGRhdGEsIDAsIHJlc3VsdC0+bGVuZ3RoKCkpOwotCi0gICAgaW50IG9y
aWdpbnggPSByZWN0LngoKTsKLSAgICBpbnQgZGVzdHggPSAwOwotICAgIGlmIChvcmlnaW54IDwg
MCkgewotICAgICAgICBkZXN0eCA9IC1vcmlnaW54OwotICAgICAgICBvcmlnaW54ID0gMDsKLSAg
ICB9Ci0gICAgaW50IGVuZHggPSByZWN0Lm1heFgoKTsKLSAgICBpZiAoZW5keCA+IHNpemUud2lk
dGgoKSkKLSAgICAgICAgZW5keCA9IHNpemUud2lkdGgoKTsKLSAgICBpbnQgd2lkdGggPSBlbmR4
IC0gb3JpZ2lueDsKLQotICAgIGludCBvcmlnaW55ID0gcmVjdC55KCk7Ci0gICAgaW50IGRlc3R5
ID0gMDsKLSAgICBpZiAob3JpZ2lueSA8IDApIHsKLSAgICAgICAgZGVzdHkgPSAtb3JpZ2lueTsK
LSAgICAgICAgb3JpZ2lueSA9IDA7Ci0gICAgfQotICAgIGludCBlbmR5ID0gcmVjdC5tYXhZKCk7
Ci0gICAgaWYgKGVuZHkgPiBzaXplLmhlaWdodCgpKQotICAgICAgICBlbmR5ID0gc2l6ZS5oZWln
aHQoKTsKLSAgICBpbnQgaGVpZ2h0ID0gZW5keSAtIG9yaWdpbnk7Ci0KLSAgICBpZiAod2lkdGgg
PD0gMCB8fCBoZWlnaHQgPD0gMCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7Ci0K
LSAgICB1bnNpZ25lZCBkZXN0Qnl0ZXNQZXJSb3cgPSA0ICogcmVjdC53aWR0aCgpOwotICAgIHVu
c2lnbmVkIGNoYXIqIGRlc3RSb3dzID0gZGF0YSArIGRlc3R5ICogZGVzdEJ5dGVzUGVyUm93ICsg
ZGVzdHggKiA0OwotCi0gICAgdW5zaWduZWQgc3JjQnl0ZXNQZXJSb3c7Ci0gICAgdW5zaWduZWQg
Y2hhciogc3JjUm93czsKLQotICAgIGlmICghYWNjZWxlcmF0ZVJlbmRlcmluZykgewotICAgICAg
ICBzcmNCeXRlc1BlclJvdyA9IDQgKiBzaXplLndpZHRoKCk7Ci0gICAgICAgIHNyY1Jvd3MgPSBy
ZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihpbWFnZURhdGEubV9kYXRhKSArIG9yaWdp
bnkgKiBzcmNCeXRlc1BlclJvdyArIG9yaWdpbnggKiA0OwotCi0jaWYgVVNFKEFDQ0VMRVJBVEUp
Ci0gICAgICAgIGlmIChtdWx0aXBsaWVkID09IFVubXVsdGlwbGllZCAmJiBoYXZlVkltYWdlUm91
bmRpbmdFcnJvckZpeCgpKSB7Ci0gICAgICAgICAgICB2SW1hZ2VfQnVmZmVyIHNyYzsKLSAgICAg
ICAgICAgIHNyYy5oZWlnaHQgPSBoZWlnaHQ7Ci0gICAgICAgICAgICBzcmMud2lkdGggPSB3aWR0
aDsKLSAgICAgICAgICAgIHNyYy5yb3dCeXRlcyA9IHNyY0J5dGVzUGVyUm93OwotICAgICAgICAg
ICAgc3JjLmRhdGEgPSBzcmNSb3dzOwotCi0gICAgICAgICAgICB2SW1hZ2VfQnVmZmVyIGRzdDsK
LSAgICAgICAgICAgIGRzdC5oZWlnaHQgPSBoZWlnaHQ7Ci0gICAgICAgICAgICBkc3Qud2lkdGgg
PSB3aWR0aDsKLSAgICAgICAgICAgIGRzdC5yb3dCeXRlcyA9IGRlc3RCeXRlc1BlclJvdzsKLSAg
ICAgICAgICAgIGRzdC5kYXRhID0gZGVzdFJvd3M7Ci0KLSAgICAgICAgICAgIHZJbWFnZVVucHJl
bXVsdGlwbHlEYXRhX1JHQkE4ODg4KCZzcmMsICZkc3QsIGt2SW1hZ2VOb0ZsYWdzKTsKLSAgICAg
ICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAg
ICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7ICsreSkgewotICAgICAgICAgICAgZm9yIChp
bnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7Ci0gICAgICAgICAgICAgICAgaW50IGJhc2V4ID0g
eCAqIDQ7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBhbHBoYSA9IHNyY1Jvd3NbYmFz
ZXggKyAzXTsKLSAgICAgICAgICAgICAgICBpZiAobXVsdGlwbGllZCA9PSBVbm11bHRpcGxpZWQg
JiYgYWxwaGEpIHsKLSAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXhdID0gKHNyY1Jv
d3NbYmFzZXhdICogMjU1KSAvIGFscGhhOwotICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1ti
YXNleCArIDFdID0gKHNyY1Jvd3NbYmFzZXggKyAxXSAqIDI1NSkgLyBhbHBoYTsKLSAgICAgICAg
ICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAyXSA9IChzcmNSb3dzW2Jhc2V4ICsgMl0gKiAy
NTUpIC8gYWxwaGE7Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgM10gPSBh
bHBoYTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDx1aW50MzJfdCo+KGRlc3RSb3dzICsgYmFzZXgpWzBdID0gcmVpbnRlcnByZXRf
Y2FzdDx1aW50MzJfdCo+KHNyY1Jvd3MgKyBiYXNleClbMF07Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBzcmNSb3dzICs9IHNyY0J5dGVzUGVyUm93OwotICAgICAgICAgICAgZGVzdFJvd3Mg
Kz0gZGVzdEJ5dGVzUGVyUm93OwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSNpZiBVU0UoSU9T
VVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQotICAgICAgICBJT1N1cmZhY2VSZWYgc3VyZmFj
ZSA9IGltYWdlRGF0YS5tX3N1cmZhY2UuZ2V0KCk7Ci0gICAgICAgIElPU3VyZmFjZUxvY2soc3Vy
ZmFjZSwga0lPU3VyZmFjZUxvY2tSZWFkT25seSwgMCk7Ci0gICAgICAgIHNyY0J5dGVzUGVyUm93
ID0gSU9TdXJmYWNlR2V0Qnl0ZXNQZXJSb3coc3VyZmFjZSk7Ci0gICAgICAgIHNyY1Jvd3MgPSAo
dW5zaWduZWQgY2hhciopKElPU3VyZmFjZUdldEJhc2VBZGRyZXNzKHN1cmZhY2UpKSArIG9yaWdp
bnkgKiBzcmNCeXRlc1BlclJvdyArIG9yaWdpbnggKiA0OwotICAgICAgICAKLSAgICAgICAgZm9y
IChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7ICsreSkgewotICAgICAgICAgICAgZm9yIChpbnQgeCA9
IDA7IHggPCB3aWR0aDsgeCsrKSB7Ci0gICAgICAgICAgICAgICAgaW50IGJhc2V4ID0geCAqIDQ7
Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBhbHBoYSA9IHNyY1Jvd3NbYmFzZXggKyAz
XTsKLSAgICAgICAgICAgICAgICBpZiAobXVsdGlwbGllZCA9PSBVbm11bHRpcGxpZWQgJiYgYWxw
aGEpIHsKLSAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXhdID0gKHNyY1Jvd3NbYmFz
ZXggKyAyXSAqIDI1NSkgLyBhbHBoYTsKLSAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFz
ZXggKyAxXSA9IChzcmNSb3dzW2Jhc2V4ICsgMV0gKiAyNTUpIC8gYWxwaGE7Ci0gICAgICAgICAg
ICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMl0gPSAoc3JjUm93c1tiYXNleF0gKiAyNTUpIC8g
YWxwaGE7Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgM10gPSBhbHBoYTsK
LSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1ti
YXNleF0gPSBzcmNSb3dzW2Jhc2V4ICsgMl07Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RSb3dz
W2Jhc2V4ICsgMV0gPSBzcmNSb3dzW2Jhc2V4ICsgMV07Ci0gICAgICAgICAgICAgICAgICAgIGRl
c3RSb3dzW2Jhc2V4ICsgMl0gPSBzcmNSb3dzW2Jhc2V4XTsKLSAgICAgICAgICAgICAgICAgICAg
ZGVzdFJvd3NbYmFzZXggKyAzXSA9IGFscGhhOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHNyY1Jvd3MgKz0gc3JjQnl0ZXNQZXJSb3c7Ci0gICAgICAgICAg
ICBkZXN0Um93cyArPSBkZXN0Qnl0ZXNQZXJSb3c7Ci0gICAgICAgIH0KLSAgICAgICAgSU9TdXJm
YWNlVW5sb2NrKHN1cmZhY2UsIGtJT1N1cmZhY2VMb2NrUmVhZE9ubHksIDApOwotI2Vsc2UKLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZW5kaWYKLSAgICB9Ci0gICAgCi0gICAgcmV0
dXJuIHJlc3VsdC5yZWxlYXNlKCk7Ci19Ci0KIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1
ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QpIGNvbnN0
CiB7CiAgICAgaWYgKG1fYWNjZWxlcmF0ZVJlbmRlcmluZykKICAgICAgICAgQ0dDb250ZXh0Rmx1
c2goY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgcmV0dXJuIGdldEltYWdlRGF0
YTxVbm11bHRpcGxpZWQ+KHJlY3QsIG1fZGF0YSwgbV9zaXplLCBtX2FjY2VsZXJhdGVSZW5kZXJp
bmcpOworICAgIHJldHVybiBtX2RhdGEuZ2V0RGF0YShyZWN0LCBtX3NpemUsIG1fYWNjZWxlcmF0
ZVJlbmRlcmluZywgdHJ1ZSk7CiB9CiAKIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZl
cjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAog
ewogICAgIGlmIChtX2FjY2VsZXJhdGVSZW5kZXJpbmcpCiAgICAgICAgIENHQ29udGV4dEZsdXNo
KGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCkpOwotICAgIHJldHVybiBnZXRJbWFnZURhdGE8
UHJlbXVsdGlwbGllZD4ocmVjdCwgbV9kYXRhLCBtX3NpemUsIG1fYWNjZWxlcmF0ZVJlbmRlcmlu
Zyk7Ci19Ci0KLXRlbXBsYXRlIDxNdWx0aXBseSBtdWx0aXBsaWVkPgotdm9pZCBwdXRJbWFnZURh
dGEoQnl0ZUFycmF5KiYgc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBJbWFnZUJ1ZmZl
ckRhdGEmIGltYWdlRGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBhY2NlbGVyYXRlUmVu
ZGVyaW5nKQotewotICAgIEFTU0VSVChzb3VyY2VSZWN0LndpZHRoKCkgPiAwKTsKLSAgICBBU1NF
UlQoc291cmNlUmVjdC5oZWlnaHQoKSA+IDApOwotCi0gICAgaW50IG9yaWdpbnggPSBzb3VyY2VS
ZWN0LngoKTsKLSAgICBpbnQgZGVzdHggPSBkZXN0UG9pbnQueCgpICsgc291cmNlUmVjdC54KCk7
Ci0gICAgQVNTRVJUKGRlc3R4ID49IDApOwotICAgIEFTU0VSVChkZXN0eCA8IHNpemUud2lkdGgo
KSk7Ci0gICAgQVNTRVJUKG9yaWdpbnggPj0gMCk7Ci0gICAgQVNTRVJUKG9yaWdpbnggPD0gc291
cmNlUmVjdC5tYXhYKCkpOwotCi0gICAgaW50IGVuZHggPSBkZXN0UG9pbnQueCgpICsgc291cmNl
UmVjdC5tYXhYKCk7Ci0gICAgQVNTRVJUKGVuZHggPD0gc2l6ZS53aWR0aCgpKTsKLQotICAgIGlu
dCB3aWR0aCA9IGVuZHggLSBkZXN0eDsKLQotICAgIGludCBvcmlnaW55ID0gc291cmNlUmVjdC55
KCk7Ci0gICAgaW50IGRlc3R5ID0gZGVzdFBvaW50LnkoKSArIHNvdXJjZVJlY3QueSgpOwotICAg
IEFTU0VSVChkZXN0eSA+PSAwKTsKLSAgICBBU1NFUlQoZGVzdHkgPCBzaXplLmhlaWdodCgpKTsK
LSAgICBBU1NFUlQob3JpZ2lueSA+PSAwKTsKLSAgICBBU1NFUlQob3JpZ2lueSA8PSBzb3VyY2VS
ZWN0Lm1heFkoKSk7Ci0KLSAgICBpbnQgZW5keSA9IGRlc3RQb2ludC55KCkgKyBzb3VyY2VSZWN0
Lm1heFkoKTsKLSAgICBBU1NFUlQoZW5keSA8PSBzaXplLmhlaWdodCgpKTsKLSAgICBpbnQgaGVp
Z2h0ID0gZW5keSAtIGRlc3R5OwotCi0gICAgaWYgKHdpZHRoIDw9IDAgfHwgaGVpZ2h0IDw9IDAp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIHVuc2lnbmVkIHNyY0J5dGVzUGVyUm93ID0gNCAqIHNv
dXJjZVNpemUud2lkdGgoKTsKLSAgICB1bnNpZ25lZCBjaGFyKiBzcmNSb3dzID0gc291cmNlLT5k
YXRhKCkgKyBvcmlnaW55ICogc3JjQnl0ZXNQZXJSb3cgKyBvcmlnaW54ICogNDsKLSAgICB1bnNp
Z25lZCBkZXN0Qnl0ZXNQZXJSb3c7Ci0gICAgdW5zaWduZWQgY2hhciogZGVzdFJvd3M7Ci0KLSAg
ICBpZiAoIWFjY2VsZXJhdGVSZW5kZXJpbmcpIHsKLSAgICAgICAgZGVzdEJ5dGVzUGVyUm93ID0g
NCAqIHNpemUud2lkdGgoKTsKLSAgICAgICAgZGVzdFJvd3MgPSByZWludGVycHJldF9jYXN0PHVu
c2lnbmVkIGNoYXIqPihpbWFnZURhdGEubV9kYXRhKSArIGRlc3R5ICogZGVzdEJ5dGVzUGVyUm93
ICsgZGVzdHggKiA0OwotCi0jaWYgVVNFKEFDQ0VMRVJBVEUpCi0gICAgICAgIGlmIChoYXZlVklt
YWdlUm91bmRpbmdFcnJvckZpeCgpICYmIG11bHRpcGxpZWQgPT0gVW5tdWx0aXBsaWVkKSB7Ci0g
ICAgICAgICAgICB2SW1hZ2VfQnVmZmVyIHNyYzsKLSAgICAgICAgICAgIHNyYy5oZWlnaHQgPSBo
ZWlnaHQ7Ci0gICAgICAgICAgICBzcmMud2lkdGggPSB3aWR0aDsKLSAgICAgICAgICAgIHNyYy5y
b3dCeXRlcyA9IHNyY0J5dGVzUGVyUm93OwotICAgICAgICAgICAgc3JjLmRhdGEgPSBzcmNSb3dz
OwotCi0gICAgICAgICAgICB2SW1hZ2VfQnVmZmVyIGRzdDsKLSAgICAgICAgICAgIGRzdC5oZWln
aHQgPSBoZWlnaHQ7Ci0gICAgICAgICAgICBkc3Qud2lkdGggPSB3aWR0aDsKLSAgICAgICAgICAg
IGRzdC5yb3dCeXRlcyA9IGRlc3RCeXRlc1BlclJvdzsKLSAgICAgICAgICAgIGRzdC5kYXRhID0g
ZGVzdFJvd3M7Ci0KLSAgICAgICAgICAgIHZJbWFnZVByZW11bHRpcGx5RGF0YV9SR0JBODg4OCgm
c3JjLCAmZHN0LCBrdkltYWdlTm9GbGFncyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSNlbmRpZgotICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgKyt5KSB7Ci0g
ICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKLSAgICAgICAgICAg
ICAgICBpbnQgYmFzZXggPSB4ICogNDsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGFs
cGhhID0gc3JjUm93c1tiYXNleCArIDNdOwotICAgICAgICAgICAgICAgIGlmIChtdWx0aXBsaWVk
ID09IFVubXVsdGlwbGllZCAmJiBhbHBoYSAhPSAyNTUpIHsKLSAgICAgICAgICAgICAgICAgICAg
ZGVzdFJvd3NbYmFzZXhdID0gKHNyY1Jvd3NbYmFzZXhdICogYWxwaGEgKyAyNTQpIC8gMjU1Owot
ICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDFdID0gKHNyY1Jvd3NbYmFzZXgg
KyAxXSAqIGFscGhhICsgMjU0KSAvIDI1NTsKLSAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3Nb
YmFzZXggKyAyXSA9IChzcmNSb3dzW2Jhc2V4ICsgMl0gKiBhbHBoYSArIDI1NCkgLyAyNTU7Ci0g
ICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgM10gPSBhbHBoYTsKLSAgICAgICAg
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50
MzJfdCo+KGRlc3RSb3dzICsgYmFzZXgpWzBdID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+
KHNyY1Jvd3MgKyBiYXNleClbMF07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBkZXN0Um93
cyArPSBkZXN0Qnl0ZXNQZXJSb3c7Ci0gICAgICAgICAgICBzcmNSb3dzICs9IHNyY0J5dGVzUGVy
Um93OwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19C
QUNLSU5HX1NUT1JFKQotICAgICAgICBJT1N1cmZhY2VSZWYgc3VyZmFjZSA9IGltYWdlRGF0YS5t
X3N1cmZhY2UuZ2V0KCk7Ci0gICAgICAgIElPU3VyZmFjZUxvY2soc3VyZmFjZSwgMCwgMCk7Ci0g
ICAgICAgIGRlc3RCeXRlc1BlclJvdyA9IElPU3VyZmFjZUdldEJ5dGVzUGVyUm93KHN1cmZhY2Up
OwotICAgICAgICBkZXN0Um93cyA9ICh1bnNpZ25lZCBjaGFyKikoSU9TdXJmYWNlR2V0QmFzZUFk
ZHJlc3Moc3VyZmFjZSkpICsgZGVzdHkgKiBkZXN0Qnl0ZXNQZXJSb3cgKyBkZXN0eCAqIDQ7Ci0g
ICAgICAgIAotICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgKyt5KSB7Ci0gICAg
ICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKLSAgICAgICAgICAgICAg
ICBpbnQgYmFzZXggPSB4ICogNDsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGFscGhh
ID0gc3JjUm93c1tiYXNleCArIDNdOwotICAgICAgICAgICAgICAgIGlmIChtdWx0aXBsaWVkID09
IFVubXVsdGlwbGllZCAmJiBhbHBoYSAhPSAyNTUpIHsKLSAgICAgICAgICAgICAgICAgICAgZGVz
dFJvd3NbYmFzZXhdID0gKHNyY1Jvd3NbYmFzZXggKyAyXSAqIGFscGhhICsgMjU0KSAvIDI1NTsK
LSAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAxXSA9IChzcmNSb3dzW2Jhc2V4
ICsgMV0gKiBhbHBoYSArIDI1NCkgLyAyNTU7Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RSb3dz
W2Jhc2V4ICsgMl0gPSAoc3JjUm93c1tiYXNleF0gKiBhbHBoYSArIDI1NCkgLyAyNTU7Ci0gICAg
ICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgM10gPSBhbHBoYTsKLSAgICAgICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleF0gPSBzcmNS
b3dzW2Jhc2V4ICsgMl07Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMV0g
PSBzcmNSb3dzW2Jhc2V4ICsgMV07Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4
ICsgMl0gPSBzcmNSb3dzW2Jhc2V4XTsKLSAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFz
ZXggKyAzXSA9IGFscGhhOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGRlc3RSb3dzICs9IGRlc3RCeXRlc1BlclJvdzsKLSAgICAgICAgICAgIHNyY1Jvd3Mg
Kz0gc3JjQnl0ZXNQZXJSb3c7Ci0gICAgICAgIH0KLSAgICAgICAgSU9TdXJmYWNlVW5sb2NrKHN1
cmZhY2UsIDAsIDApOwotI2Vsc2UKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZW5k
aWYKLSAgICB9CisgICAgcmV0dXJuIG1fZGF0YS5nZXREYXRhKHJlY3QsIG1fc2l6ZSwgbV9hY2Nl
bGVyYXRlUmVuZGVyaW5nLCBmYWxzZSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OnB1dFVubXVs
dGlwbGllZEltYWdlRGF0YShCeXRlQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNl
U2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2lu
dCkKIHsKICAgICBpZiAobV9hY2NlbGVyYXRlUmVuZGVyaW5nKQogICAgICAgICBDR0NvbnRleHRG
bHVzaChjb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpKTsKLSAgICBwdXRJbWFnZURhdGE8VW5t
dWx0aXBsaWVkPihzb3VyY2UsIHNvdXJjZVNpemUsIHNvdXJjZVJlY3QsIGRlc3RQb2ludCwgbV9k
YXRhLCBtX3NpemUsIG1fYWNjZWxlcmF0ZVJlbmRlcmluZyk7CisgICAgbV9kYXRhLnB1dERhdGEo
c291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBkZXN0UG9pbnQsIG1fc2l6ZSwgbV9hY2Nl
bGVyYXRlUmVuZGVyaW5nLCB0cnVlKTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0UHJlbXVs
dGlwbGllZEltYWdlRGF0YShCeXRlQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNl
U2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2lu
dCkKIHsKICAgICBpZiAobV9hY2NlbGVyYXRlUmVuZGVyaW5nKQogICAgICAgICBDR0NvbnRleHRG
bHVzaChjb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpKTsKLSAgICBwdXRJbWFnZURhdGE8UHJl
bXVsdGlwbGllZD4oc291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBkZXN0UG9pbnQsIG1f
ZGF0YSwgbV9zaXplLCBtX2FjY2VsZXJhdGVSZW5kZXJpbmcpOworICAgIG1fZGF0YS5wdXREYXRh
KHNvdXJjZSwgc291cmNlU2l6ZSwgc291cmNlUmVjdCwgZGVzdFBvaW50LCBtX3NpemUsIG1fYWNj
ZWxlcmF0ZVJlbmRlcmluZywgZmFsc2UpOwogfQogCiBzdGF0aWMgaW5saW5lIENGU3RyaW5nUmVm
IGpwZWdVVEkoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGEuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhLmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiSW1hZ2VCdWZmZXJEYXRhLmgiCisKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgor
CisjaWYgVVNFKEFDQ0VMRVJBVEUpCisjaW5jbHVkZSA8QWNjZWxlcmF0ZS9BY2NlbGVyYXRlLmg+
CisjZW5kaWYKKworI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCisjaW5j
bHVkZSA8SU9TdXJmYWNlL0lPU3VyZmFjZS5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworSW1hZ2VCdWZmZXJEYXRhOjpJbWFnZUJ1ZmZlckRhdGEoY29uc3QgSW50U2l6ZSYpCis6
IG1fZGF0YSgwKQorI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCissIG1f
c3VyZmFjZSgwKQorI2VuZGlmCit7Cit9CisKKyNpZiBVU0UoQUNDRUxFUkFURSkKKy8vIFRoZSB2
SW1hZ2UgdW5wcmVtdWx0aXBseSByb3V0aW5lIGhhZCBhIHJvdW5kaW5nIGJ1ZyBiZWZvcmUgMTAu
Ni43IDxyZGFyOi8vcHJvYmxlbS84NjMxNTQ4Pgorc3RhdGljIGJvb2wgaGF2ZVZJbWFnZVJvdW5k
aW5nRXJyb3JGaXgoKQoreworICAgIFNJbnQzMiB2ZXJzaW9uOworICAgIHN0YXRpYyBib29sIHJl
c3VsdCA9IChHZXN0YWx0KGdlc3RhbHRTeXN0ZW1WZXJzaW9uLCAmdmVyc2lvbikgPT0gbm9FcnIg
JiYgdmVyc2lvbiA+IDB4MTA2Nik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZgorCitQ
YXNzUmVmUHRyPEJ5dGVBcnJheT4gSW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhKGNvbnN0IEludFJl
Y3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZywg
Ym9vbCB1bm11bHRpcGxpZWQpIGNvbnN0Cit7CisgICAgUmVmUHRyPEJ5dGVBcnJheT4gcmVzdWx0
ID0gQnl0ZUFycmF5OjpjcmVhdGUocmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpOwor
ICAgIHVuc2lnbmVkIGNoYXIqIGRhdGEgPSByZXN1bHQtPmRhdGEoKTsKKyAgICAKKyAgICBpZiAo
cmVjdC54KCkgPCAwIHx8IHJlY3QueSgpIDwgMCB8fCByZWN0Lm1heFgoKSA+IHNpemUud2lkdGgo
KSB8fCByZWN0Lm1heFkoKSA+IHNpemUuaGVpZ2h0KCkpCisgICAgICAgIG1lbXNldChkYXRhLCAw
LCByZXN1bHQtPmxlbmd0aCgpKTsKKyAgICAKKyAgICBpbnQgb3JpZ2lueCA9IHJlY3QueCgpOwor
ICAgIGludCBkZXN0eCA9IDA7CisgICAgaWYgKG9yaWdpbnggPCAwKSB7CisgICAgICAgIGRlc3R4
ID0gLW9yaWdpbng7CisgICAgICAgIG9yaWdpbnggPSAwOworICAgIH0KKyAgICBpbnQgZW5keCA9
IHJlY3QubWF4WCgpOworICAgIGlmIChlbmR4ID4gc2l6ZS53aWR0aCgpKQorICAgICAgICBlbmR4
ID0gc2l6ZS53aWR0aCgpOworICAgIGludCB3aWR0aCA9IGVuZHggLSBvcmlnaW54OworICAgIAor
ICAgIGludCBvcmlnaW55ID0gcmVjdC55KCk7CisgICAgaW50IGRlc3R5ID0gMDsKKyAgICBpZiAo
b3JpZ2lueSA8IDApIHsKKyAgICAgICAgZGVzdHkgPSAtb3JpZ2lueTsKKyAgICAgICAgb3JpZ2lu
eSA9IDA7CisgICAgfQorICAgIGludCBlbmR5ID0gcmVjdC5tYXhZKCk7CisgICAgaWYgKGVuZHkg
PiBzaXplLmhlaWdodCgpKQorICAgICAgICBlbmR5ID0gc2l6ZS5oZWlnaHQoKTsKKyAgICBpbnQg
aGVpZ2h0ID0gZW5keSAtIG9yaWdpbnk7CisgICAgCisgICAgaWYgKHdpZHRoIDw9IDAgfHwgaGVp
Z2h0IDw9IDApCisgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOworICAgIAorICAgIHVu
c2lnbmVkIGRlc3RCeXRlc1BlclJvdyA9IDQgKiByZWN0LndpZHRoKCk7CisgICAgdW5zaWduZWQg
Y2hhciogZGVzdFJvd3MgPSBkYXRhICsgZGVzdHkgKiBkZXN0Qnl0ZXNQZXJSb3cgKyBkZXN0eCAq
IDQ7CisgICAgCisgICAgdW5zaWduZWQgc3JjQnl0ZXNQZXJSb3c7CisgICAgdW5zaWduZWQgY2hh
ciogc3JjUm93czsKKyAgICAKKyAgICBpZiAoIWFjY2VsZXJhdGVSZW5kZXJpbmcpIHsKKyAgICAg
ICAgc3JjQnl0ZXNQZXJSb3cgPSA0ICogc2l6ZS53aWR0aCgpOworICAgICAgICBzcmNSb3dzID0g
cmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4obV9kYXRhKSArIG9yaWdpbnkgKiBzcmNC
eXRlc1BlclJvdyArIG9yaWdpbnggKiA0OworICAgICAgICAKKyNpZiBVU0UoQUNDRUxFUkFURSkK
KyAgICAgICAgaWYgKHVubXVsdGlwbGllZCAmJiBoYXZlVkltYWdlUm91bmRpbmdFcnJvckZpeCgp
KSB7CisgICAgICAgICAgICB2SW1hZ2VfQnVmZmVyIHNyYzsKKyAgICAgICAgICAgIHNyYy5oZWln
aHQgPSBoZWlnaHQ7CisgICAgICAgICAgICBzcmMud2lkdGggPSB3aWR0aDsKKyAgICAgICAgICAg
IHNyYy5yb3dCeXRlcyA9IHNyY0J5dGVzUGVyUm93OworICAgICAgICAgICAgc3JjLmRhdGEgPSBz
cmNSb3dzOworICAgICAgICAgICAgCisgICAgICAgICAgICB2SW1hZ2VfQnVmZmVyIGRzdDsKKyAg
ICAgICAgICAgIGRzdC5oZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgICAgICBkc3Qud2lkdGggPSB3
aWR0aDsKKyAgICAgICAgICAgIGRzdC5yb3dCeXRlcyA9IGRlc3RCeXRlc1BlclJvdzsKKyAgICAg
ICAgICAgIGRzdC5kYXRhID0gZGVzdFJvd3M7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZJ
bWFnZVVucHJlbXVsdGlwbHlEYXRhX1JHQkE4ODg4KCZzcmMsICZkc3QsIGt2SW1hZ2VOb0ZsYWdz
KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOworICAgICAgICB9CisjZW5k
aWYKKyAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7ICsreSkgeworICAgICAgICAg
ICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7CisgICAgICAgICAgICAgICAgaW50
IGJhc2V4ID0geCAqIDQ7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBhbHBoYSA9IHNy
Y1Jvd3NbYmFzZXggKyAzXTsKKyAgICAgICAgICAgICAgICBpZiAodW5tdWx0aXBsaWVkICYmIGFs
cGhhKSB7CisgICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4XSA9IChzcmNSb3dzW2Jh
c2V4XSAqIDI1NSkgLyBhbHBoYTsKKyAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXgg
KyAxXSA9IChzcmNSb3dzW2Jhc2V4ICsgMV0gKiAyNTUpIC8gYWxwaGE7CisgICAgICAgICAgICAg
ICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMl0gPSAoc3JjUm93c1tiYXNleCArIDJdICogMjU1KSAv
IGFscGhhOworICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDNdID0gYWxwaGE7
CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDMyX3QqPihkZXN0Um93cyArIGJhc2V4KVswXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDMyX3QqPihzcmNSb3dzICsgYmFzZXgpWzBdOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgc3JjUm93cyArPSBzcmNCeXRlc1BlclJvdzsKKyAgICAgICAgICAgIGRlc3RSb3dzICs9IGRl
c3RCeXRlc1BlclJvdzsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisjaWYgVVNFKElPU1VSRkFD
RV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKKyAgICAgICAgSU9TdXJmYWNlUmVmIHN1cmZhY2UgPSBt
X3N1cmZhY2UuZ2V0KCk7CisgICAgICAgIElPU3VyZmFjZUxvY2soc3VyZmFjZSwga0lPU3VyZmFj
ZUxvY2tSZWFkT25seSwgMCk7CisgICAgICAgIHNyY0J5dGVzUGVyUm93ID0gSU9TdXJmYWNlR2V0
Qnl0ZXNQZXJSb3coc3VyZmFjZSk7CisgICAgICAgIHNyY1Jvd3MgPSAodW5zaWduZWQgY2hhciop
KElPU3VyZmFjZUdldEJhc2VBZGRyZXNzKHN1cmZhY2UpKSArIG9yaWdpbnkgKiBzcmNCeXRlc1Bl
clJvdyArIG9yaWdpbnggKiA0OworICAgICAgICAKKyAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkg
PCBoZWlnaHQ7ICsreSkgeworICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsg
eCsrKSB7CisgICAgICAgICAgICAgICAgaW50IGJhc2V4ID0geCAqIDQ7CisgICAgICAgICAgICAg
ICAgdW5zaWduZWQgY2hhciBhbHBoYSA9IHNyY1Jvd3NbYmFzZXggKyAzXTsKKyAgICAgICAgICAg
ICAgICBpZiAodW5tdWx0aXBsaWVkICYmIGFscGhhKSB7CisgICAgICAgICAgICAgICAgICAgIGRl
c3RSb3dzW2Jhc2V4XSA9IChzcmNSb3dzW2Jhc2V4ICsgMl0gKiAyNTUpIC8gYWxwaGE7CisgICAg
ICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMV0gPSAoc3JjUm93c1tiYXNleCArIDFd
ICogMjU1KSAvIGFscGhhOworICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDJd
ID0gKHNyY1Jvd3NbYmFzZXhdICogMjU1KSAvIGFscGhhOworICAgICAgICAgICAgICAgICAgICBk
ZXN0Um93c1tiYXNleCArIDNdID0gYWxwaGE7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXhdID0gc3JjUm93c1tiYXNleCArIDJdOwor
ICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDFdID0gc3JjUm93c1tiYXNleCAr
IDFdOworICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDJdID0gc3JjUm93c1ti
YXNleF07CisgICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgM10gPSBhbHBoYTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzcmNSb3dzICs9
IHNyY0J5dGVzUGVyUm93OworICAgICAgICAgICAgZGVzdFJvd3MgKz0gZGVzdEJ5dGVzUGVyUm93
OworICAgICAgICB9CisgICAgICAgIElPU3VyZmFjZVVubG9jayhzdXJmYWNlLCBrSU9TdXJmYWNl
TG9ja1JlYWRPbmx5LCAwKTsKKyNlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
I2VuZGlmCisgICAgfQorICAgIAorICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOworfQorCit2
b2lkIEltYWdlQnVmZmVyRGF0YTo6cHV0RGF0YShCeXRlQXJyYXkqJiBzb3VyY2UsIGNvbnN0IElu
dFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBv
aW50JiBkZXN0UG9pbnQsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgYWNjZWxlcmF0ZVJlbmRl
cmluZywgYm9vbCB1bm11bHRpcGxpZWQpCit7CisgICAgQVNTRVJUKHNvdXJjZVJlY3Qud2lkdGgo
KSA+IDApOworICAgIEFTU0VSVChzb3VyY2VSZWN0LmhlaWdodCgpID4gMCk7CisgICAgCisgICAg
aW50IG9yaWdpbnggPSBzb3VyY2VSZWN0LngoKTsKKyAgICBpbnQgZGVzdHggPSBkZXN0UG9pbnQu
eCgpICsgc291cmNlUmVjdC54KCk7CisgICAgQVNTRVJUKGRlc3R4ID49IDApOworICAgIEFTU0VS
VChkZXN0eCA8IHNpemUud2lkdGgoKSk7CisgICAgQVNTRVJUKG9yaWdpbnggPj0gMCk7CisgICAg
QVNTRVJUKG9yaWdpbnggPD0gc291cmNlUmVjdC5tYXhYKCkpOworICAgIAorICAgIGludCBlbmR4
ID0gZGVzdFBvaW50LngoKSArIHNvdXJjZVJlY3QubWF4WCgpOworICAgIEFTU0VSVChlbmR4IDw9
IHNpemUud2lkdGgoKSk7CisgICAgCisgICAgaW50IHdpZHRoID0gZW5keCAtIGRlc3R4OworICAg
IAorICAgIGludCBvcmlnaW55ID0gc291cmNlUmVjdC55KCk7CisgICAgaW50IGRlc3R5ID0gZGVz
dFBvaW50LnkoKSArIHNvdXJjZVJlY3QueSgpOworICAgIEFTU0VSVChkZXN0eSA+PSAwKTsKKyAg
ICBBU1NFUlQoZGVzdHkgPCBzaXplLmhlaWdodCgpKTsKKyAgICBBU1NFUlQob3JpZ2lueSA+PSAw
KTsKKyAgICBBU1NFUlQob3JpZ2lueSA8PSBzb3VyY2VSZWN0Lm1heFkoKSk7CisgICAgCisgICAg
aW50IGVuZHkgPSBkZXN0UG9pbnQueSgpICsgc291cmNlUmVjdC5tYXhZKCk7CisgICAgQVNTRVJU
KGVuZHkgPD0gc2l6ZS5oZWlnaHQoKSk7CisgICAgaW50IGhlaWdodCA9IGVuZHkgLSBkZXN0eTsK
KyAgICAKKyAgICBpZiAod2lkdGggPD0gMCB8fCBoZWlnaHQgPD0gMCkKKyAgICAgICAgcmV0dXJu
OworICAgIAorICAgIHVuc2lnbmVkIHNyY0J5dGVzUGVyUm93ID0gNCAqIHNvdXJjZVNpemUud2lk
dGgoKTsKKyAgICB1bnNpZ25lZCBjaGFyKiBzcmNSb3dzID0gc291cmNlLT5kYXRhKCkgKyBvcmln
aW55ICogc3JjQnl0ZXNQZXJSb3cgKyBvcmlnaW54ICogNDsKKyAgICB1bnNpZ25lZCBkZXN0Qnl0
ZXNQZXJSb3c7CisgICAgdW5zaWduZWQgY2hhciogZGVzdFJvd3M7CisgICAgCisgICAgaWYgKCFh
Y2NlbGVyYXRlUmVuZGVyaW5nKSB7CisgICAgICAgIGRlc3RCeXRlc1BlclJvdyA9IDQgKiBzaXpl
LndpZHRoKCk7CisgICAgICAgIGRlc3RSb3dzID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBj
aGFyKj4obV9kYXRhKSArIGRlc3R5ICogZGVzdEJ5dGVzUGVyUm93ICsgZGVzdHggKiA0OworICAg
ICAgICAKKyNpZiBVU0UoQUNDRUxFUkFURSkKKyAgICAgICAgaWYgKGhhdmVWSW1hZ2VSb3VuZGlu
Z0Vycm9yRml4KCkgJiYgdW5tdWx0aXBsaWVkKSB7CisgICAgICAgICAgICB2SW1hZ2VfQnVmZmVy
IHNyYzsKKyAgICAgICAgICAgIHNyYy5oZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgICAgICBzcmMu
d2lkdGggPSB3aWR0aDsKKyAgICAgICAgICAgIHNyYy5yb3dCeXRlcyA9IHNyY0J5dGVzUGVyUm93
OworICAgICAgICAgICAgc3JjLmRhdGEgPSBzcmNSb3dzOworICAgICAgICAgICAgCisgICAgICAg
ICAgICB2SW1hZ2VfQnVmZmVyIGRzdDsKKyAgICAgICAgICAgIGRzdC5oZWlnaHQgPSBoZWlnaHQ7
CisgICAgICAgICAgICBkc3Qud2lkdGggPSB3aWR0aDsKKyAgICAgICAgICAgIGRzdC5yb3dCeXRl
cyA9IGRlc3RCeXRlc1BlclJvdzsKKyAgICAgICAgICAgIGRzdC5kYXRhID0gZGVzdFJvd3M7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIHZJbWFnZVByZW11bHRpcGx5RGF0YV9SR0JBODg4OCgm
c3JjLCAmZHN0LCBrdkltYWdlTm9GbGFncyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyNlbmRpZgorICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgKyt5KSB7Cisg
ICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKKyAgICAgICAgICAg
ICAgICBpbnQgYmFzZXggPSB4ICogNDsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGFs
cGhhID0gc3JjUm93c1tiYXNleCArIDNdOworICAgICAgICAgICAgICAgIGlmICh1bm11bHRpcGxp
ZWQgJiYgYWxwaGEgIT0gMjU1KSB7CisgICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4
XSA9IChzcmNSb3dzW2Jhc2V4XSAqIGFscGhhICsgMjU0KSAvIDI1NTsKKyAgICAgICAgICAgICAg
ICAgICAgZGVzdFJvd3NbYmFzZXggKyAxXSA9IChzcmNSb3dzW2Jhc2V4ICsgMV0gKiBhbHBoYSAr
IDI1NCkgLyAyNTU7CisgICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMl0gPSAo
c3JjUm93c1tiYXNleCArIDJdICogYWxwaGEgKyAyNTQpIC8gMjU1OworICAgICAgICAgICAgICAg
ICAgICBkZXN0Um93c1tiYXNleCArIDNdID0gYWxwaGE7CisgICAgICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihkZXN0Um93
cyArIGJhc2V4KVswXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihzcmNSb3dzICsgYmFz
ZXgpWzBdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVzdFJvd3MgKz0gZGVzdEJ5dGVz
UGVyUm93OworICAgICAgICAgICAgc3JjUm93cyArPSBzcmNCeXRlc1BlclJvdzsKKyAgICAgICAg
fQorICAgIH0gZWxzZSB7CisjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkK
KyAgICAgICAgSU9TdXJmYWNlUmVmIHN1cmZhY2UgPSBtX3N1cmZhY2UuZ2V0KCk7CisgICAgICAg
IElPU3VyZmFjZUxvY2soc3VyZmFjZSwgMCwgMCk7CisgICAgICAgIGRlc3RCeXRlc1BlclJvdyA9
IElPU3VyZmFjZUdldEJ5dGVzUGVyUm93KHN1cmZhY2UpOworICAgICAgICBkZXN0Um93cyA9ICh1
bnNpZ25lZCBjaGFyKikoSU9TdXJmYWNlR2V0QmFzZUFkZHJlc3Moc3VyZmFjZSkpICsgZGVzdHkg
KiBkZXN0Qnl0ZXNQZXJSb3cgKyBkZXN0eCAqIDQ7CisgICAgICAgIAorICAgICAgICBmb3IgKGlu
dCB5ID0gMDsgeSA8IGhlaWdodDsgKyt5KSB7CisgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsg
eCA8IHdpZHRoOyB4KyspIHsKKyAgICAgICAgICAgICAgICBpbnQgYmFzZXggPSB4ICogNDsKKyAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGFscGhhID0gc3JjUm93c1tiYXNleCArIDNdOwor
ICAgICAgICAgICAgICAgIGlmICh1bm11bHRpcGxpZWQgJiYgYWxwaGEgIT0gMjU1KSB7CisgICAg
ICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4XSA9IChzcmNSb3dzW2Jhc2V4ICsgMl0gKiBh
bHBoYSArIDI1NCkgLyAyNTU7CisgICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsg
MV0gPSAoc3JjUm93c1tiYXNleCArIDFdICogYWxwaGEgKyAyNTQpIC8gMjU1OworICAgICAgICAg
ICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDJdID0gKHNyY1Jvd3NbYmFzZXhdICogYWxwaGEg
KyAyNTQpIC8gMjU1OworICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDNdID0g
YWxwaGE7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZGVz
dFJvd3NbYmFzZXhdID0gc3JjUm93c1tiYXNleCArIDJdOworICAgICAgICAgICAgICAgICAgICBk
ZXN0Um93c1tiYXNleCArIDFdID0gc3JjUm93c1tiYXNleCArIDFdOworICAgICAgICAgICAgICAg
ICAgICBkZXN0Um93c1tiYXNleCArIDJdID0gc3JjUm93c1tiYXNleF07CisgICAgICAgICAgICAg
ICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgM10gPSBhbHBoYTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBkZXN0Um93cyArPSBkZXN0Qnl0ZXNQZXJSb3c7Cisg
ICAgICAgICAgICBzcmNSb3dzICs9IHNyY0J5dGVzUGVyUm93OworICAgICAgICB9CisgICAgICAg
IElPU3VyZmFjZVVubG9jayhzdXJmYWNlLCAwLCAwKTsKKyNlbHNlCisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRh
dGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckRhdGEuaAkocmV2aXNpb24gODM3NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBJbWFnZUJ1ZmZlckRhdGFfaAotI2RlZmluZSBJ
bWFnZUJ1ZmZlckRhdGFfaAotCi0jaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi10eXBlZGVmIHN0cnVjdCBfX0lP
U3VyZmFjZSAqSU9TdXJmYWNlUmVmOwotdHlwZWRlZiBzdHJ1Y3QgQ0dDb2xvclNwYWNlICpDR0Nv
bG9yU3BhY2VSZWY7Ci10eXBlZGVmIHN0cnVjdCBDR0RhdGFQcm92aWRlciAqQ0dEYXRhUHJvdmlk
ZXJSZWY7Ci10eXBlZGVmIHVpbnQzMl90IENHQml0bWFwSW5mbzsKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBJbnRTaXplOwotCi1jbGFzcyBJbWFnZUJ1ZmZlckRhdGEgewotcHVibGlj
OgotICAgIEltYWdlQnVmZmVyRGF0YShjb25zdCBJbnRTaXplJik7Ci0KLSAgICB2b2lkKiBtX2Rh
dGE7Ci0gICAgCi0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBtX2RhdGFQcm92aWRl
cjsKLSAgICBDR0JpdG1hcEluZm8gbV9iaXRtYXBJbmZvOwotICAgIHVuc2lnbmVkIG1fYnl0ZXNQ
ZXJSb3c7Ci0gICAgQ0dDb2xvclNwYWNlUmVmIG1fY29sb3JTcGFjZTsKLSAgICBSZXRhaW5QdHI8
SU9TdXJmYWNlUmVmPiBtX3N1cmZhY2U7Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgIC8vIEltYWdlQnVmZmVyRGF0YV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckRhdGFDRy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJJbWFnZS5oIgorI2luY2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCit0eXBlZGVmIHN0cnVjdCBfX0lP
U3VyZmFjZSAqSU9TdXJmYWNlUmVmOwordHlwZWRlZiBzdHJ1Y3QgQ0dDb2xvclNwYWNlICpDR0Nv
bG9yU3BhY2VSZWY7Cit0eXBlZGVmIHN0cnVjdCBDR0RhdGFQcm92aWRlciAqQ0dEYXRhUHJvdmlk
ZXJSZWY7Cit0eXBlZGVmIHVpbnQzMl90IENHQml0bWFwSW5mbzsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBJbnRTaXplOworCitjbGFzcyBJbWFnZUJ1ZmZlckRhdGEgeworcHVibGlj
OgorICAgIEltYWdlQnVmZmVyRGF0YShjb25zdCBJbnRTaXplJik7CisKKyAgICB2b2lkKiBtX2Rh
dGE7CisgICAgCisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBtX2RhdGFQcm92aWRl
cjsKKyAgICBDR0JpdG1hcEluZm8gbV9iaXRtYXBJbmZvOworICAgIHVuc2lnbmVkIG1fYnl0ZXNQ
ZXJSb3c7CisgICAgQ0dDb2xvclNwYWNlUmVmIG1fY29sb3JTcGFjZTsKKyAgICBSZXRhaW5QdHI8
SU9TdXJmYWNlUmVmPiBtX3N1cmZhY2U7CisKKyAgICBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gZ2V0
RGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIGFjY2Vs
ZXJhdGVSZW5kZXJpbmcsIGJvb2wgdW5tdWx0aXBsaWVkKSBjb25zdDsKKyAgICB2b2lkIHB1dERh
dGEoQnl0ZUFycmF5KiYgc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBjb25zdCBJbnRT
aXplJiBzaXplLCBib29sIGFjY2VsZXJhdGVSZW5kZXJpbmcsIGJvb2wgdW5tdWx0aXBsaWVkKTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlQnVmZmVyRGF0YS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlQnVmZmVyRGF0YS5o
CShyZXZpc2lvbiA4Mzc3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ltYWdlQnVmZmVyRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0Ogot
ICogCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBJbWFnZUJ1ZmZlckRhdGFfaAotI2RlZmluZSBJbWFnZUJ1ZmZlckRh
dGFfaAotCi0jaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgotCi0jaW5jbHVkZSAic2tp
YS9leHQvcGxhdGZvcm1fY2FudmFzLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
SW1hZ2VCdWZmZXJEYXRhIHsKLXB1YmxpYzoKLSAgICBJbWFnZUJ1ZmZlckRhdGEoY29uc3QgSW50
U2l6ZSYpOwotCi0gICAgc2tpYTo6UGxhdGZvcm1DYW52YXMgbV9jYW52YXM7Ci0gICAgUGxhdGZv
cm1Db250ZXh0U2tpYSBtX3BsYXRmb3JtQ29udGV4dDsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAgLy8gSW1hZ2VCdWZmZXJEYXRhX2gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlQnVmZmVyRGF0YVNraWEuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFn
ZUJ1ZmZlckRhdGFTa2lhLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUJ1ZmZlckRhdGFTa2lhLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMDksIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEuaCIK
KworI2luY2x1ZGUgInNraWEvZXh0L3BsYXRmb3JtX2NhbnZhcy5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEltYWdlQnVmZmVyRGF0YSB7CitwdWJsaWM6CisgICAgSW1hZ2VCdWZm
ZXJEYXRhKGNvbnN0IEludFNpemUmKTsKKworICAgIHNraWE6OlBsYXRmb3JtQ2FudmFzIG1fY2Fu
dmFzOworICAgIFBsYXRmb3JtQ29udGV4dFNraWEgbV9wbGF0Zm9ybUNvbnRleHQ7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9oYWlrdS9JbWFnZUJ1ZmZlckRhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9JbWFnZUJ1ZmZlckRhdGEuaAkocmV2aXNpb24gODM3
NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9JbWFnZUJ1ZmZl
ckRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEwIFN0ZXBoYW4gQcOfbXVzIDxzdXBlcnN0aXBwaUBnbXguZGU+Ci0gKgotICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEltYWdlQnVmZmVyRGF0YV9oCi0jZGVm
aW5lIEltYWdlQnVmZmVyRGF0YV9oCi0KLSNpbmNsdWRlIDxCaXRtYXAuaD4KLSNpbmNsdWRlIDxW
aWV3Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSW50U2l6ZTsKLQotY2xhc3Mg
SW1hZ2VCdWZmZXJEYXRhIHsKLXB1YmxpYzoKLSAgICBJbWFnZUJ1ZmZlckRhdGEoY29uc3QgSW50
U2l6ZSYpOwotICAgIH5JbWFnZUJ1ZmZlckRhdGEoKTsKLQotICAgIEJCaXRtYXAgbV9iaXRtYXA7
Ci0gICAgQlZpZXcgbV92aWV3OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gSW1hZ2VCdWZmZXJEYXRhX2gKLQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaGFpa3UvSW1hZ2VCdWZmZXJEYXRhSGFpa3UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9JbWFnZUJ1ZmZlckRhdGFIYWlrdS5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3Uv
SW1hZ2VCdWZmZXJEYXRhSGFpa3UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBTdGVwaGFuIEHDn211cyA8c3VwZXJzdGlwcGlAZ214LmRl
PgorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgPEJpdG1hcC5o
PgorI2luY2x1ZGUgPFZpZXcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJbnRT
aXplOworCitjbGFzcyBJbWFnZUJ1ZmZlckRhdGEgeworcHVibGljOgorICAgIEltYWdlQnVmZmVy
RGF0YShjb25zdCBJbnRTaXplJik7CisgICAgfkltYWdlQnVmZmVyRGF0YSgpOworCisgICAgQkJp
dG1hcCBtX2JpdG1hcDsKKyAgICBCVmlldyBtX3ZpZXc7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1
ZmZlckRhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9JbWFnZUJ1ZmZlckRhdGEuaAkocmV2aXNpb24gODM3NzYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlckRhdGEuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBJbWFnZUJ1ZmZlckRhdGFfaAotI2Rl
ZmluZSBJbWFnZUJ1ZmZlckRhdGFfaAotCi0jaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+Ci0KLSNpbmNsdWRlIDxRUGFpbnRlcj4KLSNpbmNsdWRlIDxRUGl4bWFwPgot
Ci0jaW5jbHVkZSAiT3duUHRyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSW50
U2l6ZTsKLQotY2xhc3MgSW1hZ2VCdWZmZXJEYXRhIHsKLXB1YmxpYzoKLSAgICBJbWFnZUJ1ZmZl
ckRhdGEoY29uc3QgSW50U2l6ZSYpOwotCi0gICAgUUltYWdlIHRvUUltYWdlKCkgY29uc3Q7Ci0K
LSAgICBRUGl4bWFwIG1fcGl4bWFwOwotICAgIE93blB0cjxRUGFpbnRlcj4gbV9wYWludGVyOwot
ICAgIFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAgLy8gSW1hZ2VCdWZmZXJEYXRhX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyRGF0YVF0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJEYXRhUXQuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVm
ZmVyRGF0YVF0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDggR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiSW1hZ2UuaCIKKworI2luY2x1ZGUgIk93blB0ci5oIgorI2luY2x1ZGUgPFFQYWludGVy
PgorI2luY2x1ZGUgPFFQaXhtYXA+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEludFNpemU7CisKK2NsYXNzIEltYWdlQnVmZmVyRGF0YSB7
CitwdWJsaWM6CisgICAgSW1hZ2VCdWZmZXJEYXRhKGNvbnN0IEludFNpemUmKTsKKworICAgIFFJ
bWFnZSB0b1FJbWFnZSgpIGNvbnN0OworCisgICAgUVBpeG1hcCBtX3BpeG1hcDsKKyAgICBPd25Q
dHI8UVBhaW50ZXI+IG1fcGFpbnRlcjsKKyAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlckRhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlckRhdGEuaAkocmV2aXNpb24g
ODM3NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1
ZmZlckRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMSwzNyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
LSAqLwotCi0jaWZuZGVmIEltYWdlQnVmZmVyRGF0YV9oCi0jZGVmaW5lIEltYWdlQnVmZmVyRGF0
YV9oCi0KLSNpbmNsdWRlICJTaGFyZWRCaXRtYXAuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBJbnRTaXplOwotCi1jbGFzcyBJbWFnZUJ1ZmZlckRhdGEgewotcHVibGljOgotICAg
IEltYWdlQnVmZmVyRGF0YShjb25zdCBJbnRTaXplJik7Ci0gICAgUmVmUHRyPFNoYXJlZEJpdG1h
cD4gbV9iaXRtYXA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBJ
bWFnZUJ1ZmZlckRhdGFfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luY2UvSW1hZ2VCdWZmZXJEYXRhV2luY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlckRhdGFXaW5jZS5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZm
ZXJEYXRhV2luY2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKi8KKworI2luY2x1ZGUgIlNoYXJlZEJpdG1hcC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEludFNpemU7CisKK2NsYXNzIEltYWdlQnVmZmVyRGF0YSB7CitwdWJsaWM6Cisg
ICAgSW1hZ2VCdWZmZXJEYXRhKGNvbnN0IEludFNpemUmKTsKKyAgICBSZWZQdHI8U2hhcmVkQml0
bWFwPiBtX2JpdG1hcDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlQnVmZmVyRGF0YS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlQnVmZmVyRGF0
YS5oCShyZXZpc2lvbiA4Mzc3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3d4L0ltYWdlQnVmZmVyRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQzICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDggS2V2aW4gT2xsaXZpZXIuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmbmRlZiBJbWFnZUJ1ZmZlckRhdGFfaAotI2RlZmluZSBJbWFnZUJ1ZmZl
ckRhdGFfaAotCi0KLSNpbmNsdWRlICJPd25QdHIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBJbnRTaXplOwotCi1jbGFzcyBJbWFnZUJ1ZmZlckRhdGEgewotcHVibGljOgotICAg
IEltYWdlQnVmZmVyRGF0YShjb25zdCBJbnRTaXplJik7Ci19OwotCi19ICAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgIC8vIEltYWdlQnVmZmVyRGF0YV9oCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZUJ1ZmZlckRhdGFXeC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlQnVmZmVyRGF0YVd4
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9J
bWFnZUJ1ZmZlckRhdGFXeC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA4IEtldmluIE9sbGl2aWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJPd25QdHIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBJbnRTaXplOworCitjbGFzcyBJbWFnZUJ1ZmZlckRhdGEgeworcHVibGljOgorICAgIEltYWdl
QnVmZmVyRGF0YShjb25zdCBJbnRTaXplJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89490</attachid>
            <date>2011-04-13 16:29:08 -0700</date>
            <delta_ts>2011-04-13 16:36:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58084-20110413162908.patch</filename>
            <type>text/plain</type>
            <size>69379</size>
            <attacher name="Matthew Delaney">mdelaney7</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzNzgxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMDQtMTMgIE1hdHRoZXcg
RGVsYW5leSAgPG1kZWxhbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbQ0ddIFJlZmFjdG9yIGdldC9wdXRJbWFnZURhdGEgcm91
dGluZXMgZnJvbSBJbWFnZUJ1ZmZlckNHIGludG8gYSAobmV3KSBJbWFnZUJ1ZmZlckRhdGFDRy5j
cHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4MDg0
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBXZWJDb3JlLmd5
cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJEYXRhLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyRGF0YS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyRGF0YUNhaXJvLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6cHV0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyOjpwdXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpJbWFnZUJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6aGF2ZVZJbWFnZVJvdW5kaW5nRXJyb3JGaXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJEYXRhOjpnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGF0YTo6
cHV0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRh
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJE
YXRhQ0cuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1h
Z2VCdWZmZXJEYXRhLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vSW1hZ2VCdWZmZXJEYXRhU2tpYS5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9oYWlrdS9JbWFnZUJ1ZmZlckRhdGEuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9oYWlrdS9JbWFnZUJ1ZmZlckRhdGFIYWlrdS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlckRhdGEuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlckRhdGFRdC5oOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlckRhdGEuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlckRhdGFX
aW5jZS5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZUJ1ZmZl
ckRhdGEuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZUJ1
ZmZlckRhdGFXeC5oOiBBZGRlZC4KKwogMjAxMS0wNC0xMyAgQWxleGlzIE1lbmFyZCAgPGFsZXhp
cy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEts
aW5nLgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gODM3NzYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTgzMSw2ICs4MzEsNyBAQAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJE
YXRhLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaCcsCkBAIC04NDgsNyArODQ5LDcgQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9UZXh0UmVuZGVyaW5nTW9kZS5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL1R5cGVzZXR0aW5nRmVhdHVyZXMuaCcsCi0gICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhLmgnLAorICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvTWVkaWFQbGF5ZXJQcm94eS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5oJywKQEAgLTM5MzEsNyArMzkzMiw3IEBA
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fp
cm8uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJEYXRhLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YUNhaXJvLmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9Pd25QdHJDYWlyby5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL093blB0ckNhaXJvLmgnLApAQCAtMzk5Nyw3ICszOTk4LDcgQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9IYXJmYnV6elNraWEuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9IYXJmYnV6elNraWEu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSWNvbkNocm9taXVt
LmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VCdWZm
ZXJEYXRhLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdl
QnVmZmVyRGF0YVNraWEuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vSW1hZ2VDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ltYWdlQ2hyb21pdW1NYWMubW0nLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAnLApAQCAtNDIwMiw3ICs0MjAzLDcg
QEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9HcmFkaWVudEhhaWt1LmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvR3JhcGhpY3NDb250ZXh0
SGFpa3UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9JY29uSGFp
a3UuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9JbWFnZUJ1ZmZl
ckRhdGEuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW1hZ2VCdWZm
ZXJEYXRhSGFpa3UuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW1h
Z2VCdWZmZXJIYWlrdS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1
L0ltYWdlSGFpa3UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9J
bnRQb2ludEhhaWt1LmNwcCcsCkBAIC00Mjk1LDcgKzQyOTYsNyBAQAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9xdC9JY29uUXQuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9xdC9JbWFnZUJ1ZmZlckRhdGEuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvSW1hZ2VCdWZmZXJEYXRhUXQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0ltYWdlRGVjb2RlclF0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvSW1hZ2VEZWNvZGVyUXQuaCcsCkBAIC00NDQzLDcgKzQ0NDQsNyBAQAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dseXBoUGFnZVRyZWVOb2RlV2luQ0UuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFkaWVudFdpbkNFLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0Uu
Y3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlckRh
dGEuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJE
YXRhV2luY2UuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VC
dWZmZXJXaW5DRS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0lt
YWdlV2luQ0UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9NZWRp
YVBsYXllclByaXZhdGVXaW5DRS5oJywKQEAgLTQ0NjksNyArNDQ3MCw3IEBACiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3Mvd3gvR3JhZGllbnRXeC5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL3d4L0dyYXBoaWNzQ29udGV4dFd4LmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSWNvbld4LmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3Mvd3gvSW1hZ2VCdWZmZXJEYXRhLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL3d4L0ltYWdlQnVmZmVyRGF0YVd4LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL3d4L0ltYWdlQnVmZmVyV3guY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy93eC9JbWFnZVd4LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mvd3gv
SW50UG9pbnRXeC5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDgzNzc2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTI3MDkzLDYgKzI3MDkz
LDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1xJbWFnZUJ1ZmZlckRhdGEuaCIKKwkJCQkJPgorCQkJCTwv
RmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNz
XEltYWdlT2JzZXJ2ZXIuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KQEAgLTI4MDI4LDYgKzI4MDMy
LDI2IEBACiAJCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgogCQkJCQk8L0ZpbGU+CiAJCQkJCTxG
aWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGNnXEltYWdlQnVm
ZmVyRGF0YUNHLmNwcCIKKwkJCQkJCT4KKwkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJ
CU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKKwkJCQkJCQk+CisJCQkJCQkJPFRvb2wKKwkJCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKKwkJCQkJCQkvPgorCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMy
IgorCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJCT4KKwkJCQkJCQk8VG9v
bAorCQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJCS8+CisJCQkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPgorCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCiAJCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGNnXEltYWdlQ0cuY3BwIgogCQkJCQkJPgogCQkJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA4Mzc3NikKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtNjQ4LDYgKzY0OCw5IEBACiAJCTIyNzc3NzYwMTM0NURFQTkwMDhFQTQ1NSAvKiBJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDIyNzc3NzVGMTM0NURFQTkwMDhFQTQ1NSAvKiBJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkyMjg4NUU2NDEzMDFBRTRDMDA1MjZFNjggLyogSlNET01JbXBsZW1lbnRhdGlvbkN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMjg4NUU2
MzEzMDFBRTRDMDA1MjZFNjggLyogSlNET01JbXBsZW1lbnRhdGlvbkN1c3RvbS5jcHAgKi87IH07
CiAJCTIyOEMyODQ1MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyOEMyODQ0MTBEODI1MDAw
MDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkyMjkyQjI3QzEzNTY2Njk0MDBDRjExRUYgLyogSW1hZ2VC
dWZmZXJEYXRhQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMjI5MkIyN0IxMzU2NjY5NDAwQ0YxMUVGIC8qIEltYWdlQnVmZmVyRGF0YUNHLmNwcCAq
LzsgfTsKKwkJMjJCRDlGN0YxMzUzNjI1QzAwOUJEMTAyIC8qIEltYWdlQnVmZmVyRGF0YS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjJCRDlGN0QxMzUz
NjI1QzAwOUJEMTAyIC8qIEltYWdlQnVmZmVyRGF0YS5oICovOyB9OworCQkyMkJEOUY4MTEzNTM2
NEZFMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRhQ0cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyQkQ5RjgwMTM1MzY0RkUwMDlCRDEwMiAvKiBJbWFn
ZUJ1ZmZlckRhdGFDRy5oICovOyB9OwogCQkyNDVEODBBMzEzMjgwRTQwMDAzNDkyQTYgLyogU1FM
Q2FsbGJhY2tXcmFwcGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyNDVEODBBMjEzMjgwRTQwMDAzNDkyQTYgLyogU1FMQ2FsbGJhY2tXcmFwcGVyLmgg
Ki87IH07CiAJCTI0RjU0RUFDMTAxRkU5MTQwMDBBRTc0MSAvKiBBcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNEY1
NEVBQTEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwICovOyB9Owog
CQkyNEY1NEVBRDEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRpb25DYWNoZUhvc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI0RjU0RUFCMTAxRkU5
MTQwMDBBRTc0MSAvKiBBcHBsaWNhdGlvbkNhY2hlSG9zdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKCk7IH07IH07CkBAIC01MTYyLDcgKzUxNjUsNiBAQAogCQlCQ0E4QzgxRjExRTNE
MzY5MDA4MTJGQjcgLyogQmFja0ZvcndhcmRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQThDODFEMTFFM0QzNjkwMDgxMkZCNyAv
KiBCYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwICovOyB9OwogCQlCQ0E4Q0E1RjExRTRFNkQxMDA4
MTJGQjcgLyogQmFja0ZvcndhcmRMaXN0SW1wbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0E4Q0E1RDExRTRFNkQxMDA4MTJGQjcgLyogQmFja0Zv
cndhcmRMaXN0SW1wbC5jcHAgKi87IH07CiAJCUJDQThDQTYwMTFFNEU2RDEwMDgxMkZCNyAvKiBC
YWNrRm9yd2FyZExpc3RJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0E4Q0E1RTExRTRFNkQxMDA4MTJGQjcgLyogQmFja0ZvcndhcmRMaXN0SW1w
bC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUJD
QTk3OTE3MTIxNUQwNTUwMDVDNDg1QyAvKiBJbWFnZUJ1ZmZlckRhdGEuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTk3OTE2MTIxNUQwNTUwMDVDNDg1
QyAvKiBJbWFnZUJ1ZmZlckRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlCQ0FBOTBDMzBBN0VCQTYwMDA4QjEyMjkgLyogU2Nyb2xsYmFyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUE5MEMy
MEE3RUJBNjAwMDhCMTIyOSAvKiBTY3JvbGxiYXIuY3BwICovOyB9OwogCQlCQ0FDRjNCQzEwNzI5
MjFBMDBDMEM4QTMgLyogVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUNGM0JBMTA3MjkyMUEwMEMwQzhBMyAv
KiBVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwICovOyB9OwogCQlCQ0FDRjNCRDEwNzI5MjFBMDBD
MEM4QTMgLyogVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0FDRjNCQjEwNzI5MjFBMDBDMEM4QTMgLyogVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTcwODQsNiArNzA4Niw5IEBACiAJCTIyNzc3NzVGMTM0NURFQTkwMDhFQTQ1
NSAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTIyODg1RTYzMTMwMUFFNEMwMDUyNkU2OCAvKiBKU0RPTUltcGxlbWVudGF0aW9u
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NSW1w
bGVtZW50YXRpb25DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyMjhD
Mjg0NDEwRDgyNTAwMDA5RDBEMEUgLyogU2NyaXB0V3JhcHBhYmxlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdFdyYXBwYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkyMjkyQjI3QjEzNTY2Njk0MDBDRjExRUYgLyogSW1hZ2VCdWZmZXJEYXRhQ0cu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJEYXRh
Q0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyMkJEOUY3RDEzNTM2MjVDMDA5
QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEltYWdlQnVmZmVyRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyMkJE
OUY4MDEzNTM2NEZFMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRhQ0cuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJEYXRhQ0cuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMjQ0MkJCRjgxMTk0QzlEMzAwRDQ5NDY5IC8qIEhhc2hDaGFuZ2VFdmVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYXNoQ2hhbmdlRXZlbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjQ1RDgwQTIxMzI4MEU0MDAwMzQ5MkE2IC8q
IFNRTENhbGxiYWNrV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
UUxDYWxsYmFja1dyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjRGNTRF
QUExMDFGRTkxNDAwMEFFNzQxIC8qIEFwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNjM5LDcgKzExNjQ0LDYgQEAKIAkJQkNBOEM4
MUQxMUUzRDM2OTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0E4Q0E1RDExRTRFNkQxMDA4MTJGQjcgLyog
QmFja0ZvcndhcmRMaXN0SW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBCYWNrRm9yd2FyZExpc3RJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkNBOENBNUUxMUU0RTZEMTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkTGlzdEltcGwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFja0ZvcndhcmRMaXN0SW1wbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQ0E5NzkxNjEyMTVEMDU1MDA1QzQ4NUMgLyogSW1h
Z2VCdWZmZXJEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVm
ZmVyRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0FBOTBDMjBBN0VCQTYw
MDA4QjEyMjkgLyogU2Nyb2xsYmFyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTY3JvbGxiYXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0FD
RjNCQTEwNzI5MjFBMDBDMEM4QTMgLyogVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJDb250ZW50VVJMUGF0dGVybi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQUNGM0JCMTA3MjkyMUEwMEMwQzhBMyAv
KiBVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNzY4Nyw3ICsxNzY5MSw4IEBACiAJCQkJOTM0OTA3RTMxMjVCQkJDODAwN0YyM0EwIC8qIEdy
YXBoaWNzQ29udGV4dENHLmggKi8sCiAJCQkJQTgwRDY3MDcwRTlFOURFQjAwRTQyMEYwIC8qIEdy
YXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmggKi8sCiAJCQkJQjJBMTBCOTMwQjM4MThE
NzAwMDk5QUE0IC8qIEltYWdlQnVmZmVyQ0cuY3BwICovLAotCQkJCUJDQTk3OTE2MTIxNUQwNTUw
MDVDNDg1QyAvKiBJbWFnZUJ1ZmZlckRhdGEuaCAqLywKKwkJCQkyMjkyQjI3QjEzNTY2Njk0MDBD
RjExRUYgLyogSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwICovLAorCQkJCTIyQkQ5RjgwMTM1MzY0RkUw
MDlCRDEwMiAvKiBJbWFnZUJ1ZmZlckRhdGFDRy5oICovLAogCQkJCUIyNzUzNTMwMEIwNTM4MTQw
MDJDRTY0RiAvKiBJbWFnZUNHLmNwcCAqLywKIAkJCQlCMjc1MzUzMTBCMDUzODE0MDAyQ0U2NEYg
LyogSW1hZ2VTb3VyY2VDRy5jcHAgKi8sCiAJCQkJNEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8q
IEltYWdlU291cmNlQ0cuaCAqLywKQEAgLTE3ODIzLDYgKzE3ODI4LDcgQEAKIAkJCQlCMjc1MzU0
MTBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2UuY3BwICovLAogCQkJCUIyNzUzNTQyMEIwNTM4MTQw
MDJDRTY0RiAvKiBJbWFnZS5oICovLAogCQkJCUIyQTEwQjkxMEIzODE4QkQwMDA5OUFBNCAvKiBJ
bWFnZUJ1ZmZlci5oICovLAorCQkJCTIyQkQ5RjdEMTM1MzYyNUMwMDlCRDEwMiAvKiBJbWFnZUJ1
ZmZlckRhdGEuaCAqLywKIAkJCQlCQzdGNDRBNzBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNl
cnZlci5oICovLAogCQkJCUIyNzUzNTQzMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZS5o
ICovLAogCQkJCUIyNzUzNTQ0MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludC5oICovLApAQCAt
MjEyODQsNyArMjEyOTAsNiBAQAogCQkJCThBQjRCQzc3MTI2RkRCNzEwMERFQjcyNyAvKiBJZ25v
cmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjI3NTM1NzAwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MkExMEI5MjBCMzgxOEJEMDAwOTlBQTQgLyogSW1hZ2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAot
CQkJCUJDQTk3OTE3MTIxNUQwNTUwMDVDNDg1QyAvKiBJbWFnZUJ1ZmZlckRhdGEuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3Nzk3OTFBMEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk3MjA1QUI2MTIzOTI5MTAwMEIxNzM4MCAvKiBJbWFnZURvY3VtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RDMjEyNTFGMTJEMDAzRUYyNjkgLyogSW1hZ2VJ
bnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjI5MDYsNiArMjI5MTEsOCBAQAogCQkJCTkz
RjE5OUVEMDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xUUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5NzdFMkUwRjEyRjBGQzlDMDBDMTMzNzkgLyogWFNTRmlsdGVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQkyMkJEOUY3RjEzNTM2MjVDMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJE
YXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQkyMkJEOUY4MTEzNTM2NEZFMDA5QkQxMDIgLyogSW1h
Z2VCdWZmZXJEYXRhQ0cuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjU2MDQsNiArMjU2MTEsNyBAQAog
CQkJCTkzRjE5QjA1MDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNv
ZGVTb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0UyRTBFMTJGMEZDOUMwMEMxMzM3OSAv
KiBYU1NGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjI5MkIyN0MxMzU2NjY5NDAwQ0Yx
MUVGIC8qIEltYWdlQnVmZmVyRGF0YUNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCShyZXZpc2lvbiA4
Mzc3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQxLDEwICs0MSw2IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBQ
TEFURk9STShDQSkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJV
SUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkp
Ci0jZGVmaW5lIFdURl9VU0VfSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFIDEKLSNlbmRp
ZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBHcmFwaGljc0NvbnRleHQ7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckRhdGEuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckRhdGEuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyRGF0YS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmIFBMQVRGT1JNKENHKQorI2luY2x1ZGUgIkltYWdlQnVmZmVyRGF0YUNHLmgiCisjZWxp
ZiBQTEFURk9STShDQUlSTykKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckRhdGFDYWlyby5oIgorI2Vs
aWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJEYXRhUXQuaCIKKyNlbGlmIFVT
RShTS0lBKQorI2luY2x1ZGUgIkltYWdlQnVmZmVyRGF0YVNraWEuaCIKKyNlbGlmIFBMQVRGT1JN
KEhBSUtVKQorI2luY2x1ZGUgIkltYWdlQnVmZmVyRGF0YUhhaWt1LmgiCisjZWxpZiBPUyhXSU5D
RSkKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckRhdGFXaW5jZS5oIgorI2VsaWYgUExBVEZPUk0oV1gp
CisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJEYXRhV3guaCIKKyNlbmRpZgorCisjaWYgKFBMQVRGT1JN
KE1BQykgJiYgUExBVEZPUk0oQ0EpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAh
ZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9X
X0xFT1BBUkQpKQorI2RlZmluZSBXVEZfVVNFX0lPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9S
RSAxCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YS5oCShyZXZpc2lvbiA4Mzc3NikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEltYWdlQnVm
ZmVyRGF0YV9oCi0jZGVmaW5lIEltYWdlQnVmZmVyRGF0YV9oCi0KLSNpbmNsdWRlICJQbGF0Zm9y
bUNvbnRleHRDYWlyby5oIgotCi10eXBlZGVmIHN0cnVjdCBfY2Fpcm9fc3VyZmFjZSBjYWlyb19z
dXJmYWNlX3Q7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSW50U2l6ZTsKLQotY2xh
c3MgSW1hZ2VCdWZmZXJEYXRhIHsKLXB1YmxpYzoKLSAgICBJbWFnZUJ1ZmZlckRhdGEoY29uc3Qg
SW50U2l6ZSYpOwotCi0gICAgY2Fpcm9fc3VyZmFjZV90KiBtX3N1cmZhY2U7Ci0gICAgUGxhdGZv
cm1Db250ZXh0Q2Fpcm8gbV9wbGF0Zm9ybUNvbnRleHQ7Ci19OwotCi19ICAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgIC8vIEltYWdlQnVmZmVyRGF0YV9oCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWlyby5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyRGF0YUNhaXJvLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWlyby5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCisK
K3R5cGVkZWYgc3RydWN0IF9jYWlyb19zdXJmYWNlIGNhaXJvX3N1cmZhY2VfdDsKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBJbnRTaXplOworCitjbGFzcyBJbWFnZUJ1ZmZlckRhdGEg
eworcHVibGljOgorICAgIEltYWdlQnVmZmVyRGF0YShjb25zdCBJbnRTaXplJik7CisKKyAgICBj
YWlyb19zdXJmYWNlX3QqIG1fc3VyZmFjZTsKKyAgICBQbGF0Zm9ybUNvbnRleHRDYWlybyBtX3Bs
YXRmb3JtQ29udGV4dDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cu
Y3BwCShyZXZpc2lvbiA4Mzc3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxNCArNDIsNiBAQAog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDxtYXRoLmg+CiAKLSNpZiBVU0Uo
QUNDRUxFUkFURSkKLSNpbmNsdWRlIDxBY2NlbGVyYXRlL0FjY2VsZXJhdGUuaD4KLSNlbmRpZgot
Ci0jaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKLSNpbmNsdWRlIDxJT1N1
cmZhY2UvSU9TdXJmYWNlLmg+Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZP
Uk0oQ0hST01JVU0pCiAjaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2VuZGlm
CkBAIC01OCwxNiArNTAsNiBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLSNpZiBVU0UoQUNDRUxFUkFURSkKLS8vIFRoZSB2SW1hZ2UgdW5wcmVtdWx0aXBs
eSByb3V0aW5lIGhhZCBhIHJvdW5kaW5nIGJ1ZyBiZWZvcmUgMTAuNi43IDxyZGFyOi8vcHJvYmxl
bS84NjMxNTQ4Pgotc3RhdGljIGJvb2wgaGF2ZVZJbWFnZVJvdW5kaW5nRXJyb3JGaXgoKQotewot
ICAgIFNJbnQzMiB2ZXJzaW9uOwotICAgIHN0YXRpYyBib29sIHJlc3VsdCA9IChHZXN0YWx0KGdl
c3RhbHRTeXN0ZW1WZXJzaW9uLCAmdmVyc2lvbikgPT0gbm9FcnIgJiYgdmVyc2lvbiA+IDB4MTA2
Nik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLSNlbmRpZgotCiAjaWYgVVNFKElPU1VSRkFDRV9D
QU5WQVNfQkFDS0lOR19TVE9SRSkKIHN0YXRpYyBjb25zdCBpbnQgbWF4SU9TdXJmYWNlRGltZW5z
aW9uID0gNDA5NjsKIHN0YXRpYyBjb25zdCBpbnQgbWluSU9TdXJmYWNlQXJlYSA9IDUwICogMTAw
OwpAQCAtMTE1LDE0ICs5Nyw2IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VJbWFnZURhdGEodm9pZCos
IGNvbnMKICAgICBmYXN0RnJlZShjb25zdF9jYXN0PHZvaWQqPihkYXRhKSk7CiB9CiAKLUltYWdl
QnVmZmVyRGF0YTo6SW1hZ2VCdWZmZXJEYXRhKGNvbnN0IEludFNpemUmKQotICAgIDogbV9kYXRh
KDApCi0jaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKLSAgICAsIG1fc3Vy
ZmFjZSgwKQotI2VuZGlmCi17Ci19Ci0KIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJ
bnRTaXplJiBzaXplLCBDb2xvclNwYWNlIGltYWdlQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBib29sJiBzdWNjZXNzKQogICAgIDogbV9kYXRhKHNpemUpCiAgICAgLCBt
X3NpemUoc2l6ZSkKQEAgLTI3NywyNTEgKzI1MSwzMiBAQCB2b2lkIEltYWdlQnVmZmVyOjpjbGlw
KEdyYXBoaWNzQ29udGV4dCogCiAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3JtQ29u
dGV4dFRvQ2xpcCwgLXJlY3QueCgpLCAtcmVjdC55KCkgLSByZWN0LmhlaWdodCgpKTsKIH0KIAot
dGVtcGxhdGUgPE11bHRpcGx5IG11bHRpcGxpZWQ+Ci1QYXNzUmVmUHRyPEJ5dGVBcnJheT4gZ2V0
SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEltYWdlQnVmZmVyRGF0YSYgaW1h
Z2VEYXRhLCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIGFjY2VsZXJhdGVSZW5kZXJpbmcpCi17
Ci0gICAgUmVmUHRyPEJ5dGVBcnJheT4gcmVzdWx0ID0gQnl0ZUFycmF5OjpjcmVhdGUocmVjdC53
aWR0aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpOwotICAgIHVuc2lnbmVkIGNoYXIqIGRhdGEgPSBy
ZXN1bHQtPmRhdGEoKTsKLQotICAgIGlmIChyZWN0LngoKSA8IDAgfHwgcmVjdC55KCkgPCAwIHx8
IHJlY3QubWF4WCgpID4gc2l6ZS53aWR0aCgpIHx8IHJlY3QubWF4WSgpID4gc2l6ZS5oZWlnaHQo
KSkKLSAgICAgICAgbWVtc2V0KGRhdGEsIDAsIHJlc3VsdC0+bGVuZ3RoKCkpOwotCi0gICAgaW50
IG9yaWdpbnggPSByZWN0LngoKTsKLSAgICBpbnQgZGVzdHggPSAwOwotICAgIGlmIChvcmlnaW54
IDwgMCkgewotICAgICAgICBkZXN0eCA9IC1vcmlnaW54OwotICAgICAgICBvcmlnaW54ID0gMDsK
LSAgICB9Ci0gICAgaW50IGVuZHggPSByZWN0Lm1heFgoKTsKLSAgICBpZiAoZW5keCA+IHNpemUu
d2lkdGgoKSkKLSAgICAgICAgZW5keCA9IHNpemUud2lkdGgoKTsKLSAgICBpbnQgd2lkdGggPSBl
bmR4IC0gb3JpZ2lueDsKLQotICAgIGludCBvcmlnaW55ID0gcmVjdC55KCk7Ci0gICAgaW50IGRl
c3R5ID0gMDsKLSAgICBpZiAob3JpZ2lueSA8IDApIHsKLSAgICAgICAgZGVzdHkgPSAtb3JpZ2lu
eTsKLSAgICAgICAgb3JpZ2lueSA9IDA7Ci0gICAgfQotICAgIGludCBlbmR5ID0gcmVjdC5tYXhZ
KCk7Ci0gICAgaWYgKGVuZHkgPiBzaXplLmhlaWdodCgpKQotICAgICAgICBlbmR5ID0gc2l6ZS5o
ZWlnaHQoKTsKLSAgICBpbnQgaGVpZ2h0ID0gZW5keSAtIG9yaWdpbnk7Ci0KLSAgICBpZiAod2lk
dGggPD0gMCB8fCBoZWlnaHQgPD0gMCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7
Ci0KLSAgICB1bnNpZ25lZCBkZXN0Qnl0ZXNQZXJSb3cgPSA0ICogcmVjdC53aWR0aCgpOwotICAg
IHVuc2lnbmVkIGNoYXIqIGRlc3RSb3dzID0gZGF0YSArIGRlc3R5ICogZGVzdEJ5dGVzUGVyUm93
ICsgZGVzdHggKiA0OwotCi0gICAgdW5zaWduZWQgc3JjQnl0ZXNQZXJSb3c7Ci0gICAgdW5zaWdu
ZWQgY2hhciogc3JjUm93czsKLQotICAgIGlmICghYWNjZWxlcmF0ZVJlbmRlcmluZykgewotICAg
ICAgICBzcmNCeXRlc1BlclJvdyA9IDQgKiBzaXplLndpZHRoKCk7Ci0gICAgICAgIHNyY1Jvd3Mg
PSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihpbWFnZURhdGEubV9kYXRhKSArIG9y
aWdpbnkgKiBzcmNCeXRlc1BlclJvdyArIG9yaWdpbnggKiA0OwotCi0jaWYgVVNFKEFDQ0VMRVJB
VEUpCi0gICAgICAgIGlmIChtdWx0aXBsaWVkID09IFVubXVsdGlwbGllZCAmJiBoYXZlVkltYWdl
Um91bmRpbmdFcnJvckZpeCgpKSB7Ci0gICAgICAgICAgICB2SW1hZ2VfQnVmZmVyIHNyYzsKLSAg
ICAgICAgICAgIHNyYy5oZWlnaHQgPSBoZWlnaHQ7Ci0gICAgICAgICAgICBzcmMud2lkdGggPSB3
aWR0aDsKLSAgICAgICAgICAgIHNyYy5yb3dCeXRlcyA9IHNyY0J5dGVzUGVyUm93OwotICAgICAg
ICAgICAgc3JjLmRhdGEgPSBzcmNSb3dzOwotCi0gICAgICAgICAgICB2SW1hZ2VfQnVmZmVyIGRz
dDsKLSAgICAgICAgICAgIGRzdC5oZWlnaHQgPSBoZWlnaHQ7Ci0gICAgICAgICAgICBkc3Qud2lk
dGggPSB3aWR0aDsKLSAgICAgICAgICAgIGRzdC5yb3dCeXRlcyA9IGRlc3RCeXRlc1BlclJvdzsK
LSAgICAgICAgICAgIGRzdC5kYXRhID0gZGVzdFJvd3M7Ci0KLSAgICAgICAgICAgIHZJbWFnZVVu
cHJlbXVsdGlwbHlEYXRhX1JHQkE4ODg4KCZzcmMsICZkc3QsIGt2SW1hZ2VOb0ZsYWdzKTsKLSAg
ICAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwotICAgICAgICB9Ci0jZW5kaWYKLSAg
ICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7ICsreSkgewotICAgICAgICAgICAgZm9y
IChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7Ci0gICAgICAgICAgICAgICAgaW50IGJhc2V4
ID0geCAqIDQ7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBhbHBoYSA9IHNyY1Jvd3Nb
YmFzZXggKyAzXTsKLSAgICAgICAgICAgICAgICBpZiAobXVsdGlwbGllZCA9PSBVbm11bHRpcGxp
ZWQgJiYgYWxwaGEpIHsKLSAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXhdID0gKHNy
Y1Jvd3NbYmFzZXhdICogMjU1KSAvIGFscGhhOwotICAgICAgICAgICAgICAgICAgICBkZXN0Um93
c1tiYXNleCArIDFdID0gKHNyY1Jvd3NbYmFzZXggKyAxXSAqIDI1NSkgLyBhbHBoYTsKLSAgICAg
ICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAyXSA9IChzcmNSb3dzW2Jhc2V4ICsgMl0g
KiAyNTUpIC8gYWxwaGE7Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgM10g
PSBhbHBoYTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcmVp
bnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGRlc3RSb3dzICsgYmFzZXgpWzBdID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50MzJfdCo+KHNyY1Jvd3MgKyBiYXNleClbMF07Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBzcmNSb3dzICs9IHNyY0J5dGVzUGVyUm93OwotICAgICAgICAgICAgZGVzdFJv
d3MgKz0gZGVzdEJ5dGVzUGVyUm93OwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSNpZiBVU0Uo
SU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQotICAgICAgICBJT1N1cmZhY2VSZWYgc3Vy
ZmFjZSA9IGltYWdlRGF0YS5tX3N1cmZhY2UuZ2V0KCk7Ci0gICAgICAgIElPU3VyZmFjZUxvY2so
c3VyZmFjZSwga0lPU3VyZmFjZUxvY2tSZWFkT25seSwgMCk7Ci0gICAgICAgIHNyY0J5dGVzUGVy
Um93ID0gSU9TdXJmYWNlR2V0Qnl0ZXNQZXJSb3coc3VyZmFjZSk7Ci0gICAgICAgIHNyY1Jvd3Mg
PSAodW5zaWduZWQgY2hhciopKElPU3VyZmFjZUdldEJhc2VBZGRyZXNzKHN1cmZhY2UpKSArIG9y
aWdpbnkgKiBzcmNCeXRlc1BlclJvdyArIG9yaWdpbnggKiA0OwotICAgICAgICAKLSAgICAgICAg
Zm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7ICsreSkgewotICAgICAgICAgICAgZm9yIChpbnQg
eCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7Ci0gICAgICAgICAgICAgICAgaW50IGJhc2V4ID0geCAq
IDQ7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBhbHBoYSA9IHNyY1Jvd3NbYmFzZXgg
KyAzXTsKLSAgICAgICAgICAgICAgICBpZiAobXVsdGlwbGllZCA9PSBVbm11bHRpcGxpZWQgJiYg
YWxwaGEpIHsKLSAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXhdID0gKHNyY1Jvd3Nb
YmFzZXggKyAyXSAqIDI1NSkgLyBhbHBoYTsKLSAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3Nb
YmFzZXggKyAxXSA9IChzcmNSb3dzW2Jhc2V4ICsgMV0gKiAyNTUpIC8gYWxwaGE7Ci0gICAgICAg
ICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMl0gPSAoc3JjUm93c1tiYXNleF0gKiAyNTUp
IC8gYWxwaGE7Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgM10gPSBhbHBo
YTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBkZXN0Um93
c1tiYXNleF0gPSBzcmNSb3dzW2Jhc2V4ICsgMl07Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RS
b3dzW2Jhc2V4ICsgMV0gPSBzcmNSb3dzW2Jhc2V4ICsgMV07Ci0gICAgICAgICAgICAgICAgICAg
IGRlc3RSb3dzW2Jhc2V4ICsgMl0gPSBzcmNSb3dzW2Jhc2V4XTsKLSAgICAgICAgICAgICAgICAg
ICAgZGVzdFJvd3NbYmFzZXggKyAzXSA9IGFscGhhOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHNyY1Jvd3MgKz0gc3JjQnl0ZXNQZXJSb3c7Ci0gICAgICAg
ICAgICBkZXN0Um93cyArPSBkZXN0Qnl0ZXNQZXJSb3c7Ci0gICAgICAgIH0KLSAgICAgICAgSU9T
dXJmYWNlVW5sb2NrKHN1cmZhY2UsIGtJT1N1cmZhY2VMb2NrUmVhZE9ubHksIDApOwotI2Vsc2UK
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZW5kaWYKLSAgICB9Ci0gICAgCi0gICAg
cmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7Ci19Ci0KIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFn
ZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QpIGNv
bnN0CiB7CiAgICAgaWYgKG1fYWNjZWxlcmF0ZVJlbmRlcmluZykKICAgICAgICAgQ0dDb250ZXh0
Rmx1c2goY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgcmV0dXJuIGdldEltYWdl
RGF0YTxVbm11bHRpcGxpZWQ+KHJlY3QsIG1fZGF0YSwgbV9zaXplLCBtX2FjY2VsZXJhdGVSZW5k
ZXJpbmcpOworICAgIHJldHVybiBtX2RhdGEuZ2V0RGF0YShyZWN0LCBtX3NpemUsIG1fYWNjZWxl
cmF0ZVJlbmRlcmluZywgdHJ1ZSk7CiB9CiAKIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1
ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0KSBjb25z
dAogewogICAgIGlmIChtX2FjY2VsZXJhdGVSZW5kZXJpbmcpCiAgICAgICAgIENHQ29udGV4dEZs
dXNoKGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCkpOwotICAgIHJldHVybiBnZXRJbWFnZURh
dGE8UHJlbXVsdGlwbGllZD4ocmVjdCwgbV9kYXRhLCBtX3NpemUsIG1fYWNjZWxlcmF0ZVJlbmRl
cmluZyk7Ci19Ci0KLXRlbXBsYXRlIDxNdWx0aXBseSBtdWx0aXBsaWVkPgotdm9pZCBwdXRJbWFn
ZURhdGEoQnl0ZUFycmF5KiYgc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBJbWFnZUJ1
ZmZlckRhdGEmIGltYWdlRGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBhY2NlbGVyYXRl
UmVuZGVyaW5nKQotewotICAgIEFTU0VSVChzb3VyY2VSZWN0LndpZHRoKCkgPiAwKTsKLSAgICBB
U1NFUlQoc291cmNlUmVjdC5oZWlnaHQoKSA+IDApOwotCi0gICAgaW50IG9yaWdpbnggPSBzb3Vy
Y2VSZWN0LngoKTsKLSAgICBpbnQgZGVzdHggPSBkZXN0UG9pbnQueCgpICsgc291cmNlUmVjdC54
KCk7Ci0gICAgQVNTRVJUKGRlc3R4ID49IDApOwotICAgIEFTU0VSVChkZXN0eCA8IHNpemUud2lk
dGgoKSk7Ci0gICAgQVNTRVJUKG9yaWdpbnggPj0gMCk7Ci0gICAgQVNTRVJUKG9yaWdpbnggPD0g
c291cmNlUmVjdC5tYXhYKCkpOwotCi0gICAgaW50IGVuZHggPSBkZXN0UG9pbnQueCgpICsgc291
cmNlUmVjdC5tYXhYKCk7Ci0gICAgQVNTRVJUKGVuZHggPD0gc2l6ZS53aWR0aCgpKTsKLQotICAg
IGludCB3aWR0aCA9IGVuZHggLSBkZXN0eDsKLQotICAgIGludCBvcmlnaW55ID0gc291cmNlUmVj
dC55KCk7Ci0gICAgaW50IGRlc3R5ID0gZGVzdFBvaW50LnkoKSArIHNvdXJjZVJlY3QueSgpOwot
ICAgIEFTU0VSVChkZXN0eSA+PSAwKTsKLSAgICBBU1NFUlQoZGVzdHkgPCBzaXplLmhlaWdodCgp
KTsKLSAgICBBU1NFUlQob3JpZ2lueSA+PSAwKTsKLSAgICBBU1NFUlQob3JpZ2lueSA8PSBzb3Vy
Y2VSZWN0Lm1heFkoKSk7Ci0KLSAgICBpbnQgZW5keSA9IGRlc3RQb2ludC55KCkgKyBzb3VyY2VS
ZWN0Lm1heFkoKTsKLSAgICBBU1NFUlQoZW5keSA8PSBzaXplLmhlaWdodCgpKTsKLSAgICBpbnQg
aGVpZ2h0ID0gZW5keSAtIGRlc3R5OwotCi0gICAgaWYgKHdpZHRoIDw9IDAgfHwgaGVpZ2h0IDw9
IDApCi0gICAgICAgIHJldHVybjsKLQotICAgIHVuc2lnbmVkIHNyY0J5dGVzUGVyUm93ID0gNCAq
IHNvdXJjZVNpemUud2lkdGgoKTsKLSAgICB1bnNpZ25lZCBjaGFyKiBzcmNSb3dzID0gc291cmNl
LT5kYXRhKCkgKyBvcmlnaW55ICogc3JjQnl0ZXNQZXJSb3cgKyBvcmlnaW54ICogNDsKLSAgICB1
bnNpZ25lZCBkZXN0Qnl0ZXNQZXJSb3c7Ci0gICAgdW5zaWduZWQgY2hhciogZGVzdFJvd3M7Ci0K
LSAgICBpZiAoIWFjY2VsZXJhdGVSZW5kZXJpbmcpIHsKLSAgICAgICAgZGVzdEJ5dGVzUGVyUm93
ID0gNCAqIHNpemUud2lkdGgoKTsKLSAgICAgICAgZGVzdFJvd3MgPSByZWludGVycHJldF9jYXN0
PHVuc2lnbmVkIGNoYXIqPihpbWFnZURhdGEubV9kYXRhKSArIGRlc3R5ICogZGVzdEJ5dGVzUGVy
Um93ICsgZGVzdHggKiA0OwotCi0jaWYgVVNFKEFDQ0VMRVJBVEUpCi0gICAgICAgIGlmIChoYXZl
VkltYWdlUm91bmRpbmdFcnJvckZpeCgpICYmIG11bHRpcGxpZWQgPT0gVW5tdWx0aXBsaWVkKSB7
Ci0gICAgICAgICAgICB2SW1hZ2VfQnVmZmVyIHNyYzsKLSAgICAgICAgICAgIHNyYy5oZWlnaHQg
PSBoZWlnaHQ7Ci0gICAgICAgICAgICBzcmMud2lkdGggPSB3aWR0aDsKLSAgICAgICAgICAgIHNy
Yy5yb3dCeXRlcyA9IHNyY0J5dGVzUGVyUm93OwotICAgICAgICAgICAgc3JjLmRhdGEgPSBzcmNS
b3dzOwotCi0gICAgICAgICAgICB2SW1hZ2VfQnVmZmVyIGRzdDsKLSAgICAgICAgICAgIGRzdC5o
ZWlnaHQgPSBoZWlnaHQ7Ci0gICAgICAgICAgICBkc3Qud2lkdGggPSB3aWR0aDsKLSAgICAgICAg
ICAgIGRzdC5yb3dCeXRlcyA9IGRlc3RCeXRlc1BlclJvdzsKLSAgICAgICAgICAgIGRzdC5kYXRh
ID0gZGVzdFJvd3M7Ci0KLSAgICAgICAgICAgIHZJbWFnZVByZW11bHRpcGx5RGF0YV9SR0JBODg4
OCgmc3JjLCAmZHN0LCBrdkltYWdlTm9GbGFncyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSNlbmRpZgotICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgKyt5KSB7
Ci0gICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKLSAgICAgICAg
ICAgICAgICBpbnQgYmFzZXggPSB4ICogNDsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFy
IGFscGhhID0gc3JjUm93c1tiYXNleCArIDNdOwotICAgICAgICAgICAgICAgIGlmIChtdWx0aXBs
aWVkID09IFVubXVsdGlwbGllZCAmJiBhbHBoYSAhPSAyNTUpIHsKLSAgICAgICAgICAgICAgICAg
ICAgZGVzdFJvd3NbYmFzZXhdID0gKHNyY1Jvd3NbYmFzZXhdICogYWxwaGEgKyAyNTQpIC8gMjU1
OwotICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDFdID0gKHNyY1Jvd3NbYmFz
ZXggKyAxXSAqIGFscGhhICsgMjU0KSAvIDI1NTsKLSAgICAgICAgICAgICAgICAgICAgZGVzdFJv
d3NbYmFzZXggKyAyXSA9IChzcmNSb3dzW2Jhc2V4ICsgMl0gKiBhbHBoYSArIDI1NCkgLyAyNTU7
Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgM10gPSBhbHBoYTsKLSAgICAg
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1
aW50MzJfdCo+KGRlc3RSb3dzICsgYmFzZXgpWzBdID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJf
dCo+KHNyY1Jvd3MgKyBiYXNleClbMF07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBkZXN0
Um93cyArPSBkZXN0Qnl0ZXNQZXJSb3c7Ci0gICAgICAgICAgICBzcmNSb3dzICs9IHNyY0J5dGVz
UGVyUm93OwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSNpZiBVU0UoSU9TVVJGQUNFX0NBTlZB
U19CQUNLSU5HX1NUT1JFKQotICAgICAgICBJT1N1cmZhY2VSZWYgc3VyZmFjZSA9IGltYWdlRGF0
YS5tX3N1cmZhY2UuZ2V0KCk7Ci0gICAgICAgIElPU3VyZmFjZUxvY2soc3VyZmFjZSwgMCwgMCk7
Ci0gICAgICAgIGRlc3RCeXRlc1BlclJvdyA9IElPU3VyZmFjZUdldEJ5dGVzUGVyUm93KHN1cmZh
Y2UpOwotICAgICAgICBkZXN0Um93cyA9ICh1bnNpZ25lZCBjaGFyKikoSU9TdXJmYWNlR2V0QmFz
ZUFkZHJlc3Moc3VyZmFjZSkpICsgZGVzdHkgKiBkZXN0Qnl0ZXNQZXJSb3cgKyBkZXN0eCAqIDQ7
Ci0gICAgICAgIAotICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgKyt5KSB7Ci0g
ICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKLSAgICAgICAgICAg
ICAgICBpbnQgYmFzZXggPSB4ICogNDsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGFs
cGhhID0gc3JjUm93c1tiYXNleCArIDNdOwotICAgICAgICAgICAgICAgIGlmIChtdWx0aXBsaWVk
ID09IFVubXVsdGlwbGllZCAmJiBhbHBoYSAhPSAyNTUpIHsKLSAgICAgICAgICAgICAgICAgICAg
ZGVzdFJvd3NbYmFzZXhdID0gKHNyY1Jvd3NbYmFzZXggKyAyXSAqIGFscGhhICsgMjU0KSAvIDI1
NTsKLSAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAxXSA9IChzcmNSb3dzW2Jh
c2V4ICsgMV0gKiBhbHBoYSArIDI1NCkgLyAyNTU7Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RS
b3dzW2Jhc2V4ICsgMl0gPSAoc3JjUm93c1tiYXNleF0gKiBhbHBoYSArIDI1NCkgLyAyNTU7Ci0g
ICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgM10gPSBhbHBoYTsKLSAgICAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleF0gPSBz
cmNSb3dzW2Jhc2V4ICsgMl07Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsg
MV0gPSBzcmNSb3dzW2Jhc2V4ICsgMV07Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jh
c2V4ICsgMl0gPSBzcmNSb3dzW2Jhc2V4XTsKLSAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3Nb
YmFzZXggKyAzXSA9IGFscGhhOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGRlc3RSb3dzICs9IGRlc3RCeXRlc1BlclJvdzsKLSAgICAgICAgICAgIHNyY1Jv
d3MgKz0gc3JjQnl0ZXNQZXJSb3c7Ci0gICAgICAgIH0KLSAgICAgICAgSU9TdXJmYWNlVW5sb2Nr
KHN1cmZhY2UsIDAsIDApOwotI2Vsc2UKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0j
ZW5kaWYKLSAgICB9CisgICAgcmV0dXJuIG1fZGF0YS5nZXREYXRhKHJlY3QsIG1fc2l6ZSwgbV9h
Y2NlbGVyYXRlUmVuZGVyaW5nLCBmYWxzZSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OnB1dFVu
bXVsdGlwbGllZEltYWdlRGF0YShCeXRlQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291
cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQ
b2ludCkKIHsKICAgICBpZiAobV9hY2NlbGVyYXRlUmVuZGVyaW5nKQogICAgICAgICBDR0NvbnRl
eHRGbHVzaChjb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpKTsKLSAgICBwdXRJbWFnZURhdGE8
VW5tdWx0aXBsaWVkPihzb3VyY2UsIHNvdXJjZVNpemUsIHNvdXJjZVJlY3QsIGRlc3RQb2ludCwg
bV9kYXRhLCBtX3NpemUsIG1fYWNjZWxlcmF0ZVJlbmRlcmluZyk7CisgICAgbV9kYXRhLnB1dERh
dGEoc291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBkZXN0UG9pbnQsIG1fc2l6ZSwgbV9h
Y2NlbGVyYXRlUmVuZGVyaW5nLCB0cnVlKTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0UHJl
bXVsdGlwbGllZEltYWdlRGF0YShCeXRlQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291
cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQ
b2ludCkKIHsKICAgICBpZiAobV9hY2NlbGVyYXRlUmVuZGVyaW5nKQogICAgICAgICBDR0NvbnRl
eHRGbHVzaChjb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpKTsKLSAgICBwdXRJbWFnZURhdGE8
UHJlbXVsdGlwbGllZD4oc291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBkZXN0UG9pbnQs
IG1fZGF0YSwgbV9zaXplLCBtX2FjY2VsZXJhdGVSZW5kZXJpbmcpOworICAgIG1fZGF0YS5wdXRE
YXRhKHNvdXJjZSwgc291cmNlU2l6ZSwgc291cmNlUmVjdCwgZGVzdFBvaW50LCBtX3NpemUsIG1f
YWNjZWxlcmF0ZVJlbmRlcmluZywgZmFsc2UpOwogfQogCiBzdGF0aWMgaW5saW5lIENGU3RyaW5n
UmVmIGpwZWdVVEkoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhLmgJKHJldmlzaW9uIDgzNzc2KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgSW1hZ2VCdWZmZXJEYXRh
X2gKLSNkZWZpbmUgSW1hZ2VCdWZmZXJEYXRhX2gKLQotI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotdHlwZWRl
ZiBzdHJ1Y3QgX19JT1N1cmZhY2UgKklPU3VyZmFjZVJlZjsKLXR5cGVkZWYgc3RydWN0IENHQ29s
b3JTcGFjZSAqQ0dDb2xvclNwYWNlUmVmOwotdHlwZWRlZiBzdHJ1Y3QgQ0dEYXRhUHJvdmlkZXIg
KkNHRGF0YVByb3ZpZGVyUmVmOwotdHlwZWRlZiB1aW50MzJfdCBDR0JpdG1hcEluZm87Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSW50U2l6ZTsKLQotY2xhc3MgSW1hZ2VCdWZmZXJE
YXRhIHsKLXB1YmxpYzoKLSAgICBJbWFnZUJ1ZmZlckRhdGEoY29uc3QgSW50U2l6ZSYpOwotCi0g
ICAgdm9pZCogbV9kYXRhOwotICAgIAotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4g
bV9kYXRhUHJvdmlkZXI7Ci0gICAgQ0dCaXRtYXBJbmZvIG1fYml0bWFwSW5mbzsKLSAgICB1bnNp
Z25lZCBtX2J5dGVzUGVyUm93OwotICAgIENHQ29sb3JTcGFjZVJlZiBtX2NvbG9yU3BhY2U7Ci0g
ICAgUmV0YWluUHRyPElPU3VyZmFjZVJlZj4gbV9zdXJmYWNlOwotfTsKLQotfSAgLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmICAvLyBJbWFnZUJ1ZmZlckRhdGFfaApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
RGF0YUNHLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNzYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJE
YXRhLmgiCisKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCisjaWYgVVNFKEFDQ0VMRVJB
VEUpCisjaW5jbHVkZSA8QWNjZWxlcmF0ZS9BY2NlbGVyYXRlLmg+CisjZW5kaWYKKworI2lmIFVT
RShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCisjaW5jbHVkZSA8SU9TdXJmYWNlL0lP
U3VyZmFjZS5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSW1hZ2VCdWZmZXJE
YXRhOjpJbWFnZUJ1ZmZlckRhdGEoY29uc3QgSW50U2l6ZSYpCis6IG1fZGF0YSgwKQorI2lmIFVT
RShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCissIG1fc3VyZmFjZSgwKQorI2VuZGlm
Cit7Cit9CisKKyNpZiBVU0UoQUNDRUxFUkFURSkKKy8vIFRoZSB2SW1hZ2UgdW5wcmVtdWx0aXBs
eSByb3V0aW5lIGhhZCBhIHJvdW5kaW5nIGJ1ZyBiZWZvcmUgMTAuNi43IDxyZGFyOi8vcHJvYmxl
bS84NjMxNTQ4Pgorc3RhdGljIGJvb2wgaGF2ZVZJbWFnZVJvdW5kaW5nRXJyb3JGaXgoKQorewor
ICAgIFNJbnQzMiB2ZXJzaW9uOworICAgIHN0YXRpYyBib29sIHJlc3VsdCA9IChHZXN0YWx0KGdl
c3RhbHRTeXN0ZW1WZXJzaW9uLCAmdmVyc2lvbikgPT0gbm9FcnIgJiYgdmVyc2lvbiA+IDB4MTA2
Nik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZgorCitQYXNzUmVmUHRyPEJ5dGVBcnJh
eT4gSW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IElu
dFNpemUmIHNpemUsIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZywgYm9vbCB1bm11bHRpcGxpZWQp
IGNvbnN0Cit7CisgICAgUmVmUHRyPEJ5dGVBcnJheT4gcmVzdWx0ID0gQnl0ZUFycmF5OjpjcmVh
dGUocmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpOworICAgIHVuc2lnbmVkIGNoYXIq
IGRhdGEgPSByZXN1bHQtPmRhdGEoKTsKKyAgICAKKyAgICBpZiAocmVjdC54KCkgPCAwIHx8IHJl
Y3QueSgpIDwgMCB8fCByZWN0Lm1heFgoKSA+IHNpemUud2lkdGgoKSB8fCByZWN0Lm1heFkoKSA+
IHNpemUuaGVpZ2h0KCkpCisgICAgICAgIG1lbXNldChkYXRhLCAwLCByZXN1bHQtPmxlbmd0aCgp
KTsKKyAgICAKKyAgICBpbnQgb3JpZ2lueCA9IHJlY3QueCgpOworICAgIGludCBkZXN0eCA9IDA7
CisgICAgaWYgKG9yaWdpbnggPCAwKSB7CisgICAgICAgIGRlc3R4ID0gLW9yaWdpbng7CisgICAg
ICAgIG9yaWdpbnggPSAwOworICAgIH0KKyAgICBpbnQgZW5keCA9IHJlY3QubWF4WCgpOworICAg
IGlmIChlbmR4ID4gc2l6ZS53aWR0aCgpKQorICAgICAgICBlbmR4ID0gc2l6ZS53aWR0aCgpOwor
ICAgIGludCB3aWR0aCA9IGVuZHggLSBvcmlnaW54OworICAgIAorICAgIGludCBvcmlnaW55ID0g
cmVjdC55KCk7CisgICAgaW50IGRlc3R5ID0gMDsKKyAgICBpZiAob3JpZ2lueSA8IDApIHsKKyAg
ICAgICAgZGVzdHkgPSAtb3JpZ2lueTsKKyAgICAgICAgb3JpZ2lueSA9IDA7CisgICAgfQorICAg
IGludCBlbmR5ID0gcmVjdC5tYXhZKCk7CisgICAgaWYgKGVuZHkgPiBzaXplLmhlaWdodCgpKQor
ICAgICAgICBlbmR5ID0gc2l6ZS5oZWlnaHQoKTsKKyAgICBpbnQgaGVpZ2h0ID0gZW5keSAtIG9y
aWdpbnk7CisgICAgCisgICAgaWYgKHdpZHRoIDw9IDAgfHwgaGVpZ2h0IDw9IDApCisgICAgICAg
IHJldHVybiByZXN1bHQucmVsZWFzZSgpOworICAgIAorICAgIHVuc2lnbmVkIGRlc3RCeXRlc1Bl
clJvdyA9IDQgKiByZWN0LndpZHRoKCk7CisgICAgdW5zaWduZWQgY2hhciogZGVzdFJvd3MgPSBk
YXRhICsgZGVzdHkgKiBkZXN0Qnl0ZXNQZXJSb3cgKyBkZXN0eCAqIDQ7CisgICAgCisgICAgdW5z
aWduZWQgc3JjQnl0ZXNQZXJSb3c7CisgICAgdW5zaWduZWQgY2hhciogc3JjUm93czsKKyAgICAK
KyAgICBpZiAoIWFjY2VsZXJhdGVSZW5kZXJpbmcpIHsKKyAgICAgICAgc3JjQnl0ZXNQZXJSb3cg
PSA0ICogc2l6ZS53aWR0aCgpOworICAgICAgICBzcmNSb3dzID0gcmVpbnRlcnByZXRfY2FzdDx1
bnNpZ25lZCBjaGFyKj4obV9kYXRhKSArIG9yaWdpbnkgKiBzcmNCeXRlc1BlclJvdyArIG9yaWdp
bnggKiA0OworICAgICAgICAKKyNpZiBVU0UoQUNDRUxFUkFURSkKKyAgICAgICAgaWYgKHVubXVs
dGlwbGllZCAmJiBoYXZlVkltYWdlUm91bmRpbmdFcnJvckZpeCgpKSB7CisgICAgICAgICAgICB2
SW1hZ2VfQnVmZmVyIHNyYzsKKyAgICAgICAgICAgIHNyYy5oZWlnaHQgPSBoZWlnaHQ7CisgICAg
ICAgICAgICBzcmMud2lkdGggPSB3aWR0aDsKKyAgICAgICAgICAgIHNyYy5yb3dCeXRlcyA9IHNy
Y0J5dGVzUGVyUm93OworICAgICAgICAgICAgc3JjLmRhdGEgPSBzcmNSb3dzOworICAgICAgICAg
ICAgCisgICAgICAgICAgICB2SW1hZ2VfQnVmZmVyIGRzdDsKKyAgICAgICAgICAgIGRzdC5oZWln
aHQgPSBoZWlnaHQ7CisgICAgICAgICAgICBkc3Qud2lkdGggPSB3aWR0aDsKKyAgICAgICAgICAg
IGRzdC5yb3dCeXRlcyA9IGRlc3RCeXRlc1BlclJvdzsKKyAgICAgICAgICAgIGRzdC5kYXRhID0g
ZGVzdFJvd3M7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZJbWFnZVVucHJlbXVsdGlwbHlE
YXRhX1JHQkE4ODg4KCZzcmMsICZkc3QsIGt2SW1hZ2VOb0ZsYWdzKTsKKyAgICAgICAgICAgIHJl
dHVybiByZXN1bHQucmVsZWFzZSgpOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgZm9yIChp
bnQgeSA9IDA7IHkgPCBoZWlnaHQ7ICsreSkgeworICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7
IHggPCB3aWR0aDsgeCsrKSB7CisgICAgICAgICAgICAgICAgaW50IGJhc2V4ID0geCAqIDQ7Cisg
ICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBhbHBoYSA9IHNyY1Jvd3NbYmFzZXggKyAzXTsK
KyAgICAgICAgICAgICAgICBpZiAodW5tdWx0aXBsaWVkICYmIGFscGhhKSB7CisgICAgICAgICAg
ICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4XSA9IChzcmNSb3dzW2Jhc2V4XSAqIDI1NSkgLyBhbHBo
YTsKKyAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAxXSA9IChzcmNSb3dzW2Jh
c2V4ICsgMV0gKiAyNTUpIC8gYWxwaGE7CisgICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jh
c2V4ICsgMl0gPSAoc3JjUm93c1tiYXNleCArIDJdICogMjU1KSAvIGFscGhhOworICAgICAgICAg
ICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDNdID0gYWxwaGE7CisgICAgICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihk
ZXN0Um93cyArIGJhc2V4KVswXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihzcmNSb3dz
ICsgYmFzZXgpWzBdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3JjUm93cyArPSBzcmNC
eXRlc1BlclJvdzsKKyAgICAgICAgICAgIGRlc3RSb3dzICs9IGRlc3RCeXRlc1BlclJvdzsKKyAg
ICAgICAgfQorICAgIH0gZWxzZSB7CisjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19T
VE9SRSkKKyAgICAgICAgSU9TdXJmYWNlUmVmIHN1cmZhY2UgPSBtX3N1cmZhY2UuZ2V0KCk7Cisg
ICAgICAgIElPU3VyZmFjZUxvY2soc3VyZmFjZSwga0lPU3VyZmFjZUxvY2tSZWFkT25seSwgMCk7
CisgICAgICAgIHNyY0J5dGVzUGVyUm93ID0gSU9TdXJmYWNlR2V0Qnl0ZXNQZXJSb3coc3VyZmFj
ZSk7CisgICAgICAgIHNyY1Jvd3MgPSAodW5zaWduZWQgY2hhciopKElPU3VyZmFjZUdldEJhc2VB
ZGRyZXNzKHN1cmZhY2UpKSArIG9yaWdpbnkgKiBzcmNCeXRlc1BlclJvdyArIG9yaWdpbnggKiA0
OworICAgICAgICAKKyAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7ICsreSkgewor
ICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7CisgICAgICAgICAg
ICAgICAgaW50IGJhc2V4ID0geCAqIDQ7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBh
bHBoYSA9IHNyY1Jvd3NbYmFzZXggKyAzXTsKKyAgICAgICAgICAgICAgICBpZiAodW5tdWx0aXBs
aWVkICYmIGFscGhhKSB7CisgICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4XSA9IChz
cmNSb3dzW2Jhc2V4ICsgMl0gKiAyNTUpIC8gYWxwaGE7CisgICAgICAgICAgICAgICAgICAgIGRl
c3RSb3dzW2Jhc2V4ICsgMV0gPSAoc3JjUm93c1tiYXNleCArIDFdICogMjU1KSAvIGFscGhhOwor
ICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDJdID0gKHNyY1Jvd3NbYmFzZXhd
ICogMjU1KSAvIGFscGhhOworICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDNd
ID0gYWxwaGE7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ZGVzdFJvd3NbYmFzZXhdID0gc3JjUm93c1tiYXNleCArIDJdOworICAgICAgICAgICAgICAgICAg
ICBkZXN0Um93c1tiYXNleCArIDFdID0gc3JjUm93c1tiYXNleCArIDFdOworICAgICAgICAgICAg
ICAgICAgICBkZXN0Um93c1tiYXNleCArIDJdID0gc3JjUm93c1tiYXNleF07CisgICAgICAgICAg
ICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgM10gPSBhbHBoYTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzcmNSb3dzICs9IHNyY0J5dGVzUGVyUm93Owor
ICAgICAgICAgICAgZGVzdFJvd3MgKz0gZGVzdEJ5dGVzUGVyUm93OworICAgICAgICB9CisgICAg
ICAgIElPU3VyZmFjZVVubG9jayhzdXJmYWNlLCBrSU9TdXJmYWNlTG9ja1JlYWRPbmx5LCAwKTsK
KyNlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgfQorICAg
IAorICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOworfQorCit2b2lkIEltYWdlQnVmZmVyRGF0
YTo6cHV0RGF0YShCeXRlQXJyYXkqJiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUs
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIGNv
bnN0IEludFNpemUmIHNpemUsIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZywgYm9vbCB1bm11bHRp
cGxpZWQpCit7CisgICAgQVNTRVJUKHNvdXJjZVJlY3Qud2lkdGgoKSA+IDApOworICAgIEFTU0VS
VChzb3VyY2VSZWN0LmhlaWdodCgpID4gMCk7CisgICAgCisgICAgaW50IG9yaWdpbnggPSBzb3Vy
Y2VSZWN0LngoKTsKKyAgICBpbnQgZGVzdHggPSBkZXN0UG9pbnQueCgpICsgc291cmNlUmVjdC54
KCk7CisgICAgQVNTRVJUKGRlc3R4ID49IDApOworICAgIEFTU0VSVChkZXN0eCA8IHNpemUud2lk
dGgoKSk7CisgICAgQVNTRVJUKG9yaWdpbnggPj0gMCk7CisgICAgQVNTRVJUKG9yaWdpbnggPD0g
c291cmNlUmVjdC5tYXhYKCkpOworICAgIAorICAgIGludCBlbmR4ID0gZGVzdFBvaW50LngoKSAr
IHNvdXJjZVJlY3QubWF4WCgpOworICAgIEFTU0VSVChlbmR4IDw9IHNpemUud2lkdGgoKSk7Cisg
ICAgCisgICAgaW50IHdpZHRoID0gZW5keCAtIGRlc3R4OworICAgIAorICAgIGludCBvcmlnaW55
ID0gc291cmNlUmVjdC55KCk7CisgICAgaW50IGRlc3R5ID0gZGVzdFBvaW50LnkoKSArIHNvdXJj
ZVJlY3QueSgpOworICAgIEFTU0VSVChkZXN0eSA+PSAwKTsKKyAgICBBU1NFUlQoZGVzdHkgPCBz
aXplLmhlaWdodCgpKTsKKyAgICBBU1NFUlQob3JpZ2lueSA+PSAwKTsKKyAgICBBU1NFUlQob3Jp
Z2lueSA8PSBzb3VyY2VSZWN0Lm1heFkoKSk7CisgICAgCisgICAgaW50IGVuZHkgPSBkZXN0UG9p
bnQueSgpICsgc291cmNlUmVjdC5tYXhZKCk7CisgICAgQVNTRVJUKGVuZHkgPD0gc2l6ZS5oZWln
aHQoKSk7CisgICAgaW50IGhlaWdodCA9IGVuZHkgLSBkZXN0eTsKKyAgICAKKyAgICBpZiAod2lk
dGggPD0gMCB8fCBoZWlnaHQgPD0gMCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHVuc2ln
bmVkIHNyY0J5dGVzUGVyUm93ID0gNCAqIHNvdXJjZVNpemUud2lkdGgoKTsKKyAgICB1bnNpZ25l
ZCBjaGFyKiBzcmNSb3dzID0gc291cmNlLT5kYXRhKCkgKyBvcmlnaW55ICogc3JjQnl0ZXNQZXJS
b3cgKyBvcmlnaW54ICogNDsKKyAgICB1bnNpZ25lZCBkZXN0Qnl0ZXNQZXJSb3c7CisgICAgdW5z
aWduZWQgY2hhciogZGVzdFJvd3M7CisgICAgCisgICAgaWYgKCFhY2NlbGVyYXRlUmVuZGVyaW5n
KSB7CisgICAgICAgIGRlc3RCeXRlc1BlclJvdyA9IDQgKiBzaXplLndpZHRoKCk7CisgICAgICAg
IGRlc3RSb3dzID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4obV9kYXRhKSArIGRl
c3R5ICogZGVzdEJ5dGVzUGVyUm93ICsgZGVzdHggKiA0OworICAgICAgICAKKyNpZiBVU0UoQUND
RUxFUkFURSkKKyAgICAgICAgaWYgKGhhdmVWSW1hZ2VSb3VuZGluZ0Vycm9yRml4KCkgJiYgdW5t
dWx0aXBsaWVkKSB7CisgICAgICAgICAgICB2SW1hZ2VfQnVmZmVyIHNyYzsKKyAgICAgICAgICAg
IHNyYy5oZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgICAgICBzcmMud2lkdGggPSB3aWR0aDsKKyAg
ICAgICAgICAgIHNyYy5yb3dCeXRlcyA9IHNyY0J5dGVzUGVyUm93OworICAgICAgICAgICAgc3Jj
LmRhdGEgPSBzcmNSb3dzOworICAgICAgICAgICAgCisgICAgICAgICAgICB2SW1hZ2VfQnVmZmVy
IGRzdDsKKyAgICAgICAgICAgIGRzdC5oZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgICAgICBkc3Qu
d2lkdGggPSB3aWR0aDsKKyAgICAgICAgICAgIGRzdC5yb3dCeXRlcyA9IGRlc3RCeXRlc1BlclJv
dzsKKyAgICAgICAgICAgIGRzdC5kYXRhID0gZGVzdFJvd3M7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIHZJbWFnZVByZW11bHRpcGx5RGF0YV9SR0JBODg4OCgmc3JjLCAmZHN0LCBrdkltYWdl
Tm9GbGFncyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorICAgICAg
ICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgKyt5KSB7CisgICAgICAgICAgICBmb3IgKGlu
dCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKKyAgICAgICAgICAgICAgICBpbnQgYmFzZXggPSB4
ICogNDsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGFscGhhID0gc3JjUm93c1tiYXNl
eCArIDNdOworICAgICAgICAgICAgICAgIGlmICh1bm11bHRpcGxpZWQgJiYgYWxwaGEgIT0gMjU1
KSB7CisgICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4XSA9IChzcmNSb3dzW2Jhc2V4
XSAqIGFscGhhICsgMjU0KSAvIDI1NTsKKyAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFz
ZXggKyAxXSA9IChzcmNSb3dzW2Jhc2V4ICsgMV0gKiBhbHBoYSArIDI1NCkgLyAyNTU7CisgICAg
ICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMl0gPSAoc3JjUm93c1tiYXNleCArIDJd
ICogYWxwaGEgKyAyNTQpIC8gMjU1OworICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNl
eCArIDNdID0gYWxwaGE7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihkZXN0Um93cyArIGJhc2V4KVswXSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihzcmNSb3dzICsgYmFzZXgpWzBdOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZGVzdFJvd3MgKz0gZGVzdEJ5dGVzUGVyUm93OworICAgICAgICAg
ICAgc3JjUm93cyArPSBzcmNCeXRlc1BlclJvdzsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7Cisj
aWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKKyAgICAgICAgSU9TdXJmYWNl
UmVmIHN1cmZhY2UgPSBtX3N1cmZhY2UuZ2V0KCk7CisgICAgICAgIElPU3VyZmFjZUxvY2soc3Vy
ZmFjZSwgMCwgMCk7CisgICAgICAgIGRlc3RCeXRlc1BlclJvdyA9IElPU3VyZmFjZUdldEJ5dGVz
UGVyUm93KHN1cmZhY2UpOworICAgICAgICBkZXN0Um93cyA9ICh1bnNpZ25lZCBjaGFyKikoSU9T
dXJmYWNlR2V0QmFzZUFkZHJlc3Moc3VyZmFjZSkpICsgZGVzdHkgKiBkZXN0Qnl0ZXNQZXJSb3cg
KyBkZXN0eCAqIDQ7CisgICAgICAgIAorICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdo
dDsgKyt5KSB7CisgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsK
KyAgICAgICAgICAgICAgICBpbnQgYmFzZXggPSB4ICogNDsKKyAgICAgICAgICAgICAgICB1bnNp
Z25lZCBjaGFyIGFscGhhID0gc3JjUm93c1tiYXNleCArIDNdOworICAgICAgICAgICAgICAgIGlm
ICh1bm11bHRpcGxpZWQgJiYgYWxwaGEgIT0gMjU1KSB7CisgICAgICAgICAgICAgICAgICAgIGRl
c3RSb3dzW2Jhc2V4XSA9IChzcmNSb3dzW2Jhc2V4ICsgMl0gKiBhbHBoYSArIDI1NCkgLyAyNTU7
CisgICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMV0gPSAoc3JjUm93c1tiYXNl
eCArIDFdICogYWxwaGEgKyAyNTQpIC8gMjU1OworICAgICAgICAgICAgICAgICAgICBkZXN0Um93
c1tiYXNleCArIDJdID0gKHNyY1Jvd3NbYmFzZXhdICogYWxwaGEgKyAyNTQpIC8gMjU1OworICAg
ICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDNdID0gYWxwaGE7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXhdID0gc3Jj
Um93c1tiYXNleCArIDJdOworICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDFd
ID0gc3JjUm93c1tiYXNleCArIDFdOworICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNl
eCArIDJdID0gc3JjUm93c1tiYXNleF07CisgICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jh
c2V4ICsgM10gPSBhbHBoYTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBkZXN0Um93cyArPSBkZXN0Qnl0ZXNQZXJSb3c7CisgICAgICAgICAgICBzcmNSb3dz
ICs9IHNyY0J5dGVzUGVyUm93OworICAgICAgICB9CisgICAgICAgIElPU3VyZmFjZVVubG9jayhz
dXJmYWNlLCAwLCAwKTsKKyNlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2Vu
ZGlmCisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNH
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckRhdGFDRy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCit0eXBlZGVmIHN0
cnVjdCBfX0lPU3VyZmFjZSAqSU9TdXJmYWNlUmVmOwordHlwZWRlZiBzdHJ1Y3QgQ0dDb2xvclNw
YWNlICpDR0NvbG9yU3BhY2VSZWY7Cit0eXBlZGVmIHN0cnVjdCBDR0RhdGFQcm92aWRlciAqQ0dE
YXRhUHJvdmlkZXJSZWY7Cit0eXBlZGVmIHVpbnQzMl90IENHQml0bWFwSW5mbzsKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBJbnRTaXplOworCitjbGFzcyBJbWFnZUJ1ZmZlckRhdGEg
eworcHVibGljOgorICAgIEltYWdlQnVmZmVyRGF0YShjb25zdCBJbnRTaXplJik7CisKKyAgICB2
b2lkKiBtX2RhdGE7CisgICAgCisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBtX2Rh
dGFQcm92aWRlcjsKKyAgICBDR0JpdG1hcEluZm8gbV9iaXRtYXBJbmZvOworICAgIHVuc2lnbmVk
IG1fYnl0ZXNQZXJSb3c7CisgICAgQ0dDb2xvclNwYWNlUmVmIG1fY29sb3JTcGFjZTsKKyAgICBS
ZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiBtX3N1cmZhY2U7CisKKyAgICBQYXNzUmVmUHRyPEJ5dGVB
cnJheT4gZ2V0RGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBzaXplLCBi
b29sIGFjY2VsZXJhdGVSZW5kZXJpbmcsIGJvb2wgdW5tdWx0aXBsaWVkKSBjb25zdDsKKyAgICB2
b2lkIHB1dERhdGEoQnl0ZUFycmF5KiYgc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXpl
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBj
b25zdCBJbnRTaXplJiBzaXplLCBib29sIGFjY2VsZXJhdGVSZW5kZXJpbmcsIGJvb2wgdW5tdWx0
aXBsaWVkKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlQnVmZmVyRGF0YS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlQnVm
ZmVyRGF0YS5oCShyZXZpc2lvbiA4Mzc3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ltYWdlQnVmZmVyRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMDksIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
ICogbWV0OgotICogCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBJbWFnZUJ1ZmZlckRhdGFfaAotI2RlZmluZSBJbWFn
ZUJ1ZmZlckRhdGFfaAotCi0jaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgotCi0jaW5j
bHVkZSAic2tpYS9leHQvcGxhdGZvcm1fY2FudmFzLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgSW1hZ2VCdWZmZXJEYXRhIHsKLXB1YmxpYzoKLSAgICBJbWFnZUJ1ZmZlckRhdGEo
Y29uc3QgSW50U2l6ZSYpOwotCi0gICAgc2tpYTo6UGxhdGZvcm1DYW52YXMgbV9jYW52YXM7Ci0g
ICAgUGxhdGZvcm1Db250ZXh0U2tpYSBtX3BsYXRmb3JtQ29udGV4dDsKLX07Ci0KLX0gIC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAgLy8gSW1hZ2VCdWZmZXJEYXRhX2gKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlQnVmZmVyRGF0YVNr
aWEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9JbWFnZUJ1ZmZlckRhdGFTa2lhLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUJ1ZmZlckRhdGFTa2lhLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMDks
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4
dFNraWEuaCIKKworI2luY2x1ZGUgInNraWEvZXh0L3BsYXRmb3JtX2NhbnZhcy5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEltYWdlQnVmZmVyRGF0YSB7CitwdWJsaWM6CisgICAg
SW1hZ2VCdWZmZXJEYXRhKGNvbnN0IEludFNpemUmKTsKKworICAgIHNraWE6OlBsYXRmb3JtQ2Fu
dmFzIG1fY2FudmFzOworICAgIFBsYXRmb3JtQ29udGV4dFNraWEgbV9wbGF0Zm9ybUNvbnRleHQ7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9oYWlrdS9JbWFnZUJ1ZmZlckRhdGEuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9JbWFnZUJ1ZmZlckRhdGEuaAkocmV2
aXNpb24gODM3NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9J
bWFnZUJ1ZmZlckRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1MCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEwIFN0ZXBoYW4gQcOfbXVzIDxzdXBlcnN0aXBwaUBnbXguZGU+Ci0g
KgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEltYWdlQnVmZmVyRGF0
YV9oCi0jZGVmaW5lIEltYWdlQnVmZmVyRGF0YV9oCi0KLSNpbmNsdWRlIDxCaXRtYXAuaD4KLSNp
bmNsdWRlIDxWaWV3Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSW50U2l6ZTsK
LQotY2xhc3MgSW1hZ2VCdWZmZXJEYXRhIHsKLXB1YmxpYzoKLSAgICBJbWFnZUJ1ZmZlckRhdGEo
Y29uc3QgSW50U2l6ZSYpOwotICAgIH5JbWFnZUJ1ZmZlckRhdGEoKTsKLQotICAgIEJCaXRtYXAg
bV9iaXRtYXA7Ci0gICAgQlZpZXcgbV92aWV3OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gSW1hZ2VCdWZmZXJEYXRhX2gKLQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW1hZ2VCdWZmZXJEYXRhSGFpa3UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9JbWFnZUJ1ZmZlckRh
dGFIYWlrdS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaGFpa3UvSW1hZ2VCdWZmZXJEYXRhSGFpa3UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBTdGVwaGFuIEHDn211cyA8c3VwZXJzdGlw
cGlAZ214LmRlPgorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
PEJpdG1hcC5oPgorI2luY2x1ZGUgPFZpZXcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBJbnRTaXplOworCitjbGFzcyBJbWFnZUJ1ZmZlckRhdGEgeworcHVibGljOgorICAgIElt
YWdlQnVmZmVyRGF0YShjb25zdCBJbnRTaXplJik7CisgICAgfkltYWdlQnVmZmVyRGF0YSgpOwor
CisgICAgQkJpdG1hcCBtX2JpdG1hcDsKKyAgICBCVmlldyBtX3ZpZXc7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9JbWFnZUJ1ZmZlckRhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlckRhdGEuaAkocmV2aXNpb24gODM3NzYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlckRhdGEuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBJbWFnZUJ1ZmZlckRh
dGFfaAotI2RlZmluZSBJbWFnZUJ1ZmZlckRhdGFfaAotCi0jaW5jbHVkZSAiSW1hZ2UuaCIKLSNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLSNpbmNsdWRlIDxRUGFpbnRlcj4KLSNpbmNsdWRlIDxR
UGl4bWFwPgotCi0jaW5jbHVkZSAiT3duUHRyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgSW50U2l6ZTsKLQotY2xhc3MgSW1hZ2VCdWZmZXJEYXRhIHsKLXB1YmxpYzoKLSAgICBJ
bWFnZUJ1ZmZlckRhdGEoY29uc3QgSW50U2l6ZSYpOwotCi0gICAgUUltYWdlIHRvUUltYWdlKCkg
Y29uc3Q7Ci0KLSAgICBRUGl4bWFwIG1fcGl4bWFwOwotICAgIE93blB0cjxRUGFpbnRlcj4gbV9w
YWludGVyOwotICAgIFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsKLX07Ci0KLX0gIC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAgLy8gSW1hZ2VCdWZmZXJEYXRhX2gKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyRGF0YVF0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJEYXRh
UXQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0ltYWdlQnVmZmVyRGF0YVF0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDggR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiSW1hZ2UuaCIKKworI2luY2x1ZGUgIk93blB0ci5oIgorI2luY2x1ZGUg
PFFQYWludGVyPgorI2luY2x1ZGUgPFFQaXhtYXA+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEludFNpemU7CisKK2NsYXNzIEltYWdlQnVm
ZmVyRGF0YSB7CitwdWJsaWM6CisgICAgSW1hZ2VCdWZmZXJEYXRhKGNvbnN0IEludFNpemUmKTsK
KworICAgIFFJbWFnZSB0b1FJbWFnZSgpIGNvbnN0OworCisgICAgUVBpeG1hcCBtX3BpeG1hcDsK
KyAgICBPd25QdHI8UVBhaW50ZXI+IG1fcGFpbnRlcjsKKyAgICBSZWZQdHI8SW1hZ2U+IG1faW1h
Z2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlckRhdGEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlckRhdGEuaAko
cmV2aXNpb24gODM3NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5j
ZS9JbWFnZUJ1ZmZlckRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMSwzNyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICog
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot
ICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIEltYWdlQnVmZmVyRGF0YV9oCi0jZGVmaW5lIEltYWdl
QnVmZmVyRGF0YV9oCi0KLSNpbmNsdWRlICJTaGFyZWRCaXRtYXAuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBJbnRTaXplOwotCi1jbGFzcyBJbWFnZUJ1ZmZlckRhdGEgewotcHVi
bGljOgotICAgIEltYWdlQnVmZmVyRGF0YShjb25zdCBJbnRTaXplJik7Ci0gICAgUmVmUHRyPFNo
YXJlZEJpdG1hcD4gbV9iaXRtYXA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBJbWFnZUJ1ZmZlckRhdGFfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJEYXRhV2luY2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlckRhdGFXaW5jZS5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2Uv
SW1hZ2VCdWZmZXJEYXRhV2luY2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgIlNoYXJlZEJpdG1hcC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEludFNpemU7CisKK2NsYXNzIEltYWdlQnVmZmVyRGF0YSB7Citw
dWJsaWM6CisgICAgSW1hZ2VCdWZmZXJEYXRhKGNvbnN0IEludFNpemUmKTsKKyAgICBSZWZQdHI8
U2hhcmVkQml0bWFwPiBtX2JpdG1hcDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlQnVmZmVyRGF0YS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdl
QnVmZmVyRGF0YS5oCShyZXZpc2lvbiA4Mzc3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3d4L0ltYWdlQnVmZmVyRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggS2V2aW4gT2xsaXZpZXIuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBJbWFnZUJ1ZmZlckRhdGFfaAotI2RlZmluZSBJ
bWFnZUJ1ZmZlckRhdGFfaAotCi0KLSNpbmNsdWRlICJPd25QdHIuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBJbnRTaXplOwotCi1jbGFzcyBJbWFnZUJ1ZmZlckRhdGEgewotcHVi
bGljOgotICAgIEltYWdlQnVmZmVyRGF0YShjb25zdCBJbnRTaXplJik7Ci19OwotCi19ICAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgIC8vIEltYWdlQnVmZmVyRGF0YV9oCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZUJ1ZmZlckRhdGFXeC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlQnVm
ZmVyRGF0YVd4LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93eC9JbWFnZUJ1ZmZlckRhdGFXeC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEtldmluIE9sbGl2aWVyLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJPd25QdHIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBJbnRTaXplOworCitjbGFzcyBJbWFnZUJ1ZmZlckRhdGEgeworcHVibGljOgor
ICAgIEltYWdlQnVmZmVyRGF0YShjb25zdCBJbnRTaXplJik7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="82171"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>