<?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>87046</bug_id>
          
          <creation_ts>2012-05-21 14:34:11 -0700</creation_ts>
          <short_desc>[chromium] Port chromium compositor to use WebFilterOperation(s)</short_desc>
          <delta_ts>2012-05-21 18:10:12 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>
          
          <blocked>87049</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>abarth</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>fishd</cc>
    
    <cc>piman</cc>
    
    <cc>senorblanco</cc>
    
    <cc>shawnsingh</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>629509</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-21 14:34:11 -0700</bug_when>
    <thetext>[chromium] Port chromium compositor to use WebFilterOperation(s)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629531</commentid>
    <comment_count>1</comment_count>
      <attachid>143103</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-21 14:51:37 -0700</bug_when>
    <thetext>Created attachment 143103
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629542</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-21 14:58:02 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629590</commentid>
    <comment_count>3</comment_count>
      <attachid>143103</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-05-21 15:23:48 -0700</bug_when>
    <thetext>Comment on attachment 143103
Patch

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

R=me.  This is a huge patch, but really straightforward.  How are you handling the Chromium side of this?

&gt; Source/WebCore/platform/graphics/chromium/LayerChromium.cpp:327
&gt; +    if (!backgroundFilters.isEmpty())
&gt; +        CCLayerTreeHost::setNeedsFilterContext(true);

Ack, nice catch.

&gt; Source/WebCore/platform/graphics/chromium/LayerChromium.h:57
&gt; +

nit: needless whitespace</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629599</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-21 15:29:22 -0700</bug_when>
    <thetext>There&apos;s one caller chromium-side that will break with this.  I think I&apos;ll add a #define in WebFilterOperation.h, wrap the chromium side with #ifdefs, land the chromium patch, then land this patch, then remove chromium #ifdefs, then remove the #define.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629605</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-21 15:33:49 -0700</bug_when>
    <thetext>Proposed guard:


diff --git a/Source/Platform/chromium/public/WebFilterOperation.h b/Source/Platform/chromium/public/WebFilterOperation.h
index e1c8270..039f729 100644
--- a/Source/Platform/chromium/public/WebFilterOperation.h
+++ b/Source/Platform/chromium/public/WebFilterOperation.h
@@ -65,6 +65,7 @@ public:
         return m_dropShadowColor;
     }
 
+#define WEBKIT_HAS_NEW_WEBFILTEROPERATION_API 1
     static WebFilterOperation createGrayscaleFilter(float amount) { return WebFilterOperation(FilterTypeGrayscale, amount); }
     static WebFilterOperation createSepiaFilter(float amount) { return WebFilterOperation(FilterTypeSepia, amount); }
     static WebFilterOperation createSaturateFilter(float amount) { return WebFilterOperation(FilterTypeSaturate, amount); }


and chromium-side patch:
https://chromiumcodereview.appspot.com/10414030/

sound good?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629612</commentid>
    <comment_count>6</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-05-21 15:36:15 -0700</bug_when>
    <thetext>Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629804</commentid>
    <comment_count>7</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-21 18:10:12 -0700</bug_when>
    <thetext>Committed r117864: &lt;http://trac.webkit.org/changeset/117864&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143103</attachid>
            <date>2012-05-21 14:51:37 -0700</date>
            <delta_ts>2012-05-21 15:23:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87046-20120521145137.patch</filename>
            <type>text/plain</type>
            <size>83471</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyM2Y5ZGNhNzBmMDYx
