<?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>130659</bug_id>
          
          <creation_ts>2014-03-23 21:47:43 -0700</creation_ts>
          <short_desc>Subpixel rendering: Transition class CSSImageGeneratorValue/class StyleImage (and its dependencies) from IntSize to FloatSize to enable subpixel sized (generated)images.</short_desc>
          <delta_ts>2014-04-02 08:30:47 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>130643</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>d-r</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ossy</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>993714</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-03-23 21:47:43 -0700</bug_when>
    <thetext>we should eventually be able to get device pixel sized generated images.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>993718</commentid>
    <comment_count>1</comment_count>
      <attachid>227623</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-03-23 21:52:45 -0700</bug_when>
    <thetext>Created attachment 227623
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>993721</commentid>
    <comment_count>2</comment_count>
      <attachid>227624</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-03-23 22:20:08 -0700</bug_when>
    <thetext>Created attachment 227624
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996390</commentid>
    <comment_count>3</comment_count>
      <attachid>228308</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-04-01 12:43:42 -0700</bug_when>
    <thetext>Created attachment 228308
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996391</commentid>
    <comment_count>4</comment_count>
      <attachid>228308</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-04-01 12:43:52 -0700</bug_when>
    <thetext>Comment on attachment 228308
Patch

EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996397</commentid>
    <comment_count>5</comment_count>
      <attachid>228310</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-04-01 13:03:53 -0700</bug_when>
    <thetext>Created attachment 228310
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996398</commentid>
    <comment_count>6</comment_count>
      <attachid>228310</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-04-01 13:04:12 -0700</bug_when>
    <thetext>Comment on attachment 228310
Patch

EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996694</commentid>
    <comment_count>7</comment_count>
      <attachid>228310</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-02 07:19:25 -0700</bug_when>
    <thetext>Comment on attachment 228310
Patch

Clearing flags on attachment: 228310

Committed r166642: &lt;http://trac.webkit.org/changeset/166642&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996695</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-02 07:19:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996715</commentid>
    <comment_count>9</comment_count>
      <attachid>228310</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-04-02 08:17:34 -0700</bug_when>
    <thetext>Comment on attachment 228310
Patch

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

&gt; Source/WebCore/platform/graphics/LayoutSize.h:203
&gt; +inline FloatSize flooredForPainting(const LayoutSize&amp; size, float pixelSnappingFactor)
&gt; +{
&gt; +#if ENABLE(SUBPIXEL_LAYOUT)
&gt; +    return FloatSize(floorToDevicePixel(size.width(), pixelSnappingFactor), floorToDevicePixel(size.height(), pixelSnappingFactor));
&gt; +#else
&gt; +    UNUSED_PARAM(pixelSnappingFactor);
&gt; +    return FloatSize(point);
&gt; +#endif
&gt; +}

It broke the WinCairo build, because there is no defined point identifier:

     1&gt;c:\projects\buildslave\win-cairo-release\build\source\webcore\platform\graphics\LayoutSize.h(201): error C2065: &apos;point&apos; : undeclared identifier (C:\Projects\BuildSlave\win-cairo-release\build\WebKitBuild\Release_WinCairo\obj32\WebCore\DerivedSources\MathMLElementFactory.cpp)
     1&gt;c:\projects\buildslave\win-cairo-release\build\source\webcore\platform\graphics\LayoutSize.h(201): error C2065: &apos;point&apos; : undeclared identifier (..\html\track\TextTrackCueGeneric.cpp)
     1&gt;c:\projects\buildslave\win-cairo-release\build\source\webcore\platform\graphics\LayoutSize.h(201): error C2065: &apos;point&apos; : undeclared identifier (..\html\track\TrackListBase.cpp)
     1&gt;c:\projects\buildslave\win-cairo-release\build\source\webcore\platform\graphics\LayoutSize.h(201): error C2065: &apos;point&apos; : undeclared identifier (..\html\track\VideoTrack.cpp)
     1&gt;c:\projects\buildslave\win-cairo-release\build\source\webcore\platform\graphics\LayoutSize.h(201): error C2065: &apos;point&apos; : undeclared identifier (..\html\track\AudioTrack.cpp)
     1&gt;c:\projects\buildslave\win-cairo-release\build\source\webcore\platform\graphics\LayoutSize.h(201): error C2065: &apos;point&apos; : undeclared identifier (C:\Projects\BuildSlave\win-cairo-release\build\WebKitBuild\Release_WinCairo\obj32\WebCore\DerivedSources\SVGElementFactory.cpp)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996716</commentid>
    <comment_count>10</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-04-02 08:18:45 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 228310 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=228310&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/LayoutSize.h:203
&gt; &gt; +inline FloatSize flooredForPainting(const LayoutSize&amp; size, float pixelSnappingFactor)
&gt; &gt; +{
&gt; &gt; +#if ENABLE(SUBPIXEL_LAYOUT)
&gt; &gt; +    return FloatSize(floorToDevicePixel(size.width(), pixelSnappingFactor), floorToDevicePixel(size.height(), pixelSnappingFactor));
&gt; &gt; +#else
&gt; &gt; +    UNUSED_PARAM(pixelSnappingFactor);
&gt; &gt; +    return FloatSize(point);
&gt; &gt; +#endif
&gt; &gt; +}
&gt; 
&gt; It broke the WinCairo build, because there is no defined point identifier:
&gt; 
&gt;      1&gt;c:\projects\buildslave\win-cairo-release\build\source\webcore\platform\graphics\LayoutSize.h(201): error C2065: &apos;point&apos; : undeclared identifier (C:\Projects\BuildSlave\win-cairo-release\build\WebKitBuild\Release_WinCairo\obj32\WebCore\DerivedSources\MathMLElementFactory.cpp)
&gt;      1&gt;c:\projects\buildslave\win-cairo-release\build\source\webcore\platform\graphics\LayoutSize.h(201): error C2065: &apos;point&apos; : undeclared identifier (..\html\track\TextTrackCueGeneric.cpp)
&gt;      1&gt;c:\projects\buildslave\win-cairo-release\build\source\webcore\platform\graphics\LayoutSize.h(201): error C2065: &apos;point&apos; : undeclared identifier (..\html\track\TrackListBase.cpp)
&gt;      1&gt;c:\projects\buildslave\win-cairo-release\build\source\webcore\platform\graphics\LayoutSize.h(201): error C2065: &apos;point&apos; : undeclared identifier (..\html\track\VideoTrack.cpp)
&gt;      1&gt;c:\projects\buildslave\win-cairo-release\build\source\webcore\platform\graphics\LayoutSize.h(201): error C2065: &apos;point&apos; : undeclared identifier (..\html\track\AudioTrack.cpp)
&gt;      1&gt;c:\projects\buildslave\win-cairo-release\build\source\webcore\platform\graphics\LayoutSize.h(201): error C2065: &apos;point&apos; : undeclared identifier (C:\Projects\BuildSlave\win-cairo-release\build\WebKitBuild\Release_WinCairo\obj32\WebCore\DerivedSources\SVGElementFactory.cpp)

Thanks, I&apos;ll fix it right away.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996718</commentid>
    <comment_count>11</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-04-02 08:30:47 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/166647</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>227623</attachid>
            <date>2014-03-23 21:52:45 -0700</date>
            <delta_ts>2014-03-23 21:53:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch</filename>
            <type>text/plain</type>
            <size>1423</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">TQlTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKTQlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFz
VmFsdWUuY3BwCk0JU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgKTQlTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCk0JU291cmNlL1dlYkNvcmUvY3NzL0NT
U0Nyb3NzZmFkZVZhbHVlLmgKTQlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1
ZS5jcHAKTQlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oCk0JU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCk0JU291cmNlL1dlYkNvcmUvY3NzL0NT
U0dyYWRpZW50VmFsdWUuaApNCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZh
bHVlLmNwcApNCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmgKTQlT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCk0JU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9GbG9hdFNpemVIYXNoLmgKTQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbnRTaXplSGFzaC5oCk0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0
U2l6ZS5oCk0JU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHls
ZUltYWdlLmgKTQlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAK
TQlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAKTQlT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5oCk0JU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwCk0JU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuaApNCVNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcApNCVNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmgKTQlTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbWFnZS5oCk0JU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmgKTQlTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2VDYWNoZS5jcHAKTQlTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2VDYWNoZS5oCllvdXIgYnJhbmNoIGlzIGFoZWFkIG9mICdvcmlnaW4vbWFzdGVyJyBieSAxIGNv
bW1pdC4KICAodXNlICJnaXQgcHVzaCIgdG8gcHVibGlzaCB5b3VyIGxvY2FsIGNvbW1pdHMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227624</attachid>
            <date>2014-03-23 22:20:08 -0700</date>
            <delta_ts>2014-04-01 12:43:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch</filename>
            <type>text/plain</type>
            <size>42435</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNmQyZTI3Li42MmNhM2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODAg
QEAKKzIwMTQtMDMtMjMgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAg
ICBTdWJwaXhlbCByZW5kZXJpbmc6IFRyYW5zaXRpb24gY2xhc3MgQ1NTSW1hZ2VHZW5lcmF0b3JW
YWx1ZS9jbGFzcyBTdHlsZUltYWdlIChhbmQgaXRzIGRlcGVuZGVuY2llcykgZnJvbSAKKyAgICAg
ICAgSW50U2l6ZSB0byBGbG9hdFNpemUgdG8gZW5hYmxlIHN1YnBpeGVsIHNpemVkIChnZW5lcmF0
ZWQpaW1hZ2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMwNjU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiB0byBzdXBwb3J0IHN1YnBpeGVsIHBvc2l0aW9uZWQv
c2l6ZWQgYmFja2dyb3VuZCBpbWFnZXMuIEdlbmVyYXRlZCBpbWFnZXMKKyAgICAgICAgbmVlZHMg
dG8gYmUgYWJsZSB0byBzaXplZCBvbiBkZXZpY2UgcGl4ZWxzLgorCisgICAgICAgIE5vIGNoYW5n
ZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIGNzcy9DU1NDYW52YXNWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NDYW52YXNWYWx1ZTo6Zml4ZWRTaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0NhbnZhc1ZhbHVlOjppbWFnZSk6CisgICAgICAgICogY3NzL0NTU0NhbnZhc1ZhbHVl
Lmg6CisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjpmaXhlZFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Q3Jvc3NmYWRlVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBjc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUu
aDoKKyAgICAgICAgKiBjc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NGaWx0ZXJJbWFnZVZhbHVlOjpmaXhlZFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFn
ZVZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6cG9z
aXRpb25Gcm9tVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6Y29t
cHV0ZUVuZFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OmVuZFBvaW50c0Zyb21BbmdsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVu
dCk6CisgICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0dyYWRpZW50VmFsdWU6OmZpeGVkU2l6ZSk6CisgICAgICAgICogY3NzL0NTU0ltYWdlR2Vu
ZXJhdG9yVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZTo6Y2FjaGVkSW1hZ2VGb3JTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlR2VuZXJh
dG9yVmFsdWU6OnNhdmVDYWNoZWRJbWFnZUZvclNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZTo6ZXZpY3RDYWNoZWRHZW5lcmF0ZWRJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpDYWNoZWRHZW5lcmF0ZWRJbWFnZTo6
Q2FjaGVkR2VuZXJhdGVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VHZW5lcmF0
b3JWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZTo6Zml4ZWRTaXplKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRJbWFnZTo6c2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9G
bG9hdFNpemVIYXNoLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ludFNpemVIYXNoLmguCisgICAgICAgIChXVEY6OkZsb2F0SGFzaDxXZWJDb3JlOjpGbG9h
dFNpemU+OjpoYXNoKToKKyAgICAgICAgKFdURjo6RmxvYXRIYXNoPFdlYkNvcmU6OkZsb2F0U2l6
ZT46OmVxdWFsKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJDb3JlOjpGbG9hdFNpemU+
Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNv
cmU6OkZsb2F0U2l6ZT46OmlzRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbnRTaXplSGFzaC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNp
emUuaDoKKyAgICAgICAgKFdlYkNvcmU6OmZsb29yZWRGb3JQYWludGluZyk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlz
dE1hcmtlcjo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
Q2FjaGVkSW1hZ2U6OmltYWdlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hlZElt
YWdlOjpzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVDYWNoZWRJbWFnZTo6aW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNh
Y2hlZEltYWdlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VT
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDYWNoZWRJbWFnZVNldDo6aW1hZ2VTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OnNldENvbnRhaW5lclNp
emVGb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hlZEltYWdlU2V0Ojpp
bWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZUdlbmVyYXRlZEltYWdlOjppbWFnZVNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVHZW5lcmF0ZWRJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVHZW5lcmF0ZWRJbWFnZTo6aW1hZ2UpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlSW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5
bGVQZW5kaW5nSW1hZ2UuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUNhY2hlOjpzZXRDb250YWluZXJTaXplRm9y
UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmg6CisKIDIw
MTQtMDMtMjIgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBTdWJw
aXhlbCByZW5kZXJpbmc6IFRyYW5zaXRpb24gY2xhc3MgSW1hZ2UgKGFuZCBpdHMgZGVwZW5kZW5j
aWVzKSBmcm9tIGludCB0byBmbG9hdCB0byBlbmFibGUgc3VicGl4ZWwgcG9zaXRpb25lZC9zaXpl
ZCBpbWFnZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcAppbmRleCA1ZTQxYzg4
Li40MzExMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5jcHAKQEAgLTY2LDEx
ICs2NiwxMSBAQCB2b2lkIENTU0NhbnZhc1ZhbHVlOjpjYW52YXNEZXN0cm95ZWQoSFRNTENhbnZh
c0VsZW1lbnQmIGVsZW1lbnQpCiAgICAgbV9lbGVtZW50ID0gbnVsbHB0cjsKIH0KIAotSW50U2l6
ZSBDU1NDYW52YXNWYWx1ZTo6Zml4ZWRTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
KQorRmxvYXRTaXplIENTU0NhbnZhc1ZhbHVlOjpmaXhlZFNpemUoY29uc3QgUmVuZGVyRWxlbWVu
dCogcmVuZGVyZXIpCiB7CiAgICAgaWYgKEhUTUxDYW52YXNFbGVtZW50KiBlbHQgPSBlbGVtZW50
KHJlbmRlcmVyLT5kb2N1bWVudCgpKSkKLSAgICAgICAgcmV0dXJuIEludFNpemUoZWx0LT53aWR0
aCgpLCBlbHQtPmhlaWdodCgpKTsKLSAgICByZXR1cm4gSW50U2l6ZSgpOworICAgICAgICByZXR1
cm4gRmxvYXRTaXplKGVsdC0+d2lkdGgoKSwgZWx0LT5oZWlnaHQoKSk7CisgICAgcmV0dXJuIEZs
b2F0U2l6ZSgpOwogfQogCiBIVE1MQ2FudmFzRWxlbWVudCogQ1NTQ2FudmFzVmFsdWU6OmVsZW1l
bnQoRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtODQsNyArODQsNyBAQCBIVE1MQ2FudmFzRWxlbWVu
dCogQ1NTQ2FudmFzVmFsdWU6OmVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHJldHVy
biBtX2VsZW1lbnQ7CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2U+IENTU0NhbnZhc1ZhbHVlOjppbWFn
ZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgLypzaXplKi8pCitQYXNz
UmVmUHRyPEltYWdlPiBDU1NDYW52YXNWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVy
ZXIsIGNvbnN0IEZsb2F0U2l6ZSYgLypzaXplKi8pCiB7CiAgICAgQVNTRVJUKGNsaWVudHMoKS5j
b250YWlucyhyZW5kZXJlcikpOwogICAgIEhUTUxDYW52YXNFbGVtZW50KiBlbGVtZW50ID0gdGhp
cy0+ZWxlbWVudChyZW5kZXJlci0+ZG9jdW1lbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNW
YWx1ZS5oCmluZGV4IGYxYjZjZmIuLmI2N2QwNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDYW52YXNWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNW
YWx1ZS5oCkBAIC00MCw5ICs0MCw5IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21DU1NU
ZXh0KCkgY29uc3Q7CiAKLSAgICBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJFbGVtZW50
KiwgY29uc3QgSW50U2l6ZSYpOworICAgIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVs
ZW1lbnQqLCBjb25zdCBGbG9hdFNpemUmKTsKICAgICBib29sIGlzRml4ZWRTaXplKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQotICAgIEludFNpemUgZml4ZWRTaXplKGNvbnN0IFJlbmRlckVsZW1l
bnQqKTsKKyAgICBGbG9hdFNpemUgZml4ZWRTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqKTsKIAog
ICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIGxv
YWRTdWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCmluZGV4IDc0MTg2NTAuLmE3MzAwNTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcApAQCAtNzgsNyArNzgsNyBAQCBTdHJpbmcg
Q1NTQ3Jvc3NmYWRlVmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogICAgIHJldHVybiByZXN1
bHQudG9TdHJpbmcoKTsKIH0KIAotSW50U2l6ZSBDU1NDcm9zc2ZhZGVWYWx1ZTo6Zml4ZWRTaXpl
KGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQorRmxvYXRTaXplIENTU0Nyb3NzZmFkZVZh
bHVlOjpmaXhlZFNpemUoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCiB7CiAgICAgZmxv
YXQgcGVyY2VudGFnZSA9IG1fcGVyY2VudGFnZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCk7CiAgICAg
ZmxvYXQgaW52ZXJzZVBlcmNlbnRhZ2UgPSAxIC0gcGVyY2VudGFnZTsKQEAgLTg4LDcgKzg4LDcg
QEAgSW50U2l6ZSBDU1NDcm9zc2ZhZGVWYWx1ZTo6Zml4ZWRTaXplKGNvbnN0IFJlbmRlckVsZW1l
bnQqIHJlbmRlcmVyKQogICAgIENhY2hlZEltYWdlKiBjYWNoZWRUb0ltYWdlID0gY2FjaGVkSW1h
Z2VGb3JDU1NWYWx1ZShtX3RvVmFsdWUuZ2V0KCksIGNhY2hlZFJlc291cmNlTG9hZGVyKTsKIAog
ICAgIGlmICghY2FjaGVkRnJvbUltYWdlIHx8ICFjYWNoZWRUb0ltYWdlKQotICAgICAgICByZXR1
cm4gSW50U2l6ZSgpOworICAgICAgICByZXR1cm4gRmxvYXRTaXplKCk7CiAKICAgICBGbG9hdFNp
emUgZnJvbUltYWdlU2l6ZSA9IGNhY2hlZEZyb21JbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5k
ZXJlciktPnNpemUoKTsKICAgICBGbG9hdFNpemUgdG9JbWFnZVNpemUgPSBjYWNoZWRUb0ltYWdl
LT5pbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKS0+c2l6ZSgpOwpAQCAtOTYsOSArOTYsOSBAQCBJ
bnRTaXplIENTU0Nyb3NzZmFkZVZhbHVlOjpmaXhlZFNpemUoY29uc3QgUmVuZGVyRWxlbWVudCog
cmVuZGVyZXIpCiAgICAgLy8gUm91bmRpbmcgaXNzdWVzIGNhbiBjYXVzZSB0cmFuc2l0aW9ucyBi
ZXR3ZWVuIGltYWdlcyBvZiBlcXVhbCBzaXplIHRvIHJldHVybgogICAgIC8vIGEgZGlmZmVyZW50
IGZpeGVkIHNpemU7IGF2b2lkIHBlcmZvcm1pbmcgdGhlIGludGVycG9sYXRpb24gaWYgdGhlIGlt
YWdlcyBhcmUgdGhlIHNhbWUgc2l6ZS4KICAgICBpZiAoZnJvbUltYWdlU2l6ZSA9PSB0b0ltYWdl
U2l6ZSkKLSAgICAgICAgcmV0dXJuIEludFNpemUoZnJvbUltYWdlU2l6ZSk7CisgICAgICAgIHJl
dHVybiBmcm9tSW1hZ2VTaXplOwogCi0gICAgcmV0dXJuIEludFNpemUoZnJvbUltYWdlU2l6ZS53
aWR0aCgpICogaW52ZXJzZVBlcmNlbnRhZ2UgKyB0b0ltYWdlU2l6ZS53aWR0aCgpICogcGVyY2Vu
dGFnZSwKKyAgICByZXR1cm4gRmxvYXRTaXplKGZyb21JbWFnZVNpemUud2lkdGgoKSAqIGludmVy
c2VQZXJjZW50YWdlICsgdG9JbWFnZVNpemUud2lkdGgoKSAqIHBlcmNlbnRhZ2UsCiAgICAgICAg
IGZyb21JbWFnZVNpemUuaGVpZ2h0KCkgKiBpbnZlcnNlUGVyY2VudGFnZSArIHRvSW1hZ2VTaXpl
LmhlaWdodCgpICogcGVyY2VudGFnZSk7CiB9CiAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIENT
U0Nyb3NzZmFkZVZhbHVlOjpsb2FkU3ViaW1hZ2VzKENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNo
ZWRSZXNvdXJjZUxvYWRlcgogICAgIG1fY3Jvc3NmYWRlU3ViaW1hZ2VPYnNlcnZlci5zZXRSZWFk
eSh0cnVlKTsKIH0KIAotUGFzc1JlZlB0cjxJbWFnZT4gQ1NTQ3Jvc3NmYWRlVmFsdWU6OmltYWdl
KFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBzaXplKQorUGFzc1JlZlB0
cjxJbWFnZT4gQ1NTQ3Jvc3NmYWRlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
LCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiB7CiAgICAgaWYgKHNpemUuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2Zh
ZGVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKaW5kZXgg
OTJiZWNhMS4uMTRkYTU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3Nz
ZmFkZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgK
QEAgLTUyLDkgKzUyLDkgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBj
b25zdDsKIAotICAgIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25z
dCBJbnRTaXplJik7CisgICAgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCos
IGNvbnN0IEZsb2F0U2l6ZSYpOwogICAgIGJvb2wgaXNGaXhlZFNpemUoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9Ci0gICAgSW50U2l6ZSBmaXhlZFNpemUoY29uc3QgUmVuZGVyRWxlbWVudCopOwor
ICAgIEZsb2F0U2l6ZSBmaXhlZFNpemUoY29uc3QgUmVuZGVyRWxlbWVudCopOwogCiAgICAgYm9v
bCBpc1BlbmRpbmcoKSBjb25zdDsKICAgICBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5k
ZXJFbGVtZW50KikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmls
dGVySW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1
ZS5jcHAKaW5kZXggNDhlYjVjMS4uMWFjMmZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
aWx0ZXJJbWFnZVZhbHVlLmNwcApAQCAtNTksMTUgKzU5LDE1IEBAIFN0cmluZyBDU1NGaWx0ZXJJ
bWFnZVZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0LnRvU3Ry
aW5nKCk7CiB9CiAKLUludFNpemUgQ1NTRmlsdGVySW1hZ2VWYWx1ZTo6Zml4ZWRTaXplKGNvbnN0
IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQorRmxvYXRTaXplIENTU0ZpbHRlckltYWdlVmFsdWU6
OmZpeGVkU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKIHsKICAgICBDYWNoZWRS
ZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIgPSByZW5kZXJlci0+ZG9jdW1lbnQo
KS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpOwogICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9
IGNhY2hlZEltYWdlRm9yQ1NTVmFsdWUobV9pbWFnZVZhbHVlLmdldCgpLCBjYWNoZWRSZXNvdXJj
ZUxvYWRlcik7CiAKICAgICBpZiAoIWNhY2hlZEltYWdlKQotICAgICAgICByZXR1cm4gSW50U2l6
ZSgpOworICAgICAgICByZXR1cm4gRmxvYXRTaXplKCk7CiAKLSAgICByZXR1cm4gSW50U2l6ZShj
YWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlciktPnNpemUoKSk7CisgICAgcmV0
dXJuIGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKS0+c2l6ZSgpOwogfQog
CiBib29sIENTU0ZpbHRlckltYWdlVmFsdWU6OmlzUGVuZGluZygpIGNvbnN0CkBAIC05Niw3ICs5
Niw3IEBAIHZvaWQgQ1NTRmlsdGVySW1hZ2VWYWx1ZTo6bG9hZFN1YmltYWdlcyhDYWNoZWRSZXNv
dXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkCiAgICAgbV9maWx0ZXJTdWJpbWFnZU9ic2Vy
dmVyLnNldFJlYWR5KHRydWUpOwogfQogCi1QYXNzUmVmUHRyPEltYWdlPiBDU1NGaWx0ZXJJbWFn
ZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgc2l6
ZSkKK1Bhc3NSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVs
ZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiB7CiAgICAgaWYgKHNpemUu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVy
SW1hZ2VWYWx1ZS5oCmluZGV4IGYyMTJmNTEuLjQyZjIyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZpbHRlckltYWdlVmFsdWUuaApAQCAtNTcsOSArNTcsOSBAQCBwdWJsaWM6CiAKICAgICBT
dHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OwogCi0gICAgUGFzc1JlZlB0cjxJbWFnZT4gaW1h
Z2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEludFNpemUmKTsKKyAgICBQYXNzUmVmUHRyPEltYWdl
PiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgRmxvYXRTaXplJik7CiAgICAgYm9vbCBpc0Zp
eGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICBJbnRTaXplIGZpeGVkU2l6ZShj
b25zdCBSZW5kZXJFbGVtZW50Kik7CisgICAgRmxvYXRTaXplIGZpeGVkU2l6ZShjb25zdCBSZW5k
ZXJFbGVtZW50Kik7CiAKICAgICBib29sIGlzUGVuZGluZygpIGNvbnN0OwogICAgIGJvb2wga25v
d25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmFkaWVudFZhbHVlLmNwcAppbmRleCBmYjk0YjMxLi5kMTc5ZGVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCkBAIC0yOCwxMSArMjgsMTEgQEAKIAogI2lu
Y2x1ZGUgIkNTU0NhbGN1bGF0aW9uVmFsdWUuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRz
LmgiCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSAiRmxvYXRTaXplSGFzaC5oIgog
I2luY2x1ZGUgIkdyYWRpZW50LmgiCiAjaW5jbHVkZSAiR3JhZGllbnRJbWFnZS5oIgogI2luY2x1
ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIkludFNpemVIYXNo
LmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVu
dC5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKQEAgLTQxLDcgKzQxLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPEltYWdlPiBDU1NHcmFkaWVudFZhbHVlOjpp
bWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK1Bhc3NS
ZWZQdHI8SW1hZ2U+IENTU0dyYWRpZW50VmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRl
cmVyLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiB7CiAgICAgaWYgKHNpemUuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gMDsKQEAgLTM5MCw3ICszOTAsNyBAQCB2b2lkIENTU0dyYWRpZW50VmFs
dWU6OmFkZFN0b3BzKEdyYWRpZW50KiBncmFkaWVudCwgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIs
IGNvbgogICAgIGdyYWRpZW50LT5zZXRTdG9wc1NvcnRlZCh0cnVlKTsKIH0KIAotc3RhdGljIGZs
b2F0IHBvc2l0aW9uRnJvbVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSwgY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgcm9vdFN0eWxlLCBjb25zdCBJbnRT
aXplJiBzaXplLCBib29sIGlzSG9yaXpvbnRhbCkKK3N0YXRpYyBmbG9hdCBwb3NpdGlvbkZyb21W
YWx1ZShDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwg
Y29uc3QgUmVuZGVyU3R5bGUmIHJvb3RTdHlsZSwgY29uc3QgRmxvYXRTaXplJiBzaXplLCBib29s
IGlzSG9yaXpvbnRhbCkKIHsKICAgICBmbG9hdCB6b29tRmFjdG9yID0gc3R5bGUuZWZmZWN0aXZl
Wm9vbSgpOwogCkBAIC00MjQsNyArNDI0LDcgQEAgc3RhdGljIGZsb2F0IHBvc2l0aW9uRnJvbVZh
bHVlKENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWwKICAg
ICByZXR1cm4gdmFsdWUtPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KCZzdHlsZSwgJnJvb3RTdHlsZSwg
em9vbUZhY3Rvcik7CiB9CiAKLUZsb2F0UG9pbnQgQ1NTR3JhZGllbnRWYWx1ZTo6Y29tcHV0ZUVu
ZFBvaW50KENTU1ByaW1pdGl2ZVZhbHVlKiBob3Jpem9udGFsLCBDU1NQcmltaXRpdmVWYWx1ZSog
dmVydGljYWwsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHJv
b3RTdHlsZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK0Zsb2F0UG9pbnQgQ1NTR3JhZGllbnRWYWx1
ZTo6Y29tcHV0ZUVuZFBvaW50KENTU1ByaW1pdGl2ZVZhbHVlKiBob3Jpem9udGFsLCBDU1NQcmlt
aXRpdmVWYWx1ZSogdmVydGljYWwsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgUmVu
ZGVyU3R5bGUmIHJvb3RTdHlsZSwgY29uc3QgRmxvYXRTaXplJiBzaXplKQogewogICAgIEZsb2F0
UG9pbnQgcmVzdWx0OwogCkBAIC01NzIsNyArNTcyLDcgQEAgU3RyaW5nIENTU0xpbmVhckdyYWRp
ZW50VmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogfQogCiAvLyBDb21wdXRlIHRoZSBlbmRw
b2ludHMgc28gdGhhdCBhIGdyYWRpZW50IG9mIHRoZSBnaXZlbiBhbmdsZSBjb3ZlcnMgYSBib3gg
b2YgdGhlIGdpdmVuIHNpemUuCi1zdGF0aWMgdm9pZCBlbmRQb2ludHNGcm9tQW5nbGUoZmxvYXQg
YW5nbGVEZWcsIGNvbnN0IEludFNpemUmIHNpemUsIEZsb2F0UG9pbnQmIGZpcnN0UG9pbnQsIEZs
b2F0UG9pbnQmIHNlY29uZFBvaW50LCBDU1NHcmFkaWVudFR5cGUgdHlwZSkKK3N0YXRpYyB2b2lk
IGVuZFBvaW50c0Zyb21BbmdsZShmbG9hdCBhbmdsZURlZywgY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBGbG9hdFBvaW50JiBmaXJzdFBvaW50LCBGbG9hdFBvaW50JiBzZWNvbmRQb2ludCwgQ1NTR3Jh
ZGllbnRUeXBlIHR5cGUpCiB7CiAgICAgLy8gUHJlZml4ZWQgZ3JhZGllbnRzIHVzZSAicG9sYXIg
Y29vcmRpbmF0ZSIgYW5nbGVzLCByYXRoZXIgdGhhbiAiYmVhcmluZyIgYW5nbGVzLgogICAgIGlm
ICh0eXBlID09IENTU1ByZWZpeGVkTGluZWFyR3JhZGllbnQpCkBAIC02MzksNyArNjM5LDcgQEAg
c3RhdGljIHZvaWQgZW5kUG9pbnRzRnJvbUFuZ2xlKGZsb2F0IGFuZ2xlRGVnLCBjb25zdCBJbnRT
aXplJiBzaXplLCBGbG9hdFBvaW50JgogICAgIGZpcnN0UG9pbnQuc2V0KGhhbGZXaWR0aCAtIGVu
ZFgsIGhhbGZIZWlnaHQgKyBlbmRZKTsKIH0KIAotUGFzc1JlZlB0cjxHcmFkaWVudD4gQ1NTTGlu
ZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIs
IGNvbnN0IEludFNpemUmIHNpemUpCitQYXNzUmVmUHRyPEdyYWRpZW50PiBDU1NMaW5lYXJHcmFk
aWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3Qg
RmxvYXRTaXplJiBzaXplKQogewogICAgIEFTU0VSVCghc2l6ZS5pc0VtcHR5KCkpOwogCkBAIC05
NzksNyArOTc5LDcgQEAgc3RhdGljIGlubGluZSBmbG9hdCBob3Jpem9udGFsRWxsaXBzZVJhZGl1
cyhjb25zdCBGbG9hdFNpemUmIHAsIGZsb2F0IGFzcGVjdFJhdGkKIH0KIAogLy8gRklYTUU6IHNo
YXJlIGNvZGUgd2l0aCB0aGUgbGluZWFyIHZlcnNpb24KLVBhc3NSZWZQdHI8R3JhZGllbnQ+IENT
U1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQqIHJlbmRl
cmVyLCBjb25zdCBJbnRTaXplJiBzaXplKQorUGFzc1JlZlB0cjxHcmFkaWVudD4gQ1NTUmFkaWFs
R3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSkKIHsKICAgICBBU1NFUlQoIXNpemUuaXNFbXB0eSgpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKaW5kZXggOGZiNDMyYS4uZDA4MDIwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCkBAIC02MSw3ICs2MSw3IEBAIHN0
cnVjdCBDU1NHcmFkaWVudENvbG9yU3RvcCB7CiAKIGNsYXNzIENTU0dyYWRpZW50VmFsdWUgOiBw
dWJsaWMgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgUGFzc1JlZlB0cjxJ
bWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEludFNpemUmKTsKKyAgICBQYXNzUmVm
UHRyPEltYWdlPiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgRmxvYXRTaXplJik7CiAKICAg
ICB2b2lkIHNldEZpcnN0WChQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWwpIHsgbV9m
aXJzdFggPSB2YWw7IH0KICAgICB2b2lkIHNldEZpcnN0WShQYXNzUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiB2YWwpIHsgbV9maXJzdFkgPSB2YWw7IH0KQEAgLTc5LDcgKzc5LDcgQEAgcHVibGlj
OgogICAgIENTU0dyYWRpZW50VHlwZSBncmFkaWVudFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2dy
YWRpZW50VHlwZTsgfQogCiAgICAgYm9vbCBpc0ZpeGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgSW50U2l6ZSBmaXhlZFNpemUoY29uc3QgUmVuZGVyRWxlbWVudCopIGNvbnN0
IHsgcmV0dXJuIEludFNpemUoKTsgfQorICAgIEZsb2F0U2l6ZSBmaXhlZFNpemUoY29uc3QgUmVu
ZGVyRWxlbWVudCopIGNvbnN0IHsgcmV0dXJuIEZsb2F0U2l6ZSgpOyB9CiAKICAgICBib29sIGlz
UGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBrbm93blRvQmVPcGFx
dWUoY29uc3QgUmVuZGVyRWxlbWVudCopIGNvbnN0OwpAQCAtMTEyLDcgKzExMiw3IEBAIHByb3Rl
Y3RlZDoKICAgICB2b2lkIGFkZFN0b3BzKEdyYWRpZW50KiwgUmVuZGVyRWxlbWVudCosIGNvbnN0
IFJlbmRlclN0eWxlJiByb290U3R5bGUsIGZsb2F0IG1heExlbmd0aEZvclJlcGVhdCA9IDApOwog
CiAgICAgLy8gUmVzb2x2ZSBwb2ludHMvcmFkaWkgdG8gZnJvbnQgZW5kIHZhbHVlcy4KLSAgICBG
bG9hdFBvaW50IGNvbXB1dGVFbmRQb2ludChDU1NQcmltaXRpdmVWYWx1ZSosIENTU1ByaW1pdGl2
ZVZhbHVlKiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSYgcm9vdFN0eWxl
LCBjb25zdCBJbnRTaXplJik7CisgICAgRmxvYXRQb2ludCBjb21wdXRlRW5kUG9pbnQoQ1NTUHJp
bWl0aXZlVmFsdWUqLCBDU1NQcmltaXRpdmVWYWx1ZSosIGNvbnN0IFJlbmRlclN0eWxlJiwgY29u
c3QgUmVuZGVyU3R5bGUmIHJvb3RTdHlsZSwgY29uc3QgRmxvYXRTaXplJik7CiAKICAgICBib29s
IGlzQ2FjaGVhYmxlKCkgY29uc3Q7CiAKQEAgLTE0NSw3ICsxNDUsNyBAQCBwdWJsaWM6CiAgICAg
U3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKIAogICAgIC8vIENyZWF0ZSB0aGUgZ3JhZGll
bnQgZm9yIGEgZ2l2ZW4gc2l6ZS4KLSAgICBQYXNzUmVmUHRyPEdyYWRpZW50PiBjcmVhdGVHcmFk
aWVudChSZW5kZXJFbGVtZW50KiwgY29uc3QgSW50U2l6ZSYpOworICAgIFBhc3NSZWZQdHI8R3Jh
ZGllbnQ+IGNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQqLCBjb25zdCBGbG9hdFNpemUmKTsK
IAogICAgIFBhc3NSZWY8Q1NTTGluZWFyR3JhZGllbnRWYWx1ZT4gY2xvbmUoKSBjb25zdAogICAg
IHsKQEAgLTE5NSw3ICsxOTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRFbmRWZXJ0aWNhbFNp
emUoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsKSB7IG1fZW5kVmVydGljYWxTaXpl
ID0gdmFsOyB9CiAKICAgICAvLyBDcmVhdGUgdGhlIGdyYWRpZW50IGZvciBhIGdpdmVuIHNpemUu
Ci0gICAgUGFzc1JlZlB0cjxHcmFkaWVudD4gY3JlYXRlR3JhZGllbnQoUmVuZGVyRWxlbWVudCos
IGNvbnN0IEludFNpemUmKTsKKyAgICBQYXNzUmVmUHRyPEdyYWRpZW50PiBjcmVhdGVHcmFkaWVu
dChSZW5kZXJFbGVtZW50KiwgY29uc3QgRmxvYXRTaXplJik7CiAKICAgICBib29sIGVxdWFscyhj
b25zdCBDU1NSYWRpYWxHcmFkaWVudFZhbHVlJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAppbmRleCA1NTExYzJkLi4wZDljZmNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCkBAIC02
NSw3ICs2NSw3IEBAIHZvaWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6cmVtb3ZlQ2xpZW50KFJl
bmRlckVsZW1lbnQqIHJlbmRlcmVyKQogICAgICAgICBkZXJlZigpOwogfQogCi1HZW5lcmF0ZWRJ
bWFnZSogQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Y2FjaGVkSW1hZ2VGb3JTaXplKEludFNpemUg
c2l6ZSkKK0dlbmVyYXRlZEltYWdlKiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpjYWNoZWRJbWFn
ZUZvclNpemUoRmxvYXRTaXplIHNpemUpCiB7CiAgICAgaWYgKHNpemUuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTc4LDE5ICs3OCwxOSBAQCBHZW5lcmF0ZWRJbWFnZSog
Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Y2FjaGVkSW1hZ2VGb3JTaXplKEludFNpemUgc2l6ZSkK
ICAgICByZXR1cm4gY2FjaGVkR2VuZXJhdGVkSW1hZ2UtPmltYWdlKCk7CiB9CiAKLXZvaWQgQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZTo6c2F2ZUNhY2hlZEltYWdlRm9yU2l6ZShJbnRTaXplIHNpemUs
IFBhc3NSZWZQdHI8R2VuZXJhdGVkSW1hZ2U+IGltYWdlKQordm9pZCBDU1NJbWFnZUdlbmVyYXRv
clZhbHVlOjpzYXZlQ2FjaGVkSW1hZ2VGb3JTaXplKEZsb2F0U2l6ZSBzaXplLCBQYXNzUmVmUHRy
PEdlbmVyYXRlZEltYWdlPiBpbWFnZSkKIHsKICAgICBBU1NFUlQoIW1faW1hZ2VzLmNvbnRhaW5z
KHNpemUpKTsKICAgICBtX2ltYWdlcy5hZGQoc2l6ZSwgc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRH
ZW5lcmF0ZWRJbWFnZT4oKnRoaXMsIHNpemUsIGltYWdlKSk7CiB9CiAKLXZvaWQgQ1NTSW1hZ2VH
ZW5lcmF0b3JWYWx1ZTo6ZXZpY3RDYWNoZWRHZW5lcmF0ZWRJbWFnZShJbnRTaXplIHNpemUpCit2
b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmV2aWN0Q2FjaGVkR2VuZXJhdGVkSW1hZ2UoRmxv
YXRTaXplIHNpemUpCiB7CiAgICAgQVNTRVJUKG1faW1hZ2VzLmNvbnRhaW5zKHNpemUpKTsKICAg
ICBtX2ltYWdlcy5yZW1vdmUoc2l6ZSk7CiB9CiAKLUNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OkNh
Y2hlZEdlbmVyYXRlZEltYWdlOjpDYWNoZWRHZW5lcmF0ZWRJbWFnZShDU1NJbWFnZUdlbmVyYXRv
clZhbHVlJiBvd25lciwgSW50U2l6ZSBzaXplLCBQYXNzUmVmUHRyPEdlbmVyYXRlZEltYWdlPiBp
bWFnZSkKK0NTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OkNhY2hlZEdlbmVyYXRlZEltYWdlOjpDYWNo
ZWRHZW5lcmF0ZWRJbWFnZShDU1NJbWFnZUdlbmVyYXRvclZhbHVlJiBvd25lciwgRmxvYXRTaXpl
IHNpemUsIFBhc3NSZWZQdHI8R2VuZXJhdGVkSW1hZ2U+IGltYWdlKQogICAgIDogbV9vd25lcihv
d25lcikKICAgICAsIG1fc2l6ZShzaXplKQogICAgICwgbV9pbWFnZShpbWFnZSkKQEAgLTEwNSw3
ICsxMDUsNyBAQCB2b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OkNhY2hlZEdlbmVyYXRlZElt
YWdlOjpldmljdGlvblRpbWVyRmlyZWQoRGVmZXJyYWJsZQogICAgIG1fb3duZXIuZXZpY3RDYWNo
ZWRHZW5lcmF0ZWRJbWFnZShtX3NpemUpOwogfQogCi1QYXNzUmVmUHRyPEltYWdlPiBDU1NJbWFn
ZUdlbmVyYXRvclZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgSW50
U2l6ZSYgc2l6ZSkKK1Bhc3NSZWZQdHI8SW1hZ2U+IENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6Omlt
YWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiB7CiAg
ICAgc3dpdGNoIChjbGFzc1R5cGUoKSkgewogICAgIGNhc2UgQ2FudmFzQ2xhc3M6CkBAIC0xNDcs
NyArMTQ3LDcgQEAgYm9vbCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjppc0ZpeGVkU2l6ZSgpIGNv
bnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1JbnRTaXplIENTU0ltYWdlR2VuZXJhdG9yVmFs
dWU6OmZpeGVkU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKK0Zsb2F0U2l6ZSBD
U1NJbWFnZUdlbmVyYXRvclZhbHVlOjpmaXhlZFNpemUoY29uc3QgUmVuZGVyRWxlbWVudCogcmVu
ZGVyZXIpCiB7CiAgICAgc3dpdGNoIChjbGFzc1R5cGUoKSkgewogICAgIGNhc2UgQ2FudmFzQ2xh
c3M6CkBAIC0xNjUsNyArMTY1LDcgQEAgSW50U2l6ZSBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpm
aXhlZFNpemUoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCiAgICAgZGVmYXVsdDoKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQotICAgIHJldHVybiBJbnRTaXplKCk7
CisgICAgcmV0dXJuIEZsb2F0U2l6ZSgpOwogfQogCiBib29sIENTU0ltYWdlR2VuZXJhdG9yVmFs
dWU6OmlzUGVuZGluZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJh
dG9yVmFsdWUuaAppbmRleCA2YzkyMGZhLi5mNGFiNWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmgKQEAgLTI3LDcgKzI3LDggQEAKICNkZWZpbmUgQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZV9oCiAKICNpbmNsdWRlICJDU1NWYWx1ZS5oIgotI2luY2x1ZGUg
IkludFNpemVIYXNoLmgiCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSAiRmxvYXRT
aXplSGFzaC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVk
U2V0Lmg+CiAKQEAgLTQ3LDEwICs0OCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRDbGllbnQo
UmVuZGVyRWxlbWVudCopOwogICAgIHZvaWQgcmVtb3ZlQ2xpZW50KFJlbmRlckVsZW1lbnQqKTsK
IAotICAgIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRT
aXplJik7CisgICAgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0
IEZsb2F0U2l6ZSYpOwogCiAgICAgYm9vbCBpc0ZpeGVkU2l6ZSgpIGNvbnN0OwotICAgIEludFNp
emUgZml4ZWRTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqKTsKKyAgICBGbG9hdFNpemUgZml4ZWRT
aXplKGNvbnN0IFJlbmRlckVsZW1lbnQqKTsKIAogICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3Q7
CiAgICAgYm9vbCBrbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyRWxlbWVudCopIGNvbnN0OwpA
QCAtNjAsOCArNjEsOCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgQ1NTSW1hZ2VHZW5lcmF0
b3JWYWx1ZShDbGFzc1R5cGUpOwogCi0gICAgR2VuZXJhdGVkSW1hZ2UqIGNhY2hlZEltYWdlRm9y
U2l6ZShJbnRTaXplKTsKLSAgICB2b2lkIHNhdmVDYWNoZWRJbWFnZUZvclNpemUoSW50U2l6ZSwg
UGFzc1JlZlB0cjxHZW5lcmF0ZWRJbWFnZT4pOworICAgIEdlbmVyYXRlZEltYWdlKiBjYWNoZWRJ
bWFnZUZvclNpemUoRmxvYXRTaXplKTsKKyAgICB2b2lkIHNhdmVDYWNoZWRJbWFnZUZvclNpemUo
RmxvYXRTaXplLCBQYXNzUmVmUHRyPEdlbmVyYXRlZEltYWdlPik7CiAgICAgY29uc3QgSGFzaENv
dW50ZWRTZXQ8UmVuZGVyRWxlbWVudCo+JiBjbGllbnRzKCkgY29uc3QgeyByZXR1cm4gbV9jbGll
bnRzOyB9CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb25zIGZvciBDcm9zc2ZhZGUgYW5kIEZpbHRl
ci4KQEAgLTcxLDcgKzcyLDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBjbGFzcyBDYWNo
ZWRHZW5lcmF0ZWRJbWFnZSB7CiAgICAgcHVibGljOgotICAgICAgICBDYWNoZWRHZW5lcmF0ZWRJ
bWFnZShDU1NJbWFnZUdlbmVyYXRvclZhbHVlJiwgSW50U2l6ZSwgUGFzc1JlZlB0cjxHZW5lcmF0
ZWRJbWFnZT4pOworICAgICAgICBDYWNoZWRHZW5lcmF0ZWRJbWFnZShDU1NJbWFnZUdlbmVyYXRv
clZhbHVlJiwgRmxvYXRTaXplLCBQYXNzUmVmUHRyPEdlbmVyYXRlZEltYWdlPik7CiAgICAgICAg
IEdlbmVyYXRlZEltYWdlKiBpbWFnZSgpIHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KICAgICAg
ICAgdm9pZCBwdW50RXZpY3Rpb25UaW1lcigpIHsgbV9ldmljdGlvblRpbWVyLnJlc3RhcnQoKTsg
fQogCkBAIC03OSwxNiArODAsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBldmljdGlvblRp
bWVyRmlyZWQoRGVmZXJyYWJsZU9uZVNob3RUaW1lcjxDYWNoZWRHZW5lcmF0ZWRJbWFnZT4mKTsK
IAogICAgICAgICBDU1NJbWFnZUdlbmVyYXRvclZhbHVlJiBtX293bmVyOwotICAgICAgICBJbnRT
aXplIG1fc2l6ZTsKKyAgICAgICAgRmxvYXRTaXplIG1fc2l6ZTsKICAgICAgICAgUmVmUHRyPEdl
bmVyYXRlZEltYWdlPiBtX2ltYWdlOwogICAgICAgICBEZWZlcnJhYmxlT25lU2hvdFRpbWVyPENh
Y2hlZEdlbmVyYXRlZEltYWdlPiBtX2V2aWN0aW9uVGltZXI7CiAgICAgfTsKIAogICAgIGZyaWVu
ZCBjbGFzcyBDYWNoZWRHZW5lcmF0ZWRJbWFnZTsKLSAgICB2b2lkIGV2aWN0Q2FjaGVkR2VuZXJh
dGVkSW1hZ2UoSW50U2l6ZSk7CisgICAgdm9pZCBldmljdENhY2hlZEdlbmVyYXRlZEltYWdlKEZs
b2F0U2l6ZSk7CiAKICAgICBIYXNoQ291bnRlZFNldDxSZW5kZXJFbGVtZW50Kj4gbV9jbGllbnRz
OwotICAgIEhhc2hNYXA8SW50U2l6ZSwgc3RkOjp1bmlxdWVfcHRyPENhY2hlZEdlbmVyYXRlZElt
YWdlPj4gbV9pbWFnZXM7CisgICAgSGFzaE1hcDxGbG9hdFNpemUsIHN0ZDo6dW5pcXVlX3B0cjxD
YWNoZWRHZW5lcmF0ZWRJbWFnZT4+IG1faW1hZ2VzOwogfTsKIAogQ1NTX1ZBTFVFX1RZUEVfQ0FT
VFMoQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSwgaXNJbWFnZUdlbmVyYXRvclZhbHVlKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBmNjI4NGVlLi4w
YWNhYzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAK
QEAgLTIyNyw3ICsyMjcsNyBAQCBJbWFnZSogQ2FjaGVkSW1hZ2U6OmltYWdlRm9yUmVuZGVyZXIo
Y29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICByZXR1cm4gbV9pbWFnZS5nZXQoKTsK
IH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6c2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0
IENhY2hlZEltYWdlQ2xpZW50KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgY29udGFpbmVyU2l6
ZSwgZmxvYXQgY29udGFpbmVyWm9vbSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnNldENvbnRhaW5lclNp
emVGb3JSZW5kZXJlcihjb25zdCBDYWNoZWRJbWFnZUNsaWVudCogcmVuZGVyZXIsIGNvbnN0IExh
eW91dFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpvb20pCiB7CiAgICAgaWYg
KGNvbnRhaW5lclNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IDg2YWYwM2YuLjM0NjI5ZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC02Niw3ICs2Niw3IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgY2FuUmVuZGVyKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVy
ZXIsIGZsb2F0IG11bHRpcGxpZXIpIHsgcmV0dXJuICFlcnJvck9jY3VycmVkKCkgJiYgIWltYWdl
U2l6ZUZvclJlbmRlcmVyKHJlbmRlcmVyLCBtdWx0aXBsaWVyKS5pc0VtcHR5KCk7IH0KIAotICAg
IHZvaWQgc2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0IENhY2hlZEltYWdlQ2xpZW50
KiwgY29uc3QgSW50U2l6ZSYsIGZsb2F0KTsKKyAgICB2b2lkIHNldENvbnRhaW5lclNpemVGb3JS
ZW5kZXJlcihjb25zdCBDYWNoZWRJbWFnZUNsaWVudCosIGNvbnN0IExheW91dFNpemUmLCBmbG9h
dCk7CiAgICAgYm9vbCB1c2VzSW1hZ2VDb250YWluZXJTaXplKCkgY29uc3Q7CiAgICAgYm9vbCBp
bWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdDsKICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVI
ZWlnaHQoKSBjb25zdDsKQEAgLTEzMiw3ICsxMzIsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBh
ZGRJbmNyZW1lbnRhbERhdGFCdWZmZXIoUmVzb3VyY2VCdWZmZXIqKTsKIAotICAgIHR5cGVkZWYg
c3RkOjpwYWlyPEludFNpemUsIGZsb2F0PiBTaXplQW5kWm9vbTsKKyAgICB0eXBlZGVmIHN0ZDo6
cGFpcjxMYXlvdXRTaXplLCBmbG9hdD4gU2l6ZUFuZFpvb207CiAgICAgdHlwZWRlZiBIYXNoTWFw
PGNvbnN0IENhY2hlZEltYWdlQ2xpZW50KiwgU2l6ZUFuZFpvb20+IENvbnRhaW5lclNpemVSZXF1
ZXN0czsKICAgICBDb250YWluZXJTaXplUmVxdWVzdHMgbV9wZW5kaW5nQ29udGFpbmVyU2l6ZVJl
cXVlc3RzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9M
YXlvdXRTaXplLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRTaXpl
LmgKaW5kZXggZjJkMDllZS4uZjc3NjI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTGF5b3V0U2l6ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0xheW91dFNpemUuaApAQCAtMTkyLDYgKzE5MiwxNiBAQCBpbmxpbmUgTGF5b3V0
U2l6ZSByb3VuZGVkTGF5b3V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHMpCiAjZW5kaWYKIH0KIAor
aW5saW5lIEZsb2F0U2l6ZSBmbG9vcmVkRm9yUGFpbnRpbmcoY29uc3QgTGF5b3V0U2l6ZSYgc2l6
ZSwgZmxvYXQgcGl4ZWxTbmFwcGluZ0ZhY3RvcikKK3sKKyNpZiBFTkFCTEUoU1VCUElYRUxfTEFZ
T1VUKQorICAgIHJldHVybiBGbG9hdFNpemUoZmxvb3JUb0RldmljZVBpeGVsKHNpemUud2lkdGgo
KSwgcGl4ZWxTbmFwcGluZ0ZhY3RvciksIGZsb29yVG9EZXZpY2VQaXhlbChzaXplLmhlaWdodCgp
LCBwaXhlbFNuYXBwaW5nRmFjdG9yKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShwaXhlbFNu
YXBwaW5nRmFjdG9yKTsKKyAgICByZXR1cm4gRmxvYXRTaXplKHBvaW50KTsKKyNlbmRpZgorfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBMYXlvdXRTaXplX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJ
bWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHls
ZUltYWdlLmgKaW5kZXggZTU1NTA5My4uZGY0YTVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmgKQEAgLTUx
LDggKzUxLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdp
ZHRoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5pbWFnZUhhc1JlbGF0
aXZlV2lkdGgoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5pbWFnZUhhc1JlbGF0aXZlSGVp
Z2h0KCk7IH0KIAotICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBpbWFnZVNpemUoZmxvYXQgbXVsdGlw
bGllcikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5pbWFnZVNpemUobV9y
ZW5kZXJlciwgbXVsdGlwbGllcik7IH0KLSAgICB2aXJ0dWFsIExheW91dFNpemUgaW50cmluc2lj
U2l6ZShmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3N0eWxlSW1h
Z2UtPmltYWdlU2l6ZShtX3JlbmRlcmVyLCBtdWx0aXBsaWVyKTsgfQorICAgIHZpcnR1YWwgTGF5
b3V0U2l6ZSBpbWFnZVNpemUoZmxvYXQgbXVsdGlwbGllcikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gTGF5b3V0U2l6ZShtX3N0eWxlSW1hZ2UtPmltYWdlU2l6ZShtX3JlbmRlcmVyLCBtdWx0aXBs
aWVyKSk7IH0KKyAgICB2aXJ0dWFsIExheW91dFNpemUgaW50cmluc2ljU2l6ZShmbG9hdCBtdWx0
aXBsaWVyKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBMYXlvdXRTaXplKG1fc3R5bGVJbWFnZS0+
aW1hZ2VTaXplKG1fcmVuZGVyZXIsIG11bHRpcGxpZXIpKTsgfQogCiAgICAgdmlydHVhbCBXcmFw
cGVkSW1hZ2VQdHIgaW1hZ2VQdHIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3N0eWxlSW1h
Z2UtPmRhdGEoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdE1hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1h
cmtlci5jcHAKaW5kZXggMDRhYjc0NC4uZjRiMDRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcApAQCAtMTUxOSw3ICsxNTE5LDcgQEAgdm9pZCBS
ZW5kZXJMaXN0TWFya2VyOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiAgICAgdXBk
YXRlQ29udGVudCgpOwogCiAgICAgaWYgKGlzSW1hZ2UoKSkgewotICAgICAgICBMYXlvdXRTaXpl
IGltYWdlU2l6ZSA9IG1faW1hZ2UtPmltYWdlU2l6ZSh0aGlzLCBzdHlsZSgpLmVmZmVjdGl2ZVpv
b20oKSk7CisgICAgICAgIExheW91dFNpemUgaW1hZ2VTaXplID0gTGF5b3V0U2l6ZShtX2ltYWdl
LT5pbWFnZVNpemUodGhpcywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpKTsKICAgICAgICAgbV9t
aW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IHN0
eWxlKCkuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGltYWdlU2l6ZS53aWR0aCgpIDogaW1h
Z2VTaXplLmhlaWdodCgpOwogICAgICAgICBzZXRQcmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHko
ZmFsc2UpOwogICAgICAgICB1cGRhdGVNYXJnaW5zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAKaW5kZXggMDRkNTVlOS4uYzI2
NTNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2Fj
aGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNh
Y2hlZEltYWdlLmNwcApAQCAtNjEsNyArNjEsNyBAQCBib29sIFN0eWxlQ2FjaGVkSW1hZ2U6OmVy
cm9yT2NjdXJyZWQoKSBjb25zdAogICAgIHJldHVybiBtX2ltYWdlLT5lcnJvck9jY3VycmVkKCk7
CiB9CiAKLUxheW91dFNpemUgU3R5bGVDYWNoZWRJbWFnZTo6aW1hZ2VTaXplKGNvbnN0IFJlbmRl
ckVsZW1lbnQqIHJlbmRlcmVyLCBmbG9hdCBtdWx0aXBsaWVyKSBjb25zdAorRmxvYXRTaXplIFN0
eWxlQ2FjaGVkSW1hZ2U6OmltYWdlU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciwg
ZmxvYXQgbXVsdGlwbGllcikgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbWFnZS0+aW1hZ2VTaXpl
Rm9yUmVuZGVyZXIocmVuZGVyZXIsIG11bHRpcGxpZXIpOwogfQpAQCAtODYsOSArODYsOSBAQCBi
b29sIFN0eWxlQ2FjaGVkSW1hZ2U6OnVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSBjb25zdAogICAg
IHJldHVybiBtX2ltYWdlLT51c2VzSW1hZ2VDb250YWluZXJTaXplKCk7CiB9CiAKLXZvaWQgU3R5
bGVDYWNoZWRJbWFnZTo6c2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlckVs
ZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBpbWFnZUNvbnRhaW5lclNpemUsIGZsb2F0
IGltYWdlQ29udGFpbmVyWm9vbUZhY3RvcikKK3ZvaWQgU3R5bGVDYWNoZWRJbWFnZTo6c2V0Q29u
dGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25z
dCBGbG9hdFNpemUmIGltYWdlQ29udGFpbmVyU2l6ZSwgZmxvYXQgaW1hZ2VDb250YWluZXJab29t
RmFjdG9yKQogewotICAgIG1faW1hZ2UtPnNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihyZW5k
ZXJlciwgaW1hZ2VDb250YWluZXJTaXplLCBpbWFnZUNvbnRhaW5lclpvb21GYWN0b3IpOworICAg
IG1faW1hZ2UtPnNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihyZW5kZXJlciwgTGF5b3V0U2l6
ZShpbWFnZUNvbnRhaW5lclNpemUpLCBpbWFnZUNvbnRhaW5lclpvb21GYWN0b3IpOwogfQogCiB2
b2lkIFN0eWxlQ2FjaGVkSW1hZ2U6OmFkZENsaWVudChSZW5kZXJFbGVtZW50KiByZW5kZXJlcikK
QEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIFN0eWxlQ2FjaGVkSW1hZ2U6OnJlbW92ZUNsaWVudChS
ZW5kZXJFbGVtZW50KiByZW5kZXJlcikKICAgICBtX2ltYWdlLT5yZW1vdmVDbGllbnQocmVuZGVy
ZXIpOwogfQogCi1QYXNzUmVmUHRyPEltYWdlPiBTdHlsZUNhY2hlZEltYWdlOjppbWFnZShSZW5k
ZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYpIGNvbnN0CitQYXNzUmVmUHRyPElt
YWdlPiBTdHlsZUNhY2hlZEltYWdlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29u
c3QgRmxvYXRTaXplJikgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbWFnZS0+aW1hZ2VGb3JSZW5k
ZXJlcihyZW5kZXJlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlQ2FjaGVkSW1hZ2UuaAppbmRleCA5NTk0MWZjLi41MmMwYzBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmgKQEAgLTQ4LDE1
ICs0OCwxNSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBjYW5SZW5kZXIoY29uc3QgUmVu
ZGVyT2JqZWN0KiwgZmxvYXQgbXVsdGlwbGllcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBib29sIGlzTG9hZGVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGVycm9y
T2NjdXJyZWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIExheW91dFNpemUgaW1hZ2VT
aXplKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBpbWFnZVNpemUoY29uc3QgUmVuZGVyRWxlbWVudCos
IGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBpbWFn
ZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaW1h
Z2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBj
b21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhjb25zdCBSZW5kZXJFbGVtZW50KiwgTGVuZ3RoJiBp
bnRyaW5zaWNXaWR0aCwgTGVuZ3RoJiBpbnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmlu
c2ljUmF0aW8pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCB1c2VzSW1hZ2VDb250YWluZXJT
aXplKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbnRhaW5lclNpemVG
b3JSZW5kZXJlcihjb25zdCBSZW5kZXJFbGVtZW50KiwgY29uc3QgSW50U2l6ZSYsIGZsb2F0KSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNv
bnN0IFJlbmRlckVsZW1lbnQqLCBjb25zdCBGbG9hdFNpemUmLCBmbG9hdCkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGFkZENsaWVudChSZW5kZXJFbGVtZW50Kikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudChSZW5kZXJFbGVtZW50Kikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgSW50
U2l6ZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1h
Z2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgYm9vbCBrbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyRWxlbWVudCopIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgZXhwbGljaXQgU3R5bGVDYWNoZWRJbWFnZShDYWNoZWRJbWFnZSop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVk
SW1hZ2VTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVk
SW1hZ2VTZXQuY3BwCmluZGV4IGY5NWIyYzkuLjZjMWIwMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5jcHAKQEAgLTY5
LDkgKzY5LDkgQEAgYm9vbCBTdHlsZUNhY2hlZEltYWdlU2V0OjplcnJvck9jY3VycmVkKCkgY29u
c3QKICAgICByZXR1cm4gbV9iZXN0Rml0SW1hZ2UtPmVycm9yT2NjdXJyZWQoKTsKIH0KIAotTGF5
b3V0U2l6ZSBTdHlsZUNhY2hlZEltYWdlU2V0OjppbWFnZVNpemUoY29uc3QgUmVuZGVyRWxlbWVu
dCogcmVuZGVyZXIsIGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0CitGbG9hdFNpemUgU3R5bGVDYWNo
ZWRJbWFnZVNldDo6aW1hZ2VTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBmbG9h
dCBtdWx0aXBsaWVyKSBjb25zdAogewotICAgIExheW91dFNpemUgc2NhbGVkSW1hZ2VTaXplID0g
bV9iZXN0Rml0SW1hZ2UtPmltYWdlU2l6ZUZvclJlbmRlcmVyKHJlbmRlcmVyLCBtdWx0aXBsaWVy
KTsKKyAgICBGbG9hdFNpemUgc2NhbGVkSW1hZ2VTaXplID0gbV9iZXN0Rml0SW1hZ2UtPmltYWdl
U2l6ZUZvclJlbmRlcmVyKHJlbmRlcmVyLCBtdWx0aXBsaWVyKTsKICAgICBzY2FsZWRJbWFnZVNp
emUuc2NhbGUoMSAvIG1faW1hZ2VTY2FsZUZhY3Rvcik7CiAgICAgcmV0dXJuIHNjYWxlZEltYWdl
U2l6ZTsKIH0KQEAgLTk2LDkgKzk2LDkgQEAgYm9vbCBTdHlsZUNhY2hlZEltYWdlU2V0Ojp1c2Vz
SW1hZ2VDb250YWluZXJTaXplKCkgY29uc3QKICAgICByZXR1cm4gbV9iZXN0Rml0SW1hZ2UtPnVz
ZXNJbWFnZUNvbnRhaW5lclNpemUoKTsKIH0KIAotdm9pZCBTdHlsZUNhY2hlZEltYWdlU2V0Ojpz
ZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIs
IGNvbnN0IEludFNpemUmIGltYWdlQ29udGFpbmVyU2l6ZSwgZmxvYXQgaW1hZ2VDb250YWluZXJa
b29tRmFjdG9yKQordm9pZCBTdHlsZUNhY2hlZEltYWdlU2V0OjpzZXRDb250YWluZXJTaXplRm9y
UmVuZGVyZXIoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEZsb2F0U2l6ZSYg
aW1hZ2VDb250YWluZXJTaXplLCBmbG9hdCBpbWFnZUNvbnRhaW5lclpvb21GYWN0b3IpCiB7Ci0g
ICAgbV9iZXN0Rml0SW1hZ2UtPnNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihyZW5kZXJlciwg
aW1hZ2VDb250YWluZXJTaXplLCBpbWFnZUNvbnRhaW5lclpvb21GYWN0b3IpOworICAgIG1fYmVz
dEZpdEltYWdlLT5zZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIocmVuZGVyZXIsIExheW91dFNp
emUoaW1hZ2VDb250YWluZXJTaXplKSwgaW1hZ2VDb250YWluZXJab29tRmFjdG9yKTsKIH0KIAog
dm9pZCBTdHlsZUNhY2hlZEltYWdlU2V0OjphZGRDbGllbnQoUmVuZGVyRWxlbWVudCogcmVuZGVy
ZXIpCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBTdHlsZUNhY2hlZEltYWdlU2V0OjpyZW1vdmVD
bGllbnQoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCiAgICAgbV9iZXN0Rml0SW1hZ2UtPnJlbW92
ZUNsaWVudChyZW5kZXJlcik7CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2U+IFN0eWxlQ2FjaGVkSW1h
Z2VTZXQ6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJikgY29u
c3QKK1Bhc3NSZWZQdHI8SW1hZ2U+IFN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OmltYWdlKFJlbmRlckVs
ZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpemUmKSBjb25zdAogewogICAgIHJldHVybiBt
X2Jlc3RGaXRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuaAppbmRl
eCBjZDljZjVlLi40NGM5ZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmgKQEAgLTY0LDE1ICs2NCwxNSBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgYm9vbCBjYW5SZW5kZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgZmxvYXQg
bXVsdGlwbGllcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGlzTG9hZGVkKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIExheW91dFNpemUgaW1hZ2VTaXplKGNvbnN0IFJlbmRlckVs
ZW1lbnQqLCBmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEZs
b2F0U2l6ZSBpbWFnZVNpemUoY29uc3QgUmVuZGVyRWxlbWVudCosIGZsb2F0IG11bHRpcGxpZXIp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgo
KSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdo
dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljRGlt
ZW5zaW9ucyhjb25zdCBSZW5kZXJFbGVtZW50KiwgTGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwgTGVu
Z3RoJiBpbnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgYm9vbCB1c2VzSW1hZ2VDb250YWluZXJTaXplKCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihjb25zdCBS
ZW5kZXJFbGVtZW50KiwgY29uc3QgSW50U2l6ZSYsIGZsb2F0KSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQq
LCBjb25zdCBGbG9hdFNpemUmLCBmbG9hdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGFk
ZENsaWVudChSZW5kZXJFbGVtZW50Kikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZUNsaWVudChSZW5kZXJFbGVtZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRy
PEltYWdlPiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCos
IGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgZmxvYXQgaW1h
Z2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faW1hZ2VTY2FsZUZhY3Rv
cjsgfQogICAgIHZpcnR1YWwgYm9vbCBrbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyRWxlbWVu
dCopIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHAKaW5kZXggNmI1OWZlNy4uMGY3Zjc0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVk
SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVy
YXRlZEltYWdlLmNwcApAQCAtNDIsMjQgKzQyLDI1IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IFN0
eWxlR2VuZXJhdGVkSW1hZ2U6OmNzc1ZhbHVlKCkgY29uc3QKICAgICByZXR1cm4gJmNvbnN0X2Nh
c3Q8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSY+KG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS5nZXQoKSk7
CiB9CiAKLUxheW91dFNpemUgU3R5bGVHZW5lcmF0ZWRJbWFnZTo6aW1hZ2VTaXplKGNvbnN0IFJl
bmRlckVsZW1lbnQqIHJlbmRlcmVyLCBmbG9hdCBtdWx0aXBsaWVyKSBjb25zdAorRmxvYXRTaXpl
IFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmltYWdlU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5k
ZXJlciwgZmxvYXQgbXVsdGlwbGllcikgY29uc3QKIHsKICAgICBpZiAobV9maXhlZFNpemUpIHsK
LSAgICAgICAgSW50U2l6ZSBmaXhlZFNpemUgPSBjb25zdF9jYXN0PENTU0ltYWdlR2VuZXJhdG9y
VmFsdWUmPihtX2ltYWdlR2VuZXJhdG9yVmFsdWUuZ2V0KCkpLmZpeGVkU2l6ZShyZW5kZXJlcik7
CisgICAgICAgIEZsb2F0U2l6ZSBmaXhlZFNpemUgPSBjb25zdF9jYXN0PENTU0ltYWdlR2VuZXJh
dG9yVmFsdWUmPihtX2ltYWdlR2VuZXJhdG9yVmFsdWUuZ2V0KCkpLmZpeGVkU2l6ZShyZW5kZXJl
cik7CiAgICAgICAgIGlmIChtdWx0aXBsaWVyID09IDEuMGYpCiAgICAgICAgICAgICByZXR1cm4g
Zml4ZWRTaXplOwogCi0gICAgICAgIExheW91dFVuaXQgd2lkdGggPSBmaXhlZFNpemUud2lkdGgo
KSAqIG11bHRpcGxpZXI7Ci0gICAgICAgIExheW91dFVuaXQgaGVpZ2h0ID0gZml4ZWRTaXplLmhl
aWdodCgpICogbXVsdGlwbGllcjsKKyAgICAgICAgZmxvYXQgd2lkdGggPSBmaXhlZFNpemUud2lk
dGgoKSAqIG11bHRpcGxpZXI7CisgICAgICAgIGZsb2F0IGhlaWdodCA9IGZpeGVkU2l6ZS5oZWln
aHQoKSAqIG11bHRpcGxpZXI7CiAKLSAgICAgICAgLy8gRG9uJ3QgbGV0IGltYWdlcyB0aGF0IGhh
dmUgYSB3aWR0aC9oZWlnaHQgPj0gMSBzaHJpbmsgYmVsb3cgMSB3aGVuIHpvb21lZC4KKyAgICAg
ICAgLy8gRG9uJ3QgbGV0IGltYWdlcyB0aGF0IGhhdmUgYSB3aWR0aC9oZWlnaHQgPj0gMSBzaHJp
bmsgYmVsb3cgMSBkZXZpY2UgcGl4ZWwgd2hlbiB6b29tZWQuCisgICAgICAgIGZsb2F0IGRldmlj
ZVNjYWxlRmFjdG9yID0gcmVuZGVyZXIgPyByZW5kZXJlci0+ZG9jdW1lbnQoKS5kZXZpY2VTY2Fs
ZUZhY3RvcigpIDogMTsKICAgICAgICAgaWYgKGZpeGVkU2l6ZS53aWR0aCgpID4gMCkKLSAgICAg
ICAgICAgIHdpZHRoID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oMSwgd2lkdGgpOworICAgICAgICAg
ICAgd2lkdGggPSBzdGQ6Om1heDxmbG9hdD4oMSAvIGRldmljZVNjYWxlRmFjdG9yLCB3aWR0aCk7
CiAKICAgICAgICAgaWYgKGZpeGVkU2l6ZS5oZWlnaHQoKSA+IDApCi0gICAgICAgICAgICBoZWln
aHQgPSBzdGQ6Om1heDxMYXlvdXRVbml0PigxLCBoZWlnaHQpOworICAgICAgICAgICAgaGVpZ2h0
ID0gc3RkOjptYXg8ZmxvYXQ+KDEgLyBkZXZpY2VTY2FsZUZhY3RvciwgaGVpZ2h0KTsKIAotICAg
ICAgICByZXR1cm4gTGF5b3V0U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgcmV0dXJuIEZs
b2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIG1fY29udGFp
bmVyU2l6ZTsKQEAgLTY3LDggKzY4LDggQEAgTGF5b3V0U2l6ZSBTdHlsZUdlbmVyYXRlZEltYWdl
OjppbWFnZVNpemUoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGZsb2F0IG0KIAogdm9p
ZCBTdHlsZUdlbmVyYXRlZEltYWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhjb25zdCBS
ZW5kZXJFbGVtZW50KiByZW5kZXJlciwgTGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwgTGVuZ3RoJiBp
bnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pCiB7Ci0gICAgLy8gQXQg
YSB6b29tIGxldmVsIG9mIDEgdGhlIGltYWdlIGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSBhbiBpbnRl
Z2VyIHNpemUuCi0gICAgSW50U2l6ZSBzaXplID0gZmxvb3JlZEludFNpemUoaW1hZ2VTaXplKHJl
bmRlcmVyLCAxKSk7CisgICAgLy8gQXQgYSB6b29tIGxldmVsIG9mIDEgdGhlIGltYWdlIGlzIGd1
YXJhbnRlZWQgdG8gaGF2ZSBhIGRldmljZSBwaXhlbCBzaXplLgorICAgIEZsb2F0U2l6ZSBzaXpl
ID0gZmxvb3JlZEZvclBhaW50aW5nKExheW91dFNpemUoaW1hZ2VTaXplKHJlbmRlcmVyLCAxKSks
IHJlbmRlcmVyID8gcmVuZGVyZXItPmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSA6IDEp
OwogICAgIGludHJpbnNpY1dpZHRoID0gTGVuZ3RoKHNpemUud2lkdGgoKSwgRml4ZWQpOwogICAg
IGludHJpbnNpY0hlaWdodCA9IExlbmd0aChzaXplLmhlaWdodCgpLCBGaXhlZCk7CiAgICAgaW50
cmluc2ljUmF0aW8gPSBzaXplOwpAQCAtODQsNyArODUsNyBAQCB2b2lkIFN0eWxlR2VuZXJhdGVk
SW1hZ2U6OnJlbW92ZUNsaWVudChSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKICAgICBtX2ltYWdl
R2VuZXJhdG9yVmFsdWUtPnJlbW92ZUNsaWVudChyZW5kZXJlcik7CiB9CiAKLVBhc3NSZWZQdHI8
SW1hZ2U+IFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
LCBjb25zdCBJbnRTaXplJiBzaXplKSBjb25zdAorUGFzc1JlZlB0cjxJbWFnZT4gU3R5bGVHZW5l
cmF0ZWRJbWFnZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSkgY29uc3QKIHsKICAgICByZXR1cm4gY29uc3RfY2FzdDxDU1NJbWFnZUdlbmVyYXRv
clZhbHVlJj4obV9pbWFnZUdlbmVyYXRvclZhbHVlLmdldCgpKS5pbWFnZShyZW5kZXJlciwgc2l6
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVH
ZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2Vu
ZXJhdGVkSW1hZ2UuaAppbmRleCA0MmE3MDVjLi40ZGJlMWVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmgKQEAgLTQ1LDIx
ICs0NSwyMSBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBj
c3NWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBMYXlvdXRTaXplIGltYWdl
U2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiwgZmxvYXQgbXVsdGlwbGllcikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBGbG9hdFNpemUgaW1hZ2VTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQq
LCBmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaW1h
Z2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fZml4ZWRTaXpl
OyB9CiAgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAhbV9maXhlZFNpemU7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUlu
dHJpbnNpY0RpbWVuc2lvbnMoY29uc3QgUmVuZGVyRWxlbWVudCosIExlbmd0aCYgaW50cmluc2lj
V2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlv
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2ZpeGVkU2l6ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyRWxlbWVudCosIGNvbnN0IElu
dFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0KSBvdmVycmlkZSB7IG1fY29udGFpbmVyU2l6ZSA9
IGNvbnRhaW5lclNpemU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFpbmVyU2l6ZUZvclJl
bmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBjb25zdCBGbG9hdFNpemUmIGNvbnRhaW5lclNp
emUsIGZsb2F0KSBvdmVycmlkZSB7IG1fY29udGFpbmVyU2l6ZSA9IGNvbnRhaW5lclNpemU7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2xpZW50KFJlbmRlckVsZW1lbnQqKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2xpZW50KFJlbmRlckVsZW1lbnQqKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBJ
bnRTaXplJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEltYWdlPiBp
bWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgRmxvYXRTaXplJikgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50KikgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICBTdHlsZUdlbmVyYXRlZEltYWdlKFBhc3NSZWY8Q1NTSW1hZ2VH
ZW5lcmF0b3JWYWx1ZT4pOwogICAgIAogICAgIFJlZjxDU1NJbWFnZUdlbmVyYXRvclZhbHVlPiBt
X2ltYWdlR2VuZXJhdG9yVmFsdWU7Ci0gICAgSW50U2l6ZSBtX2NvbnRhaW5lclNpemU7CisgICAg
RmxvYXRTaXplIG1fY29udGFpbmVyU2l6ZTsKICAgICBib29sIG1fZml4ZWRTaXplOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW1hZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUltYWdlLmgKaW5kZXggNzNjZmRi
OS4uYzBjYzdmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbWFn
ZS5oCkBAIC0yNSw5ICsyNSw4IEBACiAjZGVmaW5lIFN0eWxlSW1hZ2VfaAogCiAjaW5jbHVkZSAi
Q1NTVmFsdWUuaCIKKyNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJJbWFnZS5oIgot
I2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJMYXlvdXRTaXplLmgiCiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KQEAgLTU1LDE1ICs1NCwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGNhblJlbmRlcihjb25zdCBSZW5kZXJPYmplY3QqLCBmbG9hdCAvKm11bHRpcGxpZXIqLykg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRlZCgpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBMYXlvdXRTaXplIGltYWdlU2l6ZShjb25z
dCBSZW5kZXJFbGVtZW50KiwgZmxvYXQgbXVsdGlwbGllcikgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgRmxvYXRTaXplIGltYWdlU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiwgZmxvYXQgbXVsdGlw
bGllcikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljRGltZW5z
aW9ucyhjb25zdCBSZW5kZXJFbGVtZW50KiwgTGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwgTGVuZ3Ro
JiBpbnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCB1c2VzSW1hZ2VDb250YWluZXJTaXplKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyRWxlbWVudCosIGNvbnN0
IEludFNpemUmLCBmbG9hdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250YWluZXJTaXpl
Rm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFkZENsaWVudChSZW5kZXJFbGVtZW50KikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnQoUmVuZGVyRWxlbWVudCopID0gMDsKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRT
aXplJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVu
ZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFdy
YXBwZWRJbWFnZVB0ciBkYXRhKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgZmxvYXQgaW1hZ2VT
Y2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIDE7IH0KICAgICB2aXJ0dWFsIGJvb2wga25vd25U
b0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5oCmluZGV4IDI1ZjQz
MTcuLmI5NTQ4NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVBlbmRpbmdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVBlbmRpbmdJbWFnZS5oCkBAIC02MCwxNiArNjAsMTYgQEAgcHJpdmF0ZToKIAogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gY3NzVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX3ZhbHVlOyB9CiAgICAgCi0gICAgdmlydHVhbCBMYXlvdXRTaXplIGltYWdlU2l6ZShj
b25zdCBSZW5kZXJFbGVtZW50KiwgZmxvYXQgLyptdWx0aXBsaWVyKi8pIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIExheW91dFNpemUoKTsgfQorICAgIHZpcnR1YWwgRmxvYXRTaXplIGltYWdlU2l6
ZShjb25zdCBSZW5kZXJFbGVtZW50KiwgZmxvYXQgLyptdWx0aXBsaWVyKi8pIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIEZsb2F0U2l6ZSgpOyB9CiAgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVs
YXRpdmVXaWR0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhjb25z
dCBSZW5kZXJFbGVtZW50KiwgTGVuZ3RoJiAvKiBpbnRyaW5zaWNXaWR0aCAqLyAsIExlbmd0aCYg
LyogaW50cmluc2ljSGVpZ2h0ICovLCBGbG9hdFNpemUmIC8qIGludHJpbnNpY1JhdGlvICovKSB7
IH0KICAgICB2aXJ0dWFsIGJvb2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbnRhaW5lclNpemVG
b3JSZW5kZXJlcihjb25zdCBSZW5kZXJFbGVtZW50KiwgY29uc3QgSW50U2l6ZSYsIGZsb2F0KSBv
dmVycmlkZSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVy
KGNvbnN0IFJlbmRlckVsZW1lbnQqLCBjb25zdCBGbG9hdFNpemUmLCBmbG9hdCkgb3ZlcnJpZGUg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGFkZENsaWVudChSZW5kZXJFbGVtZW50Kikgb3ZlcnJpZGUg
eyB9CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudChSZW5kZXJFbGVtZW50Kikgb3ZlcnJp
ZGUgeyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVsZW1l
bnQqLCBjb25zdCBJbnRTaXplJikgY29uc3Qgb3ZlcnJpZGUKKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8SW1hZ2U+IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBGbG9hdFNpemUmKSBjb25zdCBv
dmVycmlkZQogICAgIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2Fj
aGUuY3BwCmluZGV4IGRiNWIwNmIuLjc0ODY2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJMYXlvdXRTaXplLmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jvb3QuaCIKICNpbmNsdWRlICJTVkdJbWFnZS5oIgpA
QCAtNTAsNyArNTEsNyBAQCB2b2lkIFNWR0ltYWdlQ2FjaGU6OnJlbW92ZUNsaWVudEZyb21DYWNo
ZShjb25zdCBDYWNoZWRJbWFnZUNsaWVudCogY2xpZW50KQogICAgIG1faW1hZ2VGb3JDb250YWlu
ZXJNYXAucmVtb3ZlKGNsaWVudCk7CiB9CiAKLXZvaWQgU1ZHSW1hZ2VDYWNoZTo6c2V0Q29udGFp
bmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0IENhY2hlZEltYWdlQ2xpZW50KiBjbGllbnQsIGNvbnN0
IEludFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpvb20pCit2b2lkIFNWR0lt
YWdlQ2FjaGU6OnNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihjb25zdCBDYWNoZWRJbWFnZUNs
aWVudCogY2xpZW50LCBjb25zdCBMYXlvdXRTaXplJiBjb250YWluZXJTaXplLCBmbG9hdCBjb250
YWluZXJab29tKQogewogICAgIEFTU0VSVChjbGllbnQpOwogICAgIEFTU0VSVCghY29udGFpbmVy
U2l6ZS5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNh
Y2hlLmgKaW5kZXggZjg2MGNiZC4uMDVmNTIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2VDYWNoZS5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIENhY2hlZEltYWdlOwogY2xhc3MgQ2FjaGVkSW1hZ2VDbGllbnQ7CiBjbGFzcyBJ
bWFnZUJ1ZmZlcjsKK2NsYXNzIExheW91dFNpemU7CiBjbGFzcyBTVkdJbWFnZTsKIGNsYXNzIFNW
R0ltYWdlRm9yQ29udGFpbmVyOwogY2xhc3MgUmVuZGVyT2JqZWN0OwpAQCAtNDMsNyArNDQsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHJlbW92ZUNsaWVudEZyb21DYWNoZShjb25zdCBDYWNoZWRJ
bWFnZUNsaWVudCopOwogCi0gICAgdm9pZCBzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29u
c3QgQ2FjaGVkSW1hZ2VDbGllbnQqLCBjb25zdCBJbnRTaXplJiwgZmxvYXQpOworICAgIHZvaWQg
c2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0IENhY2hlZEltYWdlQ2xpZW50KiwgY29u
c3QgTGF5b3V0U2l6ZSYsIGZsb2F0KTsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplRm9yUmVuZGVy
ZXIoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAKICAgICBJbWFnZSogaW1hZ2VGb3JSZW5k
ZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228308</attachid>
            <date>2014-04-01 12:43:42 -0700</date>
            <delta_ts>2014-04-01 12:56:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130659-20140401124324.patch</filename>
            <type>text/plain</type>
            <size>52072</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2NTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM0OTRkYzM1OTA5YjNk
