<?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>42005</bug_id>
          
          <creation_ts>2010-07-09 16:50:20 -0700</creation_ts>
          <short_desc>CanvasSurface should go away (there is no OffscreenCanvas)</short_desc>
          <delta_ts>2010-07-09 19:35:44 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>levin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>249355</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-07-09 16:50:20 -0700</bug_when>
    <thetext>CanvasSurface should go away (there is no OffscreenCanvas)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249371</commentid>
    <comment_count>1</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-07-09 17:26:32 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/55201 introduced a new base class for HTMLCanvasElement called CanvasSurface.  The intention was that this would allow for code sharing with the then-proposed OffscreenCanvas.  However, there is no OffscreenCanvas and there&apos;s unlikely to be one soon.  Additionally CanvasSurface breaks encapsulation pretty badly by doing &quot;static_cast&lt;HTMLCanvasElement* const&gt;(this)&quot;.  Until an abstraction is really needed we should just use HTMLCanvasElement when we want to talk about a canvas.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249375</commentid>
    <comment_count>2</comment_count>
      <attachid>61119</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-07-09 17:31:56 -0700</bug_when>
    <thetext>Created attachment 61119
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249378</commentid>
    <comment_count>3</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-07-09 17:33:19 -0700</bug_when>
    <thetext>This patch updates all of the in-tree build systems, but I&apos;m not really sure what to do about WebCore/WebCore.order.  It references a number of functions on CanvasSurface, some of which are now on HTMLCanvasElement and some of which are now dead.  According to http://www.mail-archive.com/webkit-dev@lists.webkit.org/msg07080.html it seems I should just ignore it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249382</commentid>
    <comment_count>4</comment_count>
      <attachid>61119</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-09 17:37:57 -0700</bug_when>
    <thetext>Comment on attachment 61119
Patch

&gt; +    static const float MaxCanvasArea;
&gt; +    static const int DefaultWidth;
&gt; +    static const int DefaultHeight;

We normally use file-local constants instead of constant static data members.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249384</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-09 17:38:11 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 61119 [details])
&gt; &gt; +    static const float MaxCanvasArea;
&gt; &gt; +    static const int DefaultWidth;
&gt; &gt; +    static const int DefaultHeight;
&gt; 
&gt; We normally use file-local constants instead of constant static data members.

Unless the constants are needed outside the file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249388</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-07-09 17:42:48 -0700</bug_when>
    <thetext>Attachment 61119 did not build on mac:
Build output: http://webkit-commit-queue.appspot.com/results/3518004</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249393</commentid>
    <comment_count>7</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-07-09 17:45:22 -0700</bug_when>
    <thetext>Compile failed due to initialization/declaration order mismatch.  I&apos;ll fix that and switch to file statics as those constants are now only referenced in one file (HTMLCanvasElement.cpp).

Thanks for the super-duper fast review, Darin!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249399</commentid>
    <comment_count>8</comment_count>
      <attachid>61126</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-07-09 17:50:32 -0700</bug_when>
    <thetext>Created attachment 61126
File local constants instead of statics, fix initialization order</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249425</commentid>
    <comment_count>9</comment_count>
      <attachid>61126</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-07-09 18:27:21 -0700</bug_when>
    <thetext>Comment on attachment 61126
File local constants instead of statics, fix initialization order

Clearing flags on attachment: 61126

Committed r63025: &lt;http://trac.webkit.org/changeset/63025&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249426</commentid>
    <comment_count>10</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-07-09 18:27:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249442</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-09 19:07:38 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/63025 might have broken Qt Linux Release minimal
The following changes are on the blame list:
http://trac.webkit.org/changeset/63024
http://trac.webkit.org/changeset/63025</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249444</commentid>
    <comment_count>12</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-07-09 19:24:28 -0700</bug_when>
    <thetext>Yup, was me.  I think this patch depends on some transitive includes to pick up SECURITY_ERR that doesn&apos;t exist on all platforms.  Will fix promptly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249445</commentid>
    <comment_count>13</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-07-09 19:31:40 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/63031</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249447</commentid>
    <comment_count>14</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-07-09 19:35:44 -0700</bug_when>
    <thetext>That patch fixed Qt Linux Release, Qt Windows is now failing but with an internal compiler error unrelated to my patch:

