<?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>55013</bug_id>
          
          <creation_ts>2011-02-22 19:11:32 -0800</creation_ts>
          <short_desc>[chromium] Move draw time properties out of *LayerChromium to CCLayerImpl</short_desc>
          <delta_ts>2011-02-24 21:57:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>54047</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>abarth</cc>
    
    <cc>enne</cc>
    
    <cc>eric</cc>
    
    <cc>kbr</cc>
    
    <cc>nduca</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>355763</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-02-22 19:11:32 -0800</bug_when>
    <thetext>[chromium] Move draw time properties out of *LayerChromium to CCLayerImpl</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355784</commentid>
    <comment_count>1</comment_count>
      <attachid>83431</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-02-22 19:39:46 -0800</bug_when>
    <thetext>Created attachment 83431
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355790</commentid>
    <comment_count>2</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-02-22 19:43:09 -0800</bug_when>
    <thetext>This patch is (in essence) a strict subset of https://bugs.webkit.org/show_bug.cgi?id=54047.  IMO it&apos;s big enough and conflict-likely enough to land by itself, but small enough to be a low-risk landing so I&apos;d like to get it in before there is too much more surgery on these files.  Most of the lines touched are changes that switch to use a getter/setter rather than setting member variables directly.

Conceptually this patch doesn&apos;t do much except prepare for splitting the draw responsibilities away from what currently exists as the LayerChromium tree.  The patch at https://bugs.webkit.org/show_bug.cgi?id=54047 shows what this looks like after the update and draw steps are divided more cleanly in LayerRendererChromium&apos;s internals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356600</commentid>
    <comment_count>3</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-02-23 17:52:39 -0800</bug_when>
    <thetext>Vangelis, could you do the unofficial review of this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356720</commentid>
    <comment_count>4</comment_count>
      <attachid>83431</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-02-24 00:16:38 -0800</bug_when>
    <thetext>Comment on attachment 83431
Patch

Is the plan to also rename RenderSurfaceChromium to something like ccRenderSurface and move it to the cc directory?  
Is there any reason you call the new class CCLayerImpl instead of plain CCLayer ? 

Like you mention in the description, there&apos;s still a bunch of code that will need to change to break the connections between CCLayers and LayerChromium&apos;s but I think this is a fine first step.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357229</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-02-24 11:50:23 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 83431 [details])
&gt; Is the plan to also rename RenderSurfaceChromium to something like ccRenderSurface and move it to the cc directory?

Yup, that will happen as well.  It seemed premature to do that yet as it adds more churn and RenderSurfaceChromium is still being used directly by some of the LayerChromium subclasses.

&gt; Is there any reason you call the new class CCLayerImpl instead of plain CCLayer ? 
&gt; 

Nat pointed out that it makes more sense to name the interface we exposed to the rest of WebKit CCLayer and have CCLayerImpl be the compositor&apos;s internal implementation.  IOW GraphicsLayerChromium will have a set of CCLayers and set properties on them, etc, and only the compositor internals will ever have knowledge of CCLayerImpl.

&gt; Like you mention in the description, there&apos;s still a bunch of code that will need to change to break the connections between CCLayers and LayerChromium&apos;s but I think this is a fine first step.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357281</commentid>
    <comment_count>6</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-02-24 12:37:11 -0800</bug_when>
    <thetext>I could imagine doing a similar change to LayerRendrerChromium too, as a subsequent patch perhaps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357598</commentid>
    <comment_count>7</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-02-24 17:48:43 -0800</bug_when>
    <thetext>So everyone is OK with this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357605</commentid>
    <comment_count>8</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-02-24 17:59:41 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; So everyone is OK with this?

No complaints here.  It makes a lot of sense to commit this large but low-risk change first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357622</commentid>
    <comment_count>9</comment_count>
      <attachid>83431</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-02-24 18:17:28 -0800</bug_when>
    <thetext>Comment on attachment 83431
Patch

Thumbs up in that case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357656</commentid>
    <comment_count>10</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-02-24 19:20:30 -0800</bug_when>
    <thetext>Committed r79659: &lt;http://trac.webkit.org/changeset/79659&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357688</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-24 21:57:30 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/79659 might have broken Leopard Intel Debug (Build)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83431</attachid>
            <date>2011-02-22 19:39:46 -0800</date>
            <delta_ts>2011-02-24 18:17:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55013-20110222193945.patch</filename>
            <type>text/plain</type>
            <size>69255</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzkzNDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkMTA3MjI0M2I1MGYwNDRh