ZWZmYmRjM2EyYzg0ODNiZWE1Y2JjNzljYi4uMDczMzYwY2YyZTFiNTBjYWU2OTU2NWE1N2U5YjM4
N2MxNTE3MmJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE0LTA0LTAxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VicGl4ZWwgcmVuZGVyaW5n
OiBUcmFuc2l0aW9uIGNsYXNzIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUvY2xhc3MgU3R5bGVJbWFn
ZSAoYW5kIGl0cyBkZXBlbmRlbmNpZXMpIGZyb20gCisgICAgICAgIEludFNpemUgdG8gRmxvYXRT
aXplIHRvIGVuYWJsZSBzdWJwaXhlbCBzaXplZCAoZ2VuZXJhdGVkKWltYWdlcy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDY1OQorCisgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlciBhbmQgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBU
aGlzIGlzIGluIHByZXBhcmF0aW9uIHRvIHN1cHBvcnQgc3VicGl4ZWwgcG9zaXRpb25lZC9zaXpl
ZCBiYWNrZ3JvdW5kIGltYWdlcy4gR2VuZXJhdGVkIGltYWdlcworICAgICAgICBuZWVkcyB0byBi
ZSBhYmxlIHRvIHNpemVkIG9uIGRldmljZSBwaXhlbHMuCisKKyAgICAgICAgTm8gY2hhbmdlIGlu
IGJlaGF2aW9yLgorCisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoK
KyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9D
U1NDYW52YXNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYW52YXNWYWx1ZTo6Zml4
ZWRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbnZhc1ZhbHVlOjppbWFnZSk6CisgICAg
ICAgICogY3NzL0NTU0NhbnZhc1ZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFkZVZh
bHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjpmaXhlZFNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Jvc3NmYWRlVmFsdWU6OmltYWdlKToKKyAgICAgICAg
KiBjc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTRmlsdGVySW1hZ2VW
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXJJbWFnZVZhbHVlOjpmaXhlZFNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6aW1hZ2UpOgorICAg
ICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0dyYWRp
ZW50VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6aW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6cG9zaXRpb25Gcm9tVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTR3JhZGllbnRWYWx1ZTo6Y29tcHV0ZUVuZFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OmVuZFBvaW50c0Zyb21BbmdsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NMaW5lYXJHcmFkaWVu
dFZhbHVlOjpjcmVhdGVHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NSYWRpYWxHcmFk
aWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudCk6CisgICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFs
dWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6OmZpeGVkU2l6ZSk6Cisg
ICAgICAgICogY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Y2FjaGVkSW1hZ2VGb3JTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnNhdmVDYWNoZWRJbWFnZUZvclNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6ZXZpY3RDYWNoZWRH
ZW5lcmF0ZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVl
OjpDYWNoZWRHZW5lcmF0ZWRJbWFnZTo6Q2FjaGVkR2VuZXJhdGVkSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Zml4ZWRTaXplKToKKyAgICAgICAgKiBjc3MvQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6c2V0Q29udGFpbmVyU2l6ZUZv
clJlbmRlcmVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemVIYXNoLmg6IEFkZGVkLgorICAgICAgICAo
V1RGOjpGbG9hdEhhc2g8V2ViQ29yZTo6RmxvYXRTaXplPjo6aGFzaCk6CisgICAgICAgIChXVEY6
OkZsb2F0SGFzaDxXZWJDb3JlOjpGbG9hdFNpemU+OjplcXVhbCk6CisgICAgICAgIChXVEY6Okhh
c2hUcmFpdHM8V2ViQ29yZTo6RmxvYXRTaXplPjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAg
ICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJDb3JlOjpGbG9hdFNpemU+Ojppc0RlbGV0ZWRWYWx1
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0U2l6ZS5oOgorICAgICAgICAo
V2ViQ29yZTo6Zmxvb3JlZEZvclBhaW50aW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
SW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlz
dE1hcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpjb21wdXRl
UHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxl
Q2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDYWNoZWRJbWFnZTo6aW1h
Z2VTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ2FjaGVkSW1hZ2U6OnNldENvbnRhaW5l
clNpemVGb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hlZEltYWdlOjpp
bWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZUNhY2hlZEltYWdlU2V0OjppbWFnZVNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVDYWNoZWRJbWFnZVNldDo6c2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OmltYWdlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlR2VuZXJhdGVkSW1hZ2U6OmltYWdlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUdl
bmVyYXRlZEltYWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUdlbmVyYXRlZEltYWdlOjppbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5
bGVJbWFnZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5o
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ltYWdlQ2FjaGU6OnNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcik6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaDoKKwogMjAxNC0wNC0wMSAgSmFtZXMg
Q3JhaWcgIDxqY3JhaWdAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjphcmlhTGl2ZVJlZ2lvbkF0b21pYygpIHNob3VsZCBkZWZhdWx0IHRvIHRydWUg
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmlu
ZGV4IGQwZjVlYTgzOWUwMzljOGY3MWJhMjUwNDBkMDUxNTgwZDVkZWVlYjQuLjJlY2U4N2U3ZDBl
OTE4NWVkZmVjZTBlZjk4ZjRhNzI3NTI5ODlkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtMTkzNTAsNiArMTkzNTAsNyBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcRmxvYXRSZWN0LmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xGbG9hdFJvdW5k
ZWRSZWN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1xGbG9hdFNpemUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXEZsb2F0U2l6ZUhhc2guaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXGdyYXBoaWNzXEZvbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXGdyYXBoaWNzXEZvbnRDYWNoZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccGxhdGZvcm1cZ3JhcGhpY3NcRm9udERhdGEuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCBlYjIz
ODJmNmFhNGI3MjRiMGQzNjkxYzgyMjQ2MDg4NmRhMzMzYzdkLi4wOTI4YWI4YTUyY2FjZWEwNzYz
YmJiYzc5YTczNTZlMDE1MjNjOGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC0xMjc3Myw2ICsxMjc3Myw5
IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xGbG9hdFNp
emUuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzPC9GaWx0ZXI+CiAgICAgPC9D
bEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xG
bG9hdFNpemVIYXNoLmgiPgorICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljczwvRmlsdGVy
PgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcRm9udC5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8L0ZpbHRl
cj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3NTIxOTczNjY1ZTYzZTQwMDcxNzE1YTlmNjliYmMx
N2UxMjY3MGFmLi5iM2FlYjgyMjIwMWNhN2I2ZGRkOGU5MDkwMmRmZGUxYzk1YzMzNzI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0yMDAxLDYgKzIwMDEsNyBAQAogCQk1N0NGNDk3NTE0RUUzNkQ3MDBFQ0ZGMTQgLyogSW5zZXJ0
aW9uUG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU3Q0Y0OTczMTRFRTM2RDcwMEVDRkYxNCAvKiBJbnNlcnRpb25Qb2ludC5oICovOyB9OwogCQk1
ODk1NTZFRDE4RDRBNDQwMDA3NjRCMDMgLyogQm9yZGVyRWRnZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTg5NTU2RUMxOEQ0QTQ0MDAwNzY0QjAzIC8q
IEJvcmRlckVkZ2UuaCAqLzsgfTsKIAkJNThBRUUyRjQxOEQ0QkNDRjAwMjJFN0ZFIC8qIEJvcmRl
ckVkZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NThBRUUyRjMxOEQ0QkNDRjAwMjJFN0ZFIC8qIEJvcmRlckVkZ2UuY3BwICovOyB9OworCQk1OENE
MzVDQjE4RUI0QzM5MDBCOUYzQUMgLyogRmxvYXRTaXplSGFzaC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNThDRDM1Q0ExOEVCNEMzOTAwQjlGM0FDIC8q
IEZsb2F0U2l6ZUhhc2guaCAqLzsgfTsKIAkJNTkwNUFEQkYxMzAyRjNDRTAwRjExNkRGIC8qIFhN
TFRyZWVWaWV3ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTkwNUFEQkQxMzAyRjNDRTAwRjExNkRGIC8qIFhNTFRyZWVWaWV3ZXIuY3BwICovOyB9
OwogCQk1OTA1QURDMDEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTkwNUFEQkUxMzAyRjNDRTAw
RjExNkRGIC8qIFhNTFRyZWVWaWV3ZXIuaCAqLzsgfTsKIAkJNTkwRTFCNDkxMUU0RUY0QjAwNjlG
Nzg0IC8qIERldmljZU9yaWVudGF0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTkwRTFCNDgxMUU0RUY0QjAwNjlGNzg0IC8qIERldmljZU9y
aWVudGF0aW9uRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC04OTk0LDYgKzg5OTUsNyBAQAogCQk1N0NGNDk3MzE0RUUzNkQ3MDBFQ0ZGMTQg
LyogSW5zZXJ0aW9uUG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5z
ZXJ0aW9uUG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTg5NTU2RUMxOEQ0
QTQ0MDAwNzY0QjAzIC8qIEJvcmRlckVkZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQm9yZGVyRWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OEFFRTJG
MzE4RDRCQ0NGMDAyMkU3RkUgLyogQm9yZGVyRWRnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBCb3JkZXJFZGdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNThDRDM1Q0ExOEVCNEMzOTAwQjlGM0FDIC8qIEZsb2F0U2l6ZUhhc2guaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxvYXRTaXplSGFzaC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1OTA1QURCRDEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYTUxUcmVlVmlld2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTkwNUFEQkUxMzAyRjNDRTAwRjEx
NkRGIC8qIFhNTFRyZWVWaWV3ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
WE1MVHJlZVZpZXdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OTBFMUI0ODEx
RTRFRjRCMDA2OUY3ODQgLyogRGV2aWNlT3JpZW50YXRpb25EYXRhLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERldmljZU9yaWVudGF0aW9uRGF0YS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjAwMzEsNiArMjAwMzMsNyBAQAogCQkJCTZFMEU1NjlBMTgzQkZG
RTYwMEUwRThENSAvKiBGbG9hdFJvdW5kZWRSZWN0LmggKi8sCiAJCQkJQjI3NTM1M0UwQjA1Mzgx
NDAwMkNFNjRGIC8qIEZsb2F0U2l6ZS5jcHAgKi8sCiAJCQkJQjI3NTM1M0YwQjA1MzgxNDAwMkNF
NjRGIC8qIEZsb2F0U2l6ZS5oICovLAorCQkJCTU4Q0QzNUNBMThFQjRDMzkwMEI5RjNBQyAvKiBG
bG9hdFNpemVIYXNoLmggKi8sCiAJCQkJQjJDM0RBNEYwRDAwNkNENjAwRUY2RjI2IC8qIEZvbnQu
Y3BwICovLAogCQkJCUIyQzNEQTUwMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250LmggKi8sCiAJCQkJ
QkNCOTJENEUxMjkzNTUwQjAwQzgzODdGIC8qIEZvbnRCYXNlbGluZS5oICovLApAQCAtMjUxNjks
NiArMjUxNzIsNyBAQAogCQkJCUZENDVBOTU4MTc1RDQxNEMwMEMyMUVDOCAvKiBSZWN0YW5nbGVT
aGFwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyRUEzQkIxNTg1Q0Y1NTAwNEZBQTI2IC8qIFJl
ZkNvdW50ZWRTdXBwbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5ODMxQUU0QTE1NDIyNUM5
MDBGRTI2NDQgLyogUmVmZXJyZXJQb2xpY3kuaCBpbiBIZWFkZXJzICovLAorCQkJCTU4Q0QzNUNC
MThFQjRDMzkwMEI5RjNBQyAvKiBGbG9hdFNpemVIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0FCNDE4MjEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk2
Q0RERThEMDE3NzBCQjIyMDAxNkUwNzIgLyogUmVnaW9uT3ZlcnNldFN0YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyNkI5OTk4RjE4MDNBRTcyMDBEMDExMjEgLyogUmVnaXN0ZXJBbGxvY2F0b3Iu
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZh
c1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5jcHAKaW5kZXgg
NWU0MWM4OGEzNTJmY2ZjYWJlMjQ4MWVkZTNhNzY0MzBiMDBhMDcwYi4uNDMxMTA3MTI4YTQ3ZTFj
NmIyMjQ5NzI0NmFlZDk1OGIwOWIwYmRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NhbnZhc1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFs
dWUuY3BwCkBAIC02NiwxMSArNjYsMTEgQEAgdm9pZCBDU1NDYW52YXNWYWx1ZTo6Y2FudmFzRGVz
dHJveWVkKEhUTUxDYW52YXNFbGVtZW50JiBlbGVtZW50KQogICAgIG1fZWxlbWVudCA9IG51bGxw
dHI7CiB9CiAKLUludFNpemUgQ1NTQ2FudmFzVmFsdWU6OmZpeGVkU2l6ZShjb25zdCBSZW5kZXJF
bGVtZW50KiByZW5kZXJlcikKK0Zsb2F0U2l6ZSBDU1NDYW52YXNWYWx1ZTo6Zml4ZWRTaXplKGNv
bnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQogewogICAgIGlmIChIVE1MQ2FudmFzRWxlbWVu
dCogZWx0ID0gZWxlbWVudChyZW5kZXJlci0+ZG9jdW1lbnQoKSkpCi0gICAgICAgIHJldHVybiBJ
bnRTaXplKGVsdC0+d2lkdGgoKSwgZWx0LT5oZWlnaHQoKSk7Ci0gICAgcmV0dXJuIEludFNpemUo
KTsKKyAgICAgICAgcmV0dXJuIEZsb2F0U2l6ZShlbHQtPndpZHRoKCksIGVsdC0+aGVpZ2h0KCkp
OworICAgIHJldHVybiBGbG9hdFNpemUoKTsKIH0KIAogSFRNTENhbnZhc0VsZW1lbnQqIENTU0Nh
bnZhc1ZhbHVlOjplbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTg0LDcgKzg0LDcgQEAg
SFRNTENhbnZhc0VsZW1lbnQqIENTU0NhbnZhc1ZhbHVlOjplbGVtZW50KERvY3VtZW50JiBkb2N1
bWVudCkKICAgICByZXR1cm4gbV9lbGVtZW50OwogfQogCi1QYXNzUmVmUHRyPEltYWdlPiBDU1ND
YW52YXNWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUm
IC8qc2l6ZSovKQorUGFzc1JlZlB0cjxJbWFnZT4gQ1NTQ2FudmFzVmFsdWU6OmltYWdlKFJlbmRl
ckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpemUmIC8qc2l6ZSovKQogewogICAgIEFT
U0VSVChjbGllbnRzKCkuY29udGFpbnMocmVuZGVyZXIpKTsKICAgICBIVE1MQ2FudmFzRWxlbWVu
dCogZWxlbWVudCA9IHRoaXMtPmVsZW1lbnQocmVuZGVyZXItPmRvY3VtZW50KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ2FudmFzVmFsdWUuaAppbmRleCBmMWI2Y2ZiOTY2YmQwNWNjMmNkY2IxMGQwMDI0
ZDA0MGRmZjVmMjRhLi5iNjdkMDRmZWJhMTBlMzRjNzRkNmNkMTg3MDRkYWUyMWFkMGRmMTg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuaApAQCAtNDAsOSArNDAsOSBAQCBwdWJsaWM6
CiAKICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OwogCi0gICAgUGFzc1JlZlB0cjxJ
bWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEludFNpemUmKTsKKyAgICBQYXNzUmVm
UHRyPEltYWdlPiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgRmxvYXRTaXplJik7CiAgICAg
Ym9vbCBpc0ZpeGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICBJbnRTaXplIGZp
eGVkU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50Kik7CisgICAgRmxvYXRTaXplIGZpeGVkU2l6ZShj
b25zdCBSZW5kZXJFbGVtZW50Kik7CiAKICAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBsb2FkU3ViaW1hZ2VzKENhY2hlZFJlc291cmNlTG9hZGVy
KikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcAppbmRleCA3NDE4
NjUwODlmZWZlYjY4ZWNiNjlkYTYwZDliZDA1ZGY2NTNjYjNjLi5hNzMwMDUyNjdiMDQ0ZDc2NzJj
OWQ2MDYzYWJkYTEzY2ZiMjQyYmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q3Jvc3NmYWRlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVW
YWx1ZS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgU3RyaW5nIENTU0Nyb3NzZmFkZVZhbHVlOjpjdXN0
b21DU1NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKLUlu
dFNpemUgQ1NTQ3Jvc3NmYWRlVmFsdWU6OmZpeGVkU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiBy
ZW5kZXJlcikKK0Zsb2F0U2l6ZSBDU1NDcm9zc2ZhZGVWYWx1ZTo6Zml4ZWRTaXplKGNvbnN0IFJl
bmRlckVsZW1lbnQqIHJlbmRlcmVyKQogewogICAgIGZsb2F0IHBlcmNlbnRhZ2UgPSBtX3BlcmNl
bnRhZ2VWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpOwogICAgIGZsb2F0IGludmVyc2VQZXJjZW50YWdl
ID0gMSAtIHBlcmNlbnRhZ2U7CkBAIC04OCw3ICs4OCw3IEBAIEludFNpemUgQ1NTQ3Jvc3NmYWRl
VmFsdWU6OmZpeGVkU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKICAgICBDYWNo
ZWRJbWFnZSogY2FjaGVkVG9JbWFnZSA9IGNhY2hlZEltYWdlRm9yQ1NTVmFsdWUobV90b1ZhbHVl
LmdldCgpLCBjYWNoZWRSZXNvdXJjZUxvYWRlcik7CiAKICAgICBpZiAoIWNhY2hlZEZyb21JbWFn
ZSB8fCAhY2FjaGVkVG9JbWFnZSkKLSAgICAgICAgcmV0dXJuIEludFNpemUoKTsKKyAgICAgICAg
cmV0dXJuIEZsb2F0U2l6ZSgpOwogCiAgICAgRmxvYXRTaXplIGZyb21JbWFnZVNpemUgPSBjYWNo
ZWRGcm9tSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpLT5zaXplKCk7CiAgICAgRmxv
YXRTaXplIHRvSW1hZ2VTaXplID0gY2FjaGVkVG9JbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5k
ZXJlciktPnNpemUoKTsKQEAgLTk2LDkgKzk2LDkgQEAgSW50U2l6ZSBDU1NDcm9zc2ZhZGVWYWx1
ZTo6Zml4ZWRTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQogICAgIC8vIFJvdW5k
aW5nIGlzc3VlcyBjYW4gY2F1c2UgdHJhbnNpdGlvbnMgYmV0d2VlbiBpbWFnZXMgb2YgZXF1YWwg
c2l6ZSB0byByZXR1cm4KICAgICAvLyBhIGRpZmZlcmVudCBmaXhlZCBzaXplOyBhdm9pZCBwZXJm
b3JtaW5nIHRoZSBpbnRlcnBvbGF0aW9uIGlmIHRoZSBpbWFnZXMgYXJlIHRoZSBzYW1lIHNpemUu
CiAgICAgaWYgKGZyb21JbWFnZVNpemUgPT0gdG9JbWFnZVNpemUpCi0gICAgICAgIHJldHVybiBJ
bnRTaXplKGZyb21JbWFnZVNpemUpOworICAgICAgICByZXR1cm4gZnJvbUltYWdlU2l6ZTsKIAot
ICAgIHJldHVybiBJbnRTaXplKGZyb21JbWFnZVNpemUud2lkdGgoKSAqIGludmVyc2VQZXJjZW50
YWdlICsgdG9JbWFnZVNpemUud2lkdGgoKSAqIHBlcmNlbnRhZ2UsCisgICAgcmV0dXJuIEZsb2F0
U2l6ZShmcm9tSW1hZ2VTaXplLndpZHRoKCkgKiBpbnZlcnNlUGVyY2VudGFnZSArIHRvSW1hZ2VT
aXplLndpZHRoKCkgKiBwZXJjZW50YWdlLAogICAgICAgICBmcm9tSW1hZ2VTaXplLmhlaWdodCgp
ICogaW52ZXJzZVBlcmNlbnRhZ2UgKyB0b0ltYWdlU2l6ZS5oZWlnaHQoKSAqIHBlcmNlbnRhZ2Up
OwogfQogCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBDU1NDcm9zc2ZhZGVWYWx1ZTo6bG9hZFN1
YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIKICAgICBt
X2Nyb3NzZmFkZVN1YmltYWdlT2JzZXJ2ZXIuc2V0UmVhZHkodHJ1ZSk7CiB9CiAKLVBhc3NSZWZQ
dHI8SW1hZ2U+IENTU0Nyb3NzZmFkZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJl
ciwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK1Bhc3NSZWZQdHI8SW1hZ2U+IENTU0Nyb3NzZmFkZVZh
bHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXplJiBzaXpl
KQogewogICAgIGlmIChzaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCmluZGV4IDkyYmVjYTEyZTMwMDdmMDFjNGRjZWMx
Zjk0NWQxMDZjMjU5ZTIyNTMuLjE0ZGE1OWM3OTRkYzdjYmEyMTk5ZDQyMDk4OGJlZTA1NDFlNzk5
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCkBAIC01Miw5ICs1Miw5
IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CiAKLSAgICBQ
YXNzUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgSW50U2l6ZSYpOwor
ICAgIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBGbG9hdFNp
emUmKTsKICAgICBib29sIGlzRml4ZWRTaXplKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAg
IEludFNpemUgZml4ZWRTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqKTsKKyAgICBGbG9hdFNpemUg
Zml4ZWRTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqKTsKIAogICAgIGJvb2wgaXNQZW5kaW5nKCkg
Y29uc3Q7CiAgICAgYm9vbCBrbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyRWxlbWVudCopIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmluZGV4IDQ4
ZWI1YzFhZTc4YjE2MzZhYjcyYWM1MzU4ZjA2OWI5YWU0ZDJiMjMuLjFhYzJmYTRmMGVhOTRjNjI3
NjBhY2I5ODY4M2IxNmQwOTUyMGU2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVy
SW1hZ2VWYWx1ZS5jcHAKQEAgLTU5LDE1ICs1OSwxNSBAQCBTdHJpbmcgQ1NTRmlsdGVySW1hZ2VW
YWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygp
OwogfQogCi1JbnRTaXplIENTU0ZpbHRlckltYWdlVmFsdWU6OmZpeGVkU2l6ZShjb25zdCBSZW5k
ZXJFbGVtZW50KiByZW5kZXJlcikKK0Zsb2F0U2l6ZSBDU1NGaWx0ZXJJbWFnZVZhbHVlOjpmaXhl
ZFNpemUoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCiB7CiAgICAgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyID0gcmVuZGVyZXItPmRvY3VtZW50KCkuY2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKTsKICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBjYWNo
ZWRJbWFnZUZvckNTU1ZhbHVlKG1faW1hZ2VWYWx1ZS5nZXQoKSwgY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIpOwogCiAgICAgaWYgKCFjYWNoZWRJbWFnZSkKLSAgICAgICAgcmV0dXJuIEludFNpemUoKTsK
KyAgICAgICAgcmV0dXJuIEZsb2F0U2l6ZSgpOwogCi0gICAgcmV0dXJuIEludFNpemUoY2FjaGVk
SW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpLT5zaXplKCkpOworICAgIHJldHVybiBj
YWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlciktPnNpemUoKTsKIH0KIAogYm9v
bCBDU1NGaWx0ZXJJbWFnZVZhbHVlOjppc1BlbmRpbmcoKSBjb25zdApAQCAtOTYsNyArOTYsNyBA
QCB2b2lkIENTU0ZpbHRlckltYWdlVmFsdWU6OmxvYWRTdWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VM
b2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZAogICAgIG1fZmlsdGVyU3ViaW1hZ2VPYnNlcnZlci5z
ZXRSZWFkeSh0cnVlKTsKIH0KIAotUGFzc1JlZlB0cjxJbWFnZT4gQ1NTRmlsdGVySW1hZ2VWYWx1
ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIHNpemUpCitQ
YXNzUmVmUHRyPEltYWdlPiBDU1NGaWx0ZXJJbWFnZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50
KiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXplJiBzaXplKQogewogICAgIGlmIChzaXplLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRmlsdGVySW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdl
VmFsdWUuaAppbmRleCBmMjEyZjUxYzdlNTUzZWFjMjMwNDYyYTc4ZmFjYTZlMmRiMWJjMzJhLi40
MmYyMmNkNTNmMTU5N2FkOTQ1YTcwMGZlZDhlMGVlZWUzNmE5NTEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmgKQEAgLTU3LDkgKzU3LDkgQEAgcHVibGljOgogCiAg
ICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKIAotICAgIFBhc3NSZWZQdHI8SW1hZ2U+
IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRTaXplJik7CisgICAgUGFzc1JlZlB0cjxJ
bWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYpOwogICAgIGJvb2wg
aXNGaXhlZFNpemUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgSW50U2l6ZSBmaXhlZFNp
emUoY29uc3QgUmVuZGVyRWxlbWVudCopOworICAgIEZsb2F0U2l6ZSBmaXhlZFNpemUoY29uc3Qg
UmVuZGVyRWxlbWVudCopOwogCiAgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdDsKICAgICBib29s
IGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50KikgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKaW5kZXggZmI5NGIzMTAyZGYwZjAzNTk2M2IxMGJk
MWM0ZDVlNDk5ZWEzN2U0MS4uZDE3OWRlZDk5YmU3NmE3YWRiMzI5MjAzYWMxMzkxYzBiZjAyMTll
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcApAQCAtMjgsMTEgKzI4
LDExIEBACiAKICNpbmNsdWRlICJDU1NDYWxjdWxhdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NT
VmFsdWVLZXl3b3Jkcy5oIgorI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorI2luY2x1ZGUgIkZsb2F0
U2l6ZUhhc2guaCIKICNpbmNsdWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUgIkdyYWRpZW50SW1h
Z2UuaCIKICNpbmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRl
ICJJbnRTaXplSGFzaC5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUg
IlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCkBAIC00MSw3ICs0
MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJbWFnZT4gQ1NTR3Jh
ZGllbnRWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUm
IHNpemUpCitQYXNzUmVmUHRyPEltYWdlPiBDU1NHcmFkaWVudFZhbHVlOjppbWFnZShSZW5kZXJF
bGVtZW50KiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXplJiBzaXplKQogewogICAgIGlmIChzaXpl
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0zOTAsNyArMzkwLDcgQEAgdm9pZCBD
U1NHcmFkaWVudFZhbHVlOjphZGRTdG9wcyhHcmFkaWVudCogZ3JhZGllbnQsIFJlbmRlckVsZW1l
bnQqIHJlbmRlcmVyLCBjb24KICAgICBncmFkaWVudC0+c2V0U3RvcHNTb3J0ZWQodHJ1ZSk7CiB9
CiAKLXN0YXRpYyBmbG9hdCBwb3NpdGlvbkZyb21WYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSogdmFs
dWUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHJvb3RTdHls
ZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBpc0hvcml6b250YWwpCitzdGF0aWMgZmxvYXQg
cG9zaXRpb25Gcm9tVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlLCBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiByb290U3R5bGUsIGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgYm9vbCBpc0hvcml6b250YWwpCiB7CiAgICAgZmxvYXQgem9vbUZhY3RvciA9IHN0
eWxlLmVmZmVjdGl2ZVpvb20oKTsKIApAQCAtNDI0LDcgKzQyNCw3IEBAIHN0YXRpYyBmbG9hdCBw
b3NpdGlvbkZyb21WYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUsIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsCiAgICAgcmV0dXJuIHZhbHVlLT5jb21wdXRlTGVuZ3RoPGZsb2F0Pigmc3R5bGUs
ICZyb290U3R5bGUsIHpvb21GYWN0b3IpOwogfQogCi1GbG9hdFBvaW50IENTU0dyYWRpZW50VmFs
dWU6OmNvbXB1dGVFbmRQb2ludChDU1NQcmltaXRpdmVWYWx1ZSogaG9yaXpvbnRhbCwgQ1NTUHJp
bWl0aXZlVmFsdWUqIHZlcnRpY2FsLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IFJl
bmRlclN0eWxlJiByb290U3R5bGUsIGNvbnN0IEludFNpemUmIHNpemUpCitGbG9hdFBvaW50IENT
U0dyYWRpZW50VmFsdWU6OmNvbXB1dGVFbmRQb2ludChDU1NQcmltaXRpdmVWYWx1ZSogaG9yaXpv
bnRhbCwgQ1NTUHJpbWl0aXZlVmFsdWUqIHZlcnRpY2FsLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUsIGNvbnN0IFJlbmRlclN0eWxlJiByb290U3R5bGUsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkK
IHsKICAgICBGbG9hdFBvaW50IHJlc3VsdDsKIApAQCAtNTcyLDcgKzU3Miw3IEBAIFN0cmluZyBD
U1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKIH0KIAogLy8gQ29t
cHV0ZSB0aGUgZW5kcG9pbnRzIHNvIHRoYXQgYSBncmFkaWVudCBvZiB0aGUgZ2l2ZW4gYW5nbGUg
Y292ZXJzIGEgYm94IG9mIHRoZSBnaXZlbiBzaXplLgotc3RhdGljIHZvaWQgZW5kUG9pbnRzRnJv
bUFuZ2xlKGZsb2F0IGFuZ2xlRGVnLCBjb25zdCBJbnRTaXplJiBzaXplLCBGbG9hdFBvaW50JiBm
aXJzdFBvaW50LCBGbG9hdFBvaW50JiBzZWNvbmRQb2ludCwgQ1NTR3JhZGllbnRUeXBlIHR5cGUp
CitzdGF0aWMgdm9pZCBlbmRQb2ludHNGcm9tQW5nbGUoZmxvYXQgYW5nbGVEZWcsIGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSwgRmxvYXRQb2ludCYgZmlyc3RQb2ludCwgRmxvYXRQb2ludCYgc2Vjb25k
UG9pbnQsIENTU0dyYWRpZW50VHlwZSB0eXBlKQogewogICAgIC8vIFByZWZpeGVkIGdyYWRpZW50
cyB1c2UgInBvbGFyIGNvb3JkaW5hdGUiIGFuZ2xlcywgcmF0aGVyIHRoYW4gImJlYXJpbmciIGFu
Z2xlcy4KICAgICBpZiAodHlwZSA9PSBDU1NQcmVmaXhlZExpbmVhckdyYWRpZW50KQpAQCAtNjM5
LDcgKzYzOSw3IEBAIHN0YXRpYyB2b2lkIGVuZFBvaW50c0Zyb21BbmdsZShmbG9hdCBhbmdsZURl
ZywgY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxvYXRQb2ludCYKICAgICBmaXJzdFBvaW50LnNldCho
YWxmV2lkdGggLSBlbmRYLCBoYWxmSGVpZ2h0ICsgZW5kWSk7CiB9CiAKLVBhc3NSZWZQdHI8R3Jh
ZGllbnQ+IENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1l
bnQqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBzaXplKQorUGFzc1JlZlB0cjxHcmFkaWVudD4g
Q1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQoUmVuZGVyRWxlbWVudCogcmVu
ZGVyZXIsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKIHsKICAgICBBU1NFUlQoIXNpemUuaXNFbXB0
eSgpKTsKIApAQCAtOTc5LDcgKzk3OSw3IEBAIHN0YXRpYyBpbmxpbmUgZmxvYXQgaG9yaXpvbnRh
bEVsbGlwc2VSYWRpdXMoY29uc3QgRmxvYXRTaXplJiBwLCBmbG9hdCBhc3BlY3RSYXRpCiB9CiAK
IC8vIEZJWE1FOiBzaGFyZSBjb2RlIHdpdGggdGhlIGxpbmVhciB2ZXJzaW9uCi1QYXNzUmVmUHRy
PEdyYWRpZW50PiBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5kZXJF
bGVtZW50KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK1Bhc3NSZWZQdHI8R3JhZGll
bnQ+IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQq
IHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiB7CiAgICAgQVNTRVJUKCFzaXplLmlz
RW1wdHkoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZh
bHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCmluZGV4IDhmYjQz
MmE5MWQyNzA2OTM2OGIyMTBkNjM4ODIwNGExNTFiM2NkNmQuLmQwODAyMDdhZjA3YjliODJkYWFl
Zjc3NzFkYjczY2MzMjcxMzZmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NH
cmFkaWVudFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUu
aApAQCAtNjEsNyArNjEsNyBAQCBzdHJ1Y3QgQ1NTR3JhZGllbnRDb2xvclN0b3AgewogCiBjbGFz
cyBDU1NHcmFkaWVudFZhbHVlIDogcHVibGljIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUgewogcHVi
bGljOgotICAgIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBJ
bnRTaXplJik7CisgICAgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNv
bnN0IEZsb2F0U2l6ZSYpOwogCiAgICAgdm9pZCBzZXRGaXJzdFgoUGFzc1JlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gdmFsKSB7IG1fZmlyc3RYID0gdmFsOyB9CiAgICAgdm9pZCBzZXRGaXJzdFko
UGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsKSB7IG1fZmlyc3RZID0gdmFsOyB9CkBA
IC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICBDU1NHcmFkaWVudFR5cGUgZ3JhZGllbnRUeXBl
KCkgY29uc3QgeyByZXR1cm4gbV9ncmFkaWVudFR5cGU7IH0KIAogICAgIGJvb2wgaXNGaXhlZFNp
emUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIEludFNpemUgZml4ZWRTaXplKGNvbnN0
IFJlbmRlckVsZW1lbnQqKSBjb25zdCB7IHJldHVybiBJbnRTaXplKCk7IH0KKyAgICBGbG9hdFNp
emUgZml4ZWRTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqKSBjb25zdCB7IHJldHVybiBGbG9hdFNp
emUoKTsgfQogCiAgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIGJvb2wga25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqKSBjb25zdDsKQEAg
LTExMiw3ICsxMTIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBhZGRTdG9wcyhHcmFkaWVudCos
IFJlbmRlckVsZW1lbnQqLCBjb25zdCBSZW5kZXJTdHlsZSYgcm9vdFN0eWxlLCBmbG9hdCBtYXhM
ZW5ndGhGb3JSZXBlYXQgPSAwKTsKIAogICAgIC8vIFJlc29sdmUgcG9pbnRzL3JhZGlpIHRvIGZy
b250IGVuZCB2YWx1ZXMuCi0gICAgRmxvYXRQb2ludCBjb21wdXRlRW5kUG9pbnQoQ1NTUHJpbWl0
aXZlVmFsdWUqLCBDU1NQcmltaXRpdmVWYWx1ZSosIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3Qg
UmVuZGVyU3R5bGUmIHJvb3RTdHlsZSwgY29uc3QgSW50U2l6ZSYpOworICAgIEZsb2F0UG9pbnQg
Y29tcHV0ZUVuZFBvaW50KENTU1ByaW1pdGl2ZVZhbHVlKiwgQ1NTUHJpbWl0aXZlVmFsdWUqLCBj
b25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlJiByb290U3R5bGUsIGNvbnN0IEZs
b2F0U2l6ZSYpOwogCiAgICAgYm9vbCBpc0NhY2hlYWJsZSgpIGNvbnN0OwogCkBAIC0xNDUsNyAr
MTQ1LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CiAKICAg
ICAvLyBDcmVhdGUgdGhlIGdyYWRpZW50IGZvciBhIGdpdmVuIHNpemUuCi0gICAgUGFzc1JlZlB0
cjxHcmFkaWVudD4gY3JlYXRlR3JhZGllbnQoUmVuZGVyRWxlbWVudCosIGNvbnN0IEludFNpemUm
KTsKKyAgICBQYXNzUmVmUHRyPEdyYWRpZW50PiBjcmVhdGVHcmFkaWVudChSZW5kZXJFbGVtZW50
KiwgY29uc3QgRmxvYXRTaXplJik7CiAKICAgICBQYXNzUmVmPENTU0xpbmVhckdyYWRpZW50VmFs
dWU+IGNsb25lKCkgY29uc3QKICAgICB7CkBAIC0xOTUsNyArMTk1LDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0RW5kVmVydGljYWxTaXplKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZh
bCkgeyBtX2VuZFZlcnRpY2FsU2l6ZSA9IHZhbDsgfQogCiAgICAgLy8gQ3JlYXRlIHRoZSBncmFk
aWVudCBmb3IgYSBnaXZlbiBzaXplLgotICAgIFBhc3NSZWZQdHI8R3JhZGllbnQ+IGNyZWF0ZUdy
YWRpZW50KFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRTaXplJik7CisgICAgUGFzc1JlZlB0cjxH
cmFkaWVudD4gY3JlYXRlR3JhZGllbnQoUmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYp
OwogCiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZSYpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKaW5k
ZXggNTUxMWMyZDFmYTM4YzNiMGQ5NDE0ZGI5OWM2ZTg4YWQyM2ZmZmNhNS4uMGQ5Y2ZjYTBmYWQx
Nzg4NGRhOGM3Mjc5ZGM3MWMwYTUzMzFiNGU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIENTU0ltYWdl
R2VuZXJhdG9yVmFsdWU6OnJlbW92ZUNsaWVudChSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKICAg
ICAgICAgZGVyZWYoKTsKIH0KIAotR2VuZXJhdGVkSW1hZ2UqIENTU0ltYWdlR2VuZXJhdG9yVmFs
dWU6OmNhY2hlZEltYWdlRm9yU2l6ZShJbnRTaXplIHNpemUpCitHZW5lcmF0ZWRJbWFnZSogQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Y2FjaGVkSW1hZ2VGb3JTaXplKEZsb2F0U2l6ZSBzaXplKQog
ewogICAgIGlmIChzaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC03
OCwxOSArNzgsMTkgQEAgR2VuZXJhdGVkSW1hZ2UqIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmNh
Y2hlZEltYWdlRm9yU2l6ZShJbnRTaXplIHNpemUpCiAgICAgcmV0dXJuIGNhY2hlZEdlbmVyYXRl
ZEltYWdlLT5pbWFnZSgpOwogfQogCi12b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnNhdmVD
YWNoZWRJbWFnZUZvclNpemUoSW50U2l6ZSBzaXplLCBQYXNzUmVmUHRyPEdlbmVyYXRlZEltYWdl
PiBpbWFnZSkKK3ZvaWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6c2F2ZUNhY2hlZEltYWdlRm9y
U2l6ZShGbG9hdFNpemUgc2l6ZSwgUGFzc1JlZlB0cjxHZW5lcmF0ZWRJbWFnZT4gaW1hZ2UpCiB7
CiAgICAgQVNTRVJUKCFtX2ltYWdlcy5jb250YWlucyhzaXplKSk7CiAgICAgbV9pbWFnZXMuYWRk
KHNpemUsIHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkR2VuZXJhdGVkSW1hZ2U+KCp0aGlzLCBzaXpl
LCBpbWFnZSkpOwogfQogCi12b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmV2aWN0Q2FjaGVk
R2VuZXJhdGVkSW1hZ2UoSW50U2l6ZSBzaXplKQordm9pZCBDU1NJbWFnZUdlbmVyYXRvclZhbHVl
OjpldmljdENhY2hlZEdlbmVyYXRlZEltYWdlKEZsb2F0U2l6ZSBzaXplKQogewogICAgIEFTU0VS
VChtX2ltYWdlcy5jb250YWlucyhzaXplKSk7CiAgICAgbV9pbWFnZXMucmVtb3ZlKHNpemUpOwog
fQogCi1DU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpDYWNoZWRHZW5lcmF0ZWRJbWFnZTo6Q2FjaGVk
R2VuZXJhdGVkSW1hZ2UoQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSYgb3duZXIsIEludFNpemUgc2l6
ZSwgUGFzc1JlZlB0cjxHZW5lcmF0ZWRJbWFnZT4gaW1hZ2UpCitDU1NJbWFnZUdlbmVyYXRvclZh
bHVlOjpDYWNoZWRHZW5lcmF0ZWRJbWFnZTo6Q2FjaGVkR2VuZXJhdGVkSW1hZ2UoQ1NTSW1hZ2VH
ZW5lcmF0b3JWYWx1ZSYgb3duZXIsIEZsb2F0U2l6ZSBzaXplLCBQYXNzUmVmUHRyPEdlbmVyYXRl
ZEltYWdlPiBpbWFnZSkKICAgICA6IG1fb3duZXIob3duZXIpCiAgICAgLCBtX3NpemUoc2l6ZSkK
ICAgICAsIG1faW1hZ2UoaW1hZ2UpCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBDU1NJbWFnZUdl
bmVyYXRvclZhbHVlOjpDYWNoZWRHZW5lcmF0ZWRJbWFnZTo6ZXZpY3Rpb25UaW1lckZpcmVkKERl
ZmVycmFibGUKICAgICBtX293bmVyLmV2aWN0Q2FjaGVkR2VuZXJhdGVkSW1hZ2UobV9zaXplKTsK
IH0KIAotUGFzc1JlZlB0cjxJbWFnZT4gQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6aW1hZ2UoUmVu
ZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIHNpemUpCitQYXNzUmVmUHRyPElt
YWdlPiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJl
ciwgY29uc3QgRmxvYXRTaXplJiBzaXplKQogewogICAgIHN3aXRjaCAoY2xhc3NUeXBlKCkpIHsK
ICAgICBjYXNlIENhbnZhc0NsYXNzOgpAQCAtMTQ3LDcgKzE0Nyw3IEBAIGJvb2wgQ1NTSW1hZ2VH
ZW5lcmF0b3JWYWx1ZTo6aXNGaXhlZFNpemUoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotSW50U2l6ZSBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpmaXhlZFNpemUoY29uc3QgUmVuZGVy
RWxlbWVudCogcmVuZGVyZXIpCitGbG9hdFNpemUgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Zml4
ZWRTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQogewogICAgIHN3aXRjaCAoY2xh
c3NUeXBlKCkpIHsKICAgICBjYXNlIENhbnZhc0NsYXNzOgpAQCAtMTY1LDcgKzE2NSw3IEBAIElu
dFNpemUgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Zml4ZWRTaXplKGNvbnN0IFJlbmRlckVsZW1l
bnQqIHJlbmRlcmVyKQogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIH0KLSAgICByZXR1cm4gSW50U2l6ZSgpOworICAgIHJldHVybiBGbG9hdFNpemUoKTsK
IH0KIAogYm9vbCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjppc1BlbmRpbmcoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmgKaW5kZXggNmM5MjBmYWFl
YWRmMzM0OGY2ZGNiYzg3MTAwN2VhNjlhYWFiMzZhMS4uZjRhYjVkODBiOTY0ZDE1NTdhMmVkNTgy
NDVkNDBlZDRkNTcwOTM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdl
R2VuZXJhdG9yVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0
b3JWYWx1ZS5oCkBAIC0yNyw3ICsyNyw4IEBACiAjZGVmaW5lIENTU0ltYWdlR2VuZXJhdG9yVmFs
dWVfaAogCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKLSNpbmNsdWRlICJJbnRTaXplSGFzaC5oIgor
I2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorI2luY2x1ZGUgIkZsb2F0U2l6ZUhhc2guaCIKICNpbmNs
dWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogCkBAIC00Nywx
MCArNDgsMTAgQEAgcHVibGljOgogICAgIHZvaWQgYWRkQ2xpZW50KFJlbmRlckVsZW1lbnQqKTsK
ICAgICB2b2lkIHJlbW92ZUNsaWVudChSZW5kZXJFbGVtZW50Kik7CiAKLSAgICBQYXNzUmVmUHRy
PEltYWdlPiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgSW50U2l6ZSYpOworICAgIFBhc3NS
ZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBGbG9hdFNpemUmKTsKIAog
ICAgIGJvb2wgaXNGaXhlZFNpemUoKSBjb25zdDsKLSAgICBJbnRTaXplIGZpeGVkU2l6ZShjb25z
dCBSZW5kZXJFbGVtZW50Kik7CisgICAgRmxvYXRTaXplIGZpeGVkU2l6ZShjb25zdCBSZW5kZXJF
bGVtZW50Kik7CiAKICAgICBib29sIGlzUGVuZGluZygpIGNvbnN0OwogICAgIGJvb2wga25vd25U
b0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqKSBjb25zdDsKQEAgLTYwLDggKzYxLDggQEAg
cHVibGljOgogcHJvdGVjdGVkOgogICAgIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUoQ2xhc3NUeXBl
KTsKIAotICAgIEdlbmVyYXRlZEltYWdlKiBjYWNoZWRJbWFnZUZvclNpemUoSW50U2l6ZSk7Ci0g
ICAgdm9pZCBzYXZlQ2FjaGVkSW1hZ2VGb3JTaXplKEludFNpemUsIFBhc3NSZWZQdHI8R2VuZXJh
dGVkSW1hZ2U+KTsKKyAgICBHZW5lcmF0ZWRJbWFnZSogY2FjaGVkSW1hZ2VGb3JTaXplKEZsb2F0
U2l6ZSk7CisgICAgdm9pZCBzYXZlQ2FjaGVkSW1hZ2VGb3JTaXplKEZsb2F0U2l6ZSwgUGFzc1Jl
ZlB0cjxHZW5lcmF0ZWRJbWFnZT4pOwogICAgIGNvbnN0IEhhc2hDb3VudGVkU2V0PFJlbmRlckVs
ZW1lbnQqPiYgY2xpZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50czsgfQogCiAgICAgLy8g
SGVscGVyIGZ1bmN0aW9ucyBmb3IgQ3Jvc3NmYWRlIGFuZCBGaWx0ZXIuCkBAIC03MSw3ICs3Miw3
IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgY2xhc3MgQ2FjaGVkR2VuZXJhdGVkSW1hZ2Ug
ewogICAgIHB1YmxpYzoKLSAgICAgICAgQ2FjaGVkR2VuZXJhdGVkSW1hZ2UoQ1NTSW1hZ2VHZW5l
cmF0b3JWYWx1ZSYsIEludFNpemUsIFBhc3NSZWZQdHI8R2VuZXJhdGVkSW1hZ2U+KTsKKyAgICAg
ICAgQ2FjaGVkR2VuZXJhdGVkSW1hZ2UoQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSYsIEZsb2F0U2l6
ZSwgUGFzc1JlZlB0cjxHZW5lcmF0ZWRJbWFnZT4pOwogICAgICAgICBHZW5lcmF0ZWRJbWFnZSog
aW1hZ2UoKSB7IHJldHVybiBtX2ltYWdlLmdldCgpOyB9CiAgICAgICAgIHZvaWQgcHVudEV2aWN0
aW9uVGltZXIoKSB7IG1fZXZpY3Rpb25UaW1lci5yZXN0YXJ0KCk7IH0KIApAQCAtNzksMTYgKzgw
LDE2IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgZXZpY3Rpb25UaW1lckZpcmVkKERlZmVycmFi
bGVPbmVTaG90VGltZXI8Q2FjaGVkR2VuZXJhdGVkSW1hZ2U+Jik7CiAKICAgICAgICAgQ1NTSW1h
Z2VHZW5lcmF0b3JWYWx1ZSYgbV9vd25lcjsKLSAgICAgICAgSW50U2l6ZSBtX3NpemU7CisgICAg
ICAgIEZsb2F0U2l6ZSBtX3NpemU7CiAgICAgICAgIFJlZlB0cjxHZW5lcmF0ZWRJbWFnZT4gbV9p
bWFnZTsKICAgICAgICAgRGVmZXJyYWJsZU9uZVNob3RUaW1lcjxDYWNoZWRHZW5lcmF0ZWRJbWFn
ZT4gbV9ldmljdGlvblRpbWVyOwogICAgIH07CiAKICAgICBmcmllbmQgY2xhc3MgQ2FjaGVkR2Vu
ZXJhdGVkSW1hZ2U7Ci0gICAgdm9pZCBldmljdENhY2hlZEdlbmVyYXRlZEltYWdlKEludFNpemUp
OworICAgIHZvaWQgZXZpY3RDYWNoZWRHZW5lcmF0ZWRJbWFnZShGbG9hdFNpemUpOwogCiAgICAg
SGFzaENvdW50ZWRTZXQ8UmVuZGVyRWxlbWVudCo+IG1fY2xpZW50czsKLSAgICBIYXNoTWFwPElu
dFNpemUsIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRHZW5lcmF0ZWRJbWFnZT4+IG1faW1hZ2VzOwor
ICAgIEhhc2hNYXA8RmxvYXRTaXplLCBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkR2VuZXJhdGVkSW1h
Z2U+PiBtX2ltYWdlczsKIH07CiAKIENTU19WQUxVRV9UWVBFX0NBU1RTKENTU0ltYWdlR2VuZXJh
dG9yVmFsdWUsIGlzSW1hZ2VHZW5lcmF0b3JWYWx1ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggOGViYzhmN2Q4YjA4YTk1Y2U0NDhlNjk4MWFj
ZDVjM2ViNWRkOTk1Mi4uNzcyNmI1MjEwM2VkOGMwMjI1ZDkzNGI1YjYwYTNkYTZjMGYwZGMxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC0yMjgs
NyArMjI4LDcgQEAgSW1hZ2UqIENhY2hlZEltYWdlOjppbWFnZUZvclJlbmRlcmVyKGNvbnN0IFJl
bmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7CiB9CiAKLXZv
aWQgQ2FjaGVkSW1hZ2U6OnNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihjb25zdCBDYWNoZWRJ
bWFnZUNsaWVudCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0
IGNvbnRhaW5lclpvb20pCit2b2lkIENhY2hlZEltYWdlOjpzZXRDb250YWluZXJTaXplRm9yUmVu
ZGVyZXIoY29uc3QgQ2FjaGVkSW1hZ2VDbGllbnQqIHJlbmRlcmVyLCBjb25zdCBMYXlvdXRTaXpl
JiBjb250YWluZXJTaXplLCBmbG9hdCBjb250YWluZXJab29tKQogewogICAgIGlmIChjb250YWlu
ZXJTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCA4NmFmMDNmZDAxODU1ODZkNWRhN2QzNGM0N2RkZTJl
MDY2MzJjYmU3Li4zNDYyOWUwNTZkM2QwMDA3ZjRiMjI0Y2Y0MTdkMzgwNzA0YmVlYTBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtNjYsNyArNjYsNyBA
QCBwdWJsaWM6CiAKICAgICBib29sIGNhblJlbmRlcihjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyLCBmbG9hdCBtdWx0aXBsaWVyKSB7IHJldHVybiAhZXJyb3JPY2N1cnJlZCgpICYmICFpbWFn
ZVNpemVGb3JSZW5kZXJlcihyZW5kZXJlciwgbXVsdGlwbGllcikuaXNFbXB0eSgpOyB9CiAKLSAg
ICB2b2lkIHNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihjb25zdCBDYWNoZWRJbWFnZUNsaWVu
dCosIGNvbnN0IEludFNpemUmLCBmbG9hdCk7CisgICAgdm9pZCBzZXRDb250YWluZXJTaXplRm9y
UmVuZGVyZXIoY29uc3QgQ2FjaGVkSW1hZ2VDbGllbnQqLCBjb25zdCBMYXlvdXRTaXplJiwgZmxv
YXQpOwogICAgIGJvb2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0OwogICAgIGJvb2wg
aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3Q7CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZl
SGVpZ2h0KCkgY29uc3Q7CkBAIC0xMzIsNyArMTMyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
YWRkSW5jcmVtZW50YWxEYXRhQnVmZmVyKFJlc291cmNlQnVmZmVyKik7CiAKLSAgICB0eXBlZGVm
IHN0ZDo6cGFpcjxJbnRTaXplLCBmbG9hdD4gU2l6ZUFuZFpvb207CisgICAgdHlwZWRlZiBzdGQ6
OnBhaXI8TGF5b3V0U2l6ZSwgZmxvYXQ+IFNpemVBbmRab29tOwogICAgIHR5cGVkZWYgSGFzaE1h
cDxjb25zdCBDYWNoZWRJbWFnZUNsaWVudCosIFNpemVBbmRab29tPiBDb250YWluZXJTaXplUmVx
dWVzdHM7CiAgICAgQ29udGFpbmVyU2l6ZVJlcXVlc3RzIG1fcGVuZGluZ0NvbnRhaW5lclNpemVS
ZXF1ZXN0czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RmxvYXRTaXplSGFzaC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRT
aXplSGFzaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0YzY3NWQ1YjRmYTc5ZGJjZGJhNjhiY2FlY2VjZDcxMzI5
NDVmZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9GbG9hdFNpemVIYXNoLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBGbG9hdFNp
emVIYXNoX2gKKyNkZWZpbmUgRmxvYXRTaXplSGFzaF9oCisKKyNpbmNsdWRlICJGbG9hdFNpemUu
aCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisK
K25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBGbG9hdEhhc2g8V2ViQ29yZTo6
RmxvYXRTaXplPiB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiBrZXkpIHsgcmV0dXJuIHBhaXJJbnRIYXNoKERlZmF1bHRIYXNoPGZsb2F0Pjo6SGFz
aDo6aGFzaChrZXkud2lkdGgoKSksIERlZmF1bHRIYXNoPGZsb2F0Pjo6SGFzaDo6aGFzaChrZXku
aGVpZ2h0KCkpKTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYgYSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBiKSB7IHJldHVybiBhID09IGI7IH0K
KyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRy
dWU7Cit9OwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6RmxvYXRTaXpl
PiB7IHR5cGVkZWYgRmxvYXRIYXNoPFdlYkNvcmU6OkZsb2F0U2l6ZT4gSGFzaDsgfQorICAgIAor
dGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpGbG9hdFNpemU+IDogR2VuZXJp
Y0hhc2hUcmFpdHM8V2ViQ29yZTo6RmxvYXRTaXplPiB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wg
ZW1wdHlWYWx1ZUlzWmVybyA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0
cnVjdGlvbiA9IGZhbHNlOworICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShX
ZWJDb3JlOjpGbG9hdFNpemUmIHNsb3QpIHsgbmV3IChOb3ROdWxsLCAmc2xvdCkgV2ViQ29yZTo6
RmxvYXRTaXplKC0xLCAtMSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS53aWR0aCgpID09IC0x
ICYmIHZhbHVlLmhlaWdodCgpID09IC0xOyB9Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV1RG
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TGF5b3V0U2l6ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0U2l6
ZS5oCmluZGV4IGYyZDA5ZWVlNzNlMGIwMGFkMDY2YjRiNTlhZGI1NmNjOTdlM2I2Y2UuLmY3NzYy
NWEzZTg0NjE2YThjZTYwZjNmZTMyZWY1ODk2ZmI2ZTM1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRTaXplLmgKQEAgLTE5Miw2ICsxOTIsMTYgQEAgaW5s
aW5lIExheW91dFNpemUgcm91bmRlZExheW91dFNpemUoY29uc3QgRmxvYXRTaXplJiBzKQogI2Vu
ZGlmCiB9CiAKK2lubGluZSBGbG9hdFNpemUgZmxvb3JlZEZvclBhaW50aW5nKGNvbnN0IExheW91
dFNpemUmIHNpemUsIGZsb2F0IHBpeGVsU25hcHBpbmdGYWN0b3IpCit7CisjaWYgRU5BQkxFKFNV
QlBJWEVMX0xBWU9VVCkKKyAgICByZXR1cm4gRmxvYXRTaXplKGZsb29yVG9EZXZpY2VQaXhlbChz
aXplLndpZHRoKCksIHBpeGVsU25hcHBpbmdGYWN0b3IpLCBmbG9vclRvRGV2aWNlUGl4ZWwoc2l6
ZS5oZWlnaHQoKSwgcGl4ZWxTbmFwcGluZ0ZhY3RvcikpOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0ocGl4ZWxTbmFwcGluZ0ZhY3Rvcik7CisgICAgcmV0dXJuIEZsb2F0U2l6ZShwb2ludCk7Cisj
ZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gTGF5b3V0U2l6
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNv
dXJjZVN0eWxlSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJl
c291cmNlU3R5bGVJbWFnZS5oCmluZGV4IGU1NTUwOTMwOGNmMThmOGJmYThiMGJkMWI5OTY4NTI4
YjY2ODlmNzcuLmRmNGE1YWY3OTFmYzVjNGViMjczYmEwZTQ1YTc2OWY2NTMyZmNiZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJ
bWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNl
U3R5bGVJbWFnZS5oCkBAIC01MSw4ICs1MSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29s
IGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc3R5bGVJ
bWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VI
YXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+
aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpOyB9CiAKLSAgICB2aXJ0dWFsIExheW91dFNpemUgaW1h
Z2VTaXplKGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc3R5bGVJ
bWFnZS0+aW1hZ2VTaXplKG1fcmVuZGVyZXIsIG11bHRpcGxpZXIpOyB9Ci0gICAgdmlydHVhbCBM
YXlvdXRTaXplIGludHJpbnNpY1NpemUoZmxvYXQgbXVsdGlwbGllcikgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9zdHlsZUltYWdlLT5pbWFnZVNpemUobV9yZW5kZXJlciwgbXVsdGlwbGllcik7
IH0KKyAgICB2aXJ0dWFsIExheW91dFNpemUgaW1hZ2VTaXplKGZsb2F0IG11bHRpcGxpZXIpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIExheW91dFNpemUobV9zdHlsZUltYWdlLT5pbWFnZVNpemUo
bV9yZW5kZXJlciwgbXVsdGlwbGllcikpOyB9CisgICAgdmlydHVhbCBMYXlvdXRTaXplIGludHJp
bnNpY1NpemUoZmxvYXQgbXVsdGlwbGllcikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTGF5b3V0
U2l6ZShtX3N0eWxlSW1hZ2UtPmltYWdlU2l6ZShtX3JlbmRlcmVyLCBtdWx0aXBsaWVyKSk7IH0K
IAogICAgIHZpcnR1YWwgV3JhcHBlZEltYWdlUHRyIGltYWdlUHRyKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9zdHlsZUltYWdlLT5kYXRhKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCmluZGV4IDBjMmNhMDQ2ZDIzNzllN2IyNDFlYmRj
MGQ4MjE0ZTQ1OTVjNzc5ZDIuLmI1YjczYzY5ODUzMzFmMzI1YWZkYWIzNzdiOTMxZGY1Y2IzYWFl
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAK
QEAgLTE1MjEsNyArMTUyMSw3IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6Y29tcHV0ZVByZWZl
cnJlZExvZ2ljYWxXaWR0aHMoKQogICAgIHVwZGF0ZUNvbnRlbnQoKTsKIAogICAgIGlmIChpc0lt
YWdlKCkpIHsKLSAgICAgICAgTGF5b3V0U2l6ZSBpbWFnZVNpemUgPSBtX2ltYWdlLT5pbWFnZVNp
emUodGhpcywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpOworICAgICAgICBMYXlvdXRTaXplIGlt
YWdlU2l6ZSA9IExheW91dFNpemUobV9pbWFnZS0+aW1hZ2VTaXplKHRoaXMsIHN0eWxlKCkuZWZm
ZWN0aXZlWm9vbSgpKSk7CiAgICAgICAgIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoID0gbV9t
YXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBzdHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkgPyBpbWFnZVNpemUud2lkdGgoKSA6IGltYWdlU2l6ZS5oZWlnaHQoKTsKICAgICAgICAgc2V0
UHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KGZhbHNlKTsKICAgICAgICAgdXBkYXRlTWFyZ2lu
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2Fj
aGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVk
SW1hZ2UuY3BwCmluZGV4IDA0ZDU1ZTk0MjIxNjVmMDllYzc5MDFmMDJiYTYyNGE2ODlmYjQwNjcu
LmMyNjUzYTFkYzgzOTU4NThlYzNkM2NlNWVjYTc0Y2JkZjRhMzA3ODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAKQEAgLTYx
LDcgKzYxLDcgQEAgYm9vbCBTdHlsZUNhY2hlZEltYWdlOjplcnJvck9jY3VycmVkKCkgY29uc3QK
ICAgICByZXR1cm4gbV9pbWFnZS0+ZXJyb3JPY2N1cnJlZCgpOwogfQogCi1MYXlvdXRTaXplIFN0
eWxlQ2FjaGVkSW1hZ2U6OmltYWdlU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciwg
ZmxvYXQgbXVsdGlwbGllcikgY29uc3QKK0Zsb2F0U2l6ZSBTdHlsZUNhY2hlZEltYWdlOjppbWFn
ZVNpemUoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGZsb2F0IG11bHRpcGxpZXIpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1faW1hZ2UtPmltYWdlU2l6ZUZvclJlbmRlcmVyKHJlbmRlcmVy
LCBtdWx0aXBsaWVyKTsKIH0KQEAgLTg2LDkgKzg2LDkgQEAgYm9vbCBTdHlsZUNhY2hlZEltYWdl
Ojp1c2VzSW1hZ2VDb250YWluZXJTaXplKCkgY29uc3QKICAgICByZXR1cm4gbV9pbWFnZS0+dXNl
c0ltYWdlQ29udGFpbmVyU2l6ZSgpOwogfQogCi12b2lkIFN0eWxlQ2FjaGVkSW1hZ2U6OnNldENv
bnRhaW5lclNpemVGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29u
c3QgSW50U2l6ZSYgaW1hZ2VDb250YWluZXJTaXplLCBmbG9hdCBpbWFnZUNvbnRhaW5lclpvb21G
YWN0b3IpCit2b2lkIFN0eWxlQ2FjaGVkSW1hZ2U6OnNldENvbnRhaW5lclNpemVGb3JSZW5kZXJl
cihjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZUNv
bnRhaW5lclNpemUsIGZsb2F0IGltYWdlQ29udGFpbmVyWm9vbUZhY3RvcikKIHsKLSAgICBtX2lt
YWdlLT5zZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIocmVuZGVyZXIsIGltYWdlQ29udGFpbmVy
U2l6ZSwgaW1hZ2VDb250YWluZXJab29tRmFjdG9yKTsKKyAgICBtX2ltYWdlLT5zZXRDb250YWlu
ZXJTaXplRm9yUmVuZGVyZXIocmVuZGVyZXIsIExheW91dFNpemUoaW1hZ2VDb250YWluZXJTaXpl
KSwgaW1hZ2VDb250YWluZXJab29tRmFjdG9yKTsKIH0KIAogdm9pZCBTdHlsZUNhY2hlZEltYWdl
OjphZGRDbGllbnQoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCkBAIC0xMDEsNyArMTAxLDcgQEAg
dm9pZCBTdHlsZUNhY2hlZEltYWdlOjpyZW1vdmVDbGllbnQoUmVuZGVyRWxlbWVudCogcmVuZGVy
ZXIpCiAgICAgbV9pbWFnZS0+cmVtb3ZlQ2xpZW50KHJlbmRlcmVyKTsKIH0KIAotUGFzc1JlZlB0
cjxJbWFnZT4gU3R5bGVDYWNoZWRJbWFnZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIs
IGNvbnN0IEludFNpemUmKSBjb25zdAorUGFzc1JlZlB0cjxJbWFnZT4gU3R5bGVDYWNoZWRJbWFn
ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1faW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmgK
aW5kZXggOTU5NDFmYzA1OTFhNDYwYzlkNDkzMDQ0MDBkMGE5MzQ1ZjNkMDVmZC4uNTJjMGMwZjU1
Y2M1ZWNjNTU3MTRlYzY2MjE1Nzg0MWQ4OGIwNWM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5oCkBAIC00OCwxNSArNDgsMTUgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgY2FuUmVuZGVyKGNvbnN0IFJlbmRlck9iamVjdCos
IGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBpc0xv
YWRlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBlcnJvck9jY3VycmVkKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBMYXlvdXRTaXplIGltYWdlU2l6ZShjb25zdCBS
ZW5kZXJFbGVtZW50KiwgZmxvYXQgbXVsdGlwbGllcikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBGbG9hdFNpemUgaW1hZ2VTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBmbG9hdCBtdWx0
aXBsaWVyKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2
ZVdpZHRoKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRp
dmVIZWlnaHQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJp
bnNpY0RpbWVuc2lvbnMoY29uc3QgUmVuZGVyRWxlbWVudCosIExlbmd0aCYgaW50cmluc2ljV2lk
dGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIo
Y29uc3QgUmVuZGVyRWxlbWVudCosIGNvbnN0IEludFNpemUmLCBmbG9hdCkgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJF
bGVtZW50KiwgY29uc3QgRmxvYXRTaXplJiwgZmxvYXQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBhZGRDbGllbnQoUmVuZGVyRWxlbWVudCopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVDbGllbnQoUmVuZGVyRWxlbWVudCopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEludFNpemUmKSBjb25z
dCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVs
ZW1lbnQqLCBjb25zdCBGbG9hdFNpemUmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJv
b2wga25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIGV4cGxpY2l0IFN0eWxlQ2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2UqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmNw
cAppbmRleCBmOTViMmM5NDBkMGEwODEzNTc3ZTNkNjI3MzllMTc4NDkxNDU3YWMzLi42YzFiMDE3
MjRiZGQxNjMyZDM4YmZmNDg4MWRkYTMzNmNiZDA3OTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwCkBAIC02OSw5
ICs2OSw5IEBAIGJvb2wgU3R5bGVDYWNoZWRJbWFnZVNldDo6ZXJyb3JPY2N1cnJlZCgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fYmVzdEZpdEltYWdlLT5lcnJvck9jY3VycmVkKCk7CiB9CiAKLUxheW91
dFNpemUgU3R5bGVDYWNoZWRJbWFnZVNldDo6aW1hZ2VTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQq
IHJlbmRlcmVyLCBmbG9hdCBtdWx0aXBsaWVyKSBjb25zdAorRmxvYXRTaXplIFN0eWxlQ2FjaGVk
SW1hZ2VTZXQ6OmltYWdlU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgZmxvYXQg
bXVsdGlwbGllcikgY29uc3QKIHsKLSAgICBMYXlvdXRTaXplIHNjYWxlZEltYWdlU2l6ZSA9IG1f
YmVzdEZpdEltYWdlLT5pbWFnZVNpemVGb3JSZW5kZXJlcihyZW5kZXJlciwgbXVsdGlwbGllcik7
CisgICAgRmxvYXRTaXplIHNjYWxlZEltYWdlU2l6ZSA9IG1fYmVzdEZpdEltYWdlLT5pbWFnZVNp
emVGb3JSZW5kZXJlcihyZW5kZXJlciwgbXVsdGlwbGllcik7CiAgICAgc2NhbGVkSW1hZ2VTaXpl
LnNjYWxlKDEgLyBtX2ltYWdlU2NhbGVGYWN0b3IpOwogICAgIHJldHVybiBzY2FsZWRJbWFnZVNp
emU7CiB9CkBAIC05Niw5ICs5Niw5IEBAIGJvb2wgU3R5bGVDYWNoZWRJbWFnZVNldDo6dXNlc0lt
YWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYmVzdEZpdEltYWdlLT51c2Vz
SW1hZ2VDb250YWluZXJTaXplKCk7CiB9CiAKLXZvaWQgU3R5bGVDYWNoZWRJbWFnZVNldDo6c2V0
Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBj
b25zdCBJbnRTaXplJiBpbWFnZUNvbnRhaW5lclNpemUsIGZsb2F0IGltYWdlQ29udGFpbmVyWm9v
bUZhY3RvcikKK3ZvaWQgU3R5bGVDYWNoZWRJbWFnZVNldDo6c2V0Q29udGFpbmVyU2l6ZUZvclJl
bmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpemUmIGlt
YWdlQ29udGFpbmVyU2l6ZSwgZmxvYXQgaW1hZ2VDb250YWluZXJab29tRmFjdG9yKQogewotICAg
IG1fYmVzdEZpdEltYWdlLT5zZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIocmVuZGVyZXIsIGlt
YWdlQ29udGFpbmVyU2l6ZSwgaW1hZ2VDb250YWluZXJab29tRmFjdG9yKTsKKyAgICBtX2Jlc3RG
aXRJbWFnZS0+c2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKHJlbmRlcmVyLCBMYXlvdXRTaXpl
KGltYWdlQ29udGFpbmVyU2l6ZSksIGltYWdlQ29udGFpbmVyWm9vbUZhY3Rvcik7CiB9CiAKIHZv
aWQgU3R5bGVDYWNoZWRJbWFnZVNldDo6YWRkQ2xpZW50KFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
KQpAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgU3R5bGVDYWNoZWRJbWFnZVNldDo6cmVtb3ZlQ2xp
ZW50KFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQogICAgIG1fYmVzdEZpdEltYWdlLT5yZW1vdmVD
bGllbnQocmVuZGVyZXIpOwogfQogCi1QYXNzUmVmUHRyPEltYWdlPiBTdHlsZUNhY2hlZEltYWdl
U2V0OjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYpIGNvbnN0
CitQYXNzUmVmUHRyPEltYWdlPiBTdHlsZUNhY2hlZEltYWdlU2V0OjppbWFnZShSZW5kZXJFbGVt
ZW50KiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXplJikgY29uc3QKIHsKICAgICByZXR1cm4gbV9i
ZXN0Rml0SW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmgKaW5kZXgg
Y2Q5Y2Y1ZTRiMzczMGU5ODZiYTA4OWU3NTAwNmY0YjQ2ODM1NjY1Yy4uNDRjOWYzMDhhYTliMDM4
NDE5NDMwNGU4NTQ4MTg0ZjNjMTYzNDFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5oCkBAIC02NCwxNSArNjQsMTUgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgY2FuUmVuZGVyKGNvbnN0IFJlbmRlck9iamVjdCos
IGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBpc0xv
YWRlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBlcnJvck9jY3VycmVkKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBMYXlvdXRTaXplIGltYWdlU2l6ZShjb25zdCBS
ZW5kZXJFbGVtZW50KiwgZmxvYXQgbXVsdGlwbGllcikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBGbG9hdFNpemUgaW1hZ2VTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBmbG9hdCBtdWx0
aXBsaWVyKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2
ZVdpZHRoKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRp
dmVIZWlnaHQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJp
bnNpY0RpbWVuc2lvbnMoY29uc3QgUmVuZGVyRWxlbWVudCosIExlbmd0aCYgaW50cmluc2ljV2lk
dGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIo
Y29uc3QgUmVuZGVyRWxlbWVudCosIGNvbnN0IEludFNpemUmLCBmbG9hdCkgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJF
bGVtZW50KiwgY29uc3QgRmxvYXRTaXplJiwgZmxvYXQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBhZGRDbGllbnQoUmVuZGVyRWxlbWVudCopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVDbGllbnQoUmVuZGVyRWxlbWVudCopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEludFNpemUmKSBjb25z
dCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVs
ZW1lbnQqLCBjb25zdCBGbG9hdFNpemUmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGZs
b2F0IGltYWdlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2ltYWdlU2Nh
bGVGYWN0b3I7IH0KICAgICB2aXJ0dWFsIGJvb2wga25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRl
ckVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCmluZGV4IDZiNTlmZTdjNDk2
NDI1ZDYwYzgxYjRiYzQ4MTMwMTY2M2ViMmE0Y2UuLjBmN2Y3NGZhNGRiOTczOTI1NTczYjUxYmE1
NjdhMzgxNTU3NDllMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTQyLDI0ICs0MiwyNSBAQCBQYXNzUmVm
UHRyPENTU1ZhbHVlPiBTdHlsZUdlbmVyYXRlZEltYWdlOjpjc3NWYWx1ZSgpIGNvbnN0CiAgICAg
cmV0dXJuICZjb25zdF9jYXN0PENTU0ltYWdlR2VuZXJhdG9yVmFsdWUmPihtX2ltYWdlR2VuZXJh
dG9yVmFsdWUuZ2V0KCkpOwogfQogCi1MYXlvdXRTaXplIFN0eWxlR2VuZXJhdGVkSW1hZ2U6Omlt
YWdlU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgZmxvYXQgbXVsdGlwbGllcikg
Y29uc3QKK0Zsb2F0U2l6ZSBTdHlsZUdlbmVyYXRlZEltYWdlOjppbWFnZVNpemUoY29uc3QgUmVu
ZGVyRWxlbWVudCogcmVuZGVyZXIsIGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0CiB7CiAgICAgaWYg
KG1fZml4ZWRTaXplKSB7Ci0gICAgICAgIEludFNpemUgZml4ZWRTaXplID0gY29uc3RfY2FzdDxD
U1NJbWFnZUdlbmVyYXRvclZhbHVlJj4obV9pbWFnZUdlbmVyYXRvclZhbHVlLmdldCgpKS5maXhl
ZFNpemUocmVuZGVyZXIpOworICAgICAgICBGbG9hdFNpemUgZml4ZWRTaXplID0gY29uc3RfY2Fz
dDxDU1NJbWFnZUdlbmVyYXRvclZhbHVlJj4obV9pbWFnZUdlbmVyYXRvclZhbHVlLmdldCgpKS5m
aXhlZFNpemUocmVuZGVyZXIpOwogICAgICAgICBpZiAobXVsdGlwbGllciA9PSAxLjBmKQogICAg
ICAgICAgICAgcmV0dXJuIGZpeGVkU2l6ZTsKIAotICAgICAgICBMYXlvdXRVbml0IHdpZHRoID0g
Zml4ZWRTaXplLndpZHRoKCkgKiBtdWx0aXBsaWVyOwotICAgICAgICBMYXlvdXRVbml0IGhlaWdo
dCA9IGZpeGVkU2l6ZS5oZWlnaHQoKSAqIG11bHRpcGxpZXI7CisgICAgICAgIGZsb2F0IHdpZHRo
ID0gZml4ZWRTaXplLndpZHRoKCkgKiBtdWx0aXBsaWVyOworICAgICAgICBmbG9hdCBoZWlnaHQg
PSBmaXhlZFNpemUuaGVpZ2h0KCkgKiBtdWx0aXBsaWVyOwogCi0gICAgICAgIC8vIERvbid0IGxl
dCBpbWFnZXMgdGhhdCBoYXZlIGEgd2lkdGgvaGVpZ2h0ID49IDEgc2hyaW5rIGJlbG93IDEgd2hl
biB6b29tZWQuCisgICAgICAgIC8vIERvbid0IGxldCBpbWFnZXMgdGhhdCBoYXZlIGEgd2lkdGgv
aGVpZ2h0ID49IDEgc2hyaW5rIGJlbG93IDEgZGV2aWNlIHBpeGVsIHdoZW4gem9vbWVkLgorICAg
ICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IHJlbmRlcmVyID8gcmVuZGVyZXItPmRvY3Vt
ZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSA6IDE7CiAgICAgICAgIGlmIChmaXhlZFNpemUud2lk
dGgoKSA+IDApCi0gICAgICAgICAgICB3aWR0aCA9IHN0ZDo6bWF4PExheW91dFVuaXQ+KDEsIHdp
ZHRoKTsKKyAgICAgICAgICAgIHdpZHRoID0gc3RkOjptYXg8ZmxvYXQ+KDEgLyBkZXZpY2VTY2Fs
ZUZhY3Rvciwgd2lkdGgpOwogCiAgICAgICAgIGlmIChmaXhlZFNpemUuaGVpZ2h0KCkgPiAwKQot
ICAgICAgICAgICAgaGVpZ2h0ID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oMSwgaGVpZ2h0KTsKKyAg
ICAgICAgICAgIGhlaWdodCA9IHN0ZDo6bWF4PGZsb2F0PigxIC8gZGV2aWNlU2NhbGVGYWN0b3Is
IGhlaWdodCk7CiAKLSAgICAgICAgcmV0dXJuIExheW91dFNpemUod2lkdGgsIGhlaWdodCk7Cisg
ICAgICAgIHJldHVybiBGbG9hdFNpemUod2lkdGgsIGhlaWdodCk7CiAgICAgfQogICAgIAogICAg
IHJldHVybiBtX2NvbnRhaW5lclNpemU7CkBAIC02Nyw4ICs2OCw4IEBAIExheW91dFNpemUgU3R5
bGVHZW5lcmF0ZWRJbWFnZTo6aW1hZ2VTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
LCBmbG9hdCBtCiAKIHZvaWQgU3R5bGVHZW5lcmF0ZWRJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0Rp
bWVuc2lvbnMoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIExlbmd0aCYgaW50cmluc2lj
V2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlv
KQogewotICAgIC8vIEF0IGEgem9vbSBsZXZlbCBvZiAxIHRoZSBpbWFnZSBpcyBndWFyYW50ZWVk
IHRvIGhhdmUgYW4gaW50ZWdlciBzaXplLgotICAgIEludFNpemUgc2l6ZSA9IGZsb29yZWRJbnRT
aXplKGltYWdlU2l6ZShyZW5kZXJlciwgMSkpOworICAgIC8vIEF0IGEgem9vbSBsZXZlbCBvZiAx
IHRoZSBpbWFnZSBpcyBndWFyYW50ZWVkIHRvIGhhdmUgYSBkZXZpY2UgcGl4ZWwgc2l6ZS4KKyAg
ICBGbG9hdFNpemUgc2l6ZSA9IGZsb29yZWRGb3JQYWludGluZyhMYXlvdXRTaXplKGltYWdlU2l6
ZShyZW5kZXJlciwgMSkpLCByZW5kZXJlciA/IHJlbmRlcmVyLT5kb2N1bWVudCgpLmRldmljZVNj
YWxlRmFjdG9yKCkgOiAxKTsKICAgICBpbnRyaW5zaWNXaWR0aCA9IExlbmd0aChzaXplLndpZHRo
KCksIEZpeGVkKTsKICAgICBpbnRyaW5zaWNIZWlnaHQgPSBMZW5ndGgoc2l6ZS5oZWlnaHQoKSwg
Rml4ZWQpOwogICAgIGludHJpbnNpY1JhdGlvID0gc2l6ZTsKQEAgLTg0LDcgKzg1LDcgQEAgdm9p
ZCBTdHlsZUdlbmVyYXRlZEltYWdlOjpyZW1vdmVDbGllbnQoUmVuZGVyRWxlbWVudCogcmVuZGVy
ZXIpCiAgICAgbV9pbWFnZUdlbmVyYXRvclZhbHVlLT5yZW1vdmVDbGllbnQocmVuZGVyZXIpOwog
fQogCi1QYXNzUmVmUHRyPEltYWdlPiBTdHlsZUdlbmVyYXRlZEltYWdlOjppbWFnZShSZW5kZXJF
bGVtZW50KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgc2l6ZSkgY29uc3QKK1Bhc3NSZWZQdHI8
SW1hZ2U+IFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
LCBjb25zdCBGbG9hdFNpemUmIHNpemUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8
Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSY+KG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS5nZXQoKSkuaW1h
Z2UocmVuZGVyZXIsIHNpemUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmgKaW5kZXggNDJhNzA1Y2U3MzU3MTg2MjM5OGQ3
OWFiZDA2MmRhYTQxZTQzYzY3Ni4uNGRiZTFlZWRmMWM4NDFmZGExNzRiMmI2OWVjYzUzMjdjMzg3
NDkzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2Vu
ZXJhdGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVH
ZW5lcmF0ZWRJbWFnZS5oCkBAIC00NSwyMSArNDUsMjEgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gY3NzVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgTGF5b3V0U2l6ZSBpbWFnZVNpemUoY29uc3QgUmVuZGVyRWxlbWVudCosIGZsb2F0
IG11bHRpcGxpZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgRmxvYXRTaXplIGltYWdl
U2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiwgZmxvYXQgbXVsdGlwbGllcikgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICFtX2ZpeGVkU2l6ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1Jl
bGF0aXZlSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fZml4ZWRTaXplOyB9CiAg
ICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGNvbnN0IFJlbmRlckVs
ZW1lbnQqLCBMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwg
RmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHVz
ZXNJbWFnZUNvbnRhaW5lclNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9maXhlZFNp
emU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0
IFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRTaXplJiBjb250YWluZXJTaXplLCBmbG9hdCkgb3Zl
cnJpZGUgeyBtX2NvbnRhaW5lclNpemUgPSBjb250YWluZXJTaXplOyB9CisgICAgdmlydHVhbCB2
b2lkIHNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJFbGVtZW50KiwgY29u
c3QgRmxvYXRTaXplJiBjb250YWluZXJTaXplLCBmbG9hdCkgb3ZlcnJpZGUgeyBtX2NvbnRhaW5l
clNpemUgPSBjb250YWluZXJTaXplOyB9CiAgICAgdmlydHVhbCB2b2lkIGFkZENsaWVudChSZW5k
ZXJFbGVtZW50Kikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudChSZW5k
ZXJFbGVtZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEltYWdlPiBpbWFn
ZShSZW5kZXJFbGVtZW50KiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0
U2l6ZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBrbm93blRvQmVPcGFxdWUo
Y29uc3QgUmVuZGVyRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgU3R5bGVHZW5lcmF0
ZWRJbWFnZShQYXNzUmVmPENTU0ltYWdlR2VuZXJhdG9yVmFsdWU+KTsKICAgICAKICAgICBSZWY8
Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZT4gbV9pbWFnZUdlbmVyYXRvclZhbHVlOwotICAgIEludFNp
emUgbV9jb250YWluZXJTaXplOworICAgIEZsb2F0U2l6ZSBtX2NvbnRhaW5lclNpemU7CiAgICAg
Ym9vbCBtX2ZpeGVkU2l6ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVJbWFnZS5oCmluZGV4IDczY2ZkYjljZWIzZDBlMzc3MGMyZWQ0MjBiYTkxMzE4MTBiMGFi
MmUuLmMwY2M3ZmNiNDhkZWIwODUwNmZhNjk5ZGM5MTBlNzk4YWQ2ZjJjZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUltYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW1hZ2UuaApAQCAtMjUsOSArMjUsOCBAQAog
I2RlZmluZSBTdHlsZUltYWdlX2gKIAogI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCisjaW5jbHVkZSAi
RmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJJbnRTaXplLmgiCi0j
aW5jbHVkZSAiTGF5b3V0U2l6ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC01NSwx
NSArNTQsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjYW5SZW5kZXIoY29uc3QgUmVu
ZGVyT2JqZWN0KiwgZmxvYXQgLyptdWx0aXBsaWVyKi8pIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAg
dmlydHVhbCBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgTGF5b3V0U2l6ZSBpbWFnZVNpemUoY29uc3QgUmVuZGVyRWxlbWVudCosIGZsb2F0
IG11bHRpcGxpZXIpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBpbWFnZVNpemUo
Y29uc3QgUmVuZGVyRWxlbWVudCosIGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoY29uc3QgUmVuZGVyRWxlbWVu
dCosIExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9h
dFNpemUmIGludHJpbnNpY1JhdGlvKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVs
YXRpdmVXaWR0aCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2
ZUhlaWdodCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgdXNlc0ltYWdlQ29udGFpbmVy
U2l6ZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFpbmVyU2l6ZUZvclJl
bmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRTaXplJiwgZmxvYXQpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRl
ckVsZW1lbnQqLCBjb25zdCBGbG9hdFNpemUmLCBmbG9hdCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBhZGRDbGllbnQoUmVuZGVyRWxlbWVudCopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
Q2xpZW50KFJlbmRlckVsZW1lbnQqKSA9IDA7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEltYWdl
PiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBGbG9h
dFNpemUmKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBXcmFwcGVkSW1hZ2VQdHIgZGF0YSgpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIGZsb2F0IGltYWdlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJl
dHVybiAxOyB9CiAgICAgdmlydHVhbCBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJF
bGVtZW50KikgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVQZW5kaW5nSW1hZ2UuaAppbmRleCAyNWY0MzE3MjJmYmMwNjc4MWE1YzQwNzA2ODVm
ODA2MGRjMDRmMWVjLi5iOTU0ODY4NTRhYTFjOWFjYjZhMWFiOTIyMDNkNzk0MTQxNjA2YjA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1h
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1h
Z2UuaApAQCAtNjAsMTYgKzYwLDE2IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IGNzc1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV92YWx1ZTsg
fQogICAgIAotICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBpbWFnZVNpemUoY29uc3QgUmVuZGVyRWxl
bWVudCosIGZsb2F0IC8qbXVsdGlwbGllciovKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBMYXlv
dXRTaXplKCk7IH0KKyAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBpbWFnZVNpemUoY29uc3QgUmVuZGVy
RWxlbWVudCosIGZsb2F0IC8qbXVsdGlwbGllciovKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBG
bG9hdFNpemUoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhh
c1JlbGF0aXZlSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoY29uc3QgUmVuZGVyRWxlbWVu
dCosIExlbmd0aCYgLyogaW50cmluc2ljV2lkdGggKi8gLCBMZW5ndGgmIC8qIGludHJpbnNpY0hl
aWdodCAqLywgRmxvYXRTaXplJiAvKiBpbnRyaW5zaWNSYXRpbyAqLykgeyB9CiAgICAgdmlydHVh
bCBib29sIHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29u
c3QgUmVuZGVyRWxlbWVudCosIGNvbnN0IEludFNpemUmLCBmbG9hdCkgb3ZlcnJpZGUgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIHNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJF
bGVtZW50KiwgY29uc3QgRmxvYXRTaXplJiwgZmxvYXQpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBhZGRDbGllbnQoUmVuZGVyRWxlbWVudCopIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVDbGllbnQoUmVuZGVyRWxlbWVudCopIG92ZXJyaWRlIHsgfQogCi0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgSW50
U2l6ZSYpIGNvbnN0IG92ZXJyaWRlCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEltYWdlPiBpbWFn
ZShSZW5kZXJFbGVtZW50KiwgY29uc3QgRmxvYXRTaXplJikgY29uc3Qgb3ZlcnJpZGUKICAgICB7
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcAppbmRleCBk
YjViMDZiNzU2M2JhMzkxYTQyN2UzOWRiYTZlZGU5MDk4ZGY0YjEzLi43NDg2NjBmYzQ5MmIzNjEz
M2VlZTM1ZjIzOTA5ODZkOTdjNDc2MWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlQ2FjaGUuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIklt
YWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiTGF5b3V0U2l6ZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
ICNpbmNsdWRlICJSZW5kZXJTVkdSb290LmgiCiAjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIKQEAgLTUw
LDcgKzUxLDcgQEAgdm9pZCBTVkdJbWFnZUNhY2hlOjpyZW1vdmVDbGllbnRGcm9tQ2FjaGUoY29u
c3QgQ2FjaGVkSW1hZ2VDbGllbnQqIGNsaWVudCkKICAgICBtX2ltYWdlRm9yQ29udGFpbmVyTWFw
LnJlbW92ZShjbGllbnQpOwogfQogCi12b2lkIFNWR0ltYWdlQ2FjaGU6OnNldENvbnRhaW5lclNp
emVGb3JSZW5kZXJlcihjb25zdCBDYWNoZWRJbWFnZUNsaWVudCogY2xpZW50LCBjb25zdCBJbnRT
aXplJiBjb250YWluZXJTaXplLCBmbG9hdCBjb250YWluZXJab29tKQordm9pZCBTVkdJbWFnZUNh
Y2hlOjpzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgQ2FjaGVkSW1hZ2VDbGllbnQq
IGNsaWVudCwgY29uc3QgTGF5b3V0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVy
Wm9vbSkKIHsKICAgICBBU1NFUlQoY2xpZW50KTsKICAgICBBU1NFUlQoIWNvbnRhaW5lclNpemUu
aXNFbXB0eSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5o
CmluZGV4IGY4NjBjYmRkZDVlYjVjZTJiZWY4MmQ5MGNiNTk0OTQyYmM2NmZiYjMuLjA1ZjUyM2U2
ZmI2YjQ4OTJjNGIyYTdiYTJlOTU5M2NiNmZkMzI1ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaApAQCAtMzEsNiArMzEsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBDYWNoZWRJbWFnZTsKIGNsYXNzIENhY2hlZEltYWdlQ2xpZW50OwogY2xh
c3MgSW1hZ2VCdWZmZXI7CitjbGFzcyBMYXlvdXRTaXplOwogY2xhc3MgU1ZHSW1hZ2U7CiBjbGFz
cyBTVkdJbWFnZUZvckNvbnRhaW5lcjsKIGNsYXNzIFJlbmRlck9iamVjdDsKQEAgLTQzLDcgKzQ0
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCByZW1vdmVDbGllbnRGcm9tQ2FjaGUoY29uc3QgQ2Fj
aGVkSW1hZ2VDbGllbnQqKTsKIAotICAgIHZvaWQgc2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVy
KGNvbnN0IENhY2hlZEltYWdlQ2xpZW50KiwgY29uc3QgSW50U2l6ZSYsIGZsb2F0KTsKKyAgICB2
b2lkIHNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihjb25zdCBDYWNoZWRJbWFnZUNsaWVudCos
IGNvbnN0IExheW91dFNpemUmLCBmbG9hdCk7CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZUZvclJl
bmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwogCiAgICAgSW1hZ2UqIGltYWdlRm9y
UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0Kik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228310</attachid>
            <date>2014-04-01 13:03:53 -0700</date>
            <delta_ts>2014-04-02 08:17:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130659-20140401130336.patch</filename>
            <type>text/plain</type>
            <size>52073</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2NTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM0OTRkYzM1OTA5YjNk