g++ -c -Wall -Wextra -Wreturn-type -fno-strict-aliasing -Wcast-align -Wchar-subscripts -Wformat-security -Wreturn-type -Wno-unused-parameter -Wno-sign-compare -Wno-switch -Wno-switch-enum -Wundef -Wmissing-noreturn -Winit-self -O3 -frtti -fexceptions -mthreads -DUNICODE -DQT_LARGEFILE_SUPPORT -DBUILDING_QT__=1 -DWTF_USE_ACCELERATED_COMPOSITING -DUSE_SYSTEM_MALLOC -DNDEBUG -D_HAS_TR1=0 -DBUILDING_QT__ -DBUILDING_JavaScriptCore -DBUILDING_WTF -DQT_NO_DEBUG -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I&quot;c:\Qt\2010.02\qt\include\QtCore&quot; -I&quot;c:\Qt\2010.02\qt\include&quot; -I&quot;..\..\..\JavaScriptCore&quot; -I&quot;..\..\..\..\build&quot; -I&quot;..\..\..\JavaScriptCore\assembler&quot; -I&quot;..\..\..\JavaScriptCore\bytecode&quot; -I&quot;..\..\..\JavaScriptCore\bytecompiler&quot; -I&quot;..\..\..\JavaScriptCore\debugger&quot; -I&quot;..\..\..\JavaScriptCore\interpreter&quot; -I&quot;..\..\..\JavaScriptCore\jit&quot; -I&quot;..\..\..\JavaScriptCore\parser&quot; -I&quot;..\..\..\JavaScriptCore\pcre&quot; -I&quot;..\..\..\JavaScriptCore\profiler&quot; -I&quot;..\..\..\JavaScriptCore\runtime&quot; -I&quot;..\..\..\JavaScriptCore\wtf&quot; -I&quot;..\..\..\JavaScriptCore\wtf\symbian&quot; -I&quot;..\..\..\JavaScriptCore\wtf\unicode&quot; -I&quot;..\..\..\JavaScriptCore\yarr&quot; -I&quot;..\..\..\JavaScriptCore\API&quot; -I&quot;..\..\..\JavaScriptCore\ForwardingHeaders&quot; -I&quot;generated&quot; -I&quot;..\include\QtWebKit&quot; -I&quot;..\..\..\JavaScriptCore\pcre&quot; -I&quot;t:\WindowsRelease\buildslave\qt-windows-32bit-release\build\WebKitBuild\Release\JavaScriptCore\tmp&quot; -I&quot;c:\Qt\2010.02\qt\include\ActiveQt&quot; -I&quot;.&quot; -I&quot;..\..\..\JavaScriptCore&quot; -I&quot;.&quot; -I&quot;c:\Qt\2010.02\qt\mkspecs\default&quot; -o obj\release\JSGlobalObjectFunctions.o ..\..\..\JavaScriptCore\runtime\JSGlobalObjectFunctions.cpp
..\..\..\JavaScriptCore\runtime\ArrayPrototype.cpp: In function &apos;void* JSC::arrayProtoFuncJoin(JSC::ExecState*)&apos;:
..\..\..\JavaScriptCore\runtime\ArrayPrototype.cpp:263:30: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See &lt;http://gcc.gnu.org/bugs.html&gt; for instructions.
make.exe[1]: *** [obj/release/ArrayPrototype.o] Error 1
make.exe[1]: *** Waiting for unfinished jobs....
make.exe[1]: Leaving directory `T:/WindowsRelease/buildslave/qt-windows-32bit-release/build/WebKitBuild/Release/JavaScriptCore&apos;
make: *** [sub-JavaScriptCore-make_default-ordered] Error 2</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61119</attachid>
            <date>2010-07-09 17:31:56 -0700</date>
            <delta_ts>2010-07-09 17:50:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42005-20100709173155.patch</filename>
            <type>text/plain</type>
            <size>29785</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDRjMjNkNDBjYTkxYzk3YjE5ZmY2Y2JmODE2ZGRhMjRjY2IyMzUyZWIuLmZhZWMy
YmZmNDZjZDJlMWM2NjJlZDdiMDE3YTBkM2IzNDE5ZWEwMWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNzU3LDcgKzc1
Nyw2IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20vQXR0cmlidXRlLmNwcAogICAgIGRv
bS9CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5jcHAKICAgICBkb20vQmVmb3JlVW5sb2FkRXZlbnQu
Y3BwCi0gICAgZG9tL0NhbnZhc1N1cmZhY2UuY3BwCiAgICAgZG9tL0NEQVRBU2VjdGlvbi5jcHAK
ICAgICBkb20vQ2hhcmFjdGVyRGF0YS5jcHAKICAgICBkb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5j
cHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggNjkwODE2MWZiNjI1MGY3MDc4NzJlYmFmZjAxYTYxNjFjZTA5NGVhZS4uZmViMTU1YjFlNmQ1
MTllZGZhM2NkMThiNTMxZGNjODI0ZmM3NzRkYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAxMC0wNy0wOSAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZXMgQ2FudmFzU3VyZmFjZSBhbmQg
bW92ZXMgYWxsIG9mIGl0cyBmdW5jdGlvbmFsaXR5IHRvIEhUTUxDYW52YXNFbGVtZW50LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIwMDUKKworICAg
ICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC81NTIwMSBpbnRyb2R1Y2VkIGEg
bmV3IGJhc2UgY2xhc3MgZm9yIEhUTUxDYW52YXNFbGVtZW50IGNhbGxlZCBDYW52YXNTdXJmYWNl
LgorICAgICAgICBUaGUgaW50ZW50aW9uIHdhcyB0aGF0IHRoaXMgd291bGQgYWxsb3cgZm9yIGNv
ZGUgc2hhcmluZyB3aXRoIHRoZSB0aGVuLXByb3Bvc2VkIE9mZnNjcmVlbkNhbnZhcy4gIEhvd2V2
ZXIsCisgICAgICAgIHRoZXJlIGlzIG5vIE9mZnNjcmVlbkNhbnZhcyBhbmQgdGhlcmUncyB1bmxp
a2VseSB0byBiZSBvbmUgc29vbi4gIEFkZGl0aW9uYWxseSBDYW52YXNTdXJmYWNlIGJyZWFrcwor
ICAgICAgICBlbmNhcHN1bGF0aW9uIHByZXR0eSBiYWRseSBieSBkb2luZyAic3RhdGljX2Nhc3Q8
SFRNTENhbnZhc0VsZW1lbnQqIGNvbnN0Pih0aGlzKSIuICBVbnRpbCBhbiBhYnN0cmFjdGlvbiBp
cworICAgICAgICByZWFsbHkgbmVlZGVkIHdlIHNob3VsZCBqdXN0IHVzZSBIVE1MQ2FudmFzRWxl
bWVudCB3aGVuIHdlIHdhbnQgdG8gdGFsayBhYm91dCBhIGNhbnZhcy4KKworICAgICAgICBUaGlz
IHBhdGNoIG1vdmVzIGFsbCBvZiBDYW52YXNTdXJmYWNlJ3MgZnVuY3Rpb25hbGl0eSBiYWNrIHVw
IHRvIEhUTUxDYW52YXNFbGVtZW50IGFuZCByZW9yZGVycyB0aGUgaGVhZGVyCisgICAgICAgIHRv
IGJlIGEgYml0IG1vcmUgbG9naWNhbC4KKworICAgICAgICBSZWZhY3RvciB3aXRoIG5vIGJlaGF2
aW9yIGNoYW5nZSwgdGh1cyBubyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6Cisg
ICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGRvbS9DYW52YXNTdXJmYWNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vQ2Fu
dmFzU3VyZmFjZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OkhUTUxDYW52YXNFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50Ojp3aWxsRHJhdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6c2V0U3VyZmFjZVNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnRvRGF0YVVSTCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Y29udmVydExvZ2ljYWxUb0RldmljZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6c2VjdXJpdHlPcmlnaW4pOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnN0eWxlU2VsZWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpkcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6YnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxDYW52YXNFbGVtZW50OjpiYXNlVHJhbnNmb3JtKToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52
YXNFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6c2V0T2Jz
ZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OndpZHRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpoZWlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENh
bnZhc0VsZW1lbnQ6OnRvRGF0YVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxl
bWVudDo6c2V0T3JpZ2luVGFpbnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxl
bWVudDo6b3JpZ2luQ2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6
Omhhc0NyZWF0ZWRJbWFnZUJ1ZmZlcik6CisKIDIwMTAtMDctMDggIEphbWVzIFJvYmluc29uICA8
amFtZXNyQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KaW5kZXggN2ZhMzc1MjQ5Mjk4NTE2MGViM2E0ZjJiNTMxODZjZmVmYWJlYjRkMS4uMjhlODcy
YThiYjA3OTViMmQwMTE3YjFhMDgwNzhiNTI2NjVmYjNlZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC03NTUsOCArNzU1
LDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaCBc
CiAJV2ViQ29yZS9kb20vQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24uY3BwIFwKIAlXZWJD
b3JlL2RvbS9DU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbi5oIFwKLQlXZWJDb3JlL2RvbS9D
YW52YXNTdXJmYWNlLmNwcCBcCi0JV2ViQ29yZS9kb20vQ2FudmFzU3VyZmFjZS5oIFwKIAlXZWJD
b3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBcCiAJV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5o
IFwKIAlXZWJDb3JlL2RvbS9DaGVja2VkUmFkaW9CdXR0b25zLmNwcCBcCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGRjM2MxZmM5
MjdlMWExMDNmYmFiYmEyOGQ1YTcwMmNkMGMxYzZlZTEuLjIzMGE4Yzc1Yjk3NGJmMGYwMDlmMjA2
YjMwOTliYmIyZDNjMTM2M2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xMDc2LDggKzEwNzYsNiBAQAogICAgICAgICAgICAg
J2RvbS9DREFUQVNlY3Rpb24uaCcsCiAgICAgICAgICAgICAnZG9tL0NTU01hcHBlZEF0dHJpYnV0
ZURlY2xhcmF0aW9uLmNwcCcsCiAgICAgICAgICAgICAnZG9tL0NTU01hcHBlZEF0dHJpYnV0ZURl
Y2xhcmF0aW9uLmgnLAotICAgICAgICAgICAgJ2RvbS9DYW52YXNTdXJmYWNlLmNwcCcsCi0gICAg
ICAgICAgICAnZG9tL0NhbnZhc1N1cmZhY2UuaCcsCiAgICAgICAgICAgICAnZG9tL0NoYXJhY3Rl
ckRhdGEuY3BwJywKICAgICAgICAgICAgICdkb20vQ2hhcmFjdGVyRGF0YS5oJywKICAgICAgICAg
ICAgICdkb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggOGE4MzZmODhmZDRjZjQzZjZi
Y2I0ZjIzODk3Yjg0NDNlZWQxMzZlMS4uMzJlZmZjZTIxYzQ4NzAyY2RiN2UxZGE1YjU3MWFiOTU5
Mjc1NWQ0OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dl
YkNvcmUucHJvCkBAIC00NjAsNyArNDYwLDYgQEAgU09VUkNFUyArPSBcCiAgICAgZG9tL0JlZm9y
ZVRleHRJbnNlcnRlZEV2ZW50LmNwcCBcCiAgICAgZG9tL0JlZm9yZVVubG9hZEV2ZW50LmNwcCBc
CiAgICAgZG9tL0NEQVRBU2VjdGlvbi5jcHAgXAotICAgIGRvbS9DYW52YXNTdXJmYWNlLmNwcCBc
CiAgICAgZG9tL0NoYXJhY3RlckRhdGEuY3BwIFwKICAgICBkb20vQ2hlY2tlZFJhZGlvQnV0dG9u
cy5jcHAgXAogICAgIGRvbS9DaGlsZE5vZGVMaXN0LmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagppbmRleCAwZGE3NDUzZDNkNzk4MDQ0NmQzMDBlODQ2ZmRlODc1ZjNlNTEz
NzBjLi5hYTdjMWZlN2NmMWMwZDcxYjA3MzViM2Q5OTMwMzU5ODNhNDFmZDc0IDEwMDY0NAotLS0g
YS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTMyMjM3LDE0ICszMjIzNyw2IEBACiAJCQkJ
Pg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxDYW52
YXNTdXJmYWNlLmNwcCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGRvbVxDYW52YXNTdXJmYWNlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQot
CQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cQ0RBVEFTZWN0aW9uLmNwcCINCiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDk1YTY2NjAzYThkNjJhZjdlMjk3ZWE0Y2VmZTBlY2QzYzczNzQ2YmMuLjNhY2Q0
NmI4ZjI0MDlmOTk4OTliMWE3NTY0MTljMzhlNDRmYzg0YmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDQsOCArMjA0LDYgQEAKIAkJMEI5MDU2MUUw
RjI1N0U5MzAwOTVGRjZBIC8qIFRocmVhZGFibGVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEI5MDU2MUQwRjI1N0U5MzAwOTVGRjZBIC8q
IFRocmVhZGFibGVMb2FkZXIuY3BwICovOyB9OwogCQkwQjkwNTZGODBGMjY4NUYzMDA5NUZGNkEg
LyogV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwQjkwNTZGNjBGMjY4NUYzMDA5NUZGNkEgLyogV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5jcHAgKi87IH07CiAJCTBCOTA1NkY5MEYyNjg1RjMwMDk1RkY2QSAvKiBX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwQjkwNTZGNzBGMjY4NUYzMDA5NUZGNkEgLyogV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07Ci0JCTBCQzJD
Nzc3MTEzNEE4RkMwMDBCMkY2MSAvKiBDYW52YXNTdXJmYWNlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQzJDNzc1MTEzNEE4RkMwMDBCMkY2MSAv
KiBDYW52YXNTdXJmYWNlLmNwcCAqLzsgfTsKLQkJMEJDMkM3NzgxMTM0QThGQzAwMEIyRjYxIC8q
IENhbnZhc1N1cmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBCQzJDNzc2MTEzNEE4RkMwMDBCMkY2MSAvKiBDYW52YXNTdXJmYWNlLmggKi87IH07
CiAJCTBCRTAzMEEyMEYzMTEyRkIwMDNDMUE0NiAvKiBSZW5kZXJMaW5lQm94TGlzdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJFMDMwQTEwRjMxMTJG
QjAwM0MxQTQ2IC8qIFJlbmRlckxpbmVCb3hMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEMzRjFGNUExMEM4ODcxMjAwRDcyQ0UxIC8qIFdl
YkdMVW5pZm9ybUxvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBDM0YxRjU3MTBDODg3MTIwMEQ3MkNFMSAvKiBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbi5jcHAgKi87IH07CiAJCTBDM0YxRjVCMTBDODg3MTIwMEQ3MkNFMSAvKiBXZWJHTFVuaWZv
cm1Mb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEMzRjFGNTgxMEM4ODcxMjAwRDcyQ0UxIC8qIFdlYkdMVW5pZm9ybUxvY2F0aW9uLmggKi87
IH07CkBAIC01ODA4LDggKzU4MDYsNiBAQAogCQkwQjkwNTYxRDBGMjU3RTkzMDA5NUZGNkEgLyog
VGhyZWFkYWJsZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBUaHJlYWRhYmxlTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEI5
MDU2RjYwRjI2ODVGMzAwOTVGRjZBIC8qIFdvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCOTA1NkY3MEYyNjg1RjMwMDk1RkY2
QSAvKiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdvcmtlclRocmVhZGFibGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMEJDMkM3NzUxMTM0QThGQzAwMEIyRjYxIC8qIENhbnZhc1N1cmZhY2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FudmFzU3VyZmFjZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBCQzJDNzc2MTEzNEE4RkMwMDBCMkY2MSAvKiBDYW52
YXNTdXJmYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbnZhc1N1cmZh
Y2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJFMDMwQTEwRjMxMTJGQjAwM0Mx
QTQ2IC8qIFJlbmRlckxpbmVCb3hMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbmRlckxpbmVCb3hMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBD
M0YxRjU3MTBDODg3MTIwMEQ3MkNFMSAvKiBXZWJHTFVuaWZvcm1Mb2NhdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJHTFVuaWZvcm1Mb2NhdGlvbi5jcHA7
IHBhdGggPSBjYW52YXMvV2ViR0xVbmlmb3JtTG9jYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwQzNGMUY1ODEwQzg4NzEyMDBENzJDRTEgLyogV2ViR0xVbmlmb3JtTG9j
YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViR0xVbmlmb3JtTG9j
YXRpb24uaDsgcGF0aCA9IGNhbnZhcy9XZWJHTFVuaWZvcm1Mb2NhdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTY3OTEsOCArMTY3ODcsNiBAQAogCQkJCUFCMjNBMzI2MDlC
QkE3RDAwMDY3Q0M1MyAvKiBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5oICovLAogCQkJCTg1MDMx
QjI2MEE0NEVGQzcwMEY5OTJFMCAvKiBCZWZvcmVVbmxvYWRFdmVudC5jcHAgKi8sCiAJCQkJODUw
MzFCMjcwQTQ0RUZDNzAwRjk5MkUwIC8qIEJlZm9yZVVubG9hZEV2ZW50LmggKi8sCi0JCQkJMEJD
MkM3NzUxMTM0QThGQzAwMEIyRjYxIC8qIENhbnZhc1N1cmZhY2UuY3BwICovLAotCQkJCTBCQzJD
Nzc2MTEzNEE4RkMwMDBCMkY2MSAvKiBDYW52YXNTdXJmYWNlLmggKi8sCiAJCQkJNjU1MEI2OTMw
OTlERjAyNzAwOTBENzgxIC8qIENEQVRBU2VjdGlvbi5jcHAgKi8sCiAJCQkJNjU1MEI2OTQwOTlE
RjAyNzAwOTBENzgxIC8qIENEQVRBU2VjdGlvbi5oICovLAogCQkJCTg1MDg5Q0M5MEE5OEMyQUIw
MEEyNzVBQSAvKiBDREFUQVNlY3Rpb24uaWRsICovLApAQCAtMTcyMDAsNyArMTcxOTQsNiBAQAog
CQkJCTQ5QzdCOUREMTA0MkQzMkYwMDA5RDQ0NyAvKiBDYW52YXNSZW5kZXJpbmdDb250ZXh0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0OTQ4NEZDQjEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTQ4NEZDRTEwMkNGMjNDMDAx
ODdERDMgLyogQ2FudmFzU3R5bGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTBCQzJDNzc4MTEzNEE4
RkMwMDBCMkY2MSAvKiBDYW52YXNTdXJmYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTUwQjY5
RTA5OURGMDI3MDA5MEQ3ODEgLyogQ0RBVEFTZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MTQxODVFRTBDRDY1RjA0MDA3NjNDOTkgLyogQ2hhbmdlVmVyc2lvbldyYXBwZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTY1NTBCNkEwMDk5REYwMjcwMDkwRDc4MSAvKiBDaGFyYWN0ZXJEYXRhLmgg
aW4gSGVhZGVycyAqLywKQEAgLTIwMTE4LDcgKzIwMTExLDYgQEAKIAkJCQk0OUM3QjlEQzEwNDJE
MzJGMDAwOUQ0NDcgLyogQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0OTQ4NEZDQTEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5NDg0RkNEMTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52
YXNTdHlsZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwQkMyQzc3NzExMzRBOEZDMDAwQjJGNjEg
LyogQ2FudmFzU3VyZmFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTUwQjY5RDA5OURGMDI3
MDA5MEQ3ODEgLyogQ0RBVEFTZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNDE4NUVG
MENENjVGMDQwMDc2M0M5OSAvKiBDaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk2NTUwQjY5RjA5OURGMDI3MDA5MEQ3ODEgLyogQ2hhcmFjdGVyRGF0YS5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0NhbnZhc1N1cmZhY2UuY3BwIGIv
V2ViQ29yZS9kb20vQ2FudmFzU3VyZmFjZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDA3NmVmOTRhZDIzOTc3MjQyY2Q3ZGRmZTIzMWIzMzA4ZGUwNmEzZTguLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViQ29yZS9kb20vQ2FudmFzU3Vy
ZmFjZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDEwIFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ2FudmFzU3VyZmFj
ZS5oIgotCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgotI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgotI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZm
ZXIuaCIKLSNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotLy8gVGhlc2UgdmFsdWVzIGNvbWUgZnJvbSB0aGUgV2hhdFdHIHNwZWMuCi1jb25zdCBp
bnQgQ2FudmFzU3VyZmFjZTo6RGVmYXVsdFdpZHRoID0gMzAwOwotY29uc3QgaW50IENhbnZhc1N1
cmZhY2U6OkRlZmF1bHRIZWlnaHQgPSAxNTA7Ci0KLS8vIEZpcmVmb3ggbGltaXRzIHdpZHRoL2hl
aWdodCB0byAzMjc2NyBwaXhlbHMsIGJ1dCBzbG93cyBkb3duIGRyYW1hdGljYWxseSBiZWZvcmUg
aXQKLS8vIHJlYWNoZXMgdGhhdCBsaW1pdC4gV2UgbGltaXQgYnkgYXJlYSBpbnN0ZWFkLCBnaXZp
bmcgdXMgbGFyZ2VyIG1heGltdW0gZGltZW5zaW9ucywKLS8vIGluIGV4Y2hhbmdlIGZvciBhIHNt
YWxsZXIgbWF4aW11bSBjYW52YXMgc2l6ZS4KLWNvbnN0IGZsb2F0IENhbnZhc1N1cmZhY2U6Ok1h
eENhbnZhc0FyZWEgPSAzMjc2OCAqIDgxOTI7IC8vIE1heGltdW0gY2FudmFzIGFyZWEgaW4gQ1NT
IHBpeGVscwotCi1DYW52YXNTdXJmYWNlOjpDYW52YXNTdXJmYWNlKGZsb2F0IHBhZ2VTY2FsZUZh
Y3RvcikKLSAgICA6IG1fc2l6ZShEZWZhdWx0V2lkdGgsIERlZmF1bHRIZWlnaHQpCi0gICAgLCBt
X3BhZ2VTY2FsZUZhY3RvcihwYWdlU2NhbGVGYWN0b3IpCi0gICAgLCBtX29yaWdpbkNsZWFuKHRy
dWUpCi0gICAgLCBtX2hhc0NyZWF0ZWRJbWFnZUJ1ZmZlcihmYWxzZSkKLXsKLX0KLQotQ2FudmFz
U3VyZmFjZTo6fkNhbnZhc1N1cmZhY2UoKQotewotfQotCi12b2lkIENhbnZhc1N1cmZhY2U6OnNl
dFN1cmZhY2VTaXplKGNvbnN0IEludFNpemUmIHNpemUpCi17Ci0gICAgbV9zaXplID0gc2l6ZTsK
LSAgICBtX2hhc0NyZWF0ZWRJbWFnZUJ1ZmZlciA9IGZhbHNlOwotICAgIG1faW1hZ2VCdWZmZXIu
Y2xlYXIoKTsKLX0KLQotU3RyaW5nIENhbnZhc1N1cmZhY2U6OnRvRGF0YVVSTChjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBkb3VibGUqIHF1YWxpdHksIEV4Y2VwdGlvbkNvZGUmIGVjKQot
ewotICAgIGlmICghbV9vcmlnaW5DbGVhbikgewotICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsK
LSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIH0KLQotICAgIGlmIChtX3NpemUuaXNFbXB0
eSgpIHx8ICFidWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygiZGF0YTosIik7Ci0KLSAg
ICBTdHJpbmcgbG93ZXJjYXNlTWltZVR5cGUgPSBtaW1lVHlwZS5sb3dlcigpOwotCi0gICAgLy8g
RklYTUU6IE1ha2UgaXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcgdGhyZWFkc2Fm
ZSAodG8gYWxsb3cgdGhpcyBtZXRob2QgdG8gYmUgdXNlZCBvbiBhIHdvcmtlciB0aHJlYWQpLgot
ICAgIGlmIChtaW1lVHlwZS5pc051bGwoKSB8fCAhTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0
ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobG93ZXJjYXNlTWltZVR5cGUpKQotICAgICAgICBy
ZXR1cm4gYnVmZmVyKCktPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7Ci0KLSAgICByZXR1cm4gYnVm
ZmVyKCktPnRvRGF0YVVSTChsb3dlcmNhc2VNaW1lVHlwZSwgcXVhbGl0eSk7Ci19Ci0KLXZvaWQg
Q2FudmFzU3VyZmFjZTo6d2lsbERyYXcoY29uc3QgRmxvYXRSZWN0JikKLXsKLSAgICBpZiAobV9p
bWFnZUJ1ZmZlcikKLSAgICAgICAgbV9pbWFnZUJ1ZmZlci0+Y2xlYXJJbWFnZSgpOwotfQotCi1J
bnRSZWN0IENhbnZhc1N1cmZhY2U6OmNvbnZlcnRMb2dpY2FsVG9EZXZpY2UoY29uc3QgRmxvYXRS
ZWN0JiBsb2dpY2FsUmVjdCkgY29uc3QKLXsKLSAgICByZXR1cm4gSW50UmVjdChjb252ZXJ0TG9n
aWNhbFRvRGV2aWNlKGxvZ2ljYWxSZWN0LmxvY2F0aW9uKCkpLCBjb252ZXJ0TG9naWNhbFRvRGV2
aWNlKGxvZ2ljYWxSZWN0LnNpemUoKSkpOwotfQotCi1JbnRTaXplIENhbnZhc1N1cmZhY2U6OmNv
bnZlcnRMb2dpY2FsVG9EZXZpY2UoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSkgY29uc3QK
LXsKLSAgICBmbG9hdCB3ZiA9IGNlaWxmKGxvZ2ljYWxTaXplLndpZHRoKCkgKiBtX3BhZ2VTY2Fs
ZUZhY3Rvcik7Ci0gICAgZmxvYXQgaGYgPSBjZWlsZihsb2dpY2FsU2l6ZS5oZWlnaHQoKSAqIG1f
cGFnZVNjYWxlRmFjdG9yKTsKLQotICAgIGlmICghKHdmID49IDEgJiYgaGYgPj0gMSAmJiB3ZiAq
IGhmIDw9IE1heENhbnZhc0FyZWEpKQotICAgICAgICByZXR1cm4gSW50U2l6ZSgpOwotCi0gICAg
cmV0dXJuIEludFNpemUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHdmKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGhmKSk7Ci19Ci0KLUludFBvaW50IENhbnZhc1N1cmZhY2U6OmNvbnZlcnRMb2dpY2Fs
VG9EZXZpY2UoY29uc3QgRmxvYXRQb2ludCYgbG9naWNhbFBvcykgY29uc3QKLXsKLSAgICBmbG9h
dCB4ZiA9IGxvZ2ljYWxQb3MueCgpICogbV9wYWdlU2NhbGVGYWN0b3I7Ci0gICAgZmxvYXQgeWYg
PSBsb2dpY2FsUG9zLnkoKSAqIG1fcGFnZVNjYWxlRmFjdG9yOwotCi0gICAgcmV0dXJuIEludFBv
aW50KHN0YXRpY19jYXN0PHVuc2lnbmVkPih4ZiksIHN0YXRpY19jYXN0PHVuc2lnbmVkPih5Zikp
OwotfQotCi12b2lkIENhbnZhc1N1cmZhY2U6OmNyZWF0ZUltYWdlQnVmZmVyKCkgY29uc3QKLXsK
LSAgICBBU1NFUlQoIW1faW1hZ2VCdWZmZXIpOwotCi0gICAgbV9oYXNDcmVhdGVkSW1hZ2VCdWZm
ZXIgPSB0cnVlOwotCi0gICAgRmxvYXRTaXplIHVuc2NhbGVkU2l6ZSh3aWR0aCgpLCBoZWlnaHQo
KSk7Ci0gICAgSW50U2l6ZSBzaXplID0gY29udmVydExvZ2ljYWxUb0RldmljZSh1bnNjYWxlZFNp
emUpOwotICAgIGlmICghc2l6ZS53aWR0aCgpIHx8ICFzaXplLmhlaWdodCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBtX2ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKTsK
LSAgICAvLyBUaGUgY29udmVydExvZ2ljYWxUb0RldmljZSBNYXhDYW52YXNBcmVhIGNoZWNrIHNo
b3VsZCBwcmV2ZW50IGNvbW1vbiBjYXNlcwotICAgIC8vIHdoZXJlIEltYWdlQnVmZmVyOjpjcmVh
dGUoKSByZXR1cm5zIDAsIGhvd2V2ZXIgd2UgY291bGQgc3RpbGwgYmUgbG93IG9uIG1lbW9yeS4K
LSAgICBpZiAoIW1faW1hZ2VCdWZmZXIpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2ltYWdlQnVm
ZmVyLT5jb250ZXh0KCktPnNjYWxlKEZsb2F0U2l6ZShzaXplLndpZHRoKCkgLyB1bnNjYWxlZFNp
emUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSAvIHVuc2NhbGVkU2l6ZS5oZWlnaHQoKSkpOwotICAg
IG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS0+c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXModHJ1
ZSk7Ci19Ci0KLUdyYXBoaWNzQ29udGV4dCogQ2FudmFzU3VyZmFjZTo6ZHJhd2luZ0NvbnRleHQo
KSBjb25zdAotewotICAgIHJldHVybiBidWZmZXIoKSA/IG1faW1hZ2VCdWZmZXItPmNvbnRleHQo
KSA6IDA7Ci19Ci0KLUltYWdlQnVmZmVyKiBDYW52YXNTdXJmYWNlOjpidWZmZXIoKSBjb25zdAot
ewotICAgIGlmICghbV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXIpCi0gICAgICAgIGNyZWF0ZUltYWdl
QnVmZmVyKCk7Ci0gICAgcmV0dXJuIG1faW1hZ2VCdWZmZXIuZ2V0KCk7Ci19Ci0KLUFmZmluZVRy
YW5zZm9ybSBDYW52YXNTdXJmYWNlOjpiYXNlVHJhbnNmb3JtKCkgY29uc3QKLXsKLSAgICBBU1NF
UlQobV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXIpOwotICAgIEZsb2F0U2l6ZSB1bnNjYWxlZFNpemUo
d2lkdGgoKSwgaGVpZ2h0KCkpOwotICAgIEludFNpemUgc2l6ZSA9IGNvbnZlcnRMb2dpY2FsVG9E
ZXZpY2UodW5zY2FsZWRTaXplKTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwotICAg
IGlmIChzaXplLndpZHRoKCkgJiYgc2l6ZS5oZWlnaHQoKSkKLSAgICAgICAgdHJhbnNmb3JtLnNj
YWxlTm9uVW5pZm9ybShzaXplLndpZHRoKCkgLyB1bnNjYWxlZFNpemUud2lkdGgoKSwgc2l6ZS5o
ZWlnaHQoKSAvIHVuc2NhbGVkU2l6ZS5oZWlnaHQoKSk7Ci0gICAgdHJhbnNmb3JtLm11bHRpcGx5
KG1faW1hZ2VCdWZmZXItPmJhc2VUcmFuc2Zvcm0oKSk7Ci0gICAgcmV0dXJuIHRyYW5zZm9ybTsK
LX0KLQotLy8gRklYTUU6IEV2ZXJ5dGhpbmcgYmVsb3cgaGVyZSByZWxpZXMgb24gQ2FudmFzU3Vy
ZmFjZSByZWFsbHkgYmVpbmcKLS8vIGEgSFRNTENhbnZhc0VsZW1lbnQuCi1jb25zdCBTZWN1cml0
eU9yaWdpbiYgQ2FudmFzU3VyZmFjZTo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAotewotICAgIHJl
dHVybiAqKHN0YXRpY19jYXN0PGNvbnN0IEhUTUxDYW52YXNFbGVtZW50Kj4odGhpcyktPmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpOwotfQotCi1SZW5kZXJCb3gqIENhbnZhc1N1cmZhY2U6
OnJlbmRlckJveCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEhUTUxD
YW52YXNFbGVtZW50Kj4odGhpcyktPnJlbmRlckJveCgpOwotfQotCi1SZW5kZXJTdHlsZSogQ2Fu
dmFzU3VyZmFjZTo6Y29tcHV0ZWRTdHlsZSgpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhU
TUxDYW52YXNFbGVtZW50Kj4odGhpcyktPmNvbXB1dGVkU3R5bGUoKTsKLX0KLQotQ1NTU3R5bGVT
ZWxlY3RvciogQ2FudmFzU3VyZmFjZTo6c3R5bGVTZWxlY3RvcigpCi17Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PEhUTUxDYW52YXNFbGVtZW50Kj4odGhpcyktPmRvY3VtZW50KCktPnN0eWxlU2Vs
ZWN0b3IoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9kb20vQ2FudmFzU3VyZmFjZS5oIGIvV2ViQ29yZS9kb20vQ2FudmFzU3VyZmFjZS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjAxMzgxZjA3ZGFjNzlmMGExNWU5NjZjMzA2ZTZl
M2E2MThmNzk2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1dlYkNvcmUvZG9tL0NhbnZhc1N1cmZhY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDExMSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4g
THRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQ2FudmFzU3VyZmFjZV9o
Ci0jZGVmaW5lIENhbnZhc1N1cmZhY2VfaAotCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgi
Ci0jaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0KLSNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwotY2xhc3MgRmxvYXRQ
b2ludDsKLWNsYXNzIEZsb2F0UmVjdDsKLWNsYXNzIEZsb2F0U2l6ZTsKLWNsYXNzIEdyYXBoaWNz
Q29udGV4dDsKLWNsYXNzIEltYWdlQnVmZmVyOwotY2xhc3MgSW50UG9pbnQ7Ci0KLWNsYXNzIENT
U1N0eWxlU2VsZWN0b3I7Ci1jbGFzcyBSZW5kZXJCb3g7Ci1jbGFzcyBSZW5kZXJTdHlsZTsKLWNs
YXNzIFNlY3VyaXR5T3JpZ2luOwotCi10eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwotCi1jbGFz
cyBDYW52YXNTdXJmYWNlIDogcHVibGljIE5vbmNvcHlhYmxlIHsKLXB1YmxpYzoKLSAgICBDYW52
YXNTdXJmYWNlKGZsb2F0IHBhZ2VTY2FsZUZhY3Rvcik7Ci0gICAgdmlydHVhbCB+Q2FudmFzU3Vy
ZmFjZSgpOwotCi0gICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zaXplLndpZHRoKCk7
IH0KLSAgICBpbnQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9zaXplLmhlaWdodCgpOyB9Ci0K
LSAgICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IGRvdWJs
ZSogcXVhbGl0eSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFN0cmluZyB0b0RhdGFVUkwoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIHRvRGF0YVVSTCht
aW1lVHlwZSwgMCwgZWMpOyB9Ci0KLSAgICBjb25zdCBJbnRTaXplJiBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaXplOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoY29uc3QgRmxvYXRS
ZWN0Jik7Ci0KLSAgICBHcmFwaGljc0NvbnRleHQqIGRyYXdpbmdDb250ZXh0KCkgY29uc3Q7Ci0K
LSAgICBJbWFnZUJ1ZmZlciogYnVmZmVyKCkgY29uc3Q7Ci0KLSAgICBJbnRSZWN0IGNvbnZlcnRM
b2dpY2FsVG9EZXZpY2UoY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7Ci0gICAgSW50U2l6ZSBjb252
ZXJ0TG9naWNhbFRvRGV2aWNlKGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0OwotICAgIEludFBvaW50
IGNvbnZlcnRMb2dpY2FsVG9EZXZpY2UoY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OwotCi0gICAg
dm9pZCBzZXRPcmlnaW5UYWludGVkKCkgeyBtX29yaWdpbkNsZWFuID0gZmFsc2U7IH0KLSAgICBi
b29sIG9yaWdpbkNsZWFuKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5DbGVhbjsgfQotCi0gICAg
QWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdDsKLQotICAgIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OwotICAgIFJlbmRlckJveCogcmVuZGVy
Qm94KCkgY29uc3Q7Ci0gICAgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoKTsKLSAgICBDU1NT
dHlsZVNlbGVjdG9yKiBzdHlsZVNlbGVjdG9yKCk7Ci0KLXByb3RlY3RlZDoKLSAgICB2b2lkIHNl
dFN1cmZhY2VTaXplKGNvbnN0IEludFNpemUmKTsKLSAgICBib29sIGhhc0NyZWF0ZWRJbWFnZUJ1
ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ3JlYXRlZEltYWdlQnVmZmVyOyB9Ci0KLSAgICBz
dGF0aWMgY29uc3QgaW50IERlZmF1bHRXaWR0aDsKLSAgICBzdGF0aWMgY29uc3QgaW50IERlZmF1
bHRIZWlnaHQ7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcigpIGNvbnN0
OwotCi0gICAgc3RhdGljIGNvbnN0IGZsb2F0IE1heENhbnZhc0FyZWE7Ci0KLSAgICBJbnRTaXpl
IG1fc2l6ZTsKLQotICAgIGZsb2F0IG1fcGFnZVNjYWxlRmFjdG9yOwotICAgIGJvb2wgbV9vcmln
aW5DbGVhbjsKLQotICAgIC8vIG1fY3JlYXRlZEltYWdlQnVmZmVyIG1lYW5zIHdlIHRyaWVkIHRv
IG1hbGxvYyB0aGUgYnVmZmVyLiAgV2UgZGlkbid0IG5lY2Vzc2FyaWx5IGdldCBpdC4KLSAgICBt
dXRhYmxlIGJvb2wgbV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXI7Ci0gICAgbXV0YWJsZSBPd25QdHI8
SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNw
cCBiL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggZjhiYWYyMGM0OWE5
ODk4N2U0YjcwZDA1YzNjNjhlYTBhZGQwMzU2Zi4uMDZiNTRmMTEwNThhMjkyMTAyMTY1MmQ2YjRk
YzY4OWY2ZWNkNTdhOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC00MCw2ICs0
MCw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckhUTUxDYW52YXMuaCIKICNp
bmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtNTUsMTEgKzU2LDIzIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAorLy8gVGhlc2UgdmFsdWVzIGNvbWUg
ZnJvbSB0aGUgV2hhdFdHIHNwZWMuCitjb25zdCBpbnQgSFRNTENhbnZhc0VsZW1lbnQ6OkRlZmF1
bHRXaWR0aCA9IDMwMDsKK2NvbnN0IGludCBIVE1MQ2FudmFzRWxlbWVudDo6RGVmYXVsdEhlaWdo
dCA9IDE1MDsKKworLy8gRmlyZWZveCBsaW1pdHMgd2lkdGgvaGVpZ2h0IHRvIDMyNzY3IHBpeGVs
cywgYnV0IHNsb3dzIGRvd24gZHJhbWF0aWNhbGx5IGJlZm9yZSBpdAorLy8gcmVhY2hlcyB0aGF0
IGxpbWl0LiBXZSBsaW1pdCBieSBhcmVhIGluc3RlYWQsIGdpdmluZyB1cyBsYXJnZXIgbWF4aW11
bSBkaW1lbnNpb25zLAorLy8gaW4gZXhjaGFuZ2UgZm9yIGEgc21hbGxlciBtYXhpbXVtIGNhbnZh
cyBzaXplLgorY29uc3QgZmxvYXQgSFRNTENhbnZhc0VsZW1lbnQ6Ok1heENhbnZhc0FyZWEgPSAz
Mjc2OCAqIDgxOTI7IC8vIE1heGltdW0gY2FudmFzIGFyZWEgaW4gQ1NTIHBpeGVscworCiBIVE1M
Q2FudmFzRWxlbWVudDo6SFRNTENhbnZhc0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQpCi0gICAgLCBDYW52YXNTdXJmYWNlKGRvY3VtZW50LT5mcmFtZSgpID8gZG9jdW1lbnQt
PmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCktPnNjYWxlRmFjdG9yKCkgOiAxKQogICAgICwgbV9v
YnNlcnZlcigwKQogICAgICwgbV9pZ25vcmVSZXNldChmYWxzZSkKKyAgICAsIG1fc2l6ZShEZWZh
dWx0V2lkdGgsIERlZmF1bHRIZWlnaHQpCisgICAgLCBtX3BhZ2VTY2FsZUZhY3Rvcihkb2N1bWVu
dC0+ZnJhbWUoKSA/IGRvY3VtZW50LT5mcmFtZSgpLT5wYWdlKCktPmNocm9tZSgpLT5zY2FsZUZh
Y3RvcigpIDogMSkKKyAgICAsIG1fb3JpZ2luQ2xlYW4odHJ1ZSkKKyAgICAsIG1faGFzQ3JlYXRl
ZEltYWdlQnVmZmVyKGZhbHNlKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGNhbnZhc1RhZykp
OwogfQpAQCAtMTg2LDcgKzE5OSw4IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIEhUTUxDYW52
YXNFbGVtZW50OjpnZXRDb250ZXh0KGNvbnN0IFN0cmluZyYgdHlwZSwgQ2FudmFzCiAKIHZvaWQg
SFRNTENhbnZhc0VsZW1lbnQ6OndpbGxEcmF3KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAg
ICBDYW52YXNTdXJmYWNlOjp3aWxsRHJhdyhyZWN0KTsKKyAgICBpZiAobV9pbWFnZUJ1ZmZlcikK
KyAgICAgICAgbV9pbWFnZUJ1ZmZlci0+Y2xlYXJJbWFnZSgpOwogCiAgICAgaWYgKFJlbmRlckJv
eCogcm8gPSByZW5kZXJCb3goKSkgewogICAgICAgICBGbG9hdFJlY3QgZGVzdFJlY3QgPSByby0+
Y29udGVudEJveFJlY3QoKTsKQEAgLTI5MCw0ICszMDQsMTA4IEBAIHZvaWQgSFRNTENhbnZhc0Vs
ZW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkKICAgICB9CiB9CiAKK3ZvaWQg
SFRNTENhbnZhc0VsZW1lbnQ6OnNldFN1cmZhY2VTaXplKGNvbnN0IEludFNpemUmIHNpemUpCit7
CisgICAgbV9zaXplID0gc2l6ZTsKKyAgICBtX2hhc0NyZWF0ZWRJbWFnZUJ1ZmZlciA9IGZhbHNl
OworICAgIG1faW1hZ2VCdWZmZXIuY2xlYXIoKTsKK30KKworU3RyaW5nIEhUTUxDYW52YXNFbGVt
ZW50Ojp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91YmxlKiBxdWFs
aXR5LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIW1fb3JpZ2luQ2xlYW4pIHsKKyAg
ICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICB9
CisKKyAgICBpZiAobV9zaXplLmlzRW1wdHkoKSB8fCAhYnVmZmVyKCkpCisgICAgICAgIHJldHVy
biBTdHJpbmcoImRhdGE6LCIpOworCisgICAgU3RyaW5nIGxvd2VyY2FzZU1pbWVUeXBlID0gbWlt
ZVR5cGUubG93ZXIoKTsKKworICAgIC8vIEZJWE1FOiBNYWtlIGlzU3VwcG9ydGVkSW1hZ2VNSU1F
VHlwZUZvckVuY29kaW5nIHRocmVhZHNhZmUgKHRvIGFsbG93IHRoaXMgbWV0aG9kIHRvIGJlIHVz
ZWQgb24gYSB3b3JrZXIgdGhyZWFkKS4KKyAgICBpZiAobWltZVR5cGUuaXNOdWxsKCkgfHwgIU1J
TUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKGxvd2Vy
Y2FzZU1pbWVUeXBlKSkKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcigpLT50b0RhdGFVUkwoImltYWdl
L3BuZyIpOworCisgICAgcmV0dXJuIGJ1ZmZlcigpLT50b0RhdGFVUkwobG93ZXJjYXNlTWltZVR5
cGUsIHF1YWxpdHkpOworfQorCitJbnRSZWN0IEhUTUxDYW52YXNFbGVtZW50Ojpjb252ZXJ0TG9n
aWNhbFRvRGV2aWNlKGNvbnN0IEZsb2F0UmVjdCYgbG9naWNhbFJlY3QpIGNvbnN0Cit7CisgICAg
cmV0dXJuIEludFJlY3QoY29udmVydExvZ2ljYWxUb0RldmljZShsb2dpY2FsUmVjdC5sb2NhdGlv
bigpKSwgY29udmVydExvZ2ljYWxUb0RldmljZShsb2dpY2FsUmVjdC5zaXplKCkpKTsKK30KKwor
SW50U2l6ZSBIVE1MQ2FudmFzRWxlbWVudDo6Y29udmVydExvZ2ljYWxUb0RldmljZShjb25zdCBG
bG9hdFNpemUmIGxvZ2ljYWxTaXplKSBjb25zdAoreworICAgIGZsb2F0IHdmID0gY2VpbGYobG9n
aWNhbFNpemUud2lkdGgoKSAqIG1fcGFnZVNjYWxlRmFjdG9yKTsKKyAgICBmbG9hdCBoZiA9IGNl
aWxmKGxvZ2ljYWxTaXplLmhlaWdodCgpICogbV9wYWdlU2NhbGVGYWN0b3IpOworCisgICAgaWYg
KCEod2YgPj0gMSAmJiBoZiA+PSAxICYmIHdmICogaGYgPD0gTWF4Q2FudmFzQXJlYSkpCisgICAg
ICAgIHJldHVybiBJbnRTaXplKCk7CisKKyAgICByZXR1cm4gSW50U2l6ZShzdGF0aWNfY2FzdDx1
bnNpZ25lZD4od2YpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaGYpKTsKK30KKworSW50UG9pbnQg
SFRNTENhbnZhc0VsZW1lbnQ6OmNvbnZlcnRMb2dpY2FsVG9EZXZpY2UoY29uc3QgRmxvYXRQb2lu
dCYgbG9naWNhbFBvcykgY29uc3QKK3sKKyAgICBmbG9hdCB4ZiA9IGxvZ2ljYWxQb3MueCgpICog
bV9wYWdlU2NhbGVGYWN0b3I7CisgICAgZmxvYXQgeWYgPSBsb2dpY2FsUG9zLnkoKSAqIG1fcGFn
ZVNjYWxlRmFjdG9yOworCisgICAgcmV0dXJuIEludFBvaW50KHN0YXRpY19jYXN0PHVuc2lnbmVk
Pih4ZiksIHN0YXRpY19jYXN0PHVuc2lnbmVkPih5ZikpOworfQorCitjb25zdCBTZWN1cml0eU9y
aWdpbiYgSFRNTENhbnZhc0VsZW1lbnQ6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gKmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7Cit9CisKK0NTU1N0eWxlU2VsZWN0
b3IqIEhUTUxDYW52YXNFbGVtZW50OjpzdHlsZVNlbGVjdG9yKCkKK3sKKyAgICByZXR1cm4gZG9j
dW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpOworfQorCit2b2lkIEhUTUxDYW52YXNFbGVtZW50Ojpj
cmVhdGVJbWFnZUJ1ZmZlcigpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX2ltYWdlQnVmZmVyKTsK
KworICAgIG1faGFzQ3JlYXRlZEltYWdlQnVmZmVyID0gdHJ1ZTsKKworICAgIEZsb2F0U2l6ZSB1
bnNjYWxlZFNpemUod2lkdGgoKSwgaGVpZ2h0KCkpOworICAgIEludFNpemUgc2l6ZSA9IGNvbnZl
cnRMb2dpY2FsVG9EZXZpY2UodW5zY2FsZWRTaXplKTsKKyAgICBpZiAoIXNpemUud2lkdGgoKSB8
fCAhc2l6ZS5oZWlnaHQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pbWFnZUJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSk7CisgICAgLy8gVGhlIGNvbnZlcnRMb2dpY2FsVG9E
ZXZpY2UgTWF4Q2FudmFzQXJlYSBjaGVjayBzaG91bGQgcHJldmVudCBjb21tb24gY2FzZXMKKyAg
ICAvLyB3aGVyZSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKCkgcmV0dXJucyAwLCBob3dldmVyIHdlIGNv
dWxkIHN0aWxsIGJlIGxvdyBvbiBtZW1vcnkuCisgICAgaWYgKCFtX2ltYWdlQnVmZmVyKQorICAg
ICAgICByZXR1cm47CisgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLT5zY2FsZShGbG9hdFNp
emUoc2l6ZS53aWR0aCgpIC8gdW5zY2FsZWRTaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkgLyB1
bnNjYWxlZFNpemUuaGVpZ2h0KCkpKTsKKyAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCktPnNl
dFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKHRydWUpOworfQorCitHcmFwaGljc0NvbnRleHQqIEhU
TUxDYW52YXNFbGVtZW50OjpkcmF3aW5nQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGJ1
ZmZlcigpID8gbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpIDogMDsKK30KKworSW1hZ2VCdWZmZXIq
IEhUTUxDYW52YXNFbGVtZW50OjpidWZmZXIoKSBjb25zdAoreworICAgIGlmICghbV9oYXNDcmVh
dGVkSW1hZ2VCdWZmZXIpCisgICAgICAgIGNyZWF0ZUltYWdlQnVmZmVyKCk7CisgICAgcmV0dXJu
IG1faW1hZ2VCdWZmZXIuZ2V0KCk7Cit9CisKK0FmZmluZVRyYW5zZm9ybSBIVE1MQ2FudmFzRWxl
bWVudDo6YmFzZVRyYW5zZm9ybSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faGFzQ3JlYXRlZElt
YWdlQnVmZmVyKTsKKyAgICBGbG9hdFNpemUgdW5zY2FsZWRTaXplKHdpZHRoKCksIGhlaWdodCgp
KTsKKyAgICBJbnRTaXplIHNpemUgPSBjb252ZXJ0TG9naWNhbFRvRGV2aWNlKHVuc2NhbGVkU2l6
ZSk7CisgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKKyAgICBpZiAoc2l6ZS53aWR0aCgp
ICYmIHNpemUuaGVpZ2h0KCkpCisgICAgICAgIHRyYW5zZm9ybS5zY2FsZU5vblVuaWZvcm0oc2l6
ZS53aWR0aCgpIC8gdW5zY2FsZWRTaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkgLyB1bnNjYWxl
ZFNpemUuaGVpZ2h0KCkpOworICAgIHRyYW5zZm9ybS5tdWx0aXBseShtX2ltYWdlQnVmZmVyLT5i
YXNlVHJhbnNmb3JtKCkpOworICAgIHJldHVybiB0cmFuc2Zvcm07Cit9CisKIH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmgKaW5kZXggYWVmNjkxMDc1ODVhZTU5MzE3Njg3YjZiNDA4ZGM3OTNhYmIx
MWUwMy4uNGQwYTFjOTIyZDFjZDhlMWJkNTFhZTgxZTQ5NDExYzU5ZWE1ZWViNiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hU
TUxDYW52YXNFbGVtZW50LmgKQEAgLTI4LDcgKzI4LDYgQEAKICNpZm5kZWYgSFRNTENhbnZhc0Vs
ZW1lbnRfaAogI2RlZmluZSBIVE1MQ2FudmFzRWxlbWVudF9oCiAKLSNpbmNsdWRlICJDYW52YXNT
dXJmYWNlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQu
aCIKICNpbmNsdWRlICJJbnRTaXplLmgiCkBAIC00Myw2ICs0Miw3IEBAIGNsYXNzIENhbnZhc0Nv
bnRleHRBdHRyaWJ1dGVzOwogY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDsKIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDsKIGNsYXNzIEhUTUxDYW52YXNFbGVtZW50OworY2xhc3MgSW1hZ2VCdWZm
ZXI7CiBjbGFzcyBJbnRTaXplOwogCiBjbGFzcyBDYW52YXNPYnNlcnZlciB7CkBAIC01NCwxNyAr
NTQsMjMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjYW52YXNEZXN0cm95ZWQoSFRNTENh
bnZhc0VsZW1lbnQqKSA9IDA7CiB9OwogCi1jbGFzcyBIVE1MQ2FudmFzRWxlbWVudCA6IHB1Ymxp
YyBIVE1MRWxlbWVudCwgcHVibGljIENhbnZhc1N1cmZhY2UgeworY2xhc3MgSFRNTENhbnZhc0Vs
ZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEhUTUxDYW52YXNFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCopOwogICAgIHZpcnR1YWwgfkhUTUxDYW52YXNFbGVtZW50KCk7CiAKKyAgICB2b2lk
IHNldE9ic2VydmVyKENhbnZhc09ic2VydmVyKiBvYnNlcnZlcikgeyBtX29ic2VydmVyID0gb2Jz
ZXJ2ZXI7IH0KKworICAgIC8vIEF0dHJpYnV0ZXMgYW5kIGZ1bmN0aW9ucyBleHBvc2VkIHRvIHNj
cmlwdAorICAgIGludCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIHNpemUoKS53aWR0aCgpOyB9Cisg
ICAgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIHNpemUoKS5oZWlnaHQoKTsgfQorCisgICAg
Y29uc3QgSW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorCiAgICAgdm9p
ZCBzZXRXaWR0aChpbnQpOwogICAgIHZvaWQgc2V0SGVpZ2h0KGludCk7CiAKLSAgICBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0KiBnZXRDb250ZXh0KGNvbnN0IFN0cmluZyYsIENhbnZhc0NvbnRleHRB
dHRyaWJ1dGVzKiBhdHRyaWJ1dGVzID0gMCk7Ci0KICAgICB2b2lkIHNldFNpemUoY29uc3QgSW50
U2l6ZSYgbmV3U2l6ZSkKICAgICB7IAogICAgICAgICBpZiAobmV3U2l6ZSA9PSBzaXplKCkpCkBA
IC03NiwxNiArODIsMzMgQEAgcHVibGljOgogICAgICAgICByZXNldCgpOwogICAgIH0KIAotICAg
IHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhjb25zdCBGbG9hdFJlY3QmKTsKKyAgICBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0KiBnZXRDb250ZXh0KGNvbnN0IFN0cmluZyYsIENhbnZhc0NvbnRleHRBdHRy
aWJ1dGVzKiBhdHRyaWJ1dGVzID0gMCk7CisKKyAgICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IGRvdWJsZSogcXVhbGl0eSwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIFN0cmluZyB0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpIHsgcmV0dXJuIHRvRGF0YVVSTChtaW1lVHlwZSwgMCwgZWMpOyB9CisKKyAgICAvLyBV
c2VkIGZvciByZW5kZXJpbmcKKyAgICB2b2lkIHdpbGxEcmF3KGNvbnN0IEZsb2F0UmVjdCYpOwog
CiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAg
ICB2b2lkIHNldE9ic2VydmVyKENhbnZhc09ic2VydmVyKiBvYnNlcnZlcikgeyBtX29ic2VydmVy
ID0gb2JzZXJ2ZXI7IH0KKyAgICBHcmFwaGljc0NvbnRleHQqIGRyYXdpbmdDb250ZXh0KCkgY29u
c3Q7CiAKICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiByZW5kZXJpbmdDb250ZXh0KCkgY29u
c3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CiAKLSAgICBSZW5kZXJCb3gqIHJlbmRlckJv
eCgpIGNvbnN0IHsgcmV0dXJuIEhUTUxFbGVtZW50OjpyZW5kZXJCb3goKTsgfQotICAgIFJlbmRl
clN0eWxlKiBjb21wdXRlZFN0eWxlKCkgeyByZXR1cm4gSFRNTEVsZW1lbnQ6OmNvbXB1dGVkU3R5
bGUoKTsgfQorICAgIEltYWdlQnVmZmVyKiBidWZmZXIoKSBjb25zdDsKKworICAgIEludFJlY3Qg
Y29udmVydExvZ2ljYWxUb0RldmljZShjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKKyAgICBJbnRT
aXplIGNvbnZlcnRMb2dpY2FsVG9EZXZpY2UoY29uc3QgRmxvYXRTaXplJikgY29uc3Q7CisgICAg
SW50UG9pbnQgY29udmVydExvZ2ljYWxUb0RldmljZShjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7
CisKKyAgICBjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKKyAg
ICB2b2lkIHNldE9yaWdpblRhaW50ZWQoKSB7IG1fb3JpZ2luQ2xlYW4gPSBmYWxzZTsgfQorICAg
IGJvb2wgb3JpZ2luQ2xlYW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbkNsZWFuOyB9CisKKyAg
ICBDU1NTdHlsZVNlbGVjdG9yKiBzdHlsZVNlbGVjdG9yKCk7CisKKyAgICBBZmZpbmVUcmFuc2Zv
cm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKDNEX0NBTlZBUykgICAgCiAg
ICAgYm9vbCBpczNEKCkgY29uc3Q7CkBAIC0xMDYsMTMgKzEyOSwzMiBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCByZXNldCgpOwogCi0gICAgYm9vbCBtX3JlbmRlcmVySXNDYW52YXM7CisgICAgdm9p
ZCBjcmVhdGVJbWFnZUJ1ZmZlcigpIGNvbnN0OworCisgICAgdm9pZCBzZXRTdXJmYWNlU2l6ZShj
b25zdCBJbnRTaXplJik7CisgICAgYm9vbCBoYXNDcmVhdGVkSW1hZ2VCdWZmZXIoKSBjb25zdCB7
IHJldHVybiBtX2hhc0NyZWF0ZWRJbWFnZUJ1ZmZlcjsgfQogCi0gICAgT3duUHRyPENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQ+IG1fY29udGV4dDsKICAgICBDYW52YXNPYnNlcnZlciogbV9vYnNlcnZl
cjsKIAorICAgIHN0YXRpYyBjb25zdCBmbG9hdCBNYXhDYW52YXNBcmVhOworICAgIHN0YXRpYyBj
b25zdCBpbnQgRGVmYXVsdFdpZHRoOworICAgIHN0YXRpYyBjb25zdCBpbnQgRGVmYXVsdEhlaWdo
dDsKKworICAgIEludFNpemUgbV9zaXplOworCisgICAgT3duUHRyPENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ+IG1fY29udGV4dDsKKworICAgIGJvb2wgbV9yZW5kZXJlcklzQ2FudmFzOworCiAgICAg
Ym9vbCBtX2lnbm9yZVJlc2V0OwogICAgIEZsb2F0UmVjdCBtX2RpcnR5UmVjdDsKKworICAgIGZs
b2F0IG1fcGFnZVNjYWxlRmFjdG9yOworICAgIGJvb2wgbV9vcmlnaW5DbGVhbjsKKworICAgIC8v
IG1fY3JlYXRlZEltYWdlQnVmZmVyIG1lYW5zIHdlIHRyaWVkIHRvIG1hbGxvYyB0aGUgYnVmZmVy
LiAgV2UgZGlkbid0IG5lY2Vzc2FyaWx5IGdldCBpdC4KKyAgICBtdXRhYmxlIGJvb2wgbV9oYXND
cmVhdGVkSW1hZ2VCdWZmZXI7CisgICAgbXV0YWJsZSBPd25QdHI8SW1hZ2VCdWZmZXI+IG1faW1h
Z2VCdWZmZXI7CiB9OwogCiB9IC8vbmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61126</attachid>
            <date>2010-07-09 17:50:32 -0700</date>
            <delta_ts>2010-07-09 18:27:21 -0700</delta_ts>
            <desc>File local constants instead of statics, fix initialization order</desc>
            <filename>bug-42005-20100709175031.patch</filename>
            <type>text/plain</type>
            <size>29635</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDRjMjNkNDBjYTkxYzk3YjE5ZmY2Y2JmODE2ZGRhMjRjY2IyMzUyZWIuLmZhZWMy
YmZmNDZjZDJlMWM2NjJlZDdiMDE3YTBkM2IzNDE5ZWEwMWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNzU3LDcgKzc1
Nyw2IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20vQXR0cmlidXRlLmNwcAogICAgIGRv
bS9CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5jcHAKICAgICBkb20vQmVmb3JlVW5sb2FkRXZlbnQu
Y3BwCi0gICAgZG9tL0NhbnZhc1N1cmZhY2UuY3BwCiAgICAgZG9tL0NEQVRBU2VjdGlvbi5jcHAK
ICAgICBkb20vQ2hhcmFjdGVyRGF0YS5jcHAKICAgICBkb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5j
cHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggNjkwODE2MWZiNjI1MGY3MDc4NzJlYmFmZjAxYTYxNjFjZTA5NGVhZS4uZmViMTU1YjFlNmQ1
MTllZGZhM2NkMThiNTMxZGNjODI0ZmM3NzRkYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAxMC0wNy0wOSAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZXMgQ2FudmFzU3VyZmFjZSBhbmQg
bW92ZXMgYWxsIG9mIGl0cyBmdW5jdGlvbmFsaXR5IHRvIEhUTUxDYW52YXNFbGVtZW50LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIwMDUKKworICAg
ICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC81NTIwMSBpbnRyb2R1Y2VkIGEg
bmV3IGJhc2UgY2xhc3MgZm9yIEhUTUxDYW52YXNFbGVtZW50IGNhbGxlZCBDYW52YXNTdXJmYWNl
LgorICAgICAgICBUaGUgaW50ZW50aW9uIHdhcyB0aGF0IHRoaXMgd291bGQgYWxsb3cgZm9yIGNv
ZGUgc2hhcmluZyB3aXRoIHRoZSB0aGVuLXByb3Bvc2VkIE9mZnNjcmVlbkNhbnZhcy4gIEhvd2V2
ZXIsCisgICAgICAgIHRoZXJlIGlzIG5vIE9mZnNjcmVlbkNhbnZhcyBhbmQgdGhlcmUncyB1bmxp
a2VseSB0byBiZSBvbmUgc29vbi4gIEFkZGl0aW9uYWxseSBDYW52YXNTdXJmYWNlIGJyZWFrcwor
ICAgICAgICBlbmNhcHN1bGF0aW9uIHByZXR0eSBiYWRseSBieSBkb2luZyAic3RhdGljX2Nhc3Q8
SFRNTENhbnZhc0VsZW1lbnQqIGNvbnN0Pih0aGlzKSIuICBVbnRpbCBhbiBhYnN0cmFjdGlvbiBp
cworICAgICAgICByZWFsbHkgbmVlZGVkIHdlIHNob3VsZCBqdXN0IHVzZSBIVE1MQ2FudmFzRWxl
bWVudCB3aGVuIHdlIHdhbnQgdG8gdGFsayBhYm91dCBhIGNhbnZhcy4KKworICAgICAgICBUaGlz
IHBhdGNoIG1vdmVzIGFsbCBvZiBDYW52YXNTdXJmYWNlJ3MgZnVuY3Rpb25hbGl0eSBiYWNrIHVw
IHRvIEhUTUxDYW52YXNFbGVtZW50IGFuZCByZW9yZGVycyB0aGUgaGVhZGVyCisgICAgICAgIHRv
IGJlIGEgYml0IG1vcmUgbG9naWNhbC4KKworICAgICAgICBSZWZhY3RvciB3aXRoIG5vIGJlaGF2
aW9yIGNoYW5nZSwgdGh1cyBubyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6Cisg
ICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGRvbS9DYW52YXNTdXJmYWNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vQ2Fu
dmFzU3VyZmFjZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OkhUTUxDYW52YXNFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50Ojp3aWxsRHJhdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6c2V0U3VyZmFjZVNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnRvRGF0YVVSTCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Y29udmVydExvZ2ljYWxUb0RldmljZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6c2VjdXJpdHlPcmlnaW4pOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnN0eWxlU2VsZWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpkcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6YnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxDYW52YXNFbGVtZW50OjpiYXNlVHJhbnNmb3JtKToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52
YXNFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6c2V0T2Jz
ZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OndpZHRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpoZWlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENh
bnZhc0VsZW1lbnQ6OnRvRGF0YVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxl
bWVudDo6c2V0T3JpZ2luVGFpbnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxl
bWVudDo6b3JpZ2luQ2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6
Omhhc0NyZWF0ZWRJbWFnZUJ1ZmZlcik6CisKIDIwMTAtMDctMDggIEphbWVzIFJvYmluc29uICA8
amFtZXNyQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KaW5kZXggN2ZhMzc1MjQ5Mjk4NTE2MGViM2E0ZjJiNTMxODZjZmVmYWJlYjRkMS4uMjhlODcy
YThiYjA3OTViMmQwMTE3YjFhMDgwNzhiNTI2NjVmYjNlZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC03NTUsOCArNzU1
LDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaCBc
CiAJV2ViQ29yZS9kb20vQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24uY3BwIFwKIAlXZWJD
b3JlL2RvbS9DU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbi5oIFwKLQlXZWJDb3JlL2RvbS9D
YW52YXNTdXJmYWNlLmNwcCBcCi0JV2ViQ29yZS9kb20vQ2FudmFzU3VyZmFjZS5oIFwKIAlXZWJD
b3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBcCiAJV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5o
IFwKIAlXZWJDb3JlL2RvbS9DaGVja2VkUmFkaW9CdXR0b25zLmNwcCBcCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGRjM2MxZmM5
MjdlMWExMDNmYmFiYmEyOGQ1YTcwMmNkMGMxYzZlZTEuLjIzMGE4Yzc1Yjk3NGJmMGYwMDlmMjA2
YjMwOTliYmIyZDNjMTM2M2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xMDc2LDggKzEwNzYsNiBAQAogICAgICAgICAgICAg
J2RvbS9DREFUQVNlY3Rpb24uaCcsCiAgICAgICAgICAgICAnZG9tL0NTU01hcHBlZEF0dHJpYnV0
ZURlY2xhcmF0aW9uLmNwcCcsCiAgICAgICAgICAgICAnZG9tL0NTU01hcHBlZEF0dHJpYnV0ZURl
Y2xhcmF0aW9uLmgnLAotICAgICAgICAgICAgJ2RvbS9DYW52YXNTdXJmYWNlLmNwcCcsCi0gICAg
ICAgICAgICAnZG9tL0NhbnZhc1N1cmZhY2UuaCcsCiAgICAgICAgICAgICAnZG9tL0NoYXJhY3Rl
ckRhdGEuY3BwJywKICAgICAgICAgICAgICdkb20vQ2hhcmFjdGVyRGF0YS5oJywKICAgICAgICAg
ICAgICdkb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggOGE4MzZmODhmZDRjZjQzZjZi
Y2I0ZjIzODk3Yjg0NDNlZWQxMzZlMS4uMzJlZmZjZTIxYzQ4NzAyY2RiN2UxZGE1YjU3MWFiOTU5
Mjc1NWQ0OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dl
YkNvcmUucHJvCkBAIC00NjAsNyArNDYwLDYgQEAgU09VUkNFUyArPSBcCiAgICAgZG9tL0JlZm9y
ZVRleHRJbnNlcnRlZEV2ZW50LmNwcCBcCiAgICAgZG9tL0JlZm9yZVVubG9hZEV2ZW50LmNwcCBc
CiAgICAgZG9tL0NEQVRBU2VjdGlvbi5jcHAgXAotICAgIGRvbS9DYW52YXNTdXJmYWNlLmNwcCBc
CiAgICAgZG9tL0NoYXJhY3RlckRhdGEuY3BwIFwKICAgICBkb20vQ2hlY2tlZFJhZGlvQnV0dG9u
cy5jcHAgXAogICAgIGRvbS9DaGlsZE5vZGVMaXN0LmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagppbmRleCAwZGE3NDUzZDNkNzk4MDQ0NmQzMDBlODQ2ZmRlODc1ZjNlNTEz
NzBjLi5hYTdjMWZlN2NmMWMwZDcxYjA3MzViM2Q5OTMwMzU5ODNhNDFmZDc0IDEwMDY0NAotLS0g
YS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTMyMjM3LDE0ICszMjIzNyw2IEBACiAJCQkJ
Pg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxDYW52
YXNTdXJmYWNlLmNwcCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGRvbVxDYW52YXNTdXJmYWNlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQot
CQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cQ0RBVEFTZWN0aW9uLmNwcCINCiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDk1YTY2NjAzYThkNjJhZjdlMjk3ZWE0Y2VmZTBlY2QzYzczNzQ2YmMuLjNhY2Q0
NmI4ZjI0MDlmOTk4OTliMWE3NTY0MTljMzhlNDRmYzg0YmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDQsOCArMjA0LDYgQEAKIAkJMEI5MDU2MUUw
RjI1N0U5MzAwOTVGRjZBIC8qIFRocmVhZGFibGVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEI5MDU2MUQwRjI1N0U5MzAwOTVGRjZBIC8q
IFRocmVhZGFibGVMb2FkZXIuY3BwICovOyB9OwogCQkwQjkwNTZGODBGMjY4NUYzMDA5NUZGNkEg
LyogV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwQjkwNTZGNjBGMjY4NUYzMDA5NUZGNkEgLyogV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5jcHAgKi87IH07CiAJCTBCOTA1NkY5MEYyNjg1RjMwMDk1RkY2QSAvKiBX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwQjkwNTZGNzBGMjY4NUYzMDA5NUZGNkEgLyogV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07Ci0JCTBCQzJD
Nzc3MTEzNEE4RkMwMDBCMkY2MSAvKiBDYW52YXNTdXJmYWNlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQzJDNzc1MTEzNEE4RkMwMDBCMkY2MSAv
KiBDYW52YXNTdXJmYWNlLmNwcCAqLzsgfTsKLQkJMEJDMkM3NzgxMTM0QThGQzAwMEIyRjYxIC8q
IENhbnZhc1N1cmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBCQzJDNzc2MTEzNEE4RkMwMDBCMkY2MSAvKiBDYW52YXNTdXJmYWNlLmggKi87IH07
CiAJCTBCRTAzMEEyMEYzMTEyRkIwMDNDMUE0NiAvKiBSZW5kZXJMaW5lQm94TGlzdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJFMDMwQTEwRjMxMTJG
QjAwM0MxQTQ2IC8qIFJlbmRlckxpbmVCb3hMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEMzRjFGNUExMEM4ODcxMjAwRDcyQ0UxIC8qIFdl
YkdMVW5pZm9ybUxvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBDM0YxRjU3MTBDODg3MTIwMEQ3MkNFMSAvKiBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbi5jcHAgKi87IH07CiAJCTBDM0YxRjVCMTBDODg3MTIwMEQ3MkNFMSAvKiBXZWJHTFVuaWZv
cm1Mb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEMzRjFGNTgxMEM4ODcxMjAwRDcyQ0UxIC8qIFdlYkdMVW5pZm9ybUxvY2F0aW9uLmggKi87
IH07CkBAIC01ODA4LDggKzU4MDYsNiBAQAogCQkwQjkwNTYxRDBGMjU3RTkzMDA5NUZGNkEgLyog
VGhyZWFkYWJsZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBUaHJlYWRhYmxlTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEI5
MDU2RjYwRjI2ODVGMzAwOTVGRjZBIC8qIFdvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCOTA1NkY3MEYyNjg1RjMwMDk1RkY2
QSAvKiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdvcmtlclRocmVhZGFibGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMEJDMkM3NzUxMTM0QThGQzAwMEIyRjYxIC8qIENhbnZhc1N1cmZhY2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FudmFzU3VyZmFjZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBCQzJDNzc2MTEzNEE4RkMwMDBCMkY2MSAvKiBDYW52
YXNTdXJmYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbnZhc1N1cmZh
Y2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJFMDMwQTEwRjMxMTJGQjAwM0Mx
QTQ2IC8qIFJlbmRlckxpbmVCb3hMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbmRlckxpbmVCb3hMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBD
M0YxRjU3MTBDODg3MTIwMEQ3MkNFMSAvKiBXZWJHTFVuaWZvcm1Mb2NhdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJHTFVuaWZvcm1Mb2NhdGlvbi5jcHA7
IHBhdGggPSBjYW52YXMvV2ViR0xVbmlmb3JtTG9jYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwQzNGMUY1ODEwQzg4NzEyMDBENzJDRTEgLyogV2ViR0xVbmlmb3JtTG9j
YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViR0xVbmlmb3JtTG9j
YXRpb24uaDsgcGF0aCA9IGNhbnZhcy9XZWJHTFVuaWZvcm1Mb2NhdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTY3OTEsOCArMTY3ODcsNiBAQAogCQkJCUFCMjNBMzI2MDlC
QkE3RDAwMDY3Q0M1MyAvKiBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5oICovLAogCQkJCTg1MDMx
QjI2MEE0NEVGQzcwMEY5OTJFMCAvKiBCZWZvcmVVbmxvYWRFdmVudC5jcHAgKi8sCiAJCQkJODUw
MzFCMjcwQTQ0RUZDNzAwRjk5MkUwIC8qIEJlZm9yZVVubG9hZEV2ZW50LmggKi8sCi0JCQkJMEJD
MkM3NzUxMTM0QThGQzAwMEIyRjYxIC8qIENhbnZhc1N1cmZhY2UuY3BwICovLAotCQkJCTBCQzJD
Nzc2MTEzNEE4RkMwMDBCMkY2MSAvKiBDYW52YXNTdXJmYWNlLmggKi8sCiAJCQkJNjU1MEI2OTMw
OTlERjAyNzAwOTBENzgxIC8qIENEQVRBU2VjdGlvbi5jcHAgKi8sCiAJCQkJNjU1MEI2OTQwOTlE
RjAyNzAwOTBENzgxIC8qIENEQVRBU2VjdGlvbi5oICovLAogCQkJCTg1MDg5Q0M5MEE5OEMyQUIw
MEEyNzVBQSAvKiBDREFUQVNlY3Rpb24uaWRsICovLApAQCAtMTcyMDAsNyArMTcxOTQsNiBAQAog
CQkJCTQ5QzdCOUREMTA0MkQzMkYwMDA5RDQ0NyAvKiBDYW52YXNSZW5kZXJpbmdDb250ZXh0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0OTQ4NEZDQjEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTQ4NEZDRTEwMkNGMjNDMDAx
ODdERDMgLyogQ2FudmFzU3R5bGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTBCQzJDNzc4MTEzNEE4
RkMwMDBCMkY2MSAvKiBDYW52YXNTdXJmYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTUwQjY5
RTA5OURGMDI3MDA5MEQ3ODEgLyogQ0RBVEFTZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MTQxODVFRTBDRDY1RjA0MDA3NjNDOTkgLyogQ2hhbmdlVmVyc2lvbldyYXBwZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTY1NTBCNkEwMDk5REYwMjcwMDkwRDc4MSAvKiBDaGFyYWN0ZXJEYXRhLmgg
aW4gSGVhZGVycyAqLywKQEAgLTIwMTE4LDcgKzIwMTExLDYgQEAKIAkJCQk0OUM3QjlEQzEwNDJE
MzJGMDAwOUQ0NDcgLyogQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0OTQ4NEZDQTEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5NDg0RkNEMTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52
YXNTdHlsZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwQkMyQzc3NzExMzRBOEZDMDAwQjJGNjEg
LyogQ2FudmFzU3VyZmFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTUwQjY5RDA5OURGMDI3
MDA5MEQ3ODEgLyogQ0RBVEFTZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNDE4NUVG
MENENjVGMDQwMDc2M0M5OSAvKiBDaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk2NTUwQjY5RjA5OURGMDI3MDA5MEQ3ODEgLyogQ2hhcmFjdGVyRGF0YS5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0NhbnZhc1N1cmZhY2UuY3BwIGIv
V2ViQ29yZS9kb20vQ2FudmFzU3VyZmFjZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDA3NmVmOTRhZDIzOTc3MjQyY2Q3ZGRmZTIzMWIzMzA4ZGUwNmEzZTguLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViQ29yZS9kb20vQ2FudmFzU3Vy
ZmFjZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDEwIFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ2FudmFzU3VyZmFj
ZS5oIgotCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgotI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgotI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZm
ZXIuaCIKLSNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotLy8gVGhlc2UgdmFsdWVzIGNvbWUgZnJvbSB0aGUgV2hhdFdHIHNwZWMuCi1jb25zdCBp
bnQgQ2FudmFzU3VyZmFjZTo6RGVmYXVsdFdpZHRoID0gMzAwOwotY29uc3QgaW50IENhbnZhc1N1
cmZhY2U6OkRlZmF1bHRIZWlnaHQgPSAxNTA7Ci0KLS8vIEZpcmVmb3ggbGltaXRzIHdpZHRoL2hl
aWdodCB0byAzMjc2NyBwaXhlbHMsIGJ1dCBzbG93cyBkb3duIGRyYW1hdGljYWxseSBiZWZvcmUg
aXQKLS8vIHJlYWNoZXMgdGhhdCBsaW1pdC4gV2UgbGltaXQgYnkgYXJlYSBpbnN0ZWFkLCBnaXZp
bmcgdXMgbGFyZ2VyIG1heGltdW0gZGltZW5zaW9ucywKLS8vIGluIGV4Y2hhbmdlIGZvciBhIHNt
YWxsZXIgbWF4aW11bSBjYW52YXMgc2l6ZS4KLWNvbnN0IGZsb2F0IENhbnZhc1N1cmZhY2U6Ok1h
eENhbnZhc0FyZWEgPSAzMjc2OCAqIDgxOTI7IC8vIE1heGltdW0gY2FudmFzIGFyZWEgaW4gQ1NT
IHBpeGVscwotCi1DYW52YXNTdXJmYWNlOjpDYW52YXNTdXJmYWNlKGZsb2F0IHBhZ2VTY2FsZUZh
Y3RvcikKLSAgICA6IG1fc2l6ZShEZWZhdWx0V2lkdGgsIERlZmF1bHRIZWlnaHQpCi0gICAgLCBt
X3BhZ2VTY2FsZUZhY3RvcihwYWdlU2NhbGVGYWN0b3IpCi0gICAgLCBtX29yaWdpbkNsZWFuKHRy
dWUpCi0gICAgLCBtX2hhc0NyZWF0ZWRJbWFnZUJ1ZmZlcihmYWxzZSkKLXsKLX0KLQotQ2FudmFz
U3VyZmFjZTo6fkNhbnZhc1N1cmZhY2UoKQotewotfQotCi12b2lkIENhbnZhc1N1cmZhY2U6OnNl
dFN1cmZhY2VTaXplKGNvbnN0IEludFNpemUmIHNpemUpCi17Ci0gICAgbV9zaXplID0gc2l6ZTsK
LSAgICBtX2hhc0NyZWF0ZWRJbWFnZUJ1ZmZlciA9IGZhbHNlOwotICAgIG1faW1hZ2VCdWZmZXIu
Y2xlYXIoKTsKLX0KLQotU3RyaW5nIENhbnZhc1N1cmZhY2U6OnRvRGF0YVVSTChjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBkb3VibGUqIHF1YWxpdHksIEV4Y2VwdGlvbkNvZGUmIGVjKQot
ewotICAgIGlmICghbV9vcmlnaW5DbGVhbikgewotICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsK
LSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIH0KLQotICAgIGlmIChtX3NpemUuaXNFbXB0
eSgpIHx8ICFidWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygiZGF0YTosIik7Ci0KLSAg
ICBTdHJpbmcgbG93ZXJjYXNlTWltZVR5cGUgPSBtaW1lVHlwZS5sb3dlcigpOwotCi0gICAgLy8g
RklYTUU6IE1ha2UgaXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcgdGhyZWFkc2Fm
ZSAodG8gYWxsb3cgdGhpcyBtZXRob2QgdG8gYmUgdXNlZCBvbiBhIHdvcmtlciB0aHJlYWQpLgot
ICAgIGlmIChtaW1lVHlwZS5pc051bGwoKSB8fCAhTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0
ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobG93ZXJjYXNlTWltZVR5cGUpKQotICAgICAgICBy
ZXR1cm4gYnVmZmVyKCktPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7Ci0KLSAgICByZXR1cm4gYnVm
ZmVyKCktPnRvRGF0YVVSTChsb3dlcmNhc2VNaW1lVHlwZSwgcXVhbGl0eSk7Ci19Ci0KLXZvaWQg
Q2FudmFzU3VyZmFjZTo6d2lsbERyYXcoY29uc3QgRmxvYXRSZWN0JikKLXsKLSAgICBpZiAobV9p
bWFnZUJ1ZmZlcikKLSAgICAgICAgbV9pbWFnZUJ1ZmZlci0+Y2xlYXJJbWFnZSgpOwotfQotCi1J
bnRSZWN0IENhbnZhc1N1cmZhY2U6OmNvbnZlcnRMb2dpY2FsVG9EZXZpY2UoY29uc3QgRmxvYXRS
ZWN0JiBsb2dpY2FsUmVjdCkgY29uc3QKLXsKLSAgICByZXR1cm4gSW50UmVjdChjb252ZXJ0TG9n
aWNhbFRvRGV2aWNlKGxvZ2ljYWxSZWN0LmxvY2F0aW9uKCkpLCBjb252ZXJ0TG9naWNhbFRvRGV2
aWNlKGxvZ2ljYWxSZWN0LnNpemUoKSkpOwotfQotCi1JbnRTaXplIENhbnZhc1N1cmZhY2U6OmNv
bnZlcnRMb2dpY2FsVG9EZXZpY2UoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSkgY29uc3QK
LXsKLSAgICBmbG9hdCB3ZiA9IGNlaWxmKGxvZ2ljYWxTaXplLndpZHRoKCkgKiBtX3BhZ2VTY2Fs
ZUZhY3Rvcik7Ci0gICAgZmxvYXQgaGYgPSBjZWlsZihsb2dpY2FsU2l6ZS5oZWlnaHQoKSAqIG1f
cGFnZVNjYWxlRmFjdG9yKTsKLQotICAgIGlmICghKHdmID49IDEgJiYgaGYgPj0gMSAmJiB3ZiAq
IGhmIDw9IE1heENhbnZhc0FyZWEpKQotICAgICAgICByZXR1cm4gSW50U2l6ZSgpOwotCi0gICAg
cmV0dXJuIEludFNpemUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHdmKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGhmKSk7Ci19Ci0KLUludFBvaW50IENhbnZhc1N1cmZhY2U6OmNvbnZlcnRMb2dpY2Fs
VG9EZXZpY2UoY29uc3QgRmxvYXRQb2ludCYgbG9naWNhbFBvcykgY29uc3QKLXsKLSAgICBmbG9h
dCB4ZiA9IGxvZ2ljYWxQb3MueCgpICogbV9wYWdlU2NhbGVGYWN0b3I7Ci0gICAgZmxvYXQgeWYg
PSBsb2dpY2FsUG9zLnkoKSAqIG1fcGFnZVNjYWxlRmFjdG9yOwotCi0gICAgcmV0dXJuIEludFBv
aW50KHN0YXRpY19jYXN0PHVuc2lnbmVkPih4ZiksIHN0YXRpY19jYXN0PHVuc2lnbmVkPih5Zikp
OwotfQotCi12b2lkIENhbnZhc1N1cmZhY2U6OmNyZWF0ZUltYWdlQnVmZmVyKCkgY29uc3QKLXsK
LSAgICBBU1NFUlQoIW1faW1hZ2VCdWZmZXIpOwotCi0gICAgbV9oYXNDcmVhdGVkSW1hZ2VCdWZm
ZXIgPSB0cnVlOwotCi0gICAgRmxvYXRTaXplIHVuc2NhbGVkU2l6ZSh3aWR0aCgpLCBoZWlnaHQo
KSk7Ci0gICAgSW50U2l6ZSBzaXplID0gY29udmVydExvZ2ljYWxUb0RldmljZSh1bnNjYWxlZFNp
emUpOwotICAgIGlmICghc2l6ZS53aWR0aCgpIHx8ICFzaXplLmhlaWdodCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBtX2ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKTsK
LSAgICAvLyBUaGUgY29udmVydExvZ2ljYWxUb0RldmljZSBNYXhDYW52YXNBcmVhIGNoZWNrIHNo
b3VsZCBwcmV2ZW50IGNvbW1vbiBjYXNlcwotICAgIC8vIHdoZXJlIEltYWdlQnVmZmVyOjpjcmVh
dGUoKSByZXR1cm5zIDAsIGhvd2V2ZXIgd2UgY291bGQgc3RpbGwgYmUgbG93IG9uIG1lbW9yeS4K
LSAgICBpZiAoIW1faW1hZ2VCdWZmZXIpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2ltYWdlQnVm
ZmVyLT5jb250ZXh0KCktPnNjYWxlKEZsb2F0U2l6ZShzaXplLndpZHRoKCkgLyB1bnNjYWxlZFNp
emUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSAvIHVuc2NhbGVkU2l6ZS5oZWlnaHQoKSkpOwotICAg
IG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS0+c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXModHJ1
ZSk7Ci19Ci0KLUdyYXBoaWNzQ29udGV4dCogQ2FudmFzU3VyZmFjZTo6ZHJhd2luZ0NvbnRleHQo
KSBjb25zdAotewotICAgIHJldHVybiBidWZmZXIoKSA/IG1faW1hZ2VCdWZmZXItPmNvbnRleHQo
KSA6IDA7Ci19Ci0KLUltYWdlQnVmZmVyKiBDYW52YXNTdXJmYWNlOjpidWZmZXIoKSBjb25zdAot
ewotICAgIGlmICghbV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXIpCi0gICAgICAgIGNyZWF0ZUltYWdl
QnVmZmVyKCk7Ci0gICAgcmV0dXJuIG1faW1hZ2VCdWZmZXIuZ2V0KCk7Ci19Ci0KLUFmZmluZVRy
YW5zZm9ybSBDYW52YXNTdXJmYWNlOjpiYXNlVHJhbnNmb3JtKCkgY29uc3QKLXsKLSAgICBBU1NF
UlQobV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXIpOwotICAgIEZsb2F0U2l6ZSB1bnNjYWxlZFNpemUo
d2lkdGgoKSwgaGVpZ2h0KCkpOwotICAgIEludFNpemUgc2l6ZSA9IGNvbnZlcnRMb2dpY2FsVG9E
ZXZpY2UodW5zY2FsZWRTaXplKTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwotICAg
IGlmIChzaXplLndpZHRoKCkgJiYgc2l6ZS5oZWlnaHQoKSkKLSAgICAgICAgdHJhbnNmb3JtLnNj
YWxlTm9uVW5pZm9ybShzaXplLndpZHRoKCkgLyB1bnNjYWxlZFNpemUud2lkdGgoKSwgc2l6ZS5o
ZWlnaHQoKSAvIHVuc2NhbGVkU2l6ZS5oZWlnaHQoKSk7Ci0gICAgdHJhbnNmb3JtLm11bHRpcGx5
KG1faW1hZ2VCdWZmZXItPmJhc2VUcmFuc2Zvcm0oKSk7Ci0gICAgcmV0dXJuIHRyYW5zZm9ybTsK
LX0KLQotLy8gRklYTUU6IEV2ZXJ5dGhpbmcgYmVsb3cgaGVyZSByZWxpZXMgb24gQ2FudmFzU3Vy
ZmFjZSByZWFsbHkgYmVpbmcKLS8vIGEgSFRNTENhbnZhc0VsZW1lbnQuCi1jb25zdCBTZWN1cml0
eU9yaWdpbiYgQ2FudmFzU3VyZmFjZTo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAotewotICAgIHJl
dHVybiAqKHN0YXRpY19jYXN0PGNvbnN0IEhUTUxDYW52YXNFbGVtZW50Kj4odGhpcyktPmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpOwotfQotCi1SZW5kZXJCb3gqIENhbnZhc1N1cmZhY2U6
OnJlbmRlckJveCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEhUTUxD
YW52YXNFbGVtZW50Kj4odGhpcyktPnJlbmRlckJveCgpOwotfQotCi1SZW5kZXJTdHlsZSogQ2Fu
dmFzU3VyZmFjZTo6Y29tcHV0ZWRTdHlsZSgpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhU
TUxDYW52YXNFbGVtZW50Kj4odGhpcyktPmNvbXB1dGVkU3R5bGUoKTsKLX0KLQotQ1NTU3R5bGVT
ZWxlY3RvciogQ2FudmFzU3VyZmFjZTo6c3R5bGVTZWxlY3RvcigpCi17Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PEhUTUxDYW52YXNFbGVtZW50Kj4odGhpcyktPmRvY3VtZW50KCktPnN0eWxlU2Vs
ZWN0b3IoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9kb20vQ2FudmFzU3VyZmFjZS5oIGIvV2ViQ29yZS9kb20vQ2FudmFzU3VyZmFjZS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjAxMzgxZjA3ZGFjNzlmMGExNWU5NjZjMzA2ZTZl
M2E2MThmNzk2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1dlYkNvcmUvZG9tL0NhbnZhc1N1cmZhY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDExMSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4g
THRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQ2FudmFzU3VyZmFjZV9o
Ci0jZGVmaW5lIENhbnZhc1N1cmZhY2VfaAotCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgi
Ci0jaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0KLSNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwotY2xhc3MgRmxvYXRQ
b2ludDsKLWNsYXNzIEZsb2F0UmVjdDsKLWNsYXNzIEZsb2F0U2l6ZTsKLWNsYXNzIEdyYXBoaWNz
Q29udGV4dDsKLWNsYXNzIEltYWdlQnVmZmVyOwotY2xhc3MgSW50UG9pbnQ7Ci0KLWNsYXNzIENT
U1N0eWxlU2VsZWN0b3I7Ci1jbGFzcyBSZW5kZXJCb3g7Ci1jbGFzcyBSZW5kZXJTdHlsZTsKLWNs
YXNzIFNlY3VyaXR5T3JpZ2luOwotCi10eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwotCi1jbGFz
cyBDYW52YXNTdXJmYWNlIDogcHVibGljIE5vbmNvcHlhYmxlIHsKLXB1YmxpYzoKLSAgICBDYW52
YXNTdXJmYWNlKGZsb2F0IHBhZ2VTY2FsZUZhY3Rvcik7Ci0gICAgdmlydHVhbCB+Q2FudmFzU3Vy
ZmFjZSgpOwotCi0gICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zaXplLndpZHRoKCk7
IH0KLSAgICBpbnQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9zaXplLmhlaWdodCgpOyB9Ci0K
LSAgICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IGRvdWJs
ZSogcXVhbGl0eSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFN0cmluZyB0b0RhdGFVUkwoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIHRvRGF0YVVSTCht
aW1lVHlwZSwgMCwgZWMpOyB9Ci0KLSAgICBjb25zdCBJbnRTaXplJiBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaXplOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoY29uc3QgRmxvYXRS
ZWN0Jik7Ci0KLSAgICBHcmFwaGljc0NvbnRleHQqIGRyYXdpbmdDb250ZXh0KCkgY29uc3Q7Ci0K
LSAgICBJbWFnZUJ1ZmZlciogYnVmZmVyKCkgY29uc3Q7Ci0KLSAgICBJbnRSZWN0IGNvbnZlcnRM
b2dpY2FsVG9EZXZpY2UoY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7Ci0gICAgSW50U2l6ZSBjb252
ZXJ0TG9naWNhbFRvRGV2aWNlKGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0OwotICAgIEludFBvaW50
IGNvbnZlcnRMb2dpY2FsVG9EZXZpY2UoY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OwotCi0gICAg
dm9pZCBzZXRPcmlnaW5UYWludGVkKCkgeyBtX29yaWdpbkNsZWFuID0gZmFsc2U7IH0KLSAgICBi
b29sIG9yaWdpbkNsZWFuKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5DbGVhbjsgfQotCi0gICAg
QWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdDsKLQotICAgIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OwotICAgIFJlbmRlckJveCogcmVuZGVy
Qm94KCkgY29uc3Q7Ci0gICAgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoKTsKLSAgICBDU1NT
dHlsZVNlbGVjdG9yKiBzdHlsZVNlbGVjdG9yKCk7Ci0KLXByb3RlY3RlZDoKLSAgICB2b2lkIHNl
dFN1cmZhY2VTaXplKGNvbnN0IEludFNpemUmKTsKLSAgICBib29sIGhhc0NyZWF0ZWRJbWFnZUJ1
ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ3JlYXRlZEltYWdlQnVmZmVyOyB9Ci0KLSAgICBz
dGF0aWMgY29uc3QgaW50IERlZmF1bHRXaWR0aDsKLSAgICBzdGF0aWMgY29uc3QgaW50IERlZmF1
bHRIZWlnaHQ7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcigpIGNvbnN0
OwotCi0gICAgc3RhdGljIGNvbnN0IGZsb2F0IE1heENhbnZhc0FyZWE7Ci0KLSAgICBJbnRTaXpl
IG1fc2l6ZTsKLQotICAgIGZsb2F0IG1fcGFnZVNjYWxlRmFjdG9yOwotICAgIGJvb2wgbV9vcmln
aW5DbGVhbjsKLQotICAgIC8vIG1fY3JlYXRlZEltYWdlQnVmZmVyIG1lYW5zIHdlIHRyaWVkIHRv
IG1hbGxvYyB0aGUgYnVmZmVyLiAgV2UgZGlkbid0IG5lY2Vzc2FyaWx5IGdldCBpdC4KLSAgICBt
dXRhYmxlIGJvb2wgbV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXI7Ci0gICAgbXV0YWJsZSBPd25QdHI8
SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNw
cCBiL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggZjhiYWYyMGM0OWE5
ODk4N2U0YjcwZDA1YzNjNjhlYTBhZGQwMzU2Zi4uZjYwOGViYWVhMDM5MTVjN2IyMWU5N2Q2MWUx
NmRmYzU1ZmE0OTg0OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC00MCw2ICs0
MCw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckhUTUxDYW52YXMuaCIKICNp
bmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtNTUsMTEgKzU2LDIzIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAorLy8gVGhlc2UgdmFsdWVzIGNvbWUg
ZnJvbSB0aGUgV2hhdFdHIHNwZWMuCitzdGF0aWMgY29uc3QgaW50IERlZmF1bHRXaWR0aCA9IDMw
MDsKK3N0YXRpYyBjb25zdCBpbnQgRGVmYXVsdEhlaWdodCA9IDE1MDsKKworLy8gRmlyZWZveCBs
aW1pdHMgd2lkdGgvaGVpZ2h0IHRvIDMyNzY3IHBpeGVscywgYnV0IHNsb3dzIGRvd24gZHJhbWF0
aWNhbGx5IGJlZm9yZSBpdAorLy8gcmVhY2hlcyB0aGF0IGxpbWl0LiBXZSBsaW1pdCBieSBhcmVh
IGluc3RlYWQsIGdpdmluZyB1cyBsYXJnZXIgbWF4aW11bSBkaW1lbnNpb25zLAorLy8gaW4gZXhj
aGFuZ2UgZm9yIGEgc21hbGxlciBtYXhpbXVtIGNhbnZhcyBzaXplLgorc3RhdGljIGNvbnN0IGZs
b2F0IE1heENhbnZhc0FyZWEgPSAzMjc2OCAqIDgxOTI7IC8vIE1heGltdW0gY2FudmFzIGFyZWEg
aW4gQ1NTIHBpeGVscworCiBIVE1MQ2FudmFzRWxlbWVudDo6SFRNTENhbnZhc0VsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRN
TEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCi0gICAgLCBDYW52YXNTdXJmYWNlKGRvY3VtZW50
LT5mcmFtZSgpID8gZG9jdW1lbnQtPmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCktPnNjYWxlRmFj
dG9yKCkgOiAxKQogICAgICwgbV9vYnNlcnZlcigwKQorICAgICwgbV9zaXplKERlZmF1bHRXaWR0
aCwgRGVmYXVsdEhlaWdodCkKICAgICAsIG1faWdub3JlUmVzZXQoZmFsc2UpCisgICAgLCBtX3Bh
Z2VTY2FsZUZhY3Rvcihkb2N1bWVudC0+ZnJhbWUoKSA/IGRvY3VtZW50LT5mcmFtZSgpLT5wYWdl
KCktPmNocm9tZSgpLT5zY2FsZUZhY3RvcigpIDogMSkKKyAgICAsIG1fb3JpZ2luQ2xlYW4odHJ1
ZSkKKyAgICAsIG1faGFzQ3JlYXRlZEltYWdlQnVmZmVyKGZhbHNlKQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKGNhbnZhc1RhZykpOwogfQpAQCAtMTg2LDcgKzE5OSw4IEBAIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQqIEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KGNvbnN0IFN0cmluZyYg
dHlwZSwgQ2FudmFzCiAKIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OndpbGxEcmF3KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKIHsKLSAgICBDYW52YXNTdXJmYWNlOjp3aWxsRHJhdyhyZWN0KTsKKyAg
ICBpZiAobV9pbWFnZUJ1ZmZlcikKKyAgICAgICAgbV9pbWFnZUJ1ZmZlci0+Y2xlYXJJbWFnZSgp
OwogCiAgICAgaWYgKFJlbmRlckJveCogcm8gPSByZW5kZXJCb3goKSkgewogICAgICAgICBGbG9h
dFJlY3QgZGVzdFJlY3QgPSByby0+Y29udGVudEJveFJlY3QoKTsKQEAgLTI5MCw0ICszMDQsMTA4
IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5n
ZSkKICAgICB9CiB9CiAKK3ZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnNldFN1cmZhY2VTaXplKGNv
bnN0IEludFNpemUmIHNpemUpCit7CisgICAgbV9zaXplID0gc2l6ZTsKKyAgICBtX2hhc0NyZWF0
ZWRJbWFnZUJ1ZmZlciA9IGZhbHNlOworICAgIG1faW1hZ2VCdWZmZXIuY2xlYXIoKTsKK30KKwor
U3RyaW5nIEhUTUxDYW52YXNFbGVtZW50Ojp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgZG91YmxlKiBxdWFsaXR5LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAo
IW1fb3JpZ2luQ2xlYW4pIHsKKyAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CisgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKKyAgICB9CisKKyAgICBpZiAobV9zaXplLmlzRW1wdHkoKSB8fCAhYnVm
ZmVyKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoImRhdGE6LCIpOworCisgICAgU3RyaW5nIGxv
d2VyY2FzZU1pbWVUeXBlID0gbWltZVR5cGUubG93ZXIoKTsKKworICAgIC8vIEZJWE1FOiBNYWtl
IGlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nIHRocmVhZHNhZmUgKHRvIGFsbG93
IHRoaXMgbWV0aG9kIHRvIGJlIHVzZWQgb24gYSB3b3JrZXIgdGhyZWFkKS4KKyAgICBpZiAobWlt
ZVR5cGUuaXNOdWxsKCkgfHwgIU1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1F
VHlwZUZvckVuY29kaW5nKGxvd2VyY2FzZU1pbWVUeXBlKSkKKyAgICAgICAgcmV0dXJuIGJ1ZmZl
cigpLT50b0RhdGFVUkwoImltYWdlL3BuZyIpOworCisgICAgcmV0dXJuIGJ1ZmZlcigpLT50b0Rh
dGFVUkwobG93ZXJjYXNlTWltZVR5cGUsIHF1YWxpdHkpOworfQorCitJbnRSZWN0IEhUTUxDYW52
YXNFbGVtZW50Ojpjb252ZXJ0TG9naWNhbFRvRGV2aWNlKGNvbnN0IEZsb2F0UmVjdCYgbG9naWNh
bFJlY3QpIGNvbnN0Cit7CisgICAgcmV0dXJuIEludFJlY3QoY29udmVydExvZ2ljYWxUb0Rldmlj
ZShsb2dpY2FsUmVjdC5sb2NhdGlvbigpKSwgY29udmVydExvZ2ljYWxUb0RldmljZShsb2dpY2Fs
UmVjdC5zaXplKCkpKTsKK30KKworSW50U2l6ZSBIVE1MQ2FudmFzRWxlbWVudDo6Y29udmVydExv
Z2ljYWxUb0RldmljZShjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplKSBjb25zdAoreworICAg
IGZsb2F0IHdmID0gY2VpbGYobG9naWNhbFNpemUud2lkdGgoKSAqIG1fcGFnZVNjYWxlRmFjdG9y
KTsKKyAgICBmbG9hdCBoZiA9IGNlaWxmKGxvZ2ljYWxTaXplLmhlaWdodCgpICogbV9wYWdlU2Nh
bGVGYWN0b3IpOworCisgICAgaWYgKCEod2YgPj0gMSAmJiBoZiA+PSAxICYmIHdmICogaGYgPD0g
TWF4Q2FudmFzQXJlYSkpCisgICAgICAgIHJldHVybiBJbnRTaXplKCk7CisKKyAgICByZXR1cm4g
SW50U2l6ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4od2YpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
aGYpKTsKK30KKworSW50UG9pbnQgSFRNTENhbnZhc0VsZW1lbnQ6OmNvbnZlcnRMb2dpY2FsVG9E
ZXZpY2UoY29uc3QgRmxvYXRQb2ludCYgbG9naWNhbFBvcykgY29uc3QKK3sKKyAgICBmbG9hdCB4
ZiA9IGxvZ2ljYWxQb3MueCgpICogbV9wYWdlU2NhbGVGYWN0b3I7CisgICAgZmxvYXQgeWYgPSBs
b2dpY2FsUG9zLnkoKSAqIG1fcGFnZVNjYWxlRmFjdG9yOworCisgICAgcmV0dXJuIEludFBvaW50
KHN0YXRpY19jYXN0PHVuc2lnbmVkPih4ZiksIHN0YXRpY19jYXN0PHVuc2lnbmVkPih5ZikpOwor
fQorCitjb25zdCBTZWN1cml0eU9yaWdpbiYgSFRNTENhbnZhc0VsZW1lbnQ6OnNlY3VyaXR5T3Jp
Z2luKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7
Cit9CisKK0NTU1N0eWxlU2VsZWN0b3IqIEhUTUxDYW52YXNFbGVtZW50OjpzdHlsZVNlbGVjdG9y
KCkKK3sKKyAgICByZXR1cm4gZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpOworfQorCit2b2lk
IEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcigpIGNvbnN0Cit7CisgICAgQVNT
RVJUKCFtX2ltYWdlQnVmZmVyKTsKKworICAgIG1faGFzQ3JlYXRlZEltYWdlQnVmZmVyID0gdHJ1
ZTsKKworICAgIEZsb2F0U2l6ZSB1bnNjYWxlZFNpemUod2lkdGgoKSwgaGVpZ2h0KCkpOworICAg
IEludFNpemUgc2l6ZSA9IGNvbnZlcnRMb2dpY2FsVG9EZXZpY2UodW5zY2FsZWRTaXplKTsKKyAg
ICBpZiAoIXNpemUud2lkdGgoKSB8fCAhc2l6ZS5oZWlnaHQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9pbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSk7CisgICAgLy8g
VGhlIGNvbnZlcnRMb2dpY2FsVG9EZXZpY2UgTWF4Q2FudmFzQXJlYSBjaGVjayBzaG91bGQgcHJl
dmVudCBjb21tb24gY2FzZXMKKyAgICAvLyB3aGVyZSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKCkgcmV0
dXJucyAwLCBob3dldmVyIHdlIGNvdWxkIHN0aWxsIGJlIGxvdyBvbiBtZW1vcnkuCisgICAgaWYg
KCFtX2ltYWdlQnVmZmVyKQorICAgICAgICByZXR1cm47CisgICAgbV9pbWFnZUJ1ZmZlci0+Y29u
dGV4dCgpLT5zY2FsZShGbG9hdFNpemUoc2l6ZS53aWR0aCgpIC8gdW5zY2FsZWRTaXplLndpZHRo
KCksIHNpemUuaGVpZ2h0KCkgLyB1bnNjYWxlZFNpemUuaGVpZ2h0KCkpKTsKKyAgICBtX2ltYWdl
QnVmZmVyLT5jb250ZXh0KCktPnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKHRydWUpOworfQor
CitHcmFwaGljc0NvbnRleHQqIEhUTUxDYW52YXNFbGVtZW50OjpkcmF3aW5nQ29udGV4dCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGJ1ZmZlcigpID8gbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpIDog
MDsKK30KKworSW1hZ2VCdWZmZXIqIEhUTUxDYW52YXNFbGVtZW50OjpidWZmZXIoKSBjb25zdAor
eworICAgIGlmICghbV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXIpCisgICAgICAgIGNyZWF0ZUltYWdl
QnVmZmVyKCk7CisgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXIuZ2V0KCk7Cit9CisKK0FmZmluZVRy
YW5zZm9ybSBIVE1MQ2FudmFzRWxlbWVudDo6YmFzZVRyYW5zZm9ybSgpIGNvbnN0Cit7CisgICAg
QVNTRVJUKG1faGFzQ3JlYXRlZEltYWdlQnVmZmVyKTsKKyAgICBGbG9hdFNpemUgdW5zY2FsZWRT
aXplKHdpZHRoKCksIGhlaWdodCgpKTsKKyAgICBJbnRTaXplIHNpemUgPSBjb252ZXJ0TG9naWNh
bFRvRGV2aWNlKHVuc2NhbGVkU2l6ZSk7CisgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsK
KyAgICBpZiAoc2l6ZS53aWR0aCgpICYmIHNpemUuaGVpZ2h0KCkpCisgICAgICAgIHRyYW5zZm9y
bS5zY2FsZU5vblVuaWZvcm0oc2l6ZS53aWR0aCgpIC8gdW5zY2FsZWRTaXplLndpZHRoKCksIHNp
emUuaGVpZ2h0KCkgLyB1bnNjYWxlZFNpemUuaGVpZ2h0KCkpOworICAgIHRyYW5zZm9ybS5tdWx0
aXBseShtX2ltYWdlQnVmZmVyLT5iYXNlVHJhbnNmb3JtKCkpOworICAgIHJldHVybiB0cmFuc2Zv
cm07Cit9CisKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5o
IGIvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKaW5kZXggYWVmNjkxMDc1ODVhZTU5
MzE3Njg3YjZiNDA4ZGM3OTNhYmIxMWUwMy4uMDViYzI1NjEwODgxYWZjZTY4MDczNjQ0NTkwNWM4
N2MwNGVlNTYwNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgK
KysrIGIvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKQEAgLTI4LDcgKzI4LDYgQEAK
ICNpZm5kZWYgSFRNTENhbnZhc0VsZW1lbnRfaAogI2RlZmluZSBIVE1MQ2FudmFzRWxlbWVudF9o
CiAKLSNpbmNsdWRlICJDYW52YXNTdXJmYWNlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAj
aW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCkBAIC00Myw2ICs0
Miw3IEBAIGNsYXNzIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzOwogY2xhc3MgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEhUTUxDYW52YXNFbGVt
ZW50OworY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBJbnRTaXplOwogCiBjbGFzcyBDYW52YXNP
YnNlcnZlciB7CkBAIC01NCwxNyArNTQsMjMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBj
YW52YXNEZXN0cm95ZWQoSFRNTENhbnZhc0VsZW1lbnQqKSA9IDA7CiB9OwogCi1jbGFzcyBIVE1M
Q2FudmFzRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVibGljIENhbnZhc1N1cmZhY2Ug
eworY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxDYW52YXNFbGVtZW50PiBjcmVhdGUoRG9jdW1l
bnQqKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgIHZpcnR1YWwgfkhUTUxDYW52YXNF
bGVtZW50KCk7CiAKKyAgICB2b2lkIHNldE9ic2VydmVyKENhbnZhc09ic2VydmVyKiBvYnNlcnZl
cikgeyBtX29ic2VydmVyID0gb2JzZXJ2ZXI7IH0KKworICAgIC8vIEF0dHJpYnV0ZXMgYW5kIGZ1
bmN0aW9ucyBleHBvc2VkIHRvIHNjcmlwdAorICAgIGludCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJu
IHNpemUoKS53aWR0aCgpOyB9CisgICAgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIHNpemUo
KS5oZWlnaHQoKTsgfQorCisgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2l6ZTsgfQorCiAgICAgdm9pZCBzZXRXaWR0aChpbnQpOwogICAgIHZvaWQgc2V0SGVpZ2h0
KGludCk7CiAKLSAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBnZXRDb250ZXh0KGNvbnN0IFN0
cmluZyYsIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzKiBhdHRyaWJ1dGVzID0gMCk7Ci0KICAgICB2
b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKICAgICB7IAogICAgICAgICBpZiAo
bmV3U2l6ZSA9PSBzaXplKCkpCkBAIC03NiwxNiArODIsMzMgQEAgcHVibGljOgogICAgICAgICBy
ZXNldCgpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhjb25zdCBGbG9hdFJl
Y3QmKTsKKyAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBnZXRDb250ZXh0KGNvbnN0IFN0cmlu
ZyYsIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzKiBhdHRyaWJ1dGVzID0gMCk7CisKKyAgICBTdHJp
bmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IGRvdWJsZSogcXVhbGl0
eSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFN0cmluZyB0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIHRvRGF0YVVSTChtaW1lVHlwZSwg
MCwgZWMpOyB9CisKKyAgICAvLyBVc2VkIGZvciByZW5kZXJpbmcKKyAgICB2b2lkIHdpbGxEcmF3
KGNvbnN0IEZsb2F0UmVjdCYpOwogCiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBJbnRSZWN0Jik7CiAKLSAgICB2b2lkIHNldE9ic2VydmVyKENhbnZhc09ic2VydmVyKiBv
YnNlcnZlcikgeyBtX29ic2VydmVyID0gb2JzZXJ2ZXI7IH0KKyAgICBHcmFwaGljc0NvbnRleHQq
IGRyYXdpbmdDb250ZXh0KCkgY29uc3Q7CiAKICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBy
ZW5kZXJpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CiAKLSAg
ICBSZW5kZXJCb3gqIHJlbmRlckJveCgpIGNvbnN0IHsgcmV0dXJuIEhUTUxFbGVtZW50OjpyZW5k
ZXJCb3goKTsgfQotICAgIFJlbmRlclN0eWxlKiBjb21wdXRlZFN0eWxlKCkgeyByZXR1cm4gSFRN
TEVsZW1lbnQ6OmNvbXB1dGVkU3R5bGUoKTsgfQorICAgIEltYWdlQnVmZmVyKiBidWZmZXIoKSBj
b25zdDsKKworICAgIEludFJlY3QgY29udmVydExvZ2ljYWxUb0RldmljZShjb25zdCBGbG9hdFJl
Y3QmKSBjb25zdDsKKyAgICBJbnRTaXplIGNvbnZlcnRMb2dpY2FsVG9EZXZpY2UoY29uc3QgRmxv
YXRTaXplJikgY29uc3Q7CisgICAgSW50UG9pbnQgY29udmVydExvZ2ljYWxUb0RldmljZShjb25z
dCBGbG9hdFBvaW50JikgY29uc3Q7CisKKyAgICBjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJp
dHlPcmlnaW4oKSBjb25zdDsKKyAgICB2b2lkIHNldE9yaWdpblRhaW50ZWQoKSB7IG1fb3JpZ2lu
Q2xlYW4gPSBmYWxzZTsgfQorICAgIGJvb2wgb3JpZ2luQ2xlYW4oKSBjb25zdCB7IHJldHVybiBt
X29yaWdpbkNsZWFuOyB9CisKKyAgICBDU1NTdHlsZVNlbGVjdG9yKiBzdHlsZVNlbGVjdG9yKCk7
CisKKyAgICBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0OwogCiAjaWYgRU5B
QkxFKDNEX0NBTlZBUykgICAgCiAgICAgYm9vbCBpczNEKCkgY29uc3Q7CkBAIC0xMDYsMTMgKzEy
OSwyOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXNldCgpOwogCi0gICAgYm9vbCBtX3JlbmRl
cmVySXNDYW52YXM7CisgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcigpIGNvbnN0OworCisgICAg
dm9pZCBzZXRTdXJmYWNlU2l6ZShjb25zdCBJbnRTaXplJik7CisgICAgYm9vbCBoYXNDcmVhdGVk
SW1hZ2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2hhc0NyZWF0ZWRJbWFnZUJ1ZmZlcjsgfQog
Ci0gICAgT3duUHRyPENhbnZhc1JlbmRlcmluZ0NvbnRleHQ+IG1fY29udGV4dDsKICAgICBDYW52
YXNPYnNlcnZlciogbV9vYnNlcnZlcjsKIAorICAgIEludFNpemUgbV9zaXplOworCisgICAgT3du
UHRyPENhbnZhc1JlbmRlcmluZ0NvbnRleHQ+IG1fY29udGV4dDsKKworICAgIGJvb2wgbV9yZW5k
ZXJlcklzQ2FudmFzOworCiAgICAgYm9vbCBtX2lnbm9yZVJlc2V0OwogICAgIEZsb2F0UmVjdCBt
X2RpcnR5UmVjdDsKKworICAgIGZsb2F0IG1fcGFnZVNjYWxlRmFjdG9yOworICAgIGJvb2wgbV9v
cmlnaW5DbGVhbjsKKworICAgIC8vIG1fY3JlYXRlZEltYWdlQnVmZmVyIG1lYW5zIHdlIHRyaWVk
IHRvIG1hbGxvYyB0aGUgYnVmZmVyLiAgV2UgZGlkbid0IG5lY2Vzc2FyaWx5IGdldCBpdC4KKyAg
ICBtdXRhYmxlIGJvb2wgbV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXI7CisgICAgbXV0YWJsZSBPd25Q
dHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXI7CiB9OwogCiB9IC8vbmFtZXNwYWNlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>