OGY5YzliZDA2MzFhMTgyMTIxNjE1M2IwLi42MWI1YTQyNThhNmRkODJmZDE0NjZkN2RhZTY4ZTdi
ODFkZDBlNjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA5IEBACisyMDExLTAyLTIyICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW2Nocm9taXVtXSBNb3ZlIGRyYXcgdGltZSBwcm9w
ZXJ0aWVzIG91dCBvZiAqTGF5ZXJDaHJvbWl1bSB0byBDQ0xheWVySW1wbAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUwMTMKKworICAgICAgICBUaGlz
IGFkZHMgYSBuZXcgdHlwZSAodGVudGF0aXZlbHkgbmFtZWQgQ0NMYXllckltcGwpIHJlc3BvbnNp
YmxlIGZvciBkcmF3aW5nL2NvbXBvc2l0aW5nIGxheWVycy4KKyAgICAgICAgQ3VycmVudGx5IExh
eWVyQ2hyb21pdW1zIGtub3cgYWJvdXQgdGhlaXIgQ0NMYXllckltcGxzIGFuZCBDQ0xheWVySW1w
bHMgcmVseSBvbiB0aGUgTGF5ZXJDaHJvbWl1bQorICAgICAgICB0cmVlIGZvciBzdHJ1Y3R1cmUu
ICBJbiB0aGVvcnkgdXBkYXRlcyBhcmUgYSBMYXllckNocm9taXVtLW9ubHkgY29uY2VwdCBhbmQg
ZHJhdyBpcyBhIENDTGF5ZXJJbXBsLW9ubHkKKyAgICAgICAgY29uY2VwdCwgYnV0IHRoaXMgcGF0
Y2ggZG9lc24ndCBnbyBhbGwgdGhlcmUgeWV0IGluIHRoZSBpbnRlcmVzdCBvZiBrZWVwaW5nIHRo
ZSBwYXRjaCBzbWFsbC1pc2guCisKKyAgICAgICAgUmVuZGVyU3VyZmFjZXMgYXJlIGEgQ0NMYXll
ckltcGwtb25seSBjb25jZXB0cyBhbmQgbm8gbG9uZ2VyIGhhdmUgYW55IGRpcmVjdCBMYXllckNo
cm9taXVtIGRlcGVuZGVuY2llcy4KKworICAgICAgICBOb3RlOiBJJ3ZlIHB1dCBDQ0xheWVySW1w
bCBpbnRvIGEgbmV3ICdjYycgZGlyZWN0b3J5IHVuZGVyIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtLyBhbmQgaW50ZW50aW9uYWxseQorICAgICAgICBub3QgYWRkZWQgaXQgdG8gdGhlIGluY2x1
ZGUgcGF0aC4gIFdlIHBsYW4gdG8gYWRkIG1vcmUgY29tcG9zaXRvciBpbXBsZW1lbnRhdGlvbiBk
ZXRhaWxzIHRvIHRoaXMgZGlyZWN0b3J5CisgICAgICAgIGFuZCB3ZSB3YW50IHRvIGtlZXAgYWNj
aWRlbnRhbCBkZXBlbmRlbmNpZXMgb24gdGhlc2UgZmlsZXMgdG8gYSBtaW5pbXVtLgorCisgICAg
ICAgIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQwNDcgZm9y
IHRoZSBiaWcgcGljdHVyZS4KKworICAgICAgICBSZWZhY3RvciBvbmx5LCBjb21wb3NpdGluZy8g
dGVzdHMgY292ZXIgdGhlc2UgY29kZXBhdGhzLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJDaHJvbWl1bTo6ZHJhdyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OnJlcXVpcmVzQ2xpcHBl
ZFVwZGF0ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OnVw
ZGF0ZUNvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJv
bWl1bTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpMYXllckNocm9t
aXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OmNsZWFudXBSZXNvdXJjZXMp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJSZW5kZXJlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpzZXRCb3VuZHMpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJD
aHJvbWl1bTo6c2V0TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21p
dW06OnNldEJvcmRlckNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OmJv
cmRlckNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnNldEJvcmRlcldp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OmJvcmRlcldpZHRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OmxheWVyUmVuZGVyZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0RG91YmxlU2lkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJDaHJvbWl1bTo6Ym91bmRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVt
OjptYXNrRHJhd0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OmNjTGF5
ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
Ojpjb21wYXJlTGF5ZXJaKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6ZHJhd0xheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06
OnVwZGF0ZUxheWVyc1JlY3Vyc2l2ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OnNldENvbXBvc2l0ZU9mZnNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clJlbmRlcmVyQ2hyb21pdW06OmdldE9mZnNjcmVlbkxheWVyVGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5MYXllckNocm9taXVtOjpkcmF3KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3VyZmFjZUNocm9taXVtOjpSZW5kZXJTdXJmYWNlQ2hyb21p
dW0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3VyZmFjZUNocm9taXVtOjpkcmF3U3VyZmFj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdXJmYWNlQ2hyb21pdW06OmRyYXcpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OmRyYXdZVVYpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpkcmF3UkdCQSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpDQ0xheWVySW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVySW1wbDo6fkNDTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJJbXBsOjpzdXBlcmxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpt
YXNrTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnJlcGxpY2FMYXllcik6
CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0TGF5ZXJSZW5kZXJlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6Y3JlYXRlUmVuZGVyU3VyZmFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVySW1wbDo6dXBkYXRlQ29udGVudHNJZkRpcnR5KToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpkcmF3c0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllckltcGw6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnVucmVz
ZXJ2ZUNvbnRlbnRzVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6Ymlu
ZENvbnRlbnRzVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6Y2xlYW51
cFJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6Z2V0RHJhd1JlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OmRyYXdEZWJ1Z0JvcmRlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJJbXBsOjpzZXREZWJ1Z0JvcmRlckNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJJbXBsOjpkZWJ1Z0JvcmRlckNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJJbXBsOjpzZXREZWJ1Z0JvcmRlcldpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJ
bXBsOjpkZWJ1Z0JvcmRlcldpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjps
YXllclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpyZW5kZXJTdXJm
YWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpjbGVhclJlbmRlclN1cmZhY2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OmRyYXdEZXB0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0RHJhd0RlcHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJJbXBsOjpkcmF3T3BhY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6
c2V0RHJhd09wYWNpdHkpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNjaXNzb3JS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRTY2lzc29yUmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6dGFyZ2V0UmVuZGVyU3VyZmFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0VGFyZ2V0UmVuZGVyU3VyZmFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6ZG91YmxlU2lkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllckltcGw6OnNldERvdWJsZVNpZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJJbXBsOjpib3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldEJvdW5k
cyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6ZHJhd1RyYW5zZm9ybSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0RHJhd1RyYW5zZm9ybSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVySW1wbDo6ZHJhd2FibGVDb250ZW50UmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVySW1wbDo6c2V0RHJhd2FibGVDb250ZW50UmVjdCk6CisKIDIwMTEtMDItMjIg
IEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggZGVi
dWcgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNGEwN2I4MTY1NzM4YjUwODhmOWM0MzMzY2Nj
MGEyMTQ4YTE1NWY4My4uYjI1ZmI1Y2IyYjM5ZjJkYjQ1ZTQ2NmI1ZDc1MGFlOGE2NjI0M2Y5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjU5OSwxMCArMjU5OSwxMCBAQAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRQbGF0Zm9ybURhdGFMaW51eC5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250VXRpbHNDaHJvbWl1bVdpbi5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRVdGlsc0No
cm9taXVtV2luLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dl
b21ldHJ5QmluZGluZy5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0dlb21ldHJ5QmluZGluZy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9HTEVTMkNhbnZhcy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0dMRVMyQ2FudmFzLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0dlb21ldHJ5QmluZGluZy5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0dlb21ldHJ5QmluZGluZy5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9HbHlwaFBhZ2VUcmVlTm9kZUNocm9taXVtV2luLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9t
aXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhp
Y3NMYXllckNocm9taXVtLmgnLApAQCAtMjYyOCw4ICsyNjI4LDggQEAKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuaCcs
Ci0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNo
cm9taXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRl
clN1cmZhY2VDaHJvbWl1bS5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NpbXBsZUZvbnREYXRhQ2hyb21pdW1XaW4uY3BwJywK
QEAgLTI2NDIsMTQgKzI2NDIsMTYgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9VbmlzY3JpYmVIZWxwZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVW5pc2NyaWJlSGVscGVyVGV4dFJ1bi5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1VuaXNjcmliZUhlbHBlclRleHRSdW4uaCcsCisgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVkRNWFBhcnNlci5jcHAnLAorICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZETVhQYXJzZXIuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZUNocm9taXVtLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZUNo
cm9taXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVv
TGF5ZXJDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9WRE1YUGFyc2VyLmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVkRNWFBhcnNlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaCcsCisgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwJywKKyAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhLmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5t
bScsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRT
b3VyY2UuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggNDIyMzg3
NjU5YjM3ZjJiMjY2Mzc3NjRiOGZkMjljNzVjNTg1OTI1Ni4uNzYwOTkxNzU5MTAzMzBkYWIwYjQ3
ZjhjOGJmZmEzNzU4N2U4M2Y0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHAK
QEAgLTM0LDYgKzM0LDcgQEAKIAogI2luY2x1ZGUgIkNhbnZhc0xheWVyQ2hyb21pdW0uaCIKIAor
I2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0Qu
aCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKIApAQCAtNjIsMTEgKzYzLDEw
IEBAIHZvaWQgQ2FudmFzTGF5ZXJDaHJvbWl1bTo6ZHJhdygpCiAgICAgR0xDKGNvbnRleHQsIGNv
bnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1
cmVJZCkpOwogICAgIGxheWVyUmVuZGVyZXIoKS0+dXNlU2hhZGVyKHByb2dyYW0tPnByb2dyYW0o
KSk7CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm0xaShwcm9ncmFtLT5mcmFnbWVu
dFNoYWRlcigpLnNhbXBsZXJMb2NhdGlvbigpLCAwKSk7Ci0gICAgZHJhd1RleHR1cmVkUXVhZChj
b250ZXh0LCBsYXllclJlbmRlcmVyKCktPnByb2plY3Rpb25NYXRyaXgoKSwgZHJhd1RyYW5zZm9y
bSgpLAotICAgICAgICAgICAgICAgICAgICAgYm91bmRzKCkud2lkdGgoKSwgYm91bmRzKCkuaGVp
Z2h0KCksIGRyYXdPcGFjaXR5KCksCisgICAgZHJhd1RleHR1cmVkUXVhZChjb250ZXh0LCBsYXll
clJlbmRlcmVyKCktPnByb2plY3Rpb25NYXRyaXgoKSwgY2NMYXllckltcGwoKS0+ZHJhd1RyYW5z
Zm9ybSgpLAorICAgICAgICAgICAgICAgICAgICAgYm91bmRzKCkud2lkdGgoKSwgYm91bmRzKCku
aGVpZ2h0KCksIGNjTGF5ZXJJbXBsKCktPmRyYXdPcGFjaXR5KCksCiAgICAgICAgICAgICAgICAg
ICAgICBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpLAogICAgICAgICAg
ICAgICAgICAgICAgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCkpOwot
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAppbmRleCA5MjBmNzgw
NjdlMmE0MmYwMmQyNzFmYzVkOTNiNWI2NDI3ODc5NmEyLi4zMGJjZTVkNjA3MzgyOGM5ZjBhODVj
NDU3ZjJhMjEyMTFlNGIzMGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3Bw
CkBAIC0zNCw2ICszNCw3IEBACiAKICNpbmNsdWRlICJDb250ZW50TGF5ZXJDaHJvbWl1bS5oIgog
CisjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQz
RC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkxheWVy
VGV4dHVyZS5oIgpAQCAtNzksOCArODAsOCBAQCBib29sIENvbnRlbnRMYXllckNocm9taXVtOjpy
ZXF1aXJlc0NsaXBwZWRVcGRhdGVSZWN0KCkgY29uc3QKICAgICAvLyBvbmUgb2YgdGhlIGxheWVy
J3MgZGltZW5zaW9ucyBpcyBsYXJnZXIgdGhhbiAyMDAwIHBpeGVscyBvciB0aGUgc2l6ZSBvZgog
ICAgIC8vIHN1cmZhY2UgaXQncyByZW5kZXJpbmcgaW50by4gVGhpcyBpcyBhIHRlbXBvcmFyeSBt
ZWFzdXJlIHVudGlsIGxheWVyIHRpbGluZyBpcyBpbXBsZW1lbnRlZC4KICAgICBzdGF0aWMgY29u
c3QgaW50IG1heExheWVyU2l6ZSA9IDIwMDA7Ci0gICAgcmV0dXJuIChib3VuZHMoKS53aWR0aCgp
ID4gbWF4KG1heExheWVyU2l6ZSwgbV90YXJnZXRSZW5kZXJTdXJmYWNlLT5jb250ZW50UmVjdCgp
LndpZHRoKCkpCi0gICAgICAgICAgICB8fCBib3VuZHMoKS5oZWlnaHQoKSA+IG1heChtYXhMYXll
clNpemUsIG1fdGFyZ2V0UmVuZGVyU3VyZmFjZS0+Y29udGVudFJlY3QoKS5oZWlnaHQoKSkKKyAg
ICByZXR1cm4gKGJvdW5kcygpLndpZHRoKCkgPiBtYXgobWF4TGF5ZXJTaXplLCBjY0xheWVySW1w
bCgpLT50YXJnZXRSZW5kZXJTdXJmYWNlKCktPmNvbnRlbnRSZWN0KCkud2lkdGgoKSkKKyAgICAg
ICAgICAgIHx8IGJvdW5kcygpLmhlaWdodCgpID4gbWF4KG1heExheWVyU2l6ZSwgY2NMYXllcklt
cGwoKS0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpLT5jb250ZW50UmVjdCgpLmhlaWdodCgpKQogICAg
ICAgICAgICAgfHwgIWxheWVyUmVuZGVyZXIoKS0+Y2hlY2tUZXh0dXJlU2l6ZShib3VuZHMoKSkp
OwogfQogCkBAIC0xMDMsMTUgKzEwNCwxNSBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjp1
cGRhdGVDb250ZW50c0lmRGlydHkoKQogICAgICAgICAvLyBBIGxheWVyIHdpdGggM0QgdHJhbnNm
b3JtcyBjb3VsZCByZXF1aXJlIGFuIGFyYml0cmFyaWx5IGxhcmdlIG51bWJlcgogICAgICAgICAv
LyBvZiB0ZXhlbHMgdG8gYmUgcmVwYWludGVkLCBzbyBpZ25vcmUgdGhlc2UgbGF5ZXJzIHVudGls
IHRpbGluZyBpcwogICAgICAgICAvLyBpbXBsZW1lbnRlZC4KLSAgICAgICAgaWYgKCFkcmF3VHJh
bnNmb3JtKCkuaXNJZGVudGl0eU9yVHJhbnNsYXRpb24oKSkgeworICAgICAgICBpZiAoIWNjTGF5
ZXJJbXBsKCktPmRyYXdUcmFuc2Zvcm0oKS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbigpKSB7CiAg
ICAgICAgICAgICBtX3NraXBzRHJhdyA9IHRydWU7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAogICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHJlZ2lvbiBvZiB0aGlzIGxheWVyIHRo
YXQgaXMgY3VycmVudGx5IHZpc2libGUuCi0gICAgICAgIGNvbnN0IEludFJlY3QgY2xpcFJlY3Qg
PSBtX3RhcmdldFJlbmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0KCk7CisgICAgICAgIGNvbnN0IElu
dFJlY3QgY2xpcFJlY3QgPSBjY0xheWVySW1wbCgpLT50YXJnZXRSZW5kZXJTdXJmYWNlKCktPmNv
bnRlbnRSZWN0KCk7CiAKLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJPcmlnaW5U
cmFuc2Zvcm0gPSBkcmF3VHJhbnNmb3JtKCk7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGxheWVyT3JpZ2luVHJhbnNmb3JtID0gY2NMYXllckltcGwoKS0+ZHJhd1RyYW5zZm9ybSgpOwog
ICAgICAgICBsYXllck9yaWdpblRyYW5zZm9ybS50cmFuc2xhdGUzZCgtMC41ICogYm91bmRzKCku
d2lkdGgoKSwgLTAuNSAqIGJvdW5kcygpLmhlaWdodCgpLCAwKTsKIAogICAgICAgICAvLyBGb3Ig
bm93IHdlIGFwcGx5IHRoZSBsYXJnZSBsYXllciB0cmVhdG1lbnQgb25seSBmb3IgbGF5ZXJzIHRo
YXQgYXJlIGVpdGhlciB1bnRyYW5zZm9ybWVkCkBAIC0zNDEsMTggKzM0MiwxOCBAQCB2b2lkIENv
bnRlbnRMYXllckNocm9taXVtOjpkcmF3KCkKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5p
Zm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsK
IAogICAgIGlmIChyZXF1aXJlc0NsaXBwZWRVcGRhdGVSZWN0KCkpIHsKLSAgICAgICAgZmxvYXQg
bTQzID0gZHJhd1RyYW5zZm9ybSgpLm00MygpOworICAgICAgICBmbG9hdCBtNDMgPSBjY0xheWVy
SW1wbCgpLT5kcmF3VHJhbnNmb3JtKCkubTQzKCk7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IHRyYW5zZm9ybTsKICAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZTNkKG1fbGF5ZXJDZW50
ZXJJblN1cmZhY2VDb29yZHMueCgpLCBtX2xheWVyQ2VudGVySW5TdXJmYWNlQ29vcmRzLnkoKSwg
bTQzKTsKICAgICAgICAgZHJhd1RleHR1cmVkUXVhZChjb250ZXh0LCBsYXllclJlbmRlcmVyKCkt
PnByb2plY3Rpb25NYXRyaXgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm0s
IG1fdmlzaWJsZVJlY3RJbkxheWVyQ29vcmRzLndpZHRoKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgbV92aXNpYmxlUmVjdEluTGF5ZXJDb29yZHMuaGVpZ2h0KCksIGRyYXdPcGFjaXR5KCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgbV92aXNpYmxlUmVjdEluTGF5ZXJDb29yZHMuaGVp
Z2h0KCksIGNjTGF5ZXJJbXBsKCktPmRyYXdPcGFjaXR5KCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhhTG9jYXRpb24o
KSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZHJhd1RleHR1cmVkUXVhZChjb250ZXh0LCBsYXll
clJlbmRlcmVyKCktPnByb2plY3Rpb25NYXRyaXgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBkcmF3VHJhbnNmb3JtKCksIGJvdW5kcygpLndpZHRoKCksIGJvdW5kcygpLmhlaWdodCgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdPcGFjaXR5KCksIHByb2dyYW0tPnZlcnRleFNo
YWRlcigpLm1hdHJpeExvY2F0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgY2NMYXll
ckltcGwoKS0+ZHJhd1RyYW5zZm9ybSgpLCBib3VuZHMoKS53aWR0aCgpLCBib3VuZHMoKS5oZWln
aHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjY0xheWVySW1wbCgpLT5kcmF3T3BhY2l0
eSgpLCBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigp
KTsKICAgICB9CiAgICAgdW5yZXNlcnZlQ29udGVudHNUZXh0dXJlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21p
dW0uY3BwCmluZGV4IDZlMDNlNjRhZWI4MTczMTQ4NjhlNzg0ODAwZjc0MmY3NmUxNzU3NmQuLmE3
ZWViOTZjOTRhNGVkNTkzYjQ5YTc3NTE3ODU3MGE4YWZmMjg0N2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21p
dW0uY3BwCkBAIC0zNCw2ICszNCw3IEBACiAKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCiAK
KyNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNE
LmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaWYgUExBVEZPUk0oU0tJ
QSkKQEAgLTU3LDI1ICs1OCwxOSBAQCBMYXllckNocm9taXVtOjpMYXllckNocm9taXVtKEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCiAgICAgOiBtX293bmVyKG93bmVyKQogICAgICwgbV9j
b250ZW50c0RpcnR5KGZhbHNlKQogICAgICwgbV9tYXNrTGF5ZXIoMCkKLSAgICAsIG1fdGFyZ2V0
UmVuZGVyU3VyZmFjZSgwKQogICAgICwgbV9zdXBlcmxheWVyKDApCiAgICAgLCBtX2FuY2hvclBv
aW50KDAuNSwgMC41KQogICAgICwgbV9iYWNrZ3JvdW5kQ29sb3IoMCwgMCwgMCwgMCkKLSAgICAs
IG1fYm9yZGVyQ29sb3IoMCwgMCwgMCwgMCkKICAgICAsIG1fb3BhY2l0eSgxLjApCiAgICAgLCBt
X3pQb3NpdGlvbigwLjApCiAgICAgLCBtX2FuY2hvclBvaW50WigwKQotICAgICwgbV9ib3JkZXJX
aWR0aCgwKQogICAgICwgbV9jbGVhcnNDb250ZXh0KGZhbHNlKQotICAgICwgbV9kb3VibGVTaWRl
ZCh0cnVlKQogICAgICwgbV9oaWRkZW4oZmFsc2UpCiAgICAgLCBtX21hc2tzVG9Cb3VuZHMoZmFs
c2UpCiAgICAgLCBtX29wYXF1ZSh0cnVlKQogICAgICwgbV9nZW9tZXRyeUZsaXBwZWQoZmFsc2Up
CiAgICAgLCBtX25lZWRzRGlzcGxheU9uQm91bmRzQ2hhbmdlKGZhbHNlKQotICAgICwgbV9kcmF3
RGVwdGgoMCkKLSAgICAsIG1fbGF5ZXJSZW5kZXJlcigwKQotICAgICwgbV9yZW5kZXJTdXJmYWNl
KDApCisgICAgLCBtX2NjTGF5ZXJJbXBsKENDTGF5ZXJJbXBsOjpjcmVhdGUodGhpcykpCiAgICAg
LCBtX3JlcGxpY2FMYXllcigwKQogewogfQpAQCAtOTIsOCArODcsNyBAQCBMYXllckNocm9taXVt
Ojp+TGF5ZXJDaHJvbWl1bSgpCiAKIHZvaWQgTGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291cmNl
cygpCiB7Ci0gICAgaWYgKG1fcmVuZGVyU3VyZmFjZSkKLSAgICAgICAgbV9yZW5kZXJTdXJmYWNl
LT5jbGVhbnVwUmVzb3VyY2VzKCk7CisgICAgbV9jY0xheWVySW1wbC0+Y2xlYW51cFJlc291cmNl
cygpOwogfQogCiB2b2lkIExheWVyQ2hyb21pdW06OnNldExheWVyUmVuZGVyZXIoTGF5ZXJSZW5k
ZXJlckNocm9taXVtKiByZW5kZXJlcikKQEAgLTEwNSwxMyArOTksNyBAQCB2b2lkIExheWVyQ2hy
b21pdW06OnNldExheWVyUmVuZGVyZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiByZW5kZXJlcikK
ICAgICAgICAgc2V0TmVlZHNEaXNwbGF5KCk7CiAgICAgfQogCi0gICAgbV9sYXllclJlbmRlcmVy
ID0gcmVuZGVyZXI7Ci19Ci0KLVJlbmRlclN1cmZhY2VDaHJvbWl1bSogTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlUmVuZGVyU3VyZmFjZSgpCi17Ci0gICAgbV9yZW5kZXJTdXJmYWNlID0gbmV3IFJlbmRl
clN1cmZhY2VDaHJvbWl1bSh0aGlzKTsKLSAgICByZXR1cm4gbV9yZW5kZXJTdXJmYWNlLmdldCgp
OworICAgIG1fY2NMYXllckltcGwtPnNldExheWVyUmVuZGVyZXIocmVuZGVyZXIpOwogfQogCiB2
b2lkIExheWVyQ2hyb21pdW06OnNldE5lZWRzQ29tbWl0KCkKQEAgLTE4OCwxNSArMTc2LDE1IEBA
IGludCBMYXllckNocm9taXVtOjppbmRleE9mU3VibGF5ZXIoY29uc3QgTGF5ZXJDaHJvbWl1bSog
cmVmZXJlbmNlKQogCiB2b2lkIExheWVyQ2hyb21pdW06OnNldEJvdW5kcyhjb25zdCBJbnRTaXpl
JiBzaXplKQogewotICAgIGlmIChtX2JvdW5kcyA9PSBzaXplKQorICAgIGlmIChib3VuZHMoKSA9
PSBzaXplKQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIGZpcnN0UmVzaXplID0gIW1fYm91
bmRzLndpZHRoKCkgJiYgIW1fYm91bmRzLmhlaWdodCgpICYmIHNpemUud2lkdGgoKSAmJiBzaXpl
LmhlaWdodCgpOworICAgIGJvb2wgZmlyc3RSZXNpemUgPSAhYm91bmRzKCkud2lkdGgoKSAmJiAh
Ym91bmRzKCkuaGVpZ2h0KCkgJiYgc2l6ZS53aWR0aCgpICYmIHNpemUuaGVpZ2h0KCk7CiAKLSAg
ICBtX2JvdW5kcyA9IHNpemU7CisgICAgbV9jY0xheWVySW1wbC0+c2V0Qm91bmRzKHNpemUpOwog
CiAgICAgaWYgKGZpcnN0UmVzaXplKQotICAgICAgICBzZXROZWVkc0Rpc3BsYXkoRmxvYXRSZWN0
KDAsIDAsIG1fYm91bmRzLndpZHRoKCksIG1fYm91bmRzLmhlaWdodCgpKSk7CisgICAgICAgIHNl
dE5lZWRzRGlzcGxheShGbG9hdFJlY3QoMCwgMCwgYm91bmRzKCkud2lkdGgoKSwgYm91bmRzKCku
aGVpZ2h0KCkpKTsKICAgICBlbHNlCiAgICAgICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CkBAIC0y
MDcsNyArMTk1LDcgQEAgdm9pZCBMYXllckNocm9taXVtOjpzZXRGcmFtZShjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCiAgICAgICByZXR1cm47CiAKICAgICBtX2ZyYW1lID0gcmVjdDsKLSAgICBzZXRO
ZWVkc0Rpc3BsYXkoRmxvYXRSZWN0KDAsIDAsIG1fYm91bmRzLndpZHRoKCksIG1fYm91bmRzLmhl
aWdodCgpKSk7CisgICAgc2V0TmVlZHNEaXNwbGF5KEZsb2F0UmVjdCgwLCAwLCBib3VuZHMoKS53
aWR0aCgpLCBib3VuZHMoKS5oZWlnaHQoKSkpOwogfQogCiBjb25zdCBMYXllckNocm9taXVtKiBM
YXllckNocm9taXVtOjpyb290TGF5ZXIoKSBjb25zdApAQCAtMjU2LDcgKzI0NCw3IEBAIHZvaWQg
TGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNEaXNwbGF5KGNvbnN0IEZsb2F0UmVjdCYgZGlydHlSZWN0
KQogdm9pZCBMYXllckNocm9taXVtOjpzZXROZWVkc0Rpc3BsYXkoKQogewogICAgIG1fZGlydHlS
ZWN0LnNldExvY2F0aW9uKEZsb2F0UG9pbnQoKSk7Ci0gICAgbV9kaXJ0eVJlY3Quc2V0U2l6ZSht
X2JvdW5kcyk7CisgICAgbV9kaXJ0eVJlY3Quc2V0U2l6ZShib3VuZHMoKSk7CiAgICAgbV9jb250
ZW50c0RpcnR5ID0gdHJ1ZTsKICAgICBzZXROZWVkc0NvbW1pdCgpOwogfQpAQCAtMzE1LDM4ICsz
MDMsNyBAQCB2b2lkIExheWVyQ2hyb21pdW06OmRyYXdUZXh0dXJlZFF1YWQoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIGNvbnN0IFRyYW5zZm9ybQogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0
LT5kcmF3RWxlbWVudHMoR3JhcGhpY3NDb250ZXh0M0Q6OlRSSUFOR0xFUywgNiwgR3JhcGhpY3ND
b250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JULCAwKSk7CiB9CiAKLXZvaWQgTGF5ZXJDaHJvbWl1bTo6
ZHJhd0RlYnVnQm9yZGVyKCkKLXsKLSAgICBzdGF0aWMgZmxvYXQgZ2xNYXRyaXhbMTZdOwotICAg
IGlmICghYm9yZGVyQ29sb3IoKS5hbHBoYSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NF
UlQobGF5ZXJSZW5kZXJlcigpKTsKLSAgICBjb25zdCBCb3JkZXJQcm9ncmFtKiBwcm9ncmFtID0g
bGF5ZXJSZW5kZXJlcigpLT5ib3JkZXJQcm9ncmFtKCk7Ci0gICAgQVNTRVJUKHByb2dyYW0gJiYg
cHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSk7Ci0gICAgbGF5ZXJSZW5kZXJlcigpLT51c2VTaGFkZXIo
cHJvZ3JhbS0+cHJvZ3JhbSgpKTsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZW5kZXJNYXRy
aXggPSBkcmF3VHJhbnNmb3JtKCk7Ci0gICAgcmVuZGVyTWF0cml4LnNjYWxlM2QoYm91bmRzKCku
d2lkdGgoKSwgYm91bmRzKCkuaGVpZ2h0KCksIDEpOwotICAgIHRvR0xNYXRyaXgoJmdsTWF0cml4
WzBdLCBsYXllclJlbmRlcmVyKCktPnByb2plY3Rpb25NYXRyaXgoKSAqIHJlbmRlck1hdHJpeCk7
Ci0gICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRlcmVyQ29udGV4dCgp
OwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KHByb2dyYW0tPnZl
cnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCksIGZhbHNlLCAmZ2xNYXRyaXhbMF0sIDEpKTsK
IAotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtNGYocHJvZ3JhbS0+ZnJhZ21lbnRT
aGFkZXIoKS5jb2xvckxvY2F0aW9uKCksIGJvcmRlckNvbG9yKCkucmVkKCkgLyAyNTUuMCwgYm9y
ZGVyQ29sb3IoKS5ncmVlbigpIC8gMjU1LjAsIGJvcmRlckNvbG9yKCkuYmx1ZSgpIC8gMjU1LjAs
IDEpKTsKLQotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5saW5lV2lkdGgoYm9yZGVyV2lkdGgo
KSkpOwotCi0gICAgLy8gVGhlIGluZGljZXMgZm9yIHRoZSBsaW5lIGFyZSBzdG9yZWQgaW4gdGhl
IHNhbWUgYXJyYXkgYXMgdGhlIHRyaWFuZ2xlIGluZGljZXMuCi0gICAgR0xDKGNvbnRleHQsIGNv
bnRleHQtPmRyYXdFbGVtZW50cyhHcmFwaGljc0NvbnRleHQzRDo6TElORV9MT09QLCA0LCBHcmFw
aGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlQsIDYgKiBzaXplb2YodW5zaWduZWQgc2hvcnQp
KSk7Ci19Ci0KLWNvbnN0IEludFJlY3QgTGF5ZXJDaHJvbWl1bTo6Z2V0RHJhd1JlY3QoKSBjb25z
dAotewotICAgIC8vIEZvcm0gdGhlIG1hdHJpeCB1c2VkIGJ5IHRoZSBzaGFkZXIgdG8gbWFwIHRo
ZSBjb3JuZXJzIG9mIHRoZSBsYXllcidzCi0gICAgLy8gYm91bmRzIGludG8gdGhlIHZpZXcgc3Bh
Y2UuCi0gICAgRmxvYXRSZWN0IGxheWVyUmVjdCgtMC41ICogYm91bmRzKCkud2lkdGgoKSwgLTAu
NSAqIGJvdW5kcygpLmhlaWdodCgpLCBib3VuZHMoKS53aWR0aCgpLCBib3VuZHMoKS5oZWlnaHQo
KSk7Ci0gICAgSW50UmVjdCBtYXBwZWRSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChkcmF3VHJhbnNm
b3JtKCkubWFwUmVjdChsYXllclJlY3QpKTsKLSAgICByZXR1cm4gbWFwcGVkUmVjdDsKLX0KIAog
Ly8gUmV0dXJucyB0cnVlIGlmIGFueSBvZiB0aGUgbGF5ZXIncyBkZXNjZW5kYW50cyBoYXMgZHJh
d2FibGUgY29udGVudC4KIGJvb2wgTGF5ZXJDaHJvbWl1bTo6ZGVzY2VuZGFudHNEcmF3Q29udGVu
dCgpCkBAIC0zNzEsNSArMzI4LDQ4IEBAIGJvb2wgTGF5ZXJDaHJvbWl1bTo6ZGVzY2VuZGFudHNE
cmF3Q29udGVudFJlY3Vyc2l2ZSgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCisvLyBCZWdpbiBj
YWxscyB0aGF0IGZvcndhcmQgdG8gdGhlIENDTGF5ZXJJbXBsLgorLy8gPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gVGhlc2UgZXhpc3RzIGp1c3QgZm9y
IGRlYnVnZ2luZyAodmlhIGRyYXdEZWJ1Z0JvcmRlcigpKS4KK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6
c2V0Qm9yZGVyQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIG1fY2NMYXllckltcGwt
PnNldERlYnVnQm9yZGVyQ29sb3IoY29sb3IpOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisK
K0NvbG9yIExheWVyQ2hyb21pdW06OmJvcmRlckNvbG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9jY0xheWVySW1wbC0+ZGVidWdCb3JkZXJDb2xvcigpOworfQorCit2b2lkIExheWVyQ2hyb21p
dW06OnNldEJvcmRlcldpZHRoKGZsb2F0IHdpZHRoKQoreworICAgIG1fY2NMYXllckltcGwtPnNl
dERlYnVnQm9yZGVyV2lkdGgod2lkdGgpOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK2Zs
b2F0IExheWVyQ2hyb21pdW06OmJvcmRlcldpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9j
Y0xheWVySW1wbC0+ZGVidWdCb3JkZXJXaWR0aCgpOworfQorCitMYXllclJlbmRlcmVyQ2hyb21p
dW0qIExheWVyQ2hyb21pdW06OmxheWVyUmVuZGVyZXIoKSBjb25zdAoreworICAgIHJldHVybiBt
X2NjTGF5ZXJJbXBsLT5sYXllclJlbmRlcmVyKCk7Cit9CisKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6
c2V0RG91YmxlU2lkZWQoYm9vbCBkb3VibGVTaWRlZCkKK3sKKyAgICBtX2NjTGF5ZXJJbXBsLT5z
ZXREb3VibGVTaWRlZChkb3VibGVTaWRlZCk7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKwor
Y29uc3QgSW50U2l6ZSYgTGF5ZXJDaHJvbWl1bTo6Ym91bmRzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9jY0xheWVySW1wbC0+Ym91bmRzKCk7Cit9CisvLyA9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBFbmQgY2FsbHMgdGhhdCBmb3J3YXJkIHRvIHRo
ZSBDQ0xheWVySW1wbC4KKwogfQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCBjYzZhODExNWIzMWQyNWMwMTI0M2E4MmI3YjQ3YTQx
NTQ0ZWY1NWVkLi43MmVmNDBlMjdjMDA2NTc0M2M3YTk4YmI0NjkyN2I4OWJmYjNhMTcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNo
cm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5oCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiUmVuZGVyU3VyZmFj
ZUNocm9taXVtLmgiCiAjaW5jbHVkZSAiU2hhZGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJUcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oIgorCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTU1LDEz
ICs1NiwxNCBAQCBjbGFzcyBQbGF0Zm9ybUNhbnZhczsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgTGF5
ZXJSZW5kZXJlckNocm9taXVtOwogCiAvLyBCYXNlIGNsYXNzIGZvciBjb21wb3NpdGVkIGxheWVy
cy4gU3BlY2lhbCBsYXllciB0eXBlcyBhcmUgZGVyaXZlZCBmcm9tCiAvLyB0aGlzIGNsYXNzLgog
Y2xhc3MgTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBSZWZDb3VudGVkPExheWVyQ2hyb21pdW0+IHsK
LSAgICBmcmllbmQgY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtOworICAgIGZyaWVuZCBjbGFz
cyBMYXllclRpbGVyQ2hyb21pdW07CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gY3JlYXRlKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIgPSAwKTsKIApA
QCAtODYsMjEgKzg4LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNv
bnN0IENvbG9yJiBjb2xvcikgeyBtX2JhY2tncm91bmRDb2xvciA9IGNvbG9yOyBzZXROZWVkc0Nv
bW1pdCgpOyB9CiAgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9i
YWNrZ3JvdW5kQ29sb3I7IH0KIAotICAgIHZvaWQgc2V0Qm9yZGVyQ29sb3IoY29uc3QgQ29sb3Im
IGNvbG9yKSB7IG1fYm9yZGVyQ29sb3IgPSBjb2xvcjsgc2V0TmVlZHNDb21taXQoKTsgfQotICAg
IENvbG9yIGJvcmRlckNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9ib3JkZXJDb2xvcjsgfQotCi0g
ICAgdm9pZCBzZXRCb3JkZXJXaWR0aChmbG9hdCB3aWR0aCkgeyBtX2JvcmRlcldpZHRoID0gd2lk
dGg7IHNldE5lZWRzQ29tbWl0KCk7IH0KLSAgICBmbG9hdCBib3JkZXJXaWR0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fYm9yZGVyV2lkdGg7IH0KLQotICAgIHZvaWQgc2V0Qm91bmRzKGNvbnN0IEludFNp
emUmKTsKLSAgICBJbnRTaXplIGJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRzOyB9Ci0K
ICAgICB2b2lkIHNldENsZWFyc0NvbnRleHQoYm9vbCBjbGVhcnMpIHsgbV9jbGVhcnNDb250ZXh0
ID0gY2xlYXJzOyBzZXROZWVkc0NvbW1pdCgpOyB9CiAgICAgYm9vbCBjbGVhcnNDb250ZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV9jbGVhcnNDb250ZXh0OyB9CiAKLSAgICB2b2lkIHNldERvdWJsZVNp
ZGVkKGJvb2wgZG91YmxlU2lkZWQpIHsgbV9kb3VibGVTaWRlZCA9IGRvdWJsZVNpZGVkOyBzZXRO
ZWVkc0NvbW1pdCgpOyB9Ci0gICAgYm9vbCBkb3VibGVTaWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZG91YmxlU2lkZWQ7IH0KLQogICAgIHZvaWQgc2V0RnJhbWUoY29uc3QgRmxvYXRSZWN0Jik7CiAg
ICAgRmxvYXRSZWN0IGZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfQogCkBAIC0xMTQs
NiArMTA0LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9u
YW1lOyB9CiAKICAgICB2b2lkIHNldE1hc2tMYXllcihMYXllckNocm9taXVtKiBtYXNrTGF5ZXIp
IHsgbV9tYXNrTGF5ZXIgPSBtYXNrTGF5ZXI7IH0KKyAgICBDQ0xheWVySW1wbCogbWFza0RyYXdM
YXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbWFza0xheWVyID8gbV9tYXNrTGF5ZXItPmNjTGF5ZXJJ
bXBsKCkgOiAwOyB9CiAgICAgTGF5ZXJDaHJvbWl1bSogbWFza0xheWVyKCkgY29uc3QgeyByZXR1
cm4gbV9tYXNrTGF5ZXIuZ2V0KCk7IH0KIAogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KGNvbnN0
IEZsb2F0UmVjdCYgZGlydHlSZWN0KTsKQEAgLTE0NSwyMyArMTM2LDIwIEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldEdlb21ldHJ5RmxpcHBlZChib29sIGZsaXBwZWQpIHsgbV9nZW9tZXRyeUZsaXBw
ZWQgPSBmbGlwcGVkOyBzZXROZWVkc0NvbW1pdCgpOyB9CiAgICAgYm9vbCBnZW9tZXRyeUZsaXBw
ZWQoKSBjb25zdCB7IHJldHVybiBtX2dlb21ldHJ5RmxpcHBlZDsgfQogCi0gICAgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2RyYXdU
cmFuc2Zvcm07IH0KLSAgICBmbG9hdCBkcmF3T3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fZHJh
d09wYWNpdHk7IH0KLQogICAgIGJvb2wgcHJlc2VydmVzM0QoKSB7IHJldHVybiBtX293bmVyICYm
IG1fb3duZXItPnByZXNlcnZlczNEKCk7IH0KIAogICAgIC8vIERlcml2ZWQgdHlwZXMgbXVzdCBv
dmVycmlkZSB0aGlzIG1ldGhvZCBpZiB0aGV5IG5lZWQgdG8gcmVhY3QgdG8gYSBjaGFuZ2UKICAg
ICAvLyBpbiB0aGUgTGF5ZXJSZW5kZXJlckNocm9taXVtLgogICAgIHZpcnR1YWwgdm9pZCBzZXRM
YXllclJlbmRlcmVyKExheWVyUmVuZGVyZXJDaHJvbWl1bSopOwogCisgICAgLy8gUmV0dXJucyB0
cnVlIGlmIGFueSBvZiB0aGUgbGF5ZXIncyBkZXNjZW5kYW50cyBoYXMgY29udGVudCB0byBkcmF3
LgorICAgIGJvb2wgZGVzY2VuZGFudHNEcmF3Q29udGVudCgpOworCiAgICAgdm9pZCBzZXRPd25l
cihHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKSB7IG1fb3duZXIgPSBvd25lcjsgfQogCiAg
ICAgdm9pZCBzZXRSZXBsaWNhTGF5ZXIoTGF5ZXJDaHJvbWl1bSogbGF5ZXIpIHsgbV9yZXBsaWNh
TGF5ZXIgPSBsYXllcjsgfQogICAgIExheWVyQ2hyb21pdW0qIHJlcGxpY2FMYXllcigpIHsgcmV0
dXJuIG1fcmVwbGljYUxheWVyOyB9CiAKLSAgICAvLyBSZXR1cm5zIHRoZSByZWN0IGNvbnRhaW50
YWluaW5nIHRoaXMgbGF5ZXIgaW4gdGhlIGN1cnJlbnQgdmlldydzIGNvb3JkaW5hdGUgc3lzdGVt
LgotICAgIGNvbnN0IEludFJlY3QgZ2V0RHJhd1JlY3QoKSBjb25zdDsKLQogICAgIC8vIFRoZXNl
IG1ldGhvZHMgdHlwaWNhbGx5IG5lZWQgdG8gYmUgb3ZlcndyaXR0ZW4gYnkgZGVyaXZlZCBjbGFz
c2VzLgogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb250ZW50c0lmRGlydHkoKSB7IH0KQEAgLTE2OSwyMiAr
MTU3LDMyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmluZENvbnRlbnRzVGV4dHVyZSgp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkcmF3KCkgeyB9CiAKLSAgICB2b2lkIGRyYXdEZWJ1Z0Jv
cmRlcigpOworICAgIC8vIFRoZXNlIGV4aXN0cyBqdXN0IGZvciBkZWJ1Z2dpbmcgKHZpYSBkcmF3
RGVidWdCb3JkZXIoKSkuCisgICAgdm9pZCBzZXRCb3JkZXJDb2xvcihjb25zdCBDb2xvciYpOwor
ICAgIENvbG9yIGJvcmRlckNvbG9yKCkgY29uc3Q7CiAKLSAgICBSZW5kZXJTdXJmYWNlQ2hyb21p
dW0qIGNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKKyAgICB2b2lkIHNldEJvcmRlcldpZHRoKGZsb2F0
KTsKKyAgICBmbG9hdCBib3JkZXJXaWR0aCgpIGNvbnN0OwogCi0gICAgTGF5ZXJSZW5kZXJlckNo
cm9taXVtKiBsYXllclJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclJlbmRlcmVyLmdl
dCgpOyB9CisgICAgLy8gRXZlcnl0aGluZyBmcm9tIGhlcmUgZG93biBpbiB0aGUgcHVibGljIHNl
Y3Rpb24gd2lsbCBtb3ZlIHRvIENDTGF5ZXJJbXBsLgogCi0gICAgc3RhdGljIHZvaWQgdG9HTE1h
dHJpeChmbG9hdCosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CisgICAgQ0NMYXllcklt
cGwqIGNjTGF5ZXJJbXBsKCkgY29uc3QgeyByZXR1cm4gbV9jY0xheWVySW1wbC5nZXQoKTsgfQog
CiAgICAgc3RhdGljIHZvaWQgZHJhd1RleHR1cmVkUXVhZChHcmFwaGljc0NvbnRleHQzRCosIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwcm9qZWN0aW9uTWF0cml4LCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgbGF5ZXJNYXRyaXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBvcGFjaXR5LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1hdHJpeExvY2F0aW9uLCBpbnQgYWxwaGFMb2Nh
dGlvbik7CiAKKyAgICAvLyBCZWdpbiBjYWxscyB0aGF0IGZvcndhcmQgdG8gdGhlIENDTGF5ZXJJ
bXBsLgorICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcigpIGNvbnN0Owor
ICAgIHZvaWQgc2V0RG91YmxlU2lkZWQoYm9vbCk7CisgICAgdm9pZCBzZXRCb3VuZHMoY29uc3Qg
SW50U2l6ZSYpOworICAgIGNvbnN0IEludFNpemUmIGJvdW5kcygpIGNvbnN0OworICAgIC8vIEVu
ZCBjYWxscyB0aGF0IGZvcndhcmQgdG8gdGhlIENDTGF5ZXJJbXBsLgorCiAgICAgdHlwZWRlZiBQ
cm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3MsIEZyYWdtZW50U2hhZGVyQ29sb3I+IEJvcmRl
clByb2dyYW07CiBwcm90ZWN0ZWQ6CiAgICAgR3JhcGhpY3NMYXllckNocm9taXVtKiBtX293bmVy
OwotICAgIExheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcik7CisgICAg
ZXhwbGljaXQgTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKTsKIAog
ICAgIC8vIFRoaXMgaXMgY2FsbGVkIHRvIGNsZWFuIHVwIHJlc291cmNlcyBiZWluZyBoZWxkIGlu
IHRoZSBzYW1lIGNvbnRleHQgYXMKICAgICAvLyBsYXllclJlbmRlcmVyQ29udGV4dCgpLiBTdWJj
bGFzc2VzIHNob3VsZCBvdmVycmlkZSB0aGlzIG1ldGhvZCBpZiB0aGV5CkBAIC0xOTMsMjAgKzE5
MSwxOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICBHcmFwaGljc0NvbnRleHQzRCogbGF5ZXJSZW5kZXJl
ckNvbnRleHQoKSBjb25zdDsKIAotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgb2YgdGhlIGxh
eWVyJ3MgZGVzY2VuZGFudHMgaGFzIGNvbnRlbnQgdG8gZHJhdy4KLSAgICBib29sIGRlc2NlbmRh
bnRzRHJhd0NvbnRlbnQoKTsKKyAgICBzdGF0aWMgdm9pZCB0b0dMTWF0cml4KGZsb2F0KiwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKIAotICAgIEludFNpemUgbV9ib3VuZHM7CiAgICAg
RmxvYXRSZWN0IG1fZGlydHlSZWN0OwogICAgIGJvb2wgbV9jb250ZW50c0RpcnR5OwogCiAgICAg
UmVmUHRyPExheWVyQ2hyb21pdW0+IG1fbWFza0xheWVyOwogCi0gICAgLy8gUmVuZGVyIHN1cmZh
Y2UgdGhpcyBsYXllciBkcmF3cyBpbnRvLiBUaGlzIGlzIGEgc3VyZmFjZSB0aGF0IGNhbiBiZWxv
bmcKLSAgICAvLyBlaXRoZXIgdG8gdGhpcyBsYXllciAoaWYgbV90YXJnZXRSZW5kZXJTdXJmYWNl
ID09IG1fcmVuZGVyU3VyZmFjZSkgb3IKLSAgICAvLyB0byBhbiBhbmNlc3RvciBvZiB0aGlzIGxh
eWVyLiBUaGUgdGFyZ2V0IHJlbmRlciBzdXJmYWNlIGRldGVybWluZXMgdGhlCi0gICAgLy8gY29v
cmRpbmF0ZSBzeXN0ZW0gdGhlIGxheWVyJ3MgdHJhbnNmb3JtcyBhcmUgcmVsYXRpdmUgdG8uCi0g
ICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiBtX3RhcmdldFJlbmRlclN1cmZhY2U7CisgICAgLy8g
QWxsIGxheWVyIHNoYWRlcnMgc2hhcmUgdGhlIHNhbWUgYXR0cmlidXRlIGxvY2F0aW9ucyBmb3Ig
dGhlIHZlcnRleCBwb3NpdGlvbnMKKyAgICAvLyBhbmQgdGV4dHVyZSBjb29yZGluYXRlcy4gVGhp
cyBhbGxvd3Mgc3dpdGNoaW5nIHNoYWRlcnMgd2l0aG91dCByZWJpbmRpbmcgYXR0cmlidXRlCisg
ICAgLy8gYXJyYXlzLgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX3Bvc2l0aW9uQXR0cmli
TG9jYXRpb247CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfdGV4Q29vcmRBdHRyaWJMb2Nh
dGlvbjsKIAogcHJpdmF0ZToKICAgICB2b2lkIHNldE5lZWRzQ29tbWl0KCk7CkBAIC0yMzMsNDMg
KzIyOSwyMiBAQCBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQgbV9wb3NpdGlvbjsKICAgICBGbG9h
dFBvaW50IG1fYW5jaG9yUG9pbnQ7CiAgICAgQ29sb3IgbV9iYWNrZ3JvdW5kQ29sb3I7Ci0gICAg
Q29sb3IgbV9ib3JkZXJDb2xvcjsKICAgICBmbG9hdCBtX29wYWNpdHk7CiAgICAgZmxvYXQgbV96
UG9zaXRpb247CiAgICAgZmxvYXQgbV9hbmNob3JQb2ludFo7Ci0gICAgZmxvYXQgbV9ib3JkZXJX
aWR0aDsKLSAgICBmbG9hdCBtX2RyYXdPcGFjaXR5OwogICAgIGJvb2wgbV9jbGVhcnNDb250ZXh0
OwotICAgIGJvb2wgbV9kb3VibGVTaWRlZDsKICAgICBib29sIG1faGlkZGVuOwogICAgIGJvb2wg
bV9tYXNrc1RvQm91bmRzOwogICAgIGJvb2wgbV9vcGFxdWU7CiAgICAgYm9vbCBtX2dlb21ldHJ5
RmxpcHBlZDsKICAgICBib29sIG1fbmVlZHNEaXNwbGF5T25Cb3VuZHNDaGFuZ2U7CiAKLSAgICAv
LyBUaGUgZ2xvYmFsIGRlcHRoIHZhbHVlIG9mIHRoZSBjZW50ZXIgb2YgdGhlIGxheWVyLiBUaGlz
IHZhbHVlIGlzIHVzZWQKLSAgICAvLyB0byBzb3J0IGxheWVycyBmcm9tIGJhY2sgdG8gZnJvbnQu
Ci0gICAgZmxvYXQgbV9kcmF3RGVwdGg7Ci0KLSAgICAvLyBQb2ludHMgdG8gdGhlIGxheWVyIHJl
bmRlcmVyIHRoYXQgdXBkYXRlcyBhbmQgZHJhd3MgdGhpcyBsYXllci4KLSAgICBSZWZQdHI8TGF5
ZXJSZW5kZXJlckNocm9taXVtPiBtX2xheWVyUmVuZGVyZXI7Ci0KLSAgICBGbG9hdFJlY3QgbV9m
cmFtZTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3RyYW5zZm9ybTsKICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBtX3N1YmxheWVyVHJhbnNmb3JtOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IG1fZHJhd1RyYW5zZm9ybTsKLQotICAgIC8vIFRoZSBzY2lzc29yIHJlY3RhbmdsZSB0aGF0
IHNob3VsZCBiZSB1c2VkIHdoZW4gdGhpcyBsYXllciBpcyBkcmF3bi4KLSAgICAvLyBJbmhlcml0
ZWQgYnkgdGhlIHBhcmVudCBsYXllciBhbmQgZnVydGhlciByZXN0cmljdGVkIGlmIHRoaXMgbGF5
ZXIgbWFza3MKLSAgICAvLyB0byBib3VuZHMuCi0gICAgSW50UmVjdCBtX3NjaXNzb3JSZWN0Owog
Ci0gICAgLy8gUmVuZGVyIHN1cmZhY2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbGF5ZXIuIFRoZSBs
YXllciBhbmQgaXRzIGRlc2NlbmRhbnRzCi0gICAgLy8gd2lsbCByZW5kZXIgdG8gdGhpcyBzdXJm
YWNlLgotICAgIE93blB0cjxSZW5kZXJTdXJmYWNlQ2hyb21pdW0+IG1fcmVuZGVyU3VyZmFjZTsK
LQotICAgIC8vIEhpZXJhcmNoaWNhbCBib3VuZGluZyByZWN0IGNvbnRhaW5pbmcgdGhlIGxheWVy
IGFuZCBpdHMgZGVzY2VuZGFudHMuCi0gICAgSW50UmVjdCBtX2RyYXdhYmxlQ29udGVudFJlY3Q7
CisgICAgRmxvYXRSZWN0IG1fZnJhbWU7CisgICAgLy8gRm9yIG5vdywgdGhlIExheWVyQ2hyb21p
dW0gZGlyZWN0bHkgb3ducyBpdHMgQ0NMYXllckltcGwuCisgICAgUmVmUHRyPENDTGF5ZXJJbXBs
PiBtX2NjTGF5ZXJJbXBsOwogCiAgICAgLy8gUmVwbGljYSBsYXllciB1c2VkIGZvciByZWZsZWN0
aW9ucy4KICAgICBMYXllckNocm9taXVtKiBtX3JlcGxpY2FMYXllcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IGVmZTM1NDgyMGE5Mjg1Nzg1OGI0YTcwZDIxMDVk
MWYyMjg3OTJiMmEuLmMwNGRkMDgzYjQxMDliZWEyZDg0OGExN2ZmN2I1YmUxOWYyMDQ1YzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtNDIsNiArNDIsNyBAQAog
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIK
ICNpbmNsdWRlICJXZWJHTExheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJjYy9DQ0xheWVySW1w
bC5oIgogI2lmIFBMQVRGT1JNKFNLSUEpCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2VTa2lhLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgpAQCAtODMsOSArODQsOSBAQCBzdGF0aWMg
Ym9vbCBpc1NjYWxlT3JUcmFuc2xhdGlvbihjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbSkK
IAogfQogCi1ib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29tcGFyZUxheWVyWihjb25zdCBM
YXllckNocm9taXVtKiBhLCBjb25zdCBMYXllckNocm9taXVtKiBiKQorYm9vbCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OmNvbXBhcmVMYXllclooY29uc3QgQ0NMYXllckltcGwqIGEsIGNvbnN0IEND
TGF5ZXJJbXBsKiBiKQogewotICAgIHJldHVybiBhLT5tX2RyYXdEZXB0aCA8IGItPm1fZHJhd0Rl
cHRoOworICAgIHJldHVybiBhLT5kcmF3RGVwdGgoKSA8IGItPmRyYXdEZXB0aCgpOwogfQogCiBQ
YXNzUmVmUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpj
cmVhdGUoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkKQEAgLTIyMCw5ICsy
MjEsOSBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVycyhjb25zdCBJbnRS
ZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgSW50UmVjdAogICAgIGludCB2aXNpYmxlUmVjdFdpZHRo
ID0gdmlzaWJsZVJlY3Qud2lkdGgoKTsKICAgICBpbnQgdmlzaWJsZVJlY3RIZWlnaHQgPSB2aXNp
YmxlUmVjdC5oZWlnaHQoKTsKIAotICAgIGlmICghbV9yb290TGF5ZXItPm1fcmVuZGVyU3VyZmFj
ZSkKLSAgICAgICAgbV9yb290TGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBtX3Jv
b3RMYXllci0+bV9yZW5kZXJTdXJmYWNlLT5tX2NvbnRlbnRSZWN0ID0gSW50UmVjdCgwLCAwLCB2
aXNpYmxlUmVjdFdpZHRoLCB2aXNpYmxlUmVjdEhlaWdodCk7CisgICAgaWYgKCFtX3Jvb3RMYXll
ci0+Y2NMYXllckltcGwoKS0+cmVuZGVyU3VyZmFjZSgpKQorICAgICAgICBtX3Jvb3RMYXllci0+
Y2NMYXllckltcGwoKS0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOworICAgIG1fcm9vdExheWVyLT5j
Y0xheWVySW1wbCgpLT5yZW5kZXJTdXJmYWNlKCktPm1fY29udGVudFJlY3QgPSBJbnRSZWN0KDAs
IDAsIHZpc2libGVSZWN0V2lkdGgsIHZpc2libGVSZWN0SGVpZ2h0KTsKIAogICAgIGlmICh2aXNp
YmxlUmVjdFdpZHRoICE9IG1fcm9vdExheWVyVGV4dHVyZVdpZHRoIHx8IHZpc2libGVSZWN0SGVp
Z2h0ICE9IG1fcm9vdExheWVyVGV4dHVyZUhlaWdodCkgewogICAgICAgICBtX3Jvb3RMYXllclRl
eHR1cmVXaWR0aCA9IHZpc2libGVSZWN0V2lkdGg7CkBAIC0yNDgsOCArMjQ5LDggQEAgdm9pZCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnMoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJl
Y3QsIGNvbnN0IEludFJlY3QKIAogICAgIG1fc2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQb3NpdGlv
bjsKIAotICAgIEFTU0VSVChtX3Jvb3RMYXllci0+bV9yZW5kZXJTdXJmYWNlKTsKLSAgICBtX2Rl
ZmF1bHRSZW5kZXJTdXJmYWNlID0gbV9yb290TGF5ZXItPm1fcmVuZGVyU3VyZmFjZS5nZXQoKTsK
KyAgICBBU1NFUlQobV9yb290TGF5ZXItPmNjTGF5ZXJJbXBsKCktPnJlbmRlclN1cmZhY2UoKSk7
CisgICAgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZSA9IG1fcm9vdExheWVyLT5jY0xheWVySW1wbCgp
LT5yZW5kZXJTdXJmYWNlKCk7CiAKICAgICB1c2VSZW5kZXJTdXJmYWNlKG1fZGVmYXVsdFJlbmRl
clN1cmZhY2UpOwogCkBAIC0yNzksMTAgKzI4MCwxMCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6ZHJhd0xheWVycyhjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgSW50UmVj
dAogICAgIEludFJlY3Qgcm9vdFNjaXNzb3JSZWN0KGNvbnRlbnRSZWN0KTsKICAgICAvLyBUaGUg
c2Npc3NvclJlY3Qgc2hvdWxkIG5vdCBpbmNsdWRlIHRoZSBzY3JvbGwgb2Zmc2V0LgogICAgIHJv
b3RTY2lzc29yUmVjdC5tb3ZlKC1tX3Njcm9sbFBvc2l0aW9uLngoKSwgLW1fc2Nyb2xsUG9zaXRp
b24ueSgpKTsKLSAgICBtX3Jvb3RMYXllci0+bV9zY2lzc29yUmVjdCA9IHJvb3RTY2lzc29yUmVj
dDsKKyAgICBtX3Jvb3RMYXllci0+Y2NMYXllckltcGwoKS0+c2V0U2Npc3NvclJlY3Qocm9vdFNj
aXNzb3JSZWN0KTsKIAotICAgIFZlY3RvcjxMYXllckNocm9taXVtKj4gcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdDsKLSAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChtX3Jvb3RMYXllci5n
ZXQoKSk7CisgICAgVmVjdG9yPENDTGF5ZXJJbXBsKj4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsK
KyAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChtX3Jvb3RMYXllci0+Y2NMYXllcklt
cGwoKSk7CiAKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKICAgICBt
X2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5tX2xheWVyTGlzdC5jbGVhcigpOwpAQCAtMjk4LDI2ICsy
OTksMjYgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnMoY29uc3QgSW50
UmVjdCYgdmlzaWJsZVJlY3QsIGNvbnN0IEludFJlY3QKICAgICAvLyBiYWNrIHRvIGZyb250IHRv
IGd1YXJhbnRlZSB0aGF0IG5lc3RlZCByZW5kZXIgc3VyZmFjZXMgZ2V0IHJlbmRlcmVkIGluIHRo
ZQogICAgIC8vIGNvcnJlY3Qgb3JkZXIuCiAgICAgZm9yIChpbnQgc3VyZmFjZUluZGV4ID0gcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdC5zaXplKCkgLSAxOyBzdXJmYWNlSW5kZXggPj0gMCA7IC0tc3Vy
ZmFjZUluZGV4KSB7Ci0gICAgICAgIExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllciA9
IHJlbmRlclN1cmZhY2VMYXllckxpc3Rbc3VyZmFjZUluZGV4XTsKLSAgICAgICAgQVNTRVJUKHJl
bmRlclN1cmZhY2VMYXllci0+bV9yZW5kZXJTdXJmYWNlKTsKKyAgICAgICAgQ0NMYXllckltcGwq
IHJlbmRlclN1cmZhY2VMYXllciA9IHJlbmRlclN1cmZhY2VMYXllckxpc3Rbc3VyZmFjZUluZGV4
XTsKKyAgICAgICAgQVNTRVJUKHJlbmRlclN1cmZhY2VMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsK
IAogICAgICAgICAvLyBSZW5kZXIgc3VyZmFjZXMgd2hvc2UgZHJhd2FibGUgYXJlYSBoYXMgemVy
byB3aWR0aCBvciBoZWlnaHQKICAgICAgICAgLy8gd2lsbCBoYXZlIG5vIGxheWVycyBhc3NvY2lh
dGVkIHdpdGggdGhlbSBhbmQgc2hvdWxkIGJlIHNraXBwZWQuCi0gICAgICAgIGlmICghcmVuZGVy
U3VyZmFjZUxheWVyLT5tX3JlbmRlclN1cmZhY2UtPm1fbGF5ZXJMaXN0LnNpemUoKSkKKyAgICAg
ICAgaWYgKCFyZW5kZXJTdXJmYWNlTGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+bV9sYXllckxpc3Qu
c2l6ZSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKHVzZVJlbmRlclN1
cmZhY2UocmVuZGVyU3VyZmFjZUxheWVyLT5tX3JlbmRlclN1cmZhY2UuZ2V0KCkpKSB7Ci0gICAg
ICAgICAgICBpZiAocmVuZGVyU3VyZmFjZUxheWVyICE9IG1fcm9vdExheWVyKSB7CisgICAgICAg
IGlmICh1c2VSZW5kZXJTdXJmYWNlKHJlbmRlclN1cmZhY2VMYXllci0+cmVuZGVyU3VyZmFjZSgp
KSkgeworICAgICAgICAgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllciAhPSBtX3Jvb3RMYXllci0+
Y2NMYXllckltcGwoKSkgewogICAgICAgICAgICAgICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1f
Y29udGV4dC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKSk7CiAgICAg
ICAgICAgICAgICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT5jbGVhckNvbG9yKDAs
IDAsIDAsIDApKTsKICAgICAgICAgICAgICAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRl
eHQtPmNsZWFyKEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklUKSk7CiAgICAgICAg
ICAgICAgICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT5lbmFibGUoR3JhcGhpY3ND
b250ZXh0M0Q6OlNDSVNTT1JfVEVTVCkpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBW
ZWN0b3I8TGF5ZXJDaHJvbWl1bSo+JiBsYXllckxpc3QgPSByZW5kZXJTdXJmYWNlTGF5ZXItPm1f
cmVuZGVyU3VyZmFjZS0+bV9sYXllckxpc3Q7CisgICAgICAgICAgICBWZWN0b3I8Q0NMYXllcklt
cGwqPiYgbGF5ZXJMaXN0ID0gcmVuZGVyU3VyZmFjZUxheWVyLT5yZW5kZXJTdXJmYWNlKCktPm1f
bGF5ZXJMaXN0OwogICAgICAgICAgICAgQVNTRVJUKGxheWVyTGlzdC5zaXplKCkpOwogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBsYXllckluZGV4ID0gMDsgbGF5ZXJJbmRleCA8IGxheWVyTGlz
dC5zaXplKCk7ICsrbGF5ZXJJbmRleCkKLSAgICAgICAgICAgICAgICBkcmF3TGF5ZXIobGF5ZXJM
aXN0W2xheWVySW5kZXhdLCByZW5kZXJTdXJmYWNlTGF5ZXItPm1fcmVuZGVyU3VyZmFjZS5nZXQo
KSk7CisgICAgICAgICAgICAgICAgZHJhd0xheWVyKGxheWVyTGlzdFtsYXllckluZGV4XSwgcmVu
ZGVyU3VyZmFjZUxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwogICAgICAgICB9CiAgICAgfQogCkBA
IC00MDcsOSArNDA4LDEwIEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppc0xheWVyVmlz
aWJsZShMYXllckNocm9taXVtKiBsYXllciwgY29uc3QgVHJhbnNmb3JtCiAKIC8vIFJlY3Vyc2l2
ZWx5IHdhbGtzIHRoZSBsYXllciB0cmVlIHN0YXJ0aW5nIGF0IHRoZSBnaXZlbiBub2RlIGFuZCBj
b21wdXRlcyBhbGwgdGhlCiAvLyBuZWNlc3NhcnkgdHJhbnNmb3JtYXRpb25zLCBzY2lzc29yIHJl
Y3RhbmdsZXMsIHJlbmRlciBzdXJmYWNlcywgZXRjLgotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OnVwZGF0ZUxheWVyc1JlY3Vyc2l2ZShMYXllckNocm9taXVtKiBsYXllciwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHBhcmVudE1hdHJpeCwgVmVjdG9yPExheWVyQ2hyb21pdW0qPiYg
cmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgVmVjdG9yPExheWVyQ2hyb21pdW0qPiYgbGF5ZXJMaXN0
KQordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVwZGF0ZUxheWVyc1JlY3Vyc2l2ZShMYXll
ckNocm9taXVtKiBsYXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhcmVudE1hdHJp
eCwgVmVjdG9yPENDTGF5ZXJJbXBsKj4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIFZlY3RvcjxD
Q0xheWVySW1wbCo+JiBsYXllckxpc3QpCiB7CiAgICAgbGF5ZXItPnNldExheWVyUmVuZGVyZXIo
dGhpcyk7CisgICAgQ0NMYXllckltcGwqIGRyYXdMYXllciA9IGxheWVyLT5jY0xheWVySW1wbCgp
OwogCiAgICAgLy8gQ29tcHV0ZSB0aGUgbmV3IG1hdHJpeCB0cmFuc2Zvcm1hdGlvbiB0aGF0IHdp
bGwgYmUgYXBwbGllZCB0byB0aGlzIGxheWVyIGFuZAogICAgIC8vIGFsbCBpdHMgc3VibGF5ZXJz
LiBJdCdzIGltcG9ydGFudCB0byByZW1lbWJlciB0aGF0IHRoZSBsYXllcidzIHBvc2l0aW9uCkBA
IC00NjYsMjEgKzQ2OCwyMiBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlTGF5
ZXJzUmVjdXJzaXZlKExheWVyQ2hyb21pdW0qIGxheWVyLCBjb25zdCBUcgogICAgIGJvb2wgdXNl
U3VyZmFjZUZvclJlZmxlY3Rpb24gPSBsYXllci0+cmVwbGljYUxheWVyKCk7CiAgICAgaWYgKCgo
dXNlU3VyZmFjZUZvckNsaXBwaW5nIHx8IHVzZVN1cmZhY2VGb3JPcGFjaXR5KSAmJiBsYXllci0+
ZGVzY2VuZGFudHNEcmF3Q29udGVudCgpKQogICAgICAgICB8fCB1c2VTdXJmYWNlRm9yTWFza2lu
ZyB8fCB1c2VTdXJmYWNlRm9yUmVmbGVjdGlvbikgewotICAgICAgICBSZW5kZXJTdXJmYWNlQ2hy
b21pdW0qIHJlbmRlclN1cmZhY2UgPSBsYXllci0+bV9yZW5kZXJTdXJmYWNlLmdldCgpOworICAg
ICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJlbmRlclN1cmZhY2UgPSBkcmF3TGF5ZXItPnJl
bmRlclN1cmZhY2UoKTsKICAgICAgICAgaWYgKCFyZW5kZXJTdXJmYWNlKQotICAgICAgICAgICAg
cmVuZGVyU3VyZmFjZSA9IGxheWVyLT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CisgICAgICAgICAg
ICByZW5kZXJTdXJmYWNlID0gZHJhd0xheWVyLT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CiAKICAg
ICAgICAgLy8gVGhlIG9yaWdpbiBvZiB0aGUgbmV3IHN1cmZhY2UgaXMgdGhlIHVwcGVyIGxlZnQg
Y29ybmVyIG9mIHRoZSBsYXllci4KLSAgICAgICAgbGF5ZXItPm1fZHJhd1RyYW5zZm9ybSA9IFRy
YW5zZm9ybWF0aW9uTWF0cml4KCk7Ci0gICAgICAgIGxheWVyLT5tX2RyYXdUcmFuc2Zvcm0udHJh
bnNsYXRlM2QoMC41ICogYm91bmRzLndpZHRoKCksIDAuNSAqIGJvdW5kcy5oZWlnaHQoKSwgMCk7
CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGRyYXdUcmFuc2Zvcm07OworICAgICAgICBk
cmF3VHJhbnNmb3JtLnRyYW5zbGF0ZTNkKDAuNSAqIGJvdW5kcy53aWR0aCgpLCAwLjUgKiBib3Vu
ZHMuaGVpZ2h0KCksIDApOworICAgICAgICBkcmF3TGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oZHJh
d1RyYW5zZm9ybSk7CiAKICAgICAgICAgdHJhbnNmb3JtZWRMYXllclJlY3QgPSBJbnRSZWN0KDAs
IDAsIGJvdW5kcy53aWR0aCgpLCBib3VuZHMuaGVpZ2h0KCkpOwogCiAgICAgICAgIC8vIExheWVy
J3Mgb3BhY2l0eSB3aWxsIGJlIGFwcGxpZWQgd2hlbiBkcmF3aW5nIHRoZSByZW5kZXIgc3VyZmFj
ZS4KICAgICAgICAgcmVuZGVyU3VyZmFjZS0+bV9kcmF3T3BhY2l0eSA9IGxheWVyLT5vcGFjaXR5
KCk7CiAgICAgICAgIGlmIChsYXllci0+c3VwZXJsYXllcigpLT5wcmVzZXJ2ZXMzRCgpKQotICAg
ICAgICAgICAgcmVuZGVyU3VyZmFjZS0+bV9kcmF3T3BhY2l0eSAqPSBsYXllci0+c3VwZXJsYXll
cigpLT5kcmF3T3BhY2l0eSgpOwotICAgICAgICBsYXllci0+bV9kcmF3T3BhY2l0eSA9IDE7Cisg
ICAgICAgICAgICByZW5kZXJTdXJmYWNlLT5tX2RyYXdPcGFjaXR5ICo9IGRyYXdMYXllci0+c3Vw
ZXJsYXllcigpLT5kcmF3T3BhY2l0eSgpOworICAgICAgICBkcmF3TGF5ZXItPnNldERyYXdPcGFj
aXR5KDEpOwogCiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyT3JpZ2luVHJhbnNm
b3JtID0gY29tYmluZWRUcmFuc2Zvcm07CiAgICAgICAgIGxheWVyT3JpZ2luVHJhbnNmb3JtLnRy
YW5zbGF0ZTNkKC0wLjUgKiBib3VuZHMud2lkdGgoKSwgLTAuNSAqIGJvdW5kcy5oZWlnaHQoKSwg
MCk7CkBAIC00ODgsNjkgKzQ5MSw3MiBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBk
YXRlTGF5ZXJzUmVjdXJzaXZlKExheWVyQ2hyb21pdW0qIGxheWVyLCBjb25zdCBUcgogICAgICAg
ICBpZiAobGF5ZXJPcmlnaW5UcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkgJiYgbGF5ZXItPnN1cGVy
bGF5ZXIoKSkgewogICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGFyZW50VG9MYXll
ciA9IGxheWVyT3JpZ2luVHJhbnNmb3JtLmludmVyc2UoKTsKIAotICAgICAgICAgICAgbGF5ZXIt
Pm1fc2Npc3NvclJlY3QgPSBwYXJlbnRUb0xheWVyLm1hcFJlY3QobGF5ZXItPnN1cGVybGF5ZXIo
KS0+bV9zY2lzc29yUmVjdCk7CisgICAgICAgICAgICBkcmF3TGF5ZXItPnNldFNjaXNzb3JSZWN0
KHBhcmVudFRvTGF5ZXIubWFwUmVjdChkcmF3TGF5ZXItPnN1cGVybGF5ZXIoKS0+c2Npc3NvclJl
Y3QoKSkpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGxheWVyLT5tX3NjaXNzb3JSZWN0
ID0gSW50UmVjdCgpOworICAgICAgICAgICAgZHJhd0xheWVyLT5zZXRTY2lzc29yUmVjdChJbnRS
ZWN0KCkpOwogCiAgICAgICAgIC8vIFRoZSByZW5kZXIgc3VyZmFjZSBzY2lzc29yIHJlY3QgaXMg
dGhlIHNjaXNzb3IgcmVjdCB0aGF0IG5lZWRzIHRvCiAgICAgICAgIC8vIGJlIGFwcGxpZWQgYmVm
b3JlIGRyYXdpbmcgdGhlIHJlbmRlciBzdXJmYWNlIG9udG8gaXRzIGNvbnRhaW5pbmcKICAgICAg
ICAgLy8gc3VyZmFjZSBhbmQgaXMgdGhlcmVmb3JlIGV4cHJlc3NlZCBpbiB0aGUgc3VwZXJsYXll
cidzIGNvb3JkaW5hdGUgc3lzdGVtLgotICAgICAgICByZW5kZXJTdXJmYWNlLT5tX3NjaXNzb3JS
ZWN0ID0gbGF5ZXItPnN1cGVybGF5ZXIoKS0+bV9zY2lzc29yUmVjdDsKKyAgICAgICAgcmVuZGVy
U3VyZmFjZS0+bV9zY2lzc29yUmVjdCA9IGRyYXdMYXllci0+c3VwZXJsYXllcigpLT5zY2lzc29y
UmVjdCgpOwogCiAgICAgICAgIHJlbmRlclN1cmZhY2UtPm1fbGF5ZXJMaXN0LmNsZWFyKCk7CiAK
LSAgICAgICAgaWYgKGxheWVyLT5tYXNrTGF5ZXIoKSkgewotICAgICAgICAgICAgcmVuZGVyU3Vy
ZmFjZS0+bV9tYXNrTGF5ZXIgPSBsYXllci0+bWFza0xheWVyKCk7Ci0gICAgICAgICAgICBsYXll
ci0+bWFza0xheWVyKCktPnNldExheWVyUmVuZGVyZXIodGhpcyk7Ci0gICAgICAgICAgICBsYXll
ci0+bWFza0xheWVyKCktPm1fdGFyZ2V0UmVuZGVyU3VyZmFjZSA9IHJlbmRlclN1cmZhY2U7Cisg
ICAgICAgIGlmIChsYXllci0+bWFza0RyYXdMYXllcigpKSB7CisgICAgICAgICAgICByZW5kZXJT
dXJmYWNlLT5tX21hc2tMYXllciA9IGxheWVyLT5tYXNrRHJhd0xheWVyKCk7CisgICAgICAgICAg
ICBsYXllci0+bWFza0RyYXdMYXllcigpLT5zZXRMYXllclJlbmRlcmVyKHRoaXMpOworICAgICAg
ICAgICAgbGF5ZXItPm1hc2tEcmF3TGF5ZXIoKS0+c2V0VGFyZ2V0UmVuZGVyU3VyZmFjZShyZW5k
ZXJTdXJmYWNlKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZW5kZXJTdXJmYWNlLT5t
X21hc2tMYXllciA9IDA7CiAKLSAgICAgICAgaWYgKGxheWVyLT5yZXBsaWNhTGF5ZXIoKSAmJiBs
YXllci0+cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigpKSB7Ci0gICAgICAgICAgICBsYXllci0+
cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigpLT5zZXRMYXllclJlbmRlcmVyKHRoaXMpOwotICAg
ICAgICAgICAgbGF5ZXItPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5ZXIoKS0+bV90YXJnZXRSZW5k
ZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFjZTsKKyAgICAgICAgaWYgKGxheWVyLT5yZXBsaWNhTGF5
ZXIoKSAmJiBsYXllci0+cmVwbGljYUxheWVyKCktPm1hc2tEcmF3TGF5ZXIoKSkgeworICAgICAg
ICAgICAgbGF5ZXItPnJlcGxpY2FMYXllcigpLT5tYXNrRHJhd0xheWVyKCktPnNldExheWVyUmVu
ZGVyZXIodGhpcyk7CisgICAgICAgICAgICBsYXllci0+cmVwbGljYUxheWVyKCktPm1hc2tEcmF3
TGF5ZXIoKS0+c2V0VGFyZ2V0UmVuZGVyU3VyZmFjZShyZW5kZXJTdXJmYWNlKTsKICAgICAgICAg
fQogCi0gICAgICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKGxheWVyKTsKKyAgICAg
ICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQoZHJhd0xheWVyKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICAvLyBEVCA9IE1bcF0gKiBMVAotICAgICAgICBsYXllci0+bV9kcmF3VHJhbnNm
b3JtID0gY29tYmluZWRUcmFuc2Zvcm07Ci0gICAgICAgIHRyYW5zZm9ybWVkTGF5ZXJSZWN0ID0g
ZW5jbG9zaW5nSW50UmVjdChsYXllci0+bV9kcmF3VHJhbnNmb3JtLm1hcFJlY3QobGF5ZXJSZWN0
KSk7CisgICAgICAgIGRyYXdMYXllci0+c2V0RHJhd1RyYW5zZm9ybShjb21iaW5lZFRyYW5zZm9y
bSk7CisgICAgICAgIHRyYW5zZm9ybWVkTGF5ZXJSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChkcmF3
TGF5ZXItPmRyYXdUcmFuc2Zvcm0oKS5tYXBSZWN0KGxheWVyUmVjdCkpOwogCi0gICAgICAgIGxh
eWVyLT5tX2RyYXdPcGFjaXR5ID0gbGF5ZXItPm9wYWNpdHkoKTsKKyAgICAgICAgZHJhd0xheWVy
LT5zZXREcmF3T3BhY2l0eShsYXllci0+b3BhY2l0eSgpKTsKIAogICAgICAgICBpZiAobGF5ZXIt
PnN1cGVybGF5ZXIoKSkgewogICAgICAgICAgICAgaWYgKGxheWVyLT5zdXBlcmxheWVyKCktPnBy
ZXNlcnZlczNEKCkpCi0gICAgICAgICAgICAgICBsYXllci0+bV9kcmF3T3BhY2l0eSAqPSBsYXll
ci0+c3VwZXJsYXllcigpLT5tX2RyYXdPcGFjaXR5OworICAgICAgICAgICAgICAgZHJhd0xheWVy
LT5zZXREcmF3T3BhY2l0eShkcmF3TGF5ZXItPmRyYXdPcGFjaXR5KCkgKiBkcmF3TGF5ZXItPnN1
cGVybGF5ZXIoKS0+ZHJhd09wYWNpdHkoKSk7CiAKICAgICAgICAgICAgIC8vIExheWVycyBpbmhl
cml0IHRoZSBzY2lzc29yIHJlY3QgZnJvbSB0aGVpciBzdXBlcmxheWVyLgotICAgICAgICAgICAg
bGF5ZXItPm1fc2Npc3NvclJlY3QgPSBsYXllci0+c3VwZXJsYXllcigpLT5tX3NjaXNzb3JSZWN0
OworICAgICAgICAgICAgZHJhd0xheWVyLT5zZXRTY2lzc29yUmVjdChkcmF3TGF5ZXItPnN1cGVy
bGF5ZXIoKS0+c2Npc3NvclJlY3QoKSk7CiAKLSAgICAgICAgICAgIGxheWVyLT5tX3RhcmdldFJl
bmRlclN1cmZhY2UgPSBsYXllci0+c3VwZXJsYXllcigpLT5tX3RhcmdldFJlbmRlclN1cmZhY2U7
CisgICAgICAgICAgICBkcmF3TGF5ZXItPnNldFRhcmdldFJlbmRlclN1cmZhY2UoZHJhd0xheWVy
LT5zdXBlcmxheWVyKCktPnRhcmdldFJlbmRlclN1cmZhY2UoKSk7CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAobGF5ZXIgIT0gbV9yb290TGF5ZXIpCi0gICAgICAgICAgICBsYXllci0+bV9yZW5k
ZXJTdXJmYWNlID0gMDsKKyAgICAgICAgICAgIGRyYXdMYXllci0+Y2xlYXJSZW5kZXJTdXJmYWNl
KCk7CiAKLSAgICAgICAgaWYgKGxheWVyLT5tYXNrc1RvQm91bmRzKCkpCi0gICAgICAgICAgICBs
YXllci0+bV9zY2lzc29yUmVjdC5pbnRlcnNlY3QodHJhbnNmb3JtZWRMYXllclJlY3QpOworICAg
ICAgICBpZiAobGF5ZXItPm1hc2tzVG9Cb3VuZHMoKSkgeworICAgICAgICAgICAgSW50UmVjdCBz
Y2lzc29yID0gZHJhd0xheWVyLT5zY2lzc29yUmVjdCgpOworICAgICAgICAgICAgc2Npc3Nvci5p
bnRlcnNlY3QodHJhbnNmb3JtZWRMYXllclJlY3QpOworICAgICAgICAgICAgZHJhd0xheWVyLT5z
ZXRTY2lzc29yUmVjdChzY2lzc29yKTsKKyAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChsYXll
ci0+bV9yZW5kZXJTdXJmYWNlKQotICAgICAgICBsYXllci0+bV90YXJnZXRSZW5kZXJTdXJmYWNl
ID0gbGF5ZXItPm1fcmVuZGVyU3VyZmFjZS5nZXQoKTsKKyAgICBpZiAoZHJhd0xheWVyLT5yZW5k
ZXJTdXJmYWNlKCkpCisgICAgICAgIGRyYXdMYXllci0+c2V0VGFyZ2V0UmVuZGVyU3VyZmFjZShk
cmF3TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVChs
YXllci0+c3VwZXJsYXllcigpKTsKLSAgICAgICAgbGF5ZXItPm1fdGFyZ2V0UmVuZGVyU3VyZmFj
ZSA9IGxheWVyLT5zdXBlcmxheWVyKCktPm1fdGFyZ2V0UmVuZGVyU3VyZmFjZTsKKyAgICAgICAg
ZHJhd0xheWVyLT5zZXRUYXJnZXRSZW5kZXJTdXJmYWNlKGRyYXdMYXllci0+c3VwZXJsYXllcigp
LT50YXJnZXRSZW5kZXJTdXJmYWNlKCkpOwogICAgIH0KIAogICAgIC8vIG1fZHJhd2FibGVDb250
ZW50UmVjdCBpcyBhbHdheXMgc3RvcmVkIGluIHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiB0aGUK
ICAgICAvLyBSZW5kZXJTdXJmYWNlIHRoZSBsYXllciBkcmF3cyBpbnRvLgotICAgIGlmIChsYXll
ci0+ZHJhd3NDb250ZW50KCkpCi0gICAgICAgIGxheWVyLT5tX2RyYXdhYmxlQ29udGVudFJlY3Qg
PSB0cmFuc2Zvcm1lZExheWVyUmVjdDsKKyAgICBpZiAoZHJhd0xheWVyLT5kcmF3c0NvbnRlbnQo
KSkKKyAgICAgICAgZHJhd0xheWVyLT5zZXREcmF3YWJsZUNvbnRlbnRSZWN0KHRyYW5zZm9ybWVk
TGF5ZXJSZWN0KTsKICAgICBlbHNlCi0gICAgICAgIGxheWVyLT5tX2RyYXdhYmxlQ29udGVudFJl
Y3QgPSBJbnRSZWN0KCk7CisgICAgICAgIGRyYXdMYXllci0+c2V0RHJhd2FibGVDb250ZW50UmVj
dChJbnRSZWN0KCkpOwogCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggc3VibGF5ZXJNYXRyaXgg
PSBsYXllci0+bV9kcmF3VHJhbnNmb3JtOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHN1Ymxh
eWVyTWF0cml4ID0gZHJhd0xheWVyLT5kcmF3VHJhbnNmb3JtKCk7CiAKICAgICAvLyBGbGF0dGVu
IHRvIDJEIGlmIHRoZSBsYXllciBkb2Vzbid0IHByZXNlcnZlIDNELgogICAgIGlmICghbGF5ZXIt
PnByZXNlcnZlczNEKCkpIHsKQEAgLTU3MSwyOSArNTc3LDM3IEBAIHZvaWQgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjp1cGRhdGVMYXllcnNSZWN1cnNpdmUoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIGNv
bnN0IFRyCiAgICAgLy8gTVtzXSA9IE0gKiBUclstY2VudGVyXQogICAgIHN1YmxheWVyTWF0cml4
LnRyYW5zbGF0ZTNkKC1ib3VuZHMud2lkdGgoKSAqIDAuNSwgLWJvdW5kcy5oZWlnaHQoKSAqIDAu
NSwgMCk7CiAKLSAgICBWZWN0b3I8TGF5ZXJDaHJvbWl1bSo+JiBkZXNjZW5kYW50cyA9IChsYXll
ci0+bV9yZW5kZXJTdXJmYWNlID8gbGF5ZXItPm1fcmVuZGVyU3VyZmFjZS0+bV9sYXllckxpc3Qg
OiBsYXllckxpc3QpOwotICAgIGRlc2NlbmRhbnRzLmFwcGVuZChsYXllcik7CisgICAgVmVjdG9y
PENDTGF5ZXJJbXBsKj4mIGRlc2NlbmRhbnRzID0gKGRyYXdMYXllci0+cmVuZGVyU3VyZmFjZSgp
ID8gZHJhd0xheWVyLT5yZW5kZXJTdXJmYWNlKCktPm1fbGF5ZXJMaXN0IDogbGF5ZXJMaXN0KTsK
KyAgICBkZXNjZW5kYW50cy5hcHBlbmQoZHJhd0xheWVyKTsKICAgICB1bnNpZ25lZCB0aGlzTGF5
ZXJJbmRleCA9IGRlc2NlbmRhbnRzLnNpemUoKSAtIDE7CiAKICAgICBjb25zdCBWZWN0b3I8UmVm
UHRyPExheWVyQ2hyb21pdW0+ID4mIHN1YmxheWVycyA9IGxheWVyLT5nZXRTdWJsYXllcnMoKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN1YmxheWVycy5zaXplKCk7ICsraSkgewotICAg
ICAgICBMYXllckNocm9taXVtKiBzdWJsYXllciA9IHN1YmxheWVyc1tpXS5nZXQoKTsKLSAgICAg
ICAgdXBkYXRlTGF5ZXJzUmVjdXJzaXZlKHN1YmxheWVyLCBzdWJsYXllck1hdHJpeCwgcmVuZGVy
U3VyZmFjZUxheWVyTGlzdCwgZGVzY2VuZGFudHMpOwotCi0gICAgICAgIGlmIChzdWJsYXllci0+
bV9yZW5kZXJTdXJmYWNlKSB7Ci0gICAgICAgICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHN1
YmxheWVyUmVuZGVyU3VyZmFjZSA9IHN1YmxheWVyLT5tX3JlbmRlclN1cmZhY2UuZ2V0KCk7Ci0g
ICAgICAgICAgICBsYXllci0+bV9kcmF3YWJsZUNvbnRlbnRSZWN0LnVuaXRlKGVuY2xvc2luZ0lu
dFJlY3Qoc3VibGF5ZXJSZW5kZXJTdXJmYWNlLT5kcmF3YWJsZUNvbnRlbnRSZWN0KCkpKTsKKyAg
ICAgICAgQ0NMYXllckltcGwqIHN1YmxheWVyID0gc3VibGF5ZXJzW2ldLT5jY0xheWVySW1wbCgp
OworICAgICAgICB1cGRhdGVMYXllcnNSZWN1cnNpdmUoc3VibGF5ZXJzW2ldLmdldCgpLCBzdWJs
YXllck1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZGVzY2VuZGFudHMpOworCisgICAg
ICAgIGlmIChzdWJsYXllci0+cmVuZGVyU3VyZmFjZSgpKSB7CisgICAgICAgICAgICBSZW5kZXJT
dXJmYWNlQ2hyb21pdW0qIHN1YmxheWVyUmVuZGVyU3VyZmFjZSA9IHN1YmxheWVyLT5yZW5kZXJT
dXJmYWNlKCk7CisgICAgICAgICAgICBJbnRSZWN0IGRyYXdhYmxlQ29udGVudFJlY3QgPSBkcmF3
TGF5ZXItPmRyYXdhYmxlQ29udGVudFJlY3QoKTsKKyAgICAgICAgICAgIGRyYXdhYmxlQ29udGVu
dFJlY3QudW5pdGUoZW5jbG9zaW5nSW50UmVjdChzdWJsYXllclJlbmRlclN1cmZhY2UtPmRyYXdh
YmxlQ29udGVudFJlY3QoKSkpOworICAgICAgICAgICAgZHJhd0xheWVyLT5zZXREcmF3YWJsZUNv
bnRlbnRSZWN0KGRyYXdhYmxlQ29udGVudFJlY3QpOwogICAgICAgICAgICAgZGVzY2VuZGFudHMu
YXBwZW5kKHN1YmxheWVyKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBsYXllci0+bV9k
cmF3YWJsZUNvbnRlbnRSZWN0LnVuaXRlKHN1YmxheWVyLT5tX2RyYXdhYmxlQ29udGVudFJlY3Qp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgSW50UmVjdCBkcmF3YWJsZUNvbnRlbnRS
ZWN0ID0gZHJhd0xheWVyLT5kcmF3YWJsZUNvbnRlbnRSZWN0KCk7CisgICAgICAgICAgICBkcmF3
YWJsZUNvbnRlbnRSZWN0LnVuaXRlKHN1YmxheWVyLT5kcmF3YWJsZUNvbnRlbnRSZWN0KCkpOwor
ICAgICAgICAgICAgZHJhd0xheWVyLT5zZXREcmF3YWJsZUNvbnRlbnRSZWN0KGRyYXdhYmxlQ29u
dGVudFJlY3QpOworICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGxheWVyLT5tYXNrc1RvQm91
bmRzKCkgfHwgdXNlU3VyZmFjZUZvck1hc2tpbmcpCi0gICAgICAgIGxheWVyLT5tX2RyYXdhYmxl
Q29udGVudFJlY3QuaW50ZXJzZWN0KHRyYW5zZm9ybWVkTGF5ZXJSZWN0KTsKKyAgICBpZiAobGF5
ZXItPm1hc2tzVG9Cb3VuZHMoKSB8fCB1c2VTdXJmYWNlRm9yTWFza2luZykgeworICAgICAgICBJ
bnRSZWN0IGRyYXdhYmxlQ29udGVudFJlY3QgPSBkcmF3TGF5ZXItPmRyYXdhYmxlQ29udGVudFJl
Y3QoKTsKKyAgICAgICAgZHJhd2FibGVDb250ZW50UmVjdC5pbnRlcnNlY3QodHJhbnNmb3JtZWRM
YXllclJlY3QpOworICAgICAgICBkcmF3TGF5ZXItPnNldERyYXdhYmxlQ29udGVudFJlY3QoZHJh
d2FibGVDb250ZW50UmVjdCk7CisgICAgfQogCi0gICAgaWYgKGxheWVyLT5tX3JlbmRlclN1cmZh
Y2UgJiYgbGF5ZXIgIT0gbV9yb290TGF5ZXIpIHsKLSAgICAgICAgUmVuZGVyU3VyZmFjZUNocm9t
aXVtKiByZW5kZXJTdXJmYWNlID0gbGF5ZXItPm1fcmVuZGVyU3VyZmFjZS5nZXQoKTsKLSAgICAg
ICAgcmVuZGVyU3VyZmFjZS0+bV9jb250ZW50UmVjdCA9IGxheWVyLT5tX2RyYXdhYmxlQ29udGVu
dFJlY3Q7CisgICAgaWYgKGRyYXdMYXllci0+cmVuZGVyU3VyZmFjZSgpICYmIGxheWVyICE9IG1f
cm9vdExheWVyKSB7CisgICAgICAgIFJlbmRlclN1cmZhY2VDaHJvbWl1bSogcmVuZGVyU3VyZmFj
ZSA9IGRyYXdMYXllci0+cmVuZGVyU3VyZmFjZSgpOworICAgICAgICByZW5kZXJTdXJmYWNlLT5t
X2NvbnRlbnRSZWN0ID0gZHJhd0xheWVyLT5kcmF3YWJsZUNvbnRlbnRSZWN0KCk7CiAgICAgICAg
IEZsb2F0UG9pbnQgc3VyZmFjZUNlbnRlciA9IHJlbmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0Q2Vu
dGVyKCk7CiAKICAgICAgICAgLy8gUmVzdHJpY3QgdGhlIFJlbmRlclN1cmZhY2Ugc2l6ZSB0byB0
aGUgcG9ydGlvbiB0aGF0J3MgdmlzaWJsZS4KQEAgLTYwMSw3ICs2MTUsNyBAQCB2b2lkIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJzUmVjdXJzaXZlKExheWVyQ2hyb21pdW0qIGxh
eWVyLCBjb25zdCBUcgogICAgICAgICAvLyBEb24ndCBjbGlwIGlmIHRoZSBsYXllciBpcyByZWZs
ZWN0ZWQgYXMgdGhlIHJlZmxlY3Rpb24gc2hvdWxkbid0IGJlCiAgICAgICAgIC8vIGNsaXBwZWQu
CiAgICAgICAgIGlmICghbGF5ZXItPnJlcGxpY2FMYXllcigpKSB7Ci0gICAgICAgICAgICByZW5k
ZXJTdXJmYWNlLT5tX2NvbnRlbnRSZWN0LmludGVyc2VjdChsYXllci0+bV9zY2lzc29yUmVjdCk7
CisgICAgICAgICAgICByZW5kZXJTdXJmYWNlLT5tX2NvbnRlbnRSZWN0LmludGVyc2VjdChkcmF3
TGF5ZXItPnNjaXNzb3JSZWN0KCkpOwogICAgICAgICAgICAgRmxvYXRQb2ludCBjbGlwcGVkU3Vy
ZmFjZUNlbnRlciA9IHJlbmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0Q2VudGVyKCk7CiAgICAgICAg
ICAgICBjZW50ZXJPZmZzZXREdWVUb0NsaXBwaW5nID0gY2xpcHBlZFN1cmZhY2VDZW50ZXIgLSBz
dXJmYWNlQ2VudGVyOwogICAgICAgICB9CkBAIC02MTYsNyArNjMwLDcgQEAgdm9pZCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OnVwZGF0ZUxheWVyc1JlY3Vyc2l2ZShMYXllckNocm9taXVtKiBsYXll
ciwgY29uc3QgVHIKIAogICAgICAgICAvLyBTaW5jZSB0aGUgbGF5ZXIgc3RhcnRzIGEgbmV3IHJl
bmRlciBzdXJmYWNlIHdlIG5lZWQgdG8gYWRqdXN0IGl0cwogICAgICAgICAvLyBzY2lzc29yIHJl
Y3QgdG8gYmUgZXhwcmVzc2VkIGluIHRoZSBuZXcgc3VyZmFjZSdzIGNvb3JkaW5hdGUgc3lzdGVt
LgotICAgICAgICBsYXllci0+bV9zY2lzc29yUmVjdCA9IGxheWVyLT5tX2RyYXdhYmxlQ29udGVu
dFJlY3Q7CisgICAgICAgIGRyYXdMYXllci0+c2V0U2Npc3NvclJlY3QoZHJhd0xheWVyLT5kcmF3
YWJsZUNvbnRlbnRSZWN0KCkpOwogCiAgICAgICAgIC8vIEFkanVzdCB0aGUgb3JpZ2luIG9mIHRo
ZSB0cmFuc2Zvcm0gdG8gYmUgdGhlIGNlbnRlciBvZiB0aGUgcmVuZGVyIHN1cmZhY2UuCiAgICAg
ICAgIHJlbmRlclN1cmZhY2UtPm1fZHJhd1RyYW5zZm9ybSA9IHJlbmRlclN1cmZhY2UtPm1fb3Jp
Z2luVHJhbnNmb3JtOwpAQCAtNjM0LDE0ICs2NDgsMTQgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OnVwZGF0ZUxheWVyc1JlY3Vyc2l2ZShMYXllckNocm9taXVtKiBsYXllciwgY29uc3Qg
VHIKIAogICAgIC8vIENvbXB1dGUgdGhlIGRlcHRoIHZhbHVlIG9mIHRoZSBjZW50ZXIgb2YgdGhl
IGxheWVyIHdoaWNoIHdpbGwgYmUgdXNlZCB3aGVuCiAgICAgLy8gc29ydGluZyB0aGUgbGF5ZXJz
IGZvciB0aGUgcHJlc2VydmVzLTNkIHByb3BlcnR5LgotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBsYXllckRyYXdNYXRyaXggPSBsYXllci0+bV9yZW5kZXJTdXJmYWNlID8gbGF5ZXItPm1fcmVu
ZGVyU3VyZmFjZS0+bV9kcmF3VHJhbnNmb3JtIDogbGF5ZXItPm1fZHJhd1RyYW5zZm9ybTsKKyAg
ICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJEcmF3TWF0cml4ID0gZHJhd0xheWVy
LT5yZW5kZXJTdXJmYWNlKCkgPyBkcmF3TGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+bV9kcmF3VHJh
bnNmb3JtIDogZHJhd0xheWVyLT5kcmF3VHJhbnNmb3JtKCk7CiAgICAgaWYgKGxheWVyLT5zdXBl
cmxheWVyKCkpIHsKICAgICAgICAgaWYgKCFsYXllci0+c3VwZXJsYXllcigpLT5wcmVzZXJ2ZXMz
RCgpKQotICAgICAgICAgICAgbGF5ZXItPm1fZHJhd0RlcHRoID0gbGF5ZXItPnN1cGVybGF5ZXIo
KS0+bV9kcmF3RGVwdGg7CisgICAgICAgICAgICBkcmF3TGF5ZXItPnNldERyYXdEZXB0aChkcmF3
TGF5ZXItPnN1cGVybGF5ZXIoKS0+ZHJhd0RlcHRoKCkpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBsYXllci0+bV9kcmF3RGVwdGggPSBsYXllckRyYXdNYXRyaXgubTQzKCk7CisgICAgICAg
ICAgICBkcmF3TGF5ZXItPnNldERyYXdEZXB0aChsYXllckRyYXdNYXRyaXgubTQzKCkpOwogICAg
IH0gZWxzZQotICAgICAgICBsYXllci0+bV9kcmF3RGVwdGggPSAwOworICAgICAgICBkcmF3TGF5
ZXItPnNldERyYXdEZXB0aCgwKTsKIAogICAgIC8vIElmIHByZXNlcnZlcy0zZCB0aGVuIHNvcnQg
YWxsIHRoZSBkZXNjZW5kYW50cyBieSB0aGUgWiBjb29yZGluYXRlIG9mIHRoZWlyCiAgICAgLy8g
Y2VudGVyLiBJZiB0aGUgcHJlc2VydmVzLTNkIHByb3BlcnR5IGlzIGFsc28gc2V0IG9uIHRoZSBz
dXBlcmxheWVyIHRoZW4KQEAgLTY1OCw3ICs2NzIsMTIgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OnNldENvbXBvc2l0ZU9mZnNjcmVlbihib29sIGNvbXBvc2l0ZU9mZnNjcmVlbikKICAg
ICBtX2NvbXBvc2l0ZU9mZnNjcmVlbiA9IGNvbXBvc2l0ZU9mZnNjcmVlbjsKIAogICAgIGlmICgh
bV9jb21wb3NpdGVPZmZzY3JlZW4gJiYgbV9yb290TGF5ZXIpCi0gICAgICAgIG1fcm9vdExheWVy
LT5tX3JlbmRlclN1cmZhY2UuY2xlYXIoKTsKKyAgICAgICAgbV9yb290TGF5ZXItPmNjTGF5ZXJJ
bXBsKCktPmNsZWFyUmVuZGVyU3VyZmFjZSgpOworfQorCitMYXllclRleHR1cmUqIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6Z2V0T2Zmc2NyZWVuTGF5ZXJUZXh0dXJlKCkKK3sKKyAgICByZXR1cm4g
bV9jb21wb3NpdGVPZmZzY3JlZW4gPyBtX3Jvb3RMYXllci0+Y2NMYXllckltcGwoKS0+cmVuZGVy
U3VyZmFjZSgpLT5tX2NvbnRlbnRzVGV4dHVyZS5nZXQoKSA6IDA7CiB9CiAKIHZvaWQgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpjb3B5T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSgpCkBAIC03MDks
MzIgKzcyOCwzMSBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVyU3VyZmFj
ZShSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJlbmRlclN1cmZhYwogICAgIHJldHVybiB0cnVlOwog
fQogCi12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVyKExheWVyQ2hyb21pdW0q
IGxheWVyLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHRhcmdldFN1cmZhY2UpCit2b2lkIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVyKENDTGF5ZXJJbXBsKiBsYXllciwgUmVuZGVyU3Vy
ZmFjZUNocm9taXVtKiB0YXJnZXRTdXJmYWNlKQogewotICAgIGlmIChsYXllci0+bV9yZW5kZXJT
dXJmYWNlICYmIGxheWVyLT5tX3JlbmRlclN1cmZhY2UgIT0gdGFyZ2V0U3VyZmFjZSkgewotICAg
ICAgICBsYXllci0+bV9yZW5kZXJTdXJmYWNlLT5kcmF3KCk7CisgICAgaWYgKGxheWVyLT5yZW5k
ZXJTdXJmYWNlKCkgJiYgbGF5ZXItPnJlbmRlclN1cmZhY2UoKSAhPSB0YXJnZXRTdXJmYWNlKSB7
CisgICAgICAgIGxheWVyLT5yZW5kZXJTdXJmYWNlKCktPmRyYXcoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGlmIChsYXllci0+bV9ib3VuZHMuaXNFbXB0eSgpKQorICAgIGlmIChs
YXllci0+Ym91bmRzKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZXRTY2lz
c29yVG9SZWN0KGxheWVyLT5tX3NjaXNzb3JSZWN0KTsKKyAgICBzZXRTY2lzc29yVG9SZWN0KGxh
eWVyLT5zY2lzc29yUmVjdCgpKTsKIAogICAgIC8vIENoZWNrIGlmIHRoZSBsYXllciBmYWxscyB3
aXRoaW4gdGhlIHZpc2libGUgYm91bmRzIG9mIHRoZSBwYWdlLgogICAgIEludFJlY3QgbGF5ZXJS
ZWN0ID0gbGF5ZXItPmdldERyYXdSZWN0KCk7Ci0gICAgYm9vbCBpc0xheWVyVmlzaWJsZSA9IGxh
eWVyLT5tX3NjaXNzb3JSZWN0LmludGVyc2VjdHMobGF5ZXJSZWN0KTsKKyAgICBib29sIGlzTGF5
ZXJWaXNpYmxlID0gbGF5ZXItPnNjaXNzb3JSZWN0KCkuaW50ZXJzZWN0cyhsYXllclJlY3QpOwog
ICAgIGlmICghaXNMYXllclZpc2libGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1F
OiBOZWVkIHRvIHRha2UgaW50byBhY2NvdW50IHRoZSBjb21tdWxhdGl2ZSByZW5kZXIgc3VyZmFj
ZSB0cmFuc2Zvcm1zIGFsbCB0aGUgd2F5IGZyb20KICAgICAvLyAgICAgICAgdGhlIGRlZmF1bHQg
cmVuZGVyIHN1cmZhY2UgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIHZpc2liaWxpdHkuCi0gICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggY29tYmluZWREcmF3TWF0cml4ID0gKGxheWVyLT5tX3JlbmRlclN1
cmZhY2UgPyBsYXllci0+bV9yZW5kZXJTdXJmYWNlLT5kcmF3VHJhbnNmb3JtKCkubXVsdGlwbHko
bGF5ZXItPm1fZHJhd1RyYW5zZm9ybSkgOiBsYXllci0+bV9kcmF3VHJhbnNmb3JtKTsKKyAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBjb21iaW5lZERyYXdNYXRyaXggPSAobGF5ZXItPnJlbmRlclN1
cmZhY2UoKSA/IGxheWVyLT5yZW5kZXJTdXJmYWNlKCktPmRyYXdUcmFuc2Zvcm0oKS5tdWx0aXBs
eShsYXllci0+ZHJhd1RyYW5zZm9ybSgpKSA6IGxheWVyLT5kcmF3VHJhbnNmb3JtKCkpOwogICAg
IGlmICghbGF5ZXItPmRvdWJsZVNpZGVkKCkgJiYgY29tYmluZWREcmF3TWF0cml4Lm0zMygpIDwg
MCkKICAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChsYXllci0+ZHJhd3NDb250ZW50KCkpIHsK
LSAgICAgICAgLy8gVXBkYXRlIHRoZSBjb250ZW50cyBvZiB0aGUgbGF5ZXIgaWYgbmVjZXNzYXJ5
LgogICAgICAgICBsYXllci0+dXBkYXRlQ29udGVudHNJZkRpcnR5KCk7CiAgICAgICAgIG1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgICAgIGxheWVyLT5kcmF3KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IDFjMjAzOTNhNzYxNmM5YzZjMWMzZDA0
NTUzMDQ5YTBhNDY2MzY0YjEuLjdhODY1M2FmMjk1YWY4OGNmY2Q3MTUwM2JjNjNlYmY4MjQ0ZDVh
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC01Nyw2ICs1Nyw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBHZW9t
ZXRyeUJpbmRpbmc7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIApAQCAtOTAsNyArOTEsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNldENvbXBvc2l0ZU9mZnNjcmVlbihib29sKTsKICAgICBi
b29sIGlzQ29tcG9zaXRpbmdPZmZzY3JlZW4oKSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0ZU9m
ZnNjcmVlbjsgfQotICAgIExheWVyVGV4dHVyZSogZ2V0T2Zmc2NyZWVuTGF5ZXJUZXh0dXJlKCkg
eyByZXR1cm4gbV9jb21wb3NpdGVPZmZzY3JlZW4gPyBtX3Jvb3RMYXllci0+bV9yZW5kZXJTdXJm
YWNlLT5tX2NvbnRlbnRzVGV4dHVyZS5nZXQoKSA6IDA7IH0KKyAgICBMYXllclRleHR1cmUqIGdl
dE9mZnNjcmVlbkxheWVyVGV4dHVyZSgpOwogICAgIHZvaWQgY29weU9mZnNjcmVlblRleHR1cmVU
b0Rpc3BsYXkoKTsKIAogICAgIHZvaWQgc2V0Um9vdExheWVyQ2FudmFzU2l6ZShjb25zdCBJbnRT
aXplJik7CkBAIC0xMzEsOSArMTMyLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IExheWVyUmVuZGVyZXJDaHJvbWl1bShQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBn
cmFwaGljc0NvbnRleHQzRCk7Ci0gICAgdm9pZCB1cGRhdGVMYXllcnNSZWN1cnNpdmUoTGF5ZXJD
aHJvbWl1bSogbGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXJlbnRNYXRyaXgs
IFZlY3RvcjxMYXllckNocm9taXVtKj4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIFZlY3RvcjxM
YXllckNocm9taXVtKj4mIGxheWVyTGlzdCk7CisgICAgdm9pZCB1cGRhdGVMYXllcnNSZWN1cnNp
dmUoTGF5ZXJDaHJvbWl1bSosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXJlbnRNYXRy
aXgsIFZlY3RvcjxDQ0xheWVySW1wbCo+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBWZWN0b3I8
Q0NMYXllckltcGwqPiYgbGF5ZXJMaXN0KTsKIAotICAgIHZvaWQgZHJhd0xheWVyKExheWVyQ2hy
b21pdW0qLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qKTsKKyAgICB2b2lkIGRyYXdMYXllcihDQ0xh
eWVySW1wbCosIFJlbmRlclN1cmZhY2VDaHJvbWl1bSopOwogCiAgICAgdm9pZCB1cGRhdGVBbmRE
cmF3Um9vdExheWVyKFRpbGVQYWludEludGVyZmFjZSYgdGlsZVBhaW50LCBUaWxlUGFpbnRJbnRl
cmZhY2UmIHNjcm9sbGJhclBhaW50LCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3Qg
SW50UmVjdCYgY29udGVudFJlY3QpOwogCkBAIC0xNDUsNyArMTQ2LDcgQEAgcHJpdmF0ZToKIAog
ICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAKLSAgICBzdGF0aWMgYm9vbCBjb21wYXJl
TGF5ZXJaKGNvbnN0IExheWVyQ2hyb21pdW0qLCBjb25zdCBMYXllckNocm9taXVtKik7CisgICAg
c3RhdGljIGJvb2wgY29tcGFyZUxheWVyWihjb25zdCBDQ0xheWVySW1wbCosIGNvbnN0IENDTGF5
ZXJJbXBsKik7CiAKICAgICBib29sIGluaXRpYWxpemVTaGFyZWRPYmplY3RzKCk7CiAgICAgdm9p
ZCBjbGVhbnVwU2hhcmVkT2JqZWN0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNw
cAppbmRleCA4MDllYjM3NjQ0OTgyNjQ0YTRhYjg4ZjE2YWZhZDA1MzE5NmMyM2I5Li41ZDU5NWFk
MTNkMjllNDFiMmMwMjg4MDM3YmRiZTgwZWUzZmZmN2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXll
ckNocm9taXVtLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiUGx1Z2luTGF5ZXJD
aHJvbWl1bS5oIgogCisjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2lu
Y2x1ZGUgPEdMRVMyL2dsMi5oPgpAQCAtNzIsOCArNzMsOCBAQCB2b2lkIFBsdWdpbkxheWVyQ2hy
b21pdW06OmRyYXcoKQogICAgIAogICAgIGxheWVyUmVuZGVyZXIoKS0+dXNlU2hhZGVyKHByb2dy
YW0tPnByb2dyYW0oKSk7CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm0xaShwcm9n
cmFtLT5mcmFnbWVudFNoYWRlcigpLnNhbXBsZXJMb2NhdGlvbigpLCAwKSk7Ci0gICAgZHJhd1Rl
eHR1cmVkUXVhZChjb250ZXh0LCBsYXllclJlbmRlcmVyKCktPnByb2plY3Rpb25NYXRyaXgoKSwg
ZHJhd1RyYW5zZm9ybSgpLAotICAgICAgICAgICAgICAgICAgICAgYm91bmRzKCkud2lkdGgoKSwg
Ym91bmRzKCkuaGVpZ2h0KCksIGRyYXdPcGFjaXR5KCksCisgICAgZHJhd1RleHR1cmVkUXVhZChj
b250ZXh0LCBsYXllclJlbmRlcmVyKCktPnByb2plY3Rpb25NYXRyaXgoKSwgY2NMYXllckltcGwo
KS0+ZHJhd1RyYW5zZm9ybSgpLAorICAgICAgICAgICAgICAgICAgICAgYm91bmRzKCkud2lkdGgo
KSwgYm91bmRzKCkuaGVpZ2h0KCksIGNjTGF5ZXJJbXBsKCktPmRyYXdPcGFjaXR5KCksCiAgICAg
ICAgICAgICAgICAgICAgICBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigp
LAogICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxv
Y2F0aW9uKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5jcHAKaW5kZXgg
MGFkNmE4MjRjMGZmOWY5ZjhjMTcyNGM2NTQ5YWFmZWNkMmRjNjExMS4uYTI4NDVlM2ViNzI4NGY3
ZGVkNDI4NDIxNzlhOWNiNzg4ZjBiM2Q3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hy
b21pdW0uY3BwCkBAIC0yOSwxMyArMjksMTQgQEAKIAogI2luY2x1ZGUgIlJlbmRlclN1cmZhY2VD
aHJvbWl1bS5oIgogCisjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2lu
Y2x1ZGUgIkxheWVyVGV4dHVyZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclN1
cmZhY2VDaHJvbWl1bTo6UmVuZGVyU3VyZmFjZUNocm9taXVtKExheWVyQ2hyb21pdW0qIG93bmlu
Z0xheWVyKQorUmVuZGVyU3VyZmFjZUNocm9taXVtOjpSZW5kZXJTdXJmYWNlQ2hyb21pdW0oQ0NM
YXllckltcGwqIG93bmluZ0xheWVyKQogICAgIDogbV9vd25pbmdMYXllcihvd25pbmdMYXllcikK
ICAgICAsIG1fbWFza0xheWVyKDApCiAgICAgLCBtX3NraXBzRHJhdyhmYWxzZSkKQEAgLTk0LDcg
Kzk1LDcgQEAgYm9vbCBSZW5kZXJTdXJmYWNlQ2hyb21pdW06OnByZXBhcmVDb250ZW50c1RleHR1
cmUoKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFJlbmRlclN1cmZhY2VDaHJvbWl1bTo6
ZHJhd1N1cmZhY2UoTGF5ZXJDaHJvbWl1bSogbWFza0xheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgZHJhd1RyYW5zZm9ybSkKK3ZvaWQgUmVuZGVyU3VyZmFjZUNocm9taXVtOjpkcmF3
U3VyZmFjZShDQ0xheWVySW1wbCogbWFza0xheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgZHJhd1RyYW5zZm9ybSkKIHsKICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNEID0g
bGF5ZXJSZW5kZXJlcigpLT5jb250ZXh0KCk7CiAKQEAgLTE1MCw3ICsxNTEsNyBAQCB2b2lkIFJl
bmRlclN1cmZhY2VDaHJvbWl1bTo6ZHJhdygpCiAgICAgLy8gYm90aCB0aGUgbGF5ZXIgYW5kIGl0
cyByZWZsZWN0aW9uKS4gVGhlIHNvbHV0aW9uIGlzIHRvIGludHJvZHVjZSB5ZXQgYW5vdGhlciBS
ZW5kZXJTdXJmYWNlCiAgICAgLy8gdG8gZHJhdyB0aGUgbGF5ZXIgYW5kIGl0cyByZWZsZWN0aW9u
IGluLiBGb3Igbm93IHdlIG9ubHkgYXBwbHkgYSBzZXBhcmF0ZSByZWZsZWN0aW9uCiAgICAgLy8g
bWFzayBpZiB0aGUgY29udGVudHMgZG9uJ3QgaGF2ZSBhIG1hc2sgb2YgdGhlaXIgb3duLgotICAg
IExheWVyQ2hyb21pdW0qIHJlcGxpY2FNYXNrTGF5ZXIgPSBtX21hc2tMYXllcjsKKyAgICBDQ0xh
eWVySW1wbCogcmVwbGljYU1hc2tMYXllciA9IG1fbWFza0xheWVyOwogICAgIGlmICghbV9tYXNr
TGF5ZXIgJiYgbV9vd25pbmdMYXllci0+cmVwbGljYUxheWVyKCkpCiAgICAgICAgIHJlcGxpY2FN
YXNrTGF5ZXIgPSBtX293bmluZ0xheWVyLT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVyKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Jl
bmRlclN1cmZhY2VDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgKaW5kZXggM2U4OWQ3OTU4NmYxMTRkZDcx
NzNjMmYzYTM0MjRmMGQ5NjdlNjEwZi4uMTcxYWU0OGE1YTU4NzRmZGUzZmZiZTA4ZjY3MDAwM2Y2
MTQxMWRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgKQEAgLTM5LDcgKzM5
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBMYXllckNocm9taXVtOworY2xh
c3MgQ0NMYXllckltcGw7CiBjbGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW07CiBjbGFzcyBMYXll
clRleHR1cmU7CiAKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgUmVuZGVyU3VyZmFjZUNocm9taXVt
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW5kZXJTdXJmYWNlQ2hyb21pdW0pOwogICAg
IGZyaWVuZCBjbGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW07CiBwdWJsaWM6Ci0gICAgZXhwbGlj
aXQgUmVuZGVyU3VyZmFjZUNocm9taXVtKExheWVyQ2hyb21pdW0qKTsKKyAgICBleHBsaWNpdCBS
ZW5kZXJTdXJmYWNlQ2hyb21pdW0oQ0NMYXllckltcGwqKTsKICAgICB+UmVuZGVyU3VyZmFjZUNo
cm9taXVtKCk7CiAKICAgICBib29sIHByZXBhcmVDb250ZW50c1RleHR1cmUoKTsKQEAgLTY3LDEw
ICs2NywxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgTGF5ZXJSZW5kZXJlckNocm9taXVt
KiBsYXllclJlbmRlcmVyKCk7Ci0gICAgdm9pZCBkcmF3U3VyZmFjZShMYXllckNocm9taXVtKiBt
YXNrTGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKTsKKyAg
ICB2b2lkIGRyYXdTdXJmYWNlKENDTGF5ZXJJbXBsKiBtYXNrTGF5ZXIsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKTsKIAotICAgIExheWVyQ2hyb21pdW0qIG1fb3du
aW5nTGF5ZXI7Ci0gICAgTGF5ZXJDaHJvbWl1bSogbV9tYXNrTGF5ZXI7CisgICAgQ0NMYXllcklt
cGwqIG1fb3duaW5nTGF5ZXI7CisgICAgQ0NMYXllckltcGwqIG1fbWFza0xheWVyOwogCiAgICAg
SW50UmVjdCBtX2NvbnRlbnRSZWN0OwogICAgIGJvb2wgbV9za2lwc0RyYXc7CkBAIC04MCw3ICs4
MCw3IEBAIHByaXZhdGU6CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9yZXBsaWNhRHJhd1Ry
YW5zZm9ybTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX29yaWdpblRyYW5zZm9ybTsKICAg
ICBJbnRSZWN0IG1fc2Npc3NvclJlY3Q7Ci0gICAgVmVjdG9yPExheWVyQ2hyb21pdW0qPiBtX2xh
eWVyTGlzdDsKKyAgICBWZWN0b3I8Q0NMYXllckltcGwqPiBtX2xheWVyTGlzdDsKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Zp
ZGVvTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDQ5ZmFhNWY2OTQxMTM0ZDhhMjA1
ZDI4MDQzMzNlODI5YzZjZTk3NDAuLmQ1NWI1ODVlZjU4NmY0NTlhMTEwMmEzZThmNDhmNzAyMTc0
MDFmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcApAQCAtMzMsNiArMzMsNyBA
QAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICNpbmNsdWRlICJWaWRlb0xheWVy
Q2hyb21pdW0uaCIKIAorI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiRXh0
ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2lu
Y2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgpAQCAtMjk0LDggKzI5NSw4IEBAIHZvaWQg
VmlkZW9MYXllckNocm9taXVtOjpkcmF3WVVWKGNvbnN0IFZpZGVvTGF5ZXJDaHJvbWl1bTo6WVVW
UHJvZ3JhbSogcHJvZ3JhbSkKIAogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtTWF0
cml4M2Z2KHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuY2NNYXRyaXhMb2NhdGlvbigpLCAwLCBj
b25zdF9jYXN0PGZsb2F0Kj4oeXV2MlJHQiksIDEpKTsKIAotICAgIGRyYXdUZXh0dXJlZFF1YWQo
Y29udGV4dCwgbGF5ZXJSZW5kZXJlcigpLT5wcm9qZWN0aW9uTWF0cml4KCksIGRyYXdUcmFuc2Zv
cm0oKSwKLSAgICAgICAgICAgICAgICAgICAgIGJvdW5kcygpLndpZHRoKCksIGJvdW5kcygpLmhl
aWdodCgpLCBkcmF3T3BhY2l0eSgpLAorICAgIGRyYXdUZXh0dXJlZFF1YWQoY29udGV4dCwgbGF5
ZXJSZW5kZXJlcigpLT5wcm9qZWN0aW9uTWF0cml4KCksIGNjTGF5ZXJJbXBsKCktPmRyYXdUcmFu
c2Zvcm0oKSwKKyAgICAgICAgICAgICAgICAgICAgIGJvdW5kcygpLndpZHRoKCksIGJvdW5kcygp
LmhlaWdodCgpLCBjY0xheWVySW1wbCgpLT5kcmF3T3BhY2l0eSgpLAogICAgICAgICAgICAgICAg
ICAgICAgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwKICAgICAgICAg
ICAgICAgICAgICAgIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpKTsK
IApAQCAtMzE3LDggKzMxOCw4IEBAIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjpkcmF3UkdCQShj
b25zdCBWaWRlb0xheWVyQ2hyb21pdW06OlJHQkFQcm9ncmFtKiBwcm9ncmFtCiAKICAgICBHTEMo
Y29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2Ft
cGxlckxvY2F0aW9uKCksIDApKTsKIAotICAgIGRyYXdUZXh0dXJlZFF1YWQoY29udGV4dCwgbGF5
ZXJSZW5kZXJlcigpLT5wcm9qZWN0aW9uTWF0cml4KCksIGRyYXdUcmFuc2Zvcm0oKSwKLSAgICAg
ICAgICAgICAgICAgICAgIGJvdW5kcygpLndpZHRoKCksIGJvdW5kcygpLmhlaWdodCgpLCBkcmF3
T3BhY2l0eSgpLAorICAgIGRyYXdUZXh0dXJlZFF1YWQoY29udGV4dCwgbGF5ZXJSZW5kZXJlcigp
LT5wcm9qZWN0aW9uTWF0cml4KCksIGNjTGF5ZXJJbXBsKCktPmRyYXdUcmFuc2Zvcm0oKSwKKyAg
ICAgICAgICAgICAgICAgICAgIGJvdW5kcygpLndpZHRoKCksIGJvdW5kcygpLmhlaWdodCgpLCBj
Y0xheWVySW1wbCgpLT5kcmF3T3BhY2l0eSgpLAogICAgICAgICAgICAgICAgICAgICAgcHJvZ3Jh
bS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwKICAgICAgICAgICAgICAgICAgICAg
IHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjVjNWQ0M2JmZGZmMzIyNTNjMzBjZTM5Yzc2YzM4
MWE5MDVjZDQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCkBAIC0wLDAgKzEsMTc1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQorCisjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dDNELmgiCisjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIiAvLyBGSVhNRTogdGVtcG9yYXJ5
IGFuZCBiYWQKKyNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJS
ZW5kZXJTdXJmYWNlQ2hyb21pdW0uaCIKKworbmFtZXNwYWNlIHsKK3ZvaWQgdG9HTE1hdHJpeChm
bG9hdCogZmxhdHRlbmVkLCBjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbSkK
K3sKKyAgICBmbGF0dGVuZWRbMF0gPSBtLm0xMSgpOworICAgIGZsYXR0ZW5lZFsxXSA9IG0ubTEy
KCk7CisgICAgZmxhdHRlbmVkWzJdID0gbS5tMTMoKTsKKyAgICBmbGF0dGVuZWRbM10gPSBtLm0x
NCgpOworICAgIGZsYXR0ZW5lZFs0XSA9IG0ubTIxKCk7CisgICAgZmxhdHRlbmVkWzVdID0gbS5t
MjIoKTsKKyAgICBmbGF0dGVuZWRbNl0gPSBtLm0yMygpOworICAgIGZsYXR0ZW5lZFs3XSA9IG0u
bTI0KCk7CisgICAgZmxhdHRlbmVkWzhdID0gbS5tMzEoKTsKKyAgICBmbGF0dGVuZWRbOV0gPSBt
Lm0zMigpOworICAgIGZsYXR0ZW5lZFsxMF0gPSBtLm0zMygpOworICAgIGZsYXR0ZW5lZFsxMV0g
PSBtLm0zNCgpOworICAgIGZsYXR0ZW5lZFsxMl0gPSBtLm00MSgpOworICAgIGZsYXR0ZW5lZFsx
M10gPSBtLm00MigpOworICAgIGZsYXR0ZW5lZFsxNF0gPSBtLm00MygpOworICAgIGZsYXR0ZW5l
ZFsxNV0gPSBtLm00NCgpOworfQorfQorCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ0NMYXll
ckltcGw6OkNDTGF5ZXJJbXBsKExheWVyQ2hyb21pdW0qIG93bmVyKQorICAgIDogbV9vd25lcihv
d25lcikKKyAgICAsIG1fdGFyZ2V0UmVuZGVyU3VyZmFjZSgwKQorICAgICwgbV9kcmF3RGVwdGgo
MCkKKyAgICAsIG1fZHJhd09wYWNpdHkoMCkKKyAgICAsIG1fZG91YmxlU2lkZWQodHJ1ZSkKKyAg
ICAsIG1fZGVidWdCb3JkZXJDb2xvcigwLCAwLCAwLCAwKQorICAgICwgbV9kZWJ1Z0JvcmRlcldp
ZHRoKDApCisgICAgLCBtX3JlbmRlclN1cmZhY2UoMCkKKyAgICAsIG1fbGF5ZXJSZW5kZXJlcigw
KQoreworfQorCitDQ0xheWVySW1wbDo6fkNDTGF5ZXJJbXBsKCkKK3sKK30KKworLy8gVGhlc2Ug
YXJlIHBzZXVkby1zdHJ1Y3R1cmFsIGhhY2tzIHVudGlsIHdlIGdldCByZWFsIHRyZWUgc3luY2lu
ZyB1cCBpbiB0aGlzIHBpZWNlLgorQ0NMYXllckltcGwqIENDTGF5ZXJJbXBsOjpzdXBlcmxheWVy
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9vd25lci0+c3VwZXJsYXllcigpID8gbV9vd25lci0+
c3VwZXJsYXllcigpLT5jY0xheWVySW1wbCgpIDogMDsKK30KKworQ0NMYXllckltcGwqIENDTGF5
ZXJJbXBsOjptYXNrTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX293bmVyLT5tYXNrTGF5
ZXIoKSA/IG1fb3duZXItPm1hc2tMYXllcigpLT5jY0xheWVySW1wbCgpIDogMDsKK30KKworQ0NM
YXllckltcGwqIENDTGF5ZXJJbXBsOjpyZXBsaWNhTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVy
biBtX293bmVyLT5yZXBsaWNhTGF5ZXIoKSA/IG1fb3duZXItPnJlcGxpY2FMYXllcigpLT5jY0xh
eWVySW1wbCgpIDogMDsKK30KKwordm9pZCBDQ0xheWVySW1wbDo6c2V0TGF5ZXJSZW5kZXJlcihM
YXllclJlbmRlcmVyQ2hyb21pdW0qIHJlbmRlcmVyKQoreworICAgIG1fbGF5ZXJSZW5kZXJlciA9
IHJlbmRlcmVyOworfQorCitSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIENDTGF5ZXJJbXBsOjpjcmVh
dGVSZW5kZXJTdXJmYWNlKCkKK3sKKyAgICBtX3JlbmRlclN1cmZhY2UgPSBuZXcgUmVuZGVyU3Vy
ZmFjZUNocm9taXVtKHRoaXMpOworICAgIHJldHVybiBtX3JlbmRlclN1cmZhY2UuZ2V0KCk7Cit9
CisKKy8vIFRoaXMgZG9lcyBub3QgYmVsb25nIG9uIENDTGF5ZXJJbXBsLgordm9pZCBDQ0xheWVy
SW1wbDo6dXBkYXRlQ29udGVudHNJZkRpcnR5KCkKK3sKKyAgICBtX293bmVyLT51cGRhdGVDb250
ZW50c0lmRGlydHkoKTsKK30KKworLy8gVGhlc2UgYmVsb25nIG9uIENDTGF5ZXJJbXBsLCBidXQg
c2hvdWxkIGJlIHN1YmNsYXNlZCBieSBlYWNoIHR5cGUgYW5kIG5vdCBkZWZlciB0byB0aGUgTGF5
ZXJDaHJvbWl1bSBzdWJ0eXBlcy4KK2Jvb2wgQ0NMYXllckltcGw6OmRyYXdzQ29udGVudCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fb3duZXItPmRyYXdzQ29udGVudCgpOworfQorCit2b2lkIEND
TGF5ZXJJbXBsOjpkcmF3KCkKK3sKKyAgICByZXR1cm4gbV9vd25lci0+ZHJhdygpOworfQorCit2
b2lkIENDTGF5ZXJJbXBsOjp1bnJlc2VydmVDb250ZW50c1RleHR1cmUoKQoreworICAgIG1fb3du
ZXItPnVucmVzZXJ2ZUNvbnRlbnRzVGV4dHVyZSgpOworfQorCit2b2lkIENDTGF5ZXJJbXBsOjpi
aW5kQ29udGVudHNUZXh0dXJlKCkKK3sKKyAgICBtX293bmVyLT5iaW5kQ29udGVudHNUZXh0dXJl
KCk7Cit9CisKK3ZvaWQgQ0NMYXllckltcGw6OmNsZWFudXBSZXNvdXJjZXMoKQoreworICAgIGlm
IChyZW5kZXJTdXJmYWNlKCkpCisgICAgICAgIHJlbmRlclN1cmZhY2UoKS0+Y2xlYW51cFJlc291
cmNlcygpOworfQorCitjb25zdCBJbnRSZWN0IENDTGF5ZXJJbXBsOjpnZXREcmF3UmVjdCgpIGNv
bnN0Cit7CisgICAgLy8gRm9ybSB0aGUgbWF0cml4IHVzZWQgYnkgdGhlIHNoYWRlciB0byBtYXAg
dGhlIGNvcm5lcnMgb2YgdGhlIGxheWVyJ3MKKyAgICAvLyBib3VuZHMgaW50byB0aGUgdmlldyBz
cGFjZS4KKyAgICBGbG9hdFJlY3QgbGF5ZXJSZWN0KC0wLjUgKiBib3VuZHMoKS53aWR0aCgpLCAt
MC41ICogYm91bmRzKCkuaGVpZ2h0KCksIGJvdW5kcygpLndpZHRoKCksIGJvdW5kcygpLmhlaWdo
dCgpKTsKKyAgICBJbnRSZWN0IG1hcHBlZFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGRyYXdUcmFu
c2Zvcm0oKS5tYXBSZWN0KGxheWVyUmVjdCkpOworICAgIHJldHVybiBtYXBwZWRSZWN0OworfQor
Cit2b2lkIENDTGF5ZXJJbXBsOjpkcmF3RGVidWdCb3JkZXIoKQoreworICAgIHN0YXRpYyBmbG9h
dCBnbE1hdHJpeFsxNl07CisgICAgaWYgKCFkZWJ1Z0JvcmRlckNvbG9yKCkuYWxwaGEoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKGxheWVyUmVuZGVyZXIoKSk7CisgICAgY29uc3Qg
TGF5ZXJDaHJvbWl1bTo6Qm9yZGVyUHJvZ3JhbSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXIoKS0+
Ym9yZGVyUHJvZ3JhbSgpOworICAgIEFTU0VSVChwcm9ncmFtICYmIHByb2dyYW0tPmluaXRpYWxp
emVkKCkpOworICAgIGxheWVyUmVuZGVyZXIoKS0+dXNlU2hhZGVyKHByb2dyYW0tPnByb2dyYW0o
KSk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVuZGVyTWF0cml4ID0gZHJhd1RyYW5zZm9y
bSgpOworICAgIHJlbmRlck1hdHJpeC5zY2FsZTNkKGJvdW5kcygpLndpZHRoKCksIGJvdW5kcygp
LmhlaWdodCgpLCAxKTsKKyAgICB0b0dMTWF0cml4KCZnbE1hdHJpeFswXSwgbGF5ZXJSZW5kZXJl
cigpLT5wcm9qZWN0aW9uTWF0cml4KCkgKiByZW5kZXJNYXRyaXgpOworICAgIEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJlcigpLT5jb250ZXh0KCk7CisgICAgR0xDKGNv
bnRleHQsIGNvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYocHJvZ3JhbS0+dmVydGV4U2hhZGVyKCku
bWF0cml4TG9jYXRpb24oKSwgZmFsc2UsICZnbE1hdHJpeFswXSwgMSkpOworCisgICAgR0xDKGNv
bnRleHQsIGNvbnRleHQtPnVuaWZvcm00Zihwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmNvbG9y
TG9jYXRpb24oKSwgZGVidWdCb3JkZXJDb2xvcigpLnJlZCgpIC8gMjU1LjAsIGRlYnVnQm9yZGVy
Q29sb3IoKS5ncmVlbigpIC8gMjU1LjAsIGRlYnVnQm9yZGVyQ29sb3IoKS5ibHVlKCkgLyAyNTUu
MCwgMSkpOworCisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmxpbmVXaWR0aChkZWJ1Z0JvcmRl
cldpZHRoKCkpKTsKKworICAgIC8vIFRoZSBpbmRpY2VzIGZvciB0aGUgbGluZSBhcmUgc3RvcmVk
IGluIHRoZSBzYW1lIGFycmF5IGFzIHRoZSB0cmlhbmdsZSBpbmRpY2VzLgorICAgIEdMQyhjb250
ZXh0LCBjb250ZXh0LT5kcmF3RWxlbWVudHMoR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVfTE9PUCwg
NCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JULCA2ICogc2l6ZW9mKHVuc2lnbmVk
IHNob3J0KSkpOworfQorCit9CisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5MjQwYzllMmIzNmZlMGNjM2Qx
MzE5YmY5M2UyOWU2NTdjN2Q1Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC0wLDAgKzEsMTQ4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBDQ0xheWVySW1wbF9oCisjZGVmaW5lIENDTGF5ZXJJbXBsX2gK
KworI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAi
SW50UmVjdC5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCisjaW5jbHVkZSA8
d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIExheWVyQ2hy
b21pdW07CitjbGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW07CitjbGFzcyBSZW5kZXJTdXJmYWNl
Q2hyb21pdW07CisKK2NsYXNzIENDTGF5ZXJJbXBsIDogcHVibGljIFJlZkNvdW50ZWQ8Q0NMYXll
ckltcGw+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3Jl
YXRlKExheWVyQ2hyb21pdW0qIG93bmVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBDQ0xheWVySW1wbChvd25lcikpOworICAgIH0KKyAgICAvLyBXaGVuIHRoaXMgY2xhc3Mg
Z2V0cyBzdWJjbGFzc2VzLCByZW1lbWJlciB0byBhZGQgJ3ZpcnR1YWwnIGhlcmUuCisgICAgfkND
TGF5ZXJJbXBsKCk7CisKKyAgICBDQ0xheWVySW1wbCogc3VwZXJsYXllcigpIGNvbnN0OworICAg
IENDTGF5ZXJJbXBsKiBtYXNrTGF5ZXIoKSBjb25zdDsKKyAgICBDQ0xheWVySW1wbCogcmVwbGlj
YUxheWVyKCkgY29uc3Q7CisKKyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzSWZEaXJ0eSgpOworICAg
IHZvaWQgZHJhdygpOworICAgIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7CisgICAgdm9pZCB1
bnJlc2VydmVDb250ZW50c1RleHR1cmUoKTsKKyAgICB2b2lkIGJpbmRDb250ZW50c1RleHR1cmUo
KTsKKworICAgIHZvaWQgY2xlYW51cFJlc291cmNlcygpOworCisgICAgLy8gRGVidWcgbGF5ZXIg
Ym9yZGVyIC0gdmlzdWFsIGVmZmVjdCBvbmx5LCBkbyBub3QgY2hhbmdlIGdlb21ldHJ5L2NsaXBw
aW5nL2V0Yy4KKyAgICB2b2lkIHNldERlYnVnQm9yZGVyQ29sb3IoQ29sb3IgYykgeyBtX2RlYnVn
Qm9yZGVyQ29sb3IgPSBjOyB9CisgICAgQ29sb3IgZGVidWdCb3JkZXJDb2xvcigpIGNvbnN0IHsg
cmV0dXJuIG1fZGVidWdCb3JkZXJDb2xvcjsgfQorICAgIHZvaWQgc2V0RGVidWdCb3JkZXJXaWR0
aChmbG9hdCB3aWR0aCkgeyBtX2RlYnVnQm9yZGVyV2lkdGggPSB3aWR0aDsgfQorICAgIGZsb2F0
IGRlYnVnQm9yZGVyV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnQm9yZGVyV2lkdGg7IH0K
KworICAgIHZvaWQgZHJhd0RlYnVnQm9yZGVyKCk7CisKKyAgICB2b2lkIHNldExheWVyUmVuZGVy
ZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7CisgICAgTGF5ZXJSZW5kZXJlckNocm9taXVtKiBs
YXllclJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclJlbmRlcmVyLmdldCgpOyB9CisK
KyAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIGNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKKworICAg
IFJlbmRlclN1cmZhY2VDaHJvbWl1bSogcmVuZGVyU3VyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVuZGVyU3VyZmFjZS5nZXQoKTsgfQorICAgIHZvaWQgY2xlYXJSZW5kZXJTdXJmYWNlKCkgeyBt
X3JlbmRlclN1cmZhY2UuY2xlYXIoKTsgfQorICAgIGZsb2F0IGRyYXdEZXB0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fZHJhd0RlcHRoOyB9CisgICAgdm9pZCBzZXREcmF3RGVwdGgoZmxvYXQgZGVwdGgp
IHsgbV9kcmF3RGVwdGggPSBkZXB0aDsgfQorICAgIGZsb2F0IGRyYXdPcGFjaXR5KCkgY29uc3Qg
eyByZXR1cm4gbV9kcmF3T3BhY2l0eTsgfQorICAgIHZvaWQgc2V0RHJhd09wYWNpdHkoZmxvYXQg
b3BhY2l0eSkgeyBtX2RyYXdPcGFjaXR5ID0gb3BhY2l0eTsgfQorICAgIGNvbnN0IEludFJlY3Qm
IHNjaXNzb3JSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zY2lzc29yUmVjdDsgfQorICAgIHZvaWQg
c2V0U2Npc3NvclJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkgeyBtX3NjaXNzb3JSZWN0ID0gcmVj
dDsgfQorICAgIFJlbmRlclN1cmZhY2VDaHJvbWl1bSogdGFyZ2V0UmVuZGVyU3VyZmFjZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdGFyZ2V0UmVuZGVyU3VyZmFjZTsgfQorICAgIHZvaWQgc2V0VGFyZ2V0
UmVuZGVyU3VyZmFjZShSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHN1cmZhY2UpIHsgbV90YXJnZXRS
ZW5kZXJTdXJmYWNlID0gc3VyZmFjZTsgfQorCisgICAgYm9vbCBkb3VibGVTaWRlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZG91YmxlU2lkZWQ7IH0KKyAgICB2b2lkIHNldERvdWJsZVNpZGVkKGJvb2wg
ZG91YmxlU2lkZWQpIHsgbV9kb3VibGVTaWRlZCA9IGRvdWJsZVNpZGVkOyB9CisgICAgY29uc3Qg
SW50U2l6ZSYgYm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZHM7IH0KKyAgICB2b2lkIHNl
dEJvdW5kcyhjb25zdCBJbnRTaXplJiBib3VuZHMpIHsgbV9ib3VuZHMgPSBib3VuZHM7IH0KKwor
ICAgIC8vIFJldHVybnMgdGhlIHJlY3QgY29udGFpbnRhaW5pbmcgdGhpcyBsYXllciBpbiB0aGUg
Y3VycmVudCB2aWV3J3MgY29vcmRpbmF0ZSBzeXN0ZW0uCisgICAgY29uc3QgSW50UmVjdCBnZXRE
cmF3UmVjdCgpIGNvbnN0OworCisgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdU
cmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2RyYXdUcmFuc2Zvcm07IH0KKyAgICB2b2lkIHNl
dERyYXdUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkgeyBtX2Ry
YXdUcmFuc2Zvcm0gPSBtYXRyaXg7IH0KKyAgICBjb25zdCBJbnRSZWN0JiBkcmF3YWJsZUNvbnRl
bnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kcmF3YWJsZUNvbnRlbnRSZWN0OyB9CisgICAgdm9p
ZCBzZXREcmF3YWJsZUNvbnRlbnRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpIHsgbV9kcmF3YWJs
ZUNvbnRlbnRSZWN0ID0gcmVjdDsgfQorCitwcml2YXRlOgorICAgIC8vIEZvciBub3csIENDTGF5
ZXJzIGFyZSBvd25lZCBkaXJlY3RseSBieSBhIExheWVyQ2hyb21pdW0uCisgICAgTGF5ZXJDaHJv
bWl1bSogbV9vd25lcjsKKyAgICBleHBsaWNpdCBDQ0xheWVySW1wbChMYXllckNocm9taXVtKik7
CisKKyAgICAvLyBSZW5kZXIgc3VyZmFjZSB0aGlzIGxheWVyIGRyYXdzIGludG8uIFRoaXMgaXMg
YSBzdXJmYWNlIHRoYXQgY2FuIGJlbG9uZworICAgIC8vIGVpdGhlciB0byB0aGlzIGxheWVyIChp
ZiBtX3RhcmdldFJlbmRlclN1cmZhY2UgPT0gbV9yZW5kZXJTdXJmYWNlKSBvcgorICAgIC8vIHRv
IGFuIGFuY2VzdG9yIG9mIHRoaXMgbGF5ZXIuIFRoZSB0YXJnZXQgcmVuZGVyIHN1cmZhY2UgZGV0
ZXJtaW5lcyB0aGUKKyAgICAvLyBjb29yZGluYXRlIHN5c3RlbSB0aGUgbGF5ZXIncyB0cmFuc2Zv
cm1zIGFyZSByZWxhdGl2ZSB0by4KKyAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIG1fdGFyZ2V0
UmVuZGVyU3VyZmFjZTsKKworICAgIC8vIFRoZSBnbG9iYWwgZGVwdGggdmFsdWUgb2YgdGhlIGNl
bnRlciBvZiB0aGUgbGF5ZXIuIFRoaXMgdmFsdWUgaXMgdXNlZAorICAgIC8vIHRvIHNvcnQgbGF5
ZXJzIGZyb20gYmFjayB0byBmcm9udC4KKyAgICBmbG9hdCBtX2RyYXdEZXB0aDsKKyAgICBmbG9h
dCBtX2RyYXdPcGFjaXR5OworCisgICAgLy8gV2hldGhlciB0aGUgImJhY2siIG9mIHRoaXMgbGF5
ZXIgc2hvdWxkIGRyYXcuCisgICAgYm9vbCBtX2RvdWJsZVNpZGVkOworCisgICAgLy8gRGVidWcg
Ym9yZGVycy4KKyAgICBDb2xvciBtX2RlYnVnQm9yZGVyQ29sb3I7CisgICAgZmxvYXQgbV9kZWJ1
Z0JvcmRlcldpZHRoOworCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9kcmF3VHJhbnNmb3Jt
OworCisgICAgSW50U2l6ZSBtX2JvdW5kczsKKworICAgIC8vIFRoZSBzY2lzc29yIHJlY3Rhbmds
ZSB0aGF0IHNob3VsZCBiZSB1c2VkIHdoZW4gdGhpcyBsYXllciBpcyBkcmF3bi4KKyAgICAvLyBJ
bmhlcml0ZWQgYnkgdGhlIHBhcmVudCBsYXllciBhbmQgZnVydGhlciByZXN0cmljdGVkIGlmIHRo
aXMgbGF5ZXIgbWFza3MKKyAgICAvLyB0byBib3VuZHMuCisgICAgSW50UmVjdCBtX3NjaXNzb3JS
ZWN0OworCisgICAgLy8gUmVuZGVyIHN1cmZhY2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbGF5ZXIu
IFRoZSBsYXllciBhbmQgaXRzIGRlc2NlbmRhbnRzCisgICAgLy8gd2lsbCByZW5kZXIgdG8gdGhp
cyBzdXJmYWNlLgorICAgIE93blB0cjxSZW5kZXJTdXJmYWNlQ2hyb21pdW0+IG1fcmVuZGVyU3Vy
ZmFjZTsKKworICAgIC8vIEhpZXJhcmNoaWNhbCBib3VuZGluZyByZWN0IGNvbnRhaW5pbmcgdGhl
IGxheWVyIGFuZCBpdHMgZGVzY2VuZGFudHMuCisgICAgSW50UmVjdCBtX2RyYXdhYmxlQ29udGVu
dFJlY3Q7CisKKyAgICAvLyBQb2ludHMgdG8gdGhlIGxheWVyIHJlbmRlcmVyIHRoYXQgdXBkYXRl
cyBhbmQgZHJhd3MgdGhpcyBsYXllci4KKyAgICBSZWZQdHI8TGF5ZXJSZW5kZXJlckNocm9taXVt
PiBtX2xheWVyUmVuZGVyZXI7Cit9OworCit9CisKKyNlbmRpZiAvLyBDQ0xheWVySW1wbF9oCisK
</data>
<flag name="review"
          id="75253"
          type_id="1"
          status="+"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>