YTVlMDY2ZTNkYmZhMzZlYWI0ZjI1NjFjZDEzLi42ZjBiMzRlNzUxNTgyYmViNzQxZDhjM2UxOGZm
MDE2ZmE0ZmJlZmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAxMi0wNS0yMSAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gUG9ydCBjaHJvbWl1bSBjb21wb3NpdG9yIHRvIHVzZSBXZWJGaWx0ZXJPcGVyYXRpb24ocykK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3MDQ2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFu
Z2VzIFdlYkZpbHRlck9wZXJhdGlvbiAvIFdlYkZpbHRlck9wZXJhdGlvbnMgZnJvbSBiZWluZyBz
aW1wbGUgd3JhcHBlcnMgb3ZlciBXZWJDb3JlIHR5cGVzIHRvIGJlaW5nCisgICAgICAgIHN0YW5k
YWxvbmUuIFdlYkZpbHRlck9wZXJhdGlvbiBpcyBhIHBsYWluIG9sZCBkYXRhIHN0cnVjdCB3aXRo
IHNvbWUgY29udmVuaWVuY2UgY29uc3R1Y3RvcnMgYW5kIHR5cGUKKyAgICAgICAgYXNzZXJ0aW9u
cy4gRWFjaCBXZWJGaWx0ZXJPcGVyYXRpb24gY29udGFpbnMgYSB0eXBlIHRhZyBhbmQgdGhlIHBh
cmFtZXRlcnMgbmVlZGVkIGZvciBlYWNoIGZpbHRlci4KKyAgICAgICAgV2ViRmlsdGVyT3BlcmF0
aW9ucyByZXByZXNlbnRzIGFuIG9yZGVyZWQgbGlzdCBvZiBXZWJGaWx0ZXJPcGVyYXRpb24gaW5z
dGFuY2VzIGFuZCBjYW4gYmUgY29waWVkIGFyb3VuZCBhcworICAgICAgICBuZWVkZWQuIEl0IGFs
c28gZXhwb3NlcyBhIGZldyBjb252ZW5pZW5jZSBmdW5jdGlvbnMgYWJvdXQgaG93IHRoZSBmaWx0
ZXJzIHdpbGwgbW9kaWZ5IHBpeGVscy4KKworICAgICAgICAqIFBsYXRmb3JtLmd5cGk6CisgICAg
ICAgICogY2hyb21pdW0vcHVibGljL1dlYkZpbHRlck9wZXJhdGlvbi5oOgorICAgICAgICAoV2Vi
RmlsdGVyT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9uOjp0
eXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9uOjphbW91bnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb246OmRyb3BTaGFkb3dPZmZzZXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb246OmRyb3BTaGFkb3dDb2xvcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlR3JheXNjYWxlRmlsdGVyKToK
KyAgICAgICAgKFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGVTZXBpYUZpbHRlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlU2F0dXJhdGVGaWx0
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZUh1ZVJvdGF0
ZUZpbHRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlSW52
ZXJ0RmlsdGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGVC
cmlnaHRuZXNzRmlsdGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9uOjpj
cmVhdGVDb250cmFzdEZpbHRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlv
bjo6Y3JlYXRlT3BhY2l0eUZpbHRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbHRlck9wZXJh
dGlvbjo6Y3JlYXRlQmx1ckZpbHRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbHRlck9wZXJh
dGlvbjo6Y3JlYXRlRHJvcFNoYWRvd0ZpbHRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbHRl
ck9wZXJhdGlvbjo6ZXF1YWxzKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9u
OjpXZWJGaWx0ZXJPcGVyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpvcGVyYXRvcj09KToKKyAg
ICAgICAgKFdlYktpdDo6b3BlcmF0b3IhPSk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dl
YkZpbHRlck9wZXJhdGlvbnMuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkZpbHRlck9wZXJhdGlvbnM6OldlYkZpbHRlck9wZXJhdGlvbnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViRmlsdGVy
T3BlcmF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2Vi
S2l0OjpvcGVyYXRvciE9KToKKyAgICAgICAgKiBjaHJvbWl1bS9zcmMvV2ViRmlsdGVyT3BlcmF0
aW9ucy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkZpbHRlck9w
ZXJhdGlvbnNQcml2YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9uczo6
aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnM6OmRlc3Ry
b3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zOjphc3NpZ24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zOjplcXVhbHMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zOjphcHBlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJG
aWx0ZXJPcGVyYXRpb25zOjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbHRlck9wZXJh
dGlvbnM6OmlzRW1wdHkpOgorICAgICAgICAoV2ViS2l0OjpzcHJlYWRGb3JTdGREZXZpYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zOjpnZXRPdXRzZXRzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9uczo6aGFzRmlsdGVyVGhhdE1vdmVzUGl4
ZWxzKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9uczo6aGFzRmlsdGVyVGhh
dEFmZmVjdHNPcGFjaXR5KToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9uczo6
c2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnM6OmF0KToKKwogMjAx
Mi0wNS0xMSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtjaHJvbWl1bV0gQ29udmVydCBHcmFwaGljc0xheWVyQ2hyb21pdW0gdG8gdXNlIFdlYkxheWVy
IHR5cGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggNjBkM2NiNjYzN2FmMDdkNDkyOTZkYzU2OWY4MDQ5NjE1ZjVm
NzA0ZS4uZjc1N2Y1ODc3MDhlNDNiOTA4YWFlYzQ2M2E4MjBmYTFkY2FlZWJhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDc1IEBACisyMDEyLTA1LTIxICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBQb3J0IGNocm9taXVtIGNvbXBvc2l0
b3IgdG8gdXNlIFdlYkZpbHRlck9wZXJhdGlvbihzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODcwNDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNvbnZlcnRzIGFsbCBjb21wb3NpdG9yIGltcGxl
bWVudGF0aW9uIGxvZ2ljIHRvIHVzZSBXZWJGaWx0ZXJPcGVyYXRpb24ocykgZGlyZWN0bHkgaW5z
dGVhZCBvZiB0aGUgV2ViQ29yZQorICAgICAgICB0eXBlcy4gR3JhcGhpY3NMYXllckNocm9taXVt
IGJyaWRnZXMgYmV0d2VlbiBhIFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMgdG8gV2ViRmlsdGVy
T3BlcmF0aW9ucywgZG9pbmcgdGhlCisgICAgICAgIG5lY2Vzc2FyeSB0eXBlIGNvbnZlcnNpb25z
IGFuZCBjaGVja2luZyBmb3IgZmlsdGVycyB0aGF0IG91ciBjb21wb3NpdG9yIGltcGxlbWVudGF0
aW9uIHN1cHBvcnRzLiBUaGlzIGNsZWFucyB1cAorICAgICAgICB0aGUgY2hyb21pdW0gY29tcG9z
aXRvcidzIGRlcGVuZGVuY2llcyBhbmQgcmVtb3ZlcyBhbnkgdGhyZWFkIGNvbnN0cmFpbnRzIGZy
b20gV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uIC8KKyAgICAgICAgV2ViQ29yZTo6RmlsdGVyT3Bl
cmF0aW9ucy4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIGxheW91dCB0ZXN0cyBhbmQg
dW5pdCB0ZXN0cyBpbiBGaWx0ZXJPcGVyYXRpb25zVGVzdC5jcHAKKworICAgICAgICAqIFdlYkNv
cmUuZ3lwL1dlYkNvcmUuZ3lwOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkZpbHRlck9wZXJhdGlvbnMuY3BwOiBNb3ZlZCB0
byBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vc3JjLworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb3B5V2ViQ29yZUZpbHRlck9wZXJhdGlvbnNUb1dlYkZpbHRlck9wZXJhdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06
OnNldEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpz
ZXRCYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hy
b21pdW06OnVwZGF0ZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q2hyb21pdW06OnVwZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpzZXRG
aWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnNldEJhY2tncm91bmRG
aWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVz
VG8pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0u
aDoKKyAgICAgICAgKExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJv
bWl1bTo6ZmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpiYWNrZ3Jv
dW5kRmlsdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVy
U3VyZmFjZUNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdXJmYWNlQ2hyb21p
dW06OnNldEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3VyZmFjZUNocm9taXVt
OjpmaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN1cmZhY2VDaHJvbWl1bTo6c2V0
QmFja2dyb3VuZEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3VyZmFjZUNocm9t
aXVtOjpiYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChSZW5kZXJTdXJmYWNlQ2hyb21pdW0p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdlVHJhY2tl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHBhbmREYW1hZ2VSZWN0V2l0aEZpbHRlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6ZXhwYW5kRGFtYWdlUmVjdEluc2lkZVJlY3RXaXRoRmlsdGVycyk6
CisgICAgICAgIChXZWJDb3JlOjpDQ0RhbWFnZVRyYWNrZXI6OnVwZGF0ZURhbWFnZVRyYWNraW5n
U3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdl
VHJhY2tlci5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoQ0NEYW1hZ2VUcmFja2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0
RmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0QmFja2dyb3VuZEZp
bHRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJ
bXBsLmg6CisgICAgICAgIChDQ0xheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
SW1wbDo6ZmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6YmFja2dyb3Vu
ZEZpbHRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OmFwcGx5
RmlsdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJTdXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OnNldEZpbHRl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpmaWx0ZXJzKToKKyAgICAg
ICAgKENDUmVuZGVyU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6
OnNldEJhY2tncm91bmRGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFj
ZTo6YmFja2dyb3VuZEZpbHRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyU3VyZmFjZUZpbHRlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NS
ZW5kZXJTdXJmYWNlRmlsdGVyczo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZUZpbHRlcnMuaDoKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChDQ1JlbmRlclN1cmZhY2VGaWx0ZXJzKToKKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldEJhY2tncm91bmRC
bHVyT25Ob2RlKToKKwogMjAxMi0wNS0xNyAgQWJoaXNoZWsgQXJ5YSAgPGluZmVybm9AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIE1vdmUgcnVuLWluIGhhbmRsaW5nIHRvIGFkZENoaWxkLCBpbnN0
ZWFkIG9mIGluIGxheW91dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOWM0ZjBlYzkx
ZDAzZWI3ZjIwZTI5NzNjNzA4ZGFjMjQwZTU3MWE0OC4uYzM0MmMxOTg5YmZmOTY2YjNhOTJlYzBm
NDdkZDgwMzEwZDc5OTNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
OCBAQAorMjAxMi0wNS0yMSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gUG9ydCBjaHJvbWl1bSBjb21wb3NpdG9yIHRvIHVzZSBXZWJG
aWx0ZXJPcGVyYXRpb24ocykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg3MDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiBzcmMvQXNzZXJ0TWF0Y2hpbmdFbnVt
cy5jcHA6CisgICAgICAgICogc3JjL1dlYkxheWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
TGF5ZXI6OnNldEZpbHRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6c2V0QmFja2dy
b3VuZEZpbHRlcnMpOgorICAgICAgICAqIHRlc3RzL0NDRGFtYWdlVHJhY2tlclRlc3QuY3BwOgor
ICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvQ0NMYXllcklt
cGxUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAqIHRlc3RzL0ND
TGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0
TGF5ZXJPY2NsdXNpb25XaXRoRmlsdGVyczo6YmVnaW5UZXN0KToKKyAgICAgICAgKiB0ZXN0cy9D
Q09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1
c2lvblRyYWNrZXJUZXN0OjpjcmVhdGVTdXJmYWNlKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpD
Q09jY2x1c2lvblRyYWNrZXJUZXN0OjpjcmVhdGVEcmF3aW5nU3VyZmFjZSk6CisgICAgICAgIChX
ZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdEZpbHRlcnM6OnJ1bk15VGVzdCk6Cisg
ICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdERvbnRPY2NsdWRlUGl4
ZWxzTmVlZGVkRm9yQmFja2dyb3VuZEZpbHRlcjo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktp
dFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0VHdvQmFja2dyb3VuZEZpbHRlcnNSZWR1Y2VP
Y2NsdXNpb25Ud2ljZTo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1
c2lvblRyYWNrZXJUZXN0RG9udE9jY2x1ZGVQaXhlbHNOZWVkZWRGb3JCYWNrZ3JvdW5kRmlsdGVy
V2l0aENsaXA6OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25U
cmFja2VyVGVzdERvbnRSZWR1Y2VPY2NsdXNpb25CZWxvd0JhY2tncm91bmRGaWx0ZXI6OnJ1bk15
VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdERvbnRS
ZWR1Y2VPY2NsdXNpb25JZkJhY2tncm91bmRGaWx0ZXJJc09jY2x1ZGVkOjpydW5NeVRlc3QpOgor
ICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RSZWR1Y2VPY2NsdXNp
b25XaGVuQmFja2dyb3VuZEZpbHRlcklzUGFydGlhbGx5T2NjbHVkZWQ6OnJ1bk15VGVzdCk6Cisg
ICAgICAgICogdGVzdHMvRmlsdGVyT3BlcmF0aW9uc1Rlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAg
ICBUZXN0cyB0aGUgZXhpc3RpbmcgYmVoYXZpb3Igb2YgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9u
czo6Z2V0T3V0c2V0cyBhbmQgbWFrZXMgc3VyZSBXZWJGaWx0ZXJPcGVyYXRpb25zJworICAgICAg
ICAgIGJlaGF2aW9yIG1hdGNoZXMuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
OjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9HcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0LmNwcDoK
KwogMjAxMi0wNS0xNyAgTWlraGFpbCBOYWdhbm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFN1cHBvcnQgQ29weSAuLi4gYWN0aW9ucyBmb3IgdGhlIFdlYiBJbnNwZWN0b3Ig
cmVtb3RlIGRlYnVnZ2luZyBtb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL1BsYXRm
b3JtLmd5cGkgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQppbmRleCA1OWNhZmI1ZmEx
YTcyMTEyZjhjNDBiM2Y2YzczZDc2OWIzMzdiNTMwLi44YmRkZTU5MDY1Yzg5ZWIzZDY5MWEyMjU1
Nzk4ZmVkMWIwZGI2NjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lw
aQorKysgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQpAQCAtMTA4LDYgKzEwOCw3IEBA
CiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlZpZGVvRnJhbWVQcm92aWRlci5oJywK
ICAgICAgICAgICAgICdjaHJvbWl1bS9zcmMvUGxhdGZvcm0uY3BwJywKICAgICAgICAgICAgICdj
aHJvbWl1bS9zcmMvV2ViQ1N0cmluZy5jcHAnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3NyYy9X
ZWJGaWx0ZXJPcGVyYXRpb25zLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vc3JjL1dlYkZs
b2F0UXVhZC5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3NyYy9XZWJQcmVyZW5kZXJpbmdT
dXBwb3J0LmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vc3JjL1dlYlN0cmluZy5jcHAnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGaWx0ZXJPcGVy
YXRpb24uaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsdGVyT3BlcmF0
aW9uLmgKaW5kZXggN2NiN2UzZmJiYWMxN2JmODAzMjUyOGI3YTBkNDQwNzhhOGZjMDIzMy4uZTFj
ODI3MGNiYTBlY2QyMDFiODdkMWE5YTk5NDk4YTE1NzdkMDVkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb24uaAorKysgYi9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkZpbHRlck9wZXJhdGlvbi5oCkBAIC0yOSw4
OSArMjksOTQgQEAKICNpbmNsdWRlICJXZWJDb21tb24uaCIKIAogI2luY2x1ZGUgIldlYkNvbG9y
LmgiCi0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgotI2VuZGlmCisjaW5jbHVkZSAiV2ViUG9pbnQuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLXN0cnVjdCBXZWJGaWx0ZXJPcGVyYXRpb24geworY2xhc3MgV2ViRmlsdGVyT3BlcmF0aW9u
IHsKK3B1YmxpYzoKICAgICBlbnVtIEZpbHRlclR5cGUgewotICAgICAgICBGaWx0ZXJUeXBlQmFz
aWNDb2xvck1hdHJpeCwKLSAgICAgICAgRmlsdGVyVHlwZUJhc2ljQ29tcG9uZW50VHJhbnNmZXIs
CisgICAgICAgIEZpbHRlclR5cGVHcmF5c2NhbGUsCisgICAgICAgIEZpbHRlclR5cGVTZXBpYSwK
KyAgICAgICAgRmlsdGVyVHlwZVNhdHVyYXRlLAorICAgICAgICBGaWx0ZXJUeXBlSHVlUm90YXRl
LAorICAgICAgICBGaWx0ZXJUeXBlSW52ZXJ0LAorICAgICAgICBGaWx0ZXJUeXBlQnJpZ2h0bmVz
cywKKyAgICAgICAgRmlsdGVyVHlwZUNvbnRyYXN0LAorICAgICAgICBGaWx0ZXJUeXBlT3BhY2l0
eSwKICAgICAgICAgRmlsdGVyVHlwZUJsdXIsCi0gICAgICAgIEZpbHRlclR5cGVEcm9wU2hhZG93
Ci0gICAgfTsKLQotICAgIEZpbHRlclR5cGUgdHlwZTsKLQotcHJvdGVjdGVkOgotICAgIFdlYkZp
bHRlck9wZXJhdGlvbihGaWx0ZXJUeXBlIHR5cGUpCi0gICAgICAgIDogdHlwZSh0eXBlKQotICAg
IHsgfQotfTsKLQotc3RydWN0IFdlYkJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24gOiBw
dWJsaWMgV2ViRmlsdGVyT3BlcmF0aW9uIHsKLSAgICBlbnVtIEJhc2ljQ29sb3JNYXRyaXhGaWx0
ZXJUeXBlIHsKLSAgICAgICAgQmFzaWNDb2xvck1hdHJpeEZpbHRlclR5cGVHcmF5c2NhbGUgPSAx
LAotICAgICAgICBCYXNpY0NvbG9yTWF0cml4RmlsdGVyVHlwZVNlcGlhID0gMiwKLSAgICAgICAg
QmFzaWNDb2xvck1hdHJpeEZpbHRlclR5cGVTYXR1cmF0ZSA9IDMsCi0gICAgICAgIEJhc2ljQ29s
b3JNYXRyaXhGaWx0ZXJUeXBlSHVlUm90YXRlID0gNAotICAgIH07Ci0KLSAgICBXZWJCYXNpY0Nv
bG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJUeXBlIHR5cGUs
IGZsb2F0IGFtb3VudCkKLSAgICAgICAgOiBXZWJGaWx0ZXJPcGVyYXRpb24oRmlsdGVyVHlwZUJh
c2ljQ29sb3JNYXRyaXgpCi0gICAgICAgICwgc3VidHlwZSh0eXBlKQotICAgICAgICAsIGFtb3Vu
dChhbW91bnQpCi0gICAgeyB9Ci0KLSAgICBCYXNpY0NvbG9yTWF0cml4RmlsdGVyVHlwZSBzdWJ0
eXBlOwotICAgIGZsb2F0IGFtb3VudDsKLX07Ci0KLXN0cnVjdCBXZWJCYXNpY0NvbXBvbmVudFRy
YW5zZmVyRmlsdGVyT3BlcmF0aW9uIDogcHVibGljIFdlYkZpbHRlck9wZXJhdGlvbiB7Ci0gICAg
ZW51bSBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyVHlwZSB7Ci0gICAgICAgIEJhc2ljQ29t
cG9uZW50VHJhbnNmZXJGaWx0ZXJUeXBlSW52ZXJ0ID0gNSwKLSAgICAgICAgQmFzaWNDb21wb25l
bnRUcmFuc2ZlckZpbHRlclR5cGVCcmlnaHRuZXNzID0gNywKLSAgICAgICAgQmFzaWNDb21wb25l
bnRUcmFuc2ZlckZpbHRlclR5cGVDb250cmFzdCA9IDgKLSAgICAgICAgLy8gT3BhY2l0eSBpcyBt
aXNzaW5nIGJlY2F1c2UgdGhpcyBpcyBtb3JlIGV4cGVuc2l2ZSB0aGFuIGp1c3Qgc2V0dGluZyBv
cGFjaXR5IG9uIHRoZSBsYXllciwKLSAgICAgICAgLy8gYW5kIG9wYWNpdHkgaXMgbm90IGFsbG93
ZWQgZm9yIGJhY2tncm91bmQgZmlsdGVycy4KKyAgICAgICAgRmlsdGVyVHlwZURyb3BTaGFkb3cs
CiAgICAgfTsKIAotICAgIFdlYkJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24o
QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlclR5cGUgdHlwZSwgZmxvYXQgYW1vdW50KQotICAg
ICAgICA6IFdlYkZpbHRlck9wZXJhdGlvbihGaWx0ZXJUeXBlQmFzaWNDb21wb25lbnRUcmFuc2Zl
cikKLSAgICAgICAgLCBzdWJ0eXBlKHR5cGUpCi0gICAgICAgICwgYW1vdW50KGFtb3VudCkKLSAg
ICB7IH0KLQotICAgIEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJUeXBlIHN1YnR5cGU7Ci0g
ICAgZmxvYXQgYW1vdW50OworICAgIEZpbHRlclR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZTsgfQorCisgICAgZmxvYXQgYW1vdW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2Ftb3VudDsKKyAgICB9CisgICAgV2ViUG9pbnQgZHJvcFNoYWRvd09mZnNldCgpIGNvbnN0
CisgICAgeworICAgICAgICBXRUJLSVRfQVNTRVJUKG1fdHlwZSA9PSBGaWx0ZXJUeXBlRHJvcFNo
YWRvdyk7CisgICAgICAgIHJldHVybiBXZWJQb2ludChtX2Ryb3BTaGFkb3dPZmZzZXQpOworICAg
IH0KKyAgICBXZWJDb2xvciBkcm9wU2hhZG93Q29sb3IoKSBjb25zdAorICAgIHsKKyAgICAgICAg
V0VCS0lUX0FTU0VSVChtX3R5cGUgPT0gRmlsdGVyVHlwZURyb3BTaGFkb3cpOworICAgICAgICBy
ZXR1cm4gbV9kcm9wU2hhZG93Q29sb3I7CisgICAgfQorCisgICAgc3RhdGljIFdlYkZpbHRlck9w
ZXJhdGlvbiBjcmVhdGVHcmF5c2NhbGVGaWx0ZXIoZmxvYXQgYW1vdW50KSB7IHJldHVybiBXZWJG
aWx0ZXJPcGVyYXRpb24oRmlsdGVyVHlwZUdyYXlzY2FsZSwgYW1vdW50KTsgfQorICAgIHN0YXRp
YyBXZWJGaWx0ZXJPcGVyYXRpb24gY3JlYXRlU2VwaWFGaWx0ZXIoZmxvYXQgYW1vdW50KSB7IHJl
dHVybiBXZWJGaWx0ZXJPcGVyYXRpb24oRmlsdGVyVHlwZVNlcGlhLCBhbW91bnQpOyB9CisgICAg
c3RhdGljIFdlYkZpbHRlck9wZXJhdGlvbiBjcmVhdGVTYXR1cmF0ZUZpbHRlcihmbG9hdCBhbW91
bnQpIHsgcmV0dXJuIFdlYkZpbHRlck9wZXJhdGlvbihGaWx0ZXJUeXBlU2F0dXJhdGUsIGFtb3Vu
dCk7IH0KKyAgICBzdGF0aWMgV2ViRmlsdGVyT3BlcmF0aW9uIGNyZWF0ZUh1ZVJvdGF0ZUZpbHRl
cihmbG9hdCBhbW91bnQpIHsgcmV0dXJuIFdlYkZpbHRlck9wZXJhdGlvbihGaWx0ZXJUeXBlSHVl
Um90YXRlLCBhbW91bnQpOyB9CisgICAgc3RhdGljIFdlYkZpbHRlck9wZXJhdGlvbiBjcmVhdGVJ
bnZlcnRGaWx0ZXIoZmxvYXQgYW1vdW50KSB7IHJldHVybiBXZWJGaWx0ZXJPcGVyYXRpb24oRmls
dGVyVHlwZUludmVydCwgYW1vdW50KTsgfQorICAgIHN0YXRpYyBXZWJGaWx0ZXJPcGVyYXRpb24g
Y3JlYXRlQnJpZ2h0bmVzc0ZpbHRlcihmbG9hdCBhbW91bnQpIHsgcmV0dXJuIFdlYkZpbHRlck9w
ZXJhdGlvbihGaWx0ZXJUeXBlQnJpZ2h0bmVzcywgYW1vdW50KTsgfQorICAgIHN0YXRpYyBXZWJG
aWx0ZXJPcGVyYXRpb24gY3JlYXRlQ29udHJhc3RGaWx0ZXIoZmxvYXQgYW1vdW50KSB7IHJldHVy
biBXZWJGaWx0ZXJPcGVyYXRpb24oRmlsdGVyVHlwZUNvbnRyYXN0LCBhbW91bnQpOyB9CisgICAg
c3RhdGljIFdlYkZpbHRlck9wZXJhdGlvbiBjcmVhdGVPcGFjaXR5RmlsdGVyKGZsb2F0IGFtb3Vu
dCkgeyByZXR1cm4gV2ViRmlsdGVyT3BlcmF0aW9uKEZpbHRlclR5cGVPcGFjaXR5LCBhbW91bnQp
OyB9CisgICAgc3RhdGljIFdlYkZpbHRlck9wZXJhdGlvbiBjcmVhdGVCbHVyRmlsdGVyKGZsb2F0
IGFtb3VudCkgeyByZXR1cm4gV2ViRmlsdGVyT3BlcmF0aW9uKEZpbHRlclR5cGVCbHVyLCBhbW91
bnQpOyB9CisgICAgc3RhdGljIFdlYkZpbHRlck9wZXJhdGlvbiBjcmVhdGVEcm9wU2hhZG93Rmls
dGVyKFdlYlBvaW50IG9mZnNldCwgZmxvYXQgc3RkRGV2aWF0aW9uLCBXZWJDb2xvciBjb2xvcikg
eyByZXR1cm4gV2ViRmlsdGVyT3BlcmF0aW9uKEZpbHRlclR5cGVEcm9wU2hhZG93LCBvZmZzZXQs
IHN0ZERldmlhdGlvbiwgY29sb3IpOyB9CisKKyAgICBib29sIGVxdWFscyhjb25zdCBXZWJGaWx0
ZXJPcGVyYXRpb24mIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYW1vdW50
ID09IG90aGVyLm1fYW1vdW50CisgICAgICAgICAgICAmJiBtX2Ryb3BTaGFkb3dPZmZzZXQgPT0g
b3RoZXIubV9kcm9wU2hhZG93T2Zmc2V0CisgICAgICAgICAgICAmJiBtX2Ryb3BTaGFkb3dDb2xv
ciA9PSBvdGhlci5tX2Ryb3BTaGFkb3dDb2xvcjsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgRmls
dGVyVHlwZSBtX3R5cGU7CisKKyAgICBmbG9hdCBtX2Ftb3VudDsKKyAgICBXZWJQb2ludCBtX2Ry
b3BTaGFkb3dPZmZzZXQ7CisgICAgV2ViQ29sb3IgbV9kcm9wU2hhZG93Q29sb3I7CisKKyAgICBX
ZWJGaWx0ZXJPcGVyYXRpb24oRmlsdGVyVHlwZSB0eXBlLCBmbG9hdCBhbW91bnQpCisgICAgewor
ICAgICAgICBXRUJLSVRfQVNTRVJUKHR5cGUgIT0gRmlsdGVyVHlwZURyb3BTaGFkb3cpOworICAg
ICAgICBtX3R5cGUgPSB0eXBlOworICAgICAgICBtX2Ftb3VudCA9IGFtb3VudDsKKyAgICAgICAg
bV9kcm9wU2hhZG93Q29sb3IgPSAwOworICAgIH0KKworICAgIFdlYkZpbHRlck9wZXJhdGlvbihG
aWx0ZXJUeXBlIHR5cGUsIFdlYlBvaW50IG9mZnNldCwgZmxvYXQgc3RkRGV2aWF0aW9uLCBXZWJD
b2xvciBjb2xvcikKKyAgICB7CisgICAgICAgIFdFQktJVF9BU1NFUlQodHlwZSA9PSBGaWx0ZXJU
eXBlRHJvcFNoYWRvdyk7CisgICAgICAgIG1fdHlwZSA9IHR5cGU7CisgICAgICAgIG1fYW1vdW50
ID0gc3RkRGV2aWF0aW9uOworICAgICAgICBtX2Ryb3BTaGFkb3dPZmZzZXQgPSBvZmZzZXQ7Cisg
ICAgICAgIG1fZHJvcFNoYWRvd0NvbG9yID0gY29sb3I7CisgICAgfQogfTsKIAotc3RydWN0IFdl
YkJsdXJGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgV2ViRmlsdGVyT3BlcmF0aW9uIHsKLSAgICBl
eHBsaWNpdCBXZWJCbHVyRmlsdGVyT3BlcmF0aW9uKGludCBwaXhlbFJhZGl1cykKLSAgICAgICAg
OiBXZWJGaWx0ZXJPcGVyYXRpb24oRmlsdGVyVHlwZUJsdXIpCi0gICAgICAgICwgcGl4ZWxSYWRp
dXMocGl4ZWxSYWRpdXMpCi0gICAgeyB9Ci0KLSAgICBpbnQgcGl4ZWxSYWRpdXM7Ci19OworaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWJGaWx0ZXJPcGVyYXRpb24mIGEsIGNvbnN0IFdl
YkZpbHRlck9wZXJhdGlvbiYgYikKK3sKKyAgICByZXR1cm4gYS5lcXVhbHMoYik7Cit9CiAKLXN0
cnVjdCBXZWJEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uIDogcHVibGljIFdlYkZpbHRlck9wZXJh
dGlvbiB7Ci0gICAgV2ViRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbihpbnQgeCwgaW50IHksIGlu
dCBzdGREZXZpYXRpb24sIFdlYkNvbG9yIGNvbG9yKSAKLSAgICAgICAgOiBXZWJGaWx0ZXJPcGVy
YXRpb24oRmlsdGVyVHlwZURyb3BTaGFkb3cpCi0gICAgICAgICwgeCh4KQotICAgICAgICAsIHko
eSkKLSAgICAgICAgLCBzdGREZXZpYXRpb24oc3RkRGV2aWF0aW9uKQotICAgICAgICAsIGNvbG9y
KGNvbG9yKQotICAgIHsgfQotCi0gICAgaW50IHg7Ci0gICAgaW50IHk7Ci0gICAgaW50IHN0ZERl
dmlhdGlvbjsKLSAgICBXZWJDb2xvciBjb2xvcjsKLX07CitpbmxpbmUgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbiYgYSwgY29uc3QgV2ViRmlsdGVyT3BlcmF0aW9uJiBi
KQoreworICAgIHJldHVybiAhKGEgPT0gYik7Cit9CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmggYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaAppbmRleCA1Njgw
NWQwMDNiZWFkZDM4NTI1ZTg5ZmNlMWI4MmU0OWVjMDUwYzgzLi45ZTMyYzBhMjI1MDNiMDE5YmM2
OTQyYmRlZWUzNDgyZDE1MjI4ZjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaApAQCAtMjcsMzQgKzI3LDU3IEBACiAj
ZGVmaW5lIFdlYkZpbHRlck9wZXJhdGlvbnNfaAogCiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisj
aW5jbHVkZSAiV2ViRmlsdGVyT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiV2ViUHJpdmF0ZU93blB0
ci5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBGaWx0ZXJPcGVyYXRpb25zOwotfQot
CiBuYW1lc3BhY2UgV2ViS2l0IHsKLXN0cnVjdCBXZWJGaWx0ZXJPcGVyYXRpb247CiAKLS8vIEFu
IG9yZGVyZWQgc2V0IG9mIGZpbHRlciBvcGVyYXRpb25zLgorY2xhc3MgV2ViRmlsdGVyT3BlcmF0
aW9uc1ByaXZhdGU7CisKKy8vIEFuIG9yZGVyZWQgbGlzdCBvZiBmaWx0ZXIgb3BlcmF0aW9ucy4K
IGNsYXNzIFdlYkZpbHRlck9wZXJhdGlvbnMgewogcHVibGljOgotICAgIFdlYkZpbHRlck9wZXJh
dGlvbnMoKSB7IHJlc2V0KCk7IH0KKyAgICBXZWJGaWx0ZXJPcGVyYXRpb25zKCkgeyBpbml0aWFs
aXplKCk7IH0KKyAgICBXZWJGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRvcj0oY29uc3QgV2ViRmls
dGVyT3BlcmF0aW9ucyYgb3RoZXIpCisgICAgeworICAgICAgICBhc3NpZ24ob3RoZXIpOworICAg
ICAgICByZXR1cm4gKnRoaXM7CisgICAgfQogICAgIH5XZWJGaWx0ZXJPcGVyYXRpb25zKCkgeyBk
ZXN0cm95KCk7IH0KIAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOworICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViRmlsdGVyT3BlcmF0aW9ucyYpOworICAgIFdF
QktJVF9FWFBPUlQgYm9vbCBlcXVhbHMoY29uc3QgV2ViRmlsdGVyT3BlcmF0aW9ucyYpIGNvbnN0
OworCiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBXZWJGaWx0ZXJPcGVyYXRp
b24mKTsKIAotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIGNvbnN0IFdlYkNvcmU6OkZp
bHRlck9wZXJhdGlvbnMmIHRvRmlsdGVyT3BlcmF0aW9ucygpIGNvbnN0OwotI2VuZGlmCisgICAg
Ly8gUmVtb3ZlcyBhbGwgZmlsdGVyIG9wZXJhdGlvbnMuCisgICAgV0VCS0lUX0VYUE9SVCB2b2lk
IGNsZWFyKCk7CisgICAgV0VCS0lUX0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25zdDsKKworICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBnZXRPdXRzZXRzKGludCYgdG9wLCBpbnQmIHJpZ2h0LCBpbnQm
IGJvdHRvbSwgaW50JiBsZWZ0KSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaGFzRmls
dGVyVGhhdE1vdmVzUGl4ZWxzKCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBib29sIGhhc0Zp
bHRlclRoYXRBZmZlY3RzT3BhY2l0eSgpIGNvbnN0OworCisgICAgV0VCS0lUX0VYUE9SVCBzaXpl
X3Qgc2l6ZSgpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgV2ViRmlsdGVyT3BlcmF0aW9uIGF0
KHNpemVfdCkgY29uc3Q7CiAKIHByaXZhdGU6CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGluaXRp
YWxpemUoKTsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgZGVzdHJveSgpOwogCi0gICAgV2ViUHJp
dmF0ZU93blB0cjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPiBtX3ByaXZhdGU7CisgICAgV2Vi
UHJpdmF0ZU93blB0cjxXZWJGaWx0ZXJPcGVyYXRpb25zUHJpdmF0ZT4gbV9wcml2YXRlOwogfTsK
IAoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWJGaWx0ZXJPcGVyYXRpb25zJiBhLCBj
b25zdCBXZWJGaWx0ZXJPcGVyYXRpb25zJiBiKQoreworICAgIHJldHVybiBhLmVxdWFscyhiKTsK
K30KKworaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBXZWJGaWx0ZXJPcGVyYXRpb25zJiBh
LCBjb25zdCBXZWJGaWx0ZXJPcGVyYXRpb25zJiBiKQoreworICAgIHJldHVybiAhKGEgPT0gYik7
Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
c3JjL1dlYkZpbHRlck9wZXJhdGlvbnMuY3BwIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3Ny
Yy9XZWJGaWx0ZXJPcGVyYXRpb25zLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMWNmY2ZhOWRkOGE3NzkxODQ0
MGQwYzIyYmQwODEwZTljZWQzM2E0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3NyYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmNwcApAQCAtMCwwICsxLDE1MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUg
PHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb24uaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsdGVy
T3BlcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYkZpbHRlck9wZXJhdGlvbnNQcml2YXRlIHsKK3B1YmxpYzoKKyAgICBW
ZWN0b3I8V2ViRmlsdGVyT3BlcmF0aW9uPiBvcGVyYXRpb25zOworfTsKKworCit2b2lkIFdlYkZp
bHRlck9wZXJhdGlvbnM6OmluaXRpYWxpemUoKQoreworICAgIG1fcHJpdmF0ZS5yZXNldChuZXcg
V2ViRmlsdGVyT3BlcmF0aW9uc1ByaXZhdGUpOworfQorCit2b2lkIFdlYkZpbHRlck9wZXJhdGlv
bnM6OmRlc3Ryb3koKQoreworICAgIG1fcHJpdmF0ZS5yZXNldCgwKTsKK30KKwordm9pZCBXZWJG
aWx0ZXJPcGVyYXRpb25zOjphc3NpZ24oY29uc3QgV2ViRmlsdGVyT3BlcmF0aW9ucyYgb3RoZXIp
Cit7CisgICAgbV9wcml2YXRlLT5vcGVyYXRpb25zID0gb3RoZXIubV9wcml2YXRlLT5vcGVyYXRp
b25zOworfQorCitib29sIFdlYkZpbHRlck9wZXJhdGlvbnM6OmVxdWFscyhjb25zdCBXZWJGaWx0
ZXJPcGVyYXRpb25zJiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAob3RoZXIuc2l6ZSgpICE9IHNp
emUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9wcml2YXRlLT5vcGVyYXRpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChvdGhlci5h
dChpKSAhPSBhdChpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViRmlsdGVyT3BlcmF0aW9uczo6YXBwZW5kKGNvbnN0IFdl
YkZpbHRlck9wZXJhdGlvbiYgZmlsdGVyKQoreworICAgIG1fcHJpdmF0ZS0+b3BlcmF0aW9ucy5h
cHBlbmQoZmlsdGVyKTsKK30KKwordm9pZCBXZWJGaWx0ZXJPcGVyYXRpb25zOjpjbGVhcigpCit7
CisgICAgbV9wcml2YXRlLT5vcGVyYXRpb25zLmNsZWFyKCk7Cit9CisKK2Jvb2wgV2ViRmlsdGVy
T3BlcmF0aW9uczo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+b3Bl
cmF0aW9ucy5pc0VtcHR5KCk7Cit9CisKK3N0YXRpYyBpbnQgc3ByZWFkRm9yU3RkRGV2aWF0aW9u
KGZsb2F0IHN0ZERldmlhdGlvbikKK3sKKyAgICAvLyBodHRwczovL2R2Y3MudzMub3JnL2hnL0ZY
VEYvcmF3LWZpbGUvdGlwL2ZpbHRlcnMvaW5kZXguaHRtbCNmZUdhdXNzaWFuQmx1ckVsZW1lbnQg
cHJvdmlkZXMgdGhpcyBhcHByb3hpbWF0aW9uIGZvcgorICAgIC8vIGV2YWx1YXRpbmcgYSBnYXVz
c2lhbiBibHVyIGJ5IGEgdHJpcGxlIGJveCBmaWx0ZXIuCisgICAgZmxvYXQgZCA9IGZsb29yZihz
dGREZXZpYXRpb24gKiAzICogc3FydCg4LmYgKiBhdGFuKDEuZikpIC8gNCArIDAuNSk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4oY2VpbGYoZCAqIDMgLyAyKSk7Cit9CisKK3ZvaWQgV2Vi
RmlsdGVyT3BlcmF0aW9uczo6Z2V0T3V0c2V0cyhpbnQmIHRvcCwgaW50JiByaWdodCwgaW50JiBi
b3R0b20sIGludCYgbGVmdCkgY29uc3QKK3sKKyAgICB0b3AgPSByaWdodCA9IGJvdHRvbSA9IGxl
ZnQgPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wcml2YXRlLT5vcGVyYXRpb25z
LnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbiBvcCA9IG1f
cHJpdmF0ZS0+b3BlcmF0aW9uc1tpXTsKKyAgICAgICAgaWYgKG9wLnR5cGUoKSA9PSBXZWJGaWx0
ZXJPcGVyYXRpb246OkZpbHRlclR5cGVCbHVyIHx8IG9wLnR5cGUoKSA9PSBXZWJGaWx0ZXJPcGVy
YXRpb246OkZpbHRlclR5cGVEcm9wU2hhZG93KSB7CisgICAgICAgICAgICBpbnQgc3ByZWFkID0g
c3ByZWFkRm9yU3RkRGV2aWF0aW9uKG9wLmFtb3VudCgpKTsKKyAgICAgICAgICAgIGlmIChvcC50
eXBlKCkgPT0gV2ViRmlsdGVyT3BlcmF0aW9uOjpGaWx0ZXJUeXBlQmx1cikgeworICAgICAgICAg
ICAgICAgIHRvcCArPSBzcHJlYWQ7CisgICAgICAgICAgICAgICAgcmlnaHQgKz0gc3ByZWFkOwor
ICAgICAgICAgICAgICAgIGJvdHRvbSArPSBzcHJlYWQ7CisgICAgICAgICAgICAgICAgbGVmdCAr
PSBzcHJlYWQ7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRvcCArPSBz
cHJlYWQgLSBvcC5kcm9wU2hhZG93T2Zmc2V0KCkueTsKKyAgICAgICAgICAgICAgICByaWdodCAr
PSBzcHJlYWQgKyBvcC5kcm9wU2hhZG93T2Zmc2V0KCkueDsKKyAgICAgICAgICAgICAgICBib3R0
b20gKz0gc3ByZWFkICsgb3AuZHJvcFNoYWRvd09mZnNldCgpLnk7CisgICAgICAgICAgICAgICAg
bGVmdCArPSBzcHJlYWQgLSBvcC5kcm9wU2hhZG93T2Zmc2V0KCkueDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KK30KKworYm9vbCBXZWJGaWx0ZXJPcGVyYXRpb25zOjpoYXNGaWx0
ZXJUaGF0TW92ZXNQaXhlbHMoKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9wcml2YXRlLT5vcGVyYXRpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IFdlYkZp
bHRlck9wZXJhdGlvbiBvcCA9IG1fcHJpdmF0ZS0+b3BlcmF0aW9uc1tpXTsKKyAgICAgICAgc3dp
dGNoIChvcC50eXBlKCkpIHsKKyAgICAgICAgY2FzZSBXZWJGaWx0ZXJPcGVyYXRpb246OkZpbHRl
clR5cGVCbHVyOgorICAgICAgICBjYXNlIFdlYkZpbHRlck9wZXJhdGlvbjo6RmlsdGVyVHlwZURy
b3BTaGFkb3c6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBXZWJGaWx0ZXJPcGVyYXRpb25zOjpoYXNGaWx0ZXJUaGF0QWZmZWN0c09wYWNpdHko
KSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wcml2YXRlLT5vcGVyYXRp
b25zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbiBvcCA9
IG1fcHJpdmF0ZS0+b3BlcmF0aW9uc1tpXTsKKyAgICAgICAgc3dpdGNoIChvcC50eXBlKCkpIHsK
KyAgICAgICAgY2FzZSBXZWJGaWx0ZXJPcGVyYXRpb246OkZpbHRlclR5cGVPcGFjaXR5OgorICAg
ICAgICBjYXNlIFdlYkZpbHRlck9wZXJhdGlvbjo6RmlsdGVyVHlwZUJsdXI6CisgICAgICAgIGNh
c2UgV2ViRmlsdGVyT3BlcmF0aW9uOjpGaWx0ZXJUeXBlRHJvcFNoYWRvdzoKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzaXplX3QgV2ViRmlsdGVyT3Bl
cmF0aW9uczo6c2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+b3BlcmF0aW9u
cy5zaXplKCk7Cit9CisKK1dlYkZpbHRlck9wZXJhdGlvbiBXZWJGaWx0ZXJPcGVyYXRpb25zOjph
dChzaXplX3QgaSkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5vcGVyYXRpb25zLmF0
KGkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAv
V2ViQ29yZS5neXAKaW5kZXggNDRmZTc2N2E3NTBhMWJiNGIwYjViMTQyNThhZTg2NDQ5MGY4NjMz
Yi4uY2VkMWEzM2YyZmFjN2MxNGY5OTA5OThhNTFhMWRiOTNhZWRlNGRjYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTEyMDQsNiArMTIwNCw3IEBACiAgICAgICAg
ICcuLi8uLi9UaGlyZFBhcnR5L2dsdS9nbHUuZ3lwOmxpYnRlc3MnLAogICAgICAgICAnLi4vLi4v
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwL0phdmFTY3JpcHRDb3JlLmd5cDp5YXJy
JywKICAgICAgICAgJy4uLy4uL1dURi9XVEYuZ3lwL1dURi5neXA6d3RmJywKKyAgICAgICAgJy4u
Ly4uL1BsYXRmb3JtL1BsYXRmb3JtLmd5cC9QbGF0Zm9ybS5neXA6d2Via2l0X3BsYXRmb3JtJywK
ICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvYnVpbGQvdGVtcF9neXAvZ29vZ2xldXJsLmd5
cDpnb29nbGV1cmwnLAogICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9za2lhL3NraWEuZ3lw
OnNraWEnLAogICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9pY2NqcGVn
L2ljY2pwZWcuZ3lwOmljY2pwZWcnLApAQCAtMTIyMiw2ICsxMjIzLDcgQEAKICAgICAgICdleHBv
cnRfZGVwZW5kZW50X3NldHRpbmdzJzogWwogICAgICAgICAnLi4vLi4vSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUuZ3lwL0phdmFTY3JpcHRDb3JlLmd5cDp5YXJyJywKICAgICAgICAgJy4u
Ly4uL1dURi9XVEYuZ3lwL1dURi5neXA6d3RmJywKKyAgICAgICAgJy4uLy4uL1BsYXRmb3JtL1Bs
YXRmb3JtLmd5cC9QbGF0Zm9ybS5neXA6d2Via2l0X3BsYXRmb3JtJywKICAgICAgICAgJzwoY2hy
b21pdW1fc3JjX2RpcikvYnVpbGQvdGVtcF9neXAvZ29vZ2xldXJsLmd5cDpnb29nbGV1cmwnLAog
ICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9za2lhL3NraWEuZ3lwOnNraWEnLAogICAgICAg
ICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9pY2NqcGVnL2ljY2pwZWcuZ3lwOmlj
Y2pwZWcnLApAQCAtMTQ3Nyw3ICsxNDc5LDYgQEAKICAgICAgICd0eXBlJzogJ3N0YXRpY19saWJy
YXJ5JywKICAgICAgICdkZXBlbmRlbmNpZXMnOiBbCiAgICAgICAgICd3ZWJjb3JlX3ByZXJlcXVp
c2l0ZXMnLAotICAgICAgICAnLi4vLi4vUGxhdGZvcm0vUGxhdGZvcm0uZ3lwL1BsYXRmb3JtLmd5
cDp3ZWJraXRfcGxhdGZvcm0nLAogICAgICAgXSwKICAgICAgICdkZWZpbmVzJzogWyAKICAgICAg
ICAgJ1dFQktJVF9JTVBMRU1FTlRBVElPTj0xJywgCkBAIC0yMDQxLDYgKzIwNDIsNyBAQAogICAg
ICAgICAnPEAod2ViY29yZV9pbmNsdWRlX2RpcnMpJywKICAgICAgICAgJy4uL3Rlc3RpbmcnLAog
ICAgICAgICAnLi4vdGVzdGluZy92OCcsCisgICAgICAgICcuLi8uLi9QbGF0Zm9ybS9jaHJvbWl1
bScsCiAgICAgICBdLAogICAgICAgJ3NvdXJjZXMnOiBbCiAgICAgICAgICc8QCh3ZWJjb3JlX3Rl
c3Rfc3VwcG9ydF9maWxlcyknLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDFiNzBkMGI0Y2ZiMmRkNWQ3
OWExYTY2MDRjNDE4ZGUxM2MzMGVkNDAuLmRjZTQ0N2FlOTBlOGE1YTY3M2I1ZDIyNDBiZGIzZDY3
OTJmNzY1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTgyOTUsNyArODI5NSw2IEBACiAgICAgICAg
ICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJEYXRhLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJIVFRQQm9keS5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViSFRUUExvYWRJbmZvLmNwcCcsCi0gICAg
ICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJGaWx0ZXJPcGVyYXRpb25zLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJJQ0VDYW5kaWRh
dGVEZXNjcmlwdG9yLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9y
dC9XZWJJQ0VPcHRpb25zLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3Vw
cG9ydC9XZWJNZWRpYUhpbnRzLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkZpbHRlck9wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJGaWx0ZXJPcGVyYXRpb25zLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWU1Yzg1ZjE5MmUwNzA5YmUzNmU1NTU4YzQx
NWNjNDAzNzIxMmQwNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkZpbHRlck9w
ZXJhdGlvbnMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwot
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKLQotI2luY2x1
ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb24uaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViRmls
dGVyT3BlcmF0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIFdlYkZpbHRlck9wZXJh
dGlvbnM6OnJlc2V0KCkKLXsKLSAgICBtX3ByaXZhdGUucmVzZXQobmV3IEZpbHRlck9wZXJhdGlv
bnMoKSk7Ci19Ci0KLXZvaWQgV2ViRmlsdGVyT3BlcmF0aW9uczo6ZGVzdHJveSgpCi17Ci0gICAg
bV9wcml2YXRlLnJlc2V0KDApOwotfQotCi12b2lkIFdlYkZpbHRlck9wZXJhdGlvbnM6OmFwcGVu
ZChjb25zdCBXZWJGaWx0ZXJPcGVyYXRpb24mIGZpbHRlcikKLXsKLSAgICBzd2l0Y2ggKGZpbHRl
ci50eXBlKSB7Ci0gICAgY2FzZSBXZWJGaWx0ZXJPcGVyYXRpb246OkZpbHRlclR5cGVCYXNpY0Nv
bG9yTWF0cml4OiB7Ci0gICAgICAgIGNvbnN0IFdlYkJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVy
YXRpb24mIGNvbG9yRmlsdGVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQmFzaWNDb2xvck1hdHJp
eEZpbHRlck9wZXJhdGlvbiY+KGZpbHRlcik7Ci0gICAgICAgIG1fcHJpdmF0ZS0+b3BlcmF0aW9u
cygpLmFwcGVuZChCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoY29sb3JG
aWx0ZXIuYW1vdW50LCBzdGF0aWNfY2FzdDxGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5cGU+
KGNvbG9yRmlsdGVyLnN1YnR5cGUpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNl
IFdlYkZpbHRlck9wZXJhdGlvbjo6RmlsdGVyVHlwZUJhc2ljQ29tcG9uZW50VHJhbnNmZXI6IHsK
LSAgICAgICAgY29uc3QgV2ViQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiYg
Y29tcG9uZW50RmlsdGVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQmFzaWNDb21wb25lbnRUcmFu
c2ZlckZpbHRlck9wZXJhdGlvbiY+KGZpbHRlcik7Ci0gICAgICAgIG1fcHJpdmF0ZS0+b3BlcmF0
aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVh
dGUoY29tcG9uZW50RmlsdGVyLmFtb3VudCwgc3RhdGljX2Nhc3Q8RmlsdGVyT3BlcmF0aW9uOjpP
cGVyYXRpb25UeXBlPihjb21wb25lbnRGaWx0ZXIuc3VidHlwZSkpKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotICAgIGNhc2UgV2ViRmlsdGVyT3BlcmF0aW9uOjpGaWx0ZXJUeXBlQmx1cjogewot
ICAgICAgICBjb25zdCBXZWJCbHVyRmlsdGVyT3BlcmF0aW9uJiBibHVyRmlsdGVyID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgV2ViQmx1ckZpbHRlck9wZXJhdGlvbiY+KGZpbHRlcik7Ci0gICAgICAgIG1f
cHJpdmF0ZS0+b3BlcmF0aW9ucygpLmFwcGVuZChCbHVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUo
TGVuZ3RoKGJsdXJGaWx0ZXIucGl4ZWxSYWRpdXMsIEZpeGVkKSwgRmlsdGVyT3BlcmF0aW9uOjpC
TFVSKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIFdlYkZpbHRlck9wZXJhdGlv
bjo6RmlsdGVyVHlwZURyb3BTaGFkb3c6IHsKLSAgICAgICAgY29uc3QgV2ViRHJvcFNoYWRvd0Zp
bHRlck9wZXJhdGlvbiYgc2hhZG93RmlsdGVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViRHJvcFNo
YWRvd0ZpbHRlck9wZXJhdGlvbiY+KGZpbHRlcik7Ci0gICAgICAgIG1fcHJpdmF0ZS0+b3BlcmF0
aW9ucygpLmFwcGVuZChEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoSW50UG9pbnQo
c2hhZG93RmlsdGVyLngsIHNoYWRvd0ZpbHRlci55KSwgc2hhZG93RmlsdGVyLnN0ZERldmlhdGlv
biwgc2hhZG93RmlsdGVyLmNvbG9yLCBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XKSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci19Ci0KLWNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
IFdlYkZpbHRlck9wZXJhdGlvbnM6OnRvRmlsdGVyT3BlcmF0aW9ucygpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuICptX3ByaXZhdGUuZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVu
dExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKaW5kZXggMGNkMWQ3OGQ4NTM5YTZmODY3NDBlZGMw
MzQyZGFkMjJmMzRjMDA1MS4uMjhhMDVlZGQ3YTFjNWRiYWMzY2RhZWM4NGNkNzIxNWUyOWU2ZTI4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q29udGVudExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCkBAIC0zOSwxNSArMzksMTkgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBMYXllclRpbGVyQ2hyb21pdW07CitjbGFz
cyBHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBJbnRSZWN0OwogY2xhc3MgTGF5ZXJUZXh0dXJlVXBk
YXRlcjsKIAogY2xhc3MgQ29udGVudExheWVyRGVsZWdhdGUgewogcHVibGljOgotICAgIHZpcnR1
YWwgfkNvbnRlbnRMYXllckRlbGVnYXRlKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29u
dGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgY2xpcCkgPSAwOworCitwcm90
ZWN0ZWQ6CisgICAgdmlydHVhbCB+Q29udGVudExheWVyRGVsZWdhdGUoKSB7IH0KIH07CiAKKwog
Ly8gQSBMYXllciB0aGF0IHJlcXVpcmVzIGEgR3JhcGhpY3NDb250ZXh0IHRvIHJlbmRlciBpdHMg
Y29udGVudHMuCiBjbGFzcyBDb250ZW50TGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBUaWxlZExheWVy
Q2hyb21pdW0gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAK
aW5kZXggOWFhMjdjYzMzYjY0ZmJmMmI2ZDIyZDAyNGE5Mjc5NzM5Y2FhMjY3OS4uMTg0MzMzNjA5
NTFiMmJmY2VhN2NiMTFiYmU5MDAxZWE5ODVmNGUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xh
eWVyQ2hyb21pdW0uY3BwCkBAIC01OCw2ICs1OCw4IEBACiAjaW5jbHVkZSAiU2tNYXRyaXg0NC5o
IgogI2luY2x1ZGUgIlN5c3RlbVRpbWUuaCIKIAorI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJP
cGVyYXRpb24uaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5oPgogI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJGbG9hdFBvaW50Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0
UmVjdC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJTaXplLmg+CkBAIC02Nyw5ICs2OSw3IEBACiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwotCi11
c2luZyBXZWJLaXQ6OldlYkNvbnRlbnRMYXllcjsKLXVzaW5nIFdlYktpdDo6V2ViTGF5ZXI7Cit1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTI5Niwx
MiArMjk2LDk4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c09wYXF1
ZShib29sIG9wYXF1ZSkKICAgICBtX2xheWVyLnNldE9wYXF1ZShtX2NvbnRlbnRzT3BhcXVlKTsK
IH0KIAorc3RhdGljIGJvb2wgY29weVdlYkNvcmVGaWx0ZXJPcGVyYXRpb25zVG9XZWJGaWx0ZXJP
cGVyYXRpb25zKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIFdlYkZpbHRlck9wZXJh
dGlvbnMmIHdlYkZpbHRlcnMpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWx0ZXJz
LnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgb3AgPSAqZmls
dGVycy5hdChpKTsKKyAgICAgICAgc3dpdGNoIChvcC5nZXRPcGVyYXRpb25UeXBlKCkpIHsKKyAg
ICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRToKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsgLy8gTm90IHN1cHBvcnRlZC4KKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246
OkdSQVlTQ0FMRToKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNFUElBOgorICAgICAg
ICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0FUVVJBVEU6CisgICAgICAgIGNhc2UgRmlsdGVyT3Bl
cmF0aW9uOjpIVUVfUk9UQVRFOiB7CisgICAgICAgICAgICBmbG9hdCBhbW91bnQgPSBzdGF0aWNf
Y2FzdDxjb25zdCBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKj4oJm9wKS0+YW1vdW50
KCk7CisgICAgICAgICAgICBzd2l0Y2ggKG9wLmdldE9wZXJhdGlvblR5cGUoKSkgeworICAgICAg
ICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRToKKyAgICAgICAgICAgICAgICB3
ZWJGaWx0ZXJzLmFwcGVuZChXZWJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZUdyYXlzY2FsZUZpbHRl
cihhbW91bnQpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRmls
dGVyT3BlcmF0aW9uOjpTRVBJQToKKyAgICAgICAgICAgICAgICB3ZWJGaWx0ZXJzLmFwcGVuZChX
ZWJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZVNlcGlhRmlsdGVyKGFtb3VudCkpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNBVFVSQVRF
OgorICAgICAgICAgICAgICAgIHdlYkZpbHRlcnMuYXBwZW5kKFdlYkZpbHRlck9wZXJhdGlvbjo6
Y3JlYXRlU2F0dXJhdGVGaWx0ZXIoYW1vdW50KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURToKKyAgICAgICAgICAg
ICAgICB3ZWJGaWx0ZXJzLmFwcGVuZChXZWJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZUh1ZVJvdGF0
ZUZpbHRlcihhbW91bnQpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRlck9w
ZXJhdGlvbjo6SU5WRVJUOgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lUWToK
KyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJSSUdIVE5FU1M6CisgICAgICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDogeworICAgICAgICAgICAgZmxvYXQgYW1vdW50ID0g
c3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbio+
KCZvcCktPmFtb3VudCgpOworICAgICAgICAgICAgc3dpdGNoIChvcC5nZXRPcGVyYXRpb25UeXBl
KCkpIHsKKyAgICAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6CisgICAgICAg
ICAgICAgICAgd2ViRmlsdGVycy5hcHBlbmQoV2ViRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGVJbnZl
cnRGaWx0ZXIoYW1vdW50KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lUWToKKyAgICAgICAgICAgICAgICB3ZWJGaWx0ZXJz
LmFwcGVuZChXZWJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZU9wYWNpdHlGaWx0ZXIoYW1vdW50KSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6QlJJR0hUTkVTUzoKKyAgICAgICAgICAgICAgICB3ZWJGaWx0ZXJzLmFwcGVuZChXZWJGaWx0
ZXJPcGVyYXRpb246OmNyZWF0ZUJyaWdodG5lc3NGaWx0ZXIoYW1vdW50KSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q09OVFJBU1Q6
CisgICAgICAgICAgICAgICAgd2ViRmlsdGVycy5hcHBlbmQoV2ViRmlsdGVyT3BlcmF0aW9uOjpj
cmVhdGVDb250cmFzdEZpbHRlcihhbW91bnQpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIEZpbHRlck9wZXJhdGlvbjo6QkxVUjogeworICAgICAgICAgICAgZmxvYXQgcGl4ZWxSYWRp
dXMgPSBzdGF0aWNfY2FzdDxjb25zdCBCbHVyRmlsdGVyT3BlcmF0aW9uKj4oJm9wKS0+c3RkRGV2
aWF0aW9uKCkuZ2V0RmxvYXRWYWx1ZSgpOworICAgICAgICAgICAgd2ViRmlsdGVycy5hcHBlbmQo
V2ViRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGVCbHVyRmlsdGVyKHBpeGVsUmFkaXVzKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6
RFJPUF9TSEFET1c6IHsKKyAgICAgICAgICAgIGNvbnN0IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRp
b24mIGRyb3BTaGFkb3dPcCA9ICpzdGF0aWNfY2FzdDxjb25zdCBEcm9wU2hhZG93RmlsdGVyT3Bl
cmF0aW9uKj4oJm9wKTsKKyAgICAgICAgICAgIHdlYkZpbHRlcnMuYXBwZW5kKFdlYkZpbHRlck9w
ZXJhdGlvbjo6Y3JlYXRlRHJvcFNoYWRvd0ZpbHRlcihXZWJQb2ludChkcm9wU2hhZG93T3AueCgp
LCBkcm9wU2hhZG93T3AueSgpKSwgZHJvcFNoYWRvd09wLnN0ZERldmlhdGlvbigpLCBkcm9wU2hh
ZG93T3AuY29sb3IoKS5yZ2IoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyNp
ZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDVVNU
T006CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIE5vdCBzdXBwb3J0ZWQuCisjZW5kaWYK
KyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlBBU1NUSFJPVUdIOgorICAgICAgICBjYXNl
IEZpbHRlck9wZXJhdGlvbjo6Tk9ORToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiBib29sIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6
c2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogewotICAgIG1fbGF5
ZXIudW53cmFwPExheWVyQ2hyb21pdW0+KCktPnNldEZpbHRlcnMoZmlsdGVycyk7CisgICAgV2Vi
RmlsdGVyT3BlcmF0aW9ucyB3ZWJGaWx0ZXJzOworICAgIGlmICghY29weVdlYkNvcmVGaWx0ZXJP
cGVyYXRpb25zVG9XZWJGaWx0ZXJPcGVyYXRpb25zKGZpbHRlcnMsIHdlYkZpbHRlcnMpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9sYXllci5zZXRGaWx0ZXJzKHdlYkZpbHRlcnMpOwog
ICAgIHJldHVybiBHcmFwaGljc0xheWVyOjpzZXRGaWx0ZXJzKGZpbHRlcnMpOwogfQogCit2b2lk
IEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgRmlsdGVy
T3BlcmF0aW9ucyYgZmlsdGVycykKK3sKKyAgICBXZWJGaWx0ZXJPcGVyYXRpb25zIHdlYkZpbHRl
cnM7CisgICAgaWYgKCFjb3B5V2ViQ29yZUZpbHRlck9wZXJhdGlvbnNUb1dlYkZpbHRlck9wZXJh
dGlvbnMoZmlsdGVycywgd2ViRmlsdGVycykpCisgICAgICAgIHJldHVybjsKKyAgICBtX2xheWVy
LnNldEJhY2tncm91bmRGaWx0ZXJzKHdlYkZpbHRlcnMpOworfQorCiB2b2lkIEdyYXBoaWNzTGF5
ZXJDaHJvbWl1bTo6c2V0TWFza0xheWVyKEdyYXBoaWNzTGF5ZXIqIG1hc2tMYXllcikKIHsKICAg
ICBpZiAobWFza0xheWVyID09IG1fbWFza0xheWVyKQpAQCAtNTkyLDEyICs2NzgsMTIgQEAgdm9p
ZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUFuY2hvclBvaW50KCkKIAogdm9pZCBHcmFw
aGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZVRyYW5zZm9ybSgpCiB7Ci0gICAgcHJpbWFyeUxheWVy
KCkuc2V0VHJhbnNmb3JtKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgobV90cmFuc2Zv
cm0pKTsKKyAgICBwcmltYXJ5TGF5ZXIoKS5zZXRUcmFuc2Zvcm0oV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgobV90cmFuc2Zvcm0pKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVw
ZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKCkKIHsKLSAgICBwcmltYXJ5TGF5ZXIoKS5zZXRTdWJsYXll
clRyYW5zZm9ybShXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4KG1fY2hpbGRyZW5UcmFu
c2Zvcm0pKTsKKyAgICBwcmltYXJ5TGF5ZXIoKS5zZXRTdWJsYXllclRyYW5zZm9ybShXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeChtX2NoaWxkcmVuVHJhbnNmb3JtKSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NMYXllckNocm9taXVtOjp1cGRhdGVNYXNrc1RvQm91bmRzKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1
bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NM
YXllckNocm9taXVtLmgKaW5kZXggMTFlNjdhMTYyMmRmZWI5ZTE0ZTAwNGE5MzNhYzQ0NmFlYzA3
ZjM2Ni4uYjk5NDk5MTJjYjczMGVjNTY0ZGEyM2EwN2I0ZjlkODY5ZjYwZmI0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXll
ckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vR3JhcGhpY3NMYXllckNocm9taXVtLmgKQEAgLTg5LDYgKzg5LDcgQEAgcHVibGljOgogCiAg
ICAgLy8gUmV0dXJucyB0cnVlIGlmIGZpbHRlciBjYW4gYmUgcmVuZGVyZWQgYnkgdGhlIGNvbXBv
c2l0b3IKICAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25z
Jik7CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25z
Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCk7CiAgICAgdmlydHVhbCB2
b2lkIHNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5jcHAKaW5kZXggMWEwZTY3MDg5ZjEzZWRjMzAwMmMxMDdhM2ViNWMxYTFhZmFjODBjNS4u
Mzk1MmE4YTM1YzVjMTMzNmFmMmIxYTk2ZWE3YmVmNGI0MmZmYmJmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5jcHAKQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIExheWVyQ2hyb21pdW06OnNldFJlcGxp
Y2FMYXllcihMYXllckNocm9taXVtKiBsYXllcikKICAgICBzZXROZWVkc0NvbW1pdCgpOwogfQog
Ci12b2lkIExheWVyQ2hyb21pdW06OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYg
ZmlsdGVycykKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0RmlsdGVycyhjb25zdCBXZWJLaXQ6Oldl
YkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB7CiAgICAgaWYgKG1fZmlsdGVycyA9PSBmaWx0
ZXJzKQogICAgICAgICByZXR1cm47CkBAIC0zMTcsMTIgKzMxNywxNCBAQCB2b2lkIExheWVyQ2hy
b21pdW06OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKICAgICAg
ICAgQ0NMYXllclRyZWVIb3N0OjpzZXROZWVkc0ZpbHRlckNvbnRleHQodHJ1ZSk7CiB9CiAKLXZv
aWQgTGF5ZXJDaHJvbWl1bTo6c2V0QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0
aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMpCit2b2lkIExheWVyQ2hyb21pdW06OnNldEJhY2tncm91
bmRGaWx0ZXJzKGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZp
bHRlcnMpCiB7CiAgICAgaWYgKG1fYmFja2dyb3VuZEZpbHRlcnMgPT0gYmFja2dyb3VuZEZpbHRl
cnMpCiAgICAgICAgIHJldHVybjsKICAgICBtX2JhY2tncm91bmRGaWx0ZXJzID0gYmFja2dyb3Vu
ZEZpbHRlcnM7CiAgICAgc2V0TmVlZHNDb21taXQoKTsKKyAgICBpZiAoIWJhY2tncm91bmRGaWx0
ZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0OjpzZXROZWVkc0ZpbHRlckNv
bnRleHQodHJ1ZSk7CiB9CiAKIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0T3BhY2l0eShmbG9hdCBv
cGFjaXR5KQpAQCAtNDcyLDE4ICs0NzQsNiBAQCB2b2lkIExheWVyQ2hyb21pdW06OnB1c2hQcm9w
ZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogICAgIGxheWVyLT5zZXREb3VibGVTaWRlZCht
X2RvdWJsZVNpZGVkKTsKICAgICBsYXllci0+c2V0RHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdU
aWxlcyhtX2RyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGlsZXMpOwogICAgIGxheWVyLT5zZXRE
cmF3c0NvbnRlbnQoZHJhd3NDb250ZW50KCkpOwotICAgIGlmIChDQ1Byb3h5OjpoYXNJbXBsVGhy
ZWFkKCkpIHsKLSAgICAgICAgLy8gU2luY2UgRmlsdGVyT3BlcmF0aW9ucyBjb250YWlucyBhIHZl
Y3RvciBvZiBSZWZQdHJzLCB3ZSBtdXN0IGRlZXAgY29weSB0aGUgZmlsdGVycy4KLSAgICAgICAg
RmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzQ29weTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fZmlsdGVycy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgUmVmUHRyPEZpbHRl
ck9wZXJhdGlvbj4gY2xvbmUgPSBtX2ZpbHRlcnMuYXQoaSktPmNsb25lKCk7Ci0gICAgICAgICAg
ICBpZiAoY2xvbmUpCi0gICAgICAgICAgICAgICAgZmlsdGVyc0NvcHkub3BlcmF0aW9ucygpLmFw
cGVuZChjbG9uZSk7Ci0gICAgICAgIH0KLSAgICAgICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVy
c0NvcHkpOwotICAgIH0gZWxzZQotICAgICAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKCkp
OwotCiAgICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycygpKTsKICAgICBsYXllci0+c2V0QmFj
a2dyb3VuZEZpbHRlcnMoYmFja2dyb3VuZEZpbHRlcnMoKSk7CiAgICAgbGF5ZXItPnNldElzTm9u
Q29tcG9zaXRlZENvbnRlbnQobV9pc05vbkNvbXBvc2l0ZWRDb250ZW50KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21p
dW0uaAppbmRleCA3NTVhN2RhOTFlNjQ1YjJhZjA3ODkxZjg0MjQwZmEyYWEzZmJjMzFlLi42YjQz
NzBkMWExMGM4ZTQ3OTczMjQ2ZjM5ODg1MGYxYjZjNDUwYTBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5o
CkBAIC0zNCw3ICszNCw2IEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAK
LSNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CkBAIC00Niw2ICs0NSw3IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJjYy9DQ09jY2x1c2lvblRyYWNrZXIuaCIKIAorI2luY2x1ZGUgPHB1
YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAg
LTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1
Y3QgQ0NBbmltYXRpb25FdmVudDsKQEAgLTExNSwxMyArMTE2LDEzIEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldE9wYWNpdHkoZmxvYXQpOwogICAgIGJvb2wgb3BhY2l0eUlzQW5pbWF0aW5nKCkgY29u
c3Q7CiAKLSAgICB2b2lkIHNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOwotICAg
IGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRl
cnM7IH0KKyAgICB2b2lkIHNldEZpbHRlcnMoY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRp
b25zJik7CisgICAgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKCkg
eyByZXR1cm4gbV9maWx0ZXJzOyB9CiAKICAgICAvLyBCYWNrZ3JvdW5kIGZpbHRlcnMgYXJlIGZp
bHRlcnMgYXBwbGllZCB0byB3aGF0IGlzIGJlaGluZCB0aGlzIGxheWVyLCB3aGVuIHRoZXkgYXJl
IHZpZXdlZCB0aHJvdWdoIG5vbi1vcGFxdWUKICAgICAvLyByZWdpb25zIGluIHRoaXMgbGF5ZXIu
IFRoZXkgYXJlIHVzZWQgdGhyb3VnaCB0aGUgV2ViTGF5ZXIgaW50ZXJmYWNlLCBhbmQgYXJlIG5v
dCBleHBvc2VkIHRvIEhUTUwuCi0gICAgdm9pZCBzZXRCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJik7Ci0gICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3Vu
ZEZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRGaWx0ZXJzOyB9CisgICAgdm9p
ZCBzZXRCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMm
KTsKKyAgICBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0
ZXJzKCkgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRmlsdGVyczsgfQogCiAgICAgdmlydHVhbCB2b2lk
IHNldE9wYXF1ZShib29sKTsKICAgICBib29sIG9wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3Bh
cXVlOyB9CkBAIC0zMTgsOCArMzE5LDggQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX2RlYnVnQm9y
ZGVyV2lkdGg7CiAgICAgU3RyaW5nIG1fZGVidWdOYW1lOwogICAgIGZsb2F0IG1fb3BhY2l0eTsK
LSAgICBGaWx0ZXJPcGVyYXRpb25zIG1fZmlsdGVyczsKLSAgICBGaWx0ZXJPcGVyYXRpb25zIG1f
YmFja2dyb3VuZEZpbHRlcnM7CisgICAgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zIG1fZmls
dGVyczsKKyAgICBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMgbV9iYWNrZ3JvdW5kRmlsdGVy
czsKICAgICBmbG9hdCBtX2FuY2hvclBvaW50WjsKICAgICBib29sIG1faXNEcmF3YWJsZTsKICAg
ICBib29sIG1fbWFza3NUb0JvdW5kczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgK
aW5kZXggNGQzOTk3MzQ2MWMxMjU2OWQ3OTFhY2U3NzViMjYxZTQwNWU3YWY5ZS4uOGQwMTdhMzEz
MjIwZGMzMTcwNzY5ODZlMWQ1YmQxYjJhMDU0NTJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFj
ZUNocm9taXVtLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJTaGFkZXJDaHJvbWl1bS5o
IgogI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25N
YXRyaXguaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5oPgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05MCwxMSAr
OTEsMTEgQEAgcHVibGljOgogICAgIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9jbGlwUmVjdDsgfQogICAgIHZvaWQgc2V0Q2xpcFJlY3QoY29uc3QgSW50UmVjdCYg
Y2xpcFJlY3QpIHsgbV9jbGlwUmVjdCA9IGNsaXBSZWN0OyB9CiAKLSAgICB2b2lkIHNldEZpbHRl
cnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykgeyBtX2ZpbHRlcnMgPSBmaWx0ZXJz
OyB9Ci0gICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycygpIGNvbnN0IHsgcmV0dXJu
IG1fZmlsdGVyczsgfQorICAgIHZvaWQgc2V0RmlsdGVycyhjb25zdCBXZWJLaXQ6OldlYkZpbHRl
ck9wZXJhdGlvbnMmIGZpbHRlcnMpIHsgbV9maWx0ZXJzID0gZmlsdGVyczsgfQorICAgIGNvbnN0
IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycygpIGNvbnN0IHsgcmV0dXJuIG1f
ZmlsdGVyczsgfQogCi0gICAgdm9pZCBzZXRCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBGaWx0ZXJP
cGVyYXRpb25zJiBmaWx0ZXJzKSB7IG1fYmFja2dyb3VuZEZpbHRlcnMgPSBmaWx0ZXJzOyB9Ci0g
ICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMoKSBjb25zdCB7IHJl
dHVybiBtX2JhY2tncm91bmRGaWx0ZXJzOyB9CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kRmlsdGVy
cyhjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpIHsgbV9iYWNrZ3Jv
dW5kRmlsdGVycyA9IGZpbHRlcnM7IH0KKyAgICBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJh
dGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRmls
dGVyczsgfQogCiAgICAgYm9vbCBza2lwc0RyYXcoKSBjb25zdCB7IHJldHVybiBtX3NraXBzRHJh
dzsgfQogICAgIHZvaWQgc2V0U2tpcHNEcmF3KGJvb2wgc2tpcHNEcmF3KSB7IG1fc2tpcHNEcmF3
ID0gc2tpcHNEcmF3OyB9CkBAIC0xMjksOCArMTMwLDggQEAgcHJpdmF0ZToKICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBtX3JlcGxpY2FTY3JlZW5TcGFjZVRyYW5zZm9ybTsKICAgICBib29sIG1f
dGFyZ2V0U3VyZmFjZVRyYW5zZm9ybXNBcmVBbmltYXRpbmc7CiAgICAgYm9vbCBtX3NjcmVlblNw
YWNlVHJhbnNmb3Jtc0FyZUFuaW1hdGluZzsKLSAgICBGaWx0ZXJPcGVyYXRpb25zIG1fZmlsdGVy
czsKLSAgICBGaWx0ZXJPcGVyYXRpb25zIG1fYmFja2dyb3VuZEZpbHRlcnM7CisgICAgV2ViS2l0
OjpXZWJGaWx0ZXJPcGVyYXRpb25zIG1fZmlsdGVyczsKKyAgICBXZWJLaXQ6OldlYkZpbHRlck9w
ZXJhdGlvbnMgbV9iYWNrZ3JvdW5kRmlsdGVyczsKICAgICBJbnRSZWN0IG1fY2xpcFJlY3Q7CiAg
ICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IG1fbGF5ZXJMaXN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFn
ZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NEYW1hZ2VUcmFja2VyLmNwcAppbmRleCA5NGJiYzFkYzU1MzIxZGNiZTc0YjJkZmZiZWEy
NTgzMDhkMWM4ODMwLi5lNWE4NjkzYjc2MDg5ZDc0Y2IzZTkyYTkyOWE0YmUyMDA0MmJhNjRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0RhbWFnZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDRGFtYWdlVHJhY2tlci5jcHAKQEAgLTM0LDExICszNCwxMSBAQAogCiAj
aW5jbHVkZSAiY2MvQ0NEYW1hZ2VUcmFja2VyLmgiCiAKLSNpbmNsdWRlICJGaWx0ZXJPcGVyYXRp
b25zLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVy
VHJlZUhvc3RDb21tb24uaCIKICNpbmNsdWRlICJjYy9DQ01hdGhVdGlsLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NSZW5kZXJTdXJmYWNlLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkZpbHRlck9wZXJhdGlv
bnMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01OCw3ICs1OCw3IEBAIENDRGFtYWdl
VHJhY2tlcjo6fkNDRGFtYWdlVHJhY2tlcigpCiB7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBl
eHBhbmREYW1hZ2VSZWN0V2l0aEZpbHRlcnMoRmxvYXRSZWN0JiBkYW1hZ2VSZWN0LCBjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQorc3RhdGljIGlubGluZSB2b2lkIGV4cGFuZERhbWFn
ZVJlY3RXaXRoRmlsdGVycyhGbG9hdFJlY3QmIGRhbWFnZVJlY3QsIGNvbnN0IFdlYktpdDo6V2Vi
RmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsKICAgICBpbnQgdG9wLCByaWdodCwgYm90dG9t
LCBsZWZ0OwogICAgIGZpbHRlcnMuZ2V0T3V0c2V0cyh0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQp
OwpAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZXhwYW5kRGFtYWdlUmVjdFdp
dGhGaWx0ZXJzKEZsb2F0UmVjdCYgZGFtYWdlUmVjdCwgY29uc3QgRmlsdAogICAgIGRhbWFnZVJl
Y3QuZXhwYW5kKGxlZnQgKyByaWdodCwgdG9wICsgYm90dG9tKTsKIH0KIAotc3RhdGljIGlubGlu
ZSB2b2lkIGV4cGFuZERhbWFnZVJlY3RJbnNpZGVSZWN0V2l0aEZpbHRlcnMoRmxvYXRSZWN0JiBk
YW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlY3QsIGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmIGZpbHRlcnMpCitzdGF0aWMgaW5saW5lIHZvaWQgZXhwYW5kRGFtYWdlUmVjdEluc2lk
ZVJlY3RXaXRoRmlsdGVycyhGbG9hdFJlY3QmIGRhbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
ZmlsdGVyUmVjdCwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQog
ewogICAgIEZsb2F0UmVjdCBleHBhbmRlZERhbWFnZVJlY3QgPSBkYW1hZ2VSZWN0OwogICAgIGV4
cGFuZERhbWFnZVJlY3RXaXRoRmlsdGVycyhleHBhbmRlZERhbWFnZVJlY3QsIGZpbHRlcnMpOwpA
QCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZXhwYW5kRGFtYWdlUmVjdEluc2lk
ZVJlY3RXaXRoRmlsdGVycyhGbG9hdFJlY3QmIGRhbWFnZVJlY3QsCiAgICAgZGFtYWdlUmVjdC51
bml0ZShleHBhbmRlZERhbWFnZVJlY3QpOwogfQogCi12b2lkIENDRGFtYWdlVHJhY2tlcjo6dXBk
YXRlRGFtYWdlVHJhY2tpbmdTdGF0ZShjb25zdCBWZWN0b3I8Q0NMYXllckltcGwqPiYgbGF5ZXJM
aXN0LCBpbnQgdGFyZ2V0U3VyZmFjZUxheWVySUQsIGJvb2wgdGFyZ2V0U3VyZmFjZVByb3BlcnR5
Q2hhbmdlZE9ubHlGcm9tRGVzY2VuZGFudCwgY29uc3QgSW50UmVjdCYgdGFyZ2V0U3VyZmFjZUNv
bnRlbnRSZWN0LCBDQ0xheWVySW1wbCogdGFyZ2V0U3VyZmFjZU1hc2tMYXllciwgY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYgZmlsdGVycykKK3ZvaWQgQ0NEYW1hZ2VUcmFja2VyOjp1cGRhdGVEYW1h
Z2VUcmFja2luZ1N0YXRlKGNvbnN0IFZlY3RvcjxDQ0xheWVySW1wbCo+JiBsYXllckxpc3QsIGlu
dCB0YXJnZXRTdXJmYWNlTGF5ZXJJRCwgYm9vbCB0YXJnZXRTdXJmYWNlUHJvcGVydHlDaGFuZ2Vk
T25seUZyb21EZXNjZW5kYW50LCBjb25zdCBJbnRSZWN0JiB0YXJnZXRTdXJmYWNlQ29udGVudFJl
Y3QsIENDTGF5ZXJJbXBsKiB0YXJnZXRTdXJmYWNlTWFza0xheWVyLCBjb25zdCBXZWJLaXQ6Oldl
YkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB7CiAgICAgLy8KICAgICAvLyBUaGlzIGZ1bmN0
aW9uIGNvbXB1dGVzIHRoZSAiZGFtYWdlIHJlY3QiIG9mIGEgdGFyZ2V0IHN1cmZhY2UsIGFuZCB1
cGRhdGVzIHRoZSBzdGF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIuaAppbmRleCBmYWRlOGNk
ZmYzNmM2YWQxZTUxNzM4NTA3YjBkN2NhZmMzMDdkMjU5Li5mYjgwNTFhNGMxZjBhNDBjMzhkYjRk
MmRlNzk0OTVkZGMzYzFjZGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIuaApAQCAtMzEs
MTEgKzMxLDE0IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViRmlsdGVyT3BlcmF0aW9u
czsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNz
IENDUmVuZGVyU3VyZmFjZTsKLWNsYXNzIEZpbHRlck9wZXJhdGlvbnM7CiAKIC8vIENvbXB1dGVz
IHRoZSByZWdpb24gd2hlcmUgcGl4ZWxzIGhhdmUgYWN0dWFsbHkgY2hhbmdlZCBvbiBhIFJlbmRl
clN1cmZhY2UuIFRoaXMgcmVnaW9uIGlzIHVzZWQKIC8vIHRvIHNjaXNzb3Igd2hhdCBpcyBhY3R1
YWxseSBkcmF3biB0byB0aGUgc2NyZWVuIHRvIHNhdmUgR1BVIGNvbXB1dGF0aW9uIGFuZCBiYW5k
d2lkdGguCkBAIC00NSw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB+Q0NEYW1hZ2VUcmFja2VyKCk7
CiAKICAgICB2b2lkIGZvcmNlRnVsbERhbWFnZU5leHRVcGRhdGUoKSB7IG1fZm9yY2VGdWxsRGFt
YWdlTmV4dFVwZGF0ZSA9IHRydWU7IH0KLSAgICB2b2lkIHVwZGF0ZURhbWFnZVRyYWNraW5nU3Rh
dGUoY29uc3QgVmVjdG9yPENDTGF5ZXJJbXBsKj4mIGxheWVyTGlzdCwgaW50IHRhcmdldFN1cmZh
Y2VMYXllcklELCBib29sIHRhcmdldFN1cmZhY2VQcm9wZXJ0eUNoYW5nZWRPbmx5RnJvbURlc2Nl
bmRhbnQsIGNvbnN0IEludFJlY3QmIHRhcmdldFN1cmZhY2VDb250ZW50UmVjdCwgQ0NMYXllcklt
cGwqIHRhcmdldFN1cmZhY2VNYXNrTGF5ZXIsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKTsKKyAg
ICB2b2lkIHVwZGF0ZURhbWFnZVRyYWNraW5nU3RhdGUoY29uc3QgVmVjdG9yPENDTGF5ZXJJbXBs
Kj4mIGxheWVyTGlzdCwgaW50IHRhcmdldFN1cmZhY2VMYXllcklELCBib29sIHRhcmdldFN1cmZh
Y2VQcm9wZXJ0eUNoYW5nZWRPbmx5RnJvbURlc2NlbmRhbnQsIGNvbnN0IEludFJlY3QmIHRhcmdl
dFN1cmZhY2VDb250ZW50UmVjdCwgQ0NMYXllckltcGwqIHRhcmdldFN1cmZhY2VNYXNrTGF5ZXIs
IGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYpOwogICAgIGNvbnN0IEZsb2F0UmVj
dCYgY3VycmVudERhbWFnZVJlY3QoKSB7IHJldHVybiBtX2N1cnJlbnREYW1hZ2VSZWN0OyB9CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5kZXggNmVlOWFhNzFkZTMyYjAzZWVm
MTljZTAzNjNiZjFkYWY2Y2IwNjRhYS4uYjc0NmQ5ODQxZDE3NTFhNTIzMDk2NGQyNzcxMThmYjNl
NmQzM2NiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtMzg1LDcgKzM4NSw3IEBAIHZv
aWQgQ0NMYXllckltcGw6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgYmFja2dyb3Vu
ZENvbG9yKQogICAgIG1fbGF5ZXJQcm9wZXJ0eUNoYW5nZWQgPSB0cnVlOwogfQogCi12b2lkIEND
TGF5ZXJJbXBsOjpzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCit2
b2lkIENDTGF5ZXJJbXBsOjpzZXRGaWx0ZXJzKGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0
aW9ucyYgZmlsdGVycykKIHsKICAgICBpZiAobV9maWx0ZXJzID09IGZpbHRlcnMpCiAgICAgICAg
IHJldHVybjsKQEAgLTM5NCw3ICszOTQsNyBAQCB2b2lkIENDTGF5ZXJJbXBsOjpzZXRGaWx0ZXJz
KGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiAgICAgbm90ZUxheWVyUHJvcGVydHlD
aGFuZ2VkRm9yU3VidHJlZSgpOwogfQogCi12b2lkIENDTGF5ZXJJbXBsOjpzZXRCYWNrZ3JvdW5k
RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycykKK3ZvaWQg
Q0NMYXllckltcGw6OnNldEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0IFdlYktpdDo6V2ViRmlsdGVy
T3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMpCiB7CiAgICAgaWYgKG1fYmFja2dyb3VuZEZp
bHRlcnMgPT0gYmFja2dyb3VuZEZpbHRlcnMpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5oCmluZGV4IGJkYmZlNjkyZTZjMmJiYTk5ZmRlZmMyZDZhY2Y0OGRlZDRmYWRhMDcuLjk3
YzU2MDdmY2ZhYTQ4ZDQ3OTlmMTI3MmQyMDVlZmIxNjg2ZWQ2ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllcklt
cGwuaApAQCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBDQ0xheWVySW1wbF9oCiAKICNpbmNsdWRl
ICJDb2xvci5oIgotI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJGbG9h
dFJlY3QuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCkBAIC0z
Niw2ICszNSw3IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJjYy9DQ1JlbmRlclN1cmZhY2UuaCIKICNpbmNsdWRlICJjYy9DQ1NoYXJlZFF1
YWRTdGF0ZS5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmg+CiAjaW5j
bHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTEwNiwxMSArMTA2LDExIEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpOwogICAgIENvbG9yIGJhY2tncm91
bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9CiAKLSAgICB2b2lk
IHNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOwotICAgIGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMmIGZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlcnM7IH0KKyAgICB2b2lk
IHNldEZpbHRlcnMoY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJik7CisgICAgY29u
c3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKCkgY29uc3QgeyByZXR1cm4g
bV9maWx0ZXJzOyB9CiAKLSAgICB2b2lkIHNldEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMmKTsKLSAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmls
dGVycygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZEZpbHRlcnM7IH0KKyAgICB2b2lkIHNl
dEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYpOwor
ICAgIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMo
KSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRGaWx0ZXJzOyB9CiAKICAgICB2b2lkIHNldE1h
c2tzVG9Cb3VuZHMoYm9vbCk7CiAgICAgYm9vbCBtYXNrc1RvQm91bmRzKCkgY29uc3QgeyByZXR1
cm4gbV9tYXNrc1RvQm91bmRzOyB9CkBAIC0zMzIsOCArMzMyLDggQEAgcHJpdmF0ZToKICAgICAv
LyBEZWJ1ZyBsYXllciBuYW1lLgogICAgIFN0cmluZyBtX2RlYnVnTmFtZTsKIAotICAgIEZpbHRl
ck9wZXJhdGlvbnMgbV9maWx0ZXJzOwotICAgIEZpbHRlck9wZXJhdGlvbnMgbV9iYWNrZ3JvdW5k
RmlsdGVyczsKKyAgICBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMgbV9maWx0ZXJzOworICAg
IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyBtX2JhY2tncm91bmRGaWx0ZXJzOwogCiAgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggbV9kcmF3VHJhbnNmb3JtOwogICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IG1fc2NyZWVuU3BhY2VUcmFuc2Zvcm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNl
LmNwcAppbmRleCBhN2I0MmM1NGQ0NTJkOTQ4YzVmZDRjYzJiN2IxYTc0MGIzMjUwNGQyLi42YWI1
MDk5OGQ0MzNmNTYzNGRiZTBmMjBiYzY3MTgyN2Q2ZTkyYjMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyU3VyZmFjZS5jcHAKQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIENDUmVuZGVyU3VyZmFjZTo6
ZHJhd1N1cmZhY2UoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBDQ0xheWVy
SQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+dmVydGV4U2hh
ZGVyKCkubWF0cml4TG9jYXRpb24oKSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxv
Y2F0aW9uKCksIHNoYWRlclF1YWRMb2NhdGlvbik7CiB9CiAKLVNrQml0bWFwIENDUmVuZGVyU3Vy
ZmFjZTo6YXBwbHlGaWx0ZXJzKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwg
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgTWFuYWdlZFRleHR1cmUqIHNvdXJjZVRl
eHR1cmUpCitTa0JpdG1hcCBDQ1JlbmRlclN1cmZhY2U6OmFwcGx5RmlsdGVycyhMYXllclJlbmRl
cmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0
aW9ucyYgZmlsdGVycywgTWFuYWdlZFRleHR1cmUqIHNvdXJjZVRleHR1cmUpCiB7CiAgICAgaWYg
KGZpbHRlcnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU2tCaXRtYXAoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
U3VyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJTdXJmYWNlLmgKaW5kZXggZjc3OTQ1YzUxZGE5ZDllNmRkYjJiMDFlM2I5YjcxMWM0
NDVhMmIzMS4uYTZkZWUxMGVjZWQwOTdjODIwYTRhOTgyMzVjZDgyZWI5ZTE4ZTVhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJTdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgKQEAgLTI5LDEzICsyOSwxMyBAQAogCiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCi0jaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgog
I2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJT
a0JpdG1hcC5oIgogI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVHJhbnNm
b3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyUXVhZC5oIgorI2luY2x1ZGUg
PHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTgzLDEyICs4MywxMiBAQCBwdWJsaWM6CiAg
ICAgZmxvYXQgZHJhd09wYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX2RyYXdPcGFjaXR5OyB9CiAg
ICAgdm9pZCBzZXREcmF3T3BhY2l0eShmbG9hdCBvcGFjaXR5KSB7IG1fZHJhd09wYWNpdHkgPSBv
cGFjaXR5OyB9CiAKLSAgICB2b2lkIHNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYg
ZmlsdGVycykgeyBtX2ZpbHRlcnMgPSBmaWx0ZXJzOyB9Ci0gICAgY29uc3QgRmlsdGVyT3BlcmF0
aW9ucyYgZmlsdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyczsgfQotICAgIFNrQml0bWFw
IGFwcGx5RmlsdGVycyhMYXllclJlbmRlcmVyQ2hyb21pdW0qLCBjb25zdCBGaWx0ZXJPcGVyYXRp
b25zJiwgTWFuYWdlZFRleHR1cmUqIHNvdXJjZVRleHR1cmUpOworICAgIHZvaWQgc2V0RmlsdGVy
cyhjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpIHsgbV9maWx0ZXJz
ID0gZmlsdGVyczsgfQorICAgIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmls
dGVycygpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyczsgfQorICAgIFNrQml0bWFwIGFwcGx5Rmls
dGVycyhMYXllclJlbmRlcmVyQ2hyb21pdW0qLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJh
dGlvbnMmLCBNYW5hZ2VkVGV4dHVyZSogc291cmNlVGV4dHVyZSk7CiAKLSAgICB2b2lkIHNldEJh
Y2tncm91bmRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpIHsgbV9iYWNr
Z3JvdW5kRmlsdGVycyA9IGZpbHRlcnM7IH0KLSAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBi
YWNrZ3JvdW5kRmlsdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZEZpbHRlcnM7IH0K
KyAgICB2b2lkIHNldEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3Bl
cmF0aW9ucyYgZmlsdGVycykgeyBtX2JhY2tncm91bmRGaWx0ZXJzID0gZmlsdGVyczsgfQorICAg
IGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMoKSBj
b25zdCB7IHJldHVybiBtX2JhY2tncm91bmRGaWx0ZXJzOyB9CiAKICAgICB2b2lkIHNldE5lYXJl
c3RBbmNlc3RvclRoYXRNb3Zlc1BpeGVscyhDQ1JlbmRlclN1cmZhY2UqIHN1cmZhY2UpIHsgbV9u
ZWFyZXN0QW5jZXN0b3JUaGF0TW92ZXNQaXhlbHMgPSBzdXJmYWNlOyB9CiAgICAgY29uc3QgQ0NS
ZW5kZXJTdXJmYWNlKiBuZWFyZXN0QW5jZXN0b3JUaGF0TW92ZXNQaXhlbHMoKSBjb25zdCB7IHJl
dHVybiBtX25lYXJlc3RBbmNlc3RvclRoYXRNb3Zlc1BpeGVsczsgfQpAQCAtMTgzLDggKzE4Myw4
IEBAIHByaXZhdGU6CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9yZXBsaWNhU2NyZWVuU3Bh
Y2VUcmFuc2Zvcm07CiAgICAgYm9vbCBtX3RhcmdldFN1cmZhY2VUcmFuc2Zvcm1zQXJlQW5pbWF0
aW5nOwogICAgIGJvb2wgbV9zY3JlZW5TcGFjZVRyYW5zZm9ybXNBcmVBbmltYXRpbmc7Ci0gICAg
RmlsdGVyT3BlcmF0aW9ucyBtX2ZpbHRlcnM7Ci0gICAgRmlsdGVyT3BlcmF0aW9ucyBtX2JhY2tn
cm91bmRGaWx0ZXJzOworICAgIFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyBtX2ZpbHRlcnM7
CisgICAgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zIG1fYmFja2dyb3VuZEZpbHRlcnM7CiAg
ICAgSW50UmVjdCBtX2NsaXBSZWN0OwogICAgIFZlY3RvcjxDQ0xheWVySW1wbCo+IG1fbGF5ZXJM
aXN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VGaWx0ZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZUZpbHRlcnMuY3BwCmluZGV4
IDM1Y2Y2YWJjNTQwYWUyZDJjYTIxNWM4NmUxYTE1Y2YzMDA3MjQ3OTEuLjMwZTRiZmY5Yjk1NGNi
OTM3YWZkNDYyMGUxOWM0NTA3ZTdlMzRiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZUZpbHRlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
U3VyZmFjZUZpbHRlcnMuY3BwCkBAIC0zNiw2ICszNiw4IEBACiAjaW5jbHVkZSAiU2tDb2xvck1h
dHJpeEZpbHRlci5oIgogI2luY2x1ZGUgIlNrR3B1RGV2aWNlLmgiCiAjaW5jbHVkZSAiU2tHclRl
eHR1cmVQaXhlbFJlZi5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb24uaD4K
KyNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5oPgogCiBuYW1lc3BhY2Ugewog
CkBAIC0xNzAsNyArMTcyLDcgQEAgYm9vbCBhcHBseUNvbG9yTWF0cml4KFNrQ2FudmFzKiBjYW52
YXMsIFNrQml0bWFwIHNvdXJjZSwgU2tTY2FsYXIgbWF0cml4WzIwXSkKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1Ta0JpdG1hcCBDQ1JlbmRlclN1cmZhY2VGaWx0ZXJzOjphcHBseShjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzRCkKK1NrQml0bWFwIENDUmVu
ZGVyU3VyZmFjZUZpbHRlcnM6OmFwcGx5KGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9u
cyYgZmlsdGVycywgdW5zaWduZWQgdGV4dHVyZUlkLCBjb25zdCBGbG9hdFNpemUmIHNpemUsIEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M0QpCiB7CiAgICAgU2tCaXRtYXAgc291cmNlOwogICAg
IGlmICghY29udGV4dDNEKQpAQCAtMTk2LDcgKzE5OCw3IEBAIFNrQml0bWFwIENDUmVuZGVyU3Vy
ZmFjZUZpbHRlcnM6OmFwcGx5KGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIHVuc2ln
bmVkCiAgICAgICAgIC8vIFNhdmUgdGhlIHByZXZpb3VzIHRleHR1cmUgY2FjaGUgZGVzdGluYXRp
b24gKGlmIGFueSksIGFuZCBrZWVwIGl0CiAgICAgICAgIC8vIGxvY2tlZCBkdXJpbmcgZHJhdyB0
byBwcmV2ZW50IGl0IGJlIHJlLXVzZWQgYXMgZGVzdGluYXRpb24uCiAgICAgICAgIEdyQ29udGV4
dDo6VGV4dHVyZUNhY2hlRW50cnkgc291cmNlRW50cnkgPSBkZXN0OwotICAgICAgICBjb25zdCBG
aWx0ZXJPcGVyYXRpb24qIGZpbHRlck9wZXJhdGlvbiA9IGZpbHRlcnMuYXQoaSk7CisgICAgICAg
IGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9uJiBvcCA9IGZpbHRlcnMuYXQoaSk7CiAg
ICAgICAgIC8vIEFsbG9jYXRlIGEgZGVzdGluYXRpb24gdGV4dHVyZS4KICAgICAgICAgR3JUZXh0
dXJlRGVzYyBkZXNjOwogICAgICAgICBkZXNjLmZGbGFncyA9IGtSZW5kZXJUYXJnZXRfR3JUZXh0
dXJlRmxhZ0JpdCB8IGtOb1N0ZW5jaWxfR3JUZXh0dXJlRmxhZ0JpdDsKQEAgLTIxMSw4OCArMjEz
LDc2IEBAIFNrQml0bWFwIENDUmVuZGVyU3VyZmFjZUZpbHRlcnM6OmFwcGx5KGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMmIGZpbHRlcnMsIHVuc2lnbmVkCiAgICAgICAgIFNrR3B1RGV2aWNlIGRldmlj
ZShnciwgZGVzdC50ZXh0dXJlKCkpOwogICAgICAgICBTa0NhbnZhcyBjYW52YXMoJmRldmljZSk7
CiAgICAgICAgIGNhbnZhcy5jbGVhcigweDApOwotICAgICAgICBzd2l0Y2ggKGZpbHRlck9wZXJh
dGlvbi0+Z2V0T3BlcmF0aW9uVHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9u
OjpCUklHSFRORVNTOiB7Ci0gICAgICAgICAgICBjb25zdCBCYXNpY0NvbG9yTWF0cml4RmlsdGVy
T3BlcmF0aW9uKiBvcCA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJP
cGVyYXRpb24qPihmaWx0ZXJPcGVyYXRpb24pOworICAgICAgICBzd2l0Y2ggKG9wLnR5cGUoKSkg
eworICAgICAgICBjYXNlIFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9uOjpGaWx0ZXJUeXBlQnJp
Z2h0bmVzczogewogICAgICAgICAgICAgU2tTY2FsYXIgbWF0cml4WzIwXTsKLSAgICAgICAgICAg
IGdldEJyaWdodG5lc3NNYXRyaXgob3AtPmFtb3VudCgpLCBtYXRyaXgpOworICAgICAgICAgICAg
Z2V0QnJpZ2h0bmVzc01hdHJpeChvcC5hbW91bnQoKSwgbWF0cml4KTsKICAgICAgICAgICAgIGFw
cGx5Q29sb3JNYXRyaXgoJmNhbnZhcywgc291cmNlLCBtYXRyaXgpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkNPTlRSQVNUOiB7
Ci0gICAgICAgICAgICBjb25zdCBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKiBvcCA9
IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qPihmaWx0
ZXJPcGVyYXRpb24pOworICAgICAgICBjYXNlIFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9uOjpG
aWx0ZXJUeXBlQ29udHJhc3Q6IHsKICAgICAgICAgICAgIFNrU2NhbGFyIG1hdHJpeFsyMF07Ci0g
ICAgICAgICAgICBnZXRDb250cmFzdE1hdHJpeChvcC0+YW1vdW50KCksIG1hdHJpeCk7CisgICAg
ICAgICAgICBnZXRDb250cmFzdE1hdHJpeChvcC5hbW91bnQoKSwgbWF0cml4KTsKICAgICAgICAg
ICAgIGFwcGx5Q29sb3JNYXRyaXgoJmNhbnZhcywgc291cmNlLCBtYXRyaXgpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlT
Q0FMRTogewotICAgICAgICAgICAgY29uc3QgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlv
biogb3AgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9u
Kj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAgY2FzZSBXZWJLaXQ6OldlYkZpbHRlck9wZXJh
dGlvbjo6RmlsdGVyVHlwZUdyYXlzY2FsZTogewogICAgICAgICAgICAgU2tTY2FsYXIgbWF0cml4
WzIwXTsKLSAgICAgICAgICAgIGdldEdyYXlzY2FsZU1hdHJpeCgxIC0gb3AtPmFtb3VudCgpLCBt
YXRyaXgpOworICAgICAgICAgICAgZ2V0R3JheXNjYWxlTWF0cml4KDEgLSBvcC5hbW91bnQoKSwg
bWF0cml4KTsKICAgICAgICAgICAgIGFwcGx5Q29sb3JNYXRyaXgoJmNhbnZhcywgc291cmNlLCBt
YXRyaXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBGaWx0
ZXJPcGVyYXRpb246OlNFUElBOiB7Ci0gICAgICAgICAgICBjb25zdCBCYXNpY0NvbG9yTWF0cml4
RmlsdGVyT3BlcmF0aW9uKiBvcCA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhG
aWx0ZXJPcGVyYXRpb24qPihmaWx0ZXJPcGVyYXRpb24pOworICAgICAgICBjYXNlIFdlYktpdDo6
V2ViRmlsdGVyT3BlcmF0aW9uOjpGaWx0ZXJUeXBlU2VwaWE6IHsKICAgICAgICAgICAgIFNrU2Nh
bGFyIG1hdHJpeFsyMF07Ci0gICAgICAgICAgICBnZXRTZXBpYU1hdHJpeCgxIC0gb3AtPmFtb3Vu
dCgpLCBtYXRyaXgpOworICAgICAgICAgICAgZ2V0U2VwaWFNYXRyaXgoMSAtIG9wLmFtb3VudCgp
LCBtYXRyaXgpOwogICAgICAgICAgICAgYXBwbHlDb2xvck1hdHJpeCgmY2FudmFzLCBzb3VyY2Us
IG1hdHJpeCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIEZp
bHRlck9wZXJhdGlvbjo6U0FUVVJBVEU6IHsKLSAgICAgICAgICAgIGNvbnN0IEJhc2ljQ29sb3JN
YXRyaXhGaWx0ZXJPcGVyYXRpb24qIG9wID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb2xvck1h
dHJpeEZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7CisgICAgICAgIGNhc2UgV2Vi
S2l0OjpXZWJGaWx0ZXJPcGVyYXRpb246OkZpbHRlclR5cGVTYXR1cmF0ZTogewogICAgICAgICAg
ICAgU2tTY2FsYXIgbWF0cml4WzIwXTsKLSAgICAgICAgICAgIGdldFNhdHVyYXRlTWF0cml4KG9w
LT5hbW91bnQoKSwgbWF0cml4KTsKKyAgICAgICAgICAgIGdldFNhdHVyYXRlTWF0cml4KG9wLmFt
b3VudCgpLCBtYXRyaXgpOwogICAgICAgICAgICAgYXBwbHlDb2xvck1hdHJpeCgmY2FudmFzLCBz
b3VyY2UsIG1hdHJpeCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBj
YXNlIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURTogewotICAgICAgICAgICAgY29uc3QgQmFz
aWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbiogb3AgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNp
Y0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAg
Y2FzZSBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbjo6RmlsdGVyVHlwZUh1ZVJvdGF0ZTogewog
ICAgICAgICAgICAgU2tTY2FsYXIgbWF0cml4WzIwXTsKLSAgICAgICAgICAgIGdldEh1ZVJvdGF0
ZU1hdHJpeChvcC0+YW1vdW50KCksIG1hdHJpeCk7CisgICAgICAgICAgICBnZXRIdWVSb3RhdGVN
YXRyaXgob3AuYW1vdW50KCksIG1hdHJpeCk7CiAgICAgICAgICAgICBhcHBseUNvbG9yTWF0cml4
KCZjYW52YXMsIHNvdXJjZSwgbWF0cml4KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6IHsKLSAgICAgICAgICAgIGNv
bnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qIG9wID0gc3RhdGljX2Nhc3Q8Y29u
c3QgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7Cisg
ICAgICAgIGNhc2UgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb246OkZpbHRlclR5cGVJbnZlcnQ6
IHsKICAgICAgICAgICAgIFNrU2NhbGFyIG1hdHJpeFsyMF07Ci0gICAgICAgICAgICBnZXRJbnZl
cnRNYXRyaXgob3AtPmFtb3VudCgpLCBtYXRyaXgpOworICAgICAgICAgICAgZ2V0SW52ZXJ0TWF0
cml4KG9wLmFtb3VudCgpLCBtYXRyaXgpOwogICAgICAgICAgICAgYXBwbHlDb2xvck1hdHJpeCgm
Y2FudmFzLCBzb3VyY2UsIG1hdHJpeCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQot
ICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lUWTogewotICAgICAgICAgICAgY29u
c3QgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiogb3AgPSBzdGF0aWNfY2Fz
dDxjb25zdCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3Bl
cmF0aW9uKTsKKyAgICAgICAgY2FzZSBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbjo6RmlsdGVy
VHlwZU9wYWNpdHk6IHsKICAgICAgICAgICAgIFNrU2NhbGFyIG1hdHJpeFsyMF07Ci0gICAgICAg
ICAgICBnZXRPcGFjaXR5TWF0cml4KG9wLT5hbW91bnQoKSwgbWF0cml4KTsKKyAgICAgICAgICAg
IGdldE9wYWNpdHlNYXRyaXgob3AuYW1vdW50KCksIG1hdHJpeCk7CiAgICAgICAgICAgICBhcHBs
eUNvbG9yTWF0cml4KCZjYW52YXMsIHNvdXJjZSwgbWF0cml4KTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCTFVSOiB7Ci0gICAg
ICAgICAgICBjb25zdCBCbHVyRmlsdGVyT3BlcmF0aW9uKiBvcCA9IHN0YXRpY19jYXN0PGNvbnN0
IEJsdXJGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXJPcGVyYXRpb24pOwotICAgICAgICAgICAgZmxv
YXQgc3RkWCA9IGZsb2F0VmFsdWVGb3JMZW5ndGgob3AtPnN0ZERldmlhdGlvbigpLCAwKTsKLSAg
ICAgICAgICAgIGZsb2F0IHN0ZFkgPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKG9wLT5zdGREZXZpYXRp
b24oKSwgMSk7Ci0gICAgICAgICAgICBTa0F1dG9UVW5yZWY8U2tJbWFnZUZpbHRlcj4gZmlsdGVy
KG5ldyBTa0JsdXJJbWFnZUZpbHRlcihzdGRYLCBzdGRZKSk7CisgICAgICAgIGNhc2UgV2ViS2l0
OjpXZWJGaWx0ZXJPcGVyYXRpb246OkZpbHRlclR5cGVCbHVyOiB7CisgICAgICAgICAgICBmbG9h
dCBzdGREZXZpYXRpb24gPSBvcC5hbW91bnQoKTsKKyAgICAgICAgICAgIFNrQXV0b1RVbnJlZjxT
a0ltYWdlRmlsdGVyPiBmaWx0ZXIobmV3IFNrQmx1ckltYWdlRmlsdGVyKHN0ZERldmlhdGlvbiwg
c3RkRGV2aWF0aW9uKSk7CiAgICAgICAgICAgICBTa1BhaW50IHBhaW50OwogICAgICAgICAgICAg
cGFpbnQuc2V0SW1hZ2VGaWx0ZXIoZmlsdGVyLmdldCgpKTsKICAgICAgICAgICAgIGNhbnZhcy5k
cmF3U3ByaXRlKHNvdXJjZSwgMCwgMCwgJnBhaW50KTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVzogewotICAg
ICAgICAgICAgY29uc3QgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbiogb3AgPSBzdGF0aWNfY2Fz
dDxjb25zdCBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKLSAg
ICAgICAgICAgIFNrQXV0b1RVbnJlZjxTa0ltYWdlRmlsdGVyPiBibHVyRmlsdGVyKG5ldyBTa0Js
dXJJbWFnZUZpbHRlcihvcC0+c3RkRGV2aWF0aW9uKCksIG9wLT5zdGREZXZpYXRpb24oKSkpOwot
ICAgICAgICAgICAgU2tBdXRvVFVucmVmPFNrQ29sb3JGaWx0ZXI+IGNvbG9yRmlsdGVyKFNrQ29s
b3JGaWx0ZXI6OkNyZWF0ZU1vZGVGaWx0ZXIob3AtPmNvbG9yKCkucmdiKCksIFNrWGZlcm1vZGU6
OmtTcmNJbl9Nb2RlKSk7CisgICAgICAgIGNhc2UgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb246
OkZpbHRlclR5cGVEcm9wU2hhZG93OiB7CisgICAgICAgICAgICBTa0F1dG9UVW5yZWY8U2tJbWFn
ZUZpbHRlcj4gYmx1ckZpbHRlcihuZXcgU2tCbHVySW1hZ2VGaWx0ZXIob3AuYW1vdW50KCksIG9w
LmFtb3VudCgpKSk7CisgICAgICAgICAgICBTa0F1dG9UVW5yZWY8U2tDb2xvckZpbHRlcj4gY29s
b3JGaWx0ZXIoU2tDb2xvckZpbHRlcjo6Q3JlYXRlTW9kZUZpbHRlcihvcC5kcm9wU2hhZG93Q29s
b3IoKSwgU2tYZmVybW9kZTo6a1NyY0luX01vZGUpKTsKICAgICAgICAgICAgIFNrUGFpbnQgcGFp
bnQ7CiAgICAgICAgICAgICBwYWludC5zZXRJbWFnZUZpbHRlcihibHVyRmlsdGVyLmdldCgpKTsK
ICAgICAgICAgICAgIHBhaW50LnNldENvbG9yRmlsdGVyKGNvbG9yRmlsdGVyLmdldCgpKTsKICAg
ICAgICAgICAgIHBhaW50LnNldFhmZXJtb2RlTW9kZShTa1hmZXJtb2RlOjprU3JjT3Zlcl9Nb2Rl
KTsKICAgICAgICAgICAgIGNhbnZhcy5zYXZlTGF5ZXIoMCwgJnBhaW50KTsKLSAgICAgICAgICAg
IGNhbnZhcy5kcmF3Qml0bWFwKHNvdXJjZSwgb3AtPngoKSwgLW9wLT55KCkpOworICAgICAgICAg
ICAgY2FudmFzLmRyYXdCaXRtYXAoc291cmNlLCBvcC5kcm9wU2hhZG93T2Zmc2V0KCkueCwgLW9w
LmRyb3BTaGFkb3dPZmZzZXQoKS55KTsKICAgICAgICAgICAgIGNhbnZhcy5yZXN0b3JlKCk7CiAg
ICAgICAgICAgICBjYW52YXMuZHJhd0JpdG1hcChzb3VyY2UsIDAsIDApOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlBBU1NUSFJP
VUdIOgogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgY2FudmFzLmRyYXdCaXRtYXAoc291
cmNlLCAwLCAwKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlRmlsdGVycy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJT
dXJmYWNlRmlsdGVycy5oCmluZGV4IDY4Yzg4ZDk3Y2FlYzdkODI3MjhmNmVmNGY4YTIxODNhMjY0
M2YxYTguLmUyNTgyNzU3YzQ0OWEzZjEwY2M0NjBhMTViOTk0ZTg4YmU3MmI4YTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
U3VyZmFjZUZpbHRlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VGaWx0ZXJzLmgKQEAgLTMxLDE0ICszMSwxNyBAQAog
CiBjbGFzcyBTa0JpdG1hcDsKIAorbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJGaWx0ZXJP
cGVyYXRpb25zOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBGaWx0ZXJPcGVyYXRp
b25zOwogY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiAKIGNsYXNz
IENDUmVuZGVyU3VyZmFjZUZpbHRlcnMgewogcHVibGljOgotICAgIHN0YXRpYyBTa0JpdG1hcCBh
cHBseShjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCB1bnNpZ25lZCB0ZXh0dXJlSWQs
IGNvbnN0IEZsb2F0U2l6ZSYsIEdyYXBoaWNzQ29udGV4dDNEKik7CisgICAgc3RhdGljIFNrQml0
bWFwIGFwcGx5KGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgdW5z
aWduZWQgdGV4dHVyZUlkLCBjb25zdCBGbG9hdFNpemUmLCBHcmFwaGljc0NvbnRleHQzRCopOwog
cHJpdmF0ZToKICAgICBDQ1JlbmRlclN1cmZhY2VGaWx0ZXJzKCk7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGUxNzE4NWZjMjYzMTM0ZWM0OGRjNmQ1NTk3MWRjZWY4
MzNkYmI4NTguLmZmOTJlNDg2ZTE3MTY3N2YwOGJiOGI3YzIyMDMyMWE5OTIwMTFhMDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTQ2Myw4ICs0NjMsOCBAQCB2b2lkIElu
dGVybmFsczo6c2V0QmFja2dyb3VuZEJsdXJPbk5vZGUoTm9kZSogbm9kZSwgaW50IGJsdXJMZW5n
dGgsIEV4Y2VwdGlvbkNvZAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgRmlsdGVyT3Bl
cmF0aW9ucyBmaWx0ZXJzOwotICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCbHVyRmls
dGVyT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKGJsdXJMZW5ndGgsIEZpeGVkKSwgRmlsdGVyT3Bl
cmF0aW9uOjpCTFVSKSk7CisgICAgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7
CisgICAgZmlsdGVycy5hcHBlbmQoV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZUJs
dXJGaWx0ZXIoYmx1ckxlbmd0aCkpOwogICAgIHBsYXRmb3JtTGF5ZXItPnNldEJhY2tncm91bmRG
aWx0ZXJzKGZpbHRlcnMpOwogfQogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCmlu
ZGV4IGNmYjFkN2I0ZTI1YjllOTgxNDI2MzViMDdiM2Q2MDlhOGYwMjZlYWMuLmZjYzA0YTBkNTk3
MTc4YzdjMzc5NTliOGY4YTJiYThlNGE2YTJiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwaQpAQCAtMTAxLDYgKzEwMSw3IEBACiAgICAgICAgICAgICAndGVzdHMvRmFrZUNDTGF5ZXJU
cmVlSG9zdENsaWVudC5oJywKICAgICAgICAgICAgICd0ZXN0cy9GYWtlR3JhcGhpY3NDb250ZXh0
M0RUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNE
LmgnLAorICAgICAgICAgICAgJ3Rlc3RzL0ZpbHRlck9wZXJhdGlvbnNUZXN0LmNwcCcsCiAgICAg
ICAgICAgICAndGVzdHMvRmxvYXRRdWFkVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0Zy
YW1lTG9hZGVyQ2xpZW50SW1wbFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9GcmFtZVRl
c3RIZWxwZXJzLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9B
c3NlcnRNYXRjaGluZ0VudW1zLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2Vy
dE1hdGNoaW5nRW51bXMuY3BwCmluZGV4IDVlZjkyN2E5ZDBiZDZjMzU5MDdjZDBlZjVhYmEwM2Yz
Y2NlZTM2MGYuLmUwNzRkMmNhN2ZlNWRlYWQ1MGIyYTg4OGMwZmYxZjgwY2JkODU1YWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3Bw
CkBAIC0zMjEsMTUgKzMyMSw2IEBAIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViRWRp
dGluZ0FjdGlvblR5cGVkLCBFZGl0b3JJbnNlcnRBY3Rpb25UeXBlZCk7CiBDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKFdlYkVkaXRpbmdBY3Rpb25QYXN0ZWQsIEVkaXRvckluc2VydEFjdGlv
blBhc3RlZCk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkVkaXRpbmdBY3Rpb25E
cm9wcGVkLCBFZGl0b3JJbnNlcnRBY3Rpb25Ecm9wcGVkKTsKIAotQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShXZWJCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uOjpCYXNpY0NvbG9y
TWF0cml4RmlsdGVyVHlwZUdyYXlzY2FsZSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpOwot
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3Bl
cmF0aW9uOjpCYXNpY0NvbG9yTWF0cml4RmlsdGVyVHlwZVNlcGlhLCBGaWx0ZXJPcGVyYXRpb246
OlNFUElBKTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViQmFzaWNDb2xvck1hdHJp
eEZpbHRlck9wZXJhdGlvbjo6QmFzaWNDb2xvck1hdHJpeEZpbHRlclR5cGVTYXR1cmF0ZSwgRmls
dGVyT3BlcmF0aW9uOjpTQVRVUkFURSk7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
YkJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OkJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJU
eXBlSHVlUm90YXRlLCBGaWx0ZXJPcGVyYXRpb246OkhVRV9ST1RBVEUpOwotCi1DT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKFdlYkJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRp
b246OkJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJUeXBlSW52ZXJ0LCBGaWx0ZXJPcGVyYXRp
b246OklOVkVSVCk7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkJhc2ljQ29tcG9u
ZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OkJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJU
eXBlQnJpZ2h0bmVzcywgRmlsdGVyT3BlcmF0aW9uOjpCUklHSFRORVNTKTsKLUNPTVBJTEVfQVNT
RVJUX01BVENISU5HX0VOVU0oV2ViQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlv
bjo6QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlclR5cGVDb250cmFzdCwgRmlsdGVyT3BlcmF0
aW9uOjpDT05UUkFTVCk7Ci0KIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViRm9udERl
c2NyaXB0aW9uOjpHZW5lcmljRmFtaWx5Tm9uZSwgRm9udERlc2NyaXB0aW9uOjpOb0ZhbWlseSk7
CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkZvbnREZXNjcmlwdGlvbjo6R2VuZXJp
Y0ZhbWlseVN0YW5kYXJkLCBGb250RGVzY3JpcHRpb246OlN0YW5kYXJkRmFtaWx5KTsKIENPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViRm9udERlc2NyaXB0aW9uOjpHZW5lcmljRmFtaWx5
U2VyaWYsIEZvbnREZXNjcmlwdGlvbjo6U2VyaWZGYW1pbHkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViTGF5ZXIuY3BwCmluZGV4IDNlNmRiNDdmNTQwODg0Y2RkOWM5YzczNjIxOTRjMGRj
ZDIxNmZjZDIuLjA4MDA0NTVjM2RkYjFiMTk1Y2EzNTFlMGU0MWRjNDM1M2UzM2JhYWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5jcHAKQEAgLTI3NiwxMiArMjc2LDEyIEBA
IHZvaWQgV2ViTGF5ZXI6OnNldEJhY2tncm91bmRDb2xvcihXZWJDb2xvciBjb2xvcikKIAogdm9p
ZCBXZWJMYXllcjo6c2V0RmlsdGVycyhjb25zdCBXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJz
KQogewotICAgIG1fcHJpdmF0ZS0+c2V0RmlsdGVycyhmaWx0ZXJzLnRvRmlsdGVyT3BlcmF0aW9u
cygpKTsKKyAgICBtX3ByaXZhdGUtPnNldEZpbHRlcnMoZmlsdGVycyk7CiB9CiAKIHZvaWQgV2Vi
TGF5ZXI6OnNldEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbnMmIGZp
bHRlcnMpCiB7Ci0gICAgbV9wcml2YXRlLT5zZXRCYWNrZ3JvdW5kRmlsdGVycyhmaWx0ZXJzLnRv
RmlsdGVyT3BlcmF0aW9ucygpKTsKKyAgICBtX3ByaXZhdGUtPnNldEJhY2tncm91bmRGaWx0ZXJz
KGZpbHRlcnMpOwogfQogCiB2b2lkIFdlYkxheWVyOjpzZXREZWJ1Z0JvcmRlckNvbG9yKGNvbnN0
IFdlYkNvbG9yJiBjb2xvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NEYW1hZ2VUcmFja2VyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDRGFtYWdlVHJhY2tlclRlc3QuY3BwCmluZGV4IDExYTg4Nzg0YjllMWMyZDk3ZWFmYTI3YjRh
ZjMwOWUxNzVhM2RjODguLjUwM2VmNTc2Zjc5MDJhOWI2YzkwZTE5Y2VhYjllNDQxODJkMWQyN2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NEYW1hZ2VUcmFja2Vy
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0RhbWFnZVRyYWNr
ZXJUZXN0LmNwcApAQCAtMzMsOCArMzMsMTEgQEAKICNpbmNsdWRlICJjYy9DQ01hdGhVdGlsLmgi
CiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0
ZXN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbi5oPgorI2luY2x1ZGUg
PHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0VGVzdHM7CiAKQEAgLTM2NCw4ICszNjcsOCBAQCBURVNUX0YoQ0NEYW1h
Z2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yQmx1cnJlZFN1cmZhY2UpCiAgICAgT3duUHRy
PENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhPbmVTdXJmYWNl
KCk7CiAgICAgQ0NMYXllckltcGwqIGNoaWxkID0gcm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsK
IAotICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAgICBmaWx0ZXJzLm9wZXJhdGlvbnMo
KS5hcHBlbmQoQmx1ckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCg1LCBXZWJDb3JlOjpG
aXhlZCksIEZpbHRlck9wZXJhdGlvbjo6QkxVUikpOworICAgIFdlYkZpbHRlck9wZXJhdGlvbnMg
ZmlsdGVyczsKKyAgICBmaWx0ZXJzLmFwcGVuZChXZWJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZUJs
dXJGaWx0ZXIoNSkpOwogICAgIGludCBvdXRzZXRUb3AsIG91dHNldFJpZ2h0LCBvdXRzZXRCb3R0
b20sIG91dHNldExlZnQ7CiAgICAgZmlsdGVycy5nZXRPdXRzZXRzKG91dHNldFRvcCwgb3V0c2V0
UmlnaHQsIG91dHNldEJvdHRvbSwgb3V0c2V0TGVmdCk7CiAgICAgcm9vdC0+c2V0RmlsdGVycyhm
aWx0ZXJzKTsKQEAgLTM5MSw4ICszOTQsOCBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwg
dmVyaWZ5RGFtYWdlRm9yQmFja2dyb3VuZEJsdXJyZWRDaGlsZCkKICAgICBDQ0xheWVySW1wbCog
Y2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKICAgICBDQ0xheWVySW1wbCogY2hp
bGQyID0gcm9vdC0+Y2hpbGRyZW4oKVsxXS5nZXQoKTsKIAotICAgIEZpbHRlck9wZXJhdGlvbnMg
ZmlsdGVyczsKLSAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmx1ckZpbHRlck9wZXJh
dGlvbjo6Y3JlYXRlKExlbmd0aCgyLCBXZWJDb3JlOjpGaXhlZCksIEZpbHRlck9wZXJhdGlvbjo6
QkxVUikpOworICAgIFdlYkZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKKyAgICBmaWx0ZXJzLmFw
cGVuZChXZWJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZUJsdXJGaWx0ZXIoMikpOwogICAgIGludCBv
dXRzZXRUb3AsIG91dHNldFJpZ2h0LCBvdXRzZXRCb3R0b20sIG91dHNldExlZnQ7CiAgICAgZmls
dGVycy5nZXRPdXRzZXRzKG91dHNldFRvcCwgb3V0c2V0UmlnaHQsIG91dHNldEJvdHRvbSwgb3V0
c2V0TGVmdCk7CiAgICAgY2hpbGQxLT5zZXRCYWNrZ3JvdW5kRmlsdGVycyhmaWx0ZXJzKTsKQEAg
LTEwMTgsNyArMTAyMSw3IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1h
Z2VGb3JFbXB0eUxheWVyTGlzdCkKICAgICBBU1NFUlRfVFJVRShyb290LT5yZW5kZXJTdXJmYWNl
KCkgPT0gcm9vdC0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpKTsKICAgICBDQ1JlbmRlclN1cmZhY2Uq
IHRhcmdldFN1cmZhY2UgPSByb290LT5yZW5kZXJTdXJmYWNlKCk7CiAgICAgdGFyZ2V0U3VyZmFj
ZS0+Y2xlYXJMYXllckxpc3QoKTsKLSAgICB0YXJnZXRTdXJmYWNlLT5kYW1hZ2VUcmFja2VyKCkt
PnVwZGF0ZURhbWFnZVRyYWNraW5nU3RhdGUodGFyZ2V0U3VyZmFjZS0+bGF5ZXJMaXN0KCksIHRh
cmdldFN1cmZhY2UtPm93bmluZ0xheWVySWQoKSwgZmFsc2UsIEludFJlY3QoKSwgMCwgRmlsdGVy
T3BlcmF0aW9ucygpKTsKKyAgICB0YXJnZXRTdXJmYWNlLT5kYW1hZ2VUcmFja2VyKCktPnVwZGF0
ZURhbWFnZVRyYWNraW5nU3RhdGUodGFyZ2V0U3VyZmFjZS0+bGF5ZXJMaXN0KCksIHRhcmdldFN1
cmZhY2UtPm93bmluZ0xheWVySWQoKSwgZmFsc2UsIEludFJlY3QoKSwgMCwgV2ViRmlsdGVyT3Bl
cmF0aW9ucygpKTsKIAogICAgIEZsb2F0UmVjdCBkYW1hZ2VSZWN0ID0gdGFyZ2V0U3VyZmFjZS0+
ZGFtYWdlVHJhY2tlcigpLT5jdXJyZW50RGFtYWdlUmVjdCgpOwogICAgIEVYUEVDVF9UUlVFKGRh
bWFnZVJlY3QuaXNFbXB0eSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllckltcGxUZXN0LmNwcAppbmRleCAzNmMxMDgyYjc1ODM3ZDdmOThlMjA3Y2JkOTczOGVk
ZTdmYzg2MTZlLi5mNTI1OWUxY2ZjYjg1M2M5NDIxMTM3ZTczZDZkYmI3MTNkNjNkNDE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwCkBA
IC0yOSw3ICsyOSwxMCBAQAogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKICNp
bmNsdWRlIDxnbW9jay9nbW9jay5oPgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVk
ZSA8cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbi5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0
ZXJPcGVyYXRpb25zLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIHsKQEAgLTg1LDggKzg4LDggQEAgVEVTVChDQ0xheWVy
SW1wbFRlc3QsIHZlcmlmeUxheWVyQ2hhbmdlc0FyZVRyYWNrZWRQcm9wZXJseSkKICAgICBDb2xv
ciBhcmJpdHJhcnlDb2xvciA9IENvbG9yKDEwLCAyMCwgMzApOwogICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IGFyYml0cmFyeVRyYW5zZm9ybTsKICAgICBhcmJpdHJhcnlUcmFuc2Zvcm0uc2NhbGUz
ZCgwLjEsIDAuMiwgMC4zKTsKLSAgICBGaWx0ZXJPcGVyYXRpb25zIGFyYml0cmFyeUZpbHRlcnM7
Ci0gICAgYXJiaXRyYXJ5RmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50
VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6T1BB
Q0lUWSkpOworICAgIFdlYkZpbHRlck9wZXJhdGlvbnMgYXJiaXRyYXJ5RmlsdGVyczsKKyAgICBh
cmJpdHJhcnlGaWx0ZXJzLmFwcGVuZChXZWJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZU9wYWNpdHlG
aWx0ZXIoMC41KSk7CiAKICAgICAvLyBDaGFuZ2luZyB0aGVzZSBwcm9wZXJ0aWVzIGFmZmVjdHMg
dGhlIGVudGlyZSBzdWJ0cmVlIG9mIGxheWVycy4KICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VC
VFJFRV9DSEFOR0VEKHJvb3QtPnNldEFuY2hvclBvaW50KGFyYml0cmFyeUZsb2F0UG9pbnQpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRl
c3QuY3BwCmluZGV4IGE1NjBiZThjMGJjZjc5ZGRiNDU2ZGVmNGYzMzU1NzhkN2Y2YzRjNDEuLjVj
N2QxMTMyMTEyYmQwYzk4YWQwMzExNTM3OGFlMTVkMmY5OWUyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMzEs
NyArMzEsNiBAQAogI2luY2x1ZGUgIkNDVGlsZWRMYXllclRlc3RDb21tb24uaCIKICNpbmNsdWRl
ICJDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiQ29udGVu
dExheWVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5o
IgogI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCkBAIC00OSw2ICs0OCw4IEBACiAjaW5jbHVk
ZSA8Z21vY2svZ21vY2suaD4KICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogI2luY2x1ZGUgPHB1
YmxpYy9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb24uaD4K
KyNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CkBAIC0yMjYxLDggKzIyNjIsOCBAQCBwdWJsaWM6CiAgICAgICAgIHNldFRlc3RM
YXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkMi5nZXQoKSwgcm9vdExheWVyLmdldCgpLCBp
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgxMCwgNzApLCBJbnRT
aXplKDUwMCwgNTAwKSwgdHJ1ZSk7CiAKICAgICAgICAgewotICAgICAgICAgICAgRmlsdGVyT3Bl
cmF0aW9ucyBmaWx0ZXJzOwotICAgICAgICAgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5k
KEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRl
ck9wZXJhdGlvbjo6T1BBQ0lUWSkpOworICAgICAgICAgICAgV2ViRmlsdGVyT3BlcmF0aW9ucyBm
aWx0ZXJzOworICAgICAgICAgICAgZmlsdGVycy5hcHBlbmQoV2ViRmlsdGVyT3BlcmF0aW9uOjpj
cmVhdGVPcGFjaXR5RmlsdGVyKDAuNSkpOwogICAgICAgICAgICAgY2hpbGQtPnNldEZpbHRlcnMo
ZmlsdGVycyk7CiAgICAgICAgIH0KIApAQCAtMjI4OSw4ICsyMjkwLDggQEAgcHVibGljOgogICAg
ICAgICBzZXRUZXN0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZDIuZ2V0KCksIHJvb3RM
YXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQo
MTAsIDcwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUpOwogCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAgICAgICAgICAgIGZpbHRlcnMub3BlcmF0
aW9ucygpLmFwcGVuZChCbHVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDEwLCBXZWJD
b3JlOjpQZXJjZW50KSwgRmlsdGVyT3BlcmF0aW9uOjpCTFVSKSk7CisgICAgICAgICAgICBXZWJG
aWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7CisgICAgICAgICAgICBmaWx0ZXJzLmFwcGVuZChXZWJG
aWx0ZXJPcGVyYXRpb246OmNyZWF0ZUJsdXJGaWx0ZXIoMTApKTsKICAgICAgICAgICAgIGNoaWxk
LT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwCmluZGV4IDg5
MWMzMDViMDE5ZjA0MTE3MWJjYTFkNGEwYjIxN2M5ZWRkYjBiNWUuLjk3NmRjM2YyOTg2NDY4N2M5
MDdlZDI2Nzk3MWQ4NWUyMTEwNmI2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcApAQCAtMjgsNyArMjgsNiBA
QAogCiAjaW5jbHVkZSAiQ0NBbmltYXRpb25UZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiQ0NPY2Ns
dXNpb25UcmFja2VyVGVzdENvbW1vbi5oIgotI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIK
ICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVk
ZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKQEAgLTM3LDExICszNiwxMyBAQAogI2luY2x1ZGUg
ImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgi
CiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgotCiAjaW5jbHVkZSA8Z21vY2sv
Z21vY2suaD4KICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJG
aWx0ZXJPcGVyYXRpb24uaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1
c2luZyBuYW1lc3BhY2UgV2ViS2l0VGVzdHM7CiAKICNkZWZpbmUgRVhQRUNUX0VRX1JFQ1QoYSwg
YikgXApAQCAtMTk5LDggKzIwMCw4IEBAIHByb3RlY3RlZDoKICAgICB0eXBlbmFtZSBUeXBlczo6
TGF5ZXJUeXBlKiBjcmVhdGVTdXJmYWNlKHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIHBhcmVu
dCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJvdW5kcykKICAgICB7CiAgICAgICAgIHR5cGVu
YW1lIFR5cGVzOjpMYXllclR5cGUqIGxheWVyID0gY3JlYXRlTGF5ZXIocGFyZW50LCB0cmFuc2Zv
cm0sIHBvc2l0aW9uLCBib3VuZHMpOwotICAgICAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7
Ci0gICAgICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5z
ZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FM
RSkpOworICAgICAgICBXZWJGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7CisgICAgICAgIGZpbHRl
cnMuYXBwZW5kKFdlYkZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlR3JheXNjYWxlRmlsdGVyKDAuNSkp
OwogICAgICAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKICAgICAgICAgcmV0dXJuIGxh
eWVyOwogICAgIH0KQEAgLTI0Niw4ICsyNDcsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdHlwZW5hbWUg
VHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGNyZWF0ZURyYXdpbmdTdXJmYWNlKHR5cGVuYW1lIFR5
cGVzOjpMYXllclR5cGUqIHBhcmVudCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJvdW5kcywg
Ym9vbCBvcGFxdWUpCiAgICAgewogICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVy
VHlwZSogbGF5ZXIgPSBjcmVhdGVEcmF3aW5nTGF5ZXIocGFyZW50LCB0cmFuc2Zvcm0sIHBvc2l0
aW9uLCBib3VuZHMsIG9wYXF1ZSk7Ci0gICAgICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsK
LSAgICAgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNm
ZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxF
KSk7CisgICAgICAgIFdlYkZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKKyAgICAgICAgZmlsdGVy
cy5hcHBlbmQoV2ViRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGVHcmF5c2NhbGVGaWx0ZXIoMC41KSk7
CiAgICAgICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwogICAgICAgICByZXR1cm4gbGF5
ZXI7CiAgICAgfQpAQCAtMTIyMSwxNiArMTIyMiwxNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHR5
cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBvcGFxdWVMYXllciA9IHRoaXMtPmNyZWF0
ZURyYXdpbmdMYXllcihwYXJlbnQsIGxheWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCks
IEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsKICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRl
bnRMYXllclR5cGUqIG9wYWNpdHlMYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihwYXJl
bnQsIGxheWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDAp
LCB0cnVlKTsKIAotICAgICAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7Ci0gICAgICAgIGZp
bHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCbHVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoTGVu
Z3RoKDEwLCBXZWJDb3JlOjpQZXJjZW50KSwgRmlsdGVyT3BlcmF0aW9uOjpCTFVSKSk7CisgICAg
ICAgIFdlYkZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKKyAgICAgICAgZmlsdGVycy5hcHBlbmQo
V2ViRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGVCbHVyRmlsdGVyKDEwKSk7CiAgICAgICAgIGJsdXJM
YXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKIAotICAgICAgICBmaWx0ZXJzLm9wZXJhdGlvbnMo
KS5jbGVhcigpOwotICAgICAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21w
b25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9u
OjpHUkFZU0NBTEUpKTsKKyAgICAgICAgZmlsdGVycy5jbGVhcigpOworICAgICAgICBmaWx0ZXJz
LmFwcGVuZChXZWJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZUdyYXlzY2FsZUZpbHRlcigwLjUpKTsK
ICAgICAgICAgb3BhcXVlTGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CiAKLSAgICAgICAgZmls
dGVycy5vcGVyYXRpb25zKCkuY2xlYXIoKTsKLSAgICAgICAgZmlsdGVycy5vcGVyYXRpb25zKCku
YXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUs
IEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lUWSkpOworICAgICAgICBmaWx0ZXJzLmNsZWFyKCk7Cisg
ICAgICAgIGZpbHRlcnMuYXBwZW5kKFdlYkZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlT3BhY2l0eUZp
bHRlcigwLjUpKTsKICAgICAgICAgb3BhY2l0eUxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwog
CiAgICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CkBAIC0yNDk1LDggKzI0OTYsOCBA
QCBwcm90ZWN0ZWQ6CiAgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIG9jY2x1ZGlu
Z0xheWVyNSA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihwYXJlbnQsIHRoaXMtPmlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDI1MCwgNTApLCBJbnRTaXplKDUwLCA1MCksIHRydWUpOwogCiAg
ICAgICAgIC8vIEZpbHRlcnMgbWFrZSB0aGUgbGF5ZXIgb3duIGEgc3VyZmFjZS4KLSAgICAgICAg
RmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwotICAgICAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5h
cHBlbmQoQmx1ckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCgxMCwgV2ViQ29yZTo6Rml4
ZWQpLCBGaWx0ZXJPcGVyYXRpb246OkJMVVIpKTsKKyAgICAgICAgV2ViRmlsdGVyT3BlcmF0aW9u
cyBmaWx0ZXJzOworICAgICAgICBmaWx0ZXJzLmFwcGVuZChXZWJGaWx0ZXJPcGVyYXRpb246OmNy
ZWF0ZUJsdXJGaWx0ZXIoMTApKTsKICAgICAgICAgZmlsdGVyZWRTdXJmYWNlLT5zZXRCYWNrZ3Jv
dW5kRmlsdGVycyhmaWx0ZXJzKTsKIAogICAgICAgICAvLyBTYXZlIHRoZSBkaXN0YW5jZSBvZiBp
bmZsdWVuY2UgZm9yIHRoZSBibHVyIGVmZmVjdC4KQEAgLTI2MTYsOCArMjYxNyw4IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogb2NjbHVkaW5nTGF5ZXJB
Ym92ZSA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0
cml4LCBGbG9hdFBvaW50KDEwMCwgMTAwKSwgSW50U2l6ZSg1MCwgNTApLCB0cnVlKTsKIAogICAg
ICAgICAvLyBGaWx0ZXJzIG1ha2UgdGhlIGxheWVycyBvd24gc3VyZmFjZXMuCi0gICAgICAgIEZp
bHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAgICAgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBw
ZW5kKEJsdXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShMZW5ndGgoMywgV2ViQ29yZTo6Rml4ZWQp
LCBGaWx0ZXJPcGVyYXRpb246OkJMVVIpKTsKKyAgICAgICAgV2ViRmlsdGVyT3BlcmF0aW9ucyBm
aWx0ZXJzOworICAgICAgICBmaWx0ZXJzLmFwcGVuZChXZWJGaWx0ZXJPcGVyYXRpb246OmNyZWF0
ZUJsdXJGaWx0ZXIoMykpOwogICAgICAgICBmaWx0ZXJlZFN1cmZhY2UxLT5zZXRCYWNrZ3JvdW5k
RmlsdGVycyhmaWx0ZXJzKTsKICAgICAgICAgZmlsdGVyZWRTdXJmYWNlMi0+c2V0QmFja2dyb3Vu
ZEZpbHRlcnMoZmlsdGVycyk7CiAKQEAgLTI2ODEsOCArMjY4Miw4IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogb2NjbHVkaW5nTGF5ZXI1ID0gdGhpcy0+
Y3JlYXRlRHJhd2luZ0xheWVyKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMjUwLCA1MCksIEludFNpemUoNTAsIDUwKSwgdHJ1ZSk7CiAKICAgICAgICAgLy8gRmlsdGVy
cyBtYWtlIHRoZSBsYXllciBvd24gYSBzdXJmYWNlLiBUaGlzIGZpbHRlciBpcyBsYXJnZSBlbm91
Z2ggdGhhdCBpdCBnb2VzIG91dHNpZGUgdGhlIGJvdHRvbSBvZiB0aGUgY2xpcHBpbmdTdXJmYWNl
LgotICAgICAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7Ci0gICAgICAgIGZpbHRlcnMub3Bl
cmF0aW9ucygpLmFwcGVuZChCbHVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDEyLCBX
ZWJDb3JlOjpGaXhlZCksIEZpbHRlck9wZXJhdGlvbjo6QkxVUikpOworICAgICAgICBXZWJGaWx0
ZXJPcGVyYXRpb25zIGZpbHRlcnM7CisgICAgICAgIGZpbHRlcnMuYXBwZW5kKFdlYkZpbHRlck9w
ZXJhdGlvbjo6Y3JlYXRlQmx1ckZpbHRlcigxMikpOwogICAgICAgICBmaWx0ZXJlZFN1cmZhY2Ut
PnNldEJhY2tncm91bmRGaWx0ZXJzKGZpbHRlcnMpOwogCiAgICAgICAgIC8vIFNhdmUgdGhlIGRp
c3RhbmNlIG9mIGluZmx1ZW5jZSBmb3IgdGhlIGJsdXIgZWZmZWN0LgpAQCAtMjgwNCw4ICsyODA1
LDggQEAgcHJvdGVjdGVkOgogICAgICAgICB0aGlzLT5jcmVhdGVSZXBsaWNhTGF5ZXIoZmlsdGVy
ZWRTdXJmYWNlLCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgzMDAsIDApLCBJbnRT
aXplKCkpOwogCiAgICAgICAgIC8vIEZpbHRlcnMgbWFrZSB0aGUgbGF5ZXIgb3duIGEgc3VyZmFj
ZS4KLSAgICAgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwotICAgICAgICBmaWx0ZXJzLm9w
ZXJhdGlvbnMoKS5hcHBlbmQoQmx1ckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCgzLCBX
ZWJDb3JlOjpGaXhlZCksIEZpbHRlck9wZXJhdGlvbjo6QkxVUikpOworICAgICAgICBXZWJGaWx0
ZXJPcGVyYXRpb25zIGZpbHRlcnM7CisgICAgICAgIGZpbHRlcnMuYXBwZW5kKFdlYkZpbHRlck9w
ZXJhdGlvbjo6Y3JlYXRlQmx1ckZpbHRlcigzKSk7CiAgICAgICAgIGZpbHRlcmVkU3VyZmFjZS0+
c2V0QmFja2dyb3VuZEZpbHRlcnMoZmlsdGVycyk7CiAKICAgICAgICAgdGhpcy0+Y2FsY0RyYXdF
dGMocGFyZW50KTsKQEAgLTI4NTMsOCArMjg1NCw4IEBAIHByb3RlY3RlZDoKICAgICAgICAgdHlw
ZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogYWJvdmVSZXBsaWNhTGF5ZXIgPSB0aGlzLT5jcmVhdGVE
cmF3aW5nTGF5ZXIocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgyMDAs
IDUwKSwgSW50U2l6ZSg1MCwgNTApLCB0cnVlKTsKIAogICAgICAgICAvLyBGaWx0ZXJzIG1ha2Ug
dGhlIGxheWVyIG93biBhIHN1cmZhY2UuCi0gICAgICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVy
czsKLSAgICAgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJsdXJGaWx0ZXJPcGVyYXRp
b246OmNyZWF0ZShMZW5ndGgoMywgV2ViQ29yZTo6Rml4ZWQpLCBGaWx0ZXJPcGVyYXRpb246OkJM
VVIpKTsKKyAgICAgICAgV2ViRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOworICAgICAgICBmaWx0
ZXJzLmFwcGVuZChXZWJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZUJsdXJGaWx0ZXIoMykpOwogICAg
ICAgICBmaWx0ZXJlZFN1cmZhY2UtPnNldEJhY2tncm91bmRGaWx0ZXJzKGZpbHRlcnMpOwogCiAg
ICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CkBAIC0yOTAzLDggKzI5MDQsOCBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIGJlc2lkZVJlcGxp
Y2FMYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihwYXJlbnQsIHRoaXMtPmlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDIwMCwgNDApLCBJbnRTaXplKDEwLCAxMCksIHRydWUpOwogCiAg
ICAgICAgIC8vIEZpbHRlcnMgbWFrZSB0aGUgbGF5ZXIgb3duIGEgc3VyZmFjZS4KLSAgICAgICAg
RmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwotICAgICAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5h
cHBlbmQoQmx1ckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCgzLCBXZWJDb3JlOjpGaXhl
ZCksIEZpbHRlck9wZXJhdGlvbjo6QkxVUikpOworICAgICAgICBXZWJGaWx0ZXJPcGVyYXRpb25z
IGZpbHRlcnM7CisgICAgICAgIGZpbHRlcnMuYXBwZW5kKFdlYkZpbHRlck9wZXJhdGlvbjo6Y3Jl
YXRlQmx1ckZpbHRlcigzKSk7CiAgICAgICAgIGZpbHRlcmVkU3VyZmFjZS0+c2V0QmFja2dyb3Vu
ZEZpbHRlcnMoZmlsdGVycyk7CiAKICAgICAgICAgLy8gU2F2ZSB0aGUgZGlzdGFuY2Ugb2YgaW5m
bHVlbmNlIGZvciB0aGUgYmx1ciBlZmZlY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0ZpbHRlck9wZXJhdGlvbnNUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvRmlsdGVyT3BlcmF0aW9uc1Rlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhMTRjN2Yw
NDM5MDg0MzllNjA4ZGE2MTNmYTlhYzQ0MDFlOWViYjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ZpbHRlck9wZXJhdGlvbnNUZXN0LmNwcApAQCAtMCww
ICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZpbHRlck9w
ZXJhdGlvbnMuaCIKKworI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8cHVibGlj
L1dlYkZpbHRlck9wZXJhdGlvbi5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRp
b25zLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKKworbmFtZXNwYWNlIHsKKworVEVTVChGaWx0ZXJPcGVyYXRpb25zVGVzdCwgZ2V0T3V0c2V0
c0JsdXIpCit7CisgICAgRmlsdGVyT3BlcmF0aW9ucyBvcHM7CisgICAgb3BzLm9wZXJhdGlvbnMo
KS5hcHBlbmQoQmx1ckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCgyMC4wLCBGaXhlZCks
IEZpbHRlck9wZXJhdGlvbjo6QkxVUikpOworICAgIEVYUEVDVF9UUlVFKG9wcy5oYXNPdXRzZXRz
KCkpOworICAgIGludCB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQ7CisgICAgdG9wID0gcmlnaHQg
PSBib3R0b20gPSBsZWZ0ID0gMDsKKyAgICBvcHMuZ2V0T3V0c2V0cyh0b3AsIHJpZ2h0LCBib3R0
b20sIGxlZnQpOworICAgIEVYUEVDVF9FUSg1NywgdG9wKTsKKyAgICBFWFBFQ1RfRVEoNTcsIHJp
Z2h0KTsKKyAgICBFWFBFQ1RfRVEoNTcsIGJvdHRvbSk7CisgICAgRVhQRUNUX0VRKDU3LCBsZWZ0
KTsKK30KKworVEVTVChGaWx0ZXJPcGVyYXRpb25zVGVzdCwgZ2V0T3V0c2V0c0Ryb3BTaGFkb3cp
Cit7CisgICAgRmlsdGVyT3BlcmF0aW9ucyBvcHM7CisgICAgb3BzLm9wZXJhdGlvbnMoKS5hcHBl
bmQoRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKEludFBvaW50KDMsIDgpLCAyMCwg
Q29sb3IoMSwgMiwgMyksIEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1cpKTsKKyAgICBFWFBF
Q1RfVFJVRShvcHMuaGFzT3V0c2V0cygpKTsKKyAgICBpbnQgdG9wLCByaWdodCwgYm90dG9tLCBs
ZWZ0OworICAgIHRvcCA9IHJpZ2h0ID0gYm90dG9tID0gbGVmdCA9IDA7CisgICAgb3BzLmdldE91
dHNldHModG9wLCByaWdodCwgYm90dG9tLCBsZWZ0KTsKKyAgICBFWFBFQ1RfRVEoNDksIHRvcCk7
CisgICAgRVhQRUNUX0VRKDYwLCByaWdodCk7CisgICAgRVhQRUNUX0VRKDY1LCBib3R0b20pOwor
ICAgIEVYUEVDVF9FUSg1NCwgbGVmdCk7Cit9CisKK1RFU1QoV2ViRmlsdGVyT3BlcmF0aW9uc1Rl
c3QsIGdldE91dHNldHNCbHVyKQoreworICAgIFdlYkZpbHRlck9wZXJhdGlvbnMgb3BzOworICAg
IG9wcy5hcHBlbmQoV2ViRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGVCbHVyRmlsdGVyKDIwKSk7Cisg
ICAgaW50IHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdDsKKyAgICB0b3AgPSByaWdodCA9IGJvdHRv
bSA9IGxlZnQgPSAwOworICAgIG9wcy5nZXRPdXRzZXRzKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVm
dCk7CisgICAgRVhQRUNUX0VRKDU3LCB0b3ApOworICAgIEVYUEVDVF9FUSg1NywgcmlnaHQpOwor
ICAgIEVYUEVDVF9FUSg1NywgYm90dG9tKTsKKyAgICBFWFBFQ1RfRVEoNTcsIGxlZnQpOworfQor
CitURVNUKFdlYkZpbHRlck9wZXJhdGlvbnNUZXN0LCBnZXRPdXRzZXRzRHJvcFNoYWRvdykKK3sK
KyAgICBXZWJGaWx0ZXJPcGVyYXRpb25zIG9wczsKKyAgICBvcHMuYXBwZW5kKFdlYkZpbHRlck9w
ZXJhdGlvbjo6Y3JlYXRlRHJvcFNoYWRvd0ZpbHRlcihXZWJQb2ludCgzLCA4KSwgMjAsIDApKTsK
KyAgICBpbnQgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0OworICAgIHRvcCA9IHJpZ2h0ID0gYm90
dG9tID0gbGVmdCA9IDA7CisgICAgb3BzLmdldE91dHNldHModG9wLCByaWdodCwgYm90dG9tLCBs
ZWZ0KTsKKyAgICBFWFBFQ1RfRVEoNDksIHRvcCk7CisgICAgRVhQRUNUX0VRKDYwLCByaWdodCk7
CisgICAgRVhQRUNUX0VRKDY1LCBib3R0b20pOworICAgIEVYUEVDVF9FUSg1NCwgbGVmdCk7Cit9
CisKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9HcmFwaGlj
c0xheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvR3Jh
cGhpY3NMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggMzlhZDMyNjIxNWNmM2I4MWRiZWFlNTRh
MTA3NTVkNTBmZTRmMDkwNi4uYjdhYTg1NzQ2NWNiYWMxOGM0ODJhZWQ1ZDk3MzIzMjY1MTRkYTZh
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9HcmFwaGljc0xheWVy
Q2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0dyYXBo
aWNzTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJD
Q0FuaW1hdGlvblRlc3RDb21tb24uaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5j
bHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAo=
</data>
<flag name="review"
          id="149591"
          type_id="1"
          status="+"
          setter="enne"
    />
          </attachment>
      

    </bug>

</bugzilla>