ZWZmYmRjM2EyYzg0ODNiZWE1Y2JjNzljYi4uMDczMzYwY2YyZTFiNTBjYWU2OTU2NWE1N2U5YjM4
N2MxNTE3MmJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE0LTA0LTAxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VicGl4ZWwgcmVuZGVyaW5n
OiBUcmFuc2l0aW9uIGNsYXNzIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUvY2xhc3MgU3R5bGVJbWFn
ZSAoYW5kIGl0cyBkZXBlbmRlbmNpZXMpIGZyb20gCisgICAgICAgIEludFNpemUgdG8gRmxvYXRT
aXplIHRvIGVuYWJsZSBzdWJwaXhlbCBzaXplZCAoZ2VuZXJhdGVkKWltYWdlcy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDY1OQorCisgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlciBhbmQgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBU
aGlzIGlzIGluIHByZXBhcmF0aW9uIHRvIHN1cHBvcnQgc3VicGl4ZWwgcG9zaXRpb25lZC9zaXpl
ZCBiYWNrZ3JvdW5kIGltYWdlcy4gR2VuZXJhdGVkIGltYWdlcworICAgICAgICBuZWVkcyB0byBi
ZSBhYmxlIHRvIHNpemVkIG9uIGRldmljZSBwaXhlbHMuCisKKyAgICAgICAgTm8gY2hhbmdlIGlu
IGJlaGF2aW9yLgorCisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoK
KyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9D
U1NDYW52YXNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYW52YXNWYWx1ZTo6Zml4
ZWRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbnZhc1ZhbHVlOjppbWFnZSk6CisgICAg
ICAgICogY3NzL0NTU0NhbnZhc1ZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFkZVZh
bHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjpmaXhlZFNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Jvc3NmYWRlVmFsdWU6OmltYWdlKToKKyAgICAgICAg
KiBjc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTRmlsdGVySW1hZ2VW
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXJJbWFnZVZhbHVlOjpmaXhlZFNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6aW1hZ2UpOgorICAg
ICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0dyYWRp
ZW50VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6aW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6cG9zaXRpb25Gcm9tVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTR3JhZGllbnRWYWx1ZTo6Y29tcHV0ZUVuZFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OmVuZFBvaW50c0Zyb21BbmdsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NMaW5lYXJHcmFkaWVu
dFZhbHVlOjpjcmVhdGVHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NSYWRpYWxHcmFk
aWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudCk6CisgICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFs
dWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6OmZpeGVkU2l6ZSk6Cisg
ICAgICAgICogY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Y2FjaGVkSW1hZ2VGb3JTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnNhdmVDYWNoZWRJbWFnZUZvclNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6ZXZpY3RDYWNoZWRH
ZW5lcmF0ZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVl
OjpDYWNoZWRHZW5lcmF0ZWRJbWFnZTo6Q2FjaGVkR2VuZXJhdGVkSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Zml4ZWRTaXplKToKKyAgICAgICAgKiBjc3MvQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6c2V0Q29udGFpbmVyU2l6ZUZv
clJlbmRlcmVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemVIYXNoLmg6IEFkZGVkLgorICAgICAgICAo
V1RGOjpGbG9hdEhhc2g8V2ViQ29yZTo6RmxvYXRTaXplPjo6aGFzaCk6CisgICAgICAgIChXVEY6
OkZsb2F0SGFzaDxXZWJDb3JlOjpGbG9hdFNpemU+OjplcXVhbCk6CisgICAgICAgIChXVEY6Okhh
c2hUcmFpdHM8V2ViQ29yZTo6RmxvYXRTaXplPjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAg
ICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJDb3JlOjpGbG9hdFNpemU+Ojppc0RlbGV0ZWRWYWx1
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0U2l6ZS5oOgorICAgICAgICAo
V2ViQ29yZTo6Zmxvb3JlZEZvclBhaW50aW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
SW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlz
dE1hcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpjb21wdXRl
UHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxl
Q2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDYWNoZWRJbWFnZTo6aW1h
Z2VTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ2FjaGVkSW1hZ2U6OnNldENvbnRhaW5l
clNpemVGb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hlZEltYWdlOjpp
bWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZUNhY2hlZEltYWdlU2V0OjppbWFnZVNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVDYWNoZWRJbWFnZVNldDo6c2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OmltYWdlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlR2VuZXJhdGVkSW1hZ2U6OmltYWdlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUdl
bmVyYXRlZEltYWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUdlbmVyYXRlZEltYWdlOjppbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5
bGVJbWFnZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5o
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ltYWdlQ2FjaGU6OnNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcik6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaDoKKwogMjAxNC0wNC0wMSAgSmFtZXMg
Q3JhaWcgIDxqY3JhaWdAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjphcmlhTGl2ZVJlZ2lvbkF0b21pYygpIHNob3VsZCBkZWZhdWx0IHRvIHRydWUg
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmlu
ZGV4IGQwZjVlYTgzOWUwMzljOGY3MWJhMjUwNDBkMDUxNTgwZDVkZWVlYjQuLjJlY2U4N2U3ZDBl
OTE4NWVkZmVjZTBlZjk4ZjRhNzI3NTI5ODlkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtMTkzNTAsNiArMTkzNTAsNyBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcRmxvYXRSZWN0LmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xGbG9hdFJvdW5k
ZWRSZWN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1xGbG9hdFNpemUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXEZsb2F0U2l6ZUhhc2guaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXGdyYXBoaWNzXEZvbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXGdyYXBoaWNzXEZvbnRDYWNoZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccGxhdGZvcm1cZ3JhcGhpY3NcRm9udERhdGEuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCBlYjIz
ODJmNmFhNGI3MjRiMGQzNjkxYzgyMjQ2MDg4NmRhMzMzYzdkLi4wOTI4YWI4YTUyY2FjZWEwNzYz
YmJiYzc5YTczNTZlMDE1MjNjOGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC0xMjc3Myw2ICsxMjc3Myw5
IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xGbG9hdFNp
emUuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzPC9GaWx0ZXI+CiAgICAgPC9D
bEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xG
bG9hdFNpemVIYXNoLmgiPgorICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljczwvRmlsdGVy
PgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcRm9udC5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8L0ZpbHRl
cj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3NTIxOTczNjY1ZTYzZTQwMDcxNzE1YTlmNjliYmMx
N2UxMjY3MGFmLi5iM2FlYjgyMjIwMWNhN2I2ZGRkOGU5MDkwMmRmZGUxYzk1YzMzNzI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0yMDAxLDYgKzIwMDEsNyBAQAogCQk1N0NGNDk3NTE0RUUzNkQ3MDBFQ0ZGMTQgLyogSW5zZXJ0
aW9uUG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU3Q0Y0OTczMTRFRTM2RDcwMEVDRkYxNCAvKiBJbnNlcnRpb25Qb2ludC5oICovOyB9OwogCQk1
ODk1NTZFRDE4RDRBNDQwMDA3NjRCMDMgLyogQm9yZGVyRWRnZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTg5NTU2RUMxOEQ0QTQ0MDAwNzY0QjAzIC8q
IEJvcmRlckVkZ2UuaCAqLzsgfTsKIAkJNThBRUUyRjQxOEQ0QkNDRjAwMjJFN0ZFIC8qIEJvcmRl
ckVkZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NThBRUUyRjMxOEQ0QkNDRjAwMjJFN0ZFIC8qIEJvcmRlckVkZ2UuY3BwICovOyB9OworCQk1OENE
MzVDQjE4RUI0QzM5MDBCOUYzQUMgLyogRmxvYXRTaXplSGFzaC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNThDRDM1Q0ExOEVCNEMzOTAwQjlGM0FDIC8q
IEZsb2F0U2l6ZUhhc2guaCAqLzsgfTsKIAkJNTkwNUFEQkYxMzAyRjNDRTAwRjExNkRGIC8qIFhN
TFRyZWVWaWV3ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTkwNUFEQkQxMzAyRjNDRTAwRjExNkRGIC8qIFhNTFRyZWVWaWV3ZXIuY3BwICovOyB9
OwogCQk1OTA1QURDMDEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTkwNUFEQkUxMzAyRjNDRTAw
RjExNkRGIC8qIFhNTFRyZWVWaWV3ZXIuaCAqLzsgfTsKIAkJNTkwRTFCNDkxMUU0RUY0QjAwNjlG
Nzg0IC8qIERldmljZU9yaWVudGF0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTkwRTFCNDgxMUU0RUY0QjAwNjlGNzg0IC8qIERldmljZU9y
aWVudGF0aW9uRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC04OTk0LDYgKzg5OTUsNyBAQAogCQk1N0NGNDk3MzE0RUUzNkQ3MDBFQ0ZGMTQg
LyogSW5zZXJ0aW9uUG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5z
ZXJ0aW9uUG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTg5NTU2RUMxOEQ0
QTQ0MDAwNzY0QjAzIC8qIEJvcmRlckVkZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQm9yZGVyRWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OEFFRTJG
MzE4RDRCQ0NGMDAyMkU3RkUgLyogQm9yZGVyRWRnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBCb3JkZXJFZGdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNThDRDM1Q0ExOEVCNEMzOTAwQjlGM0FDIC8qIEZsb2F0U2l6ZUhhc2guaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxvYXRTaXplSGFzaC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1OTA1QURCRDEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYTUxUcmVlVmlld2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTkwNUFEQkUxMzAyRjNDRTAwRjEx
NkRGIC8qIFhNTFRyZWVWaWV3ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
WE1MVHJlZVZpZXdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OTBFMUI0ODEx
RTRFRjRCMDA2OUY3ODQgLyogRGV2aWNlT3JpZW50YXRpb25EYXRhLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERldmljZU9yaWVudGF0aW9uRGF0YS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjAwMzEsNiArMjAwMzMsNyBAQAogCQkJCTZFMEU1NjlBMTgzQkZG
RTYwMEUwRThENSAvKiBGbG9hdFJvdW5kZWRSZWN0LmggKi8sCiAJCQkJQjI3NTM1M0UwQjA1Mzgx
NDAwMkNFNjRGIC8qIEZsb2F0U2l6ZS5jcHAgKi8sCiAJCQkJQjI3NTM1M0YwQjA1MzgxNDAwMkNF
NjRGIC8qIEZsb2F0U2l6ZS5oICovLAorCQkJCTU4Q0QzNUNBMThFQjRDMzkwMEI5RjNBQyAvKiBG
bG9hdFNpemVIYXNoLmggKi8sCiAJCQkJQjJDM0RBNEYwRDAwNkNENjAwRUY2RjI2IC8qIEZvbnQu
Y3BwICovLAogCQkJCUIyQzNEQTUwMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250LmggKi8sCiAJCQkJ
QkNCOTJENEUxMjkzNTUwQjAwQzgzODdGIC8qIEZvbnRCYXNlbGluZS5oICovLApAQCAtMjUxNjks
NiArMjUxNzIsNyBAQAogCQkJCUZENDVBOTU4MTc1RDQxNEMwMEMyMUVDOCAvKiBSZWN0YW5nbGVT
aGFwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyRUEzQkIxNTg1Q0Y1NTAwNEZBQTI2IC8qIFJl
ZkNvdW50ZWRTdXBwbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5ODMxQUU0QTE1NDIyNUM5
MDBGRTI2NDQgLyogUmVmZXJyZXJQb2xpY3kuaCBpbiBIZWFkZXJzICovLAorCQkJCTU4Q0QzNUNC
MThFQjRDMzkwMEI5RjNBQyAvKiBGbG9hdFNpemVIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0FCNDE4MjEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk2
Q0RERThEMDE3NzBCQjIyMDAxNkUwNzIgLyogUmVnaW9uT3ZlcnNldFN0YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyNkI5OTk4RjE4MDNBRTcyMDBEMDExMjEgLyogUmVnaXN0ZXJBbGxvY2F0b3Iu
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZh
c1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5jcHAKaW5kZXgg
NWU0MWM4OGEzNTJmY2ZjYWJlMjQ4MWVkZTNhNzY0MzBiMDBhMDcwYi4uNDMxMTA3MTI4YTQ3ZTFj
NmIyMjQ5NzI0NmFlZDk1OGIwOWIwYmRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NhbnZhc1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFs
dWUuY3BwCkBAIC02NiwxMSArNjYsMTEgQEAgdm9pZCBDU1NDYW52YXNWYWx1ZTo6Y2FudmFzRGVz
dHJveWVkKEhUTUxDYW52YXNFbGVtZW50JiBlbGVtZW50KQogICAgIG1fZWxlbWVudCA9IG51bGxw
dHI7CiB9CiAKLUludFNpemUgQ1NTQ2FudmFzVmFsdWU6OmZpeGVkU2l6ZShjb25zdCBSZW5kZXJF
bGVtZW50KiByZW5kZXJlcikKK0Zsb2F0U2l6ZSBDU1NDYW52YXNWYWx1ZTo6Zml4ZWRTaXplKGNv
bnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQogewogICAgIGlmIChIVE1MQ2FudmFzRWxlbWVu
dCogZWx0ID0gZWxlbWVudChyZW5kZXJlci0+ZG9jdW1lbnQoKSkpCi0gICAgICAgIHJldHVybiBJ
bnRTaXplKGVsdC0+d2lkdGgoKSwgZWx0LT5oZWlnaHQoKSk7Ci0gICAgcmV0dXJuIEludFNpemUo
KTsKKyAgICAgICAgcmV0dXJuIEZsb2F0U2l6ZShlbHQtPndpZHRoKCksIGVsdC0+aGVpZ2h0KCkp
OworICAgIHJldHVybiBGbG9hdFNpemUoKTsKIH0KIAogSFRNTENhbnZhc0VsZW1lbnQqIENTU0Nh
bnZhc1ZhbHVlOjplbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTg0LDcgKzg0LDcgQEAg
SFRNTENhbnZhc0VsZW1lbnQqIENTU0NhbnZhc1ZhbHVlOjplbGVtZW50KERvY3VtZW50JiBkb2N1
bWVudCkKICAgICByZXR1cm4gbV9lbGVtZW50OwogfQogCi1QYXNzUmVmUHRyPEltYWdlPiBDU1ND
YW52YXNWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUm
IC8qc2l6ZSovKQorUGFzc1JlZlB0cjxJbWFnZT4gQ1NTQ2FudmFzVmFsdWU6OmltYWdlKFJlbmRl
ckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpemUmIC8qc2l6ZSovKQogewogICAgIEFT
U0VSVChjbGllbnRzKCkuY29udGFpbnMocmVuZGVyZXIpKTsKICAgICBIVE1MQ2FudmFzRWxlbWVu
dCogZWxlbWVudCA9IHRoaXMtPmVsZW1lbnQocmVuZGVyZXItPmRvY3VtZW50KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ2FudmFzVmFsdWUuaAppbmRleCBmMWI2Y2ZiOTY2YmQwNWNjMmNkY2IxMGQwMDI0
ZDA0MGRmZjVmMjRhLi5iNjdkMDRmZWJhMTBlMzRjNzRkNmNkMTg3MDRkYWUyMWFkMGRmMTg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuaApAQCAtNDAsOSArNDAsOSBAQCBwdWJsaWM6
CiAKICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OwogCi0gICAgUGFzc1JlZlB0cjxJ
bWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEludFNpemUmKTsKKyAgICBQYXNzUmVm
UHRyPEltYWdlPiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgRmxvYXRTaXplJik7CiAgICAg
Ym9vbCBpc0ZpeGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICBJbnRTaXplIGZp
eGVkU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50Kik7CisgICAgRmxvYXRTaXplIGZpeGVkU2l6ZShj
b25zdCBSZW5kZXJFbGVtZW50Kik7CiAKICAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBsb2FkU3ViaW1hZ2VzKENhY2hlZFJlc291cmNlTG9hZGVy
KikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcAppbmRleCA3NDE4
NjUwODlmZWZlYjY4ZWNiNjlkYTYwZDliZDA1ZGY2NTNjYjNjLi5hNzMwMDUyNjdiMDQ0ZDc2NzJj
OWQ2MDYzYWJkYTEzY2ZiMjQyYmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q3Jvc3NmYWRlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVW
YWx1ZS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgU3RyaW5nIENTU0Nyb3NzZmFkZVZhbHVlOjpjdXN0
b21DU1NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKLUlu
dFNpemUgQ1NTQ3Jvc3NmYWRlVmFsdWU6OmZpeGVkU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiBy
ZW5kZXJlcikKK0Zsb2F0U2l6ZSBDU1NDcm9zc2ZhZGVWYWx1ZTo6Zml4ZWRTaXplKGNvbnN0IFJl
bmRlckVsZW1lbnQqIHJlbmRlcmVyKQogewogICAgIGZsb2F0IHBlcmNlbnRhZ2UgPSBtX3BlcmNl
bnRhZ2VWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpOwogICAgIGZsb2F0IGludmVyc2VQZXJjZW50YWdl
ID0gMSAtIHBlcmNlbnRhZ2U7CkBAIC04OCw3ICs4OCw3IEBAIEludFNpemUgQ1NTQ3Jvc3NmYWRl
VmFsdWU6OmZpeGVkU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKICAgICBDYWNo
ZWRJbWFnZSogY2FjaGVkVG9JbWFnZSA9IGNhY2hlZEltYWdlRm9yQ1NTVmFsdWUobV90b1ZhbHVl
LmdldCgpLCBjYWNoZWRSZXNvdXJjZUxvYWRlcik7CiAKICAgICBpZiAoIWNhY2hlZEZyb21JbWFn
ZSB8fCAhY2FjaGVkVG9JbWFnZSkKLSAgICAgICAgcmV0dXJuIEludFNpemUoKTsKKyAgICAgICAg
cmV0dXJuIEZsb2F0U2l6ZSgpOwogCiAgICAgRmxvYXRTaXplIGZyb21JbWFnZVNpemUgPSBjYWNo
ZWRGcm9tSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpLT5zaXplKCk7CiAgICAgRmxv
YXRTaXplIHRvSW1hZ2VTaXplID0gY2FjaGVkVG9JbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5k
ZXJlciktPnNpemUoKTsKQEAgLTk2LDkgKzk2LDkgQEAgSW50U2l6ZSBDU1NDcm9zc2ZhZGVWYWx1
ZTo6Zml4ZWRTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQogICAgIC8vIFJvdW5k
aW5nIGlzc3VlcyBjYW4gY2F1c2UgdHJhbnNpdGlvbnMgYmV0d2VlbiBpbWFnZXMgb2YgZXF1YWwg
c2l6ZSB0byByZXR1cm4KICAgICAvLyBhIGRpZmZlcmVudCBmaXhlZCBzaXplOyBhdm9pZCBwZXJm
b3JtaW5nIHRoZSBpbnRlcnBvbGF0aW9uIGlmIHRoZSBpbWFnZXMgYXJlIHRoZSBzYW1lIHNpemUu
CiAgICAgaWYgKGZyb21JbWFnZVNpemUgPT0gdG9JbWFnZVNpemUpCi0gICAgICAgIHJldHVybiBJ
bnRTaXplKGZyb21JbWFnZVNpemUpOworICAgICAgICByZXR1cm4gZnJvbUltYWdlU2l6ZTsKIAot
ICAgIHJldHVybiBJbnRTaXplKGZyb21JbWFnZVNpemUud2lkdGgoKSAqIGludmVyc2VQZXJjZW50
YWdlICsgdG9JbWFnZVNpemUud2lkdGgoKSAqIHBlcmNlbnRhZ2UsCisgICAgcmV0dXJuIEZsb2F0
U2l6ZShmcm9tSW1hZ2VTaXplLndpZHRoKCkgKiBpbnZlcnNlUGVyY2VudGFnZSArIHRvSW1hZ2VT
aXplLndpZHRoKCkgKiBwZXJjZW50YWdlLAogICAgICAgICBmcm9tSW1hZ2VTaXplLmhlaWdodCgp
ICogaW52ZXJzZVBlcmNlbnRhZ2UgKyB0b0ltYWdlU2l6ZS5oZWlnaHQoKSAqIHBlcmNlbnRhZ2Up
OwogfQogCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBDU1NDcm9zc2ZhZGVWYWx1ZTo6bG9hZFN1
YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIKICAgICBt
X2Nyb3NzZmFkZVN1YmltYWdlT2JzZXJ2ZXIuc2V0UmVhZHkodHJ1ZSk7CiB9CiAKLVBhc3NSZWZQ
dHI8SW1hZ2U+IENTU0Nyb3NzZmFkZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJl
ciwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK1Bhc3NSZWZQdHI8SW1hZ2U+IENTU0Nyb3NzZmFkZVZh
bHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXplJiBzaXpl
KQogewogICAgIGlmIChzaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCmluZGV4IDkyYmVjYTEyZTMwMDdmMDFjNGRjZWMx
Zjk0NWQxMDZjMjU5ZTIyNTMuLjE0ZGE1OWM3OTRkYzdjYmEyMTk5ZDQyMDk4OGJlZTA1NDFlNzk5
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCkBAIC01Miw5ICs1Miw5
IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CiAKLSAgICBQ
YXNzUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgSW50U2l6ZSYpOwor
ICAgIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBGbG9hdFNp
emUmKTsKICAgICBib29sIGlzRml4ZWRTaXplKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAg
IEludFNpemUgZml4ZWRTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqKTsKKyAgICBGbG9hdFNpemUg
Zml4ZWRTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqKTsKIAogICAgIGJvb2wgaXNQZW5kaW5nKCkg
Y29uc3Q7CiAgICAgYm9vbCBrbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyRWxlbWVudCopIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmluZGV4IDQ4
ZWI1YzFhZTc4YjE2MzZhYjcyYWM1MzU4ZjA2OWI5YWU0ZDJiMjMuLjFhYzJmYTRmMGVhOTRjNjI3
NjBhY2I5ODY4M2IxNmQwOTUyMGU2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVy
SW1hZ2VWYWx1ZS5jcHAKQEAgLTU5LDE1ICs1OSwxNSBAQCBTdHJpbmcgQ1NTRmlsdGVySW1hZ2VW
YWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygp
OwogfQogCi1JbnRTaXplIENTU0ZpbHRlckltYWdlVmFsdWU6OmZpeGVkU2l6ZShjb25zdCBSZW5k
ZXJFbGVtZW50KiByZW5kZXJlcikKK0Zsb2F0U2l6ZSBDU1NGaWx0ZXJJbWFnZVZhbHVlOjpmaXhl
ZFNpemUoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCiB7CiAgICAgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyID0gcmVuZGVyZXItPmRvY3VtZW50KCkuY2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKTsKICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBjYWNo
ZWRJbWFnZUZvckNTU1ZhbHVlKG1faW1hZ2VWYWx1ZS5nZXQoKSwgY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIpOwogCiAgICAgaWYgKCFjYWNoZWRJbWFnZSkKLSAgICAgICAgcmV0dXJuIEludFNpemUoKTsK
KyAgICAgICAgcmV0dXJuIEZsb2F0U2l6ZSgpOwogCi0gICAgcmV0dXJuIEludFNpemUoY2FjaGVk
SW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpLT5zaXplKCkpOworICAgIHJldHVybiBj
YWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlciktPnNpemUoKTsKIH0KIAogYm9v
bCBDU1NGaWx0ZXJJbWFnZVZhbHVlOjppc1BlbmRpbmcoKSBjb25zdApAQCAtOTYsNyArOTYsNyBA
QCB2b2lkIENTU0ZpbHRlckltYWdlVmFsdWU6OmxvYWRTdWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VM
b2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZAogICAgIG1fZmlsdGVyU3ViaW1hZ2VPYnNlcnZlci5z
ZXRSZWFkeSh0cnVlKTsKIH0KIAotUGFzc1JlZlB0cjxJbWFnZT4gQ1NTRmlsdGVySW1hZ2VWYWx1
ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIHNpemUpCitQ
YXNzUmVmUHRyPEltYWdlPiBDU1NGaWx0ZXJJbWFnZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50
KiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXplJiBzaXplKQogewogICAgIGlmIChzaXplLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRmlsdGVySW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdl
VmFsdWUuaAppbmRleCBmMjEyZjUxYzdlNTUzZWFjMjMwNDYyYTc4ZmFjYTZlMmRiMWJjMzJhLi40
MmYyMmNkNTNmMTU5N2FkOTQ1YTcwMGZlZDhlMGVlZWUzNmE5NTEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmgKQEAgLTU3LDkgKzU3LDkgQEAgcHVibGljOgogCiAg
ICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKIAotICAgIFBhc3NSZWZQdHI8SW1hZ2U+
IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRTaXplJik7CisgICAgUGFzc1JlZlB0cjxJ
bWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYpOwogICAgIGJvb2wg
aXNGaXhlZFNpemUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgSW50U2l6ZSBmaXhlZFNp
emUoY29uc3QgUmVuZGVyRWxlbWVudCopOworICAgIEZsb2F0U2l6ZSBmaXhlZFNpemUoY29uc3Qg
UmVuZGVyRWxlbWVudCopOwogCiAgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdDsKICAgICBib29s
IGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50KikgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKaW5kZXggZmI5NGIzMTAyZGYwZjAzNTk2M2IxMGJk
MWM0ZDVlNDk5ZWEzN2U0MS4uZDE3OWRlZDk5YmU3NmE3YWRiMzI5MjAzYWMxMzkxYzBiZjAyMTll
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcApAQCAtMjgsMTEgKzI4
LDExIEBACiAKICNpbmNsdWRlICJDU1NDYWxjdWxhdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NT
VmFsdWVLZXl3b3Jkcy5oIgorI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorI2luY2x1ZGUgIkZsb2F0
U2l6ZUhhc2guaCIKICNpbmNsdWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUgIkdyYWRpZW50SW1h
Z2UuaCIKICNpbmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRl
ICJJbnRTaXplSGFzaC5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUg
IlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCkBAIC00MSw3ICs0
MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJbWFnZT4gQ1NTR3Jh
ZGllbnRWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUm
IHNpemUpCitQYXNzUmVmUHRyPEltYWdlPiBDU1NHcmFkaWVudFZhbHVlOjppbWFnZShSZW5kZXJF
bGVtZW50KiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXplJiBzaXplKQogewogICAgIGlmIChzaXpl
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0zOTAsNyArMzkwLDcgQEAgdm9pZCBD
U1NHcmFkaWVudFZhbHVlOjphZGRTdG9wcyhHcmFkaWVudCogZ3JhZGllbnQsIFJlbmRlckVsZW1l
bnQqIHJlbmRlcmVyLCBjb24KICAgICBncmFkaWVudC0+c2V0U3RvcHNTb3J0ZWQodHJ1ZSk7CiB9
CiAKLXN0YXRpYyBmbG9hdCBwb3NpdGlvbkZyb21WYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSogdmFs
dWUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHJvb3RTdHls
ZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBpc0hvcml6b250YWwpCitzdGF0aWMgZmxvYXQg
cG9zaXRpb25Gcm9tVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlLCBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiByb290U3R5bGUsIGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgYm9vbCBpc0hvcml6b250YWwpCiB7CiAgICAgZmxvYXQgem9vbUZhY3RvciA9IHN0
eWxlLmVmZmVjdGl2ZVpvb20oKTsKIApAQCAtNDI0LDcgKzQyNCw3IEBAIHN0YXRpYyBmbG9hdCBw
b3NpdGlvbkZyb21WYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUsIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsCiAgICAgcmV0dXJuIHZhbHVlLT5jb21wdXRlTGVuZ3RoPGZsb2F0Pigmc3R5bGUs
ICZyb290U3R5bGUsIHpvb21GYWN0b3IpOwogfQogCi1GbG9hdFBvaW50IENTU0dyYWRpZW50VmFs
dWU6OmNvbXB1dGVFbmRQb2ludChDU1NQcmltaXRpdmVWYWx1ZSogaG9yaXpvbnRhbCwgQ1NTUHJp
bWl0aXZlVmFsdWUqIHZlcnRpY2FsLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IFJl
bmRlclN0eWxlJiByb290U3R5bGUsIGNvbnN0IEludFNpemUmIHNpemUpCitGbG9hdFBvaW50IENT
U0dyYWRpZW50VmFsdWU6OmNvbXB1dGVFbmRQb2ludChDU1NQcmltaXRpdmVWYWx1ZSogaG9yaXpv
bnRhbCwgQ1NTUHJpbWl0aXZlVmFsdWUqIHZlcnRpY2FsLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUsIGNvbnN0IFJlbmRlclN0eWxlJiByb290U3R5bGUsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkK
IHsKICAgICBGbG9hdFBvaW50IHJlc3VsdDsKIApAQCAtNTcyLDcgKzU3Miw3IEBAIFN0cmluZyBD
U1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKIH0KIAogLy8gQ29t
cHV0ZSB0aGUgZW5kcG9pbnRzIHNvIHRoYXQgYSBncmFkaWVudCBvZiB0aGUgZ2l2ZW4gYW5nbGUg
Y292ZXJzIGEgYm94IG9mIHRoZSBnaXZlbiBzaXplLgotc3RhdGljIHZvaWQgZW5kUG9pbnRzRnJv
bUFuZ2xlKGZsb2F0IGFuZ2xlRGVnLCBjb25zdCBJbnRTaXplJiBzaXplLCBGbG9hdFBvaW50JiBm
aXJzdFBvaW50LCBGbG9hdFBvaW50JiBzZWNvbmRQb2ludCwgQ1NTR3JhZGllbnRUeXBlIHR5cGUp
CitzdGF0aWMgdm9pZCBlbmRQb2ludHNGcm9tQW5nbGUoZmxvYXQgYW5nbGVEZWcsIGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSwgRmxvYXRQb2ludCYgZmlyc3RQb2ludCwgRmxvYXRQb2ludCYgc2Vjb25k
UG9pbnQsIENTU0dyYWRpZW50VHlwZSB0eXBlKQogewogICAgIC8vIFByZWZpeGVkIGdyYWRpZW50
cyB1c2UgInBvbGFyIGNvb3JkaW5hdGUiIGFuZ2xlcywgcmF0aGVyIHRoYW4gImJlYXJpbmciIGFu
Z2xlcy4KICAgICBpZiAodHlwZSA9PSBDU1NQcmVmaXhlZExpbmVhckdyYWRpZW50KQpAQCAtNjM5
LDcgKzYzOSw3IEBAIHN0YXRpYyB2b2lkIGVuZFBvaW50c0Zyb21BbmdsZShmbG9hdCBhbmdsZURl
ZywgY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxvYXRQb2ludCYKICAgICBmaXJzdFBvaW50LnNldCho
YWxmV2lkdGggLSBlbmRYLCBoYWxmSGVpZ2h0ICsgZW5kWSk7CiB9CiAKLVBhc3NSZWZQdHI8R3Jh
ZGllbnQ+IENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1l
bnQqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBzaXplKQorUGFzc1JlZlB0cjxHcmFkaWVudD4g
Q1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQoUmVuZGVyRWxlbWVudCogcmVu
ZGVyZXIsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKIHsKICAgICBBU1NFUlQoIXNpemUuaXNFbXB0
eSgpKTsKIApAQCAtOTc5LDcgKzk3OSw3IEBAIHN0YXRpYyBpbmxpbmUgZmxvYXQgaG9yaXpvbnRh
bEVsbGlwc2VSYWRpdXMoY29uc3QgRmxvYXRTaXplJiBwLCBmbG9hdCBhc3BlY3RSYXRpCiB9CiAK
IC8vIEZJWE1FOiBzaGFyZSBjb2RlIHdpdGggdGhlIGxpbmVhciB2ZXJzaW9uCi1QYXNzUmVmUHRy
PEdyYWRpZW50PiBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5kZXJF
bGVtZW50KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK1Bhc3NSZWZQdHI8R3JhZGll
bnQ+IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQq
IHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiB7CiAgICAgQVNTRVJUKCFzaXplLmlz
RW1wdHkoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZh
bHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCmluZGV4IDhmYjQz
MmE5MWQyNzA2OTM2OGIyMTBkNjM4ODIwNGExNTFiM2NkNmQuLmQwODAyMDdhZjA3YjliODJkYWFl
Zjc3NzFkYjczY2MzMjcxMzZmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NH
cmFkaWVudFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUu
aApAQCAtNjEsNyArNjEsNyBAQCBzdHJ1Y3QgQ1NTR3JhZGllbnRDb2xvclN0b3AgewogCiBjbGFz
cyBDU1NHcmFkaWVudFZhbHVlIDogcHVibGljIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUgewogcHVi
bGljOgotICAgIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBJ
bnRTaXplJik7CisgICAgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNv
bnN0IEZsb2F0U2l6ZSYpOwogCiAgICAgdm9pZCBzZXRGaXJzdFgoUGFzc1JlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gdmFsKSB7IG1fZmlyc3RYID0gdmFsOyB9CiAgICAgdm9pZCBzZXRGaXJzdFko
UGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsKSB7IG1fZmlyc3RZID0gdmFsOyB9CkBA
IC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICBDU1NHcmFkaWVudFR5cGUgZ3JhZGllbnRUeXBl
KCkgY29uc3QgeyByZXR1cm4gbV9ncmFkaWVudFR5cGU7IH0KIAogICAgIGJvb2wgaXNGaXhlZFNp
emUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIEludFNpemUgZml4ZWRTaXplKGNvbnN0
IFJlbmRlckVsZW1lbnQqKSBjb25zdCB7IHJldHVybiBJbnRTaXplKCk7IH0KKyAgICBGbG9hdFNp
emUgZml4ZWRTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqKSBjb25zdCB7IHJldHVybiBGbG9hdFNp
emUoKTsgfQogCiAgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIGJvb2wga25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqKSBjb25zdDsKQEAg
LTExMiw3ICsxMTIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBhZGRTdG9wcyhHcmFkaWVudCos
IFJlbmRlckVsZW1lbnQqLCBjb25zdCBSZW5kZXJTdHlsZSYgcm9vdFN0eWxlLCBmbG9hdCBtYXhM
ZW5ndGhGb3JSZXBlYXQgPSAwKTsKIAogICAgIC8vIFJlc29sdmUgcG9pbnRzL3JhZGlpIHRvIGZy
b250IGVuZCB2YWx1ZXMuCi0gICAgRmxvYXRQb2ludCBjb21wdXRlRW5kUG9pbnQoQ1NTUHJpbWl0
aXZlVmFsdWUqLCBDU1NQcmltaXRpdmVWYWx1ZSosIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3Qg
UmVuZGVyU3R5bGUmIHJvb3RTdHlsZSwgY29uc3QgSW50U2l6ZSYpOworICAgIEZsb2F0UG9pbnQg
Y29tcHV0ZUVuZFBvaW50KENTU1ByaW1pdGl2ZVZhbHVlKiwgQ1NTUHJpbWl0aXZlVmFsdWUqLCBj
b25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlJiByb290U3R5bGUsIGNvbnN0IEZs
b2F0U2l6ZSYpOwogCiAgICAgYm9vbCBpc0NhY2hlYWJsZSgpIGNvbnN0OwogCkBAIC0xNDUsNyAr
MTQ1LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CiAKICAg
ICAvLyBDcmVhdGUgdGhlIGdyYWRpZW50IGZvciBhIGdpdmVuIHNpemUuCi0gICAgUGFzc1JlZlB0
cjxHcmFkaWVudD4gY3JlYXRlR3JhZGllbnQoUmVuZGVyRWxlbWVudCosIGNvbnN0IEludFNpemUm
KTsKKyAgICBQYXNzUmVmUHRyPEdyYWRpZW50PiBjcmVhdGVHcmFkaWVudChSZW5kZXJFbGVtZW50
KiwgY29uc3QgRmxvYXRTaXplJik7CiAKICAgICBQYXNzUmVmPENTU0xpbmVhckdyYWRpZW50VmFs
dWU+IGNsb25lKCkgY29uc3QKICAgICB7CkBAIC0xOTUsNyArMTk1LDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0RW5kVmVydGljYWxTaXplKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZh
bCkgeyBtX2VuZFZlcnRpY2FsU2l6ZSA9IHZhbDsgfQogCiAgICAgLy8gQ3JlYXRlIHRoZSBncmFk
aWVudCBmb3IgYSBnaXZlbiBzaXplLgotICAgIFBhc3NSZWZQdHI8R3JhZGllbnQ+IGNyZWF0ZUdy
YWRpZW50KFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRTaXplJik7CisgICAgUGFzc1JlZlB0cjxH
cmFkaWVudD4gY3JlYXRlR3JhZGllbnQoUmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYp
OwogCiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZSYpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKaW5k
ZXggNTUxMWMyZDFmYTM4YzNiMGQ5NDE0ZGI5OWM2ZTg4YWQyM2ZmZmNhNS4uMGQ5Y2ZjYTBmYWQx
Nzg4NGRhOGM3Mjc5ZGM3MWMwYTUzMzFiNGU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIENTU0ltYWdl
R2VuZXJhdG9yVmFsdWU6OnJlbW92ZUNsaWVudChSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKICAg
ICAgICAgZGVyZWYoKTsKIH0KIAotR2VuZXJhdGVkSW1hZ2UqIENTU0ltYWdlR2VuZXJhdG9yVmFs
dWU6OmNhY2hlZEltYWdlRm9yU2l6ZShJbnRTaXplIHNpemUpCitHZW5lcmF0ZWRJbWFnZSogQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Y2FjaGVkSW1hZ2VGb3JTaXplKEZsb2F0U2l6ZSBzaXplKQog
ewogICAgIGlmIChzaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC03
OCwxOSArNzgsMTkgQEAgR2VuZXJhdGVkSW1hZ2UqIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmNh
Y2hlZEltYWdlRm9yU2l6ZShJbnRTaXplIHNpemUpCiAgICAgcmV0dXJuIGNhY2hlZEdlbmVyYXRl
ZEltYWdlLT5pbWFnZSgpOwogfQogCi12b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnNhdmVD
YWNoZWRJbWFnZUZvclNpemUoSW50U2l6ZSBzaXplLCBQYXNzUmVmUHRyPEdlbmVyYXRlZEltYWdl
PiBpbWFnZSkKK3ZvaWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6c2F2ZUNhY2hlZEltYWdlRm9y
U2l6ZShGbG9hdFNpemUgc2l6ZSwgUGFzc1JlZlB0cjxHZW5lcmF0ZWRJbWFnZT4gaW1hZ2UpCiB7
CiAgICAgQVNTRVJUKCFtX2ltYWdlcy5jb250YWlucyhzaXplKSk7CiAgICAgbV9pbWFnZXMuYWRk
KHNpemUsIHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkR2VuZXJhdGVkSW1hZ2U+KCp0aGlzLCBzaXpl
LCBpbWFnZSkpOwogfQogCi12b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmV2aWN0Q2FjaGVk
R2VuZXJhdGVkSW1hZ2UoSW50U2l6ZSBzaXplKQordm9pZCBDU1NJbWFnZUdlbmVyYXRvclZhbHVl
OjpldmljdENhY2hlZEdlbmVyYXRlZEltYWdlKEZsb2F0U2l6ZSBzaXplKQogewogICAgIEFTU0VS
VChtX2ltYWdlcy5jb250YWlucyhzaXplKSk7CiAgICAgbV9pbWFnZXMucmVtb3ZlKHNpemUpOwog
fQogCi1DU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpDYWNoZWRHZW5lcmF0ZWRJbWFnZTo6Q2FjaGVk
R2VuZXJhdGVkSW1hZ2UoQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSYgb3duZXIsIEludFNpemUgc2l6
ZSwgUGFzc1JlZlB0cjxHZW5lcmF0ZWRJbWFnZT4gaW1hZ2UpCitDU1NJbWFnZUdlbmVyYXRvclZh
bHVlOjpDYWNoZWRHZW5lcmF0ZWRJbWFnZTo6Q2FjaGVkR2VuZXJhdGVkSW1hZ2UoQ1NTSW1hZ2VH
ZW5lcmF0b3JWYWx1ZSYgb3duZXIsIEZsb2F0U2l6ZSBzaXplLCBQYXNzUmVmUHRyPEdlbmVyYXRl
ZEltYWdlPiBpbWFnZSkKICAgICA6IG1fb3duZXIob3duZXIpCiAgICAgLCBtX3NpemUoc2l6ZSkK
ICAgICAsIG1faW1hZ2UoaW1hZ2UpCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBDU1NJbWFnZUdl
bmVyYXRvclZhbHVlOjpDYWNoZWRHZW5lcmF0ZWRJbWFnZTo6ZXZpY3Rpb25UaW1lckZpcmVkKERl
ZmVycmFibGUKICAgICBtX293bmVyLmV2aWN0Q2FjaGVkR2VuZXJhdGVkSW1hZ2UobV9zaXplKTsK
IH0KIAotUGFzc1JlZlB0cjxJbWFnZT4gQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6aW1hZ2UoUmVu
ZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIHNpemUpCitQYXNzUmVmUHRyPElt
YWdlPiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJl
ciwgY29uc3QgRmxvYXRTaXplJiBzaXplKQogewogICAgIHN3aXRjaCAoY2xhc3NUeXBlKCkpIHsK
ICAgICBjYXNlIENhbnZhc0NsYXNzOgpAQCAtMTQ3LDcgKzE0Nyw3IEBAIGJvb2wgQ1NTSW1hZ2VH
ZW5lcmF0b3JWYWx1ZTo6aXNGaXhlZFNpemUoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotSW50U2l6ZSBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpmaXhlZFNpemUoY29uc3QgUmVuZGVy
RWxlbWVudCogcmVuZGVyZXIpCitGbG9hdFNpemUgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Zml4
ZWRTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQogewogICAgIHN3aXRjaCAoY2xh
c3NUeXBlKCkpIHsKICAgICBjYXNlIENhbnZhc0NsYXNzOgpAQCAtMTY1LDcgKzE2NSw3IEBAIElu
dFNpemUgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Zml4ZWRTaXplKGNvbnN0IFJlbmRlckVsZW1l
bnQqIHJlbmRlcmVyKQogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIH0KLSAgICByZXR1cm4gSW50U2l6ZSgpOworICAgIHJldHVybiBGbG9hdFNpemUoKTsK
IH0KIAogYm9vbCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjppc1BlbmRpbmcoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmgKaW5kZXggNmM5MjBmYWFl
YWRmMzM0OGY2ZGNiYzg3MTAwN2VhNjlhYWFiMzZhMS4uZjRhYjVkODBiOTY0ZDE1NTdhMmVkNTgy
NDVkNDBlZDRkNTcwOTM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdl
R2VuZXJhdG9yVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0
b3JWYWx1ZS5oCkBAIC0yNyw3ICsyNyw4IEBACiAjZGVmaW5lIENTU0ltYWdlR2VuZXJhdG9yVmFs
dWVfaAogCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKLSNpbmNsdWRlICJJbnRTaXplSGFzaC5oIgor
I2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorI2luY2x1ZGUgIkZsb2F0U2l6ZUhhc2guaCIKICNpbmNs
dWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogCkBAIC00Nywx
MCArNDgsMTAgQEAgcHVibGljOgogICAgIHZvaWQgYWRkQ2xpZW50KFJlbmRlckVsZW1lbnQqKTsK
ICAgICB2b2lkIHJlbW92ZUNsaWVudChSZW5kZXJFbGVtZW50Kik7CiAKLSAgICBQYXNzUmVmUHRy
PEltYWdlPiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgSW50U2l6ZSYpOworICAgIFBhc3NS
ZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBGbG9hdFNpemUmKTsKIAog
ICAgIGJvb2wgaXNGaXhlZFNpemUoKSBjb25zdDsKLSAgICBJbnRTaXplIGZpeGVkU2l6ZShjb25z
dCBSZW5kZXJFbGVtZW50Kik7CisgICAgRmxvYXRTaXplIGZpeGVkU2l6ZShjb25zdCBSZW5kZXJF
bGVtZW50Kik7CiAKICAgICBib29sIGlzUGVuZGluZygpIGNvbnN0OwogICAgIGJvb2wga25vd25U
b0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqKSBjb25zdDsKQEAgLTYwLDggKzYxLDggQEAg
cHVibGljOgogcHJvdGVjdGVkOgogICAgIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUoQ2xhc3NUeXBl
KTsKIAotICAgIEdlbmVyYXRlZEltYWdlKiBjYWNoZWRJbWFnZUZvclNpemUoSW50U2l6ZSk7Ci0g
ICAgdm9pZCBzYXZlQ2FjaGVkSW1hZ2VGb3JTaXplKEludFNpemUsIFBhc3NSZWZQdHI8R2VuZXJh
dGVkSW1hZ2U+KTsKKyAgICBHZW5lcmF0ZWRJbWFnZSogY2FjaGVkSW1hZ2VGb3JTaXplKEZsb2F0
U2l6ZSk7CisgICAgdm9pZCBzYXZlQ2FjaGVkSW1hZ2VGb3JTaXplKEZsb2F0U2l6ZSwgUGFzc1Jl
ZlB0cjxHZW5lcmF0ZWRJbWFnZT4pOwogICAgIGNvbnN0IEhhc2hDb3VudGVkU2V0PFJlbmRlckVs
ZW1lbnQqPiYgY2xpZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50czsgfQogCiAgICAgLy8g
SGVscGVyIGZ1bmN0aW9ucyBmb3IgQ3Jvc3NmYWRlIGFuZCBGaWx0ZXIuCkBAIC03MSw3ICs3Miw3
IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgY2xhc3MgQ2FjaGVkR2VuZXJhdGVkSW1hZ2Ug
ewogICAgIHB1YmxpYzoKLSAgICAgICAgQ2FjaGVkR2VuZXJhdGVkSW1hZ2UoQ1NTSW1hZ2VHZW5l
cmF0b3JWYWx1ZSYsIEludFNpemUsIFBhc3NSZWZQdHI8R2VuZXJhdGVkSW1hZ2U+KTsKKyAgICAg
ICAgQ2FjaGVkR2VuZXJhdGVkSW1hZ2UoQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSYsIEZsb2F0U2l6
ZSwgUGFzc1JlZlB0cjxHZW5lcmF0ZWRJbWFnZT4pOwogICAgICAgICBHZW5lcmF0ZWRJbWFnZSog
aW1hZ2UoKSB7IHJldHVybiBtX2ltYWdlLmdldCgpOyB9CiAgICAgICAgIHZvaWQgcHVudEV2aWN0
aW9uVGltZXIoKSB7IG1fZXZpY3Rpb25UaW1lci5yZXN0YXJ0KCk7IH0KIApAQCAtNzksMTYgKzgw
LDE2IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgZXZpY3Rpb25UaW1lckZpcmVkKERlZmVycmFi
bGVPbmVTaG90VGltZXI8Q2FjaGVkR2VuZXJhdGVkSW1hZ2U+Jik7CiAKICAgICAgICAgQ1NTSW1h
Z2VHZW5lcmF0b3JWYWx1ZSYgbV9vd25lcjsKLSAgICAgICAgSW50U2l6ZSBtX3NpemU7CisgICAg
ICAgIEZsb2F0U2l6ZSBtX3NpemU7CiAgICAgICAgIFJlZlB0cjxHZW5lcmF0ZWRJbWFnZT4gbV9p
bWFnZTsKICAgICAgICAgRGVmZXJyYWJsZU9uZVNob3RUaW1lcjxDYWNoZWRHZW5lcmF0ZWRJbWFn
ZT4gbV9ldmljdGlvblRpbWVyOwogICAgIH07CiAKICAgICBmcmllbmQgY2xhc3MgQ2FjaGVkR2Vu
ZXJhdGVkSW1hZ2U7Ci0gICAgdm9pZCBldmljdENhY2hlZEdlbmVyYXRlZEltYWdlKEludFNpemUp
OworICAgIHZvaWQgZXZpY3RDYWNoZWRHZW5lcmF0ZWRJbWFnZShGbG9hdFNpemUpOwogCiAgICAg
SGFzaENvdW50ZWRTZXQ8UmVuZGVyRWxlbWVudCo+IG1fY2xpZW50czsKLSAgICBIYXNoTWFwPElu
dFNpemUsIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRHZW5lcmF0ZWRJbWFnZT4+IG1faW1hZ2VzOwor
ICAgIEhhc2hNYXA8RmxvYXRTaXplLCBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkR2VuZXJhdGVkSW1h
Z2U+PiBtX2ltYWdlczsKIH07CiAKIENTU19WQUxVRV9UWVBFX0NBU1RTKENTU0ltYWdlR2VuZXJh
dG9yVmFsdWUsIGlzSW1hZ2VHZW5lcmF0b3JWYWx1ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggOGViYzhmN2Q4YjA4YTk1Y2U0NDhlNjk4MWFj
ZDVjM2ViNWRkOTk1Mi4uNzcyNmI1MjEwM2VkOGMwMjI1ZDkzNGI1YjYwYTNkYTZjMGYwZGMxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC0yMjgs
NyArMjI4LDcgQEAgSW1hZ2UqIENhY2hlZEltYWdlOjppbWFnZUZvclJlbmRlcmVyKGNvbnN0IFJl
bmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7CiB9CiAKLXZv
aWQgQ2FjaGVkSW1hZ2U6OnNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihjb25zdCBDYWNoZWRJ
bWFnZUNsaWVudCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0
IGNvbnRhaW5lclpvb20pCit2b2lkIENhY2hlZEltYWdlOjpzZXRDb250YWluZXJTaXplRm9yUmVu
ZGVyZXIoY29uc3QgQ2FjaGVkSW1hZ2VDbGllbnQqIHJlbmRlcmVyLCBjb25zdCBMYXlvdXRTaXpl
JiBjb250YWluZXJTaXplLCBmbG9hdCBjb250YWluZXJab29tKQogewogICAgIGlmIChjb250YWlu
ZXJTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCA4NmFmMDNmZDAxODU1ODZkNWRhN2QzNGM0N2RkZTJl
MDY2MzJjYmU3Li4zNDYyOWUwNTZkM2QwMDA3ZjRiMjI0Y2Y0MTdkMzgwNzA0YmVlYTBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtNjYsNyArNjYsNyBA
QCBwdWJsaWM6CiAKICAgICBib29sIGNhblJlbmRlcihjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyLCBmbG9hdCBtdWx0aXBsaWVyKSB7IHJldHVybiAhZXJyb3JPY2N1cnJlZCgpICYmICFpbWFn
ZVNpemVGb3JSZW5kZXJlcihyZW5kZXJlciwgbXVsdGlwbGllcikuaXNFbXB0eSgpOyB9CiAKLSAg
ICB2b2lkIHNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihjb25zdCBDYWNoZWRJbWFnZUNsaWVu
dCosIGNvbnN0IEludFNpemUmLCBmbG9hdCk7CisgICAgdm9pZCBzZXRDb250YWluZXJTaXplRm9y
UmVuZGVyZXIoY29uc3QgQ2FjaGVkSW1hZ2VDbGllbnQqLCBjb25zdCBMYXlvdXRTaXplJiwgZmxv
YXQpOwogICAgIGJvb2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0OwogICAgIGJvb2wg
aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3Q7CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZl
SGVpZ2h0KCkgY29uc3Q7CkBAIC0xMzIsNyArMTMyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
YWRkSW5jcmVtZW50YWxEYXRhQnVmZmVyKFJlc291cmNlQnVmZmVyKik7CiAKLSAgICB0eXBlZGVm
IHN0ZDo6cGFpcjxJbnRTaXplLCBmbG9hdD4gU2l6ZUFuZFpvb207CisgICAgdHlwZWRlZiBzdGQ6
OnBhaXI8TGF5b3V0U2l6ZSwgZmxvYXQ+IFNpemVBbmRab29tOwogICAgIHR5cGVkZWYgSGFzaE1h
cDxjb25zdCBDYWNoZWRJbWFnZUNsaWVudCosIFNpemVBbmRab29tPiBDb250YWluZXJTaXplUmVx
dWVzdHM7CiAgICAgQ29udGFpbmVyU2l6ZVJlcXVlc3RzIG1fcGVuZGluZ0NvbnRhaW5lclNpemVS
ZXF1ZXN0czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RmxvYXRTaXplSGFzaC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRT
aXplSGFzaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1YTM5NjZiMWU3ZTVlNDhkMGVlNTA4YjgyMzM4NzVjNWVi
MWE0NjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9GbG9hdFNpemVIYXNoLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBGbG9hdFNp
emVIYXNoX2gKKyNkZWZpbmUgRmxvYXRTaXplSGFzaF9oCisKKyNpbmNsdWRlICJGbG9hdFNpemUu
aCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisK
K25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBGbG9hdEhhc2g8V2ViQ29yZTo6
RmxvYXRTaXplPiB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiBrZXkpIHsgcmV0dXJuIHBhaXJJbnRIYXNoKERlZmF1bHRIYXNoPGZsb2F0Pjo6SGFz
aDo6aGFzaChrZXkud2lkdGgoKSksIERlZmF1bHRIYXNoPGZsb2F0Pjo6SGFzaDo6aGFzaChrZXku
aGVpZ2h0KCkpKTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYgYSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBiKSB7IHJldHVybiBhID09IGI7IH0K
KyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRy
dWU7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpGbG9hdFNp
emU+IHsKKyAgICB0eXBlZGVmIEZsb2F0SGFzaDxXZWJDb3JlOjpGbG9hdFNpemU+IEhhc2g7Cit9
OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OkZsb2F0U2l6ZT4gOiBH
ZW5lcmljSGFzaFRyYWl0czxXZWJDb3JlOjpGbG9hdFNpemU+IHsKKyAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVk
c0Rlc3RydWN0aW9uID0gZmFsc2U7CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZh
bHVlKFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2xvdCkgeyBuZXcgKE5vdE51bGwsICZzbG90KSBXZWJD
b3JlOjpGbG9hdFNpemUoLTEsIC0xKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVl
KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLndpZHRoKCkg
PT0gLTEgJiYgdmFsdWUuaGVpZ2h0KCkgPT0gLTE7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdU
RgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0xheW91dFNpemUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNp
emUuaAppbmRleCBmMmQwOWVlZTczZTBiMDBhZDA2NmI0YjU5YWRiNTZjYzk3ZTNiNmNlLi5mNzc2
MjVhM2U4NDYxNmE4Y2U2MGYzZmUzMmVmNTg5NmZiNmUzNTI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRTaXplLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0U2l6ZS5oCkBAIC0xOTIsNiArMTkyLDE2IEBAIGlu
bGluZSBMYXlvdXRTaXplIHJvdW5kZWRMYXlvdXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgcykKICNl
bmRpZgogfQogCitpbmxpbmUgRmxvYXRTaXplIGZsb29yZWRGb3JQYWludGluZyhjb25zdCBMYXlv
dXRTaXplJiBzaXplLCBmbG9hdCBwaXhlbFNuYXBwaW5nRmFjdG9yKQoreworI2lmIEVOQUJMRShT
VUJQSVhFTF9MQVlPVVQpCisgICAgcmV0dXJuIEZsb2F0U2l6ZShmbG9vclRvRGV2aWNlUGl4ZWwo
c2l6ZS53aWR0aCgpLCBwaXhlbFNuYXBwaW5nRmFjdG9yKSwgZmxvb3JUb0RldmljZVBpeGVsKHNp
emUuaGVpZ2h0KCksIHBpeGVsU25hcHBpbmdGYWN0b3IpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKHBpeGVsU25hcHBpbmdGYWN0b3IpOworICAgIHJldHVybiBGbG9hdFNpemUocG9pbnQpOwor
I2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIExheW91dFNp
emVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2UuaAppbmRleCBlNTU1MDkzMDhjZjE4ZjhiZmE4YjBiZDFiOTk2ODUy
OGI2Njg5Zjc3Li5kZjRhNWFmNzkxZmM1YzRlYjI3M2JhMGU0NWE3NjlmNjUzMmZjYmY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxl
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJj
ZVN0eWxlSW1hZ2UuaApAQCAtNTEsOCArNTEsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9v
bCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3N0eWxl
SW1hZ2UtPmltYWdlSGFzUmVsYXRpdmVXaWR0aCgpOyB9CiAgICAgdmlydHVhbCBib29sIGltYWdl
SGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3N0eWxlSW1hZ2Ut
PmltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKTsgfQogCi0gICAgdmlydHVhbCBMYXlvdXRTaXplIGlt
YWdlU2l6ZShmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3N0eWxl
SW1hZ2UtPmltYWdlU2l6ZShtX3JlbmRlcmVyLCBtdWx0aXBsaWVyKTsgfQotICAgIHZpcnR1YWwg
TGF5b3V0U2l6ZSBpbnRyaW5zaWNTaXplKGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VTaXplKG1fcmVuZGVyZXIsIG11bHRpcGxpZXIp
OyB9CisgICAgdmlydHVhbCBMYXlvdXRTaXplIGltYWdlU2l6ZShmbG9hdCBtdWx0aXBsaWVyKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBMYXlvdXRTaXplKG1fc3R5bGVJbWFnZS0+aW1hZ2VTaXpl
KG1fcmVuZGVyZXIsIG11bHRpcGxpZXIpKTsgfQorICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBpbnRy
aW5zaWNTaXplKGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIExheW91
dFNpemUobV9zdHlsZUltYWdlLT5pbWFnZVNpemUobV9yZW5kZXJlciwgbXVsdGlwbGllcikpOyB9
CiAKICAgICB2aXJ0dWFsIFdyYXBwZWRJbWFnZVB0ciBpbWFnZVB0cigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+ZGF0YSgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAppbmRleCAwYzJjYTA0NmQyMzc5ZTdiMjQxZWJk
YzBkODIxNGU0NTk1Yzc3OWQyLi5iNWI3M2M2OTg1MzMxZjMyNWFmZGFiMzc3YjkzMWRmNWNiM2Fh
ZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3Bw
CkBAIC0xNTIxLDcgKzE1MjEsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OmNvbXB1dGVQcmVm
ZXJyZWRMb2dpY2FsV2lkdGhzKCkKICAgICB1cGRhdGVDb250ZW50KCk7CiAKICAgICBpZiAoaXNJ
bWFnZSgpKSB7Ci0gICAgICAgIExheW91dFNpemUgaW1hZ2VTaXplID0gbV9pbWFnZS0+aW1hZ2VT
aXplKHRoaXMsIHN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsKKyAgICAgICAgTGF5b3V0U2l6ZSBp
bWFnZVNpemUgPSBMYXlvdXRTaXplKG1faW1hZ2UtPmltYWdlU2l6ZSh0aGlzLCBzdHlsZSgpLmVm
ZmVjdGl2ZVpvb20oKSkpOwogICAgICAgICBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IG1f
bWF4UHJlZmVycmVkTG9naWNhbFdpZHRoID0gc3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpID8gaW1hZ2VTaXplLndpZHRoKCkgOiBpbWFnZVNpemUuaGVpZ2h0KCk7CiAgICAgICAgIHNl
dFByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eShmYWxzZSk7CiAgICAgICAgIHVwZGF0ZU1hcmdp
bnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNh
Y2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hl
ZEltYWdlLmNwcAppbmRleCAwNGQ1NWU5NDIyMTY1ZjA5ZWM3OTAxZjAyYmE2MjRhNjg5ZmI0MDY3
Li5jMjY1M2ExZGM4Mzk1ODU4ZWMzZDNjZTVlY2E3NGNiZGY0YTMwNzg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwCkBAIC02
MSw3ICs2MSw3IEBAIGJvb2wgU3R5bGVDYWNoZWRJbWFnZTo6ZXJyb3JPY2N1cnJlZCgpIGNvbnN0
CiAgICAgcmV0dXJuIG1faW1hZ2UtPmVycm9yT2NjdXJyZWQoKTsKIH0KIAotTGF5b3V0U2l6ZSBT
dHlsZUNhY2hlZEltYWdlOjppbWFnZVNpemUoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIs
IGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0CitGbG9hdFNpemUgU3R5bGVDYWNoZWRJbWFnZTo6aW1h
Z2VTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBmbG9hdCBtdWx0aXBsaWVyKSBj
b25zdAogewogICAgIHJldHVybiBtX2ltYWdlLT5pbWFnZVNpemVGb3JSZW5kZXJlcihyZW5kZXJl
ciwgbXVsdGlwbGllcik7CiB9CkBAIC04Niw5ICs4Niw5IEBAIGJvb2wgU3R5bGVDYWNoZWRJbWFn
ZTo6dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW1hZ2UtPnVz
ZXNJbWFnZUNvbnRhaW5lclNpemUoKTsKIH0KIAotdm9pZCBTdHlsZUNhY2hlZEltYWdlOjpzZXRD
b250YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNv
bnN0IEludFNpemUmIGltYWdlQ29udGFpbmVyU2l6ZSwgZmxvYXQgaW1hZ2VDb250YWluZXJab29t
RmFjdG9yKQordm9pZCBTdHlsZUNhY2hlZEltYWdlOjpzZXRDb250YWluZXJTaXplRm9yUmVuZGVy
ZXIoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VD
b250YWluZXJTaXplLCBmbG9hdCBpbWFnZUNvbnRhaW5lclpvb21GYWN0b3IpCiB7Ci0gICAgbV9p
bWFnZS0+c2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKHJlbmRlcmVyLCBpbWFnZUNvbnRhaW5l
clNpemUsIGltYWdlQ29udGFpbmVyWm9vbUZhY3Rvcik7CisgICAgbV9pbWFnZS0+c2V0Q29udGFp
bmVyU2l6ZUZvclJlbmRlcmVyKHJlbmRlcmVyLCBMYXlvdXRTaXplKGltYWdlQ29udGFpbmVyU2l6
ZSksIGltYWdlQ29udGFpbmVyWm9vbUZhY3Rvcik7CiB9CiAKIHZvaWQgU3R5bGVDYWNoZWRJbWFn
ZTo6YWRkQ2xpZW50KFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQpAQCAtMTAxLDcgKzEwMSw3IEBA
IHZvaWQgU3R5bGVDYWNoZWRJbWFnZTo6cmVtb3ZlQ2xpZW50KFJlbmRlckVsZW1lbnQqIHJlbmRl
cmVyKQogICAgIG1faW1hZ2UtPnJlbW92ZUNsaWVudChyZW5kZXJlcik7CiB9CiAKLVBhc3NSZWZQ
dHI8SW1hZ2U+IFN0eWxlQ2FjaGVkSW1hZ2U6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
LCBjb25zdCBJbnRTaXplJikgY29uc3QKK1Bhc3NSZWZQdHI8SW1hZ2U+IFN0eWxlQ2FjaGVkSW1h
Z2U6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpemUmKSBjb25z
dAogewogICAgIHJldHVybiBtX2ltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZElt
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5o
CmluZGV4IDk1OTQxZmMwNTkxYTQ2MGM5ZDQ5MzA0NDAwZDBhOTM0NWYzZDA1ZmQuLjUyYzBjMGY1
NWNjNWVjYzU1NzE0ZWM2NjIxNTc4NDFkODhiMDVjNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuaApAQCAtNDgsMTUgKzQ4LDE1IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGNhblJlbmRlcihjb25zdCBSZW5kZXJPYmplY3Qq
LCBmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaXNM
b2FkZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgZXJyb3JPY2N1cnJlZCgp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBpbWFnZVNpemUoY29uc3Qg
UmVuZGVyRWxlbWVudCosIGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIHZp
cnR1YWwgRmxvYXRTaXplIGltYWdlU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiwgZmxvYXQgbXVs
dGlwbGllcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRp
dmVXaWR0aCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0
aXZlSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRy
aW5zaWNEaW1lbnNpb25zKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBMZW5ndGgmIGludHJpbnNpY1dp
ZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVy
KGNvbnN0IFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRTaXplJiwgZmxvYXQpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVy
RWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgYWRkQ2xpZW50KFJlbmRlckVsZW1lbnQqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlQ2xpZW50KFJlbmRlckVsZW1lbnQqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRTaXplJikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJF
bGVtZW50KiwgY29uc3QgRmxvYXRTaXplJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBi
b29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICBleHBsaWNpdCBTdHlsZUNhY2hlZEltYWdlKENhY2hlZEltYWdlKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5j
cHAKaW5kZXggZjk1YjJjOTQwZDBhMDgxMzU3N2UzZDYyNzM5ZTE3ODQ5MTQ1N2FjMy4uNmMxYjAx
NzI0YmRkMTYzMmQzOGJmZjQ4ODFkZGEzMzZjYmQwNzkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmNwcApAQCAtNjks
OSArNjksOSBAQCBib29sIFN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OmVycm9yT2NjdXJyZWQoKSBjb25z
dAogICAgIHJldHVybiBtX2Jlc3RGaXRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpOwogfQogCi1MYXlv
dXRTaXplIFN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OmltYWdlU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50
KiByZW5kZXJlciwgZmxvYXQgbXVsdGlwbGllcikgY29uc3QKK0Zsb2F0U2l6ZSBTdHlsZUNhY2hl
ZEltYWdlU2V0OjppbWFnZVNpemUoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGZsb2F0
IG11bHRpcGxpZXIpIGNvbnN0CiB7Ci0gICAgTGF5b3V0U2l6ZSBzY2FsZWRJbWFnZVNpemUgPSBt
X2Jlc3RGaXRJbWFnZS0+aW1hZ2VTaXplRm9yUmVuZGVyZXIocmVuZGVyZXIsIG11bHRpcGxpZXIp
OworICAgIEZsb2F0U2l6ZSBzY2FsZWRJbWFnZVNpemUgPSBtX2Jlc3RGaXRJbWFnZS0+aW1hZ2VT
aXplRm9yUmVuZGVyZXIocmVuZGVyZXIsIG11bHRpcGxpZXIpOwogICAgIHNjYWxlZEltYWdlU2l6
ZS5zY2FsZSgxIC8gbV9pbWFnZVNjYWxlRmFjdG9yKTsKICAgICByZXR1cm4gc2NhbGVkSW1hZ2VT
aXplOwogfQpAQCAtOTYsOSArOTYsOSBAQCBib29sIFN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OnVzZXNJ
bWFnZUNvbnRhaW5lclNpemUoKSBjb25zdAogICAgIHJldHVybiBtX2Jlc3RGaXRJbWFnZS0+dXNl
c0ltYWdlQ29udGFpbmVyU2l6ZSgpOwogfQogCi12b2lkIFN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OnNl
dENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciwg
Y29uc3QgSW50U2l6ZSYgaW1hZ2VDb250YWluZXJTaXplLCBmbG9hdCBpbWFnZUNvbnRhaW5lclpv
b21GYWN0b3IpCit2b2lkIFN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OnNldENvbnRhaW5lclNpemVGb3JS
ZW5kZXJlcihjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZUNvbnRhaW5lclNpemUsIGZsb2F0IGltYWdlQ29udGFpbmVyWm9vbUZhY3RvcikKIHsKLSAg
ICBtX2Jlc3RGaXRJbWFnZS0+c2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKHJlbmRlcmVyLCBp
bWFnZUNvbnRhaW5lclNpemUsIGltYWdlQ29udGFpbmVyWm9vbUZhY3Rvcik7CisgICAgbV9iZXN0
Rml0SW1hZ2UtPnNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihyZW5kZXJlciwgTGF5b3V0U2l6
ZShpbWFnZUNvbnRhaW5lclNpemUpLCBpbWFnZUNvbnRhaW5lclpvb21GYWN0b3IpOwogfQogCiB2
b2lkIFN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OmFkZENsaWVudChSZW5kZXJFbGVtZW50KiByZW5kZXJl
cikKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OnJlbW92ZUNs
aWVudChSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKICAgICBtX2Jlc3RGaXRJbWFnZS0+cmVtb3Zl
Q2xpZW50KHJlbmRlcmVyKTsKIH0KIAotUGFzc1JlZlB0cjxJbWFnZT4gU3R5bGVDYWNoZWRJbWFn
ZVNldDo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmKSBjb25z
dAorUGFzc1JlZlB0cjxJbWFnZT4gU3R5bGVDYWNoZWRJbWFnZVNldDo6aW1hZ2UoUmVuZGVyRWxl
bWVudCogcmVuZGVyZXIsIGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
YmVzdEZpdEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5oCmluZGV4
IGNkOWNmNWU0YjM3MzBlOTg2YmEwODllNzUwMDZmNGI0NjgzNTY2NWMuLjQ0YzlmMzA4YWE5YjAz
ODQxOTQzMDRlODU0ODE4NGYzYzE2MzQxYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuaApAQCAtNjQsMTUgKzY0LDE1IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGNhblJlbmRlcihjb25zdCBSZW5kZXJPYmplY3Qq
LCBmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaXNM
b2FkZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgZXJyb3JPY2N1cnJlZCgp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBpbWFnZVNpemUoY29uc3Qg
UmVuZGVyRWxlbWVudCosIGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIHZp
cnR1YWwgRmxvYXRTaXplIGltYWdlU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiwgZmxvYXQgbXVs
dGlwbGllcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRp
dmVXaWR0aCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0
aXZlSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRy
aW5zaWNEaW1lbnNpb25zKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBMZW5ndGgmIGludHJpbnNpY1dp
ZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVy
KGNvbnN0IFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRTaXplJiwgZmxvYXQpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVy
RWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgYWRkQ2xpZW50KFJlbmRlckVsZW1lbnQqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlQ2xpZW50KFJlbmRlckVsZW1lbnQqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRTaXplJikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJF
bGVtZW50KiwgY29uc3QgRmxvYXRTaXplJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBm
bG9hdCBpbWFnZVNjYWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pbWFnZVNj
YWxlRmFjdG9yOyB9CiAgICAgdmlydHVhbCBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5k
ZXJFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcAppbmRleCA2YjU5ZmU3YzQ5
NjQyNWQ2MGM4MWI0YmM0ODEzMDE2NjNlYjJhNGNlLi4wZjdmNzRmYTRkYjk3MzkyNTU3M2I1MWJh
NTY3YTM4MTU1NzQ5ZTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCkBAIC00MiwyNCArNDIsMjUgQEAgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gU3R5bGVHZW5lcmF0ZWRJbWFnZTo6Y3NzVmFsdWUoKSBjb25zdAogICAg
IHJldHVybiAmY29uc3RfY2FzdDxDU1NJbWFnZUdlbmVyYXRvclZhbHVlJj4obV9pbWFnZUdlbmVy
YXRvclZhbHVlLmdldCgpKTsKIH0KIAotTGF5b3V0U2l6ZSBTdHlsZUdlbmVyYXRlZEltYWdlOjpp
bWFnZVNpemUoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGZsb2F0IG11bHRpcGxpZXIp
IGNvbnN0CitGbG9hdFNpemUgU3R5bGVHZW5lcmF0ZWRJbWFnZTo6aW1hZ2VTaXplKGNvbnN0IFJl
bmRlckVsZW1lbnQqIHJlbmRlcmVyLCBmbG9hdCBtdWx0aXBsaWVyKSBjb25zdAogewogICAgIGlm
IChtX2ZpeGVkU2l6ZSkgewotICAgICAgICBJbnRTaXplIGZpeGVkU2l6ZSA9IGNvbnN0X2Nhc3Q8
Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSY+KG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS5nZXQoKSkuZml4
ZWRTaXplKHJlbmRlcmVyKTsKKyAgICAgICAgRmxvYXRTaXplIGZpeGVkU2l6ZSA9IGNvbnN0X2Nh
c3Q8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSY+KG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS5nZXQoKSku
Zml4ZWRTaXplKHJlbmRlcmVyKTsKICAgICAgICAgaWYgKG11bHRpcGxpZXIgPT0gMS4wZikKICAg
ICAgICAgICAgIHJldHVybiBmaXhlZFNpemU7CiAKLSAgICAgICAgTGF5b3V0VW5pdCB3aWR0aCA9
IGZpeGVkU2l6ZS53aWR0aCgpICogbXVsdGlwbGllcjsKLSAgICAgICAgTGF5b3V0VW5pdCBoZWln
aHQgPSBmaXhlZFNpemUuaGVpZ2h0KCkgKiBtdWx0aXBsaWVyOworICAgICAgICBmbG9hdCB3aWR0
aCA9IGZpeGVkU2l6ZS53aWR0aCgpICogbXVsdGlwbGllcjsKKyAgICAgICAgZmxvYXQgaGVpZ2h0
ID0gZml4ZWRTaXplLmhlaWdodCgpICogbXVsdGlwbGllcjsKIAotICAgICAgICAvLyBEb24ndCBs
ZXQgaW1hZ2VzIHRoYXQgaGF2ZSBhIHdpZHRoL2hlaWdodCA+PSAxIHNocmluayBiZWxvdyAxIHdo
ZW4gem9vbWVkLgorICAgICAgICAvLyBEb24ndCBsZXQgaW1hZ2VzIHRoYXQgaGF2ZSBhIHdpZHRo
L2hlaWdodCA+PSAxIHNocmluayBiZWxvdyAxIGRldmljZSBwaXhlbCB3aGVuIHpvb21lZC4KKyAg
ICAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSByZW5kZXJlciA/IHJlbmRlcmVyLT5kb2N1
bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkgOiAxOwogICAgICAgICBpZiAoZml4ZWRTaXplLndp
ZHRoKCkgPiAwKQotICAgICAgICAgICAgd2lkdGggPSBzdGQ6Om1heDxMYXlvdXRVbml0PigxLCB3
aWR0aCk7CisgICAgICAgICAgICB3aWR0aCA9IHN0ZDo6bWF4PGZsb2F0PigxIC8gZGV2aWNlU2Nh
bGVGYWN0b3IsIHdpZHRoKTsKIAogICAgICAgICBpZiAoZml4ZWRTaXplLmhlaWdodCgpID4gMCkK
LSAgICAgICAgICAgIGhlaWdodCA9IHN0ZDo6bWF4PExheW91dFVuaXQ+KDEsIGhlaWdodCk7Cisg
ICAgICAgICAgICBoZWlnaHQgPSBzdGQ6Om1heDxmbG9hdD4oMSAvIGRldmljZVNjYWxlRmFjdG9y
LCBoZWlnaHQpOwogCi0gICAgICAgIHJldHVybiBMYXlvdXRTaXplKHdpZHRoLCBoZWlnaHQpOwor
ICAgICAgICByZXR1cm4gRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpOwogICAgIH0KICAgICAKICAg
ICByZXR1cm4gbV9jb250YWluZXJTaXplOwpAQCAtNjcsOCArNjgsOCBAQCBMYXlvdXRTaXplIFN0
eWxlR2VuZXJhdGVkSW1hZ2U6OmltYWdlU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJl
ciwgZmxvYXQgbQogCiB2b2lkIFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNE
aW1lbnNpb25zKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBMZW5ndGgmIGludHJpbnNp
Y1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRp
bykKIHsKLSAgICAvLyBBdCBhIHpvb20gbGV2ZWwgb2YgMSB0aGUgaW1hZ2UgaXMgZ3VhcmFudGVl
ZCB0byBoYXZlIGFuIGludGVnZXIgc2l6ZS4KLSAgICBJbnRTaXplIHNpemUgPSBmbG9vcmVkSW50
U2l6ZShpbWFnZVNpemUocmVuZGVyZXIsIDEpKTsKKyAgICAvLyBBdCBhIHpvb20gbGV2ZWwgb2Yg
MSB0aGUgaW1hZ2UgaXMgZ3VhcmFudGVlZCB0byBoYXZlIGEgZGV2aWNlIHBpeGVsIHNpemUuCisg
ICAgRmxvYXRTaXplIHNpemUgPSBmbG9vcmVkRm9yUGFpbnRpbmcoTGF5b3V0U2l6ZShpbWFnZVNp
emUocmVuZGVyZXIsIDEpKSwgcmVuZGVyZXIgPyByZW5kZXJlci0+ZG9jdW1lbnQoKS5kZXZpY2VT
Y2FsZUZhY3RvcigpIDogMSk7CiAgICAgaW50cmluc2ljV2lkdGggPSBMZW5ndGgoc2l6ZS53aWR0
aCgpLCBGaXhlZCk7CiAgICAgaW50cmluc2ljSGVpZ2h0ID0gTGVuZ3RoKHNpemUuaGVpZ2h0KCks
IEZpeGVkKTsKICAgICBpbnRyaW5zaWNSYXRpbyA9IHNpemU7CkBAIC04NCw3ICs4NSw3IEBAIHZv
aWQgU3R5bGVHZW5lcmF0ZWRJbWFnZTo6cmVtb3ZlQ2xpZW50KFJlbmRlckVsZW1lbnQqIHJlbmRl
cmVyKQogICAgIG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS0+cmVtb3ZlQ2xpZW50KHJlbmRlcmVyKTsK
IH0KIAotUGFzc1JlZlB0cjxJbWFnZT4gU3R5bGVHZW5lcmF0ZWRJbWFnZTo6aW1hZ2UoUmVuZGVy
RWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIHNpemUpIGNvbnN0CitQYXNzUmVmUHRy
PEltYWdlPiBTdHlsZUdlbmVyYXRlZEltYWdlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJl
ciwgY29uc3QgRmxvYXRTaXplJiBzaXplKSBjb25zdAogewogICAgIHJldHVybiBjb25zdF9jYXN0
PENTU0ltYWdlR2VuZXJhdG9yVmFsdWUmPihtX2ltYWdlR2VuZXJhdG9yVmFsdWUuZ2V0KCkpLmlt
YWdlKHJlbmRlcmVyLCBzaXplKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5oCmluZGV4IDQyYTcwNWNlNzM1NzE4NjIzOThk
NzlhYmQwNjJkYWE0MWU0M2M2NzYuLjRkYmUxZWVkZjFjODQxZmRhMTc0YjJiNjllY2M1MzI3YzM4
NzQ5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdl
bmVyYXRlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
R2VuZXJhdGVkSW1hZ2UuaApAQCAtNDUsMjEgKzQ1LDIxIEBAIHByaXZhdGU6CiAKICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGNzc1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAg
ICB2aXJ0dWFsIExheW91dFNpemUgaW1hZ2VTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBmbG9h
dCBtdWx0aXBsaWVyKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBpbWFn
ZVNpemUoY29uc3QgUmVuZGVyRWxlbWVudCosIGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAhbV9maXhlZFNpemU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNS
ZWxhdGl2ZUhlaWdodCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2ZpeGVkU2l6ZTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhjb25zdCBSZW5kZXJF
bGVtZW50KiwgTGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwgTGVuZ3RoJiBpbnRyaW5zaWNIZWlnaHQs
IEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCB1
c2VzSW1hZ2VDb250YWluZXJTaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fZml4ZWRT
aXplOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihjb25z
dCBSZW5kZXJFbGVtZW50KiwgY29uc3QgSW50U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQpIG92
ZXJyaWRlIHsgbV9jb250YWluZXJTaXplID0gY29udGFpbmVyU2l6ZTsgfQorICAgIHZpcnR1YWwg
dm9pZCBzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyRWxlbWVudCosIGNv
bnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQpIG92ZXJyaWRlIHsgbV9jb250YWlu
ZXJTaXplID0gY29udGFpbmVyU2l6ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBhZGRDbGllbnQoUmVu
ZGVyRWxlbWVudCopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnQoUmVu
ZGVyRWxlbWVudCopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1h
Z2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEludFNpemUmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBGbG9h
dFNpemUmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wga25vd25Ub0JlT3BhcXVl
KGNvbnN0IFJlbmRlckVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFN0eWxlR2VuZXJh
dGVkSW1hZ2UoUGFzc1JlZjxDU1NJbWFnZUdlbmVyYXRvclZhbHVlPik7CiAgICAgCiAgICAgUmVm
PENTU0ltYWdlR2VuZXJhdG9yVmFsdWU+IG1faW1hZ2VHZW5lcmF0b3JWYWx1ZTsKLSAgICBJbnRT
aXplIG1fY29udGFpbmVyU2l6ZTsKKyAgICBGbG9hdFNpemUgbV9jb250YWluZXJTaXplOwogICAg
IGJvb2wgbV9maXhlZFNpemU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlSW1hZ2UuaAppbmRleCA3M2NmZGI5Y2ViM2QwZTM3NzBjMmVkNDIwYmE5MTMxODEwYjBh
YjJlLi5jMGNjN2ZjYjQ4ZGViMDg1MDZmYTY5OWRjOTEwZTc5OGFkNmYyY2Y1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbWFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUltYWdlLmgKQEAgLTI1LDkgKzI1LDggQEAK
ICNkZWZpbmUgU3R5bGVJbWFnZV9oCiAKICNpbmNsdWRlICJDU1NWYWx1ZS5oIgorI2luY2x1ZGUg
IkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgot
I2luY2x1ZGUgIkxheW91dFNpemUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNTUs
MTUgKzU0LDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgY2FuUmVuZGVyKGNvbnN0IFJl
bmRlck9iamVjdCosIGZsb2F0IC8qbXVsdGlwbGllciovKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CiAgICAgdmlydHVhbCBib29sIGlzTG9hZGVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IHZpcnR1YWwgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIExheW91dFNpemUgaW1hZ2VTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBmbG9h
dCBtdWx0aXBsaWVyKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBGbG9hdFNpemUgaW1hZ2VTaXpl
KGNvbnN0IFJlbmRlckVsZW1lbnQqLCBmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGNvbnN0IFJlbmRlckVsZW1l
bnQqLCBMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxv
YXRTaXplJiBpbnRyaW5zaWNSYXRpbykgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1Jl
bGF0aXZlV2lkdGgoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRp
dmVIZWlnaHQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHVzZXNJbWFnZUNvbnRhaW5l
clNpemUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbnRhaW5lclNpemVGb3JS
ZW5kZXJlcihjb25zdCBSZW5kZXJFbGVtZW50KiwgY29uc3QgSW50U2l6ZSYsIGZsb2F0KSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihjb25zdCBSZW5k
ZXJFbGVtZW50KiwgY29uc3QgRmxvYXRTaXplJiwgZmxvYXQpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgYWRkQ2xpZW50KFJlbmRlckVsZW1lbnQqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZUNsaWVudChSZW5kZXJFbGVtZW50KikgPSAwOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFn
ZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEludFNpemUmKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgRmxv
YXRTaXplJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgV3JhcHBlZEltYWdlUHRyIGRhdGEoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBmbG9hdCBpbWFnZVNjYWxlRmFjdG9yKCkgY29uc3QgeyBy
ZXR1cm4gMTsgfQogICAgIHZpcnR1YWwgYm9vbCBrbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVy
RWxlbWVudCopIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmgKaW5kZXggMjVmNDMxNzIyZmJjMDY3ODFhNWM0MDcwNjg1
ZjgwNjBkYzA0ZjFlYy4uYjk1NDg2ODU0YWExYzlhY2I2YTFhYjkyMjAzZDc5NDE0MTYwNmIwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUGVuZGluZ0lt
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUGVuZGluZ0lt
YWdlLmgKQEAgLTYwLDE2ICs2MCwxNiBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPENTU1ZhbHVlPiBjc3NWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdmFsdWU7
IH0KICAgICAKLSAgICB2aXJ0dWFsIExheW91dFNpemUgaW1hZ2VTaXplKGNvbnN0IFJlbmRlckVs
ZW1lbnQqLCBmbG9hdCAvKm11bHRpcGxpZXIqLykgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTGF5
b3V0U2l6ZSgpOyB9CisgICAgdmlydHVhbCBGbG9hdFNpemUgaW1hZ2VTaXplKGNvbnN0IFJlbmRl
ckVsZW1lbnQqLCBmbG9hdCAvKm11bHRpcGxpZXIqLykgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
RmxvYXRTaXplKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VI
YXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGNvbnN0IFJlbmRlckVsZW1l
bnQqLCBMZW5ndGgmIC8qIGludHJpbnNpY1dpZHRoICovICwgTGVuZ3RoJiAvKiBpbnRyaW5zaWNI
ZWlnaHQgKi8sIEZsb2F0U2l6ZSYgLyogaW50cmluc2ljUmF0aW8gKi8pIHsgfQogICAgIHZpcnR1
YWwgYm9vbCB1c2VzSW1hZ2VDb250YWluZXJTaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNv
bnN0IFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRTaXplJiwgZmxvYXQpIG92ZXJyaWRlIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVy
RWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0KSBvdmVycmlkZSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgYWRkQ2xpZW50KFJlbmRlckVsZW1lbnQqKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlQ2xpZW50KFJlbmRlckVsZW1lbnQqKSBvdmVycmlkZSB7IH0KIAotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IElu
dFNpemUmKSBjb25zdCBvdmVycmlkZQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1h
Z2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0IG92ZXJyaWRlCiAgICAg
ewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAKaW5kZXgg
ZGI1YjA2Yjc1NjNiYTM5MWE0MjdlMzlkYmE2ZWRlOTA5OGRmNGIxMy4uNzQ4NjYwZmM0OTJiMzYx
MzNlZWUzNWYyMzkwOTg2ZDk3YzQ3NjFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZUNhY2hlLmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJJ
bWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIkxheW91dFNpemUuaCIKICNpbmNsdWRlICJQYWdlLmgi
CiAjaW5jbHVkZSAiUmVuZGVyU1ZHUm9vdC5oIgogI2luY2x1ZGUgIlNWR0ltYWdlLmgiCkBAIC01
MCw3ICs1MSw3IEBAIHZvaWQgU1ZHSW1hZ2VDYWNoZTo6cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKGNv
bnN0IENhY2hlZEltYWdlQ2xpZW50KiBjbGllbnQpCiAgICAgbV9pbWFnZUZvckNvbnRhaW5lck1h
cC5yZW1vdmUoY2xpZW50KTsKIH0KIAotdm9pZCBTVkdJbWFnZUNhY2hlOjpzZXRDb250YWluZXJT
aXplRm9yUmVuZGVyZXIoY29uc3QgQ2FjaGVkSW1hZ2VDbGllbnQqIGNsaWVudCwgY29uc3QgSW50
U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSkKK3ZvaWQgU1ZHSW1hZ2VD
YWNoZTo6c2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0IENhY2hlZEltYWdlQ2xpZW50
KiBjbGllbnQsIGNvbnN0IExheW91dFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5l
clpvb20pCiB7CiAgICAgQVNTRVJUKGNsaWVudCk7CiAgICAgQVNTRVJUKCFjb250YWluZXJTaXpl
LmlzRW1wdHkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUu
aAppbmRleCBmODYwY2JkZGQ1ZWI1Y2UyYmVmODJkOTBjYjU5NDk0MmJjNjZmYmIzLi4wNWY1MjNl
NmZiNmI0ODkyYzRiMmE3YmEyZTk1OTNjYjZmZDMyNWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmgKQEAgLTMxLDYgKzMxLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQ2FjaGVkSW1hZ2U7CiBjbGFzcyBDYWNoZWRJbWFnZUNsaWVudDsKIGNs
YXNzIEltYWdlQnVmZmVyOworY2xhc3MgTGF5b3V0U2l6ZTsKIGNsYXNzIFNWR0ltYWdlOwogY2xh
c3MgU1ZHSW1hZ2VGb3JDb250YWluZXI7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CkBAIC00Myw3ICs0
NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVtb3ZlQ2xpZW50RnJvbUNhY2hlKGNvbnN0IENh
Y2hlZEltYWdlQ2xpZW50Kik7CiAKLSAgICB2b2lkIHNldENvbnRhaW5lclNpemVGb3JSZW5kZXJl
cihjb25zdCBDYWNoZWRJbWFnZUNsaWVudCosIGNvbnN0IEludFNpemUmLCBmbG9hdCk7CisgICAg
dm9pZCBzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgQ2FjaGVkSW1hZ2VDbGllbnQq
LCBjb25zdCBMYXlvdXRTaXplJiwgZmxvYXQpOwogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemVGb3JS
ZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKIAogICAgIEltYWdlKiBpbWFnZUZv
clJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCopOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>