<?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>98581</bug_id>
          
          <creation_ts>2012-10-05 19:39:34 -0700</creation_ts>
          <short_desc>[BlackBerry] Fetch blit rects from a viewport accessor</short_desc>
          <delta_ts>2012-10-13 06:20:12 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit BlackBerry</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jakob Petsovits">jpetsovits</reporter>
          <assigned_to name="Jakob Petsovits">jpetsovits</assigned_to>
          <cc>anilsson</cc>
    
    <cc>anlo</cc>
    
    <cc>dbates</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>manyoso</cc>
    
    <cc>mifenton</cc>
    
    <cc>rakuco</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>staikos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>736176</commentid>
    <comment_count>0</comment_count>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2012-10-05 19:39:34 -0700</bug_when>
    <thetext>The long-standing userInterfaceBlittedVisibleContentsRect() method in WebPageClient has long been the bane of my existence, as it returns the source rect for WebKit contents, but in backingstore pixel coordinates. This makes it not only unwieldy but also terribly fragile; when the backingstore changes its zoom factor then the result of this method has to change as well, synchronously, even though many things happen on the user interface thread these days.

BlackBerry::Platform now exposes a ViewportAccessor interface, which can be used to get the same rectangle in document coordinates or target pixel coordinates, both being a better choice for being passed as an argument as they make the backingstore scale an implementation detail.

I started out on a smaller patch that would add a setScale() to BackingStoreGeometry and the single tiles. Not only does this provide safety against blitting a buffer with wrong scale, but it also lays the foundation for blitting multiple states at different scales, if we want that. (There is certainly a need for having both a low-res preview tile with wide coverage underlying the current tiles, or maybe rendering some tiles in a different resolution while we pinch-zoom.)

The disadvantage of my first approach was that it used the scale in the current BackingStoreGeometry (a.k.a. tile layout) even if we&apos;re operating without tiles. That made it necessary to access the front and back state BackingStoreGeometry objects in places where we wouldn&apos;t usually care about or update any BackingStoreGeometry at all, and where it&apos;s not threadsafe to do so. (Hat tip to Arvid for calling me out on this.)

The solution turned out to be a lot nicer, but also more wide-ranging in scope. The relevant backState()-&gt;setScale() calls are still in the patch, but I removed the bad ones. In turn, I modified blitVisibleContents() so that it doesn&apos;t use backingstore tile pixel measures at all except in the block where it actually blits from the tiles. Other code in blitVisibleContents(), including the WebPageCompositor part, now only refers to either document (WebCore) or user-visible pixel coordinates.

In order to achieve this, I had to change paintDefaultBackground() so that it doesn&apos;t take a backingstore-to-UI-pixel differential transformation. It&apos;s very easy to calculate those same areas with ViewportAccessor methods. However, that in turn broke the DEBUG_VISUALIZE blocks (which were slightly broken before); in order to fix this mode it seemed like a good solution to supply a different ViewportAccessor instead. The paintDefaultBackground() call in renderDirectToWindow() seemed to be broken too as it didn&apos;t take scroll information into account, and it happens on the WebKit thread so I can&apos;t use the UI thread ViewportAccessor there.

In the end, the patch introduced two new ViewportAccessors. The plan for the WebKitThreadViewportAccessor is to use it in lots more places and also replace the unloved transformed/untransformed nomenclature with the more intuitive pixel/document naming provided by ViewportAccessor.

== tl;dr == Never worry anymore about the resolution of backingstore tiles when asking for scaled blits.

Internally tracked as RIM PR 173292.
Patch below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736180</commentid>
    <comment_count>1</comment_count>
      <attachid>167437</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2012-10-05 20:21:36 -0700</bug_when>
    <thetext>Created attachment 167437
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736211</commentid>
    <comment_count>2</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-10-06 01:41:51 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=167437) [details]
&gt; Patch

Looks very good to me! Great stuff!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736313</commentid>
    <comment_count>3</comment_count>
      <attachid>167466</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2012-10-06 17:51:36 -0700</bug_when>
    <thetext>Created attachment 167466
Patch, same but with internal reviewer line

I take Arvid&apos;s comment as a positive internal review, as he did the previous round already and is probably the most knowledgeable person about this code right now.
Still needs an upstream review, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741196</commentid>
    <comment_count>4</comment_count>
      <attachid>168480</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2012-10-12 14:18:48 -0700</bug_when>
    <thetext>Created attachment 168480
Patch

Adam suggested that the scale tracking in geometry and tiles was poorly explained by the commit message. Here&apos;s an attempt at making it better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741466</commentid>
    <comment_count>5</comment_count>
      <attachid>168480</attachid>
    <who name="George Staikos">staikos</who>
    <bug_when>2012-10-13 06:10:43 -0700</bug_when>
    <thetext>Comment on attachment 168480
Patch

Good to go!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741467</commentid>
    <comment_count>6</comment_count>
      <attachid>168480</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-13 06:20:08 -0700</bug_when>
    <thetext>Comment on attachment 168480
Patch

Clearing flags on attachment: 168480

Committed r131257: &lt;http://trac.webkit.org/changeset/131257&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741468</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-13 06:20:12 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167437</attachid>
            <date>2012-10-05 20:21:36 -0700</date>
            <delta_ts>2012-10-06 17:51:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98581-20121005231914.patch</filename>
            <type>text/plain</type>
            <size>52913</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDEzNTZkNTAxZTU2ZjBiZTA3
MGVhYTBhNjE2MjllMzBhMTcyZWVlZDEuLjQ4MGFkNzYxY2ExYmVmNTE1Y2NhZDVlZTU0MmRmMDFm
NGE2MWNkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMTAtMDUgIEpha29iIFBl
dHNvdml0cyAgPGpwZXRzb3ZpdHNAcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gRmV0
Y2ggYmxpdCByZWN0cyBmcm9tIGEgdmlld3BvcnQgYWNjZXNzb3IKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NTgxCisgICAgICAgIFJJTSBQUiAxNzMy
OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
bmV3IFZpZXdwb3J0QWNjZXNzb3IgZmlsZXMgdG8gdGhlIGJ1aWxkLgorICAgICAgICBTZWUgU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBmb3IgdGhlCisgICAgICAgIHZlcmJvc2Ug
Y29tbWl0IG1lc3NhZ2UuCisKKyAgICAgICAgKiBQbGF0Zm9ybUJsYWNrQmVycnkuY21ha2U6CisK
IDIwMTItMTAtMDQgIFJvYiBCdWlzICA8cmJ1aXNAcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tC
ZXJyeV0gU3luYyB1cCBDTWFrZSBmaWxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5k
ZXggNzYxMDE3OTQ1OTFmODFiY2ViZmUwYWUxNmUwZGU1NTZkNThmMDJlOS4uN2E3OTIyYWJiOGMx
ZDczYjg5NTI1ZjljNWNlYjQ4M2Q2ZTk5ZjdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTI5IEBACisyMDEyLTEwLTA1ICBKYWtvYiBQZXRzb3ZpdHMgIDxqcGV0
c292aXRzQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIEZldGNoIGJsaXQgcmVjdHMg
ZnJvbSBhIHZpZXdwb3J0IGFjY2Vzc29yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05ODU4MQorICAgICAgICBSSU0gUFIgMTczMjkyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGxvbmctc3RhbmRpbmcg
dXNlckludGVyZmFjZUJsaXR0ZWRWaXNpYmxlQ29udGVudHNSZWN0KCkKKyAgICAgICAgbWV0aG9k
IGluIFdlYlBhZ2VDbGllbnQgaGFzIGxvbmcgYmVlbiBhIG1ham9yIGFubm95YW5jZSwKKyAgICAg
ICAgYXMgaXQgcmV0dXJucyB0aGUgc291cmNlIHJlY3QgZm9yIFdlYktpdCBjb250ZW50cyBidXQg
aW4KKyAgICAgICAgYmFja2luZ3N0b3JlIHBpeGVsIGNvb3JkaW5hdGVzLiBUaGlzIG1ha2VzIGl0
IG5vdCBvbmx5CisgICAgICAgIHVud2llbGR5IGJ1dCBhbHNvIHRlcnJpYmx5IGZyYWdpbGUsIGVz
cGVjaWFsbHkgd2hlbgorICAgICAgICBib3RoIHBpbmNoIHpvb20gYW5kIGEgYmFja2luZ3N0b3Jl
IHJlLXJlbmRlciBib3RoIGRlYWwKKyAgICAgICAgd2l0aCB0aGUgc2FtZSByZWN0YW5nbGUuIE9u
IGRpZmZlcmVudCB0aHJlYWRzLCBldmVuLgorCisgICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3Jt
IG5vdyBleHBvc2VzIGEgVmlld3BvcnRBY2Nlc3NvcgorICAgICAgICBpbnRlcmZhY2UsIHdoaWNo
IGNhbiBiZSB1c2VkIHRvIGdldCB0aGUgdmFyaW91cyByZWN0cworICAgICAgICBpbiBkb2N1bWVu
dCBjb29yZGluYXRlcyBvciB0YXJnZXQgcGl4ZWwgY29vcmRpbmF0ZXMsCisgICAgICAgIGJvdGgg
YmVpbmcgYSBiZXR0ZXIgY2hvaWNlIHRoYW4gdGhlIG9uZXMgZGVwZW5kZW50CisgICAgICAgIG9u
IGFuIGltcGxlbnRhdGlvbiBkZXRhaWwuCisKKyAgICAgICAgVGhpcyBjb21taXQgbWFrZXMgdXNl
IG9mIHRoaXMgbmV3IGZ1bmN0aW9uYWxpdHkuCisgICAgICAgIEluc3RlYWQgb2YgcmVseWluZyBv
biB0aGUgcGFzc2VkIHJlY3RhbmdsZSB0byBjb250YWluCisgICAgICAgIGltcGxpY2l0IGluZm9y
bWF0aW9uIGFib3V0IHRoZSBzY2FsZSBmYWN0b3IsIHdlIG5vdworICAgICAgICB0cmFjayBpdCBv
biBhIHBlci1nZW9tZXRyeS1zdGF0ZSBiYXNpcyBhbmQgY2FsY3VsYXRlCisgICAgICAgIHRoZSBy
ZW1haW5pbmcgYmFja2luZ3N0b3JlLXRvLXZpZXdwb3J0IHRyYW5zZm9ybWF0aW9uCisgICAgICAg
IG9ubHkgaWYgYW5kIHdoZXJlIHdlIG5lZWQgaXQuCisKKyAgICAgICAgQXMgYSByZXN1bHQsIHdl
IGFyZSBub3cgYSBsb3QgbW9yZSByb2J1c3QgYWdhaW5zdAorICAgICAgICBzeW5jaG9uaXphdGlv
biBpc3N1ZXMgcmVsYXRlZCB0byBiYWNraW5nc3RvcmUKKyAgICAgICAgZ2VvbWV0cnkgY2hhbmdl
cy4KKworICAgICAgICBUaGlzIGFsc28gb3BlbnMgdXAgb3Bwb3J0dW5pdGllcyB0byBmdXJ0aGVy
IGltcHJvdmUKKyAgICAgICAgYmFja2luZ3N0b3JlIHJlbmRlcmluZyBsYXRlciB0byB1c2UgbW9y
ZSB0aGFuIGp1c3QKKyAgICAgICAgb25lIHNjYWxlIGZvciBhbGwgc3VyZmFjZXMgaW4gYSBnaXZl
biBmcmFtZS4KKyAgICAgICAgTm8gc3VjaCB0aGluZyBpcyBpbXBsZW1lbnRlZCBpbiB0aGlzIHBh
dGNoIHRob3VnaC4KKworICAgICAgICBJbiBhZGFwdGluZy9maXhpbmcgdGhlIGJhY2tpbmdzdG9y
ZSB2aXN1YWxpemF0aW9uCisgICAgICAgIGRlYnVnIG1vZGUgYW5kIHRoZSBkZWZhdWx0IGJhY2tn
cm91bmQgcGFpbnRpbmcgaW4KKyAgICAgICAgcmVuZGVyRGlyZWN0VG9XaW5kb3coKSwgd2UgYWxz
byBpbnRyb2R1Y2UgbmV3CisgICAgICAgIFZpZXdwb3J0QWNjZXNzb3Igc3ViY2xhc3NlcyB0aGF0
IGNhbiBzdWJzZXF1ZW50bHkKKyAgICAgICAgYmUgdXNlZCB0byByZXBsYWNlIG1ldGhvZHMgZnJv
bSBXZWJQYWdlIGFuZCBlbHNld2hlcmUuCisKKyAgICAgICAgKiBBcGkvQmFja2luZ1N0b3JlLmNw
cDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6c2xv
d1Njcm9sbCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZh
dGU6OnNjcm9sbCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVBy
aXZhdGU6OnNldEJhY2tpbmdTdG9yZVJlY3QpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpCYWNraW5nU3RvcmVQcml2YXRlOjpzY3JvbGxCYWNraW5nU3RvcmUpOgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpyZW5kZXJEaXJlY3RUb1dpbmRv
dyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OnJl
bmRlcik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6
OnBhaW50RGVmYXVsdEJhY2tncm91bmQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpC
YWNraW5nU3RvcmVQcml2YXRlOjpibGl0VmlzaWJsZUNvbnRlbnRzKToKKyAgICAgICAgKEJsYWNr
QmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6YmxpdEhvcml6b250YWxTY3JvbGxi
YXIpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpi
bGl0VmVydGljYWxTY3JvbGxiYXIpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNr
aW5nU3RvcmVQcml2YXRlOjp1cGRhdGVUaWxlc0ZvclNjcm9sbE9yTm90UmVuZGVyZWRSZWdpb24p
OgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjp1cGRh
dGVUaWxlTWF0cml4SWZOZWVkZWQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNr
aW5nU3RvcmVQcml2YXRlOjpvcmllbnRhdGlvbkNoYW5nZWQpOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpjcmVhdGVTdXJmYWNlcyk6CisgICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OmludmFsaWRhdGVXaW5k
b3cpOgorICAgICAgICAqIEFwaS9CYWNraW5nU3RvcmVfcC5oOgorICAgICAgICAoQmxhY2tCZXJy
eSk6CisgICAgICAgIChQbGF0Zm9ybSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJh
Y2tpbmdTdG9yZUdlb21ldHJ5OjpCYWNraW5nU3RvcmVHZW9tZXRyeSk6CisgICAgICAgIChCbGFj
a0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZUdlb21ldHJ5OjpzY2FsZSk6CisgICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZUdlb21ldHJ5OjpzZXRTY2FsZSk6CisgICAg
ICAgIChCYWNraW5nU3RvcmVHZW9tZXRyeSk6CisgICAgICAgIChCYWNraW5nU3RvcmVQcml2YXRl
KToKKyAgICAgICAgKiBBcGkvV2ViUGFnZS5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJL
aXQ6OldlYlBhZ2VQcml2YXRlOjpXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAgIChCbGFja0JlcnJ5
OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjp+V2ViUGFnZVByaXZhdGUpOgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6aW5pdCk6CisgICAgICAgIChCbGFja0Jl
cnJ5OjpXZWJLaXQ6OldlYlBhZ2U6OndlYmtpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3IpOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBBcGkvV2ViUGFnZS5oOgorICAgICAgICAoUGxhdGZv
cm0pOgorICAgICAgICAqIEFwaS9XZWJQYWdlQ2xpZW50Lmg6CisgICAgICAgIChQbGF0Zm9ybSk6
CisgICAgICAgICogQXBpL1dlYlBhZ2VDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKEJsYWNrQmVy
cnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjphbmltYXRpb25GcmFtZUNoYW5n
ZWQpOgorICAgICAgICAqIEFwaS9XZWJQYWdlX3AuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9CYWNraW5nU3Rv
cmVUaWxlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6VGlsZUJ1ZmZlcjo6VGls
ZUJ1ZmZlcik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlRpbGVCdWZmZXI6OmlzUmVu
ZGVyZWQpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvQmFja2luZ1N0b3JlVGlsZS5oOgorICAg
ICAgICAoVGlsZUJ1ZmZlcik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlRpbGVCdWZm
ZXI6OnNjYWxlKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6VGlsZUJ1ZmZlcjo6c2V0
U2NhbGUpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvQmFja2luZ1N0b3JlVmlzdWFsaXphdGlv
blZpZXdwb3J0QWNjZXNzb3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVZpc3VhbGl6YXRpb25WaWV3cG9ydEFj
Y2Vzc29yOjpCYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3BvcnRBY2Nlc3Nvcik6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVZpc3VhbGl6YXRpb25WaWV3cG9y
dEFjY2Vzc29yOjpwaXhlbENvbnRlbnRzU2l6ZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJL
aXQ6OkJhY2tpbmdTdG9yZVZpc3VhbGl6YXRpb25WaWV3cG9ydEFjY2Vzc29yOjpkb2N1bWVudENv
bnRlbnRzU2l6ZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVZp
c3VhbGl6YXRpb25WaWV3cG9ydEFjY2Vzc29yOjpwaXhlbFNjcm9sbFBvc2l0aW9uKToKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlVmlzdWFsaXphdGlvblZpZXdwb3J0
QWNjZXNzb3I6OmRvY3VtZW50U2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoQmxhY2tCZXJyeTo6
V2ViS2l0OjpCYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3BvcnRBY2Nlc3Nvcjo6cGl4ZWxW
aWV3cG9ydFNpemUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVW
aXN1YWxpemF0aW9uVmlld3BvcnRBY2Nlc3Nvcjo6ZG9jdW1lbnRWaWV3cG9ydFNpemUpOgorICAg
ICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3Bv
cnRBY2Nlc3Nvcjo6ZGVzdGluYXRpb25TdXJmYWNlT2Zmc2V0KToKKyAgICAgICAgKEJsYWNrQmVy
cnk6OldlYktpdDo6QmFja2luZ1N0b3JlVmlzdWFsaXphdGlvblZpZXdwb3J0QWNjZXNzb3I6OnNj
YWxlKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlVmlzdWFsaXph
dGlvblZpZXdwb3J0QWNjZXNzb3I6OnN0YXRlKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Jh
Y2tpbmdTdG9yZVZpc3VhbGl6YXRpb25WaWV3cG9ydEFjY2Vzc29yLmg6IEFkZGVkLgorICAgICAg
ICAoQmxhY2tCZXJyeSk6CisgICAgICAgIChQbGF0Zm9ybSk6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoQmFja2luZ1N0b3JlVmlzdWFsaXphdGlvblZpZXdwb3J0QWNjZXNzb3IpOgorICAg
ICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3Bv
cnRBY2Nlc3Nvcjo6fkJhY2tpbmdTdG9yZVZpc3VhbGl6YXRpb25WaWV3cG9ydEFjY2Vzc29yKToK
KyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L1dlYktpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3IuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OldlYktpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3I6OldlYktpdFRocmVhZFZpZXdwb3J0QWNjZXNz
b3IpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJLaXRUaHJlYWRWaWV3cG9ydEFj
Y2Vzc29yOjpwaXhlbENvbnRlbnRzU2l6ZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OldlYktpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3I6OmRvY3VtZW50Q29udGVudHNTaXplKToKKyAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViS2l0VGhyZWFkVmlld3BvcnRBY2Nlc3Nvcjo6
cGl4ZWxTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYktp
dFRocmVhZFZpZXdwb3J0QWNjZXNzb3I6OmRvY3VtZW50U2Nyb2xsUG9zaXRpb24pOgorICAgICAg
ICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJLaXRUaHJlYWRWaWV3cG9ydEFjY2Vzc29yOjpwaXhl
bFZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYktpdFRocmVh
ZFZpZXdwb3J0QWNjZXNzb3I6OmRvY3VtZW50Vmlld3BvcnRTaXplKToKKyAgICAgICAgKEJsYWNr
QmVycnk6OldlYktpdDo6V2ViS2l0VGhyZWFkVmlld3BvcnRBY2Nlc3Nvcjo6ZGVzdGluYXRpb25T
dXJmYWNlT2Zmc2V0KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViS2l0VGhyZWFk
Vmlld3BvcnRBY2Nlc3Nvcjo6c2NhbGUpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvV2ViS2l0
VGhyZWFkVmlld3BvcnRBY2Nlc3Nvci5oOiBBZGRlZC4KKyAgICAgICAgKEJsYWNrQmVycnkpOgor
ICAgICAgICAoUGxhdGZvcm0pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdFRo
cmVhZFZpZXdwb3J0QWNjZXNzb3IpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJL
aXRUaHJlYWRWaWV3cG9ydEFjY2Vzc29yOjp+V2ViS2l0VGhyZWFkVmlld3BvcnRBY2Nlc3Nvcik6
CisKIDIwMTItMTAtMDUgIFJvYiBCdWlzICA8cmJ1aXNAcmltLmNvbT4KIAogICAgICAgICBbQmxh
Y2tCZXJyeV0gSW1wbGVtZW50IFRlc3RSdW5uZXIuc2V0TW9ja0RldmljZU9yaWVudGF0aW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZSBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCmluZGV4IGRlNDNjZWI1NjBlZThiZDQ4
NDRmYjJlZDhkN2IwNTFmOTMwYjlhMzQuLmUzZDk5NDg1ZGE1OTQxZjIwM2U1MzE4NjQyZTJmOTI1
NjBmMjQwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCkBAIC0xMjUs
NiArMTI1LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKICAgICBibGFja2JlcnJ5L1dl
YktpdFN1cHBvcnQvQWJvdXREYXRhLmNwcAogICAgIGJsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9C
YWNraW5nU3RvcmVUaWxlLmNwcAogICAgIGJsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9CYWNraW5n
U3RvcmVDbGllbnQuY3BwCisgICAgYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0JhY2tpbmdTdG9y
ZVZpc3VhbGl6YXRpb25WaWV3cG9ydEFjY2Vzc29yLmNwcAogICAgIGJsYWNrYmVycnkvV2ViS2l0
U3VwcG9ydC9EZWZhdWx0VGFwSGlnaGxpZ2h0LmNwcAogICAgIGJsYWNrYmVycnkvV2ViS2l0U3Vw
cG9ydC9ET01TdXBwb3J0LmNwcAogICAgIGJsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9GcmFtZUxh
eWVycy5jcHAKQEAgLTEzOCw2ICsxMzksNyBAQCBMSVNUKEFQUEVORCBXZWJLaXRfU09VUkNFUwog
ICAgIGJsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9TdXJmYWNlUG9vbC5jcHAKICAgICBibGFja2Jl
cnJ5L1dlYktpdFN1cHBvcnQvVG91Y2hFdmVudEhhbmRsZXIuY3BwCiAgICAgYmxhY2tiZXJyeS9X
ZWJLaXRTdXBwb3J0L0ZhdEZpbmdlcnMuY3BwCisgICAgYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0
L1dlYktpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3IuY3BwCiApCiAKIElGIChFTkFCTEVfV0VCR0wp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZS5jcHAKaW5kZXgg
Y2E5ZmEzZmVmNDQ1YjA3OTc1Nzc4YmE1NDYzN2E0OGVlMjEwZTIzZi4uNDhkMWEwZGViZjZjYmMy
M2NmMzJlNjJiNmUwMzkzMzE5NGUxNDE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9BcGkvQmFja2luZ1N0b3JlLmNwcApAQCAtMjEsNiArMjEsNyBAQAogCiAjaW5jbHVkZSAiQmFj
a2luZ1N0b3JlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQmFja2luZ1N0b3JlVGlsZS5oIgorI2luY2x1
ZGUgIkJhY2tpbmdTdG9yZVZpc3VhbGl6YXRpb25WaWV3cG9ydEFjY2Vzc29yLmgiCiAjaW5jbHVk
ZSAiQmFja2luZ1N0b3JlX3AuaCIKICNpbmNsdWRlICJGYXRGaW5nZXJzLmgiCiAjaW5jbHVkZSAi
RnJhbWUuaCIKQEAgLTQ1LDYgKzQ2LDcgQEAKICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1N
ZXNzYWdlQ2xpZW50Lmg+CiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtU2NyZWVuLmg+CiAj
aW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDxCbGFja0Jl
cnJ5UGxhdGZvcm1WaWV3cG9ydEFjY2Vzc29yLmg+CiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRm
b3JtV2luZG93Lmg+CiAKICNpbmNsdWRlIDxTa0ltYWdlRGVjb2Rlci5oPgpAQCAtNDEyLDYgKzQx
NCw4IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVwYWludChjb25zdCBQbGF0Zm9ybTo6
SW50UmVjdCYgd2luZG93UmVjdCwKIAogdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpzbG93U2Ny
b2xsKGNvbnN0IFBsYXRmb3JtOjpJbnRTaXplJiBkZWx0YSwgY29uc3QgUGxhdGZvcm06OkludFJl
Y3QmIHdpbmRvd1JlY3QsIGJvb2wgaW1tZWRpYXRlKQogeworICAgIEFTU0VSVChCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6d2ViS2l0VGhyZWFkTWVzc2FnZUNsaWVudCgpLT5pc0N1cnJlbnRUaHJlYWQo
KSk7CisKICNpZiBERUJVR19CQUNLSU5HU1RPUkUKICAgICAvLyBTdGFydCB0aGUgdGltZSBtZWFz
dXJlbWVudC4uLgogICAgIGRvdWJsZSB0aW1lID0gV1RGOjpjdXJyZW50VGltZSgpOwpAQCAtNDQ1
LDYgKzQ0OSw4IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6c2Nyb2xsKGNvbnN0IFBsYXRm
b3JtOjpJbnRTaXplJiBkZWx0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBzY3JvbGxWaWV3UmVjdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBjbGlwUmVjdCkKIHsKKyAg
ICBBU1NFUlQoQmxhY2tCZXJyeTo6UGxhdGZvcm06OndlYktpdFRocmVhZE1lc3NhZ2VDbGllbnQo
KS0+aXNDdXJyZW50VGhyZWFkKCkpOworCiAgICAgLy8gSWYgd2UgYXJlIGRpcmVjdCByZW5kZXJp
bmcgdGhlbiB3ZSBhcmUgZm9yY2VkIHRvIGdvIGRvd24gdGhlIHNsb3cgcGF0aAogICAgIC8vIHRv
IHNjcm9sbGluZy4KICAgICBpZiAoc2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKSkgewpA
QCAtNjgyLDcgKzY4OCw3IEBAIFBsYXRmb3JtOjpJbnRSZWN0IEJhY2tpbmdTdG9yZVByaXZhdGU6
OmJhY2tpbmdTdG9yZVJlY3RGb3JTY3JvbGwoaW50IGRlbHRhWCwgaW50CiAgICAgcmV0dXJuIGJh
Y2tpbmdTdG9yZVJlY3Q7CiB9CiAKLXZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6c2V0QmFja2lu
Z1N0b3JlUmVjdChjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgYmFja2luZ1N0b3JlUmVjdCkKK3Zv
aWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6c2V0QmFja2luZ1N0b3JlUmVjdChjb25zdCBQbGF0Zm9y
bTo6SW50UmVjdCYgYmFja2luZ1N0b3JlUmVjdCwgZG91YmxlIHNjYWxlKQogewogICAgIGlmICgh
bV93ZWJQYWdlLT5pc1Zpc2libGUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjkzLDggKzY5OSw5
IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6c2V0QmFja2luZ1N0b3JlUmVjdChjb25zdCBQ
bGF0Zm9ybTo6SW50UmVjdCYgYmFja2luZ1N0CiAgICAgfQogCiAgICAgUGxhdGZvcm06OkludFJl
Y3QgY3VycmVudEJhY2tpbmdTdG9yZVJlY3QgPSBmcm9udFN0YXRlKCktPmJhY2tpbmdTdG9yZVJl
Y3QoKTsKKyAgICBkb3VibGUgY3VycmVudFNjYWxlID0gZnJvbnRTdGF0ZSgpLT5zY2FsZSgpOwog
Ci0gICAgaWYgKGJhY2tpbmdTdG9yZVJlY3QgPT0gY3VycmVudEJhY2tpbmdTdG9yZVJlY3QpCisg
ICAgaWYgKGJhY2tpbmdTdG9yZVJlY3QgPT0gY3VycmVudEJhY2tpbmdTdG9yZVJlY3QgJiYgc2Nh
bGUgPT0gY3VycmVudFNjYWxlKQogICAgICAgICByZXR1cm47CiAKICNpZiBERUJVR19USUxFTUFU
UklYCkBAIC03NTcsNyArNzY0LDcgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpzZXRCYWNr
aW5nU3RvcmVSZWN0KGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBiYWNraW5nU3QKICNlbmRpZgog
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBNYXJrIGFzIG5lZWRpbmcg
dXBkYXRlLgotICAgICAgICAgICAgICAgIGlmICghdGlsZS0+ZnJvbnRCdWZmZXIoKS0+aXNSZW5k
ZXJlZCgpCisgICAgICAgICAgICAgICAgaWYgKCF0aWxlLT5mcm9udEJ1ZmZlcigpLT5pc1JlbmRl
cmVkKGN1cnJlbnRTdGF0ZS0+c2NhbGUoKSkKICAgICAgICAgICAgICAgICAgICAgJiYgIWlzQ3Vy
cmVudFZpc2libGVKb2IobmV3SW5kZXgsIHRpbGUsIGJhY2tpbmdTdG9yZVJlY3QpKQogICAgICAg
ICAgICAgICAgICAgICB1cGRhdGVUaWxlKG9yaWdpbiwgZmFsc2UgLyppbW1lZGlhdGUqLyk7CiAg
ICAgICAgICAgICB9CkBAIC04MTAsNiArODE3LDcgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRl
OjpzZXRCYWNraW5nU3RvcmVSZWN0KGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBiYWNraW5nU3QK
ICAgICAvLyBDaGVja3MgdG8gbWFrZSBzdXJlIHdlIGhhdmVuJ3QgbG9zdCBhbnkgdGlsZXMuCiAg
ICAgQVNTRVJUKGN1cnJlbnRNYXAuc2l6ZSgpID09IG5ld1RpbGVNYXAuc2l6ZSgpKTsKIAorICAg
IGJhY2tTdGF0ZSgpLT5zZXRTY2FsZShzY2FsZSk7CiAgICAgYmFja1N0YXRlKCktPnNldE51bWJl
ck9mVGlsZXNXaWRlKGJhY2tpbmdTdG9yZVJlY3Qud2lkdGgoKSAvIHRpbGVXaWR0aCgpKTsKICAg
ICBiYWNrU3RhdGUoKS0+c2V0TnVtYmVyT2ZUaWxlc0hpZ2goYmFja2luZ1N0b3JlUmVjdC5oZWln
aHQoKSAvIHRpbGVIZWlnaHQoKSk7CiAgICAgYmFja1N0YXRlKCktPnNldEJhY2tpbmdTdG9yZU9m
ZnNldChiYWNraW5nU3RvcmVSZWN0LmxvY2F0aW9uKCkpOwpAQCAtOTQwLDYgKzk0OCw4IEBAIGJv
b2wgQmFja2luZ1N0b3JlUHJpdmF0ZTo6aXNDdXJyZW50VmlzaWJsZUpvYihjb25zdCBUaWxlSW5k
ZXgmIGluZGV4LCBCYWNraW5nU3RvCiAKIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6c2Nyb2xs
QmFja2luZ1N0b3JlKGludCBkZWx0YVgsIGludCBkZWx0YVkpCiB7CisgICAgQVNTRVJUKEJsYWNr
QmVycnk6OlBsYXRmb3JtOjp3ZWJLaXRUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmlzQ3VycmVudFRo
cmVhZCgpKTsKKwogICAgIGlmICghbV93ZWJQYWdlLT5pc1Zpc2libGUoKSkKICAgICAgICAgcmV0
dXJuOwogCkBAIC05NzIsNyArOTgyLDcgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpzY3Jv
bGxCYWNraW5nU3RvcmUoaW50IGRlbHRhWCwgaW50IGRlbHRhWSkKIAogICAgIEFTU0VSVCghYmFj
a2luZ1N0b3JlUmVjdC5pc0VtcHR5KCkpOwogCi0gICAgc2V0QmFja2luZ1N0b3JlUmVjdChiYWNr
aW5nU3RvcmVSZWN0KTsKKyAgICBzZXRCYWNraW5nU3RvcmVSZWN0KGJhY2tpbmdTdG9yZVJlY3Qs
IG1fd2ViUGFnZS0+ZC0+Y3VycmVudFNjYWxlKCkpOwogfQogCiBib29sIEJhY2tpbmdTdG9yZVBy
aXZhdGU6OnJlbmRlckRpcmVjdFRvV2luZG93KGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiByZWN0
KQpAQCAtOTg4LDcgKzk5OCw3IEBAIGJvb2wgQmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVuZGVyRGly
ZWN0VG9XaW5kb3coY29uc3QgUGxhdGZvcm06OkludFJlY3QmIHJlY3QpCiAgICAgUGxhdGZvcm06
OkludFJlY3Qgc2NyZWVuUmVjdCA9IG1fY2xpZW50LT5tYXBGcm9tVHJhbnNmb3JtZWRDb250ZW50
c1RvVHJhbnNmb3JtZWRWaWV3cG9ydChkaXJ0eVJlY3QpOwogICAgIHdpbmRvd0Zyb250QnVmZmVy
U3RhdGUoKS0+Y2xlYXJCbGl0dGVkUmVnaW9uKHNjcmVlblJlY3QpOwogCi0gICAgcGFpbnREZWZh
dWx0QmFja2dyb3VuZChkaXJ0eVJlY3QsIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHRydWUgLypm
bHVzaCovKTsKKyAgICBwYWludERlZmF1bHRCYWNrZ3JvdW5kKGRpcnR5UmVjdCwgbV93ZWJQYWdl
LT53ZWJraXRUaHJlYWRWaWV3cG9ydEFjY2Vzc29yKCksIHRydWUgLypmbHVzaCovKTsKIAogICAg
IGNvbnN0IFBsYXRmb3JtOjpJbnRQb2ludCBvcmlnaW4gPSB1bmNsaXBwZWRWaXNpYmxlQ29udGVu
dHNSZWN0KCkubG9jYXRpb24oKTsKICAgICAvLyBXZSBkb24ndCBuZWVkIGEgYnVmZmVyIHNpbmNl
IHdlJ3JlIGRpcmVjdCByZW5kZXJpbmcgdG8gd2luZG93LgpAQCAtMTAzOSw2ICsxMDQ5LDcgQEAg
Ym9vbCBCYWNraW5nU3RvcmVQcml2YXRlOjpyZW5kZXIoY29uc3QgUGxhdGZvcm06OkludFJlY3Qm
IHJlY3QpCiAKICAgICBCYWNraW5nU3RvcmVHZW9tZXRyeSogY3VycmVudFN0YXRlID0gZnJvbnRT
dGF0ZSgpOwogICAgIFRpbGVNYXAgY3VycmVudE1hcCA9IGN1cnJlbnRTdGF0ZS0+dGlsZU1hcCgp
OworICAgIGRvdWJsZSBjdXJyZW50U2NhbGUgPSBjdXJyZW50U3RhdGUtPnNjYWxlKCk7CiAKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRpbGVSZWN0TGlzdC5zaXplKCk7ICsraSkgewogICAg
ICAgICBUaWxlUmVjdCB0aWxlUmVjdCA9IHRpbGVSZWN0TGlzdFtpXTsKQEAgLTEwNTYsNiArMTA2
Nyw4IEBAIGJvb2wgQmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVuZGVyKGNvbnN0IFBsYXRmb3JtOjpJ
bnRSZWN0JiByZWN0KQogICAgICAgICBpZiAoIXRpbGUtPmJhY2tncm91bmRQYWludGVkKCkpCiAg
ICAgICAgICAgICB0aWxlLT5wYWludEJhY2tncm91bmQoKTsKIAorICAgICAgICB0aWxlLT5iYWNr
QnVmZmVyKCktPnNldFNjYWxlKGN1cnJlbnRTY2FsZSk7CisKICAgICAgICAgLy8gUGFpbnQgZGVm
YXVsdCBiYWNrZ3JvdW5kIGlmIGNvbnRlbnRzIHJlY3QgaXMgZW1wdHkuCiAgICAgICAgIGlmICgh
ZXhwYW5kZWRDb250ZW50c1JlY3QoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIE90aGVy
d2lzZSB3ZSBzaG91bGQgY2xpcCB0aGUgY29udGVudHMgc2l6ZSBhbmQgcmVuZGVyIHRoZSBjb250
ZW50LgpAQCAtMTEwMCw3ICsxMTEzLDcgQEAgYm9vbCBCYWNraW5nU3RvcmVQcml2YXRlOjpyZW5k
ZXIoY29uc3QgUGxhdGZvcm06OkludFJlY3QmIHJlY3QpCiAgICAgICAgIC8vIHRoZSByZW5kZXJl
ZCByZWdpb24gb2YgdGhlIGJhY2sgYnVmZmVyIGNvbnRhaW5zIHRoZSByZW5kZXJlZCByZWdpb24g
b2YgdGhlIGZyb250IGJ1ZmZlci4KICAgICAgICAgLy8gQXNzZXJ0IHRoaXMganVzdCB0byBtYWtl
IHN1cmUuCiAgICAgICAgIC8vIEZvciBwcmV2aW91c2x5IHVuY29tbWl0dGVkIHRpbGVzLCB0aGUg
ZnJvbnQgYnVmZmVyJ3MgcmVuZGVyZWQgcmVnaW9uIGlzIG5vdCByZWxldmFudC4KLSAgICAgICAg
QVNTRVJUKCF3YXNDb21taXR0ZWQgfHwgdGlsZS0+YmFja0J1ZmZlcigpLT5pc1JlbmRlcmVkKHRp
bGUtPmZyb250QnVmZmVyKCktPnJlbmRlcmVkUmVnaW9uKCkpKTsKKyAgICAgICAgQVNTRVJUKCF3
YXNDb21taXR0ZWQgfHwgdGlsZS0+YmFja0J1ZmZlcigpLT5pc1JlbmRlcmVkKHRpbGUtPmZyb250
QnVmZmVyKCktPnJlbmRlcmVkUmVnaW9uKCksIGN1cnJlbnRTY2FsZSkpOwogCiAgICAgICAgIC8v
IFdlIHdpbGwgbmVlZCBhIHN3YXAgaGVyZSBiZWNhdXNlIG9mIHRoZSBzaGFyZWQgYmFjayBidWZm
ZXIuCiAgICAgICAgIHRpbGUtPnN3YXBCdWZmZXJzKCk7CkBAIC0xMTcxLDMxICsxMTg0LDI3IEBA
IHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6Y29weVByZXZpb3VzQ29udGVudHNUb0JhY2tTdXJm
YWNlT2ZUaWxlKGNvbnN0IFBsYXRmb3JtCiAgICAgfQogfQogCi12b2lkIEJhY2tpbmdTdG9yZVBy
aXZhdGU6OnBhaW50RGVmYXVsdEJhY2tncm91bmQoY29uc3QgUGxhdGZvcm06OkludFJlY3QmIGNv
bnRlbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1hdGlvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZsdXNo
KQordm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpwYWludERlZmF1bHRCYWNrZ3JvdW5kKGNvbnN0
IFBsYXRmb3JtOjpJbnRSZWN0JiBkc3RSZWN0LCBQbGF0Zm9ybTo6Vmlld3BvcnRBY2Nlc3Nvciog
dmlld3BvcnRBY2Nlc3NvciwgYm9vbCBmbHVzaCkKIHsKLSAgICBjb25zdCBQbGF0Zm9ybTo6SW50
UmVjdCBjb250ZW50c1JlY3QgPSBQbGF0Zm9ybTo6SW50UmVjdChQbGF0Zm9ybTo6SW50UG9pbnQo
MCwgMCksIG1fd2ViUGFnZS0+ZC0+dHJhbnNmb3JtZWRDb250ZW50c1NpemUoKSk7Ci0gICAgUGxh
dGZvcm06OkludFBvaW50IG9yaWdpbiA9IGNvbnRlbnRzLmxvY2F0aW9uKCk7Ci0gICAgUGxhdGZv
cm06OkludFJlY3QgY29udGVudHNDbGlwcGVkID0gY29udGVudHM7CisgICAgUGxhdGZvcm06Oklu
dFJlY3QgY2xpcHBlZERzdFJlY3QgPSBkc3RSZWN0OworCisgICAgLy8gQmVjYXVzZSBvZiByb3Vu
ZGluZyBpdCBpcyBwb3NzaWJsZSB0aGF0IG92ZXJTY3JvbGxSZWN0IGNvdWxkIGJlIG9mZi1ieS1v
bmUgbGFyZ2VyCisgICAgLy8gdGhhbiB0aGUgc3VyZmFjZSBzaXplIG9mIHRoZSB3aW5kb3cuIFdl
IHByZXZlbnQgdGhpcyBoZXJlLCBieSBjbGFtcGluZworICAgIC8vIGl0IHRvIGVuc3VyZSB0aGF0
IGNhbid0IGhhcHBlbi4KKyAgICBjbGlwcGVkRHN0UmVjdC5pbnRlcnNlY3QoUGxhdGZvcm06Oklu
dFJlY3QoUGxhdGZvcm06OkludFBvaW50KDAsIDApLCBzdXJmYWNlU2l6ZSgpKSk7CisKKyAgICBp
ZiAoY2xpcHBlZERzdFJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CiAKICAgICAvLyBX
ZSBoYXZlIHRvIHBhaW50IHRoZSBkZWZhdWx0IGJhY2tncm91bmQgaW4gdGhlIGNhc2Ugb2Ygb3Zl
cnpvb20gYW5kCiAgICAgLy8gbWFrZSBzdXJlIGl0IGlzIGludmFsaWRhdGVkLgotICAgIFBsYXRm
b3JtOjpJbnRSZWN0UmVnaW9uIG92ZXJTY3JvbGxSZWdpb24KLSAgICAgICAgICAgID0gUGxhdGZv
cm06OkludFJlY3RSZWdpb246OnN1YnRyYWN0UmVnaW9ucyhQbGF0Zm9ybTo6SW50UmVjdChjb250
ZW50c0NsaXBwZWQpLCBjb250ZW50c1JlY3QpOworICAgIGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0
IHBpeGVsQ29udGVudHNSZWN0ID0gdmlld3BvcnRBY2Nlc3Nvci0+cGl4ZWxDb250ZW50c1JlY3Qo
KTsKKyAgICBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbiBvdmVyU2Nyb2xsUmVnaW9uID0gUGxhdGZv
cm06OkludFJlY3RSZWdpb246OnN1YnRyYWN0UmVnaW9ucygKKyAgICAgICAgZHN0UmVjdCwgdmll
d3BvcnRBY2Nlc3Nvci0+cGl4ZWxWaWV3cG9ydEZyb21Db250ZW50cyhwaXhlbENvbnRlbnRzUmVj
dCkpOwogCiAgICAgSW50UmVjdExpc3Qgb3ZlclNjcm9sbFJlY3RzID0gb3ZlclNjcm9sbFJlZ2lv
bi5yZWN0cygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3ZlclNjcm9sbFJlY3RzLnNp
emUoKTsgKytpKSB7CiAgICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0IG92ZXJTY3JvbGxSZWN0ID0g
b3ZlclNjcm9sbFJlY3RzLmF0KGkpOwotICAgICAgICBvdmVyU2Nyb2xsUmVjdC5tb3ZlKC1vcmln
aW4ueCgpLCAtb3JpZ2luLnkoKSk7Ci0gICAgICAgIG92ZXJTY3JvbGxSZWN0ID0gdHJhbnNmb3Jt
YXRpb24ubWFwUmVjdChvdmVyU2Nyb2xsUmVjdCk7Ci0KLSAgICAgICAgaWYgKCF0cmFuc2Zvcm1h
dGlvbi5pc0lkZW50aXR5KCkpIHsKLSAgICAgICAgICAgIC8vIEJlY2F1c2Ugb2Ygcm91bmRpbmcg
aXQgaXMgcG9zc2libGUgdGhhdCBvdmVyU2Nyb2xsUmVjdCBjb3VsZCBiZSBvZmYtYnktb25lIGxh
cmdlcgotICAgICAgICAgICAgLy8gdGhhbiB0aGUgc3VyZmFjZSBzaXplIG9mIHRoZSB3aW5kb3cu
IFdlIHByZXZlbnQgdGhpcyBoZXJlLCBieSBjbGFtcGluZwotICAgICAgICAgICAgLy8gaXQgdG8g
ZW5zdXJlIHRoYXQgY2FuJ3QgaGFwcGVuLgotICAgICAgICAgICAgb3ZlclNjcm9sbFJlY3QuaW50
ZXJzZWN0KFBsYXRmb3JtOjpJbnRSZWN0KFBsYXRmb3JtOjpJbnRQb2ludCgwLCAwKSwgc3VyZmFj
ZVNpemUoKSkpOwotICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fd2ViUGFnZS0+c2V0dGluZ3Mo
KS0+aXNFbmFibGVEZWZhdWx0T3ZlclNjcm9sbEJhY2tncm91bmQoKSkgewogICAgICAgICAgICAg
ZmlsbFdpbmRvdyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkRlZmF1bHRCYWNrZ3Jv
dW5kUGF0dGVybiwKQEAgLTEyNDksNjQgKzEyNTgsNzYgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2
YXRlOjpibGl0VmlzaWJsZUNvbnRlbnRzKGJvb2wgZm9yY2UpCiAKICAgICBtX2hhc0JsaXRKb2Jz
ID0gZmFsc2U7CiAKLSAgICBjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCBkc3RSZWN0ID0gbV93ZWJQ
YWdlLT5jbGllbnQoKS0+dXNlckludGVyZmFjZUJsaXR0ZWREZXN0aW5hdGlvblJlY3QoKTsKLSAg
ICBjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCBzcmNSZWN0ID0gbV93ZWJQYWdlLT5jbGllbnQoKS0+
dXNlckludGVyZmFjZUJsaXR0ZWRWaXNpYmxlQ29udGVudHNSZWN0KCk7Ci0gICAgY29uc3QgUGxh
dGZvcm06OkludFJlY3QgY29udGVudHNSZWN0ID0gUGxhdGZvcm06OkludFJlY3QoUGxhdGZvcm06
OkludFBvaW50KDAsIDApLCBtX2NsaWVudC0+dHJhbnNmb3JtZWRDb250ZW50c1NpemUoKSk7Cisg
ICAgUGxhdGZvcm06OlZpZXdwb3J0QWNjZXNzb3IqIHZpZXdwb3J0QWNjZXNzb3IgPSBtX3dlYlBh
Z2UtPmNsaWVudCgpLT51c2VySW50ZXJmYWNlVmlld3BvcnRBY2Nlc3NvcigpOworICAgIGNvbnN0
IFBsYXRmb3JtOjpJbnRSZWN0IGRzdFJlY3QgPSB2aWV3cG9ydEFjY2Vzc29yLT5kZXN0aW5hdGlv
blN1cmZhY2VSZWN0KCk7CisKKyAgICBjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCBwaXhlbFZpZXdw
b3J0UmVjdCA9IHZpZXdwb3J0QWNjZXNzb3ItPnBpeGVsVmlld3BvcnRSZWN0KCk7CisgICAgY29u
c3QgUGxhdGZvcm06OkZsb2F0UmVjdCBkb2N1bWVudFZpZXdwb3J0UmVjdCA9IHZpZXdwb3J0QWNj
ZXNzb3ItPmRvY3VtZW50RnJvbVBpeGVsQ29udGVudHMocGl4ZWxWaWV3cG9ydFJlY3QpOworICAg
IFBsYXRmb3JtOjpJbnRSZWN0IHBpeGVsU3JjUmVjdCA9IHBpeGVsVmlld3BvcnRSZWN0OworICAg
IFBsYXRmb3JtOjpGbG9hdFJlY3QgZG9jdW1lbnRTcmNSZWN0ID0gZG9jdW1lbnRWaWV3cG9ydFJl
Y3Q7CiAKICNpZiBERUJVR19WSVNVQUxJWkUKLSAgICAvLyBTdWJzdGl0dXRlIGEgZGVidWdSZWN0
IHRoYXQgY29uc2lzdHMgb2YgdGhlIHVuaW9uIG9mIHRoZSBiYWNraW5nc3RvcmUgcmVjdAotICAg
IC8vIGFuZCB0aGUgdWkgdGhyZWFkIHZpZXdwb3J0IHJlY3QgaW5zdGVhZCBvZiB0aGUgbm9ybWFs
IHNvdXJjZSByZWN0IHNvIHdlCi0gICAgLy8gY2FuIHZpc3VhbGl6ZSB0aGUgZW50aXJlIGJhY2tp
bmdzdG9yZSBhbmQgd2hhdCBpdCBpcyBkb2luZyB3aGVuIHdlCi0gICAgLy8gc2Nyb2xsIGFuZCB6
b29tIQotICAgIFBsYXRmb3JtOjpJbnRSZWN0IGRlYnVnUmVjdCA9IHVuaW9uT2ZSZWN0cyhzcmNS
ZWN0LCBmcm9udFN0YXRlKCktPmJhY2tpbmdTdG9yZVJlY3QoKSk7Ci0gICAgaWYgKGRlYnVnUmVj
dC53aWR0aCgpIDwgZGVidWdSZWN0LmhlaWdodCgpKQotICAgICAgICBkZWJ1Z1JlY3Quc2V0V2lk
dGgoY2VpbChkb3VibGUoc3JjUmVjdC53aWR0aCgpKSAqIChkb3VibGUoZGVidWdSZWN0LmhlaWdo
dCgpKSAvIHNyY1JlY3QuaGVpZ2h0KCkpKSk7Ci0gICAgaWYgKGRlYnVnUmVjdC5oZWlnaHQoKSA8
IGRlYnVnUmVjdC53aWR0aCgpKQotICAgICAgICBkZWJ1Z1JlY3Quc2V0SGVpZ2h0KGNlaWwoZG91
YmxlKHNyY1JlY3QuaGVpZ2h0KCkpICogKGRvdWJsZShkZWJ1Z1JlY3Qud2lkdGgoKSkgLyBzcmNS
ZWN0LndpZHRoKCkpKSk7Ci0gICAgUGxhdGZvcm06OkludFJlY3QgY29udGVudHMgPSBkZWJ1Z1Jl
Y3Q7Ci0jZWxzZQotICAgIFBsYXRmb3JtOjpJbnRSZWN0IGNvbnRlbnRzID0gc3JjUmVjdDsKKyAg
ICAvLyBTdWJzdGl0dXRlIGEgc3JjUmVjdCB0aGF0IGNvbnNpc3RzIG9mIHRoZSB3aG9sZSBiYWNr
aW5nc3RvcmUgZ2VvbWV0cnkKKyAgICAvLyBpbnN0ZWFkIG9mIHRoZSBub3JtYWwgdmlld3BvcnQg
c28gd2UgY2FuIHZpc3VhbGl6ZSB0aGUgZW50aXJlCisgICAgLy8gYmFja2luZ3N0b3JlIGFuZCB3
aGF0IGl0IGlzIGRvaW5nIHdoZW4gd2Ugc2Nyb2xsIGFuZCB6b29tIQorICAgIFBsYXRmb3JtOjpW
aWV3cG9ydEFjY2Vzc29yKiBkZWJ1Z1ZpZXdwb3J0QWNjZXNzb3IgPSBuZXcgQmFja2luZ1N0b3Jl
VmlzdWFsaXphdGlvblZpZXdwb3J0QWNjZXNzb3Iodmlld3BvcnRBY2Nlc3NvciwgdGhpcyk7Cisg
ICAgaWYgKGlzQWN0aXZlKCkpIHsKKyAgICAgICAgdmlld3BvcnRBY2Nlc3NvciA9IGRlYnVnVmll
d3BvcnRBY2Nlc3NvcjsKKyAgICAgICAgZG9jdW1lbnRTcmNSZWN0ID0gZGVidWdWaWV3cG9ydEFj
Y2Vzc29yLT5kb2N1bWVudFZpZXdwb3J0UmVjdCgpOworICAgICAgICBwaXhlbFNyY1JlY3QgPSBk
ZWJ1Z1ZpZXdwb3J0QWNjZXNzb3ItPnBpeGVsVmlld3BvcnRSZWN0KCk7CisgICAgfQogI2VuZGlm
CiAKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgbm90IGV4cGxpY2l0ZWx5IGRlcGVuZCBvbiBX
ZWJDb3JlOjouCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtYXRpb247Ci0gICAg
aWYgKCFjb250ZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHRyYW5zZm9ybWF0aW9uID0gVHJhbnNm
b3JtYXRpb25NYXRyaXg6OnJlY3RUb1JlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoMC4wLCAwLjAp
LCBXZWJDb3JlOjpJbnRTaXplKGNvbnRlbnRzLnNpemUoKSkpLCBXZWJDb3JlOjpJbnRSZWN0KGRz
dFJlY3QpKTsKLQogI2lmIERFQlVHX0JBQ0tJTkdTVE9SRQotICAgIEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpsb2coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsCi0gICAgICAg
ICJCYWNraW5nU3RvcmVQcml2YXRlOjpibGl0VmlzaWJsZUNvbnRlbnRzIGRzdFJlY3Q9KCVkLCVk
ICVkeCVkKSBzcmNSZWN0PSglZCwlZCAlZHglZCkiLAorICAgIEJsYWNrQmVycnk6OlBsYXRmb3Jt
Ojpsb2dBbHdheXMoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsCisgICAg
ICAgICJCYWNraW5nU3RvcmVQcml2YXRlOjpibGl0VmlzaWJsZUNvbnRlbnRzKCk6IGRzdFJlY3Q9
KCVkLCVkKSAlZHglZCwgZG9jdW1lbnRTcmNSZWN0PSglZiwgJWYpICVmIHggJWYsIHNjYWxlPSVm
IiwKICAgICAgICAgZHN0UmVjdC54KCksIGRzdFJlY3QueSgpLCBkc3RSZWN0LndpZHRoKCksIGRz
dFJlY3QuaGVpZ2h0KCksCi0gICAgICAgIHNyY1JlY3QueCgpLCBzcmNSZWN0LnkoKSwgc3JjUmVj
dC53aWR0aCgpLCBzcmNSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgZG9jdW1lbnRTcmNSZWN0Lngo
KSwgZG9jdW1lbnRTcmNSZWN0LnkoKSwgZG9jdW1lbnRTcmNSZWN0LndpZHRoKCksIGRvY3VtZW50
U3JjUmVjdC5oZWlnaHQoKSwKKyAgICAgICAgdmlld3BvcnRBY2Nlc3Nvci0+c2NhbGUoKSk7CiAj
ZW5kaWYKIAotICAgIFBsYXRmb3JtOjpJbnRQb2ludCBvcmlnaW4gPSBjb250ZW50cy5sb2NhdGlv
bigpOwotICAgIFBsYXRmb3JtOjpJbnRSZWN0IGNvbnRlbnRzQ2xpcHBlZCA9IGNvbnRlbnRzOwot
CiAgICAgVmVjdG9yPFRpbGVCdWZmZXIqPiBibGl0dGVkVGlsZXM7CiAKICAgICBpZiAoaXNBY3Rp
dmUoKSAmJiAhbV93ZWJQYWdlLT5kLT5jb21wb3NpdG9yRHJhd3NSb290TGF5ZXIoKSkgewotICAg
ICAgICBwYWludERlZmF1bHRCYWNrZ3JvdW5kKGNvbnRlbnRzLCB0cmFuc2Zvcm1hdGlvbiwgZmFs
c2UgLypmbHVzaCovKTsKKyAgICAgICAgcGFpbnREZWZhdWx0QmFja2dyb3VuZChkc3RSZWN0LCB2
aWV3cG9ydEFjY2Vzc29yLCBmYWxzZSAvKmZsdXNoKi8pOwogCiAgICAgICAgIEJhY2tpbmdTdG9y
ZUdlb21ldHJ5KiBjdXJyZW50U3RhdGUgPSBmcm9udFN0YXRlKCk7CiAgICAgICAgIFRpbGVNYXAg
Y3VycmVudE1hcCA9IGN1cnJlbnRTdGF0ZS0+dGlsZU1hcCgpOworICAgICAgICBkb3VibGUgY3Vy
cmVudFNjYWxlID0gY3VycmVudFN0YXRlLT5zY2FsZSgpOworCisgICAgICAgIGNvbnN0IFBsYXRm
b3JtOjpJbnRSZWN0IHRyYW5zZm9ybWVkQ29udGVudHNSZWN0ID0gUGxhdGZvcm06OkludFJlY3Qo
UGxhdGZvcm06OkludFBvaW50KDAsIDApLCBtX2NsaWVudC0+dHJhbnNmb3JtZWRDb250ZW50c1Np
emUoKSk7CisKKyAgICAgICAgLy8gRm9yIGJsaXR0aW5nIGJhY2tpbmdzdG9yZSB0aWxlcywgd2Ug
bmVlZCB0aGUgc3JjUmVjdCB0byBiZSBzcGVjaWZpZWQKKyAgICAgICAgLy8gaW4gYmFja2luZ3N0
b3JlIHRpbGUgcGl4ZWwgY29vcmRpbmF0ZXMuIElmIG91ciB2aWV3cG9ydCBhY2Nlc3NvciBpcwor
ICAgICAgICAvLyAgYXQgYSBkaWZmZXJlbnQgc2NhbGUsIHdlIGNhbGN1bGF0ZSB0aG9zZSBjb29y
ZGluYXRlcyBieSBvdXJzZWx2ZXMuCisgICAgICAgIGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0IHRy
YW5zZm9ybWVkU3JjUmVjdCA9IGN1cnJlbnRTY2FsZSA9PSB2aWV3cG9ydEFjY2Vzc29yLT5zY2Fs
ZSgpCisgICAgICAgICAgICA/IHBpeGVsU3JjUmVjdAorICAgICAgICAgICAgOiBlbmNsb3NpbmdJ
bnRSZWN0KHZpZXdwb3J0QWNjZXNzb3ItPmZyb21Eb2N1bWVudENvbnRlbnRzKGRvY3VtZW50U3Jj
UmVjdCwgY3VycmVudFNjYWxlKSk7CisKKyAgICAgICAgUGxhdGZvcm06OkludFJlY3QgY2xpcHBl
ZFRyYW5zZm9ybWVkU3JjUmVjdCA9IHRyYW5zZm9ybWVkU3JjUmVjdDsKKyAgICAgICAgY29uc3Qg
UGxhdGZvcm06OkludFBvaW50IG9yaWdpbiA9IHRyYW5zZm9ybWVkU3JjUmVjdC5sb2NhdGlvbigp
OworCisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgZXhwbGljaXRseSBkZXBlbmQg
b24gV2ViQ29yZTo6LgorICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm1hdGlv
bjsKKyAgICAgICAgaWYgKCF0cmFuc2Zvcm1lZFNyY1JlY3QuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgdHJhbnNmb3JtYXRpb24gPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVjdFRvUmVjdChGbG9h
dFJlY3QoRmxvYXRQb2ludCgwLjAsIDAuMCksIFdlYkNvcmU6OkludFNpemUodHJhbnNmb3JtZWRT
cmNSZWN0LnNpemUoKSkpLCBXZWJDb3JlOjpJbnRSZWN0KGRzdFJlY3QpKTsKIAogI2lmIERFQlVH
X0NIRUNLRVJCT0FSRAogICAgICAgICBib29sIGJsaXRDaGVja2VyZWQgPSBmYWxzZTsKICNlbmRp
ZgogCiAgICAgICAgIC8vIERvbid0IGNsaXAgdG8gY29udGVudHMgaWYgaXQgaXMgZW1wdHkgc28g
d2UgY2FuIHN0aWxsIHBhaW50IGRlZmF1bHQgYmFja2dyb3VuZC4KLSAgICAgICAgaWYgKCFjb250
ZW50c1JlY3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBjb250ZW50c0NsaXBwZWQuaW50ZXJz
ZWN0KGNvbnRlbnRzUmVjdCk7Ci0gICAgICAgICAgICBpZiAoY29udGVudHNDbGlwcGVkLmlzRW1w
dHkoKSkgeworICAgICAgICBpZiAoIXRyYW5zZm9ybWVkQ29udGVudHNSZWN0LmlzRW1wdHkoKSkg
eworICAgICAgICAgICAgY2xpcHBlZFRyYW5zZm9ybWVkU3JjUmVjdC5pbnRlcnNlY3QodHJhbnNm
b3JtZWRDb250ZW50c1JlY3QpOworICAgICAgICAgICAgaWYgKGNsaXBwZWRUcmFuc2Zvcm1lZFNy
Y1JlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgaW52YWxpZGF0ZVdpbmRvdyhkc3RS
ZWN0KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgIFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uIGNvbnRlbnRzUmVnaW9uID0gY29udGVudHNDbGlw
cGVkOworICAgICAgICAgICAgUGxhdGZvcm06OkludFJlY3RSZWdpb24gdHJhbnNmb3JtZWRTcmNS
ZWdpb24gPSBjbGlwcGVkVHJhbnNmb3JtZWRTcmNSZWN0OwogICAgICAgICAgICAgUGxhdGZvcm06
OkludFJlY3RSZWdpb24gYmFja2luZ1N0b3JlUmVnaW9uID0gY3VycmVudFN0YXRlLT5iYWNraW5n
U3RvcmVSZWN0KCk7CiAgICAgICAgICAgICBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbiBjaGVja2Vy
ZWRSZWdpb24KLSAgICAgICAgICAgICAgICA9IFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uOjpzdWJ0
cmFjdFJlZ2lvbnMoY29udGVudHNSZWdpb24sIGJhY2tpbmdTdG9yZVJlZ2lvbik7CisgICAgICAg
ICAgICAgICAgPSBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbjo6c3VidHJhY3RSZWdpb25zKHRyYW5z
Zm9ybWVkU3JjUmVnaW9uLCBiYWNraW5nU3RvcmVSZWdpb24pOwogCiAgICAgICAgICAgICAvLyBC
bGl0IGNoZWNrZXJlZCB0byB0aG9zZSBwYXJ0cyB0aGF0IGFyZSBub3QgY292ZXJlZCBieSB0aGUg
YmFja2luZ1N0b3JlUmVjdC4KICAgICAgICAgICAgIEludFJlY3RMaXN0IGNoZWNrZXJlZFJlY3Rz
ID0gY2hlY2tlcmVkUmVnaW9uLnJlY3RzKCk7CkBAIC0xMzI2LDcgKzEzNDcsNyBAQCB2b2lkIEJh
Y2tpbmdTdG9yZVByaXZhdGU6OmJsaXRWaXNpYmxlQ29udGVudHMoYm9vbCBmb3JjZSkKICAgICAg
ICAgfQogCiAgICAgICAgIC8vIEdldCB0aGUgbGlzdCBvZiB0aWxlIHJlY3RzIHRoYXQgbWFrZXVw
IHRoZSBjb250ZW50LgotICAgICAgICBUaWxlUmVjdExpc3QgdGlsZVJlY3RMaXN0ID0gbWFwRnJv
bVRyYW5zZm9ybWVkQ29udGVudHNUb1RpbGVzKGNvbnRlbnRzQ2xpcHBlZCwgY3VycmVudFN0YXRl
KTsKKyAgICAgICAgVGlsZVJlY3RMaXN0IHRpbGVSZWN0TGlzdCA9IG1hcEZyb21UcmFuc2Zvcm1l
ZENvbnRlbnRzVG9UaWxlcyhjbGlwcGVkVHJhbnNmb3JtZWRTcmNSZWN0LCBjdXJyZW50U3RhdGUp
OwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRpbGVSZWN0TGlzdC5zaXplKCk7ICsr
aSkgewogICAgICAgICAgICAgVGlsZVJlY3QgdGlsZVJlY3QgPSB0aWxlUmVjdExpc3RbaV07CiAg
ICAgICAgICAgICBUaWxlSW5kZXggaW5kZXggPSB0aWxlUmVjdC5maXJzdDsKQEAgLTEzNDAsOSAr
MTM2MSw5IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6YmxpdFZpc2libGVDb250ZW50cyhi
b29sIGZvcmNlKQogICAgICAgICAgICAgICAgID0gbWFwRnJvbVRpbGVzVG9UcmFuc2Zvcm1lZENv
bnRlbnRzKHRpbGVSZWN0LCBjdXJyZW50U3RhdGUtPmJhY2tpbmdTdG9yZVJlY3QoKSk7CiAKICAg
ICAgICAgICAgIC8vIERvbid0IGNsaXAgdG8gY29udGVudHMgaWYgaXQgaXMgZW1wdHkgc28gd2Ug
Y2FuIHN0aWxsIHBhaW50IGRlZmF1bHQgYmFja2dyb3VuZC4KLSAgICAgICAgICAgIGlmICghY29u
dGVudHNSZWN0LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgaWYgKCF0cmFuc2Zvcm1lZENvbnRl
bnRzUmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2Ugd2Ugc2hv
dWxkIGNsaXAgdGhlIGNvbnRlbnRzIHNpemUgYW5kIGJsaXQuCi0gICAgICAgICAgICAgICAgZGly
dHlSZWN0LmludGVyc2VjdChjb250ZW50c1JlY3QpOworICAgICAgICAgICAgICAgIGRpcnR5UmVj
dC5pbnRlcnNlY3QodHJhbnNmb3JtZWRDb250ZW50c1JlY3QpOwogCiAgICAgICAgICAgICAgICAg
Ly8gV2UgcHJvYmFibHkgaGF2ZSBleHRyYSB0aWxlcyBzaW5jZSB0aGUgY29udGVudHMgc2l6ZSBp
cyBzbyBzbWFsbC4KICAgICAgICAgICAgICAgICAvLyBTYXZlIHNvbWUgY3ljbGVzIGhlcmUuLi4K
QEAgLTEzNjQsNyArMTM4NSw3IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6YmxpdFZpc2li
bGVDb250ZW50cyhib29sIGZvcmNlKQogICAgICAgICAgICAgd2hvbGVUaWxlUmVjdC5zZWNvbmQg
PSB0aGlzLT50aWxlUmVjdCgpOwogCiAgICAgICAgICAgICBib29sIGNvbW1pdHRlZCA9IHRpbGUt
PmlzQ29tbWl0dGVkKCk7Ci0gICAgICAgICAgICBib29sIHJlbmRlcmVkID0gdGlsZUJ1ZmZlci0+
aXNSZW5kZXJlZChkaXJ0eVRpbGVSZWN0KTsKKyAgICAgICAgICAgIGJvb2wgcmVuZGVyZWQgPSB0
aWxlQnVmZmVyLT5pc1JlbmRlcmVkKGRpcnR5VGlsZVJlY3QsIGN1cnJlbnRTY2FsZSk7CiAgICAg
ICAgICAgICBib29sIHBhaW50Q2hlY2tlcmVkID0gIWNvbW1pdHRlZCB8fCAhcmVuZGVyZWQ7CiAK
ICAgICAgICAgICAgIGlmIChwYWludENoZWNrZXJlZCkgewpAQCAtMTQ1MCw0NyArMTQ3MSw0MSBA
QCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRWaXNpYmxlQ29udGVudHMoYm9vbCBmb3Jj
ZSkKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBpZiAoV2ViUGFnZUNv
bXBvc2l0b3JQcml2YXRlKiBjb21wb3NpdG9yID0gbV93ZWJQYWdlLT5kLT5jb21wb3NpdG9yKCkp
IHsKLSAgICAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnRlbnRzUmVjdCA9IG1fd2ViUGFnZS0+
ZC0+bWFwRnJvbVRyYW5zZm9ybWVkRmxvYXRSZWN0KFdlYkNvcmU6OkZsb2F0UmVjdChXZWJDb3Jl
OjpJbnRSZWN0KGNvbnRlbnRzKSkpOwotICAgICAgICBjb21wb3NpdG9yLT5kcmF3TGF5ZXJzKGRz
dFJlY3QsIGNvbnRlbnRzUmVjdCk7CisgICAgICAgIGNvbXBvc2l0b3ItPmRyYXdMYXllcnMoZHN0
UmVjdCwgZG9jdW1lbnRTcmNSZWN0KTsKICAgICAgICAgaWYgKGNvbXBvc2l0b3ItPmRyYXdzUm9v
dExheWVyKCkpCi0gICAgICAgICAgICBwYWludERlZmF1bHRCYWNrZ3JvdW5kKGNvbnRlbnRzLCB0
cmFuc2Zvcm1hdGlvbiwgZmFsc2UgLypmbHVzaCovKTsKKyAgICAgICAgICAgIHBhaW50RGVmYXVs
dEJhY2tncm91bmQoZHN0UmVjdCwgdmlld3BvcnRBY2Nlc3NvciwgZmFsc2UgLypmbHVzaCovKTsK
ICAgICB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRV9TQ1JPTExCQVJTCiAgICAgaWYgKGlzU2Nyb2xs
aW5nT3Jab29taW5nKCkgJiYgbV9jbGllbnQtPmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgYmxp
dEhvcml6b250YWxTY3JvbGxiYXIob3JpZ2luKTsKLSAgICAgICAgYmxpdFZlcnRpY2FsU2Nyb2xs
YmFyKG9yaWdpbik7CisgICAgICAgIGJsaXRIb3Jpem9udGFsU2Nyb2xsYmFyKCk7CisgICAgICAg
IGJsaXRWZXJ0aWNhbFNjcm9sbGJhcigpOwogICAgIH0KICNlbmRpZgogCiAjaWYgREVCVUdfVklT
VUFMSVpFCi0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBleHBsaWNpdGVseSBkZXBlbmQg
b24gV2ViQ29yZTo6LgotICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVy
KiB3aW5kb3dCdWZmZXIgPSBidWZmZXIoKTsKLSAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3Jh
cGhpY3M6OkRyYXdhYmxlKiBidWZmZXJEcmF3YWJsZSA9Ci0gICAgICAgIEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpHcmFwaGljczo6bG9ja0J1ZmZlckRyYXdhYmxlKHdpbmRvd0J1ZmZlcik7Ci0gICAg
UGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIGJ1ZmZlclBsYXRmb3JtR3JhcGhpY3NDb250ZXh0ID0K
LSAgICAgICAgU3VyZmFjZVBvb2w6Omdsb2JhbFN1cmZhY2VQb29sKCktPmNyZWF0ZVBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0KGJ1ZmZlckRyYXdhYmxlKTsKLSAgICBHcmFwaGljc0NvbnRleHQgZ3Jh
cGhpY3NDb250ZXh0KGJ1ZmZlclBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KTsKLSAgICBGbG9hdFJl
Y3Qgd2tWaWV3cG9ydCA9IEZsb2F0UmVjdCh2aXNpYmxlQ29udGVudHNSZWN0KCkpOwotICAgIEZs
b2F0UmVjdCB1aVZpZXdwb3J0ID0gRmxvYXRSZWN0KHNyY1JlY3QpOwotICAgIHdrVmlld3BvcnQu
bW92ZSgtY29udGVudHMueCgpLCAtY29udGVudHMueSgpKTsKLSAgICB1aVZpZXdwb3J0Lm1vdmUo
LWNvbnRlbnRzLngoKSwgLWNvbnRlbnRzLnkoKSk7Ci0KLSAgICBncmFwaGljc0NvbnRleHQuc2F2
ZSgpOwotCi0gICAgLy8gRHJhdyBhIGJsdWUgcmVjdCBmb3IgdGhlIHdlYmtpdCB0aHJlYWQgdmll
d3BvcnQuCi0gICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZUNvbG9yKFdlYkNvcmU6OkNvbG9y
KDAsIDAsIDI1NSksIFdlYkNvcmU6OkNvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIGdyYXBoaWNz
Q29udGV4dC5zdHJva2VSZWN0KHRyYW5zZm9ybWF0aW9uLm1hcFJlY3Qod2tWaWV3cG9ydCksIDEu
MCk7Ci0KLSAgICAvLyBEcmF3IGEgcmVkIHJlY3QgZm9yIHRoZSB1aSB0aHJlYWQgdmlld3BvcnQu
Ci0gICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZUNvbG9yKFdlYkNvcmU6OkNvbG9yKDI1NSwg
MCwgMCksIFdlYkNvcmU6OkNvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIGdyYXBoaWNzQ29udGV4
dC5zdHJva2VSZWN0KHRyYW5zZm9ybWF0aW9uLm1hcFJlY3QodWlWaWV3cG9ydCksIDEuMCk7Ci0K
LSAgICBncmFwaGljc0NvbnRleHQucmVzdG9yZSgpOwotCi0gICAgZGVsZXRlIGJ1ZmZlclBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0OwotICAgIHJlbGVhc2VCdWZmZXJEcmF3YWJsZSh3aW5kb3dCdWZm
ZXIpOworICAgIGlmIChkZWJ1Z1ZpZXdwb3J0QWNjZXNzb3IpIHsKKyAgICAgICAgUGxhdGZvcm06
OkdyYXBoaWNzOjpCdWZmZXIqIHRhcmdldEJ1ZmZlciA9IGJ1ZmZlcigpOworICAgICAgICBQbGF0
Zm9ybTo6SW50UmVjdCB3a1ZpZXdwb3J0ID0gZGVidWdWaWV3cG9ydEFjY2Vzc29yLT5yb3VuZFRv
UGl4ZWxGcm9tRG9jdW1lbnRDb250ZW50cyhQbGF0Zm9ybTo6SW50UmVjdChtX2NsaWVudC0+dmlz
aWJsZUNvbnRlbnRzUmVjdCgpKSk7CisgICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0IHVpVmlld3Bv
cnQgPSBlbmNsb3NpbmdJbnRSZWN0KGRlYnVnVmlld3BvcnRBY2Nlc3Nvci0+cGl4ZWxGcm9tRG9j
dW1lbnRDb250ZW50cyhkb2N1bWVudFZpZXdwb3J0UmVjdCkpOworICAgICAgICB3a1ZpZXdwb3J0
Lm1vdmUoLXBpeGVsU3JjUmVjdC54KCksIC1waXhlbFNyY1JlY3QueSgpKTsKKyAgICAgICAgdWlW
aWV3cG9ydC5tb3ZlKC1waXhlbFNyY1JlY3QueCgpLCAtcGl4ZWxTcmNSZWN0LnkoKSk7CisKKyAg
ICAgICAgLy8gRHJhdyBhIGJsdWUgcmVjdCBmb3IgdGhlIHdlYmtpdCB0aHJlYWQgdmlld3BvcnQu
CisgICAgICAgIFBsYXRmb3JtOjpHcmFwaGljczo6Y2xlYXJCdWZmZXIodGFyZ2V0QnVmZmVyLCBQ
bGF0Zm9ybTo6SW50UmVjdCh3a1ZpZXdwb3J0LngoKSwgd2tWaWV3cG9ydC55KCksIHdrVmlld3Bv
cnQud2lkdGgoKSwgMSksIDAsIDAsIDI1NSwgMjU1KTsKKyAgICAgICAgUGxhdGZvcm06OkdyYXBo
aWNzOjpjbGVhckJ1ZmZlcih0YXJnZXRCdWZmZXIsIFBsYXRmb3JtOjpJbnRSZWN0KHdrVmlld3Bv
cnQueCgpLCB3a1ZpZXdwb3J0LnkoKSwgMSwgd2tWaWV3cG9ydC5oZWlnaHQoKSksIDAsIDAsIDI1
NSwgMjU1KTsKKyAgICAgICAgUGxhdGZvcm06OkdyYXBoaWNzOjpjbGVhckJ1ZmZlcih0YXJnZXRC
dWZmZXIsIFBsYXRmb3JtOjpJbnRSZWN0KHdrVmlld3BvcnQueCgpLCB3a1ZpZXdwb3J0LmJvdHRv
bSgpIC0gMSwgd2tWaWV3cG9ydC53aWR0aCgpLCAxKSwgMCwgMCwgMjU1LCAyNTUpOworICAgICAg
ICBQbGF0Zm9ybTo6R3JhcGhpY3M6OmNsZWFyQnVmZmVyKHRhcmdldEJ1ZmZlciwgUGxhdGZvcm06
OkludFJlY3Qod2tWaWV3cG9ydC5yaWdodCgpIC0gMSwgd2tWaWV3cG9ydC55KCksIDEsIHdrVmll
d3BvcnQuaGVpZ2h0KCkpLCAwLCAwLCAyNTUsIDI1NSk7CisKKyAgICAgICAgLy8gRHJhdyBhIHJl
ZCByZWN0IGZvciB0aGUgdWkgdGhyZWFkIHZpZXdwb3J0LgorICAgICAgICBQbGF0Zm9ybTo6R3Jh
cGhpY3M6OmNsZWFyQnVmZmVyKHRhcmdldEJ1ZmZlciwgUGxhdGZvcm06OkludFJlY3QodWlWaWV3
cG9ydC54KCksIHVpVmlld3BvcnQueSgpLCB1aVZpZXdwb3J0LndpZHRoKCksIDEpLCAyNTUsIDAs
IDAsIDI1NSk7CisgICAgICAgIFBsYXRmb3JtOjpHcmFwaGljczo6Y2xlYXJCdWZmZXIodGFyZ2V0
QnVmZmVyLCBQbGF0Zm9ybTo6SW50UmVjdCh1aVZpZXdwb3J0LngoKSwgdWlWaWV3cG9ydC55KCks
IDEsIHVpVmlld3BvcnQuaGVpZ2h0KCkpLCAyNTUsIDAsIDAsIDI1NSk7CisgICAgICAgIFBsYXRm
b3JtOjpHcmFwaGljczo6Y2xlYXJCdWZmZXIodGFyZ2V0QnVmZmVyLCBQbGF0Zm9ybTo6SW50UmVj
dCh1aVZpZXdwb3J0LngoKSwgdWlWaWV3cG9ydC5ib3R0b20oKSAtIDEsIHVpVmlld3BvcnQud2lk
dGgoKSwgMSksIDI1NSwgMCwgMCwgMjU1KTsKKyAgICAgICAgUGxhdGZvcm06OkdyYXBoaWNzOjpj
bGVhckJ1ZmZlcih0YXJnZXRCdWZmZXIsIFBsYXRmb3JtOjpJbnRSZWN0KHVpVmlld3BvcnQucmln
aHQoKSAtIDEsIHVpVmlld3BvcnQueSgpLCAxLCB1aVZpZXdwb3J0LmhlaWdodCgpKSwgMjU1LCAw
LCAwLCAyNTUpOworCisgICAgICAgIGRlbGV0ZSBkZWJ1Z1ZpZXdwb3J0QWNjZXNzb3I7CisgICAg
fQogI2VuZGlmCiAKICNpZiBERUJVR19DSEVDS0VSQk9BUkQKQEAgLTE2MjIsNyArMTYzNyw3IEBA
IFBsYXRmb3JtOjpJbnRSZWN0IEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRUaWxlUmVjdChUaWxl
QnVmZmVyKiB0aWxlQnVmZmVyLAogICAgIHJldHVybiBkaXJ0eVJlY3Q7CiB9CiAKLXZvaWQgQmFj
a2luZ1N0b3JlUHJpdmF0ZTo6YmxpdEhvcml6b250YWxTY3JvbGxiYXIoY29uc3QgUGxhdGZvcm06
OkludFBvaW50JiBzY3JvbGxQb3NpdGlvbikKK3ZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6Ymxp
dEhvcml6b250YWxTY3JvbGxiYXIoKQogewogICAgIGlmICghbV93ZWJQYWdlLT5pc1Zpc2libGUo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTYzMCw3ICsxNjQ1LDcgQEAgdm9pZCBCYWNraW5nU3Rv
cmVQcml2YXRlOjpibGl0SG9yaXpvbnRhbFNjcm9sbGJhcihjb25zdCBQbGF0Zm9ybTo6SW50UG9p
bnQmIHNjcm8KICAgICBtX3dlYlBhZ2UtPmNsaWVudCgpLT5kcmF3SG9yaXpvbnRhbFNjcm9sbGJh
cigpOwogfQogCi12b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRWZXJ0aWNhbFNjcm9sbGJh
cihjb25zdCBQbGF0Zm9ybTo6SW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQordm9pZCBCYWNraW5n
U3RvcmVQcml2YXRlOjpibGl0VmVydGljYWxTY3JvbGxiYXIoKQogewogICAgIGlmICghbV93ZWJQ
YWdlLT5pc1Zpc2libGUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTc5MSw3ICsxODA2LDcgQEAg
dm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjp1cGRhdGVUaWxlc0ZvclNjcm9sbE9yTm90UmVuZGVy
ZWRSZWdpb24oYm9vbCBjaGVja0xvYWQKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHVwZGF0
ZVRpbGUoaW5kZXgsIGZhbHNlIC8qaW1tZWRpYXRlKi8pOwogICAgICAgICB9IGVsc2UgaWYgKGlz
VmlzaWJsZQotICAgICAgICAgICAgJiYgKGZvcmNlVmlzaWJsZSB8fCAhdGlsZS0+ZnJvbnRCdWZm
ZXIoKS0+aXNSZW5kZXJlZCh0aWxlVmlzaWJsZUNvbnRlbnRzUmVjdChpbmRleCkpKQorICAgICAg
ICAgICAgJiYgKGZvcmNlVmlzaWJsZSB8fCAhdGlsZS0+ZnJvbnRCdWZmZXIoKS0+aXNSZW5kZXJl
ZCh0aWxlVmlzaWJsZUNvbnRlbnRzUmVjdChpbmRleCksIGN1cnJlbnRTdGF0ZS0+c2NhbGUoKSkp
CiAgICAgICAgICAgICAmJiAhaXNDdXJyZW50VmlzaWJsZUpvYihpbmRleCwgdGlsZSwgYmFja2lu
Z1N0b3JlUmVjdCkpCiAgICAgICAgICAgICB1cGRhdGVUaWxlKGluZGV4LCBmYWxzZSAvKmltbWVk
aWF0ZSovKTsKICAgICB9CkBAIC0xOTI5LDYgKzE5NDQsOCBAQCBCYWNraW5nU3RvcmVQcml2YXRl
OjpUaWxlUmVjdExpc3QgQmFja2luZ1N0b3JlUHJpdmF0ZTo6bWFwRnJvbVRyYW5zZm9ybWVkQ29u
dGVudAogCiB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnVwZGF0ZVRpbGVNYXRyaXhJZk5lZWRl
ZCgpCiB7CisgICAgQVNTRVJUKEJsYWNrQmVycnk6OlBsYXRmb3JtOjp3ZWJLaXRUaHJlYWRNZXNz
YWdlQ2xpZW50KCktPmlzQ3VycmVudFRocmVhZCgpKTsKKwogICAgIC8vIFRoaXMgd2lsbCB1cGRh
dGUgdGhlIHRpbGUgbWF0cml4LgogICAgIHNjcm9sbEJhY2tpbmdTdG9yZSgwLCAwKTsKIH0KQEAg
LTIwMDIsNiArMjAxOSw3IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6dHJhbnNmb3JtQ2hh
bmdlZCgpCiAKIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6b3JpZW50YXRpb25DaGFuZ2VkKCkK
IHsKKyAgICBBU1NFUlQoQmxhY2tCZXJyeTo6UGxhdGZvcm06OndlYktpdFRocmVhZE1lc3NhZ2VD
bGllbnQoKS0+aXNDdXJyZW50VGhyZWFkKCkpOwogICAgIHVwZGF0ZVRpbGVNYXRyaXhJZk5lZWRl
ZCgpOwogICAgIGNyZWF0ZVZpc2libGVUaWxlQnVmZmVyKCk7CiB9CkBAIC0yMDU1LDYgKzIwNzMs
NyBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmNyZWF0ZVN1cmZhY2VzKCkKICAgICB9CiAK
ICAgICAvLyBTZXQgdGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIGJhY2tpbmdzdG9yZSBnZW9tZXRy
eS4KKyAgICBiYWNrU3RhdGUoKS0+c2V0U2NhbGUobV93ZWJQYWdlLT5kLT5jdXJyZW50U2NhbGUo
KSk7CiAgICAgYmFja1N0YXRlKCktPnNldE51bWJlck9mVGlsZXNXaWRlKGRpdmlzb3IuZmlyc3Qp
OwogICAgIGJhY2tTdGF0ZSgpLT5zZXROdW1iZXJPZlRpbGVzSGlnaChkaXZpc29yLnNlY29uZCk7
CiAgICAgYmFja1N0YXRlKCktPnNldFRpbGVNYXAobmV3VGlsZU1hcCk7CkBAIC0yMzQ3LDcgKzIz
NjYsNyBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmludmFsaWRhdGVXaW5kb3coKQogewog
ICAgIC8vIEdyYWIgYSByZWN0IGFwcHJvcHJpYXRlIGZvciB0aGUgY3VycmVudCB0aHJlYWQuCiAg
ICAgaWYgKEJsYWNrQmVycnk6OlBsYXRmb3JtOjp1c2VySW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNs
aWVudCgpLT5pc0N1cnJlbnRUaHJlYWQoKSkKLSAgICAgICAgaW52YWxpZGF0ZVdpbmRvdyhtX3dl
YlBhZ2UtPmNsaWVudCgpLT51c2VySW50ZXJmYWNlQmxpdHRlZERlc3RpbmF0aW9uUmVjdCgpKTsK
KyAgICAgICAgaW52YWxpZGF0ZVdpbmRvdyhtX3dlYlBhZ2UtPmNsaWVudCgpLT51c2VySW50ZXJm
YWNlVmlld3BvcnRBY2Nlc3NvcigpLT5kZXN0aW5hdGlvblN1cmZhY2VSZWN0KCkpOwogICAgIGVs
c2UKICAgICAgICAgaW52YWxpZGF0ZVdpbmRvdyhQbGF0Zm9ybTo6SW50UmVjdChQbGF0Zm9ybTo6
SW50UG9pbnQoMCwgMCksIG1fY2xpZW50LT50cmFuc2Zvcm1lZFZpZXdwb3J0U2l6ZSgpKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZV9w
LmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZV9wLmgKaW5kZXgg
YjZjZTQ0ZmY0NTQ2ZGU2NjEwNGM5ZmUzM2ZiOTg2MTI2MjQ3NmE0Yy4uOGU1MmExMmFlZTg1NDNh
NjdhNGMxMTc0NTE0ZWYzM2ZlNGRlOWE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L0FwaS9CYWNraW5nU3RvcmVfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9BcGkvQmFja2luZ1N0b3JlX3AuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDksIDIwMTAsIDIwMTEgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwpAQCAtMzgsNiArMzgsMTEgQEAgY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiB9
CiAKIG5hbWVzcGFjZSBCbGFja0JlcnJ5IHsKKworbmFtZXNwYWNlIFBsYXRmb3JtIHsKK2NsYXNz
IFZpZXdwb3J0QWNjZXNzb3I7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBCYWNr
aW5nU3RvcmVUaWxlOwpAQCAtNTEsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgQmFja2luZ1N0b3Jl
R2VvbWV0cnkoKQogICAgICAgICA6IG1fbnVtYmVyT2ZUaWxlc1dpZGUoMCkKICAgICAgICAgLCBt
X251bWJlck9mVGlsZXNIaWdoKDApCisgICAgICAgICwgbV9zY2FsZSgwLjApCiAgICAgewogICAg
IH0KIApAQCAtNjcsOSArNzMsMTMgQEAgcHVibGljOgogICAgIGNvbnN0IFRpbGVNYXAmIHRpbGVN
YXAoKSBjb25zdCB7IHJldHVybiBtX3RpbGVNYXA7IH0KICAgICB2b2lkIHNldFRpbGVNYXAoY29u
c3QgVGlsZU1hcCYgdGlsZU1hcCkgeyBtX3RpbGVNYXAgPSB0aWxlTWFwOyB9CiAKKyAgICBkb3Vi
bGUgc2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlOyB9CisgICAgdm9pZCBzZXRTY2FsZShk
b3VibGUgc2NhbGUpIHsgbV9zY2FsZSA9IHNjYWxlOyB9CisKICAgcHJpdmF0ZToKICAgICBpbnQg
bV9udW1iZXJPZlRpbGVzV2lkZTsKICAgICBpbnQgbV9udW1iZXJPZlRpbGVzSGlnaDsKKyAgICBk
b3VibGUgbV9zY2FsZTsKICAgICBQbGF0Zm9ybTo6SW50UG9pbnQgbV9iYWNraW5nU3RvcmVPZmZz
ZXQ7CiAgICAgVGlsZU1hcCBtX3RpbGVNYXA7CiB9OwpAQCAtMTU0LDcgKzE2NCw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGNhbk1vdmVEb3duKGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JikgY29uc3Q7
CiAKICAgICBQbGF0Zm9ybTo6SW50UmVjdCBiYWNraW5nU3RvcmVSZWN0Rm9yU2Nyb2xsKGludCBk
ZWx0YVgsIGludCBkZWx0YVksIGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JikgY29uc3Q7Ci0gICAg
dm9pZCBzZXRCYWNraW5nU3RvcmVSZWN0KGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0Jik7CisgICAg
dm9pZCBzZXRCYWNraW5nU3RvcmVSZWN0KGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiwgZG91Ymxl
IHNjYWxlKTsKIAogICAgIHR5cGVkZWYgV1RGOjpWZWN0b3I8VGlsZUluZGV4PiBUaWxlSW5kZXhM
aXN0OwogICAgIFRpbGVJbmRleExpc3QgaW5kZXhlc0ZvckJhY2tpbmdTdG9yZVJlY3QoY29uc3Qg
UGxhdGZvcm06OkludFJlY3QmKSBjb25zdDsKQEAgLTE5Myw3ICsyMDMsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gQXNzdW1lcyB0aGUgcmVjdCB0byBiZSBpbiB3aW5kb3cvdmlld3BvcnQgY29vcmRpbmF0
ZXMuCiAgICAgdm9pZCBjb3B5UHJldmlvdXNDb250ZW50c1RvQmFja1N1cmZhY2VPZldpbmRvdygp
OwogICAgIHZvaWQgY29weVByZXZpb3VzQ29udGVudHNUb0JhY2tTdXJmYWNlT2ZUaWxlKGNvbnN0
IFBsYXRmb3JtOjpJbnRSZWN0JiwgQmFja2luZ1N0b3JlVGlsZSopOwotICAgIHZvaWQgcGFpbnRE
ZWZhdWx0QmFja2dyb3VuZChjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgY29udGVudHMsIGNvbnN0
IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4JiwgYm9vbCBmbHVzaCk7CisgICAgdm9pZCBw
YWludERlZmF1bHRCYWNrZ3JvdW5kKGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBkc3RSZWN0LCBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6Vmlld3BvcnRBY2Nlc3NvciosIGJvb2wgZmx1c2gpOwogICAg
IHZvaWQgYmxpdE9uSWRsZSgpOwogCiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8VGlsZUluZGV4LCBQ
bGF0Zm9ybTo6SW50UmVjdD4gVGlsZVJlY3Q7CkBAIC0yMTYsOCArMjI2LDggQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0RGlyZWN0UmVuZGVyaW5nQW5pbWF0aW9uTWVzc2FnZVNjaGVkdWxlZCgpIHsg
bV9pc0RpcmVjdFJlbmRlcmluZ0FuaW1hdGlvbk1lc3NhZ2VTY2hlZHVsZWQgPSB0cnVlOyB9CiAj
ZW5kaWYKIAotICAgIHZvaWQgYmxpdEhvcml6b250YWxTY3JvbGxiYXIoY29uc3QgUGxhdGZvcm06
OkludFBvaW50Jik7Ci0gICAgdm9pZCBibGl0VmVydGljYWxTY3JvbGxiYXIoY29uc3QgUGxhdGZv
cm06OkludFBvaW50Jik7CisgICAgdm9pZCBibGl0SG9yaXpvbnRhbFNjcm9sbGJhcigpOworICAg
IHZvaWQgYmxpdFZlcnRpY2FsU2Nyb2xsYmFyKCk7CiAKICAgICAvLyBSZXR1cm5zIHdoZXRoZXIg
dGhlIHRpbGUgaW5kZXggaXMgY3VycmVudGx5IHZpc2libGUgb3Igbm90LgogICAgIGJvb2wgaXNU
aWxlVmlzaWJsZShjb25zdCBUaWxlSW5kZXgmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQXBpL1dlYlBhZ2UuY3BwCmluZGV4IDhjZDY4YTUzYzJjZTkyMmFlZTQ1MDUyODBhNDJlZmVk
NjQ5NzEyNjcuLjZjNzRhMzkyMjdmNWJhZTMzNmU4NDJhMGFiZDdkNjMxMDNmNzIwMWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcApAQCAtMTM0LDYgKzEzNCw3IEBA
CiAjaWYgRU5BQkxFKFdFQkRPTSkKICNpbmNsdWRlICJXZWJET01Eb2N1bWVudC5oIgogI2VuZGlm
CisjaW5jbHVkZSAiV2ViS2l0VGhyZWFkVmlld3BvcnRBY2Nlc3Nvci5oIgogI2luY2x1ZGUgIldl
YktpdFZlcnNpb24uaCIKICNpbmNsdWRlICJXZWJPdmVybGF5LmgiCiAjaW5jbHVkZSAiV2ViT3Zl
cmxheV9wLmgiCkBAIC0zODUsNiArMzg2LDcgQEAgV2ViUGFnZVByaXZhdGU6OldlYlBhZ2VQcml2
YXRlKFdlYlBhZ2UqIHdlYlBhZ2UsIFdlYlBhZ2VDbGllbnQqIGNsaWVudCwgY29uc3QgSW4KICAg
ICAsIG1fdHJhbnNmb3JtYXRpb25NYXRyaXgobmV3IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpCiAg
ICAgLCBtX2JhY2tpbmdTdG9yZSgwKSAvLyBJbml0aWFsaXplZCBieSBpbml0LgogICAgICwgbV9i
YWNraW5nU3RvcmVDbGllbnQoMCkgLy8gSW5pdGlhbGl6ZWQgYnkgaW5pdC4KKyAgICAsIG1fd2Vi
a2l0VGhyZWFkVmlld3BvcnRBY2Nlc3NvcigwKSAvLyBJbml0aWFsaXplZCBieSBpbml0LgogICAg
ICwgbV9pblBhZ2VTZWFyY2hNYW5hZ2VyKG5ldyBJblBhZ2VTZWFyY2hNYW5hZ2VyKHRoaXMpKQog
ICAgICwgbV9pbnB1dEhhbmRsZXIobmV3IElucHV0SGFuZGxlcih0aGlzKSkKICAgICAsIG1fc2Vs
ZWN0aW9uSGFuZGxlcihuZXcgU2VsZWN0aW9uSGFuZGxlcih0aGlzKSkKQEAgLTQ1Niw2ICs0NTgs
OSBAQCBXZWJQYWdlUHJpdmF0ZTo6fldlYlBhZ2VQcml2YXRlKCkKICAgICBkZWxldGUgbV9jb29r
aWVKYXI7CiAgICAgbV9jb29raWVKYXIgPSAwOwogCisgICAgZGVsZXRlIG1fd2Via2l0VGhyZWFk
Vmlld3BvcnRBY2Nlc3NvcjsKKyAgICBtX3dlYmtpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3IgPSAw
OworCiAgICAgZGVsZXRlIG1fYmFja2luZ1N0b3JlQ2xpZW50OwogICAgIG1fYmFja2luZ1N0b3Jl
Q2xpZW50ID0gMDsKICAgICBtX2JhY2tpbmdTdG9yZSA9IDA7CkBAIC02MTIsNiArNjE3LDggQEAg
dm9pZCBXZWJQYWdlUHJpdmF0ZTo6aW5pdChjb25zdCBXZWJTdHJpbmcmIHBhZ2VHcm91cE5hbWUp
CiAgICAgLy8gaXMgb3duZWQgYnkgQmFja2luZ1N0b3JlQ2xpZW50IGFuZCB0aGVuIGRlbGV0ZWQg
YnkgaXRzIGRlc3RydWN0b3IuCiAgICAgbV9iYWNraW5nU3RvcmUgPSBtX2JhY2tpbmdTdG9yZUNs
aWVudC0+YmFja2luZ1N0b3JlKCk7CiAKKyAgICBtX3dlYmtpdFRocmVhZFZpZXdwb3J0QWNjZXNz
b3IgPSBuZXcgV2ViS2l0VGhyZWFkVmlld3BvcnRBY2Nlc3Nvcih0aGlzKTsKKwogICAgIGJsb2Nr
Q2xpY2tSYWRpdXMgPSBpbnQocm91bmRmKDAuMzUgKiBQbGF0Zm9ybTo6R3JhcGhpY3M6OlNjcmVl
bjo6cHJpbWFyeVNjcmVlbigpLT5waXhlbHNQZXJJbmNoKDApLndpZHRoKCkpKTsgLy8gVGhlIGNs
aWNrZWQgcmVjdGFuZ2xlIGFyZWEgc2hvdWxkIGJlIGEgZml4ZWQgdW5pdCBvZiBtZWFzdXJlbWVu
dC4KIAogICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0RGVsZWdhdGVTZWxlY3Rpb25QYWludCh0
cnVlKTsKQEAgLTE4MDUsNiArMTgxMiwxMSBAQCBJbnRTaXplIFdlYlBhZ2VQcml2YXRlOjp0cmFu
c2Zvcm1lZEFjdHVhbFZpc2libGVTaXplKCkgY29uc3QKICAgICByZXR1cm4gSW50U2l6ZShtX2Fj
dHVhbFZpc2libGVXaWR0aCwgbV9hY3R1YWxWaXNpYmxlSGVpZ2h0KTsKIH0KIAorUGxhdGZvcm06
OlZpZXdwb3J0QWNjZXNzb3IqIFdlYlBhZ2U6OndlYmtpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3Io
KSBjb25zdAoreworICAgIHJldHVybiBkLT5tX3dlYmtpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3I7
Cit9CisKIFBsYXRmb3JtOjpJbnRTaXplIFdlYlBhZ2U6OnZpZXdwb3J0U2l6ZSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGQtPnRyYW5zZm9ybWVkQWN0dWFsVmlzaWJsZVNpemUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5oIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmgKaW5kZXggMzFiOTkwODA4NDBmNDZiYmE0NDVjYjZk
ODM1MjIzMjY0MGZhNDNlYS4uOTEzMzdhZGEwMDUxNGEwOTQyNDYyMTlmZjg1ODk2OTExNDIyNzNl
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmgKQEAgLTU3LDYgKzU3LDcg
QEAgY2xhc3MgS2V5Ym9hcmRFdmVudDsKIGNsYXNzIE1vdXNlRXZlbnQ7CiBjbGFzcyBUb3VjaEV2
ZW50OwogY2xhc3MgVG91Y2hQb2ludDsKK2NsYXNzIFZpZXdwb3J0QWNjZXNzb3I7CiB9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtMTM3LDYgKzEzOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEhhc1BlbmRpbmdTdXJmYWNlU2l6ZUNoYW5nZSgpOwogICAgIHZvaWQgYXBwbHlQZW5kaW5nT3Jp
ZW50YXRpb25JZk5lZWRlZCgpOwogCisgICAgUGxhdGZvcm06OlZpZXdwb3J0QWNjZXNzb3IqIHdl
YmtpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3IoKSBjb25zdDsKICAgICBQbGF0Zm9ybTo6SW50U2l6
ZSB2aWV3cG9ydFNpemUoKSBjb25zdDsKICAgICB2b2lkIHNldFZpZXdwb3J0U2l6ZShjb25zdCBQ
bGF0Zm9ybTo6SW50U2l6ZSYgdmlld3BvcnRTaXplLCBib29sIGVuc3VyZUZvY3VzRWxlbWVudFZp
c2libGUgPSB0cnVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0Fw
aS9XZWJQYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VD
bGllbnQuaAppbmRleCBiYmIzZGMzYjkwMDRkOTI2MGFiOWNlMGFiYzhkZDA4MjgzN2Y2MmEwLi5l
OWVkNTJlNjM1MDM5ZWE0YzMxYTg3NGYxMTU2MjQ4MzhjYWQ0NjdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDbGllbnQuaApAQCAtNDMsNiArNDMsNyBAQCBjbGFz
cyBHZW9UcmFja2VyTGlzdGVuZXI7CiBjbGFzcyBJbnRSZWN0UmVnaW9uOwogY2xhc3MgTmV0d29y
a1JlcXVlc3Q7CiBjbGFzcyBOZXR3b3JrU3RyZWFtRmFjdG9yeTsKK2NsYXNzIFZpZXdwb3J0QWNj
ZXNzb3I7CiBjbGFzcyBXZWJVc2VyTWVkaWFSZXF1ZXN0OwogCiBuYW1lc3BhY2UgR3JhcGhpY3Mg
ewpAQCAtMjAzLDggKzIwNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbmVlZE1vcmVE
YXRhKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVXZWJJbnNwZWN0b3JNZXNzYWdlVG9G
cm9udGVuZChpbnQgaWQsIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIGludCBsZW5ndGgpID0gMDsKIAot
ICAgIHZpcnR1YWwgUGxhdGZvcm06OkludFJlY3QgdXNlckludGVyZmFjZUJsaXR0ZWREZXN0aW5h
dGlvblJlY3QoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBQbGF0Zm9ybTo6SW50UmVjdCB1c2Vy
SW50ZXJmYWNlQmxpdHRlZFZpc2libGVDb250ZW50c1JlY3QoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Vmlld3BvcnRBY2Nlc3NvciogdXNlckludGVyZmFj
ZVZpZXdwb3J0QWNjZXNzb3IoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRC
aXRtYXBab29tU2NhbGUoZG91YmxlIHNjYWxlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFuaW1h
dGVCbG9ja1pvb20oY29uc3QgUGxhdGZvcm06OkZsb2F0UG9pbnQmIGZpbmFsUG9pbnQsIGRvdWJs
ZSBmaW5hbFNjYWxlKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL1dlYlBhZ2VDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkv
V2ViUGFnZUNvbXBvc2l0b3IuY3BwCmluZGV4IDg5NDhjYjllOGVmNTU1ODc1ZTQyNzZmMTg4MDZk
ZWNiNjI0MGYwNjAuLjMxMjc2ODAzZTU4MjViOTA1ZjYwYmFkMTk5NTU5ZWM0MWZiMjMzOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3Iu
Y3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtRXhlY3V0
YWJsZU1lc3NhZ2UuaD4KICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1NZXNzYWdlLmg+CiAj
aW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtTWVzc2FnZUNsaWVudC5oPgorI2luY2x1ZGUgPEJs
YWNrQmVycnlQbGF0Zm9ybVZpZXdwb3J0QWNjZXNzb3IuaD4KICNpbmNsdWRlIDxHZW5lcmljVGlt
ZXJDbGllbnQuaD4KICNpbmNsdWRlIDxUaHJlYWRUaW1lckNsaWVudC5oPgogI2luY2x1ZGUgPHd0
Zi9DdXJyZW50VGltZS5oPgpAQCAtMjIzLDggKzIyNCwxMSBAQCB2b2lkIFdlYlBhZ2VDb21wb3Np
dG9yUHJpdmF0ZTo6YW5pbWF0aW9uRnJhbWVDaGFuZ2VkKCkKIHsKICAgICBCYWNraW5nU3RvcmUq
IGJhY2tpbmdTdG9yZSA9IG1fd2ViUGFnZS0+bV9iYWNraW5nU3RvcmU7CiAgICAgaWYgKCFiYWNr
aW5nU3RvcmUpIHsKLSAgICAgICAgZHJhd0xheWVycyhtX3dlYlBhZ2UtPmNsaWVudCgpLT51c2Vy
SW50ZXJmYWNlQmxpdHRlZERlc3RpbmF0aW9uUmVjdCgpLAotICAgICAgICAgICAgICAgICAgIElu
dFJlY3QobV93ZWJQYWdlLT5jbGllbnQoKS0+dXNlckludGVyZmFjZUJsaXR0ZWRWaXNpYmxlQ29u
dGVudHNSZWN0KCkpKTsKKyAgICAgICAgUGxhdGZvcm06OlZpZXdwb3J0QWNjZXNzb3IqIHZpZXdw
b3J0QWNjZXNzb3IgPSBtX3dlYlBhZ2UtPmNsaWVudCgpLT51c2VySW50ZXJmYWNlVmlld3BvcnRB
Y2Nlc3NvcigpOworICAgICAgICBjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCBkc3RSZWN0ID0gdmll
d3BvcnRBY2Nlc3Nvci0+ZGVzdGluYXRpb25TdXJmYWNlUmVjdCgpOworICAgICAgICBjb25zdCBQ
bGF0Zm9ybTo6RmxvYXRSZWN0IHNyY1JlY3QgPSB2aWV3cG9ydEFjY2Vzc29yLT5kb2N1bWVudFZp
ZXdwb3J0UmVjdCgpOworCisgICAgICAgIGRyYXdMYXllcnMoZHN0UmVjdCwgc3JjUmVjdCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9BcGkvV2ViUGFnZV9wLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBh
Z2VfcC5oCmluZGV4IDBkOTc2OGY2YjZlNmEwYWUwOWIxNWU4ZmU0OTY0ZmZhNmYxMzg5OWMuLjI3
NmEzYWFhYzAxMTcyZDIzMDJhNDA1NjFiMzNlN2FiNWM4ZWZkZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgKKysrIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaApAQCAtNzksNiArNzksNyBAQCBjbGFzcyBTZWxlY3Rp
b25IYW5kbGVyOwogY2xhc3MgVG91Y2hFdmVudEhhbmRsZXI7CiBjbGFzcyBXZWJDb29raWVKYXI7
CiBjbGFzcyBXZWJQYWdlQ2xpZW50OworY2xhc3MgV2ViS2l0VGhyZWFkVmlld3BvcnRBY2Nlc3Nv
cjsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIGNsYXNzIEZyYW1lTGF5ZXJz
OwpAQCAtNTA5LDYgKzUxMCw3IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlv
bk1hdHJpeCogbV90cmFuc2Zvcm1hdGlvbk1hdHJpeDsKICAgICBCYWNraW5nU3RvcmUqIG1fYmFj
a2luZ1N0b3JlOwogICAgIEJhY2tpbmdTdG9yZUNsaWVudCogbV9iYWNraW5nU3RvcmVDbGllbnQ7
CisgICAgV2ViS2l0VGhyZWFkVmlld3BvcnRBY2Nlc3NvciogbV93ZWJraXRUaHJlYWRWaWV3cG9y
dEFjY2Vzc29yOwogICAgIEluUGFnZVNlYXJjaE1hbmFnZXIqIG1faW5QYWdlU2VhcmNoTWFuYWdl
cjsKICAgICBJbnB1dEhhbmRsZXIqIG1faW5wdXRIYW5kbGVyOwogICAgIFNlbGVjdGlvbkhhbmRs
ZXIqIG1fc2VsZWN0aW9uSGFuZGxlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L0JhY2tpbmdTdG9yZVRpbGUuY3BwIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQmFja2luZ1N0b3JlVGlsZS5jcHAKaW5kZXggMjYyZmJl
ZmYyMjFkMWYzNGUyYjIxNDQ0NjY2NmVkN2E2NTRkY2UwMy4uYmViYzgyNjFlNjY4MzU0YTQzMmI0
ZTU4NzBmODhlMTg5ZWU1NGM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYktpdFN1cHBvcnQvQmFja2luZ1N0b3JlVGlsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQmFja2luZ1N0b3JlVGlsZS5jcHAKQEAgLTM3LDYgKzM3
LDcgQEAgVGlsZUJ1ZmZlcjo6VGlsZUJ1ZmZlcihjb25zdCBQbGF0Zm9ybTo6SW50U2l6ZSYgc2l6
ZSkKICAgICA6IG1fc2l6ZShzaXplKQogICAgICwgbV9mZW5jZShGZW5jZTo6Y3JlYXRlKCkpCiAg
ICAgLCBtX2J1ZmZlcigwKQorICAgICwgbV9zY2FsZSgxLjApCiB7CiB9CiAKQEAgLTU1LDE0ICs1
NiwxNCBAQCBQbGF0Zm9ybTo6SW50UmVjdCBUaWxlQnVmZmVyOjpyZWN0KCkgY29uc3QKICAgICBy
ZXR1cm4gUGxhdGZvcm06OkludFJlY3QoUGxhdGZvcm06OkludFBvaW50Ojp6ZXJvKCksIG1fc2l6
ZSk7CiB9CiAKLWJvb2wgVGlsZUJ1ZmZlcjo6aXNSZW5kZXJlZCgpIGNvbnN0Citib29sIFRpbGVC
dWZmZXI6OmlzUmVuZGVyZWQoZG91YmxlIHNjYWxlKSBjb25zdAogewotICAgIHJldHVybiBpc1Jl
bmRlcmVkKHJlY3QoKSk7CisgICAgcmV0dXJuIGlzUmVuZGVyZWQocmVjdCgpLCBzY2FsZSk7CiB9
CiAKLWJvb2wgVGlsZUJ1ZmZlcjo6aXNSZW5kZXJlZChjb25zdCBQbGF0Zm9ybTo6SW50UmVjdFJl
Z2lvbiYgY29udGVudHMpIGNvbnN0Citib29sIFRpbGVCdWZmZXI6OmlzUmVuZGVyZWQoY29uc3Qg
UGxhdGZvcm06OkludFJlY3RSZWdpb24mIGNvbnRlbnRzLCBkb3VibGUgc2NhbGUpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uOjpzdWJ0cmFjdFJlZ2lvbnMoY29u
dGVudHMsIG1fcmVuZGVyZWRSZWdpb24pLmlzRW1wdHkoKTsKKyAgICByZXR1cm4gbV9zY2FsZSA9
PSBzY2FsZSAmJiBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbjo6c3VidHJhY3RSZWdpb25zKGNvbnRl
bnRzLCBtX3JlbmRlcmVkUmVnaW9uKS5pc0VtcHR5KCk7CiB9CiAKIHZvaWQgVGlsZUJ1ZmZlcjo6
Y2xlYXJSZW5kZXJlZFJlZ2lvbihjb25zdCBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbiYgcmVnaW9u
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQmFj
a2luZ1N0b3JlVGlsZS5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
QmFja2luZ1N0b3JlVGlsZS5oCmluZGV4IDAzNjgwOGYzMjc4ODZiYjg0Zjk0Nzg1MzRhMGQwMTY5
MTk4N2EwNDEuLmI1MWEzMTYzYjY3YzcyOGFjYzk2ZTE1MmZiMDQ3NTEzMmRmMDI2ZWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0JhY2tpbmdTdG9y
ZVRpbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9CYWNr
aW5nU3RvcmVUaWxlLmgKQEAgLTc0LDE0ICs3NCwxNyBAQCBjbGFzcyBUaWxlQnVmZmVyIHsKICAg
ICAgICAgUGxhdGZvcm06OkludFNpemUgc2l6ZSgpIGNvbnN0OwogICAgICAgICBQbGF0Zm9ybTo6
SW50UmVjdCByZWN0KCkgY29uc3Q7CiAKLSAgICAgICAgYm9vbCBpc1JlbmRlcmVkKCkgY29uc3Q7
Ci0gICAgICAgIGJvb2wgaXNSZW5kZXJlZChjb25zdCBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbiYg
Y29udGVudHMpIGNvbnN0OworICAgICAgICBib29sIGlzUmVuZGVyZWQoZG91YmxlIHNjYWxlKSBj
b25zdDsKKyAgICAgICAgYm9vbCBpc1JlbmRlcmVkKGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0UmVn
aW9uJiBjb250ZW50cywgZG91YmxlIHNjYWxlKSBjb25zdDsKICAgICAgICAgdm9pZCBjbGVhclJl
bmRlcmVkUmVnaW9uKCk7CiAgICAgICAgIHZvaWQgY2xlYXJSZW5kZXJlZFJlZ2lvbihjb25zdCBQ
bGF0Zm9ybTo6SW50UmVjdFJlZ2lvbiYpOwogICAgICAgICB2b2lkIGFkZFJlbmRlcmVkUmVnaW9u
KGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uJik7CiAgICAgICAgIFBsYXRmb3JtOjpJbnRS
ZWN0UmVnaW9uIHJlbmRlcmVkUmVnaW9uKCkgY29uc3Q7CiAgICAgICAgIFBsYXRmb3JtOjpJbnRS
ZWN0UmVnaW9uIG5vdFJlbmRlcmVkUmVnaW9uKCkgY29uc3Q7CiAKKyAgICAgICAgZG91YmxlIHNj
YWxlKCkgeyByZXR1cm4gbV9zY2FsZTsgfQorICAgICAgICB2b2lkIHNldFNjYWxlKGRvdWJsZSBz
Y2FsZSkgeyBtX3NjYWxlID0gc2NhbGU7IH07CisKICAgICAgICAgUGxhdGZvcm06OkdyYXBoaWNz
OjpCdWZmZXIqIG5hdGl2ZUJ1ZmZlcigpIGNvbnN0OwogCiAgICAgICAgIEZlbmNlKiBmZW5jZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZmVuY2UuZ2V0KCk7IH0KQEAgLTkyLDYgKzk1LDcgQEAgY2xhc3Mg
VGlsZUJ1ZmZlciB7CiAgICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uIG1fcmVuZGVyZWRS
ZWdpb247CiAgICAgICAgIFJlZlB0cjxGZW5jZT4gbV9mZW5jZTsKICAgICAgICAgbXV0YWJsZSBQ
bGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogbV9idWZmZXI7CisgICAgICAgIGRvdWJsZSBtX3Nj
YWxlOwogfTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0
U3VwcG9ydC9CYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3BvcnRBY2Nlc3Nvci5jcHAgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9CYWNraW5nU3RvcmVWaXN1YWxp
emF0aW9uVmlld3BvcnRBY2Nlc3Nvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjAxOWQzMzliMWYyNWZmNjgy
MjFiM2UxYjMwZDAxNzI0ZmE4ZTI5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0JhY2tpbmdTdG9yZVZpc3VhbGl6YXRpb25WaWV3cG9y
dEFjY2Vzc29yLmNwcApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkJhY2tpbmdTdG9yZVZpc3VhbGl6YXRp
b25WaWV3cG9ydEFjY2Vzc29yLmgiCisKKyNpbmNsdWRlICJCYWNraW5nU3RvcmVfcC5oIgorCisj
aW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtUHJpbWl0aXZlcy5oPgorI2luY2x1ZGUgPGFsZ29y
aXRobT4KKwordXNpbmcgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkZsb2F0UG9pbnQ7Cit1c2luZyBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6SW50UG9pbnQ7Cit1c2luZyBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6SW50U2l6ZTsKK3VzaW5nIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpWaWV3cG9ydEFjY2Vzc29y
OworCituYW1lc3BhY2UgQmxhY2tCZXJyeSB7CituYW1lc3BhY2UgV2ViS2l0IHsKKworQmFja2lu
Z1N0b3JlVmlzdWFsaXphdGlvblZpZXdwb3J0QWNjZXNzb3I6OkJhY2tpbmdTdG9yZVZpc3VhbGl6
YXRpb25WaWV3cG9ydEFjY2Vzc29yKFZpZXdwb3J0QWNjZXNzb3IqIG9yaWdpbmFsQWNjZXNzb3Is
IEJhY2tpbmdTdG9yZVByaXZhdGUqIGJhY2tpbmdTdG9yZVByaXZhdGUpCisgICAgOiBtX29yaWdp
bmFsQWNjZXNzb3Iob3JpZ2luYWxBY2Nlc3NvcikKKyAgICAsIG1fYmFja2luZ1N0b3JlUHJpdmF0
ZShiYWNraW5nU3RvcmVQcml2YXRlKQoreworfQorCitJbnRTaXplIEJhY2tpbmdTdG9yZVZpc3Vh
bGl6YXRpb25WaWV3cG9ydEFjY2Vzc29yOjpwaXhlbENvbnRlbnRzU2l6ZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHJvdW5kVG9QaXhlbEZyb21Eb2N1bWVudENvbnRlbnRzKGRvY3VtZW50Q29udGVu
dHNSZWN0KCkpLnNpemUoKTsKK30KKworSW50U2l6ZSBCYWNraW5nU3RvcmVWaXN1YWxpemF0aW9u
Vmlld3BvcnRBY2Nlc3Nvcjo6ZG9jdW1lbnRDb250ZW50c1NpemUoKSBjb25zdAoreworICAgIHJl
dHVybiBtX29yaWdpbmFsQWNjZXNzb3ItPmRvY3VtZW50Q29udGVudHNTaXplKCk7Cit9CisKK0lu
dFBvaW50IEJhY2tpbmdTdG9yZVZpc3VhbGl6YXRpb25WaWV3cG9ydEFjY2Vzc29yOjpwaXhlbFNj
cm9sbFBvc2l0aW9uKCkgY29uc3QKK3sKKyAgICBGbG9hdFBvaW50IHBvcyA9IHBpeGVsRnJvbURv
Y3VtZW50Q29udGVudHMoCisgICAgICAgIHRvRG9jdW1lbnRDb250ZW50cyhzdGF0ZSgpLT5iYWNr
aW5nU3RvcmVPZmZzZXQoKSwgc3RhdGUoKS0+c2NhbGUoKSkpOworCisgICAgcmV0dXJuIEludFBv
aW50KHN0YXRpY19jYXN0PGludD4ocG9zLngoKSksIHN0YXRpY19jYXN0PGludD4ocG9zLnkoKSkp
OworfQorCitJbnRQb2ludCBCYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3BvcnRBY2Nlc3Nv
cjo6ZG9jdW1lbnRTY3JvbGxQb3NpdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJvdW5kVG9E
b2N1bWVudENvbnRlbnRzKHN0YXRlKCktPmJhY2tpbmdTdG9yZU9mZnNldCgpLCBzdGF0ZSgpLT5z
Y2FsZSgpKTsKK30KKworSW50U2l6ZSBCYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3BvcnRB
Y2Nlc3Nvcjo6cGl4ZWxWaWV3cG9ydFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtX29yaWdp
bmFsQWNjZXNzb3ItPnBpeGVsVmlld3BvcnRTaXplKCk7Cit9CisKK0ludFNpemUgQmFja2luZ1N0
b3JlVmlzdWFsaXphdGlvblZpZXdwb3J0QWNjZXNzb3I6OmRvY3VtZW50Vmlld3BvcnRTaXplKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gcm91bmRUb0RvY3VtZW50RnJvbVBpeGVsQ29udGVudHMocGl4
ZWxWaWV3cG9ydFJlY3QoKSkuc2l6ZSgpOworfQorCitJbnRQb2ludCBCYWNraW5nU3RvcmVWaXN1
YWxpemF0aW9uVmlld3BvcnRBY2Nlc3Nvcjo6ZGVzdGluYXRpb25TdXJmYWNlT2Zmc2V0KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9vcmlnaW5hbEFjY2Vzc29yLT5kZXN0aW5hdGlvblN1cmZhY2VP
ZmZzZXQoKTsKK30KKworZG91YmxlIEJhY2tpbmdTdG9yZVZpc3VhbGl6YXRpb25WaWV3cG9ydEFj
Y2Vzc29yOjpzY2FsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRlKCktPnNjYWxlKCkgLyBz
dGQ6Om1heChzdGF0ZSgpLT5udW1iZXJPZlRpbGVzV2lkZSgpLCBzdGF0ZSgpLT5udW1iZXJPZlRp
bGVzSGlnaCgpKTsKK30KKworQmFja2luZ1N0b3JlR2VvbWV0cnkqIEJhY2tpbmdTdG9yZVZpc3Vh
bGl6YXRpb25WaWV3cG9ydEFjY2Vzc29yOjpzdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
YmFja2luZ1N0b3JlUHJpdmF0ZS0+ZnJvbnRTdGF0ZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKK30gLy8gbmFtZXNwYWNlIEJsYWNrQmVycnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0JhY2tpbmdTdG9yZVZpc3VhbGl6YXRpb25WaWV3
cG9ydEFjY2Vzc29yLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9C
YWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3BvcnRBY2Nlc3Nvci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYw
OGJhMGY1ZmIyNmFmNGJlMjMxMjViNmQ2ZGVmMDhiMGE0Nzk4NzAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9CYWNraW5nU3RvcmVWaXN1
YWxpemF0aW9uVmlld3BvcnRBY2Nlc3Nvci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKi8KKworI2lmbmRlZiBCYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3BvcnRB
Y2Nlc3Nvcl9oCisjZGVmaW5lIEJhY2tpbmdTdG9yZVZpc3VhbGl6YXRpb25WaWV3cG9ydEFjY2Vz
c29yX2gKKworI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVZpZXdwb3J0QWNjZXNzb3IuaD4K
KworbmFtZXNwYWNlIEJsYWNrQmVycnkgeworCituYW1lc3BhY2UgUGxhdGZvcm0geworY2xhc3Mg
SW50UG9pbnQ7CitjbGFzcyBJbnRTaXplOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgQmFja2luZ1N0b3JlUHJpdmF0ZTsKK2NsYXNzIEJhY2tpbmdTdG9yZUdlb21ldHJ5OworCitj
bGFzcyBCYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3BvcnRBY2Nlc3NvciA6IHB1YmxpYyBQ
bGF0Zm9ybTo6Vmlld3BvcnRBY2Nlc3NvciB7CitwdWJsaWM6CisgICAgQmFja2luZ1N0b3JlVmlz
dWFsaXphdGlvblZpZXdwb3J0QWNjZXNzb3IoVmlld3BvcnRBY2Nlc3Nvciogb3JpZ2luYWxBY2Nl
c3NvciwgQmFja2luZ1N0b3JlUHJpdmF0ZSopOworICAgIHZpcnR1YWwgfkJhY2tpbmdTdG9yZVZp
c3VhbGl6YXRpb25WaWV3cG9ydEFjY2Vzc29yKCkgeyB9CisKKyAgICB2aXJ0dWFsIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpJbnRTaXplIGRvY3VtZW50Q29udGVudHNTaXplKCkgY29uc3Q7CisgICAg
dmlydHVhbCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6SW50U2l6ZSBwaXhlbENvbnRlbnRzU2l6ZSgp
IGNvbnN0OworCisgICAgdmlydHVhbCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6SW50UG9pbnQgZG9j
dW1lbnRTY3JvbGxQb3NpdGlvbigpIGNvbnN0OworICAgIHZpcnR1YWwgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkludFBvaW50IHBpeGVsU2Nyb2xsUG9zaXRpb24oKSBjb25zdDsKKworICAgIHZpcnR1
YWwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkludFNpemUgZG9jdW1lbnRWaWV3cG9ydFNpemUoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpJbnRTaXplIHBpeGVsVmll
d3BvcnRTaXplKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpJ
bnRQb2ludCBkZXN0aW5hdGlvblN1cmZhY2VPZmZzZXQoKSBjb25zdDsKKworICAgIHZpcnR1YWwg
ZG91YmxlIHNjYWxlKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgQmFja2luZ1N0b3JlR2VvbWV0
cnkqIHN0YXRlKCkgY29uc3Q7CisKKyAgICBQbGF0Zm9ybTo6Vmlld3BvcnRBY2Nlc3NvciogbV9v
cmlnaW5hbEFjY2Vzc29yOworICAgIEJhY2tpbmdTdG9yZVByaXZhdGUqIG1fYmFja2luZ1N0b3Jl
UHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorfSAvLyBuYW1lc3BhY2UgQmxh
Y2tCZXJyeQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJLaXRTdXBwb3J0L1dlYktpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3IuY3BwIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvV2ViS2l0VGhyZWFkVmlld3BvcnRBY2Nlc3Nv
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNWQ4MjkzYjE5MDk1MjAyMjQ4OTVmNzgwNTdlNjk5NWQ5YzNiNzdk
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBw
b3J0L1dlYktpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3IuY3BwCkBAIC0wLDAgKzEsODIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAi
V2ViS2l0VGhyZWFkVmlld3BvcnRBY2Nlc3Nvci5oIgorCisjaW5jbHVkZSAiV2ViUGFnZV9wLmgi
CisKKyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1NZXNzYWdlQ2xpZW50Lmg+CisjaW5jbHVk
ZSA8QmxhY2tCZXJyeVBsYXRmb3JtUHJpbWl0aXZlcy5oPgorCit1c2luZyBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6SW50UG9pbnQ7Cit1c2luZyBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6SW50U2l6ZTsK
K3VzaW5nIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpWaWV3cG9ydEFjY2Vzc29yOworCituYW1lc3Bh
Y2UgQmxhY2tCZXJyeSB7CituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViS2l0VGhyZWFkVmlld3Bv
cnRBY2Nlc3Nvcjo6V2ViS2l0VGhyZWFkVmlld3BvcnRBY2Nlc3NvcihXZWJQYWdlUHJpdmF0ZSog
d2ViUGFnZVByaXZhdGUpCisgICAgOiBtX3dlYlBhZ2VQcml2YXRlKHdlYlBhZ2VQcml2YXRlKQor
eworfQorCitJbnRTaXplIFdlYktpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3I6OnBpeGVsQ29udGVu
dHNTaXplKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoUGxhdGZvcm06OndlYktpdFRocmVhZE1lc3Nh
Z2VDbGllbnQoKS0+aXNDdXJyZW50VGhyZWFkKCkpOworCisgICAgcmV0dXJuIG1fd2ViUGFnZVBy
aXZhdGUtPnRyYW5zZm9ybWVkQ29udGVudHNTaXplKCk7Cit9CisKK0ludFNpemUgV2ViS2l0VGhy
ZWFkVmlld3BvcnRBY2Nlc3Nvcjo6ZG9jdW1lbnRDb250ZW50c1NpemUoKSBjb25zdAoreworICAg
IEFTU0VSVChQbGF0Zm9ybTo6d2ViS2l0VGhyZWFkTWVzc2FnZUNsaWVudCgpLT5pc0N1cnJlbnRU
aHJlYWQoKSk7CisKKyAgICByZXR1cm4gbV93ZWJQYWdlUHJpdmF0ZS0+Y29udGVudHNTaXplKCk7
Cit9CisKK0ludFBvaW50IFdlYktpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3I6OnBpeGVsU2Nyb2xs
UG9zaXRpb24oKSBjb25zdAoreworICAgIEFTU0VSVChQbGF0Zm9ybTo6d2ViS2l0VGhyZWFkTWVz
c2FnZUNsaWVudCgpLT5pc0N1cnJlbnRUaHJlYWQoKSk7CisKKyAgICByZXR1cm4gbV93ZWJQYWdl
UHJpdmF0ZS0+dHJhbnNmb3JtZWRTY3JvbGxQb3NpdGlvbigpOworfQorCitJbnRQb2ludCBXZWJL
aXRUaHJlYWRWaWV3cG9ydEFjY2Vzc29yOjpkb2N1bWVudFNjcm9sbFBvc2l0aW9uKCkgY29uc3QK
K3sKKyAgICBBU1NFUlQoUGxhdGZvcm06OndlYktpdFRocmVhZE1lc3NhZ2VDbGllbnQoKS0+aXND
dXJyZW50VGhyZWFkKCkpOworCisgICAgcmV0dXJuIG1fd2ViUGFnZVByaXZhdGUtPnNjcm9sbFBv
c2l0aW9uKCk7Cit9CisKK0ludFNpemUgV2ViS2l0VGhyZWFkVmlld3BvcnRBY2Nlc3Nvcjo6cGl4
ZWxWaWV3cG9ydFNpemUoKSBjb25zdAoreworICAgIEFTU0VSVChQbGF0Zm9ybTo6d2ViS2l0VGhy
ZWFkTWVzc2FnZUNsaWVudCgpLT5pc0N1cnJlbnRUaHJlYWQoKSk7CisKKyAgICByZXR1cm4gbV93
ZWJQYWdlUHJpdmF0ZS0+dHJhbnNmb3JtZWRBY3R1YWxWaXNpYmxlU2l6ZSgpOworfQorCitJbnRT
aXplIFdlYktpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3I6OmRvY3VtZW50Vmlld3BvcnRTaXplKCkg
Y29uc3QKK3sKKyAgICBBU1NFUlQoUGxhdGZvcm06OndlYktpdFRocmVhZE1lc3NhZ2VDbGllbnQo
KS0+aXNDdXJyZW50VGhyZWFkKCkpOworCisgICAgcmV0dXJuIG1fd2ViUGFnZVByaXZhdGUtPmFj
dHVhbFZpc2libGVTaXplKCk7Cit9CisKK0ludFBvaW50IFdlYktpdFRocmVhZFZpZXdwb3J0QWNj
ZXNzb3I6OmRlc3RpbmF0aW9uU3VyZmFjZU9mZnNldCgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkIHNvbWVob3cgZ2V0IGl0cyBvZmZzZXQgZnJvbSBhIHJlbGlhYmxlIHNvdXJj
ZS4KKyAgICByZXR1cm4gSW50UG9pbnQoMCwgMCk7Cit9CisKK2RvdWJsZSBXZWJLaXRUaHJlYWRW
aWV3cG9ydEFjY2Vzc29yOjpzY2FsZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKFBsYXRmb3JtOjp3
ZWJLaXRUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmlzQ3VycmVudFRocmVhZCgpKTsKKworICAgIHJl
dHVybiBtX3dlYlBhZ2VQcml2YXRlLT5jdXJyZW50U2NhbGUoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Cit9IC8vIG5hbWVzcGFjZSBCbGFja0JlcnJ5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9XZWJLaXRUaHJlYWRWaWV3cG9ydEFjY2Vz
c29yLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9XZWJLaXRUaHJl
YWRWaWV3cG9ydEFjY2Vzc29yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGE1NDkzZmQzMjkzMThhODZhZjk0NTZh
OTg4M2ViZTFkMzU1MzVlYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L1dlYktpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3IuaApAQCAtMCww
ICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBM
aW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisKKyNpZm5kZWYgV2ViS2l0VGhyZWFk
Vmlld3BvcnRBY2Nlc3Nvcl9oCisjZGVmaW5lIFdlYktpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3Jf
aAorCisjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtVmlld3BvcnRBY2Nlc3Nvci5oPgorCitu
YW1lc3BhY2UgQmxhY2tCZXJyeSB7CisKK25hbWVzcGFjZSBQbGF0Zm9ybSB7CitjbGFzcyBJbnRQ
b2ludDsKK2NsYXNzIEludFNpemU7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
ZWJQYWdlUHJpdmF0ZTsKKworY2xhc3MgV2ViS2l0VGhyZWFkVmlld3BvcnRBY2Nlc3NvciA6IHB1
YmxpYyBQbGF0Zm9ybTo6Vmlld3BvcnRBY2Nlc3NvciB7CitwdWJsaWM6CisgICAgV2ViS2l0VGhy
ZWFkVmlld3BvcnRBY2Nlc3NvcihXZWJQYWdlUHJpdmF0ZSopOworICAgIHZpcnR1YWwgfldlYktp
dFRocmVhZFZpZXdwb3J0QWNjZXNzb3IoKSB7IH0KKworICAgIHZpcnR1YWwgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkludFNpemUgZG9jdW1lbnRDb250ZW50c1NpemUoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpJbnRTaXplIHBpeGVsQ29udGVudHNTaXplKCkgY29u
c3Q7CisKKyAgICB2aXJ0dWFsIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpJbnRQb2ludCBkb2N1bWVu
dFNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6SW50UG9pbnQgcGl4ZWxTY3JvbGxQb3NpdGlvbigpIGNvbnN0OworCisgICAgdmlydHVhbCBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6SW50U2l6ZSBkb2N1bWVudFZpZXdwb3J0U2l6ZSgpIGNvbnN0
OworICAgIHZpcnR1YWwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkludFNpemUgcGl4ZWxWaWV3cG9y
dFNpemUoKSBjb25zdDsKKworICAgIHZpcnR1YWwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkludFBv
aW50IGRlc3RpbmF0aW9uU3VyZmFjZU9mZnNldCgpIGNvbnN0OworCisgICAgdmlydHVhbCBkb3Vi
bGUgc2NhbGUoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBQbGF0Zm9ybTo6Vmlld3BvcnRBY2Nl
c3NvciogbV9vcmlnaW5hbEFjY2Vzc29yOworICAgIFdlYlBhZ2VQcml2YXRlKiBtX3dlYlBhZ2VQ
cml2YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cit9IC8vIG5hbWVzcGFjZSBCbGFj
a0JlcnJ5CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167466</attachid>
            <date>2012-10-06 17:51:36 -0700</date>
            <delta_ts>2012-10-12 14:18:43 -0700</delta_ts>
            <desc>Patch, same but with internal reviewer line</desc>
            <filename>webkit-bug-98581-eliminate-userinterfaceblittedblah.patch</filename>
            <type>text/plain</type>
            <size>53007</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDEzNTZkNTAxZTU2ZjBiZTA3
MGVhYTBhNjE2MjllMzBhMTcyZWVlZDEuLjQ4MGFkNzYxY2ExYmVmNTE1Y2NhZDVlZTU0MmRmMDFm
NGE2MWNkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMTAtMDUgIEpha29iIFBl
dHNvdml0cyAgPGpwZXRzb3ZpdHNAcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gRmV0
Y2ggYmxpdCByZWN0cyBmcm9tIGEgdmlld3BvcnQgYWNjZXNzb3IKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NTgxCisgICAgICAgIFJJTSBQUiAxNzMy
OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgSW50ZXJu
YWxseSByZXZpZXdlZCBieSBBcnZpZCBOaWxzc29uLgorCisgICAgICAgIEFkZCBuZXcgVmlld3Bv
cnRBY2Nlc3NvciBmaWxlcyB0byB0aGUgYnVpbGQuCisgICAgICAgIFNlZSBTb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGZvciB0aGUKKyAgICAgICAgdmVyYm9zZSBjb21taXQgbWVz
c2FnZS4KKworICAgICAgICAqIFBsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZToKKwogMjAxMi0xMC0w
NCAgUm9iIEJ1aXMgIDxyYnVpc0ByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBTeW5j
IHVwIENNYWtlIGZpbGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwppbmRleCA3NjEwMTc5
NDU5MWY4MWJjZWJmZTBhZTE2ZTBkZTU1NmQ1OGYwMmU5Li43YTc5MjJhYmI4YzFkNzNiODk1MjVm
OWM1Y2ViNDgzZDZlOTlmN2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzAgQEAKKzIwMTItMTAtMDUgIEpha29iIFBldHNvdml0cyAgPGpwZXRzb3ZpdHNAcmlt
LmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gRmV0Y2ggYmxpdCByZWN0cyBmcm9tIGEgdmll
d3BvcnQgYWNjZXNzb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk4NTgxCisgICAgICAgIFJJTSBQUiAxNzMyOTIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgSW50ZXJuYWxseSByZXZpZXdlZCBieSBBcnZpZCBO
aWxzc29uLgorCisgICAgICAgIFRoZSBsb25nLXN0YW5kaW5nIHVzZXJJbnRlcmZhY2VCbGl0dGVk
VmlzaWJsZUNvbnRlbnRzUmVjdCgpCisgICAgICAgIG1ldGhvZCBpbiBXZWJQYWdlQ2xpZW50IGhh
cyBsb25nIGJlZW4gYSBtYWpvciBhbm5veWFuY2UsCisgICAgICAgIGFzIGl0IHJldHVybnMgdGhl
IHNvdXJjZSByZWN0IGZvciBXZWJLaXQgY29udGVudHMgYnV0IGluCisgICAgICAgIGJhY2tpbmdz
dG9yZSBwaXhlbCBjb29yZGluYXRlcy4gVGhpcyBtYWtlcyBpdCBub3Qgb25seQorICAgICAgICB1
bndpZWxkeSBidXQgYWxzbyB0ZXJyaWJseSBmcmFnaWxlLCBlc3BlY2lhbGx5IHdoZW4KKyAgICAg
ICAgYm90aCBwaW5jaCB6b29tIGFuZCBhIGJhY2tpbmdzdG9yZSByZS1yZW5kZXIgYm90aCBkZWFs
CisgICAgICAgIHdpdGggdGhlIHNhbWUgcmVjdGFuZ2xlLiBPbiBkaWZmZXJlbnQgdGhyZWFkcywg
ZXZlbi4KKworICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybSBub3cgZXhwb3NlcyBhIFZpZXdw
b3J0QWNjZXNzb3IKKyAgICAgICAgaW50ZXJmYWNlLCB3aGljaCBjYW4gYmUgdXNlZCB0byBnZXQg
dGhlIHZhcmlvdXMgcmVjdHMKKyAgICAgICAgaW4gZG9jdW1lbnQgY29vcmRpbmF0ZXMgb3IgdGFy
Z2V0IHBpeGVsIGNvb3JkaW5hdGVzLAorICAgICAgICBib3RoIGJlaW5nIGEgYmV0dGVyIGNob2lj
ZSB0aGFuIHRoZSBvbmVzIGRlcGVuZGVudAorICAgICAgICBvbiBhbiBpbXBsZW50YXRpb24gZGV0
YWlsLgorCisgICAgICAgIFRoaXMgY29tbWl0IG1ha2VzIHVzZSBvZiB0aGlzIG5ldyBmdW5jdGlv
bmFsaXR5LgorICAgICAgICBJbnN0ZWFkIG9mIHJlbHlpbmcgb24gdGhlIHBhc3NlZCByZWN0YW5n
bGUgdG8gY29udGFpbgorICAgICAgICBpbXBsaWNpdCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2Nh
bGUgZmFjdG9yLCB3ZSBub3cKKyAgICAgICAgdHJhY2sgaXQgb24gYSBwZXItZ2VvbWV0cnktc3Rh
dGUgYmFzaXMgYW5kIGNhbGN1bGF0ZQorICAgICAgICB0aGUgcmVtYWluaW5nIGJhY2tpbmdzdG9y
ZS10by12aWV3cG9ydCB0cmFuc2Zvcm1hdGlvbgorICAgICAgICBvbmx5IGlmIGFuZCB3aGVyZSB3
ZSBuZWVkIGl0LgorCisgICAgICAgIEFzIGEgcmVzdWx0LCB3ZSBhcmUgbm93IGEgbG90IG1vcmUg
cm9idXN0IGFnYWluc3QKKyAgICAgICAgc3luY2hvbml6YXRpb24gaXNzdWVzIHJlbGF0ZWQgdG8g
YmFja2luZ3N0b3JlCisgICAgICAgIGdlb21ldHJ5IGNoYW5nZXMuCisKKyAgICAgICAgVGhpcyBh
bHNvIG9wZW5zIHVwIG9wcG9ydHVuaXRpZXMgdG8gZnVydGhlciBpbXByb3ZlCisgICAgICAgIGJh
Y2tpbmdzdG9yZSByZW5kZXJpbmcgbGF0ZXIgdG8gdXNlIG1vcmUgdGhhbiBqdXN0CisgICAgICAg
IG9uZSBzY2FsZSBmb3IgYWxsIHN1cmZhY2VzIGluIGEgZ2l2ZW4gZnJhbWUuCisgICAgICAgIE5v
IHN1Y2ggdGhpbmcgaXMgaW1wbGVtZW50ZWQgaW4gdGhpcyBwYXRjaCB0aG91Z2guCisKKyAgICAg
ICAgSW4gYWRhcHRpbmcvZml4aW5nIHRoZSBiYWNraW5nc3RvcmUgdmlzdWFsaXphdGlvbgorICAg
ICAgICBkZWJ1ZyBtb2RlIGFuZCB0aGUgZGVmYXVsdCBiYWNrZ3JvdW5kIHBhaW50aW5nIGluCisg
ICAgICAgIHJlbmRlckRpcmVjdFRvV2luZG93KCksIHdlIGFsc28gaW50cm9kdWNlIG5ldworICAg
ICAgICBWaWV3cG9ydEFjY2Vzc29yIHN1YmNsYXNzZXMgdGhhdCBjYW4gc3Vic2VxdWVudGx5Cisg
ICAgICAgIGJlIHVzZWQgdG8gcmVwbGFjZSBtZXRob2RzIGZyb20gV2ViUGFnZSBhbmQgZWxzZXdo
ZXJlLgorCisgICAgICAgICogQXBpL0JhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChCbGFja0Jl
cnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OnNsb3dTY3JvbGwpOgorICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpzY3JvbGwpOgorICAgICAg
ICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpzZXRCYWNraW5nU3Rv
cmVSZWN0KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0
ZTo6c2Nyb2xsQmFja2luZ1N0b3JlKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFj
a2luZ1N0b3JlUHJpdmF0ZTo6cmVuZGVyRGlyZWN0VG9XaW5kb3cpOgorICAgICAgICAoQmxhY2tC
ZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpyZW5kZXIpOgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpwYWludERlZmF1bHRCYWNrZ3Jv
dW5kKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6
YmxpdFZpc2libGVDb250ZW50cyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tp
bmdTdG9yZVByaXZhdGU6OmJsaXRIb3Jpem9udGFsU2Nyb2xsYmFyKToKKyAgICAgICAgKEJsYWNr
QmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6YmxpdFZlcnRpY2FsU2Nyb2xsYmFy
KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6dXBk
YXRlVGlsZXNGb3JTY3JvbGxPck5vdFJlbmRlcmVkUmVnaW9uKToKKyAgICAgICAgKEJsYWNrQmVy
cnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6dXBkYXRlVGlsZU1hdHJpeElmTmVlZGVk
KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6b3Jp
ZW50YXRpb25DaGFuZ2VkKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0
b3JlUHJpdmF0ZTo6Y3JlYXRlU3VyZmFjZXMpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpCYWNraW5nU3RvcmVQcml2YXRlOjppbnZhbGlkYXRlV2luZG93KToKKyAgICAgICAgKiBBcGkv
QmFja2luZ1N0b3JlX3AuaDoKKyAgICAgICAgKEJsYWNrQmVycnkpOgorICAgICAgICAoUGxhdGZv
cm0pOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVHZW9tZXRyeTo6
QmFja2luZ1N0b3JlR2VvbWV0cnkpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNr
aW5nU3RvcmVHZW9tZXRyeTo6c2NhbGUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpC
YWNraW5nU3RvcmVHZW9tZXRyeTo6c2V0U2NhbGUpOgorICAgICAgICAoQmFja2luZ1N0b3JlR2Vv
bWV0cnkpOgorICAgICAgICAoQmFja2luZ1N0b3JlUHJpdmF0ZSk6CisgICAgICAgICogQXBpL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6
V2ViUGFnZVByaXZhdGUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJp
dmF0ZTo6fldlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2Vi
UGFnZVByaXZhdGU6OmluaXQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdl
Ojp3ZWJraXRUaHJlYWRWaWV3cG9ydEFjY2Vzc29yKToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgICogQXBpL1dlYlBhZ2UuaDoKKyAgICAgICAgKFBsYXRmb3JtKToKKyAgICAgICAgKiBBcGkv
V2ViUGFnZUNsaWVudC5oOgorICAgICAgICAoUGxhdGZvcm0pOgorICAgICAgICAqIEFwaS9XZWJQ
YWdlQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VD
b21wb3NpdG9yUHJpdmF0ZTo6YW5pbWF0aW9uRnJhbWVDaGFuZ2VkKToKKyAgICAgICAgKiBBcGkv
V2ViUGFnZV9wLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViUGFnZVByaXZhdGUp
OgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvQmFja2luZ1N0b3JlVGlsZS5jcHA6CisgICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OlRpbGVCdWZmZXI6OlRpbGVCdWZmZXIpOgorICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpUaWxlQnVmZmVyOjppc1JlbmRlcmVkKToKKyAgICAgICAgKiBX
ZWJLaXRTdXBwb3J0L0JhY2tpbmdTdG9yZVRpbGUuaDoKKyAgICAgICAgKFRpbGVCdWZmZXIpOgor
ICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpUaWxlQnVmZmVyOjpzY2FsZSk6CisgICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OlRpbGVCdWZmZXI6OnNldFNjYWxlKToKKyAgICAgICAgKiBX
ZWJLaXRTdXBwb3J0L0JhY2tpbmdTdG9yZVZpc3VhbGl6YXRpb25WaWV3cG9ydEFjY2Vzc29yLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpCYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3BvcnRBY2Nlc3Nvcjo6QmFja2luZ1N0b3Jl
VmlzdWFsaXphdGlvblZpZXdwb3J0QWNjZXNzb3IpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2Vi
S2l0OjpCYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3BvcnRBY2Nlc3Nvcjo6cGl4ZWxDb250
ZW50c1NpemUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVWaXN1
YWxpemF0aW9uVmlld3BvcnRBY2Nlc3Nvcjo6ZG9jdW1lbnRDb250ZW50c1NpemUpOgorICAgICAg
ICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3BvcnRB
Y2Nlc3Nvcjo6cGl4ZWxTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJL
aXQ6OkJhY2tpbmdTdG9yZVZpc3VhbGl6YXRpb25WaWV3cG9ydEFjY2Vzc29yOjpkb2N1bWVudFNj
cm9sbFBvc2l0aW9uKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3Jl
VmlzdWFsaXphdGlvblZpZXdwb3J0QWNjZXNzb3I6OnBpeGVsVmlld3BvcnRTaXplKToKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlVmlzdWFsaXphdGlvblZpZXdwb3J0
QWNjZXNzb3I6OmRvY3VtZW50Vmlld3BvcnRTaXplKToKKyAgICAgICAgKEJsYWNrQmVycnk6Oldl
YktpdDo6QmFja2luZ1N0b3JlVmlzdWFsaXphdGlvblZpZXdwb3J0QWNjZXNzb3I6OmRlc3RpbmF0
aW9uU3VyZmFjZU9mZnNldCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdT
dG9yZVZpc3VhbGl6YXRpb25WaWV3cG9ydEFjY2Vzc29yOjpzY2FsZSk6CisgICAgICAgIChCbGFj
a0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVZpc3VhbGl6YXRpb25WaWV3cG9ydEFjY2Vzc29y
OjpzdGF0ZSk6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9CYWNraW5nU3RvcmVWaXN1YWxpemF0
aW9uVmlld3BvcnRBY2Nlc3Nvci5oOiBBZGRlZC4KKyAgICAgICAgKEJsYWNrQmVycnkpOgorICAg
ICAgICAoUGxhdGZvcm0pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEJhY2tpbmdTdG9y
ZVZpc3VhbGl6YXRpb25WaWV3cG9ydEFjY2Vzc29yKToKKyAgICAgICAgKEJsYWNrQmVycnk6Oldl
YktpdDo6QmFja2luZ1N0b3JlVmlzdWFsaXphdGlvblZpZXdwb3J0QWNjZXNzb3I6On5CYWNraW5n
U3RvcmVWaXN1YWxpemF0aW9uVmlld3BvcnRBY2Nlc3Nvcik6CisgICAgICAgICogV2ViS2l0U3Vw
cG9ydC9XZWJLaXRUaHJlYWRWaWV3cG9ydEFjY2Vzc29yLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJLaXRUaHJlYWRWaWV3cG9y
dEFjY2Vzc29yOjpXZWJLaXRUaHJlYWRWaWV3cG9ydEFjY2Vzc29yKToKKyAgICAgICAgKEJsYWNr
QmVycnk6OldlYktpdDo6V2ViS2l0VGhyZWFkVmlld3BvcnRBY2Nlc3Nvcjo6cGl4ZWxDb250ZW50
c1NpemUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJLaXRUaHJlYWRWaWV3cG9y
dEFjY2Vzc29yOjpkb2N1bWVudENvbnRlbnRzU2l6ZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpX
ZWJLaXQ6OldlYktpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3I6OnBpeGVsU2Nyb2xsUG9zaXRpb24p
OgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJLaXRUaHJlYWRWaWV3cG9ydEFjY2Vz
c29yOjpkb2N1bWVudFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktp
dDo6V2ViS2l0VGhyZWFkVmlld3BvcnRBY2Nlc3Nvcjo6cGl4ZWxWaWV3cG9ydFNpemUpOgorICAg
ICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJLaXRUaHJlYWRWaWV3cG9ydEFjY2Vzc29yOjpk
b2N1bWVudFZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYktp
dFRocmVhZFZpZXdwb3J0QWNjZXNzb3I6OmRlc3RpbmF0aW9uU3VyZmFjZU9mZnNldCk6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYktpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3I6OnNj
YWxlKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L1dlYktpdFRocmVhZFZpZXdwb3J0QWNjZXNz
b3IuaDogQWRkZWQuCisgICAgICAgIChCbGFja0JlcnJ5KToKKyAgICAgICAgKFBsYXRmb3JtKToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXRUaHJlYWRWaWV3cG9ydEFjY2Vzc29y
KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViS2l0VGhyZWFkVmlld3BvcnRBY2Nl
c3Nvcjo6fldlYktpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3IpOgorCiAyMDEyLTEwLTA1ICBSb2Ig
QnVpcyAgPHJidWlzQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIEltcGxlbWVudCBU
ZXN0UnVubmVyLnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtQmxh
Y2tCZXJyeS5jbWFrZQppbmRleCBkZTQzY2ViNTYwZWU4YmQ0ODQ0ZmIyZWQ4ZDdiMDUxZjkzMGI5
YTM0Li5lM2Q5OTQ4NWRhNTk0MWYyMDNlNTMxODY0MmUyZjkyNTYwZjI0MDU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQpAQCAtMTI1LDYgKzEyNSw3IEBAIExJU1QoQVBQ
RU5EIFdlYktpdF9TT1VSQ0VTCiAgICAgYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0Fib3V0RGF0
YS5jcHAKICAgICBibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQmFja2luZ1N0b3JlVGlsZS5jcHAK
ICAgICBibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQmFja2luZ1N0b3JlQ2xpZW50LmNwcAorICAg
IGJsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9CYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3Bv
cnRBY2Nlc3Nvci5jcHAKICAgICBibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRGVmYXVsdFRhcEhp
Z2hsaWdodC5jcHAKICAgICBibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHAK
ICAgICBibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRnJhbWVMYXllcnMuY3BwCkBAIC0xMzgsNiAr
MTM5LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKICAgICBibGFja2JlcnJ5L1dlYktp
dFN1cHBvcnQvU3VyZmFjZVBvb2wuY3BwCiAgICAgYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1Rv
dWNoRXZlbnRIYW5kbGVyLmNwcAogICAgIGJsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9GYXRGaW5n
ZXJzLmNwcAorICAgIGJsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9XZWJLaXRUaHJlYWRWaWV3cG9y
dEFjY2Vzc29yLmNwcAogKQogCiBJRiAoRU5BQkxFX1dFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuY3BwCmluZGV4IGNhOWZhM2ZlZjQ0NWIwNzk3NTc3
OGJhNTQ2MzdhNDhlZTIxMGUyM2YuLjQ4ZDFhMGRlYmY2Y2JjMjNjZjMyZTYyYjZlMDM5MzMxOTRl
MTQxNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZS5j
cHAKQEAgLTIxLDYgKzIxLDcgQEAKIAogI2luY2x1ZGUgIkJhY2tpbmdTdG9yZUNsaWVudC5oIgog
I2luY2x1ZGUgIkJhY2tpbmdTdG9yZVRpbGUuaCIKKyNpbmNsdWRlICJCYWNraW5nU3RvcmVWaXN1
YWxpemF0aW9uVmlld3BvcnRBY2Nlc3Nvci5oIgogI2luY2x1ZGUgIkJhY2tpbmdTdG9yZV9wLmgi
CiAjaW5jbHVkZSAiRmF0RmluZ2Vycy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC00NSw2ICs0
Niw3IEBACiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtTWVzc2FnZUNsaWVudC5oPgogI2lu
Y2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVNjcmVlbi5oPgogI2luY2x1ZGUgPEJsYWNrQmVycnlQ
bGF0Zm9ybVNldHRpbmdzLmg+CisjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtVmlld3BvcnRB
Y2Nlc3Nvci5oPgogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVdpbmRvdy5oPgogCiAjaW5j
bHVkZSA8U2tJbWFnZURlY29kZXIuaD4KQEAgLTQxMiw2ICs0MTQsOCBAQCB2b2lkIEJhY2tpbmdT
dG9yZVByaXZhdGU6OnJlcGFpbnQoY29uc3QgUGxhdGZvcm06OkludFJlY3QmIHdpbmRvd1JlY3Qs
CiAKIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6c2xvd1Njcm9sbChjb25zdCBQbGF0Zm9ybTo6
SW50U2l6ZSYgZGVsdGEsIGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiB3aW5kb3dSZWN0LCBib29s
IGltbWVkaWF0ZSkKIHsKKyAgICBBU1NFUlQoQmxhY2tCZXJyeTo6UGxhdGZvcm06OndlYktpdFRo
cmVhZE1lc3NhZ2VDbGllbnQoKS0+aXNDdXJyZW50VGhyZWFkKCkpOworCiAjaWYgREVCVUdfQkFD
S0lOR1NUT1JFCiAgICAgLy8gU3RhcnQgdGhlIHRpbWUgbWVhc3VyZW1lbnQuLi4KICAgICBkb3Vi
bGUgdGltZSA9IFdURjo6Y3VycmVudFRpbWUoKTsKQEAgLTQ0NSw2ICs0NDksOCBAQCB2b2lkIEJh
Y2tpbmdTdG9yZVByaXZhdGU6OnNjcm9sbChjb25zdCBQbGF0Zm9ybTo6SW50U2l6ZSYgZGVsdGEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQbGF0Zm9ybTo6SW50UmVj
dCYgc2Nyb2xsVmlld1JlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBQbGF0Zm9ybTo6SW50UmVjdCYgY2xpcFJlY3QpCiB7CisgICAgQVNTRVJUKEJsYWNrQmVycnk6
OlBsYXRmb3JtOjp3ZWJLaXRUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmlzQ3VycmVudFRocmVhZCgp
KTsKKwogICAgIC8vIElmIHdlIGFyZSBkaXJlY3QgcmVuZGVyaW5nIHRoZW4gd2UgYXJlIGZvcmNl
ZCB0byBnbyBkb3duIHRoZSBzbG93IHBhdGgKICAgICAvLyB0byBzY3JvbGxpbmcuCiAgICAgaWYg
KHNob3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93KCkpIHsKQEAgLTY4Miw3ICs2ODgsNyBAQCBQ
bGF0Zm9ybTo6SW50UmVjdCBCYWNraW5nU3RvcmVQcml2YXRlOjpiYWNraW5nU3RvcmVSZWN0Rm9y
U2Nyb2xsKGludCBkZWx0YVgsIGludAogICAgIHJldHVybiBiYWNraW5nU3RvcmVSZWN0OwogfQog
Ci12b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnNldEJhY2tpbmdTdG9yZVJlY3QoY29uc3QgUGxh
dGZvcm06OkludFJlY3QmIGJhY2tpbmdTdG9yZVJlY3QpCit2b2lkIEJhY2tpbmdTdG9yZVByaXZh
dGU6OnNldEJhY2tpbmdTdG9yZVJlY3QoY29uc3QgUGxhdGZvcm06OkludFJlY3QmIGJhY2tpbmdT
dG9yZVJlY3QsIGRvdWJsZSBzY2FsZSkKIHsKICAgICBpZiAoIW1fd2ViUGFnZS0+aXNWaXNpYmxl
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTY5Myw4ICs2OTksOSBAQCB2b2lkIEJhY2tpbmdTdG9y
ZVByaXZhdGU6OnNldEJhY2tpbmdTdG9yZVJlY3QoY29uc3QgUGxhdGZvcm06OkludFJlY3QmIGJh
Y2tpbmdTdAogICAgIH0KIAogICAgIFBsYXRmb3JtOjpJbnRSZWN0IGN1cnJlbnRCYWNraW5nU3Rv
cmVSZWN0ID0gZnJvbnRTdGF0ZSgpLT5iYWNraW5nU3RvcmVSZWN0KCk7CisgICAgZG91YmxlIGN1
cnJlbnRTY2FsZSA9IGZyb250U3RhdGUoKS0+c2NhbGUoKTsKIAotICAgIGlmIChiYWNraW5nU3Rv
cmVSZWN0ID09IGN1cnJlbnRCYWNraW5nU3RvcmVSZWN0KQorICAgIGlmIChiYWNraW5nU3RvcmVS
ZWN0ID09IGN1cnJlbnRCYWNraW5nU3RvcmVSZWN0ICYmIHNjYWxlID09IGN1cnJlbnRTY2FsZSkK
ICAgICAgICAgcmV0dXJuOwogCiAjaWYgREVCVUdfVElMRU1BVFJJWApAQCAtNzU3LDcgKzc2NCw3
IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6c2V0QmFja2luZ1N0b3JlUmVjdChjb25zdCBQ
bGF0Zm9ybTo6SW50UmVjdCYgYmFja2luZ1N0CiAjZW5kaWYKICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgLy8gTWFyayBhcyBuZWVkaW5nIHVwZGF0ZS4KLSAgICAgICAgICAg
ICAgICBpZiAoIXRpbGUtPmZyb250QnVmZmVyKCktPmlzUmVuZGVyZWQoKQorICAgICAgICAgICAg
ICAgIGlmICghdGlsZS0+ZnJvbnRCdWZmZXIoKS0+aXNSZW5kZXJlZChjdXJyZW50U3RhdGUtPnNj
YWxlKCkpCiAgICAgICAgICAgICAgICAgICAgICYmICFpc0N1cnJlbnRWaXNpYmxlSm9iKG5ld0lu
ZGV4LCB0aWxlLCBiYWNraW5nU3RvcmVSZWN0KSkKICAgICAgICAgICAgICAgICAgICAgdXBkYXRl
VGlsZShvcmlnaW4sIGZhbHNlIC8qaW1tZWRpYXRlKi8pOwogICAgICAgICAgICAgfQpAQCAtODEw
LDYgKzgxNyw3IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6c2V0QmFja2luZ1N0b3JlUmVj
dChjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgYmFja2luZ1N0CiAgICAgLy8gQ2hlY2tzIHRvIG1h
a2Ugc3VyZSB3ZSBoYXZlbid0IGxvc3QgYW55IHRpbGVzLgogICAgIEFTU0VSVChjdXJyZW50TWFw
LnNpemUoKSA9PSBuZXdUaWxlTWFwLnNpemUoKSk7CiAKKyAgICBiYWNrU3RhdGUoKS0+c2V0U2Nh
bGUoc2NhbGUpOwogICAgIGJhY2tTdGF0ZSgpLT5zZXROdW1iZXJPZlRpbGVzV2lkZShiYWNraW5n
U3RvcmVSZWN0LndpZHRoKCkgLyB0aWxlV2lkdGgoKSk7CiAgICAgYmFja1N0YXRlKCktPnNldE51
bWJlck9mVGlsZXNIaWdoKGJhY2tpbmdTdG9yZVJlY3QuaGVpZ2h0KCkgLyB0aWxlSGVpZ2h0KCkp
OwogICAgIGJhY2tTdGF0ZSgpLT5zZXRCYWNraW5nU3RvcmVPZmZzZXQoYmFja2luZ1N0b3JlUmVj
dC5sb2NhdGlvbigpKTsKQEAgLTk0MCw2ICs5NDgsOCBAQCBib29sIEJhY2tpbmdTdG9yZVByaXZh
dGU6OmlzQ3VycmVudFZpc2libGVKb2IoY29uc3QgVGlsZUluZGV4JiBpbmRleCwgQmFja2luZ1N0
bwogCiB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnNjcm9sbEJhY2tpbmdTdG9yZShpbnQgZGVs
dGFYLCBpbnQgZGVsdGFZKQogeworICAgIEFTU0VSVChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6d2Vi
S2l0VGhyZWFkTWVzc2FnZUNsaWVudCgpLT5pc0N1cnJlbnRUaHJlYWQoKSk7CisKICAgICBpZiAo
IW1fd2ViUGFnZS0+aXNWaXNpYmxlKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtOTcyLDcgKzk4
Miw3IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6c2Nyb2xsQmFja2luZ1N0b3JlKGludCBk
ZWx0YVgsIGludCBkZWx0YVkpCiAKICAgICBBU1NFUlQoIWJhY2tpbmdTdG9yZVJlY3QuaXNFbXB0
eSgpKTsKIAotICAgIHNldEJhY2tpbmdTdG9yZVJlY3QoYmFja2luZ1N0b3JlUmVjdCk7CisgICAg
c2V0QmFja2luZ1N0b3JlUmVjdChiYWNraW5nU3RvcmVSZWN0LCBtX3dlYlBhZ2UtPmQtPmN1cnJl
bnRTY2FsZSgpKTsKIH0KIAogYm9vbCBCYWNraW5nU3RvcmVQcml2YXRlOjpyZW5kZXJEaXJlY3RU
b1dpbmRvdyhjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgcmVjdCkKQEAgLTk4OCw3ICs5OTgsNyBA
QCBib29sIEJhY2tpbmdTdG9yZVByaXZhdGU6OnJlbmRlckRpcmVjdFRvV2luZG93KGNvbnN0IFBs
YXRmb3JtOjpJbnRSZWN0JiByZWN0KQogICAgIFBsYXRmb3JtOjpJbnRSZWN0IHNjcmVlblJlY3Qg
PSBtX2NsaWVudC0+bWFwRnJvbVRyYW5zZm9ybWVkQ29udGVudHNUb1RyYW5zZm9ybWVkVmlld3Bv
cnQoZGlydHlSZWN0KTsKICAgICB3aW5kb3dGcm9udEJ1ZmZlclN0YXRlKCktPmNsZWFyQmxpdHRl
ZFJlZ2lvbihzY3JlZW5SZWN0KTsKIAotICAgIHBhaW50RGVmYXVsdEJhY2tncm91bmQoZGlydHlS
ZWN0LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCB0cnVlIC8qZmx1c2gqLyk7CisgICAgcGFpbnRE
ZWZhdWx0QmFja2dyb3VuZChkaXJ0eVJlY3QsIG1fd2ViUGFnZS0+d2Via2l0VGhyZWFkVmlld3Bv
cnRBY2Nlc3NvcigpLCB0cnVlIC8qZmx1c2gqLyk7CiAKICAgICBjb25zdCBQbGF0Zm9ybTo6SW50
UG9pbnQgb3JpZ2luID0gdW5jbGlwcGVkVmlzaWJsZUNvbnRlbnRzUmVjdCgpLmxvY2F0aW9uKCk7
CiAgICAgLy8gV2UgZG9uJ3QgbmVlZCBhIGJ1ZmZlciBzaW5jZSB3ZSdyZSBkaXJlY3QgcmVuZGVy
aW5nIHRvIHdpbmRvdy4KQEAgLTEwMzksNiArMTA0OSw3IEBAIGJvb2wgQmFja2luZ1N0b3JlUHJp
dmF0ZTo6cmVuZGVyKGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiByZWN0KQogCiAgICAgQmFja2lu
Z1N0b3JlR2VvbWV0cnkqIGN1cnJlbnRTdGF0ZSA9IGZyb250U3RhdGUoKTsKICAgICBUaWxlTWFw
IGN1cnJlbnRNYXAgPSBjdXJyZW50U3RhdGUtPnRpbGVNYXAoKTsKKyAgICBkb3VibGUgY3VycmVu
dFNjYWxlID0gY3VycmVudFN0YXRlLT5zY2FsZSgpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB0aWxlUmVjdExpc3Quc2l6ZSgpOyArK2kpIHsKICAgICAgICAgVGlsZVJlY3QgdGlsZVJl
Y3QgPSB0aWxlUmVjdExpc3RbaV07CkBAIC0xMDU2LDYgKzEwNjcsOCBAQCBib29sIEJhY2tpbmdT
dG9yZVByaXZhdGU6OnJlbmRlcihjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgcmVjdCkKICAgICAg
ICAgaWYgKCF0aWxlLT5iYWNrZ3JvdW5kUGFpbnRlZCgpKQogICAgICAgICAgICAgdGlsZS0+cGFp
bnRCYWNrZ3JvdW5kKCk7CiAKKyAgICAgICAgdGlsZS0+YmFja0J1ZmZlcigpLT5zZXRTY2FsZShj
dXJyZW50U2NhbGUpOworCiAgICAgICAgIC8vIFBhaW50IGRlZmF1bHQgYmFja2dyb3VuZCBpZiBj
b250ZW50cyByZWN0IGlzIGVtcHR5LgogICAgICAgICBpZiAoIWV4cGFuZGVkQ29udGVudHNSZWN0
KCkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyBPdGhlcndpc2Ugd2Ugc2hvdWxkIGNsaXAg
dGhlIGNvbnRlbnRzIHNpemUgYW5kIHJlbmRlciB0aGUgY29udGVudC4KQEAgLTExMDAsNyArMTEx
Myw3IEBAIGJvb2wgQmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVuZGVyKGNvbnN0IFBsYXRmb3JtOjpJ
bnRSZWN0JiByZWN0KQogICAgICAgICAvLyB0aGUgcmVuZGVyZWQgcmVnaW9uIG9mIHRoZSBiYWNr
IGJ1ZmZlciBjb250YWlucyB0aGUgcmVuZGVyZWQgcmVnaW9uIG9mIHRoZSBmcm9udCBidWZmZXIu
CiAgICAgICAgIC8vIEFzc2VydCB0aGlzIGp1c3QgdG8gbWFrZSBzdXJlLgogICAgICAgICAvLyBG
b3IgcHJldmlvdXNseSB1bmNvbW1pdHRlZCB0aWxlcywgdGhlIGZyb250IGJ1ZmZlcidzIHJlbmRl
cmVkIHJlZ2lvbiBpcyBub3QgcmVsZXZhbnQuCi0gICAgICAgIEFTU0VSVCghd2FzQ29tbWl0dGVk
IHx8IHRpbGUtPmJhY2tCdWZmZXIoKS0+aXNSZW5kZXJlZCh0aWxlLT5mcm9udEJ1ZmZlcigpLT5y
ZW5kZXJlZFJlZ2lvbigpKSk7CisgICAgICAgIEFTU0VSVCghd2FzQ29tbWl0dGVkIHx8IHRpbGUt
PmJhY2tCdWZmZXIoKS0+aXNSZW5kZXJlZCh0aWxlLT5mcm9udEJ1ZmZlcigpLT5yZW5kZXJlZFJl
Z2lvbigpLCBjdXJyZW50U2NhbGUpKTsKIAogICAgICAgICAvLyBXZSB3aWxsIG5lZWQgYSBzd2Fw
IGhlcmUgYmVjYXVzZSBvZiB0aGUgc2hhcmVkIGJhY2sgYnVmZmVyLgogICAgICAgICB0aWxlLT5z
d2FwQnVmZmVycygpOwpAQCAtMTE3MSwzMSArMTE4NCwyNyBAQCB2b2lkIEJhY2tpbmdTdG9yZVBy
aXZhdGU6OmNvcHlQcmV2aW91c0NvbnRlbnRzVG9CYWNrU3VyZmFjZU9mVGlsZShjb25zdCBQbGF0
Zm9ybQogICAgIH0KIH0KIAotdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpwYWludERlZmF1bHRC
YWNrZ3JvdW5kKGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBjb250ZW50cywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJDb3JlOjpUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmbHVzaCkKK3ZvaWQgQmFja2luZ1N0b3Jl
UHJpdmF0ZTo6cGFpbnREZWZhdWx0QmFja2dyb3VuZChjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYg
ZHN0UmVjdCwgUGxhdGZvcm06OlZpZXdwb3J0QWNjZXNzb3IqIHZpZXdwb3J0QWNjZXNzb3IsIGJv
b2wgZmx1c2gpCiB7Ci0gICAgY29uc3QgUGxhdGZvcm06OkludFJlY3QgY29udGVudHNSZWN0ID0g
UGxhdGZvcm06OkludFJlY3QoUGxhdGZvcm06OkludFBvaW50KDAsIDApLCBtX3dlYlBhZ2UtPmQt
PnRyYW5zZm9ybWVkQ29udGVudHNTaXplKCkpOwotICAgIFBsYXRmb3JtOjpJbnRQb2ludCBvcmln
aW4gPSBjb250ZW50cy5sb2NhdGlvbigpOwotICAgIFBsYXRmb3JtOjpJbnRSZWN0IGNvbnRlbnRz
Q2xpcHBlZCA9IGNvbnRlbnRzOworICAgIFBsYXRmb3JtOjpJbnRSZWN0IGNsaXBwZWREc3RSZWN0
ID0gZHN0UmVjdDsKKworICAgIC8vIEJlY2F1c2Ugb2Ygcm91bmRpbmcgaXQgaXMgcG9zc2libGUg
dGhhdCBvdmVyU2Nyb2xsUmVjdCBjb3VsZCBiZSBvZmYtYnktb25lIGxhcmdlcgorICAgIC8vIHRo
YW4gdGhlIHN1cmZhY2Ugc2l6ZSBvZiB0aGUgd2luZG93LiBXZSBwcmV2ZW50IHRoaXMgaGVyZSwg
YnkgY2xhbXBpbmcKKyAgICAvLyBpdCB0byBlbnN1cmUgdGhhdCBjYW4ndCBoYXBwZW4uCisgICAg
Y2xpcHBlZERzdFJlY3QuaW50ZXJzZWN0KFBsYXRmb3JtOjpJbnRSZWN0KFBsYXRmb3JtOjpJbnRQ
b2ludCgwLCAwKSwgc3VyZmFjZVNpemUoKSkpOworCisgICAgaWYgKGNsaXBwZWREc3RSZWN0Lmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gV2UgaGF2ZSB0byBwYWludCB0aGUg
ZGVmYXVsdCBiYWNrZ3JvdW5kIGluIHRoZSBjYXNlIG9mIG92ZXJ6b29tIGFuZAogICAgIC8vIG1h
a2Ugc3VyZSBpdCBpcyBpbnZhbGlkYXRlZC4KLSAgICBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbiBv
dmVyU2Nyb2xsUmVnaW9uCi0gICAgICAgICAgICA9IFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uOjpz
dWJ0cmFjdFJlZ2lvbnMoUGxhdGZvcm06OkludFJlY3QoY29udGVudHNDbGlwcGVkKSwgY29udGVu
dHNSZWN0KTsKKyAgICBjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCBwaXhlbENvbnRlbnRzUmVjdCA9
IHZpZXdwb3J0QWNjZXNzb3ItPnBpeGVsQ29udGVudHNSZWN0KCk7CisgICAgUGxhdGZvcm06Oklu
dFJlY3RSZWdpb24gb3ZlclNjcm9sbFJlZ2lvbiA9IFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uOjpz
dWJ0cmFjdFJlZ2lvbnMoCisgICAgICAgIGRzdFJlY3QsIHZpZXdwb3J0QWNjZXNzb3ItPnBpeGVs
Vmlld3BvcnRGcm9tQ29udGVudHMocGl4ZWxDb250ZW50c1JlY3QpKTsKIAogICAgIEludFJlY3RM
aXN0IG92ZXJTY3JvbGxSZWN0cyA9IG92ZXJTY3JvbGxSZWdpb24ucmVjdHMoKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG92ZXJTY3JvbGxSZWN0cy5zaXplKCk7ICsraSkgewogICAgICAg
ICBQbGF0Zm9ybTo6SW50UmVjdCBvdmVyU2Nyb2xsUmVjdCA9IG92ZXJTY3JvbGxSZWN0cy5hdChp
KTsKLSAgICAgICAgb3ZlclNjcm9sbFJlY3QubW92ZSgtb3JpZ2luLngoKSwgLW9yaWdpbi55KCkp
OwotICAgICAgICBvdmVyU2Nyb2xsUmVjdCA9IHRyYW5zZm9ybWF0aW9uLm1hcFJlY3Qob3ZlclNj
cm9sbFJlY3QpOwotCi0gICAgICAgIGlmICghdHJhbnNmb3JtYXRpb24uaXNJZGVudGl0eSgpKSB7
Ci0gICAgICAgICAgICAvLyBCZWNhdXNlIG9mIHJvdW5kaW5nIGl0IGlzIHBvc3NpYmxlIHRoYXQg
b3ZlclNjcm9sbFJlY3QgY291bGQgYmUgb2ZmLWJ5LW9uZSBsYXJnZXIKLSAgICAgICAgICAgIC8v
IHRoYW4gdGhlIHN1cmZhY2Ugc2l6ZSBvZiB0aGUgd2luZG93LiBXZSBwcmV2ZW50IHRoaXMgaGVy
ZSwgYnkgY2xhbXBpbmcKLSAgICAgICAgICAgIC8vIGl0IHRvIGVuc3VyZSB0aGF0IGNhbid0IGhh
cHBlbi4KLSAgICAgICAgICAgIG92ZXJTY3JvbGxSZWN0LmludGVyc2VjdChQbGF0Zm9ybTo6SW50
UmVjdChQbGF0Zm9ybTo6SW50UG9pbnQoMCwgMCksIHN1cmZhY2VTaXplKCkpKTsKLSAgICAgICAg
fQogCiAgICAgICAgIGlmIChtX3dlYlBhZ2UtPnNldHRpbmdzKCktPmlzRW5hYmxlRGVmYXVsdE92
ZXJTY3JvbGxCYWNrZ3JvdW5kKCkpIHsKICAgICAgICAgICAgIGZpbGxXaW5kb3coQmxhY2tCZXJy
eTo6UGxhdGZvcm06OkdyYXBoaWNzOjpEZWZhdWx0QmFja2dyb3VuZFBhdHRlcm4sCkBAIC0xMjQ5
LDY0ICsxMjU4LDc2IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6YmxpdFZpc2libGVDb250
ZW50cyhib29sIGZvcmNlKQogCiAgICAgbV9oYXNCbGl0Sm9icyA9IGZhbHNlOwogCi0gICAgY29u
c3QgUGxhdGZvcm06OkludFJlY3QgZHN0UmVjdCA9IG1fd2ViUGFnZS0+Y2xpZW50KCktPnVzZXJJ
bnRlcmZhY2VCbGl0dGVkRGVzdGluYXRpb25SZWN0KCk7Ci0gICAgY29uc3QgUGxhdGZvcm06Oklu
dFJlY3Qgc3JjUmVjdCA9IG1fd2ViUGFnZS0+Y2xpZW50KCktPnVzZXJJbnRlcmZhY2VCbGl0dGVk
VmlzaWJsZUNvbnRlbnRzUmVjdCgpOwotICAgIGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0IGNvbnRl
bnRzUmVjdCA9IFBsYXRmb3JtOjpJbnRSZWN0KFBsYXRmb3JtOjpJbnRQb2ludCgwLCAwKSwgbV9j
bGllbnQtPnRyYW5zZm9ybWVkQ29udGVudHNTaXplKCkpOworICAgIFBsYXRmb3JtOjpWaWV3cG9y
dEFjY2Vzc29yKiB2aWV3cG9ydEFjY2Vzc29yID0gbV93ZWJQYWdlLT5jbGllbnQoKS0+dXNlcklu
dGVyZmFjZVZpZXdwb3J0QWNjZXNzb3IoKTsKKyAgICBjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCBk
c3RSZWN0ID0gdmlld3BvcnRBY2Nlc3Nvci0+ZGVzdGluYXRpb25TdXJmYWNlUmVjdCgpOworCisg
ICAgY29uc3QgUGxhdGZvcm06OkludFJlY3QgcGl4ZWxWaWV3cG9ydFJlY3QgPSB2aWV3cG9ydEFj
Y2Vzc29yLT5waXhlbFZpZXdwb3J0UmVjdCgpOworICAgIGNvbnN0IFBsYXRmb3JtOjpGbG9hdFJl
Y3QgZG9jdW1lbnRWaWV3cG9ydFJlY3QgPSB2aWV3cG9ydEFjY2Vzc29yLT5kb2N1bWVudEZyb21Q
aXhlbENvbnRlbnRzKHBpeGVsVmlld3BvcnRSZWN0KTsKKyAgICBQbGF0Zm9ybTo6SW50UmVjdCBw
aXhlbFNyY1JlY3QgPSBwaXhlbFZpZXdwb3J0UmVjdDsKKyAgICBQbGF0Zm9ybTo6RmxvYXRSZWN0
IGRvY3VtZW50U3JjUmVjdCA9IGRvY3VtZW50Vmlld3BvcnRSZWN0OwogCiAjaWYgREVCVUdfVklT
VUFMSVpFCi0gICAgLy8gU3Vic3RpdHV0ZSBhIGRlYnVnUmVjdCB0aGF0IGNvbnNpc3RzIG9mIHRo
ZSB1bmlvbiBvZiB0aGUgYmFja2luZ3N0b3JlIHJlY3QKLSAgICAvLyBhbmQgdGhlIHVpIHRocmVh
ZCB2aWV3cG9ydCByZWN0IGluc3RlYWQgb2YgdGhlIG5vcm1hbCBzb3VyY2UgcmVjdCBzbyB3ZQot
ICAgIC8vIGNhbiB2aXN1YWxpemUgdGhlIGVudGlyZSBiYWNraW5nc3RvcmUgYW5kIHdoYXQgaXQg
aXMgZG9pbmcgd2hlbiB3ZQotICAgIC8vIHNjcm9sbCBhbmQgem9vbSEKLSAgICBQbGF0Zm9ybTo6
SW50UmVjdCBkZWJ1Z1JlY3QgPSB1bmlvbk9mUmVjdHMoc3JjUmVjdCwgZnJvbnRTdGF0ZSgpLT5i
YWNraW5nU3RvcmVSZWN0KCkpOwotICAgIGlmIChkZWJ1Z1JlY3Qud2lkdGgoKSA8IGRlYnVnUmVj
dC5oZWlnaHQoKSkKLSAgICAgICAgZGVidWdSZWN0LnNldFdpZHRoKGNlaWwoZG91YmxlKHNyY1Jl
Y3Qud2lkdGgoKSkgKiAoZG91YmxlKGRlYnVnUmVjdC5oZWlnaHQoKSkgLyBzcmNSZWN0LmhlaWdo
dCgpKSkpOwotICAgIGlmIChkZWJ1Z1JlY3QuaGVpZ2h0KCkgPCBkZWJ1Z1JlY3Qud2lkdGgoKSkK
LSAgICAgICAgZGVidWdSZWN0LnNldEhlaWdodChjZWlsKGRvdWJsZShzcmNSZWN0LmhlaWdodCgp
KSAqIChkb3VibGUoZGVidWdSZWN0LndpZHRoKCkpIC8gc3JjUmVjdC53aWR0aCgpKSkpOwotICAg
IFBsYXRmb3JtOjpJbnRSZWN0IGNvbnRlbnRzID0gZGVidWdSZWN0OwotI2Vsc2UKLSAgICBQbGF0
Zm9ybTo6SW50UmVjdCBjb250ZW50cyA9IHNyY1JlY3Q7CisgICAgLy8gU3Vic3RpdHV0ZSBhIHNy
Y1JlY3QgdGhhdCBjb25zaXN0cyBvZiB0aGUgd2hvbGUgYmFja2luZ3N0b3JlIGdlb21ldHJ5Cisg
ICAgLy8gaW5zdGVhZCBvZiB0aGUgbm9ybWFsIHZpZXdwb3J0IHNvIHdlIGNhbiB2aXN1YWxpemUg
dGhlIGVudGlyZQorICAgIC8vIGJhY2tpbmdzdG9yZSBhbmQgd2hhdCBpdCBpcyBkb2luZyB3aGVu
IHdlIHNjcm9sbCBhbmQgem9vbSEKKyAgICBQbGF0Zm9ybTo6Vmlld3BvcnRBY2Nlc3NvciogZGVi
dWdWaWV3cG9ydEFjY2Vzc29yID0gbmV3IEJhY2tpbmdTdG9yZVZpc3VhbGl6YXRpb25WaWV3cG9y
dEFjY2Vzc29yKHZpZXdwb3J0QWNjZXNzb3IsIHRoaXMpOworICAgIGlmIChpc0FjdGl2ZSgpKSB7
CisgICAgICAgIHZpZXdwb3J0QWNjZXNzb3IgPSBkZWJ1Z1ZpZXdwb3J0QWNjZXNzb3I7CisgICAg
ICAgIGRvY3VtZW50U3JjUmVjdCA9IGRlYnVnVmlld3BvcnRBY2Nlc3Nvci0+ZG9jdW1lbnRWaWV3
cG9ydFJlY3QoKTsKKyAgICAgICAgcGl4ZWxTcmNSZWN0ID0gZGVidWdWaWV3cG9ydEFjY2Vzc29y
LT5waXhlbFZpZXdwb3J0UmVjdCgpOworICAgIH0KICNlbmRpZgogCi0gICAgLy8gRklYTUU6IFRo
aXMgc2hvdWxkIG5vdCBleHBsaWNpdGVseSBkZXBlbmQgb24gV2ViQ29yZTo6LgotICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybWF0aW9uOwotICAgIGlmICghY29udGVudHMuaXNFbXB0
eSgpKQotICAgICAgICB0cmFuc2Zvcm1hdGlvbiA9IFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0
VG9SZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KDAuMCwgMC4wKSwgV2ViQ29yZTo6SW50U2l6ZShj
b250ZW50cy5zaXplKCkpKSwgV2ViQ29yZTo6SW50UmVjdChkc3RSZWN0KSk7Ci0KICNpZiBERUJV
R19CQUNLSU5HU1RPUkUKLSAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6bG9nKEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLAotICAgICAgICAiQmFja2luZ1N0b3JlUHJpdmF0
ZTo6YmxpdFZpc2libGVDb250ZW50cyBkc3RSZWN0PSglZCwlZCAlZHglZCkgc3JjUmVjdD0oJWQs
JWQgJWR4JWQpIiwKKyAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6bG9nQWx3YXlzKEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLAorICAgICAgICAiQmFja2luZ1N0b3JlUHJp
dmF0ZTo6YmxpdFZpc2libGVDb250ZW50cygpOiBkc3RSZWN0PSglZCwlZCkgJWR4JWQsIGRvY3Vt
ZW50U3JjUmVjdD0oJWYsICVmKSAlZiB4ICVmLCBzY2FsZT0lZiIsCiAgICAgICAgIGRzdFJlY3Qu
eCgpLCBkc3RSZWN0LnkoKSwgZHN0UmVjdC53aWR0aCgpLCBkc3RSZWN0LmhlaWdodCgpLAotICAg
ICAgICBzcmNSZWN0LngoKSwgc3JjUmVjdC55KCksIHNyY1JlY3Qud2lkdGgoKSwgc3JjUmVjdC5o
ZWlnaHQoKSk7CisgICAgICAgIGRvY3VtZW50U3JjUmVjdC54KCksIGRvY3VtZW50U3JjUmVjdC55
KCksIGRvY3VtZW50U3JjUmVjdC53aWR0aCgpLCBkb2N1bWVudFNyY1JlY3QuaGVpZ2h0KCksCisg
ICAgICAgIHZpZXdwb3J0QWNjZXNzb3ItPnNjYWxlKCkpOwogI2VuZGlmCiAKLSAgICBQbGF0Zm9y
bTo6SW50UG9pbnQgb3JpZ2luID0gY29udGVudHMubG9jYXRpb24oKTsKLSAgICBQbGF0Zm9ybTo6
SW50UmVjdCBjb250ZW50c0NsaXBwZWQgPSBjb250ZW50czsKLQogICAgIFZlY3RvcjxUaWxlQnVm
ZmVyKj4gYmxpdHRlZFRpbGVzOwogCiAgICAgaWYgKGlzQWN0aXZlKCkgJiYgIW1fd2ViUGFnZS0+
ZC0+Y29tcG9zaXRvckRyYXdzUm9vdExheWVyKCkpIHsKLSAgICAgICAgcGFpbnREZWZhdWx0QmFj
a2dyb3VuZChjb250ZW50cywgdHJhbnNmb3JtYXRpb24sIGZhbHNlIC8qZmx1c2gqLyk7CisgICAg
ICAgIHBhaW50RGVmYXVsdEJhY2tncm91bmQoZHN0UmVjdCwgdmlld3BvcnRBY2Nlc3NvciwgZmFs
c2UgLypmbHVzaCovKTsKIAogICAgICAgICBCYWNraW5nU3RvcmVHZW9tZXRyeSogY3VycmVudFN0
YXRlID0gZnJvbnRTdGF0ZSgpOwogICAgICAgICBUaWxlTWFwIGN1cnJlbnRNYXAgPSBjdXJyZW50
U3RhdGUtPnRpbGVNYXAoKTsKKyAgICAgICAgZG91YmxlIGN1cnJlbnRTY2FsZSA9IGN1cnJlbnRT
dGF0ZS0+c2NhbGUoKTsKKworICAgICAgICBjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCB0cmFuc2Zv
cm1lZENvbnRlbnRzUmVjdCA9IFBsYXRmb3JtOjpJbnRSZWN0KFBsYXRmb3JtOjpJbnRQb2ludCgw
LCAwKSwgbV9jbGllbnQtPnRyYW5zZm9ybWVkQ29udGVudHNTaXplKCkpOworCisgICAgICAgIC8v
IEZvciBibGl0dGluZyBiYWNraW5nc3RvcmUgdGlsZXMsIHdlIG5lZWQgdGhlIHNyY1JlY3QgdG8g
YmUgc3BlY2lmaWVkCisgICAgICAgIC8vIGluIGJhY2tpbmdzdG9yZSB0aWxlIHBpeGVsIGNvb3Jk
aW5hdGVzLiBJZiBvdXIgdmlld3BvcnQgYWNjZXNzb3IgaXMKKyAgICAgICAgLy8gIGF0IGEgZGlm
ZmVyZW50IHNjYWxlLCB3ZSBjYWxjdWxhdGUgdGhvc2UgY29vcmRpbmF0ZXMgYnkgb3Vyc2VsdmVz
LgorICAgICAgICBjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCB0cmFuc2Zvcm1lZFNyY1JlY3QgPSBj
dXJyZW50U2NhbGUgPT0gdmlld3BvcnRBY2Nlc3Nvci0+c2NhbGUoKQorICAgICAgICAgICAgPyBw
aXhlbFNyY1JlY3QKKyAgICAgICAgICAgIDogZW5jbG9zaW5nSW50UmVjdCh2aWV3cG9ydEFjY2Vz
c29yLT5mcm9tRG9jdW1lbnRDb250ZW50cyhkb2N1bWVudFNyY1JlY3QsIGN1cnJlbnRTY2FsZSkp
OworCisgICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0IGNsaXBwZWRUcmFuc2Zvcm1lZFNyY1JlY3Qg
PSB0cmFuc2Zvcm1lZFNyY1JlY3Q7CisgICAgICAgIGNvbnN0IFBsYXRmb3JtOjpJbnRQb2ludCBv
cmlnaW4gPSB0cmFuc2Zvcm1lZFNyY1JlY3QubG9jYXRpb24oKTsKKworICAgICAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgbm90IGV4cGxpY2l0bHkgZGVwZW5kIG9uIFdlYkNvcmU6Oi4KKyAgICAg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtYXRpb247CisgICAgICAgIGlmICghdHJh
bnNmb3JtZWRTcmNSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHRyYW5zZm9ybWF0aW9uID0g
VHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlY3RUb1JlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoMC4w
LCAwLjApLCBXZWJDb3JlOjpJbnRTaXplKHRyYW5zZm9ybWVkU3JjUmVjdC5zaXplKCkpKSwgV2Vi
Q29yZTo6SW50UmVjdChkc3RSZWN0KSk7CiAKICNpZiBERUJVR19DSEVDS0VSQk9BUkQKICAgICAg
ICAgYm9vbCBibGl0Q2hlY2tlcmVkID0gZmFsc2U7CiAjZW5kaWYKIAogICAgICAgICAvLyBEb24n
dCBjbGlwIHRvIGNvbnRlbnRzIGlmIGl0IGlzIGVtcHR5IHNvIHdlIGNhbiBzdGlsbCBwYWludCBk
ZWZhdWx0IGJhY2tncm91bmQuCi0gICAgICAgIGlmICghY29udGVudHNSZWN0LmlzRW1wdHkoKSkg
ewotICAgICAgICAgICAgY29udGVudHNDbGlwcGVkLmludGVyc2VjdChjb250ZW50c1JlY3QpOwot
ICAgICAgICAgICAgaWYgKGNvbnRlbnRzQ2xpcHBlZC5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYg
KCF0cmFuc2Zvcm1lZENvbnRlbnRzUmVjdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGNsaXBw
ZWRUcmFuc2Zvcm1lZFNyY1JlY3QuaW50ZXJzZWN0KHRyYW5zZm9ybWVkQ29udGVudHNSZWN0KTsK
KyAgICAgICAgICAgIGlmIChjbGlwcGVkVHJhbnNmb3JtZWRTcmNSZWN0LmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgICAgIGludmFsaWRhdGVXaW5kb3coZHN0UmVjdCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBQbGF0Zm9ybTo6SW50UmVj
dFJlZ2lvbiBjb250ZW50c1JlZ2lvbiA9IGNvbnRlbnRzQ2xpcHBlZDsKKyAgICAgICAgICAgIFBs
YXRmb3JtOjpJbnRSZWN0UmVnaW9uIHRyYW5zZm9ybWVkU3JjUmVnaW9uID0gY2xpcHBlZFRyYW5z
Zm9ybWVkU3JjUmVjdDsKICAgICAgICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uIGJhY2tp
bmdTdG9yZVJlZ2lvbiA9IGN1cnJlbnRTdGF0ZS0+YmFja2luZ1N0b3JlUmVjdCgpOwogICAgICAg
ICAgICAgUGxhdGZvcm06OkludFJlY3RSZWdpb24gY2hlY2tlcmVkUmVnaW9uCi0gICAgICAgICAg
ICAgICAgPSBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbjo6c3VidHJhY3RSZWdpb25zKGNvbnRlbnRz
UmVnaW9uLCBiYWNraW5nU3RvcmVSZWdpb24pOworICAgICAgICAgICAgICAgID0gUGxhdGZvcm06
OkludFJlY3RSZWdpb246OnN1YnRyYWN0UmVnaW9ucyh0cmFuc2Zvcm1lZFNyY1JlZ2lvbiwgYmFj
a2luZ1N0b3JlUmVnaW9uKTsKIAogICAgICAgICAgICAgLy8gQmxpdCBjaGVja2VyZWQgdG8gdGhv
c2UgcGFydHMgdGhhdCBhcmUgbm90IGNvdmVyZWQgYnkgdGhlIGJhY2tpbmdTdG9yZVJlY3QuCiAg
ICAgICAgICAgICBJbnRSZWN0TGlzdCBjaGVja2VyZWRSZWN0cyA9IGNoZWNrZXJlZFJlZ2lvbi5y
ZWN0cygpOwpAQCAtMTMyNiw3ICsxMzQ3LDcgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpi
bGl0VmlzaWJsZUNvbnRlbnRzKGJvb2wgZm9yY2UpCiAgICAgICAgIH0KIAogICAgICAgICAvLyBH
ZXQgdGhlIGxpc3Qgb2YgdGlsZSByZWN0cyB0aGF0IG1ha2V1cCB0aGUgY29udGVudC4KLSAgICAg
ICAgVGlsZVJlY3RMaXN0IHRpbGVSZWN0TGlzdCA9IG1hcEZyb21UcmFuc2Zvcm1lZENvbnRlbnRz
VG9UaWxlcyhjb250ZW50c0NsaXBwZWQsIGN1cnJlbnRTdGF0ZSk7CisgICAgICAgIFRpbGVSZWN0
TGlzdCB0aWxlUmVjdExpc3QgPSBtYXBGcm9tVHJhbnNmb3JtZWRDb250ZW50c1RvVGlsZXMoY2xp
cHBlZFRyYW5zZm9ybWVkU3JjUmVjdCwgY3VycmVudFN0YXRlKTsKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCB0aWxlUmVjdExpc3Quc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIFRp
bGVSZWN0IHRpbGVSZWN0ID0gdGlsZVJlY3RMaXN0W2ldOwogICAgICAgICAgICAgVGlsZUluZGV4
IGluZGV4ID0gdGlsZVJlY3QuZmlyc3Q7CkBAIC0xMzQwLDkgKzEzNjEsOSBAQCB2b2lkIEJhY2tp
bmdTdG9yZVByaXZhdGU6OmJsaXRWaXNpYmxlQ29udGVudHMoYm9vbCBmb3JjZSkKICAgICAgICAg
ICAgICAgICA9IG1hcEZyb21UaWxlc1RvVHJhbnNmb3JtZWRDb250ZW50cyh0aWxlUmVjdCwgY3Vy
cmVudFN0YXRlLT5iYWNraW5nU3RvcmVSZWN0KCkpOwogCiAgICAgICAgICAgICAvLyBEb24ndCBj
bGlwIHRvIGNvbnRlbnRzIGlmIGl0IGlzIGVtcHR5IHNvIHdlIGNhbiBzdGlsbCBwYWludCBkZWZh
dWx0IGJhY2tncm91bmQuCi0gICAgICAgICAgICBpZiAoIWNvbnRlbnRzUmVjdC5pc0VtcHR5KCkp
IHsKKyAgICAgICAgICAgIGlmICghdHJhbnNmb3JtZWRDb250ZW50c1JlY3QuaXNFbXB0eSgpKSB7
CiAgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHdlIHNob3VsZCBjbGlwIHRoZSBjb250ZW50
cyBzaXplIGFuZCBibGl0LgotICAgICAgICAgICAgICAgIGRpcnR5UmVjdC5pbnRlcnNlY3QoY29u
dGVudHNSZWN0KTsKKyAgICAgICAgICAgICAgICBkaXJ0eVJlY3QuaW50ZXJzZWN0KHRyYW5zZm9y
bWVkQ29udGVudHNSZWN0KTsKIAogICAgICAgICAgICAgICAgIC8vIFdlIHByb2JhYmx5IGhhdmUg
ZXh0cmEgdGlsZXMgc2luY2UgdGhlIGNvbnRlbnRzIHNpemUgaXMgc28gc21hbGwuCiAgICAgICAg
ICAgICAgICAgLy8gU2F2ZSBzb21lIGN5Y2xlcyBoZXJlLi4uCkBAIC0xMzY0LDcgKzEzODUsNyBA
QCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRWaXNpYmxlQ29udGVudHMoYm9vbCBmb3Jj
ZSkKICAgICAgICAgICAgIHdob2xlVGlsZVJlY3Quc2Vjb25kID0gdGhpcy0+dGlsZVJlY3QoKTsK
IAogICAgICAgICAgICAgYm9vbCBjb21taXR0ZWQgPSB0aWxlLT5pc0NvbW1pdHRlZCgpOwotICAg
ICAgICAgICAgYm9vbCByZW5kZXJlZCA9IHRpbGVCdWZmZXItPmlzUmVuZGVyZWQoZGlydHlUaWxl
UmVjdCk7CisgICAgICAgICAgICBib29sIHJlbmRlcmVkID0gdGlsZUJ1ZmZlci0+aXNSZW5kZXJl
ZChkaXJ0eVRpbGVSZWN0LCBjdXJyZW50U2NhbGUpOwogICAgICAgICAgICAgYm9vbCBwYWludENo
ZWNrZXJlZCA9ICFjb21taXR0ZWQgfHwgIXJlbmRlcmVkOwogCiAgICAgICAgICAgICBpZiAocGFp
bnRDaGVja2VyZWQpIHsKQEAgLTE0NTAsNDcgKzE0NzEsNDEgQEAgdm9pZCBCYWNraW5nU3RvcmVQ
cml2YXRlOjpibGl0VmlzaWJsZUNvbnRlbnRzKGJvb2wgZm9yY2UpCiAKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZSogY29t
cG9zaXRvciA9IG1fd2ViUGFnZS0+ZC0+Y29tcG9zaXRvcigpKSB7Ci0gICAgICAgIFdlYkNvcmU6
OkZsb2F0UmVjdCBjb250ZW50c1JlY3QgPSBtX3dlYlBhZ2UtPmQtPm1hcEZyb21UcmFuc2Zvcm1l
ZEZsb2F0UmVjdChXZWJDb3JlOjpGbG9hdFJlY3QoV2ViQ29yZTo6SW50UmVjdChjb250ZW50cykp
KTsKLSAgICAgICAgY29tcG9zaXRvci0+ZHJhd0xheWVycyhkc3RSZWN0LCBjb250ZW50c1JlY3Qp
OworICAgICAgICBjb21wb3NpdG9yLT5kcmF3TGF5ZXJzKGRzdFJlY3QsIGRvY3VtZW50U3JjUmVj
dCk7CiAgICAgICAgIGlmIChjb21wb3NpdG9yLT5kcmF3c1Jvb3RMYXllcigpKQotICAgICAgICAg
ICAgcGFpbnREZWZhdWx0QmFja2dyb3VuZChjb250ZW50cywgdHJhbnNmb3JtYXRpb24sIGZhbHNl
IC8qZmx1c2gqLyk7CisgICAgICAgICAgICBwYWludERlZmF1bHRCYWNrZ3JvdW5kKGRzdFJlY3Qs
IHZpZXdwb3J0QWNjZXNzb3IsIGZhbHNlIC8qZmx1c2gqLyk7CiAgICAgfQogI2VuZGlmCiAKICNp
ZiBFTkFCTEVfU0NST0xMQkFSUwogICAgIGlmIChpc1Njcm9sbGluZ09yWm9vbWluZygpICYmIG1f
Y2xpZW50LT5pc01haW5GcmFtZSgpKSB7Ci0gICAgICAgIGJsaXRIb3Jpem9udGFsU2Nyb2xsYmFy
KG9yaWdpbik7Ci0gICAgICAgIGJsaXRWZXJ0aWNhbFNjcm9sbGJhcihvcmlnaW4pOworICAgICAg
ICBibGl0SG9yaXpvbnRhbFNjcm9sbGJhcigpOworICAgICAgICBibGl0VmVydGljYWxTY3JvbGxi
YXIoKTsKICAgICB9CiAjZW5kaWYKIAogI2lmIERFQlVHX1ZJU1VBTElaRQotICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBub3QgZXhwbGljaXRlbHkgZGVwZW5kIG9uIFdlYkNvcmU6Oi4KLSAgICBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogd2luZG93QnVmZmVyID0gYnVm
ZmVyKCk7Ci0gICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpEcmF3YWJsZSogYnVm
ZmVyRHJhd2FibGUgPQotICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6Omxv
Y2tCdWZmZXJEcmF3YWJsZSh3aW5kb3dCdWZmZXIpOwotICAgIFBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0KiBidWZmZXJQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCA9Ci0gICAgICAgIFN1cmZhY2VQb29s
OjpnbG9iYWxTdXJmYWNlUG9vbCgpLT5jcmVhdGVQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dChidWZm
ZXJEcmF3YWJsZSk7Ci0gICAgR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dChidWZmZXJQ
bGF0Zm9ybUdyYXBoaWNzQ29udGV4dCk7Ci0gICAgRmxvYXRSZWN0IHdrVmlld3BvcnQgPSBGbG9h
dFJlY3QodmlzaWJsZUNvbnRlbnRzUmVjdCgpKTsKLSAgICBGbG9hdFJlY3QgdWlWaWV3cG9ydCA9
IEZsb2F0UmVjdChzcmNSZWN0KTsKLSAgICB3a1ZpZXdwb3J0Lm1vdmUoLWNvbnRlbnRzLngoKSwg
LWNvbnRlbnRzLnkoKSk7Ci0gICAgdWlWaWV3cG9ydC5tb3ZlKC1jb250ZW50cy54KCksIC1jb250
ZW50cy55KCkpOwotCi0gICAgZ3JhcGhpY3NDb250ZXh0LnNhdmUoKTsKLQotICAgIC8vIERyYXcg
YSBibHVlIHJlY3QgZm9yIHRoZSB3ZWJraXQgdGhyZWFkIHZpZXdwb3J0LgotICAgIGdyYXBoaWNz
Q29udGV4dC5zZXRTdHJva2VDb2xvcihXZWJDb3JlOjpDb2xvcigwLCAwLCAyNTUpLCBXZWJDb3Jl
OjpDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBncmFwaGljc0NvbnRleHQuc3Ryb2tlUmVjdCh0
cmFuc2Zvcm1hdGlvbi5tYXBSZWN0KHdrVmlld3BvcnQpLCAxLjApOwotCi0gICAgLy8gRHJhdyBh
IHJlZCByZWN0IGZvciB0aGUgdWkgdGhyZWFkIHZpZXdwb3J0LgotICAgIGdyYXBoaWNzQ29udGV4
dC5zZXRTdHJva2VDb2xvcihXZWJDb3JlOjpDb2xvcigyNTUsIDAsIDApLCBXZWJDb3JlOjpDb2xv
clNwYWNlRGV2aWNlUkdCKTsKLSAgICBncmFwaGljc0NvbnRleHQuc3Ryb2tlUmVjdCh0cmFuc2Zv
cm1hdGlvbi5tYXBSZWN0KHVpVmlld3BvcnQpLCAxLjApOwotCi0gICAgZ3JhcGhpY3NDb250ZXh0
LnJlc3RvcmUoKTsKLQotICAgIGRlbGV0ZSBidWZmZXJQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDsK
LSAgICByZWxlYXNlQnVmZmVyRHJhd2FibGUod2luZG93QnVmZmVyKTsKKyAgICBpZiAoZGVidWdW
aWV3cG9ydEFjY2Vzc29yKSB7CisgICAgICAgIFBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiB0
YXJnZXRCdWZmZXIgPSBidWZmZXIoKTsKKyAgICAgICAgUGxhdGZvcm06OkludFJlY3Qgd2tWaWV3
cG9ydCA9IGRlYnVnVmlld3BvcnRBY2Nlc3Nvci0+cm91bmRUb1BpeGVsRnJvbURvY3VtZW50Q29u
dGVudHMoUGxhdGZvcm06OkludFJlY3QobV9jbGllbnQtPnZpc2libGVDb250ZW50c1JlY3QoKSkp
OworICAgICAgICBQbGF0Zm9ybTo6SW50UmVjdCB1aVZpZXdwb3J0ID0gZW5jbG9zaW5nSW50UmVj
dChkZWJ1Z1ZpZXdwb3J0QWNjZXNzb3ItPnBpeGVsRnJvbURvY3VtZW50Q29udGVudHMoZG9jdW1l
bnRWaWV3cG9ydFJlY3QpKTsKKyAgICAgICAgd2tWaWV3cG9ydC5tb3ZlKC1waXhlbFNyY1JlY3Qu
eCgpLCAtcGl4ZWxTcmNSZWN0LnkoKSk7CisgICAgICAgIHVpVmlld3BvcnQubW92ZSgtcGl4ZWxT
cmNSZWN0LngoKSwgLXBpeGVsU3JjUmVjdC55KCkpOworCisgICAgICAgIC8vIERyYXcgYSBibHVl
IHJlY3QgZm9yIHRoZSB3ZWJraXQgdGhyZWFkIHZpZXdwb3J0LgorICAgICAgICBQbGF0Zm9ybTo6
R3JhcGhpY3M6OmNsZWFyQnVmZmVyKHRhcmdldEJ1ZmZlciwgUGxhdGZvcm06OkludFJlY3Qod2tW
aWV3cG9ydC54KCksIHdrVmlld3BvcnQueSgpLCB3a1ZpZXdwb3J0LndpZHRoKCksIDEpLCAwLCAw
LCAyNTUsIDI1NSk7CisgICAgICAgIFBsYXRmb3JtOjpHcmFwaGljczo6Y2xlYXJCdWZmZXIodGFy
Z2V0QnVmZmVyLCBQbGF0Zm9ybTo6SW50UmVjdCh3a1ZpZXdwb3J0LngoKSwgd2tWaWV3cG9ydC55
KCksIDEsIHdrVmlld3BvcnQuaGVpZ2h0KCkpLCAwLCAwLCAyNTUsIDI1NSk7CisgICAgICAgIFBs
YXRmb3JtOjpHcmFwaGljczo6Y2xlYXJCdWZmZXIodGFyZ2V0QnVmZmVyLCBQbGF0Zm9ybTo6SW50
UmVjdCh3a1ZpZXdwb3J0LngoKSwgd2tWaWV3cG9ydC5ib3R0b20oKSAtIDEsIHdrVmlld3BvcnQu
d2lkdGgoKSwgMSksIDAsIDAsIDI1NSwgMjU1KTsKKyAgICAgICAgUGxhdGZvcm06OkdyYXBoaWNz
OjpjbGVhckJ1ZmZlcih0YXJnZXRCdWZmZXIsIFBsYXRmb3JtOjpJbnRSZWN0KHdrVmlld3BvcnQu
cmlnaHQoKSAtIDEsIHdrVmlld3BvcnQueSgpLCAxLCB3a1ZpZXdwb3J0LmhlaWdodCgpKSwgMCwg
MCwgMjU1LCAyNTUpOworCisgICAgICAgIC8vIERyYXcgYSByZWQgcmVjdCBmb3IgdGhlIHVpIHRo
cmVhZCB2aWV3cG9ydC4KKyAgICAgICAgUGxhdGZvcm06OkdyYXBoaWNzOjpjbGVhckJ1ZmZlcih0
YXJnZXRCdWZmZXIsIFBsYXRmb3JtOjpJbnRSZWN0KHVpVmlld3BvcnQueCgpLCB1aVZpZXdwb3J0
LnkoKSwgdWlWaWV3cG9ydC53aWR0aCgpLCAxKSwgMjU1LCAwLCAwLCAyNTUpOworICAgICAgICBQ
bGF0Zm9ybTo6R3JhcGhpY3M6OmNsZWFyQnVmZmVyKHRhcmdldEJ1ZmZlciwgUGxhdGZvcm06Oklu
dFJlY3QodWlWaWV3cG9ydC54KCksIHVpVmlld3BvcnQueSgpLCAxLCB1aVZpZXdwb3J0LmhlaWdo
dCgpKSwgMjU1LCAwLCAwLCAyNTUpOworICAgICAgICBQbGF0Zm9ybTo6R3JhcGhpY3M6OmNsZWFy
QnVmZmVyKHRhcmdldEJ1ZmZlciwgUGxhdGZvcm06OkludFJlY3QodWlWaWV3cG9ydC54KCksIHVp
Vmlld3BvcnQuYm90dG9tKCkgLSAxLCB1aVZpZXdwb3J0LndpZHRoKCksIDEpLCAyNTUsIDAsIDAs
IDI1NSk7CisgICAgICAgIFBsYXRmb3JtOjpHcmFwaGljczo6Y2xlYXJCdWZmZXIodGFyZ2V0QnVm
ZmVyLCBQbGF0Zm9ybTo6SW50UmVjdCh1aVZpZXdwb3J0LnJpZ2h0KCkgLSAxLCB1aVZpZXdwb3J0
LnkoKSwgMSwgdWlWaWV3cG9ydC5oZWlnaHQoKSksIDI1NSwgMCwgMCwgMjU1KTsKKworICAgICAg
ICBkZWxldGUgZGVidWdWaWV3cG9ydEFjY2Vzc29yOworICAgIH0KICNlbmRpZgogCiAjaWYgREVC
VUdfQ0hFQ0tFUkJPQVJECkBAIC0xNjIyLDcgKzE2MzcsNyBAQCBQbGF0Zm9ybTo6SW50UmVjdCBC
YWNraW5nU3RvcmVQcml2YXRlOjpibGl0VGlsZVJlY3QoVGlsZUJ1ZmZlciogdGlsZUJ1ZmZlciwK
ICAgICByZXR1cm4gZGlydHlSZWN0OwogfQogCi12b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJs
aXRIb3Jpem9udGFsU2Nyb2xsYmFyKGNvbnN0IFBsYXRmb3JtOjpJbnRQb2ludCYgc2Nyb2xsUG9z
aXRpb24pCit2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRIb3Jpem9udGFsU2Nyb2xsYmFy
KCkKIHsKICAgICBpZiAoIW1fd2ViUGFnZS0+aXNWaXNpYmxlKCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTE2MzAsNyArMTY0NSw3IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6YmxpdEhvcml6
b250YWxTY3JvbGxiYXIoY29uc3QgUGxhdGZvcm06OkludFBvaW50JiBzY3JvCiAgICAgbV93ZWJQ
YWdlLT5jbGllbnQoKS0+ZHJhd0hvcml6b250YWxTY3JvbGxiYXIoKTsKIH0KIAotdm9pZCBCYWNr
aW5nU3RvcmVQcml2YXRlOjpibGl0VmVydGljYWxTY3JvbGxiYXIoY29uc3QgUGxhdGZvcm06Oklu
dFBvaW50JiBzY3JvbGxQb3NpdGlvbikKK3ZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6YmxpdFZl
cnRpY2FsU2Nyb2xsYmFyKCkKIHsKICAgICBpZiAoIW1fd2ViUGFnZS0+aXNWaXNpYmxlKCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTE3OTEsNyArMTgwNiw3IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJp
dmF0ZTo6dXBkYXRlVGlsZXNGb3JTY3JvbGxPck5vdFJlbmRlcmVkUmVnaW9uKGJvb2wgY2hlY2tM
b2FkCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB1cGRhdGVUaWxlKGluZGV4LCBmYWxzZSAv
KmltbWVkaWF0ZSovKTsKICAgICAgICAgfSBlbHNlIGlmIChpc1Zpc2libGUKLSAgICAgICAgICAg
ICYmIChmb3JjZVZpc2libGUgfHwgIXRpbGUtPmZyb250QnVmZmVyKCktPmlzUmVuZGVyZWQodGls
ZVZpc2libGVDb250ZW50c1JlY3QoaW5kZXgpKSkKKyAgICAgICAgICAgICYmIChmb3JjZVZpc2li
bGUgfHwgIXRpbGUtPmZyb250QnVmZmVyKCktPmlzUmVuZGVyZWQodGlsZVZpc2libGVDb250ZW50
c1JlY3QoaW5kZXgpLCBjdXJyZW50U3RhdGUtPnNjYWxlKCkpKQogICAgICAgICAgICAgJiYgIWlz
Q3VycmVudFZpc2libGVKb2IoaW5kZXgsIHRpbGUsIGJhY2tpbmdTdG9yZVJlY3QpKQogICAgICAg
ICAgICAgdXBkYXRlVGlsZShpbmRleCwgZmFsc2UgLyppbW1lZGlhdGUqLyk7CiAgICAgfQpAQCAt
MTkyOSw2ICsxOTQ0LDggQEAgQmFja2luZ1N0b3JlUHJpdmF0ZTo6VGlsZVJlY3RMaXN0IEJhY2tp
bmdTdG9yZVByaXZhdGU6Om1hcEZyb21UcmFuc2Zvcm1lZENvbnRlbnQKIAogdm9pZCBCYWNraW5n
U3RvcmVQcml2YXRlOjp1cGRhdGVUaWxlTWF0cml4SWZOZWVkZWQoKQogeworICAgIEFTU0VSVChC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6d2ViS2l0VGhyZWFkTWVzc2FnZUNsaWVudCgpLT5pc0N1cnJl
bnRUaHJlYWQoKSk7CisKICAgICAvLyBUaGlzIHdpbGwgdXBkYXRlIHRoZSB0aWxlIG1hdHJpeC4K
ICAgICBzY3JvbGxCYWNraW5nU3RvcmUoMCwgMCk7CiB9CkBAIC0yMDAyLDYgKzIwMTksNyBAQCB2
b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnRyYW5zZm9ybUNoYW5nZWQoKQogCiB2b2lkIEJhY2tp
bmdTdG9yZVByaXZhdGU6Om9yaWVudGF0aW9uQ2hhbmdlZCgpCiB7CisgICAgQVNTRVJUKEJsYWNr
QmVycnk6OlBsYXRmb3JtOjp3ZWJLaXRUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmlzQ3VycmVudFRo
cmVhZCgpKTsKICAgICB1cGRhdGVUaWxlTWF0cml4SWZOZWVkZWQoKTsKICAgICBjcmVhdGVWaXNp
YmxlVGlsZUJ1ZmZlcigpOwogfQpAQCAtMjA1NSw2ICsyMDczLDcgQEAgdm9pZCBCYWNraW5nU3Rv
cmVQcml2YXRlOjpjcmVhdGVTdXJmYWNlcygpCiAgICAgfQogCiAgICAgLy8gU2V0IHRoZSBpbml0
aWFsIHN0YXRlIG9mIHRoZSBiYWNraW5nc3RvcmUgZ2VvbWV0cnkuCisgICAgYmFja1N0YXRlKCkt
PnNldFNjYWxlKG1fd2ViUGFnZS0+ZC0+Y3VycmVudFNjYWxlKCkpOwogICAgIGJhY2tTdGF0ZSgp
LT5zZXROdW1iZXJPZlRpbGVzV2lkZShkaXZpc29yLmZpcnN0KTsKICAgICBiYWNrU3RhdGUoKS0+
c2V0TnVtYmVyT2ZUaWxlc0hpZ2goZGl2aXNvci5zZWNvbmQpOwogICAgIGJhY2tTdGF0ZSgpLT5z
ZXRUaWxlTWFwKG5ld1RpbGVNYXApOwpAQCAtMjM0Nyw3ICsyMzY2LDcgQEAgdm9pZCBCYWNraW5n
U3RvcmVQcml2YXRlOjppbnZhbGlkYXRlV2luZG93KCkKIHsKICAgICAvLyBHcmFiIGEgcmVjdCBh
cHByb3ByaWF0ZSBmb3IgdGhlIGN1cnJlbnQgdGhyZWFkLgogICAgIGlmIChCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6dXNlckludGVyZmFjZVRocmVhZE1lc3NhZ2VDbGllbnQoKS0+aXNDdXJyZW50VGhy
ZWFkKCkpCi0gICAgICAgIGludmFsaWRhdGVXaW5kb3cobV93ZWJQYWdlLT5jbGllbnQoKS0+dXNl
ckludGVyZmFjZUJsaXR0ZWREZXN0aW5hdGlvblJlY3QoKSk7CisgICAgICAgIGludmFsaWRhdGVX
aW5kb3cobV93ZWJQYWdlLT5jbGllbnQoKS0+dXNlckludGVyZmFjZVZpZXdwb3J0QWNjZXNzb3Io
KS0+ZGVzdGluYXRpb25TdXJmYWNlUmVjdCgpKTsKICAgICBlbHNlCiAgICAgICAgIGludmFsaWRh
dGVXaW5kb3coUGxhdGZvcm06OkludFJlY3QoUGxhdGZvcm06OkludFBvaW50KDAsIDApLCBtX2Ns
aWVudC0+dHJhbnNmb3JtZWRWaWV3cG9ydFNpemUoKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmVfcC5oIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmVfcC5oCmluZGV4IGI2Y2U0NGZmNDU0NmRlNjYxMDRj
OWZlMzNmYjk4NjEyNjI0NzZhNGMuLjhlNTJhMTJhZWU4NTQzYTY3YTRjMTE3NDUxNGVmMzNmZTRk
ZTlhNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0
b3JlX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZV9w
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDEx
IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1p
dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTM4LDYgKzM4
LDExIEBAIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogfQogCiBuYW1lc3BhY2UgQmxhY2tC
ZXJyeSB7CisKK25hbWVzcGFjZSBQbGF0Zm9ybSB7CitjbGFzcyBWaWV3cG9ydEFjY2Vzc29yOwor
fQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQmFja2luZ1N0b3JlVGlsZTsKQEAgLTUx
LDYgKzU2LDcgQEAgcHVibGljOgogICAgIEJhY2tpbmdTdG9yZUdlb21ldHJ5KCkKICAgICAgICAg
OiBtX251bWJlck9mVGlsZXNXaWRlKDApCiAgICAgICAgICwgbV9udW1iZXJPZlRpbGVzSGlnaCgw
KQorICAgICAgICAsIG1fc2NhbGUoMC4wKQogICAgIHsKICAgICB9CiAKQEAgLTY3LDkgKzczLDEz
IEBAIHB1YmxpYzoKICAgICBjb25zdCBUaWxlTWFwJiB0aWxlTWFwKCkgY29uc3QgeyByZXR1cm4g
bV90aWxlTWFwOyB9CiAgICAgdm9pZCBzZXRUaWxlTWFwKGNvbnN0IFRpbGVNYXAmIHRpbGVNYXAp
IHsgbV90aWxlTWFwID0gdGlsZU1hcDsgfQogCisgICAgZG91YmxlIHNjYWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zY2FsZTsgfQorICAgIHZvaWQgc2V0U2NhbGUoZG91YmxlIHNjYWxlKSB7IG1fc2Nh
bGUgPSBzY2FsZTsgfQorCiAgIHByaXZhdGU6CiAgICAgaW50IG1fbnVtYmVyT2ZUaWxlc1dpZGU7
CiAgICAgaW50IG1fbnVtYmVyT2ZUaWxlc0hpZ2g7CisgICAgZG91YmxlIG1fc2NhbGU7CiAgICAg
UGxhdGZvcm06OkludFBvaW50IG1fYmFja2luZ1N0b3JlT2Zmc2V0OwogICAgIFRpbGVNYXAgbV90
aWxlTWFwOwogfTsKQEAgLTE1NCw3ICsxNjQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5Nb3Zl
RG93bihjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYpIGNvbnN0OwogCiAgICAgUGxhdGZvcm06Oklu
dFJlY3QgYmFja2luZ1N0b3JlUmVjdEZvclNjcm9sbChpbnQgZGVsdGFYLCBpbnQgZGVsdGFZLCBj
b25zdCBQbGF0Zm9ybTo6SW50UmVjdCYpIGNvbnN0OwotICAgIHZvaWQgc2V0QmFja2luZ1N0b3Jl
UmVjdChjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYpOworICAgIHZvaWQgc2V0QmFja2luZ1N0b3Jl
UmVjdChjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYsIGRvdWJsZSBzY2FsZSk7CiAKICAgICB0eXBl
ZGVmIFdURjo6VmVjdG9yPFRpbGVJbmRleD4gVGlsZUluZGV4TGlzdDsKICAgICBUaWxlSW5kZXhM
aXN0IGluZGV4ZXNGb3JCYWNraW5nU3RvcmVSZWN0KGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0Jikg
Y29uc3Q7CkBAIC0xOTMsNyArMjAzLDcgQEAgcHVibGljOgogICAgIC8vIEFzc3VtZXMgdGhlIHJl
Y3QgdG8gYmUgaW4gd2luZG93L3ZpZXdwb3J0IGNvb3JkaW5hdGVzLgogICAgIHZvaWQgY29weVBy
ZXZpb3VzQ29udGVudHNUb0JhY2tTdXJmYWNlT2ZXaW5kb3coKTsKICAgICB2b2lkIGNvcHlQcmV2
aW91c0NvbnRlbnRzVG9CYWNrU3VyZmFjZU9mVGlsZShjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYs
IEJhY2tpbmdTdG9yZVRpbGUqKTsKLSAgICB2b2lkIHBhaW50RGVmYXVsdEJhY2tncm91bmQoY29u
c3QgUGxhdGZvcm06OkludFJlY3QmIGNvbnRlbnRzLCBjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYsIGJvb2wgZmx1c2gpOworICAgIHZvaWQgcGFpbnREZWZhdWx0QmFja2dyb3Vu
ZChjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgZHN0UmVjdCwgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OlZpZXdwb3J0QWNjZXNzb3IqLCBib29sIGZsdXNoKTsKICAgICB2b2lkIGJsaXRPbklkbGUoKTsK
IAogICAgIHR5cGVkZWYgc3RkOjpwYWlyPFRpbGVJbmRleCwgUGxhdGZvcm06OkludFJlY3Q+IFRp
bGVSZWN0OwpAQCAtMjE2LDggKzIyNiw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERpcmVjdFJl
bmRlcmluZ0FuaW1hdGlvbk1lc3NhZ2VTY2hlZHVsZWQoKSB7IG1faXNEaXJlY3RSZW5kZXJpbmdB
bmltYXRpb25NZXNzYWdlU2NoZWR1bGVkID0gdHJ1ZTsgfQogI2VuZGlmCiAKLSAgICB2b2lkIGJs
aXRIb3Jpem9udGFsU2Nyb2xsYmFyKGNvbnN0IFBsYXRmb3JtOjpJbnRQb2ludCYpOwotICAgIHZv
aWQgYmxpdFZlcnRpY2FsU2Nyb2xsYmFyKGNvbnN0IFBsYXRmb3JtOjpJbnRQb2ludCYpOworICAg
IHZvaWQgYmxpdEhvcml6b250YWxTY3JvbGxiYXIoKTsKKyAgICB2b2lkIGJsaXRWZXJ0aWNhbFNj
cm9sbGJhcigpOwogCiAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSB0aWxlIGluZGV4IGlzIGN1
cnJlbnRseSB2aXNpYmxlIG9yIG5vdC4KICAgICBib29sIGlzVGlsZVZpc2libGUoY29uc3QgVGls
ZUluZGV4JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBp
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcApp
bmRleCA4Y2Q2OGE1M2MyY2U5MjJhZWU0NTA1MjgwYTQyZWZlZDY0OTcxMjY3Li42Yzc0YTM5MjI3
ZjViYWUzMzZlODQyYTBhYmQ3ZDYzMTAzZjcyMDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9BcGkvV2ViUGFnZS5jcHAKQEAgLTEzNCw2ICsxMzQsNyBAQAogI2lmIEVOQUJMRShXRUJET00p
CiAjaW5jbHVkZSAiV2ViRE9NRG9jdW1lbnQuaCIKICNlbmRpZgorI2luY2x1ZGUgIldlYktpdFRo
cmVhZFZpZXdwb3J0QWNjZXNzb3IuaCIKICNpbmNsdWRlICJXZWJLaXRWZXJzaW9uLmgiCiAjaW5j
bHVkZSAiV2ViT3ZlcmxheS5oIgogI2luY2x1ZGUgIldlYk92ZXJsYXlfcC5oIgpAQCAtMzg1LDYg
KzM4Niw3IEBAIFdlYlBhZ2VQcml2YXRlOjpXZWJQYWdlUHJpdmF0ZShXZWJQYWdlKiB3ZWJQYWdl
LCBXZWJQYWdlQ2xpZW50KiBjbGllbnQsIGNvbnN0IEluCiAgICAgLCBtX3RyYW5zZm9ybWF0aW9u
TWF0cml4KG5ldyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKQogICAgICwgbV9iYWNraW5nU3RvcmUo
MCkgLy8gSW5pdGlhbGl6ZWQgYnkgaW5pdC4KICAgICAsIG1fYmFja2luZ1N0b3JlQ2xpZW50KDAp
IC8vIEluaXRpYWxpemVkIGJ5IGluaXQuCisgICAgLCBtX3dlYmtpdFRocmVhZFZpZXdwb3J0QWNj
ZXNzb3IoMCkgLy8gSW5pdGlhbGl6ZWQgYnkgaW5pdC4KICAgICAsIG1faW5QYWdlU2VhcmNoTWFu
YWdlcihuZXcgSW5QYWdlU2VhcmNoTWFuYWdlcih0aGlzKSkKICAgICAsIG1faW5wdXRIYW5kbGVy
KG5ldyBJbnB1dEhhbmRsZXIodGhpcykpCiAgICAgLCBtX3NlbGVjdGlvbkhhbmRsZXIobmV3IFNl
bGVjdGlvbkhhbmRsZXIodGhpcykpCkBAIC00NTYsNiArNDU4LDkgQEAgV2ViUGFnZVByaXZhdGU6
On5XZWJQYWdlUHJpdmF0ZSgpCiAgICAgZGVsZXRlIG1fY29va2llSmFyOwogICAgIG1fY29va2ll
SmFyID0gMDsKIAorICAgIGRlbGV0ZSBtX3dlYmtpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3I7Cisg
ICAgbV93ZWJraXRUaHJlYWRWaWV3cG9ydEFjY2Vzc29yID0gMDsKKwogICAgIGRlbGV0ZSBtX2Jh
Y2tpbmdTdG9yZUNsaWVudDsKICAgICBtX2JhY2tpbmdTdG9yZUNsaWVudCA9IDA7CiAgICAgbV9i
YWNraW5nU3RvcmUgPSAwOwpAQCAtNjEyLDYgKzYxNyw4IEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6
OmluaXQoY29uc3QgV2ViU3RyaW5nJiBwYWdlR3JvdXBOYW1lKQogICAgIC8vIGlzIG93bmVkIGJ5
IEJhY2tpbmdTdG9yZUNsaWVudCBhbmQgdGhlbiBkZWxldGVkIGJ5IGl0cyBkZXN0cnVjdG9yLgog
ICAgIG1fYmFja2luZ1N0b3JlID0gbV9iYWNraW5nU3RvcmVDbGllbnQtPmJhY2tpbmdTdG9yZSgp
OwogCisgICAgbV93ZWJraXRUaHJlYWRWaWV3cG9ydEFjY2Vzc29yID0gbmV3IFdlYktpdFRocmVh
ZFZpZXdwb3J0QWNjZXNzb3IodGhpcyk7CisKICAgICBibG9ja0NsaWNrUmFkaXVzID0gaW50KHJv
dW5kZigwLjM1ICogUGxhdGZvcm06OkdyYXBoaWNzOjpTY3JlZW46OnByaW1hcnlTY3JlZW4oKS0+
cGl4ZWxzUGVySW5jaCgwKS53aWR0aCgpKSk7IC8vIFRoZSBjbGlja2VkIHJlY3RhbmdsZSBhcmVh
IHNob3VsZCBiZSBhIGZpeGVkIHVuaXQgb2YgbWVhc3VyZW1lbnQuCiAKICAgICBtX3BhZ2UtPnNl
dHRpbmdzKCktPnNldERlbGVnYXRlU2VsZWN0aW9uUGFpbnQodHJ1ZSk7CkBAIC0xODA1LDYgKzE4
MTIsMTEgQEAgSW50U2l6ZSBXZWJQYWdlUHJpdmF0ZTo6dHJhbnNmb3JtZWRBY3R1YWxWaXNpYmxl
U2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIEludFNpemUobV9hY3R1YWxWaXNpYmxlV2lkdGgsIG1f
YWN0dWFsVmlzaWJsZUhlaWdodCk7CiB9CiAKK1BsYXRmb3JtOjpWaWV3cG9ydEFjY2Vzc29yKiBX
ZWJQYWdlOjp3ZWJraXRUaHJlYWRWaWV3cG9ydEFjY2Vzc29yKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZC0+bV93ZWJraXRUaHJlYWRWaWV3cG9ydEFjY2Vzc29yOworfQorCiBQbGF0Zm9ybTo6SW50
U2l6ZSBXZWJQYWdlOjp2aWV3cG9ydFNpemUoKSBjb25zdAogewogICAgIHJldHVybiBkLT50cmFu
c2Zvcm1lZEFjdHVhbFZpc2libGVTaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQXBpL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2Vi
UGFnZS5oCmluZGV4IDMxYjk5MDgwODQwZjQ2YmJhNDQ1Y2I2ZDgzNTIyMzI2NDBmYTQzZWEuLjkx
MzM3YWRhMDA1MTRhMDk0MjQ2MjE5ZmY4NTg5NjkxMTQyMjczZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9BcGkvV2ViUGFnZS5oCkBAIC01Nyw2ICs1Nyw3IEBAIGNsYXNzIEtleWJvYXJkRXZl
bnQ7CiBjbGFzcyBNb3VzZUV2ZW50OwogY2xhc3MgVG91Y2hFdmVudDsKIGNsYXNzIFRvdWNoUG9p
bnQ7CitjbGFzcyBWaWV3cG9ydEFjY2Vzc29yOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTEzNyw2ICsxMzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIYXNQZW5kaW5nU3VyZmFjZVNp
emVDaGFuZ2UoKTsKICAgICB2b2lkIGFwcGx5UGVuZGluZ09yaWVudGF0aW9uSWZOZWVkZWQoKTsK
IAorICAgIFBsYXRmb3JtOjpWaWV3cG9ydEFjY2Vzc29yKiB3ZWJraXRUaHJlYWRWaWV3cG9ydEFj
Y2Vzc29yKCkgY29uc3Q7CiAgICAgUGxhdGZvcm06OkludFNpemUgdmlld3BvcnRTaXplKCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRWaWV3cG9ydFNpemUoY29uc3QgUGxhdGZvcm06OkludFNpemUmIHZp
ZXdwb3J0U2l6ZSwgYm9vbCBlbnN1cmVGb2N1c0VsZW1lbnRWaXNpYmxlID0gdHJ1ZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ2xpZW50LmgKaW5kZXggYmJiM2Rj
M2I5MDA0ZDkyNjBhYjljZTBhYmM4ZGQwODI4MzdmNjJhMC4uZTllZDUyZTYzNTAzOWVhNGMzMWE4
NzRmMTE1NjI0ODM4Y2FkNDY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0FwaS9XZWJQYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9X
ZWJQYWdlQ2xpZW50LmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgR2VvVHJhY2tlckxpc3RlbmVy
OwogY2xhc3MgSW50UmVjdFJlZ2lvbjsKIGNsYXNzIE5ldHdvcmtSZXF1ZXN0OwogY2xhc3MgTmV0
d29ya1N0cmVhbUZhY3Rvcnk7CitjbGFzcyBWaWV3cG9ydEFjY2Vzc29yOwogY2xhc3MgV2ViVXNl
ck1lZGlhUmVxdWVzdDsKIAogbmFtZXNwYWNlIEdyYXBoaWNzIHsKQEAgLTIwMyw4ICsyMDQsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG5lZWRNb3JlRGF0YSgpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgaGFuZGxlV2ViSW5zcGVjdG9yTWVzc2FnZVRvRnJvbnRlbmQoaW50IGlkLCBjb25z
dCBjaGFyKiBtZXNzYWdlLCBpbnQgbGVuZ3RoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFBsYXRmb3Jt
OjpJbnRSZWN0IHVzZXJJbnRlcmZhY2VCbGl0dGVkRGVzdGluYXRpb25SZWN0KCkgY29uc3QgPSAw
OwotICAgIHZpcnR1YWwgUGxhdGZvcm06OkludFJlY3QgdXNlckludGVyZmFjZUJsaXR0ZWRWaXNp
YmxlQ29udGVudHNSZWN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OlZpZXdwb3J0QWNjZXNzb3IqIHVzZXJJbnRlcmZhY2VWaWV3cG9ydEFjY2Vzc29yKCkg
Y29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHJlc2V0Qml0bWFwWm9vbVNjYWxlKGRvdWJs
ZSBzY2FsZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlQmxvY2tab29tKGNvbnN0IFBs
YXRmb3JtOjpGbG9hdFBvaW50JiBmaW5hbFBvaW50LCBkb3VibGUgZmluYWxTY2FsZSkgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRv
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yLmNw
cAppbmRleCA4OTQ4Y2I5ZThlZjU1NTg3NWU0Mjc2ZjE4ODA2ZGVjYjYyNDBmMDYwLi4zMTI3Njgw
M2U1ODI1YjkwNWY2MGJhZDE5OTU1OWVjNDFmYjIzMzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yLmNwcApAQCAtMzIsNiArMzIsNyBA
QAogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUV4ZWN1dGFibGVNZXNzYWdlLmg+CiAjaW5j
bHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtTWVzc2FnZS5oPgogI2luY2x1ZGUgPEJsYWNrQmVycnlQ
bGF0Zm9ybU1lc3NhZ2VDbGllbnQuaD4KKyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1WaWV3
cG9ydEFjY2Vzc29yLmg+CiAjaW5jbHVkZSA8R2VuZXJpY1RpbWVyQ2xpZW50Lmg+CiAjaW5jbHVk
ZSA8VGhyZWFkVGltZXJDbGllbnQuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KQEAg
LTIyMyw4ICsyMjQsMTEgQEAgdm9pZCBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OmFuaW1hdGlv
bkZyYW1lQ2hhbmdlZCgpCiB7CiAgICAgQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBtX3dl
YlBhZ2UtPm1fYmFja2luZ1N0b3JlOwogICAgIGlmICghYmFja2luZ1N0b3JlKSB7Ci0gICAgICAg
IGRyYXdMYXllcnMobV93ZWJQYWdlLT5jbGllbnQoKS0+dXNlckludGVyZmFjZUJsaXR0ZWREZXN0
aW5hdGlvblJlY3QoKSwKLSAgICAgICAgICAgICAgICAgICBJbnRSZWN0KG1fd2ViUGFnZS0+Y2xp
ZW50KCktPnVzZXJJbnRlcmZhY2VCbGl0dGVkVmlzaWJsZUNvbnRlbnRzUmVjdCgpKSk7CisgICAg
ICAgIFBsYXRmb3JtOjpWaWV3cG9ydEFjY2Vzc29yKiB2aWV3cG9ydEFjY2Vzc29yID0gbV93ZWJQ
YWdlLT5jbGllbnQoKS0+dXNlckludGVyZmFjZVZpZXdwb3J0QWNjZXNzb3IoKTsKKyAgICAgICAg
Y29uc3QgUGxhdGZvcm06OkludFJlY3QgZHN0UmVjdCA9IHZpZXdwb3J0QWNjZXNzb3ItPmRlc3Rp
bmF0aW9uU3VyZmFjZVJlY3QoKTsKKyAgICAgICAgY29uc3QgUGxhdGZvcm06OkZsb2F0UmVjdCBz
cmNSZWN0ID0gdmlld3BvcnRBY2Nlc3Nvci0+ZG9jdW1lbnRWaWV3cG9ydFJlY3QoKTsKKworICAg
ICAgICBkcmF3TGF5ZXJzKGRzdFJlY3QsIHNyY1JlY3QpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5o
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaAppbmRleCAwZDk3Njhm
NmI2ZTZhMGFlMDliMTVlOGZlNDk2NGZmYTZmMTM4OTljLi4yNzZhM2FhYWMwMTE3MmQyMzAyYTQw
NTYxYjMzZTdhYjVjOGVmZGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL1dlYlBhZ2VfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFn
ZV9wLmgKQEAgLTc5LDYgKzc5LDcgQEAgY2xhc3MgU2VsZWN0aW9uSGFuZGxlcjsKIGNsYXNzIFRv
dWNoRXZlbnRIYW5kbGVyOwogY2xhc3MgV2ViQ29va2llSmFyOwogY2xhc3MgV2ViUGFnZUNsaWVu
dDsKK2NsYXNzIFdlYktpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3I7CiAKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCiBjbGFzcyBGcmFtZUxheWVyczsKQEAgLTUwOSw2ICs1MTAsNyBA
QCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgqIG1fdHJhbnNmb3Jt
YXRpb25NYXRyaXg7CiAgICAgQmFja2luZ1N0b3JlKiBtX2JhY2tpbmdTdG9yZTsKICAgICBCYWNr
aW5nU3RvcmVDbGllbnQqIG1fYmFja2luZ1N0b3JlQ2xpZW50OworICAgIFdlYktpdFRocmVhZFZp
ZXdwb3J0QWNjZXNzb3IqIG1fd2Via2l0VGhyZWFkVmlld3BvcnRBY2Nlc3NvcjsKICAgICBJblBh
Z2VTZWFyY2hNYW5hZ2VyKiBtX2luUGFnZVNlYXJjaE1hbmFnZXI7CiAgICAgSW5wdXRIYW5kbGVy
KiBtX2lucHV0SGFuZGxlcjsKICAgICBTZWxlY3Rpb25IYW5kbGVyKiBtX3NlbGVjdGlvbkhhbmRs
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9C
YWNraW5nU3RvcmVUaWxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBw
b3J0L0JhY2tpbmdTdG9yZVRpbGUuY3BwCmluZGV4IDI2MmZiZWZmMjIxZDFmMzRlMmIyMTQ0NDY2
NjZlZDdhNjU0ZGNlMDMuLmJlYmM4MjYxZTY2ODM1NGE0MzJiNGU1ODcwZjg4ZTE4OWVlNTRjNjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0JhY2tp
bmdTdG9yZVRpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBw
b3J0L0JhY2tpbmdTdG9yZVRpbGUuY3BwCkBAIC0zNyw2ICszNyw3IEBAIFRpbGVCdWZmZXI6OlRp
bGVCdWZmZXIoY29uc3QgUGxhdGZvcm06OkludFNpemUmIHNpemUpCiAgICAgOiBtX3NpemUoc2l6
ZSkKICAgICAsIG1fZmVuY2UoRmVuY2U6OmNyZWF0ZSgpKQogICAgICwgbV9idWZmZXIoMCkKKyAg
ICAsIG1fc2NhbGUoMS4wKQogewogfQogCkBAIC01NSwxNCArNTYsMTQgQEAgUGxhdGZvcm06Oklu
dFJlY3QgVGlsZUJ1ZmZlcjo6cmVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIFBsYXRmb3JtOjpJbnRS
ZWN0KFBsYXRmb3JtOjpJbnRQb2ludDo6emVybygpLCBtX3NpemUpOwogfQogCi1ib29sIFRpbGVC
dWZmZXI6OmlzUmVuZGVyZWQoKSBjb25zdAorYm9vbCBUaWxlQnVmZmVyOjppc1JlbmRlcmVkKGRv
dWJsZSBzY2FsZSkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNSZW5kZXJlZChyZWN0KCkpOworICAg
IHJldHVybiBpc1JlbmRlcmVkKHJlY3QoKSwgc2NhbGUpOwogfQogCi1ib29sIFRpbGVCdWZmZXI6
OmlzUmVuZGVyZWQoY29uc3QgUGxhdGZvcm06OkludFJlY3RSZWdpb24mIGNvbnRlbnRzKSBjb25z
dAorYm9vbCBUaWxlQnVmZmVyOjppc1JlbmRlcmVkKGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0UmVn
aW9uJiBjb250ZW50cywgZG91YmxlIHNjYWxlKSBjb25zdAogewotICAgIHJldHVybiBQbGF0Zm9y
bTo6SW50UmVjdFJlZ2lvbjo6c3VidHJhY3RSZWdpb25zKGNvbnRlbnRzLCBtX3JlbmRlcmVkUmVn
aW9uKS5pc0VtcHR5KCk7CisgICAgcmV0dXJuIG1fc2NhbGUgPT0gc2NhbGUgJiYgUGxhdGZvcm06
OkludFJlY3RSZWdpb246OnN1YnRyYWN0UmVnaW9ucyhjb250ZW50cywgbV9yZW5kZXJlZFJlZ2lv
bikuaXNFbXB0eSgpOwogfQogCiB2b2lkIFRpbGVCdWZmZXI6OmNsZWFyUmVuZGVyZWRSZWdpb24o
Y29uc3QgUGxhdGZvcm06OkludFJlY3RSZWdpb24mIHJlZ2lvbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0JhY2tpbmdTdG9yZVRpbGUuaCBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0JhY2tpbmdTdG9yZVRpbGUuaApp
bmRleCAwMzY4MDhmMzI3ODg2YmI4NGY5NDc4NTM0YTBkMDE2OTE5ODdhMDQxLi5iNTFhMzE2M2I2
N2M3MjhhY2M5NmUxNTJmYjA0NzUxMzJkZjAyNmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9CYWNraW5nU3RvcmVUaWxlLmgKKysrIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQmFja2luZ1N0b3JlVGlsZS5oCkBAIC03
NCwxNCArNzQsMTcgQEAgY2xhc3MgVGlsZUJ1ZmZlciB7CiAgICAgICAgIFBsYXRmb3JtOjpJbnRT
aXplIHNpemUoKSBjb25zdDsKICAgICAgICAgUGxhdGZvcm06OkludFJlY3QgcmVjdCgpIGNvbnN0
OwogCi0gICAgICAgIGJvb2wgaXNSZW5kZXJlZCgpIGNvbnN0OwotICAgICAgICBib29sIGlzUmVu
ZGVyZWQoY29uc3QgUGxhdGZvcm06OkludFJlY3RSZWdpb24mIGNvbnRlbnRzKSBjb25zdDsKKyAg
ICAgICAgYm9vbCBpc1JlbmRlcmVkKGRvdWJsZSBzY2FsZSkgY29uc3Q7CisgICAgICAgIGJvb2wg
aXNSZW5kZXJlZChjb25zdCBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbiYgY29udGVudHMsIGRvdWJs
ZSBzY2FsZSkgY29uc3Q7CiAgICAgICAgIHZvaWQgY2xlYXJSZW5kZXJlZFJlZ2lvbigpOwogICAg
ICAgICB2b2lkIGNsZWFyUmVuZGVyZWRSZWdpb24oY29uc3QgUGxhdGZvcm06OkludFJlY3RSZWdp
b24mKTsKICAgICAgICAgdm9pZCBhZGRSZW5kZXJlZFJlZ2lvbihjb25zdCBQbGF0Zm9ybTo6SW50
UmVjdFJlZ2lvbiYpOwogICAgICAgICBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbiByZW5kZXJlZFJl
Z2lvbigpIGNvbnN0OwogICAgICAgICBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbiBub3RSZW5kZXJl
ZFJlZ2lvbigpIGNvbnN0OwogCisgICAgICAgIGRvdWJsZSBzY2FsZSgpIHsgcmV0dXJuIG1fc2Nh
bGU7IH0KKyAgICAgICAgdm9pZCBzZXRTY2FsZShkb3VibGUgc2NhbGUpIHsgbV9zY2FsZSA9IHNj
YWxlOyB9OworCiAgICAgICAgIFBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiBuYXRpdmVCdWZm
ZXIoKSBjb25zdDsKIAogICAgICAgICBGZW5jZSogZmVuY2UoKSBjb25zdCB7IHJldHVybiBtX2Zl
bmNlLmdldCgpOyB9CkBAIC05Miw2ICs5NSw3IEBAIGNsYXNzIFRpbGVCdWZmZXIgewogICAgICAg
ICBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbiBtX3JlbmRlcmVkUmVnaW9uOwogICAgICAgICBSZWZQ
dHI8RmVuY2U+IG1fZmVuY2U7CiAgICAgICAgIG11dGFibGUgUGxhdGZvcm06OkdyYXBoaWNzOjpC
dWZmZXIqIG1fYnVmZmVyOworICAgICAgICBkb3VibGUgbV9zY2FsZTsKIH07CiAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQmFja2luZ1N0b3Jl
VmlzdWFsaXphdGlvblZpZXdwb3J0QWNjZXNzb3IuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L1dlYktpdFN1cHBvcnQvQmFja2luZ1N0b3JlVmlzdWFsaXphdGlvblZpZXdwb3J0QWNjZXNz
b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmYwMTlkMzM5YjFmMjVmZjY4MjIxYjNlMWIzMGQwMTcyNGZhOGUy
OWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3Vw
cG9ydC9CYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3BvcnRBY2Nlc3Nvci5jcHAKQEAgLTAs
MCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpbmNsdWRlICJCYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3BvcnRBY2Nlc3Nvci5o
IgorCisjaW5jbHVkZSAiQmFja2luZ1N0b3JlX3AuaCIKKworI2luY2x1ZGUgPEJsYWNrQmVycnlQ
bGF0Zm9ybVByaW1pdGl2ZXMuaD4KKyNpbmNsdWRlIDxhbGdvcml0aG0+CisKK3VzaW5nIEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpGbG9hdFBvaW50OwordXNpbmcgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OkludFBvaW50OwordXNpbmcgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkludFNpemU7Cit1c2luZyBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6Vmlld3BvcnRBY2Nlc3NvcjsKKworbmFtZXNwYWNlIEJsYWNr
QmVycnkgeworbmFtZXNwYWNlIFdlYktpdCB7CisKK0JhY2tpbmdTdG9yZVZpc3VhbGl6YXRpb25W
aWV3cG9ydEFjY2Vzc29yOjpCYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3BvcnRBY2Nlc3Nv
cihWaWV3cG9ydEFjY2Vzc29yKiBvcmlnaW5hbEFjY2Vzc29yLCBCYWNraW5nU3RvcmVQcml2YXRl
KiBiYWNraW5nU3RvcmVQcml2YXRlKQorICAgIDogbV9vcmlnaW5hbEFjY2Vzc29yKG9yaWdpbmFs
QWNjZXNzb3IpCisgICAgLCBtX2JhY2tpbmdTdG9yZVByaXZhdGUoYmFja2luZ1N0b3JlUHJpdmF0
ZSkKK3sKK30KKworSW50U2l6ZSBCYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3BvcnRBY2Nl
c3Nvcjo6cGl4ZWxDb250ZW50c1NpemUoKSBjb25zdAoreworICAgIHJldHVybiByb3VuZFRvUGl4
ZWxGcm9tRG9jdW1lbnRDb250ZW50cyhkb2N1bWVudENvbnRlbnRzUmVjdCgpKS5zaXplKCk7Cit9
CisKK0ludFNpemUgQmFja2luZ1N0b3JlVmlzdWFsaXphdGlvblZpZXdwb3J0QWNjZXNzb3I6OmRv
Y3VtZW50Q29udGVudHNTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9vcmlnaW5hbEFjY2Vz
c29yLT5kb2N1bWVudENvbnRlbnRzU2l6ZSgpOworfQorCitJbnRQb2ludCBCYWNraW5nU3RvcmVW
aXN1YWxpemF0aW9uVmlld3BvcnRBY2Nlc3Nvcjo6cGl4ZWxTY3JvbGxQb3NpdGlvbigpIGNvbnN0
Cit7CisgICAgRmxvYXRQb2ludCBwb3MgPSBwaXhlbEZyb21Eb2N1bWVudENvbnRlbnRzKAorICAg
ICAgICB0b0RvY3VtZW50Q29udGVudHMoc3RhdGUoKS0+YmFja2luZ1N0b3JlT2Zmc2V0KCksIHN0
YXRlKCktPnNjYWxlKCkpKTsKKworICAgIHJldHVybiBJbnRQb2ludChzdGF0aWNfY2FzdDxpbnQ+
KHBvcy54KCkpLCBzdGF0aWNfY2FzdDxpbnQ+KHBvcy55KCkpKTsKK30KKworSW50UG9pbnQgQmFj
a2luZ1N0b3JlVmlzdWFsaXphdGlvblZpZXdwb3J0QWNjZXNzb3I6OmRvY3VtZW50U2Nyb2xsUG9z
aXRpb24oKSBjb25zdAoreworICAgIHJldHVybiByb3VuZFRvRG9jdW1lbnRDb250ZW50cyhzdGF0
ZSgpLT5iYWNraW5nU3RvcmVPZmZzZXQoKSwgc3RhdGUoKS0+c2NhbGUoKSk7Cit9CisKK0ludFNp
emUgQmFja2luZ1N0b3JlVmlzdWFsaXphdGlvblZpZXdwb3J0QWNjZXNzb3I6OnBpeGVsVmlld3Bv
cnRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9vcmlnaW5hbEFjY2Vzc29yLT5waXhlbFZp
ZXdwb3J0U2l6ZSgpOworfQorCitJbnRTaXplIEJhY2tpbmdTdG9yZVZpc3VhbGl6YXRpb25WaWV3
cG9ydEFjY2Vzc29yOjpkb2N1bWVudFZpZXdwb3J0U2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHJvdW5kVG9Eb2N1bWVudEZyb21QaXhlbENvbnRlbnRzKHBpeGVsVmlld3BvcnRSZWN0KCkpLnNp
emUoKTsKK30KKworSW50UG9pbnQgQmFja2luZ1N0b3JlVmlzdWFsaXphdGlvblZpZXdwb3J0QWNj
ZXNzb3I6OmRlc3RpbmF0aW9uU3VyZmFjZU9mZnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
b3JpZ2luYWxBY2Nlc3Nvci0+ZGVzdGluYXRpb25TdXJmYWNlT2Zmc2V0KCk7Cit9CisKK2RvdWJs
ZSBCYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3BvcnRBY2Nlc3Nvcjo6c2NhbGUoKSBjb25z
dAoreworICAgIHJldHVybiBzdGF0ZSgpLT5zY2FsZSgpIC8gc3RkOjptYXgoc3RhdGUoKS0+bnVt
YmVyT2ZUaWxlc1dpZGUoKSwgc3RhdGUoKS0+bnVtYmVyT2ZUaWxlc0hpZ2goKSk7Cit9CisKK0Jh
Y2tpbmdTdG9yZUdlb21ldHJ5KiBCYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3BvcnRBY2Nl
c3Nvcjo6c3RhdGUoKSBjb25zdAoreworICAgIHJldHVybiBtX2JhY2tpbmdTdG9yZVByaXZhdGUt
PmZyb250U3RhdGUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cit9IC8vIG5hbWVzcGFj
ZSBCbGFja0JlcnJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0
U3VwcG9ydC9CYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3BvcnRBY2Nlc3Nvci5oIGIvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQmFja2luZ1N0b3JlVmlzdWFsaXph
dGlvblZpZXdwb3J0QWNjZXNzb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDhiYTBmNWZiMjZhZjRiZTIzMTI1
YjZkNmRlZjA4YjBhNDc5ODcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYktpdFN1cHBvcnQvQmFja2luZ1N0b3JlVmlzdWFsaXphdGlvblZpZXdwb3J0QWNj
ZXNzb3IuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2Vh
cmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisKKyNpZm5k
ZWYgQmFja2luZ1N0b3JlVmlzdWFsaXphdGlvblZpZXdwb3J0QWNjZXNzb3JfaAorI2RlZmluZSBC
YWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3BvcnRBY2Nlc3Nvcl9oCisKKyNpbmNsdWRlIDxC
bGFja0JlcnJ5UGxhdGZvcm1WaWV3cG9ydEFjY2Vzc29yLmg+CisKK25hbWVzcGFjZSBCbGFja0Jl
cnJ5IHsKKworbmFtZXNwYWNlIFBsYXRmb3JtIHsKK2NsYXNzIEludFBvaW50OworY2xhc3MgSW50
U2l6ZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEJhY2tpbmdTdG9yZVByaXZh
dGU7CitjbGFzcyBCYWNraW5nU3RvcmVHZW9tZXRyeTsKKworY2xhc3MgQmFja2luZ1N0b3JlVmlz
dWFsaXphdGlvblZpZXdwb3J0QWNjZXNzb3IgOiBwdWJsaWMgUGxhdGZvcm06OlZpZXdwb3J0QWNj
ZXNzb3IgeworcHVibGljOgorICAgIEJhY2tpbmdTdG9yZVZpc3VhbGl6YXRpb25WaWV3cG9ydEFj
Y2Vzc29yKFZpZXdwb3J0QWNjZXNzb3IqIG9yaWdpbmFsQWNjZXNzb3IsIEJhY2tpbmdTdG9yZVBy
aXZhdGUqKTsKKyAgICB2aXJ0dWFsIH5CYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3BvcnRB
Y2Nlc3NvcigpIHsgfQorCisgICAgdmlydHVhbCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6SW50U2l6
ZSBkb2N1bWVudENvbnRlbnRzU2l6ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkludFNpemUgcGl4ZWxDb250ZW50c1NpemUoKSBjb25zdDsKKworICAgIHZpcnR1
YWwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkludFBvaW50IGRvY3VtZW50U2Nyb2xsUG9zaXRpb24o
KSBjb25zdDsKKyAgICB2aXJ0dWFsIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpJbnRQb2ludCBwaXhl
bFNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpJbnRTaXplIGRvY3VtZW50Vmlld3BvcnRTaXplKCkgY29uc3Q7CisgICAgdmlydHVhbCBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6SW50U2l6ZSBwaXhlbFZpZXdwb3J0U2l6ZSgpIGNvbnN0Owor
CisgICAgdmlydHVhbCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6SW50UG9pbnQgZGVzdGluYXRpb25T
dXJmYWNlT2Zmc2V0KCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGRvdWJsZSBzY2FsZSgpIGNvbnN0
OworCitwcml2YXRlOgorICAgIEJhY2tpbmdTdG9yZUdlb21ldHJ5KiBzdGF0ZSgpIGNvbnN0Owor
CisgICAgUGxhdGZvcm06OlZpZXdwb3J0QWNjZXNzb3IqIG1fb3JpZ2luYWxBY2Nlc3NvcjsKKyAg
ICBCYWNraW5nU3RvcmVQcml2YXRlKiBtX2JhY2tpbmdTdG9yZVByaXZhdGU7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKK30gLy8gbmFtZXNwYWNlIEJsYWNrQmVycnkKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9XZWJLaXRU
aHJlYWRWaWV3cG9ydEFjY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJL
aXRTdXBwb3J0L1dlYktpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3IuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVk
ODI5M2IxOTA5NTIwMjI0ODk1Zjc4MDU3ZTY5OTVkOWMzYjc3ZGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9XZWJLaXRUaHJlYWRWaWV3
cG9ydEFjY2Vzc29yLmNwcApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldlYktpdFRocmVhZFZpZXdwb3J0
QWNjZXNzb3IuaCIKKworI2luY2x1ZGUgIldlYlBhZ2VfcC5oIgorCisjaW5jbHVkZSA8QmxhY2tC
ZXJyeVBsYXRmb3JtTWVzc2FnZUNsaWVudC5oPgorI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9y
bVByaW1pdGl2ZXMuaD4KKwordXNpbmcgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkludFBvaW50Owor
dXNpbmcgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkludFNpemU7Cit1c2luZyBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6Vmlld3BvcnRBY2Nlc3NvcjsKKworbmFtZXNwYWNlIEJsYWNrQmVycnkgeworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1dlYktpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3I6OldlYktpdFRo
cmVhZFZpZXdwb3J0QWNjZXNzb3IoV2ViUGFnZVByaXZhdGUqIHdlYlBhZ2VQcml2YXRlKQorICAg
IDogbV93ZWJQYWdlUHJpdmF0ZSh3ZWJQYWdlUHJpdmF0ZSkKK3sKK30KKworSW50U2l6ZSBXZWJL
aXRUaHJlYWRWaWV3cG9ydEFjY2Vzc29yOjpwaXhlbENvbnRlbnRzU2l6ZSgpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUKFBsYXRmb3JtOjp3ZWJLaXRUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmlzQ3VycmVu
dFRocmVhZCgpKTsKKworICAgIHJldHVybiBtX3dlYlBhZ2VQcml2YXRlLT50cmFuc2Zvcm1lZENv
bnRlbnRzU2l6ZSgpOworfQorCitJbnRTaXplIFdlYktpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3I6
OmRvY3VtZW50Q29udGVudHNTaXplKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoUGxhdGZvcm06Ondl
YktpdFRocmVhZE1lc3NhZ2VDbGllbnQoKS0+aXNDdXJyZW50VGhyZWFkKCkpOworCisgICAgcmV0
dXJuIG1fd2ViUGFnZVByaXZhdGUtPmNvbnRlbnRzU2l6ZSgpOworfQorCitJbnRQb2ludCBXZWJL
aXRUaHJlYWRWaWV3cG9ydEFjY2Vzc29yOjpwaXhlbFNjcm9sbFBvc2l0aW9uKCkgY29uc3QKK3sK
KyAgICBBU1NFUlQoUGxhdGZvcm06OndlYktpdFRocmVhZE1lc3NhZ2VDbGllbnQoKS0+aXNDdXJy
ZW50VGhyZWFkKCkpOworCisgICAgcmV0dXJuIG1fd2ViUGFnZVByaXZhdGUtPnRyYW5zZm9ybWVk
U2Nyb2xsUG9zaXRpb24oKTsKK30KKworSW50UG9pbnQgV2ViS2l0VGhyZWFkVmlld3BvcnRBY2Nl
c3Nvcjo6ZG9jdW1lbnRTY3JvbGxQb3NpdGlvbigpIGNvbnN0Cit7CisgICAgQVNTRVJUKFBsYXRm
b3JtOjp3ZWJLaXRUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmlzQ3VycmVudFRocmVhZCgpKTsKKwor
ICAgIHJldHVybiBtX3dlYlBhZ2VQcml2YXRlLT5zY3JvbGxQb3NpdGlvbigpOworfQorCitJbnRT
aXplIFdlYktpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3I6OnBpeGVsVmlld3BvcnRTaXplKCkgY29u
c3QKK3sKKyAgICBBU1NFUlQoUGxhdGZvcm06OndlYktpdFRocmVhZE1lc3NhZ2VDbGllbnQoKS0+
aXNDdXJyZW50VGhyZWFkKCkpOworCisgICAgcmV0dXJuIG1fd2ViUGFnZVByaXZhdGUtPnRyYW5z
Zm9ybWVkQWN0dWFsVmlzaWJsZVNpemUoKTsKK30KKworSW50U2l6ZSBXZWJLaXRUaHJlYWRWaWV3
cG9ydEFjY2Vzc29yOjpkb2N1bWVudFZpZXdwb3J0U2l6ZSgpIGNvbnN0Cit7CisgICAgQVNTRVJU
KFBsYXRmb3JtOjp3ZWJLaXRUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmlzQ3VycmVudFRocmVhZCgp
KTsKKworICAgIHJldHVybiBtX3dlYlBhZ2VQcml2YXRlLT5hY3R1YWxWaXNpYmxlU2l6ZSgpOwor
fQorCitJbnRQb2ludCBXZWJLaXRUaHJlYWRWaWV3cG9ydEFjY2Vzc29yOjpkZXN0aW5hdGlvblN1
cmZhY2VPZmZzZXQoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBzb21laG93
IGdldCBpdHMgb2Zmc2V0IGZyb20gYSByZWxpYWJsZSBzb3VyY2UuCisgICAgcmV0dXJuIEludFBv
aW50KDAsIDApOworfQorCitkb3VibGUgV2ViS2l0VGhyZWFkVmlld3BvcnRBY2Nlc3Nvcjo6c2Nh
bGUoKSBjb25zdAoreworICAgIEFTU0VSVChQbGF0Zm9ybTo6d2ViS2l0VGhyZWFkTWVzc2FnZUNs
aWVudCgpLT5pc0N1cnJlbnRUaHJlYWQoKSk7CisKKyAgICByZXR1cm4gbV93ZWJQYWdlUHJpdmF0
ZS0+Y3VycmVudFNjYWxlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorfSAvLyBuYW1l
c3BhY2UgQmxhY2tCZXJyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YktpdFN1cHBvcnQvV2ViS2l0VGhyZWFkVmlld3BvcnRBY2Nlc3Nvci5oIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvV2ViS2l0VGhyZWFkVmlld3BvcnRBY2Nlc3Nvci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmRhNTQ5M2ZkMzI5MzE4YTg2YWY5NDU2YTk4ODNlYmUxZDM1NTM1ZWIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9X
ZWJLaXRUaHJlYWRWaWV3cG9ydEFjY2Vzc29yLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqLworCisjaWZuZGVmIFdlYktpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3JfaAor
I2RlZmluZSBXZWJLaXRUaHJlYWRWaWV3cG9ydEFjY2Vzc29yX2gKKworI2luY2x1ZGUgPEJsYWNr
QmVycnlQbGF0Zm9ybVZpZXdwb3J0QWNjZXNzb3IuaD4KKworbmFtZXNwYWNlIEJsYWNrQmVycnkg
eworCituYW1lc3BhY2UgUGxhdGZvcm0geworY2xhc3MgSW50UG9pbnQ7CitjbGFzcyBJbnRTaXpl
OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByaXZhdGU7CisKK2Ns
YXNzIFdlYktpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3IgOiBwdWJsaWMgUGxhdGZvcm06OlZpZXdw
b3J0QWNjZXNzb3IgeworcHVibGljOgorICAgIFdlYktpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3Io
V2ViUGFnZVByaXZhdGUqKTsKKyAgICB2aXJ0dWFsIH5XZWJLaXRUaHJlYWRWaWV3cG9ydEFjY2Vz
c29yKCkgeyB9CisKKyAgICB2aXJ0dWFsIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpJbnRTaXplIGRv
Y3VtZW50Q29udGVudHNTaXplKCkgY29uc3Q7CisgICAgdmlydHVhbCBCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6SW50U2l6ZSBwaXhlbENvbnRlbnRzU2l6ZSgpIGNvbnN0OworCisgICAgdmlydHVhbCBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6SW50UG9pbnQgZG9jdW1lbnRTY3JvbGxQb3NpdGlvbigpIGNv
bnN0OworICAgIHZpcnR1YWwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkludFBvaW50IHBpeGVsU2Ny
b2xsUG9zaXRpb24oKSBjb25zdDsKKworICAgIHZpcnR1YWwgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OkludFNpemUgZG9jdW1lbnRWaWV3cG9ydFNpemUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpJbnRTaXplIHBpeGVsVmlld3BvcnRTaXplKCkgY29uc3Q7CisKKyAg
ICB2aXJ0dWFsIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpJbnRQb2ludCBkZXN0aW5hdGlvblN1cmZh
Y2VPZmZzZXQoKSBjb25zdDsKKworICAgIHZpcnR1YWwgZG91YmxlIHNjYWxlKCkgY29uc3Q7CisK
K3ByaXZhdGU6CisgICAgUGxhdGZvcm06OlZpZXdwb3J0QWNjZXNzb3IqIG1fb3JpZ2luYWxBY2Nl
c3NvcjsKKyAgICBXZWJQYWdlUHJpdmF0ZSogbV93ZWJQYWdlUHJpdmF0ZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorfSAvLyBuYW1lc3BhY2UgQmxhY2tCZXJyeQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168480</attachid>
            <date>2012-10-12 14:18:48 -0700</date>
            <delta_ts>2012-10-13 06:20:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98581-20121012171742.patch</filename>
            <type>text/plain</type>
            <size>53903</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGMyOWY4Yjk5YjBmOTc5MTU2
YWM0YTMxZjBhYjIwODRmZDhkMWMyNTEuLjZiNjM4N2UwZGEzYmEzMDQ2ODMxZjQ0YTRkYTZhZTUy
ZjgwYWJmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMTAtMTIgIEpha29iIFBl
dHNvdml0cyAgPGpwZXRzb3ZpdHNAcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gRmV0
Y2ggYmxpdCByZWN0cyBmcm9tIGEgdmlld3BvcnQgYWNjZXNzb3IKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NTgxCisgICAgICAgIFJJTSBQUiAxNzMy
OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgSW50ZXJu
YWxseSByZXZpZXdlZCBieSBBcnZpZCBOaWxzc29uLgorCisgICAgICAgIEFkZCBuZXcgVmlld3Bv
cnRBY2Nlc3NvciBmaWxlcyB0byB0aGUgYnVpbGQuCisgICAgICAgIFNlZSBTb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGZvciB0aGUKKyAgICAgICAgdmVyYm9zZSBjb21taXQgbWVz
c2FnZS4KKworICAgICAgICAqIFBsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZToKKwogMjAxMi0xMC0x
MiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEzMTE4OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdl
TG9nCmluZGV4IDkxZDkzZjQ0Yjg3YWQ3OGY5OGExNDM5OTk0MDhmYTBkNTUxZDRkYWMuLmYzYjVm
Y2Q0MzBjNmJiZjA5MjgzNjQ3ODc2Y2FjZGQ0ZTk2ODhlYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NiBAQAorMjAxMi0xMC0xMiAgSmFrb2IgUGV0c292aXRz
ICA8anBldHNvdml0c0ByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBGZXRjaCBibGl0
IHJlY3RzIGZyb20gYSB2aWV3cG9ydCBhY2Nlc3NvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg1ODEKKyAgICAgICAgUklNIFBSIDE3MzI5MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICBJbnRlcm5hbGx5IHJl
dmlld2VkIGJ5IEFydmlkIE5pbHNzb24uCisKKyAgICAgICAgVGhlIGxvbmctc3RhbmRpbmcgdXNl
ckludGVyZmFjZUJsaXR0ZWRWaXNpYmxlQ29udGVudHNSZWN0KCkKKyAgICAgICAgbWV0aG9kIGlu
IFdlYlBhZ2VDbGllbnQgaGFzIGxvbmcgYmVlbiBhIG1ham9yIGFubm95YW5jZSwKKyAgICAgICAg
YXMgaXQgcmV0dXJucyB0aGUgc291cmNlIHJlY3QgZm9yIFdlYktpdCBjb250ZW50cyBidXQgaW4K
KyAgICAgICAgYmFja2luZ3N0b3JlIHBpeGVsIGNvb3JkaW5hdGVzLiBUaGlzIG1ha2VzIGl0IG5v
dCBvbmx5CisgICAgICAgIHVud2llbGR5IGJ1dCBhbHNvIHRlcnJpYmx5IGZyYWdpbGUsIGVzcGVj
aWFsbHkgd2hlbgorICAgICAgICBib3RoIHBpbmNoIHpvb20gYW5kIGEgYmFja2luZ3N0b3JlIHJl
LXJlbmRlciBib3RoIGRlYWwKKyAgICAgICAgd2l0aCB0aGUgc2FtZSByZWN0YW5nbGUuIE9uIGRp
ZmZlcmVudCB0aHJlYWRzLCBldmVuLgorCisgICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtIG5v
dyBleHBvc2VzIGEgVmlld3BvcnRBY2Nlc3NvcgorICAgICAgICBpbnRlcmZhY2UsIHdoaWNoIGNh
biBiZSB1c2VkIHRvIGdldCB0aGUgdmFyaW91cyByZWN0cworICAgICAgICBpbiBkb2N1bWVudCBj
b29yZGluYXRlcyBvciB0YXJnZXQgcGl4ZWwgY29vcmRpbmF0ZXMsCisgICAgICAgIGJvdGggYmVp
bmcgYSBiZXR0ZXIgY2hvaWNlIHRoYW4gdGhlIG9uZXMgZGVwZW5kZW50CisgICAgICAgIG9uIGFu
IGltcGxlbnRhdGlvbiBkZXRhaWwuCisKKyAgICAgICAgVGhpcyBjb21taXQgbWFrZXMgdXNlIG9m
IHRoaXMgbmV3IGZ1bmN0aW9uYWxpdHkuCisgICAgICAgIEluc3RlYWQgb2YgcmVseWluZyBvbiB0
aGUgcGFzc2VkIHJlY3RhbmdsZSB0byBjb250YWluCisgICAgICAgIGltcGxpY2l0IGluZm9ybWF0
aW9uIGFib3V0IHRoZSBzY2FsZSBmYWN0b3IsIHdlIG5vdworICAgICAgICB0cmFjayB0aGUgc2Nh
bGUgb2YgZWFjaCBiYWNraW5nc3RvcmUgZ2VvbWV0cnkgYnkgbWFraW5nCisgICAgICAgIGEgc25h
cHNob3Qgb2YgdGhlIGN1cnJlbnQgV2ViS2l0LXRocmVhZCBzY2FsZSB3aGVuIHRoZQorICAgICAg
ICBnZW9tZXRyeSBpcyBnZW5lcmF0ZWQuIE9uY2UgdGhlIGdlb21ldHJ5IGlzIHN3YXBwZWQgdG8K
KyAgICAgICAgdGhlIGZyb250LCB3ZSBjYW4gdGhlbiBjYWxjdWxhdGUgdGhlIHJlbWFpbmluZwor
ICAgICAgICBiYWNraW5nc3RvcmUtdG8tdmlld3BvcnQgdHJhbnNmb3JtYXRpb24gaW4gYSB0aHJl
YWRzYWZlCisgICAgICAgIHdheS4gV2Ugbm93IG9ubHkgY2FsY3VsYXRlIHRoaXMgaWYgd2UgYWN0
dWFsbHkgYmxpdCBmcm9tCisgICAgICAgIGJhY2tpbmdzdG9yZSB0aWxlcyBhbmQgZG9uJ3QgZ28g
dGhyb3VnaCBhIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgb2YgcHVyZSBhY2NlbGVyYXRlZCBjb21w
b3NpdGluZy4KKworICAgICAgICBBcyBhIHJlc3VsdCwgd2UgYXJlIG5vdyBhIGxvdCBtb3JlIHJv
YnVzdCBhZ2FpbnN0CisgICAgICAgIHN5bmNob25pemF0aW9uIGlzc3VlcyByZWxhdGVkIHRvIGJh
Y2tpbmdzdG9yZQorICAgICAgICBnZW9tZXRyeSBjaGFuZ2VzLiBBcyBhbiBhZGRpdGlvbmFsIGdp
bW1pY2ssIHRoZSBzY2FsZQorICAgICAgICBpcyBhbHNvIHN0b3JlZCB3aXRoIGVhY2ggdGlsZSBi
dWZmZXIgdG8gZG91Ymx5IHNlY3VyZQorICAgICAgICB0aGF0IGEgdGlsZSByZW5kZXJlZCBpbiBv
bmUgc2NhbGUgaXMgbm90IHRyYW5zZmVycmVkCisgICAgICAgIHRvIGEgZGlmZmVyZW50IGdlb21l
dHJ5IGFuZCB0aGVuIHJlbmRlcmVkIHRoZXJlIHdpdGhvdXQKKyAgICAgICAgYmVpbmcgcmVyZW5k
ZXJlZCBhdCB0aGUgbmV3IHNjYWxlLCBldmVuIGlmIHRoZSByZW5kZXJlZAorICAgICAgICBwaXhl
bCBjb29yZGluYXRlcyBhcmUgc3RpbGwgdGhlIHNhbWUuCisKKyAgICAgICAgSGF2aW5nIHBlci1n
ZW9tZXRyeSBzY2FsZSBpbmZvcm1hdGlvbiBhbHNvIG9wZW5zIHVwCisgICAgICAgIG9wcG9ydHVu
aXRpZXMgdG8gZnVydGhlciBpbXByb3ZlIGJhY2tpbmdzdG9yZSByZW5kZXJpbmcKKyAgICAgICAg
bGF0ZXIuIEZvciBpbnN0YW5jZSwgd2UgY291bGQgcHJlLXJlbmRlciBhIGxvdy1yZXMKKyAgICAg
ICAgdmVyc2lvbiBvZiB0aGUgcGFnZSBvbnRvIG9uZSBidWZmZXIgYW5kIGNvbWJpbmUgdGhhdCBv
bmUKKyAgICAgICAgd2l0aCBhIGhpZ2hlci1yZXMgYXJyYXkgb2YgdGlsZXMgY292ZXJpbmcgYSBz
bWFsbGVyIGFyZWEuCisgICAgICAgIE9yIHdlIGNvdWxkIHN0ZWFsIHNvbWUgdGlsZXMgZnJvbSB0
aGUgZnJvbnQgZ2VvbWV0cnkgdG8KKyAgICAgICAgcmVuZGVyIHRoZW0gYXQgYSBuZXcgc2NhbGUg
d2hpbGUgYSBwaW5jaC16b29tIG9wZXJhdGlvbgorICAgICAgICBpcyBpbiBwcm9ncmVzcy4KKwor
ICAgICAgICBObyBzdWNoIHRoaW5nIGlzIGltcGxlbWVudGVkIGluIHRoaXMgcGF0Y2ggdGhvdWdo
LgorCisgICAgICAgIEluIGFkYXB0aW5nL2ZpeGluZyB0aGUgYmFja2luZ3N0b3JlIHZpc3VhbGl6
YXRpb24KKyAgICAgICAgZGVidWcgbW9kZSBhbmQgdGhlIGRlZmF1bHQgYmFja2dyb3VuZCBwYWlu
dGluZyBpbgorICAgICAgICByZW5kZXJEaXJlY3RUb1dpbmRvdygpLCB3ZSBhbHNvIGludHJvZHVj
ZSBuZXcKKyAgICAgICAgVmlld3BvcnRBY2Nlc3NvciBzdWJjbGFzc2VzIHRoYXQgY2FuIHN1YnNl
cXVlbnRseQorICAgICAgICBiZSB1c2VkIHRvIHJlcGxhY2UgbWV0aG9kcyBmcm9tIFdlYlBhZ2Ug
YW5kIGVsc2V3aGVyZS4KKworICAgICAgICAqIEFwaS9CYWNraW5nU3RvcmUuY3BwOgorICAgICAg
ICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpzbG93U2Nyb2xsKToK
KyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6c2Nyb2xs
KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6c2V0
QmFja2luZ1N0b3JlUmVjdCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdT
dG9yZVByaXZhdGU6OnNjcm9sbEJhY2tpbmdTdG9yZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpX
ZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OnJlbmRlckRpcmVjdFRvV2luZG93KToKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVuZGVyKToKKyAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6cGFpbnREZWZh
dWx0QmFja2dyb3VuZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9y
ZVByaXZhdGU6OmJsaXRWaXNpYmxlQ29udGVudHMpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2Vi
S2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpibGl0SG9yaXpvbnRhbFNjcm9sbGJhcik6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRWZXJ0aWNh
bFNjcm9sbGJhcik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVBy
aXZhdGU6OnVwZGF0ZVRpbGVzRm9yU2Nyb2xsT3JOb3RSZW5kZXJlZFJlZ2lvbik6CisgICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OnVwZGF0ZVRpbGVNYXRy
aXhJZk5lZWRlZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVBy
aXZhdGU6Om9yaWVudGF0aW9uQ2hhbmdlZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OkJhY2tpbmdTdG9yZVByaXZhdGU6OmNyZWF0ZVN1cmZhY2VzKToKKyAgICAgICAgKEJsYWNrQmVy
cnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6aW52YWxpZGF0ZVdpbmRvdyk6CisgICAg
ICAgICogQXBpL0JhY2tpbmdTdG9yZV9wLmg6CisgICAgICAgIChCbGFja0JlcnJ5KToKKyAgICAg
ICAgKFBsYXRmb3JtKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3Jl
R2VvbWV0cnk6OkJhY2tpbmdTdG9yZUdlb21ldHJ5KToKKyAgICAgICAgKEJsYWNrQmVycnk6Oldl
YktpdDo6QmFja2luZ1N0b3JlR2VvbWV0cnk6OnNjYWxlKToKKyAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6QmFja2luZ1N0b3JlR2VvbWV0cnk6OnNldFNjYWxlKToKKyAgICAgICAgKEJhY2tp
bmdTdG9yZUdlb21ldHJ5KToKKyAgICAgICAgKEJhY2tpbmdTdG9yZVByaXZhdGUpOgorICAgICAg
ICAqIEFwaS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFn
ZVByaXZhdGU6OldlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6
V2ViUGFnZVByaXZhdGU6On5XZWJQYWdlUHJpdmF0ZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpX
ZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjppbml0KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktp
dDo6V2ViUGFnZTo6d2Via2l0VGhyZWFkVmlld3BvcnRBY2Nlc3Nvcik6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAqIEFwaS9XZWJQYWdlLmg6CisgICAgICAgIChQbGF0Zm9ybSk6CisgICAg
ICAgICogQXBpL1dlYlBhZ2VDbGllbnQuaDoKKyAgICAgICAgKFBsYXRmb3JtKToKKyAgICAgICAg
KiBBcGkvV2ViUGFnZUNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OmFuaW1hdGlvbkZyYW1lQ2hhbmdlZCk6CisgICAg
ICAgICogQXBpL1dlYlBhZ2VfcC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlBh
Z2VQcml2YXRlKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0JhY2tpbmdTdG9yZVRpbGUuY3Bw
OgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpUaWxlQnVmZmVyOjpUaWxlQnVmZmVyKToK
KyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6VGlsZUJ1ZmZlcjo6aXNSZW5kZXJlZCk6Cisg
ICAgICAgICogV2ViS2l0U3VwcG9ydC9CYWNraW5nU3RvcmVUaWxlLmg6CisgICAgICAgIChUaWxl
QnVmZmVyKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6VGlsZUJ1ZmZlcjo6c2NhbGUp
OgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpUaWxlQnVmZmVyOjpzZXRTY2FsZSk6Cisg
ICAgICAgICogV2ViS2l0U3VwcG9ydC9CYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3BvcnRB
Y2Nlc3Nvci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEJsYWNrQmVy
cnk6OldlYktpdDo6QmFja2luZ1N0b3JlVmlzdWFsaXphdGlvblZpZXdwb3J0QWNjZXNzb3I6OkJh
Y2tpbmdTdG9yZVZpc3VhbGl6YXRpb25WaWV3cG9ydEFjY2Vzc29yKToKKyAgICAgICAgKEJsYWNr
QmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlVmlzdWFsaXphdGlvblZpZXdwb3J0QWNjZXNzb3I6
OnBpeGVsQ29udGVudHNTaXplKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2lu
Z1N0b3JlVmlzdWFsaXphdGlvblZpZXdwb3J0QWNjZXNzb3I6OmRvY3VtZW50Q29udGVudHNTaXpl
KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlVmlzdWFsaXphdGlv
blZpZXdwb3J0QWNjZXNzb3I6OnBpeGVsU2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoQmxhY2tC
ZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3BvcnRBY2Nlc3Nvcjo6
ZG9jdW1lbnRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJh
Y2tpbmdTdG9yZVZpc3VhbGl6YXRpb25WaWV3cG9ydEFjY2Vzc29yOjpwaXhlbFZpZXdwb3J0U2l6
ZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVZpc3VhbGl6YXRp
b25WaWV3cG9ydEFjY2Vzc29yOjpkb2N1bWVudFZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChCbGFj
a0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVZpc3VhbGl6YXRpb25WaWV3cG9ydEFjY2Vzc29y
OjpkZXN0aW5hdGlvblN1cmZhY2VPZmZzZXQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpCYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3BvcnRBY2Nlc3Nvcjo6c2NhbGUpOgorICAg
ICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3Bv
cnRBY2Nlc3Nvcjo6c3RhdGUpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvQmFja2luZ1N0b3Jl
VmlzdWFsaXphdGlvblZpZXdwb3J0QWNjZXNzb3IuaDogQWRkZWQuCisgICAgICAgIChCbGFja0Jl
cnJ5KToKKyAgICAgICAgKFBsYXRmb3JtKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChC
YWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3BvcnRBY2Nlc3Nvcik6CisgICAgICAgIChCbGFj
a0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVZpc3VhbGl6YXRpb25WaWV3cG9ydEFjY2Vzc29y
Ojp+QmFja2luZ1N0b3JlVmlzdWFsaXphdGlvblZpZXdwb3J0QWNjZXNzb3IpOgorICAgICAgICAq
IFdlYktpdFN1cHBvcnQvV2ViS2l0VGhyZWFkVmlld3BvcnRBY2Nlc3Nvci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViS2l0VGhy
ZWFkVmlld3BvcnRBY2Nlc3Nvcjo6V2ViS2l0VGhyZWFkVmlld3BvcnRBY2Nlc3Nvcik6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYktpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3I6OnBp
eGVsQ29udGVudHNTaXplKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViS2l0VGhy
ZWFkVmlld3BvcnRBY2Nlc3Nvcjo6ZG9jdW1lbnRDb250ZW50c1NpemUpOgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0OjpXZWJLaXRUaHJlYWRWaWV3cG9ydEFjY2Vzc29yOjpwaXhlbFNjcm9s
bFBvc2l0aW9uKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViS2l0VGhyZWFkVmll
d3BvcnRBY2Nlc3Nvcjo6ZG9jdW1lbnRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChCbGFja0Jl
cnJ5OjpXZWJLaXQ6OldlYktpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3I6OnBpeGVsVmlld3BvcnRT
aXplKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViS2l0VGhyZWFkVmlld3BvcnRB
Y2Nlc3Nvcjo6ZG9jdW1lbnRWaWV3cG9ydFNpemUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2Vi
S2l0OjpXZWJLaXRUaHJlYWRWaWV3cG9ydEFjY2Vzc29yOjpkZXN0aW5hdGlvblN1cmZhY2VPZmZz
ZXQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJLaXRUaHJlYWRWaWV3cG9ydEFj
Y2Vzc29yOjpzY2FsZSk6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9XZWJLaXRUaHJlYWRWaWV3
cG9ydEFjY2Vzc29yLmg6IEFkZGVkLgorICAgICAgICAoQmxhY2tCZXJyeSk6CisgICAgICAgIChQ
bGF0Zm9ybSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0VGhyZWFkVmlld3Bv
cnRBY2Nlc3Nvcik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYktpdFRocmVhZFZp
ZXdwb3J0QWNjZXNzb3I6On5XZWJLaXRUaHJlYWRWaWV3cG9ydEFjY2Vzc29yKToKKwogMjAxMi0x
MC0xMSAgUGV0ZXIgV2FuZyAgPHBldGVyLndhbmdAdG9yY2htb2JpbGUuY29tLmNuPgogCiAgICAg
ICAgIFtCbGFja0JlcnJ5XSBQYXVzZWQgaW4gSW5zcGVjdG9yLCBCcm93c2VyIGRvZXNuJ3QgZXhp
dCBjbGVhbmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtQmxhY2tCZXJyeS5j
bWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCmluZGV4IGY0OGZk
YmIwNTM4YzY5YjYxMWYyODczNjA4NjBlZjk1Yzg2NGJlN2YuLjc3YWUyNGI0NTVhNGRjMzk5MTkz
YjU2NDlkNjNkNzIxZWI4ZDJjYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1C
bGFja0JlcnJ5LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNt
YWtlCkBAIC0xMjUsNiArMTI1LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKICAgICBi
bGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQWJvdXREYXRhLmNwcAogICAgIGJsYWNrYmVycnkvV2Vi
S2l0U3VwcG9ydC9CYWNraW5nU3RvcmVUaWxlLmNwcAogICAgIGJsYWNrYmVycnkvV2ViS2l0U3Vw
cG9ydC9CYWNraW5nU3RvcmVDbGllbnQuY3BwCisgICAgYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0
L0JhY2tpbmdTdG9yZVZpc3VhbGl6YXRpb25WaWV3cG9ydEFjY2Vzc29yLmNwcAogICAgIGJsYWNr
YmVycnkvV2ViS2l0U3VwcG9ydC9EZWZhdWx0VGFwSGlnaGxpZ2h0LmNwcAogICAgIGJsYWNrYmVy
cnkvV2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcAogICAgIGJsYWNrYmVycnkvV2ViS2l0U3Vw
cG9ydC9GcmFtZUxheWVycy5jcHAKQEAgLTEzOCw2ICsxMzksNyBAQCBMSVNUKEFQUEVORCBXZWJL
aXRfU09VUkNFUwogICAgIGJsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9TdXJmYWNlUG9vbC5jcHAK
ICAgICBibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvVG91Y2hFdmVudEhhbmRsZXIuY3BwCiAgICAg
YmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0ZhdEZpbmdlcnMuY3BwCisgICAgYmxhY2tiZXJyeS9X
ZWJLaXRTdXBwb3J0L1dlYktpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3IuY3BwCiApCiAKIElGIChF
TkFCTEVfV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0Jh
Y2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9y
ZS5jcHAKaW5kZXggMDBiMjEyYWNjNGE4YmU4MjhhMGEyMDMyNTVhOGFjODM4NDdkOTk1Yy4uNDlk
M2NkYjE1NDc3NTZkZTViYzFjY2I4MThhZTA4YjRlODY0MTlkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlLmNwcApAQCAtMjEsNiArMjEsNyBAQAogCiAj
aW5jbHVkZSAiQmFja2luZ1N0b3JlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQmFja2luZ1N0b3JlVGls
ZS5oIgorI2luY2x1ZGUgIkJhY2tpbmdTdG9yZVZpc3VhbGl6YXRpb25WaWV3cG9ydEFjY2Vzc29y
LmgiCiAjaW5jbHVkZSAiQmFja2luZ1N0b3JlX3AuaCIKICNpbmNsdWRlICJGYXRGaW5nZXJzLmgi
CiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTQ1LDYgKzQ2LDcgQEAKICNpbmNsdWRlIDxCbGFja0Jl
cnJ5UGxhdGZvcm1NZXNzYWdlQ2xpZW50Lmg+CiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3Jt
U2NyZWVuLmg+CiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtU2V0dGluZ3MuaD4KKyNpbmNs
dWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1WaWV3cG9ydEFjY2Vzc29yLmg+CiAjaW5jbHVkZSA8Qmxh
Y2tCZXJyeVBsYXRmb3JtV2luZG93Lmg+CiAKICNpbmNsdWRlIDxTa0ltYWdlRGVjb2Rlci5oPgpA
QCAtNDEyLDYgKzQxNCw4IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVwYWludChjb25z
dCBQbGF0Zm9ybTo6SW50UmVjdCYgd2luZG93UmVjdCwKIAogdm9pZCBCYWNraW5nU3RvcmVQcml2
YXRlOjpzbG93U2Nyb2xsKGNvbnN0IFBsYXRmb3JtOjpJbnRTaXplJiBkZWx0YSwgY29uc3QgUGxh
dGZvcm06OkludFJlY3QmIHdpbmRvd1JlY3QsIGJvb2wgaW1tZWRpYXRlKQogeworICAgIEFTU0VS
VChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6d2ViS2l0VGhyZWFkTWVzc2FnZUNsaWVudCgpLT5pc0N1
cnJlbnRUaHJlYWQoKSk7CisKICNpZiBERUJVR19CQUNLSU5HU1RPUkUKICAgICAvLyBTdGFydCB0
aGUgdGltZSBtZWFzdXJlbWVudC4uLgogICAgIGRvdWJsZSB0aW1lID0gV1RGOjpjdXJyZW50VGlt
ZSgpOwpAQCAtNDQ1LDYgKzQ0OSw4IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6c2Nyb2xs
KGNvbnN0IFBsYXRmb3JtOjpJbnRTaXplJiBkZWx0YSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBzY3JvbGxWaWV3UmVjdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBjbGlw
UmVjdCkKIHsKKyAgICBBU1NFUlQoQmxhY2tCZXJyeTo6UGxhdGZvcm06OndlYktpdFRocmVhZE1l
c3NhZ2VDbGllbnQoKS0+aXNDdXJyZW50VGhyZWFkKCkpOworCiAgICAgLy8gSWYgd2UgYXJlIGRp
cmVjdCByZW5kZXJpbmcgdGhlbiB3ZSBhcmUgZm9yY2VkIHRvIGdvIGRvd24gdGhlIHNsb3cgcGF0
aAogICAgIC8vIHRvIHNjcm9sbGluZy4KICAgICBpZiAoc2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9X
aW5kb3coKSkgewpAQCAtNjgyLDcgKzY4OCw3IEBAIFBsYXRmb3JtOjpJbnRSZWN0IEJhY2tpbmdT
dG9yZVByaXZhdGU6OmJhY2tpbmdTdG9yZVJlY3RGb3JTY3JvbGwoaW50IGRlbHRhWCwgaW50CiAg
ICAgcmV0dXJuIGJhY2tpbmdTdG9yZVJlY3Q7CiB9CiAKLXZvaWQgQmFja2luZ1N0b3JlUHJpdmF0
ZTo6c2V0QmFja2luZ1N0b3JlUmVjdChjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgYmFja2luZ1N0
b3JlUmVjdCkKK3ZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6c2V0QmFja2luZ1N0b3JlUmVjdChj
b25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgYmFja2luZ1N0b3JlUmVjdCwgZG91YmxlIHNjYWxlKQog
ewogICAgIGlmICghbV93ZWJQYWdlLT5pc1Zpc2libGUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
NjkzLDggKzY5OSw5IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6c2V0QmFja2luZ1N0b3Jl
UmVjdChjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgYmFja2luZ1N0CiAgICAgfQogCiAgICAgUGxh
dGZvcm06OkludFJlY3QgY3VycmVudEJhY2tpbmdTdG9yZVJlY3QgPSBmcm9udFN0YXRlKCktPmJh
Y2tpbmdTdG9yZVJlY3QoKTsKKyAgICBkb3VibGUgY3VycmVudFNjYWxlID0gZnJvbnRTdGF0ZSgp
LT5zY2FsZSgpOwogCi0gICAgaWYgKGJhY2tpbmdTdG9yZVJlY3QgPT0gY3VycmVudEJhY2tpbmdT
dG9yZVJlY3QpCisgICAgaWYgKGJhY2tpbmdTdG9yZVJlY3QgPT0gY3VycmVudEJhY2tpbmdTdG9y
ZVJlY3QgJiYgc2NhbGUgPT0gY3VycmVudFNjYWxlKQogICAgICAgICByZXR1cm47CiAKICNpZiBE
RUJVR19USUxFTUFUUklYCkBAIC03NTcsNyArNzY0LDcgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2
YXRlOjpzZXRCYWNraW5nU3RvcmVSZWN0KGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBiYWNraW5n
U3QKICNlbmRpZgogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBNYXJr
IGFzIG5lZWRpbmcgdXBkYXRlLgotICAgICAgICAgICAgICAgIGlmICghdGlsZS0+ZnJvbnRCdWZm
ZXIoKS0+aXNSZW5kZXJlZCgpCisgICAgICAgICAgICAgICAgaWYgKCF0aWxlLT5mcm9udEJ1ZmZl
cigpLT5pc1JlbmRlcmVkKGN1cnJlbnRTdGF0ZS0+c2NhbGUoKSkKICAgICAgICAgICAgICAgICAg
ICAgJiYgIWlzQ3VycmVudFZpc2libGVKb2IobmV3SW5kZXgsIHRpbGUsIGJhY2tpbmdTdG9yZVJl
Y3QpKQogICAgICAgICAgICAgICAgICAgICB1cGRhdGVUaWxlKG9yaWdpbiwgZmFsc2UgLyppbW1l
ZGlhdGUqLyk7CiAgICAgICAgICAgICB9CkBAIC04MTAsNiArODE3LDcgQEAgdm9pZCBCYWNraW5n
U3RvcmVQcml2YXRlOjpzZXRCYWNraW5nU3RvcmVSZWN0KGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0
JiBiYWNraW5nU3QKICAgICAvLyBDaGVja3MgdG8gbWFrZSBzdXJlIHdlIGhhdmVuJ3QgbG9zdCBh
bnkgdGlsZXMuCiAgICAgQVNTRVJUKGN1cnJlbnRNYXAuc2l6ZSgpID09IG5ld1RpbGVNYXAuc2l6
ZSgpKTsKIAorICAgIGJhY2tTdGF0ZSgpLT5zZXRTY2FsZShzY2FsZSk7CiAgICAgYmFja1N0YXRl
KCktPnNldE51bWJlck9mVGlsZXNXaWRlKGJhY2tpbmdTdG9yZVJlY3Qud2lkdGgoKSAvIHRpbGVX
aWR0aCgpKTsKICAgICBiYWNrU3RhdGUoKS0+c2V0TnVtYmVyT2ZUaWxlc0hpZ2goYmFja2luZ1N0
b3JlUmVjdC5oZWlnaHQoKSAvIHRpbGVIZWlnaHQoKSk7CiAgICAgYmFja1N0YXRlKCktPnNldEJh
Y2tpbmdTdG9yZU9mZnNldChiYWNraW5nU3RvcmVSZWN0LmxvY2F0aW9uKCkpOwpAQCAtOTQwLDYg
Kzk0OCw4IEBAIGJvb2wgQmFja2luZ1N0b3JlUHJpdmF0ZTo6aXNDdXJyZW50VmlzaWJsZUpvYihj
b25zdCBUaWxlSW5kZXgmIGluZGV4LCBCYWNraW5nU3RvCiAKIHZvaWQgQmFja2luZ1N0b3JlUHJp
dmF0ZTo6c2Nyb2xsQmFja2luZ1N0b3JlKGludCBkZWx0YVgsIGludCBkZWx0YVkpCiB7CisgICAg
QVNTRVJUKEJsYWNrQmVycnk6OlBsYXRmb3JtOjp3ZWJLaXRUaHJlYWRNZXNzYWdlQ2xpZW50KCkt
PmlzQ3VycmVudFRocmVhZCgpKTsKKwogICAgIGlmICghbV93ZWJQYWdlLT5pc1Zpc2libGUoKSkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC05NzIsNyArOTgyLDcgQEAgdm9pZCBCYWNraW5nU3RvcmVQ
cml2YXRlOjpzY3JvbGxCYWNraW5nU3RvcmUoaW50IGRlbHRhWCwgaW50IGRlbHRhWSkKIAogICAg
IEFTU0VSVCghYmFja2luZ1N0b3JlUmVjdC5pc0VtcHR5KCkpOwogCi0gICAgc2V0QmFja2luZ1N0
b3JlUmVjdChiYWNraW5nU3RvcmVSZWN0KTsKKyAgICBzZXRCYWNraW5nU3RvcmVSZWN0KGJhY2tp
bmdTdG9yZVJlY3QsIG1fd2ViUGFnZS0+ZC0+Y3VycmVudFNjYWxlKCkpOwogfQogCiBib29sIEJh
Y2tpbmdTdG9yZVByaXZhdGU6OnJlbmRlckRpcmVjdFRvV2luZG93KGNvbnN0IFBsYXRmb3JtOjpJ
bnRSZWN0JiByZWN0KQpAQCAtOTg4LDcgKzk5OCw3IEBAIGJvb2wgQmFja2luZ1N0b3JlUHJpdmF0
ZTo6cmVuZGVyRGlyZWN0VG9XaW5kb3coY29uc3QgUGxhdGZvcm06OkludFJlY3QmIHJlY3QpCiAg
ICAgUGxhdGZvcm06OkludFJlY3Qgc2NyZWVuUmVjdCA9IG1fY2xpZW50LT5tYXBGcm9tVHJhbnNm
b3JtZWRDb250ZW50c1RvVHJhbnNmb3JtZWRWaWV3cG9ydChkaXJ0eVJlY3QpOwogICAgIHdpbmRv
d0Zyb250QnVmZmVyU3RhdGUoKS0+Y2xlYXJCbGl0dGVkUmVnaW9uKHNjcmVlblJlY3QpOwogCi0g
ICAgcGFpbnREZWZhdWx0QmFja2dyb3VuZChkaXJ0eVJlY3QsIFRyYW5zZm9ybWF0aW9uTWF0cml4
KCksIHRydWUgLypmbHVzaCovKTsKKyAgICBwYWludERlZmF1bHRCYWNrZ3JvdW5kKGRpcnR5UmVj
dCwgbV93ZWJQYWdlLT53ZWJraXRUaHJlYWRWaWV3cG9ydEFjY2Vzc29yKCksIHRydWUgLypmbHVz
aCovKTsKIAogICAgIGNvbnN0IFBsYXRmb3JtOjpJbnRQb2ludCBvcmlnaW4gPSB1bmNsaXBwZWRW
aXNpYmxlQ29udGVudHNSZWN0KCkubG9jYXRpb24oKTsKICAgICAvLyBXZSBkb24ndCBuZWVkIGEg
YnVmZmVyIHNpbmNlIHdlJ3JlIGRpcmVjdCByZW5kZXJpbmcgdG8gd2luZG93LgpAQCAtMTAzOSw2
ICsxMDQ5LDcgQEAgYm9vbCBCYWNraW5nU3RvcmVQcml2YXRlOjpyZW5kZXIoY29uc3QgUGxhdGZv
cm06OkludFJlY3QmIHJlY3QpCiAKICAgICBCYWNraW5nU3RvcmVHZW9tZXRyeSogY3VycmVudFN0
YXRlID0gZnJvbnRTdGF0ZSgpOwogICAgIFRpbGVNYXAgY3VycmVudE1hcCA9IGN1cnJlbnRTdGF0
ZS0+dGlsZU1hcCgpOworICAgIGRvdWJsZSBjdXJyZW50U2NhbGUgPSBjdXJyZW50U3RhdGUtPnNj
YWxlKCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRpbGVSZWN0TGlzdC5zaXplKCk7
ICsraSkgewogICAgICAgICBUaWxlUmVjdCB0aWxlUmVjdCA9IHRpbGVSZWN0TGlzdFtpXTsKQEAg
LTEwNTYsNiArMTA2Nyw4IEBAIGJvb2wgQmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVuZGVyKGNvbnN0
IFBsYXRmb3JtOjpJbnRSZWN0JiByZWN0KQogICAgICAgICBpZiAoIXRpbGUtPmJhY2tncm91bmRQ
YWludGVkKCkpCiAgICAgICAgICAgICB0aWxlLT5wYWludEJhY2tncm91bmQoKTsKIAorICAgICAg
ICB0aWxlLT5iYWNrQnVmZmVyKCktPnNldFNjYWxlKGN1cnJlbnRTY2FsZSk7CisKICAgICAgICAg
Ly8gUGFpbnQgZGVmYXVsdCBiYWNrZ3JvdW5kIGlmIGNvbnRlbnRzIHJlY3QgaXMgZW1wdHkuCiAg
ICAgICAgIGlmICghZXhwYW5kZWRDb250ZW50c1JlY3QoKS5pc0VtcHR5KCkpIHsKICAgICAgICAg
ICAgIC8vIE90aGVyd2lzZSB3ZSBzaG91bGQgY2xpcCB0aGUgY29udGVudHMgc2l6ZSBhbmQgcmVu
ZGVyIHRoZSBjb250ZW50LgpAQCAtMTEwMCw3ICsxMTEzLDcgQEAgYm9vbCBCYWNraW5nU3RvcmVQ
cml2YXRlOjpyZW5kZXIoY29uc3QgUGxhdGZvcm06OkludFJlY3QmIHJlY3QpCiAgICAgICAgIC8v
IHRoZSByZW5kZXJlZCByZWdpb24gb2YgdGhlIGJhY2sgYnVmZmVyIGNvbnRhaW5zIHRoZSByZW5k
ZXJlZCByZWdpb24gb2YgdGhlIGZyb250IGJ1ZmZlci4KICAgICAgICAgLy8gQXNzZXJ0IHRoaXMg
anVzdCB0byBtYWtlIHN1cmUuCiAgICAgICAgIC8vIEZvciBwcmV2aW91c2x5IHVuY29tbWl0dGVk
IHRpbGVzLCB0aGUgZnJvbnQgYnVmZmVyJ3MgcmVuZGVyZWQgcmVnaW9uIGlzIG5vdCByZWxldmFu
dC4KLSAgICAgICAgQVNTRVJUKCF3YXNDb21taXR0ZWQgfHwgdGlsZS0+YmFja0J1ZmZlcigpLT5p
c1JlbmRlcmVkKHRpbGUtPmZyb250QnVmZmVyKCktPnJlbmRlcmVkUmVnaW9uKCkpKTsKKyAgICAg
ICAgQVNTRVJUKCF3YXNDb21taXR0ZWQgfHwgdGlsZS0+YmFja0J1ZmZlcigpLT5pc1JlbmRlcmVk
KHRpbGUtPmZyb250QnVmZmVyKCktPnJlbmRlcmVkUmVnaW9uKCksIGN1cnJlbnRTY2FsZSkpOwog
CiAgICAgICAgIC8vIFdlIHdpbGwgbmVlZCBhIHN3YXAgaGVyZSBiZWNhdXNlIG9mIHRoZSBzaGFy
ZWQgYmFjayBidWZmZXIuCiAgICAgICAgIHRpbGUtPnN3YXBCdWZmZXJzKCk7CkBAIC0xMTcxLDMx
ICsxMTg0LDI3IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6Y29weVByZXZpb3VzQ29udGVu
dHNUb0JhY2tTdXJmYWNlT2ZUaWxlKGNvbnN0IFBsYXRmb3JtCiAgICAgfQogfQogCi12b2lkIEJh
Y2tpbmdTdG9yZVByaXZhdGU6OnBhaW50RGVmYXVsdEJhY2tncm91bmQoY29uc3QgUGxhdGZvcm06
OkludFJlY3QmIGNvbnRlbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zv
cm1hdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGZsdXNoKQordm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpwYWludERlZmF1bHRCYWNr
Z3JvdW5kKGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBkc3RSZWN0LCBQbGF0Zm9ybTo6Vmlld3Bv
cnRBY2Nlc3Nvciogdmlld3BvcnRBY2Nlc3NvciwgYm9vbCBmbHVzaCkKIHsKLSAgICBjb25zdCBQ
bGF0Zm9ybTo6SW50UmVjdCBjb250ZW50c1JlY3QgPSBQbGF0Zm9ybTo6SW50UmVjdChQbGF0Zm9y
bTo6SW50UG9pbnQoMCwgMCksIG1fd2ViUGFnZS0+ZC0+dHJhbnNmb3JtZWRDb250ZW50c1NpemUo
KSk7Ci0gICAgUGxhdGZvcm06OkludFBvaW50IG9yaWdpbiA9IGNvbnRlbnRzLmxvY2F0aW9uKCk7
Ci0gICAgUGxhdGZvcm06OkludFJlY3QgY29udGVudHNDbGlwcGVkID0gY29udGVudHM7CisgICAg
UGxhdGZvcm06OkludFJlY3QgY2xpcHBlZERzdFJlY3QgPSBkc3RSZWN0OworCisgICAgLy8gQmVj
YXVzZSBvZiByb3VuZGluZyBpdCBpcyBwb3NzaWJsZSB0aGF0IG92ZXJTY3JvbGxSZWN0IGNvdWxk
IGJlIG9mZi1ieS1vbmUgbGFyZ2VyCisgICAgLy8gdGhhbiB0aGUgc3VyZmFjZSBzaXplIG9mIHRo
ZSB3aW5kb3cuIFdlIHByZXZlbnQgdGhpcyBoZXJlLCBieSBjbGFtcGluZworICAgIC8vIGl0IHRv
IGVuc3VyZSB0aGF0IGNhbid0IGhhcHBlbi4KKyAgICBjbGlwcGVkRHN0UmVjdC5pbnRlcnNlY3Qo
UGxhdGZvcm06OkludFJlY3QoUGxhdGZvcm06OkludFBvaW50KDAsIDApLCBzdXJmYWNlU2l6ZSgp
KSk7CisKKyAgICBpZiAoY2xpcHBlZERzdFJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CiAKICAgICAvLyBXZSBoYXZlIHRvIHBhaW50IHRoZSBkZWZhdWx0IGJhY2tncm91bmQgaW4gdGhl
IGNhc2Ugb2Ygb3Zlcnpvb20gYW5kCiAgICAgLy8gbWFrZSBzdXJlIGl0IGlzIGludmFsaWRhdGVk
LgotICAgIFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uIG92ZXJTY3JvbGxSZWdpb24KLSAgICAgICAg
ICAgID0gUGxhdGZvcm06OkludFJlY3RSZWdpb246OnN1YnRyYWN0UmVnaW9ucyhQbGF0Zm9ybTo6
SW50UmVjdChjb250ZW50c0NsaXBwZWQpLCBjb250ZW50c1JlY3QpOworICAgIGNvbnN0IFBsYXRm
b3JtOjpJbnRSZWN0IHBpeGVsQ29udGVudHNSZWN0ID0gdmlld3BvcnRBY2Nlc3Nvci0+cGl4ZWxD
b250ZW50c1JlY3QoKTsKKyAgICBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbiBvdmVyU2Nyb2xsUmVn
aW9uID0gUGxhdGZvcm06OkludFJlY3RSZWdpb246OnN1YnRyYWN0UmVnaW9ucygKKyAgICAgICAg
ZHN0UmVjdCwgdmlld3BvcnRBY2Nlc3Nvci0+cGl4ZWxWaWV3cG9ydEZyb21Db250ZW50cyhwaXhl
bENvbnRlbnRzUmVjdCkpOwogCiAgICAgSW50UmVjdExpc3Qgb3ZlclNjcm9sbFJlY3RzID0gb3Zl
clNjcm9sbFJlZ2lvbi5yZWN0cygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3ZlclNj
cm9sbFJlY3RzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0IG92ZXJT
Y3JvbGxSZWN0ID0gb3ZlclNjcm9sbFJlY3RzLmF0KGkpOwotICAgICAgICBvdmVyU2Nyb2xsUmVj
dC5tb3ZlKC1vcmlnaW4ueCgpLCAtb3JpZ2luLnkoKSk7Ci0gICAgICAgIG92ZXJTY3JvbGxSZWN0
ID0gdHJhbnNmb3JtYXRpb24ubWFwUmVjdChvdmVyU2Nyb2xsUmVjdCk7Ci0KLSAgICAgICAgaWYg
KCF0cmFuc2Zvcm1hdGlvbi5pc0lkZW50aXR5KCkpIHsKLSAgICAgICAgICAgIC8vIEJlY2F1c2Ug
b2Ygcm91bmRpbmcgaXQgaXMgcG9zc2libGUgdGhhdCBvdmVyU2Nyb2xsUmVjdCBjb3VsZCBiZSBv
ZmYtYnktb25lIGxhcmdlcgotICAgICAgICAgICAgLy8gdGhhbiB0aGUgc3VyZmFjZSBzaXplIG9m
IHRoZSB3aW5kb3cuIFdlIHByZXZlbnQgdGhpcyBoZXJlLCBieSBjbGFtcGluZwotICAgICAgICAg
ICAgLy8gaXQgdG8gZW5zdXJlIHRoYXQgY2FuJ3QgaGFwcGVuLgotICAgICAgICAgICAgb3ZlclNj
cm9sbFJlY3QuaW50ZXJzZWN0KFBsYXRmb3JtOjpJbnRSZWN0KFBsYXRmb3JtOjpJbnRQb2ludCgw
LCAwKSwgc3VyZmFjZVNpemUoKSkpOwotICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fd2ViUGFn
ZS0+c2V0dGluZ3MoKS0+aXNFbmFibGVEZWZhdWx0T3ZlclNjcm9sbEJhY2tncm91bmQoKSkgewog
ICAgICAgICAgICAgZmlsbFdpbmRvdyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkRl
ZmF1bHRCYWNrZ3JvdW5kUGF0dGVybiwKQEAgLTEyNDksNjQgKzEyNTgsNzYgQEAgdm9pZCBCYWNr
aW5nU3RvcmVQcml2YXRlOjpibGl0VmlzaWJsZUNvbnRlbnRzKGJvb2wgZm9yY2UpCiAKICAgICBt
X2hhc0JsaXRKb2JzID0gZmFsc2U7CiAKLSAgICBjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCBkc3RS
ZWN0ID0gbV93ZWJQYWdlLT5jbGllbnQoKS0+dXNlckludGVyZmFjZUJsaXR0ZWREZXN0aW5hdGlv
blJlY3QoKTsKLSAgICBjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCBzcmNSZWN0ID0gbV93ZWJQYWdl
LT5jbGllbnQoKS0+dXNlckludGVyZmFjZUJsaXR0ZWRWaXNpYmxlQ29udGVudHNSZWN0KCk7Ci0g
ICAgY29uc3QgUGxhdGZvcm06OkludFJlY3QgY29udGVudHNSZWN0ID0gUGxhdGZvcm06OkludFJl
Y3QoUGxhdGZvcm06OkludFBvaW50KDAsIDApLCBtX2NsaWVudC0+dHJhbnNmb3JtZWRDb250ZW50
c1NpemUoKSk7CisgICAgUGxhdGZvcm06OlZpZXdwb3J0QWNjZXNzb3IqIHZpZXdwb3J0QWNjZXNz
b3IgPSBtX3dlYlBhZ2UtPmNsaWVudCgpLT51c2VySW50ZXJmYWNlVmlld3BvcnRBY2Nlc3Nvcigp
OworICAgIGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0IGRzdFJlY3QgPSB2aWV3cG9ydEFjY2Vzc29y
LT5kZXN0aW5hdGlvblN1cmZhY2VSZWN0KCk7CisKKyAgICBjb25zdCBQbGF0Zm9ybTo6SW50UmVj
dCBwaXhlbFZpZXdwb3J0UmVjdCA9IHZpZXdwb3J0QWNjZXNzb3ItPnBpeGVsVmlld3BvcnRSZWN0
KCk7CisgICAgY29uc3QgUGxhdGZvcm06OkZsb2F0UmVjdCBkb2N1bWVudFZpZXdwb3J0UmVjdCA9
IHZpZXdwb3J0QWNjZXNzb3ItPmRvY3VtZW50RnJvbVBpeGVsQ29udGVudHMocGl4ZWxWaWV3cG9y
dFJlY3QpOworICAgIFBsYXRmb3JtOjpJbnRSZWN0IHBpeGVsU3JjUmVjdCA9IHBpeGVsVmlld3Bv
cnRSZWN0OworICAgIFBsYXRmb3JtOjpGbG9hdFJlY3QgZG9jdW1lbnRTcmNSZWN0ID0gZG9jdW1l
bnRWaWV3cG9ydFJlY3Q7CiAKICNpZiBERUJVR19WSVNVQUxJWkUKLSAgICAvLyBTdWJzdGl0dXRl
IGEgZGVidWdSZWN0IHRoYXQgY29uc2lzdHMgb2YgdGhlIHVuaW9uIG9mIHRoZSBiYWNraW5nc3Rv
cmUgcmVjdAotICAgIC8vIGFuZCB0aGUgdWkgdGhyZWFkIHZpZXdwb3J0IHJlY3QgaW5zdGVhZCBv
ZiB0aGUgbm9ybWFsIHNvdXJjZSByZWN0IHNvIHdlCi0gICAgLy8gY2FuIHZpc3VhbGl6ZSB0aGUg
ZW50aXJlIGJhY2tpbmdzdG9yZSBhbmQgd2hhdCBpdCBpcyBkb2luZyB3aGVuIHdlCi0gICAgLy8g
c2Nyb2xsIGFuZCB6b29tIQotICAgIFBsYXRmb3JtOjpJbnRSZWN0IGRlYnVnUmVjdCA9IHVuaW9u
T2ZSZWN0cyhzcmNSZWN0LCBmcm9udFN0YXRlKCktPmJhY2tpbmdTdG9yZVJlY3QoKSk7Ci0gICAg
aWYgKGRlYnVnUmVjdC53aWR0aCgpIDwgZGVidWdSZWN0LmhlaWdodCgpKQotICAgICAgICBkZWJ1
Z1JlY3Quc2V0V2lkdGgoY2VpbChkb3VibGUoc3JjUmVjdC53aWR0aCgpKSAqIChkb3VibGUoZGVi
dWdSZWN0LmhlaWdodCgpKSAvIHNyY1JlY3QuaGVpZ2h0KCkpKSk7Ci0gICAgaWYgKGRlYnVnUmVj
dC5oZWlnaHQoKSA8IGRlYnVnUmVjdC53aWR0aCgpKQotICAgICAgICBkZWJ1Z1JlY3Quc2V0SGVp
Z2h0KGNlaWwoZG91YmxlKHNyY1JlY3QuaGVpZ2h0KCkpICogKGRvdWJsZShkZWJ1Z1JlY3Qud2lk
dGgoKSkgLyBzcmNSZWN0LndpZHRoKCkpKSk7Ci0gICAgUGxhdGZvcm06OkludFJlY3QgY29udGVu
dHMgPSBkZWJ1Z1JlY3Q7Ci0jZWxzZQotICAgIFBsYXRmb3JtOjpJbnRSZWN0IGNvbnRlbnRzID0g
c3JjUmVjdDsKKyAgICAvLyBTdWJzdGl0dXRlIGEgc3JjUmVjdCB0aGF0IGNvbnNpc3RzIG9mIHRo
ZSB3aG9sZSBiYWNraW5nc3RvcmUgZ2VvbWV0cnkKKyAgICAvLyBpbnN0ZWFkIG9mIHRoZSBub3Jt
YWwgdmlld3BvcnQgc28gd2UgY2FuIHZpc3VhbGl6ZSB0aGUgZW50aXJlCisgICAgLy8gYmFja2lu
Z3N0b3JlIGFuZCB3aGF0IGl0IGlzIGRvaW5nIHdoZW4gd2Ugc2Nyb2xsIGFuZCB6b29tIQorICAg
IFBsYXRmb3JtOjpWaWV3cG9ydEFjY2Vzc29yKiBkZWJ1Z1ZpZXdwb3J0QWNjZXNzb3IgPSBuZXcg
QmFja2luZ1N0b3JlVmlzdWFsaXphdGlvblZpZXdwb3J0QWNjZXNzb3Iodmlld3BvcnRBY2Nlc3Nv
ciwgdGhpcyk7CisgICAgaWYgKGlzQWN0aXZlKCkpIHsKKyAgICAgICAgdmlld3BvcnRBY2Nlc3Nv
ciA9IGRlYnVnVmlld3BvcnRBY2Nlc3NvcjsKKyAgICAgICAgZG9jdW1lbnRTcmNSZWN0ID0gZGVi
dWdWaWV3cG9ydEFjY2Vzc29yLT5kb2N1bWVudFZpZXdwb3J0UmVjdCgpOworICAgICAgICBwaXhl
bFNyY1JlY3QgPSBkZWJ1Z1ZpZXdwb3J0QWNjZXNzb3ItPnBpeGVsVmlld3BvcnRSZWN0KCk7Cisg
ICAgfQogI2VuZGlmCiAKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgbm90IGV4cGxpY2l0ZWx5
IGRlcGVuZCBvbiBXZWJDb3JlOjouCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3Jt
YXRpb247Ci0gICAgaWYgKCFjb250ZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHRyYW5zZm9ybWF0
aW9uID0gVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlY3RUb1JlY3QoRmxvYXRSZWN0KEZsb2F0UG9p
bnQoMC4wLCAwLjApLCBXZWJDb3JlOjpJbnRTaXplKGNvbnRlbnRzLnNpemUoKSkpLCBXZWJDb3Jl
OjpJbnRSZWN0KGRzdFJlY3QpKTsKLQogI2lmIERFQlVHX0JBQ0tJTkdTVE9SRQotICAgIEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpsb2coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsQ3JpdGlj
YWwsCi0gICAgICAgICJCYWNraW5nU3RvcmVQcml2YXRlOjpibGl0VmlzaWJsZUNvbnRlbnRzIGRz
dFJlY3Q9KCVkLCVkICVkeCVkKSBzcmNSZWN0PSglZCwlZCAlZHglZCkiLAorICAgIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpsb2dBbHdheXMoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsQ3Jp
dGljYWwsCisgICAgICAgICJCYWNraW5nU3RvcmVQcml2YXRlOjpibGl0VmlzaWJsZUNvbnRlbnRz
KCk6IGRzdFJlY3Q9KCVkLCVkKSAlZHglZCwgZG9jdW1lbnRTcmNSZWN0PSglZiwgJWYpICVmIHgg
JWYsIHNjYWxlPSVmIiwKICAgICAgICAgZHN0UmVjdC54KCksIGRzdFJlY3QueSgpLCBkc3RSZWN0
LndpZHRoKCksIGRzdFJlY3QuaGVpZ2h0KCksCi0gICAgICAgIHNyY1JlY3QueCgpLCBzcmNSZWN0
LnkoKSwgc3JjUmVjdC53aWR0aCgpLCBzcmNSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgZG9jdW1l
bnRTcmNSZWN0LngoKSwgZG9jdW1lbnRTcmNSZWN0LnkoKSwgZG9jdW1lbnRTcmNSZWN0LndpZHRo
KCksIGRvY3VtZW50U3JjUmVjdC5oZWlnaHQoKSwKKyAgICAgICAgdmlld3BvcnRBY2Nlc3Nvci0+
c2NhbGUoKSk7CiAjZW5kaWYKIAotICAgIFBsYXRmb3JtOjpJbnRQb2ludCBvcmlnaW4gPSBjb250
ZW50cy5sb2NhdGlvbigpOwotICAgIFBsYXRmb3JtOjpJbnRSZWN0IGNvbnRlbnRzQ2xpcHBlZCA9
IGNvbnRlbnRzOwotCiAgICAgVmVjdG9yPFRpbGVCdWZmZXIqPiBibGl0dGVkVGlsZXM7CiAKICAg
ICBpZiAoaXNBY3RpdmUoKSAmJiAhbV93ZWJQYWdlLT5kLT5jb21wb3NpdG9yRHJhd3NSb290TGF5
ZXIoKSkgewotICAgICAgICBwYWludERlZmF1bHRCYWNrZ3JvdW5kKGNvbnRlbnRzLCB0cmFuc2Zv
cm1hdGlvbiwgZmFsc2UgLypmbHVzaCovKTsKKyAgICAgICAgcGFpbnREZWZhdWx0QmFja2dyb3Vu
ZChkc3RSZWN0LCB2aWV3cG9ydEFjY2Vzc29yLCBmYWxzZSAvKmZsdXNoKi8pOwogCiAgICAgICAg
IEJhY2tpbmdTdG9yZUdlb21ldHJ5KiBjdXJyZW50U3RhdGUgPSBmcm9udFN0YXRlKCk7CiAgICAg
ICAgIFRpbGVNYXAgY3VycmVudE1hcCA9IGN1cnJlbnRTdGF0ZS0+dGlsZU1hcCgpOworICAgICAg
ICBkb3VibGUgY3VycmVudFNjYWxlID0gY3VycmVudFN0YXRlLT5zY2FsZSgpOworCisgICAgICAg
IGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0IHRyYW5zZm9ybWVkQ29udGVudHNSZWN0ID0gUGxhdGZv
cm06OkludFJlY3QoUGxhdGZvcm06OkludFBvaW50KDAsIDApLCBtX2NsaWVudC0+dHJhbnNmb3Jt
ZWRDb250ZW50c1NpemUoKSk7CisKKyAgICAgICAgLy8gRm9yIGJsaXR0aW5nIGJhY2tpbmdzdG9y
ZSB0aWxlcywgd2UgbmVlZCB0aGUgc3JjUmVjdCB0byBiZSBzcGVjaWZpZWQKKyAgICAgICAgLy8g
aW4gYmFja2luZ3N0b3JlIHRpbGUgcGl4ZWwgY29vcmRpbmF0ZXMuIElmIG91ciB2aWV3cG9ydCBh
Y2Nlc3NvciBpcworICAgICAgICAvLyAgYXQgYSBkaWZmZXJlbnQgc2NhbGUsIHdlIGNhbGN1bGF0
ZSB0aG9zZSBjb29yZGluYXRlcyBieSBvdXJzZWx2ZXMuCisgICAgICAgIGNvbnN0IFBsYXRmb3Jt
OjpJbnRSZWN0IHRyYW5zZm9ybWVkU3JjUmVjdCA9IGN1cnJlbnRTY2FsZSA9PSB2aWV3cG9ydEFj
Y2Vzc29yLT5zY2FsZSgpCisgICAgICAgICAgICA/IHBpeGVsU3JjUmVjdAorICAgICAgICAgICAg
OiB2aWV3cG9ydEFjY2Vzc29yLT5yb3VuZEZyb21Eb2N1bWVudENvbnRlbnRzKGRvY3VtZW50U3Jj
UmVjdCwgY3VycmVudFNjYWxlKTsKKworICAgICAgICBQbGF0Zm9ybTo6SW50UmVjdCBjbGlwcGVk
VHJhbnNmb3JtZWRTcmNSZWN0ID0gdHJhbnNmb3JtZWRTcmNSZWN0OworICAgICAgICBjb25zdCBQ
bGF0Zm9ybTo6SW50UG9pbnQgb3JpZ2luID0gdHJhbnNmb3JtZWRTcmNSZWN0LmxvY2F0aW9uKCk7
CisKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBleHBsaWNpdGx5IGRlcGVuZCBv
biBXZWJDb3JlOjouCisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybWF0aW9u
OworICAgICAgICBpZiAoIXRyYW5zZm9ybWVkU3JjUmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAg
ICB0cmFuc2Zvcm1hdGlvbiA9IFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0KEZsb2F0
UmVjdChGbG9hdFBvaW50KDAuMCwgMC4wKSwgV2ViQ29yZTo6SW50U2l6ZSh0cmFuc2Zvcm1lZFNy
Y1JlY3Quc2l6ZSgpKSksIFdlYkNvcmU6OkludFJlY3QoZHN0UmVjdCkpOwogCiAjaWYgREVCVUdf
Q0hFQ0tFUkJPQVJECiAgICAgICAgIGJvb2wgYmxpdENoZWNrZXJlZCA9IGZhbHNlOwogI2VuZGlm
CiAKICAgICAgICAgLy8gRG9uJ3QgY2xpcCB0byBjb250ZW50cyBpZiBpdCBpcyBlbXB0eSBzbyB3
ZSBjYW4gc3RpbGwgcGFpbnQgZGVmYXVsdCBiYWNrZ3JvdW5kLgotICAgICAgICBpZiAoIWNvbnRl
bnRzUmVjdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGNvbnRlbnRzQ2xpcHBlZC5pbnRlcnNl
Y3QoY29udGVudHNSZWN0KTsKLSAgICAgICAgICAgIGlmIChjb250ZW50c0NsaXBwZWQuaXNFbXB0
eSgpKSB7CisgICAgICAgIGlmICghdHJhbnNmb3JtZWRDb250ZW50c1JlY3QuaXNFbXB0eSgpKSB7
CisgICAgICAgICAgICBjbGlwcGVkVHJhbnNmb3JtZWRTcmNSZWN0LmludGVyc2VjdCh0cmFuc2Zv
cm1lZENvbnRlbnRzUmVjdCk7CisgICAgICAgICAgICBpZiAoY2xpcHBlZFRyYW5zZm9ybWVkU3Jj
UmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBpbnZhbGlkYXRlV2luZG93KGRzdFJl
Y3QpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgUGxhdGZvcm06OkludFJlY3RSZWdpb24gY29udGVudHNSZWdpb24gPSBjb250ZW50c0NsaXBw
ZWQ7CisgICAgICAgICAgICBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbiB0cmFuc2Zvcm1lZFNyY1Jl
Z2lvbiA9IGNsaXBwZWRUcmFuc2Zvcm1lZFNyY1JlY3Q7CiAgICAgICAgICAgICBQbGF0Zm9ybTo6
SW50UmVjdFJlZ2lvbiBiYWNraW5nU3RvcmVSZWdpb24gPSBjdXJyZW50U3RhdGUtPmJhY2tpbmdT
dG9yZVJlY3QoKTsKICAgICAgICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uIGNoZWNrZXJl
ZFJlZ2lvbgotICAgICAgICAgICAgICAgID0gUGxhdGZvcm06OkludFJlY3RSZWdpb246OnN1YnRy
YWN0UmVnaW9ucyhjb250ZW50c1JlZ2lvbiwgYmFja2luZ1N0b3JlUmVnaW9uKTsKKyAgICAgICAg
ICAgICAgICA9IFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uOjpzdWJ0cmFjdFJlZ2lvbnModHJhbnNm
b3JtZWRTcmNSZWdpb24sIGJhY2tpbmdTdG9yZVJlZ2lvbik7CiAKICAgICAgICAgICAgIC8vIEJs
aXQgY2hlY2tlcmVkIHRvIHRob3NlIHBhcnRzIHRoYXQgYXJlIG5vdCBjb3ZlcmVkIGJ5IHRoZSBi
YWNraW5nU3RvcmVSZWN0LgogICAgICAgICAgICAgSW50UmVjdExpc3QgY2hlY2tlcmVkUmVjdHMg
PSBjaGVja2VyZWRSZWdpb24ucmVjdHMoKTsKQEAgLTEzMjYsNyArMTM0Nyw3IEBAIHZvaWQgQmFj
a2luZ1N0b3JlUHJpdmF0ZTo6YmxpdFZpc2libGVDb250ZW50cyhib29sIGZvcmNlKQogICAgICAg
ICB9CiAKICAgICAgICAgLy8gR2V0IHRoZSBsaXN0IG9mIHRpbGUgcmVjdHMgdGhhdCBtYWtldXAg
dGhlIGNvbnRlbnQuCi0gICAgICAgIFRpbGVSZWN0TGlzdCB0aWxlUmVjdExpc3QgPSBtYXBGcm9t
VHJhbnNmb3JtZWRDb250ZW50c1RvVGlsZXMoY29udGVudHNDbGlwcGVkLCBjdXJyZW50U3RhdGUp
OworICAgICAgICBUaWxlUmVjdExpc3QgdGlsZVJlY3RMaXN0ID0gbWFwRnJvbVRyYW5zZm9ybWVk
Q29udGVudHNUb1RpbGVzKGNsaXBwZWRUcmFuc2Zvcm1lZFNyY1JlY3QsIGN1cnJlbnRTdGF0ZSk7
CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGlsZVJlY3RMaXN0LnNpemUoKTsgKytp
KSB7CiAgICAgICAgICAgICBUaWxlUmVjdCB0aWxlUmVjdCA9IHRpbGVSZWN0TGlzdFtpXTsKICAg
ICAgICAgICAgIFRpbGVJbmRleCBpbmRleCA9IHRpbGVSZWN0LmZpcnN0OwpAQCAtMTM0MCw5ICsx
MzYxLDkgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpibGl0VmlzaWJsZUNvbnRlbnRzKGJv
b2wgZm9yY2UpCiAgICAgICAgICAgICAgICAgPSBtYXBGcm9tVGlsZXNUb1RyYW5zZm9ybWVkQ29u
dGVudHModGlsZVJlY3QsIGN1cnJlbnRTdGF0ZS0+YmFja2luZ1N0b3JlUmVjdCgpKTsKIAogICAg
ICAgICAgICAgLy8gRG9uJ3QgY2xpcCB0byBjb250ZW50cyBpZiBpdCBpcyBlbXB0eSBzbyB3ZSBj
YW4gc3RpbGwgcGFpbnQgZGVmYXVsdCBiYWNrZ3JvdW5kLgotICAgICAgICAgICAgaWYgKCFjb250
ZW50c1JlY3QuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBpZiAoIXRyYW5zZm9ybWVkQ29udGVu
dHNSZWN0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSB3ZSBzaG91
bGQgY2xpcCB0aGUgY29udGVudHMgc2l6ZSBhbmQgYmxpdC4KLSAgICAgICAgICAgICAgICBkaXJ0
eVJlY3QuaW50ZXJzZWN0KGNvbnRlbnRzUmVjdCk7CisgICAgICAgICAgICAgICAgZGlydHlSZWN0
LmludGVyc2VjdCh0cmFuc2Zvcm1lZENvbnRlbnRzUmVjdCk7CiAKICAgICAgICAgICAgICAgICAv
LyBXZSBwcm9iYWJseSBoYXZlIGV4dHJhIHRpbGVzIHNpbmNlIHRoZSBjb250ZW50cyBzaXplIGlz
IHNvIHNtYWxsLgogICAgICAgICAgICAgICAgIC8vIFNhdmUgc29tZSBjeWNsZXMgaGVyZS4uLgpA
QCAtMTM2NCw3ICsxMzg1LDcgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpibGl0VmlzaWJs
ZUNvbnRlbnRzKGJvb2wgZm9yY2UpCiAgICAgICAgICAgICB3aG9sZVRpbGVSZWN0LnNlY29uZCA9
IHRoaXMtPnRpbGVSZWN0KCk7CiAKICAgICAgICAgICAgIGJvb2wgY29tbWl0dGVkID0gdGlsZS0+
aXNDb21taXR0ZWQoKTsKLSAgICAgICAgICAgIGJvb2wgcmVuZGVyZWQgPSB0aWxlQnVmZmVyLT5p
c1JlbmRlcmVkKGRpcnR5VGlsZVJlY3QpOworICAgICAgICAgICAgYm9vbCByZW5kZXJlZCA9IHRp
bGVCdWZmZXItPmlzUmVuZGVyZWQoZGlydHlUaWxlUmVjdCwgY3VycmVudFNjYWxlKTsKICAgICAg
ICAgICAgIGJvb2wgcGFpbnRDaGVja2VyZWQgPSAhY29tbWl0dGVkIHx8ICFyZW5kZXJlZDsKIAog
ICAgICAgICAgICAgaWYgKHBhaW50Q2hlY2tlcmVkKSB7CkBAIC0xNDUwLDQ3ICsxNDcxLDQxIEBA
IHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6YmxpdFZpc2libGVDb250ZW50cyhib29sIGZvcmNl
KQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGlmIChXZWJQYWdlQ29t
cG9zaXRvclByaXZhdGUqIGNvbXBvc2l0b3IgPSBtX3dlYlBhZ2UtPmQtPmNvbXBvc2l0b3IoKSkg
ewotICAgICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgY29udGVudHNSZWN0ID0gbV93ZWJQYWdlLT5k
LT5tYXBGcm9tVHJhbnNmb3JtZWRGbG9hdFJlY3QoV2ViQ29yZTo6RmxvYXRSZWN0KFdlYkNvcmU6
OkludFJlY3QoY29udGVudHMpKSk7Ci0gICAgICAgIGNvbXBvc2l0b3ItPmRyYXdMYXllcnMoZHN0
UmVjdCwgY29udGVudHNSZWN0KTsKKyAgICAgICAgY29tcG9zaXRvci0+ZHJhd0xheWVycyhkc3RS
ZWN0LCBkb2N1bWVudFNyY1JlY3QpOwogICAgICAgICBpZiAoY29tcG9zaXRvci0+ZHJhd3NSb290
TGF5ZXIoKSkKLSAgICAgICAgICAgIHBhaW50RGVmYXVsdEJhY2tncm91bmQoY29udGVudHMsIHRy
YW5zZm9ybWF0aW9uLCBmYWxzZSAvKmZsdXNoKi8pOworICAgICAgICAgICAgcGFpbnREZWZhdWx0
QmFja2dyb3VuZChkc3RSZWN0LCB2aWV3cG9ydEFjY2Vzc29yLCBmYWxzZSAvKmZsdXNoKi8pOwog
ICAgIH0KICNlbmRpZgogCiAjaWYgRU5BQkxFX1NDUk9MTEJBUlMKICAgICBpZiAoaXNTY3JvbGxp
bmdPclpvb21pbmcoKSAmJiBtX2NsaWVudC0+aXNNYWluRnJhbWUoKSkgewotICAgICAgICBibGl0
SG9yaXpvbnRhbFNjcm9sbGJhcihvcmlnaW4pOwotICAgICAgICBibGl0VmVydGljYWxTY3JvbGxi
YXIob3JpZ2luKTsKKyAgICAgICAgYmxpdEhvcml6b250YWxTY3JvbGxiYXIoKTsKKyAgICAgICAg
YmxpdFZlcnRpY2FsU2Nyb2xsYmFyKCk7CiAgICAgfQogI2VuZGlmCiAKICNpZiBERUJVR19WSVNV
QUxJWkUKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgbm90IGV4cGxpY2l0ZWx5IGRlcGVuZCBv
biBXZWJDb3JlOjouCi0gICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXIq
IHdpbmRvd0J1ZmZlciA9IGJ1ZmZlcigpOwotICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFw
aGljczo6RHJhd2FibGUqIGJ1ZmZlckRyYXdhYmxlID0KLSAgICAgICAgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkdyYXBoaWNzOjpsb2NrQnVmZmVyRHJhd2FibGUod2luZG93QnVmZmVyKTsKLSAgICBQ
bGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogYnVmZmVyUGxhdGZvcm1HcmFwaGljc0NvbnRleHQgPQot
ICAgICAgICBTdXJmYWNlUG9vbDo6Z2xvYmFsU3VyZmFjZVBvb2woKS0+Y3JlYXRlUGxhdGZvcm1H
cmFwaGljc0NvbnRleHQoYnVmZmVyRHJhd2FibGUpOwotICAgIEdyYXBoaWNzQ29udGV4dCBncmFw
aGljc0NvbnRleHQoYnVmZmVyUGxhdGZvcm1HcmFwaGljc0NvbnRleHQpOwotICAgIEZsb2F0UmVj
dCB3a1ZpZXdwb3J0ID0gRmxvYXRSZWN0KHZpc2libGVDb250ZW50c1JlY3QoKSk7Ci0gICAgRmxv
YXRSZWN0IHVpVmlld3BvcnQgPSBGbG9hdFJlY3Qoc3JjUmVjdCk7Ci0gICAgd2tWaWV3cG9ydC5t
b3ZlKC1jb250ZW50cy54KCksIC1jb250ZW50cy55KCkpOwotICAgIHVpVmlld3BvcnQubW92ZSgt
Y29udGVudHMueCgpLCAtY29udGVudHMueSgpKTsKLQotICAgIGdyYXBoaWNzQ29udGV4dC5zYXZl
KCk7Ci0KLSAgICAvLyBEcmF3IGEgYmx1ZSByZWN0IGZvciB0aGUgd2Via2l0IHRocmVhZCB2aWV3
cG9ydC4KLSAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlQ29sb3IoV2ViQ29yZTo6Q29sb3Io
MCwgMCwgMjU1KSwgV2ViQ29yZTo6Q29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgZ3JhcGhpY3ND
b250ZXh0LnN0cm9rZVJlY3QodHJhbnNmb3JtYXRpb24ubWFwUmVjdCh3a1ZpZXdwb3J0KSwgMS4w
KTsKLQotICAgIC8vIERyYXcgYSByZWQgcmVjdCBmb3IgdGhlIHVpIHRocmVhZCB2aWV3cG9ydC4K
LSAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlQ29sb3IoV2ViQ29yZTo6Q29sb3IoMjU1LCAw
LCAwKSwgV2ViQ29yZTo6Q29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgZ3JhcGhpY3NDb250ZXh0
LnN0cm9rZVJlY3QodHJhbnNmb3JtYXRpb24ubWFwUmVjdCh1aVZpZXdwb3J0KSwgMS4wKTsKLQot
ICAgIGdyYXBoaWNzQ29udGV4dC5yZXN0b3JlKCk7Ci0KLSAgICBkZWxldGUgYnVmZmVyUGxhdGZv
cm1HcmFwaGljc0NvbnRleHQ7Ci0gICAgcmVsZWFzZUJ1ZmZlckRyYXdhYmxlKHdpbmRvd0J1ZmZl
cik7CisgICAgaWYgKGRlYnVnVmlld3BvcnRBY2Nlc3NvcikgeworICAgICAgICBQbGF0Zm9ybTo6
R3JhcGhpY3M6OkJ1ZmZlciogdGFyZ2V0QnVmZmVyID0gYnVmZmVyKCk7CisgICAgICAgIFBsYXRm
b3JtOjpJbnRSZWN0IHdrVmlld3BvcnQgPSBkZWJ1Z1ZpZXdwb3J0QWNjZXNzb3ItPnJvdW5kVG9Q
aXhlbEZyb21Eb2N1bWVudENvbnRlbnRzKFBsYXRmb3JtOjpJbnRSZWN0KG1fY2xpZW50LT52aXNp
YmxlQ29udGVudHNSZWN0KCkpKTsKKyAgICAgICAgUGxhdGZvcm06OkludFJlY3QgdWlWaWV3cG9y
dCA9IGRlYnVnVmlld3BvcnRBY2Nlc3Nvci0+cm91bmRUb1BpeGVsRnJvbURvY3VtZW50Q29udGVu
dHMoZG9jdW1lbnRWaWV3cG9ydFJlY3QpOworICAgICAgICB3a1ZpZXdwb3J0Lm1vdmUoLXBpeGVs
U3JjUmVjdC54KCksIC1waXhlbFNyY1JlY3QueSgpKTsKKyAgICAgICAgdWlWaWV3cG9ydC5tb3Zl
KC1waXhlbFNyY1JlY3QueCgpLCAtcGl4ZWxTcmNSZWN0LnkoKSk7CisKKyAgICAgICAgLy8gRHJh
dyBhIGJsdWUgcmVjdCBmb3IgdGhlIHdlYmtpdCB0aHJlYWQgdmlld3BvcnQuCisgICAgICAgIFBs
YXRmb3JtOjpHcmFwaGljczo6Y2xlYXJCdWZmZXIodGFyZ2V0QnVmZmVyLCBQbGF0Zm9ybTo6SW50
UmVjdCh3a1ZpZXdwb3J0LngoKSwgd2tWaWV3cG9ydC55KCksIHdrVmlld3BvcnQud2lkdGgoKSwg
MSksIDAsIDAsIDI1NSwgMjU1KTsKKyAgICAgICAgUGxhdGZvcm06OkdyYXBoaWNzOjpjbGVhckJ1
ZmZlcih0YXJnZXRCdWZmZXIsIFBsYXRmb3JtOjpJbnRSZWN0KHdrVmlld3BvcnQueCgpLCB3a1Zp
ZXdwb3J0LnkoKSwgMSwgd2tWaWV3cG9ydC5oZWlnaHQoKSksIDAsIDAsIDI1NSwgMjU1KTsKKyAg
ICAgICAgUGxhdGZvcm06OkdyYXBoaWNzOjpjbGVhckJ1ZmZlcih0YXJnZXRCdWZmZXIsIFBsYXRm
b3JtOjpJbnRSZWN0KHdrVmlld3BvcnQueCgpLCB3a1ZpZXdwb3J0LmJvdHRvbSgpIC0gMSwgd2tW
aWV3cG9ydC53aWR0aCgpLCAxKSwgMCwgMCwgMjU1LCAyNTUpOworICAgICAgICBQbGF0Zm9ybTo6
R3JhcGhpY3M6OmNsZWFyQnVmZmVyKHRhcmdldEJ1ZmZlciwgUGxhdGZvcm06OkludFJlY3Qod2tW
aWV3cG9ydC5yaWdodCgpIC0gMSwgd2tWaWV3cG9ydC55KCksIDEsIHdrVmlld3BvcnQuaGVpZ2h0
KCkpLCAwLCAwLCAyNTUsIDI1NSk7CisKKyAgICAgICAgLy8gRHJhdyBhIHJlZCByZWN0IGZvciB0
aGUgdWkgdGhyZWFkIHZpZXdwb3J0LgorICAgICAgICBQbGF0Zm9ybTo6R3JhcGhpY3M6OmNsZWFy
QnVmZmVyKHRhcmdldEJ1ZmZlciwgUGxhdGZvcm06OkludFJlY3QodWlWaWV3cG9ydC54KCksIHVp
Vmlld3BvcnQueSgpLCB1aVZpZXdwb3J0LndpZHRoKCksIDEpLCAyNTUsIDAsIDAsIDI1NSk7Cisg
ICAgICAgIFBsYXRmb3JtOjpHcmFwaGljczo6Y2xlYXJCdWZmZXIodGFyZ2V0QnVmZmVyLCBQbGF0
Zm9ybTo6SW50UmVjdCh1aVZpZXdwb3J0LngoKSwgdWlWaWV3cG9ydC55KCksIDEsIHVpVmlld3Bv
cnQuaGVpZ2h0KCkpLCAyNTUsIDAsIDAsIDI1NSk7CisgICAgICAgIFBsYXRmb3JtOjpHcmFwaGlj
czo6Y2xlYXJCdWZmZXIodGFyZ2V0QnVmZmVyLCBQbGF0Zm9ybTo6SW50UmVjdCh1aVZpZXdwb3J0
LngoKSwgdWlWaWV3cG9ydC5ib3R0b20oKSAtIDEsIHVpVmlld3BvcnQud2lkdGgoKSwgMSksIDI1
NSwgMCwgMCwgMjU1KTsKKyAgICAgICAgUGxhdGZvcm06OkdyYXBoaWNzOjpjbGVhckJ1ZmZlcih0
YXJnZXRCdWZmZXIsIFBsYXRmb3JtOjpJbnRSZWN0KHVpVmlld3BvcnQucmlnaHQoKSAtIDEsIHVp
Vmlld3BvcnQueSgpLCAxLCB1aVZpZXdwb3J0LmhlaWdodCgpKSwgMjU1LCAwLCAwLCAyNTUpOwor
CisgICAgICAgIGRlbGV0ZSBkZWJ1Z1ZpZXdwb3J0QWNjZXNzb3I7CisgICAgfQogI2VuZGlmCiAK
ICNpZiBERUJVR19DSEVDS0VSQk9BUkQKQEAgLTE2MjIsNyArMTYzNyw3IEBAIFBsYXRmb3JtOjpJ
bnRSZWN0IEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRUaWxlUmVjdChUaWxlQnVmZmVyKiB0aWxl
QnVmZmVyLAogICAgIHJldHVybiBkaXJ0eVJlY3Q7CiB9CiAKLXZvaWQgQmFja2luZ1N0b3JlUHJp
dmF0ZTo6YmxpdEhvcml6b250YWxTY3JvbGxiYXIoY29uc3QgUGxhdGZvcm06OkludFBvaW50JiBz
Y3JvbGxQb3NpdGlvbikKK3ZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6YmxpdEhvcml6b250YWxT
Y3JvbGxiYXIoKQogewogICAgIGlmICghbV93ZWJQYWdlLT5pc1Zpc2libGUoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMTYzMCw3ICsxNjQ1LDcgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpi
bGl0SG9yaXpvbnRhbFNjcm9sbGJhcihjb25zdCBQbGF0Zm9ybTo6SW50UG9pbnQmIHNjcm8KICAg
ICBtX3dlYlBhZ2UtPmNsaWVudCgpLT5kcmF3SG9yaXpvbnRhbFNjcm9sbGJhcigpOwogfQogCi12
b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRWZXJ0aWNhbFNjcm9sbGJhcihjb25zdCBQbGF0
Zm9ybTo6SW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQordm9pZCBCYWNraW5nU3RvcmVQcml2YXRl
OjpibGl0VmVydGljYWxTY3JvbGxiYXIoKQogewogICAgIGlmICghbV93ZWJQYWdlLT5pc1Zpc2li
bGUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTc5MSw3ICsxODA2LDcgQEAgdm9pZCBCYWNraW5n
U3RvcmVQcml2YXRlOjp1cGRhdGVUaWxlc0ZvclNjcm9sbE9yTm90UmVuZGVyZWRSZWdpb24oYm9v
bCBjaGVja0xvYWQKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHVwZGF0ZVRpbGUoaW5kZXgs
IGZhbHNlIC8qaW1tZWRpYXRlKi8pOwogICAgICAgICB9IGVsc2UgaWYgKGlzVmlzaWJsZQotICAg
ICAgICAgICAgJiYgKGZvcmNlVmlzaWJsZSB8fCAhdGlsZS0+ZnJvbnRCdWZmZXIoKS0+aXNSZW5k
ZXJlZCh0aWxlVmlzaWJsZUNvbnRlbnRzUmVjdChpbmRleCkpKQorICAgICAgICAgICAgJiYgKGZv
cmNlVmlzaWJsZSB8fCAhdGlsZS0+ZnJvbnRCdWZmZXIoKS0+aXNSZW5kZXJlZCh0aWxlVmlzaWJs
ZUNvbnRlbnRzUmVjdChpbmRleCksIGN1cnJlbnRTdGF0ZS0+c2NhbGUoKSkpCiAgICAgICAgICAg
ICAmJiAhaXNDdXJyZW50VmlzaWJsZUpvYihpbmRleCwgdGlsZSwgYmFja2luZ1N0b3JlUmVjdCkp
CiAgICAgICAgICAgICB1cGRhdGVUaWxlKGluZGV4LCBmYWxzZSAvKmltbWVkaWF0ZSovKTsKICAg
ICB9CkBAIC0xOTI5LDYgKzE5NDQsOCBAQCBCYWNraW5nU3RvcmVQcml2YXRlOjpUaWxlUmVjdExp
c3QgQmFja2luZ1N0b3JlUHJpdmF0ZTo6bWFwRnJvbVRyYW5zZm9ybWVkQ29udGVudAogCiB2b2lk
IEJhY2tpbmdTdG9yZVByaXZhdGU6OnVwZGF0ZVRpbGVNYXRyaXhJZk5lZWRlZCgpCiB7CisgICAg
QVNTRVJUKEJsYWNrQmVycnk6OlBsYXRmb3JtOjp3ZWJLaXRUaHJlYWRNZXNzYWdlQ2xpZW50KCkt
PmlzQ3VycmVudFRocmVhZCgpKTsKKwogICAgIC8vIFRoaXMgd2lsbCB1cGRhdGUgdGhlIHRpbGUg
bWF0cml4LgogICAgIHNjcm9sbEJhY2tpbmdTdG9yZSgwLCAwKTsKIH0KQEAgLTIwMDIsNiArMjAx
OSw3IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6dHJhbnNmb3JtQ2hhbmdlZCgpCiAKIHZv
aWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6b3JpZW50YXRpb25DaGFuZ2VkKCkKIHsKKyAgICBBU1NF
UlQoQmxhY2tCZXJyeTo6UGxhdGZvcm06OndlYktpdFRocmVhZE1lc3NhZ2VDbGllbnQoKS0+aXND
dXJyZW50VGhyZWFkKCkpOwogICAgIHVwZGF0ZVRpbGVNYXRyaXhJZk5lZWRlZCgpOwogICAgIGNy
ZWF0ZVZpc2libGVUaWxlQnVmZmVyKCk7CiB9CkBAIC0yMDU1LDYgKzIwNzMsNyBAQCB2b2lkIEJh
Y2tpbmdTdG9yZVByaXZhdGU6OmNyZWF0ZVN1cmZhY2VzKCkKICAgICB9CiAKICAgICAvLyBTZXQg
dGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIGJhY2tpbmdzdG9yZSBnZW9tZXRyeS4KKyAgICBiYWNr
U3RhdGUoKS0+c2V0U2NhbGUobV93ZWJQYWdlLT5kLT5jdXJyZW50U2NhbGUoKSk7CiAgICAgYmFj
a1N0YXRlKCktPnNldE51bWJlck9mVGlsZXNXaWRlKGRpdmlzb3IuZmlyc3QpOwogICAgIGJhY2tT
dGF0ZSgpLT5zZXROdW1iZXJPZlRpbGVzSGlnaChkaXZpc29yLnNlY29uZCk7CiAgICAgYmFja1N0
YXRlKCktPnNldFRpbGVNYXAobmV3VGlsZU1hcCk7CkBAIC0yMzQ3LDcgKzIzNjYsNyBAQCB2b2lk
IEJhY2tpbmdTdG9yZVByaXZhdGU6OmludmFsaWRhdGVXaW5kb3coKQogewogICAgIC8vIEdyYWIg
YSByZWN0IGFwcHJvcHJpYXRlIGZvciB0aGUgY3VycmVudCB0aHJlYWQuCiAgICAgaWYgKEJsYWNr
QmVycnk6OlBsYXRmb3JtOjp1c2VySW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNsaWVudCgpLT5pc0N1
cnJlbnRUaHJlYWQoKSkKLSAgICAgICAgaW52YWxpZGF0ZVdpbmRvdyhtX3dlYlBhZ2UtPmNsaWVu
dCgpLT51c2VySW50ZXJmYWNlQmxpdHRlZERlc3RpbmF0aW9uUmVjdCgpKTsKKyAgICAgICAgaW52
YWxpZGF0ZVdpbmRvdyhtX3dlYlBhZ2UtPmNsaWVudCgpLT51c2VySW50ZXJmYWNlVmlld3BvcnRB
Y2Nlc3NvcigpLT5kZXN0aW5hdGlvblN1cmZhY2VSZWN0KCkpOwogICAgIGVsc2UKICAgICAgICAg
aW52YWxpZGF0ZVdpbmRvdyhQbGF0Zm9ybTo6SW50UmVjdChQbGF0Zm9ybTo6SW50UG9pbnQoMCwg
MCksIG1fY2xpZW50LT50cmFuc2Zvcm1lZFZpZXdwb3J0U2l6ZSgpKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZV9wLmggYi9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZV9wLmgKaW5kZXggYjZjZTQ0ZmY0NTQ2
ZGU2NjEwNGM5ZmUzM2ZiOTg2MTI2MjQ3NmE0Yy4uOGU1MmExMmFlZTg1NDNhNjdhNGMxMTc0NTE0
ZWYzM2ZlNGRlOWE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9C
YWNraW5nU3RvcmVfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2lu
Z1N0b3JlX3AuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIw
MTAsIDIwMTEgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIgUmVzZWFyY2ggSW4gTW90
aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAt
MzgsNiArMzgsMTEgQEAgY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiB9CiAKIG5hbWVzcGFj
ZSBCbGFja0JlcnJ5IHsKKworbmFtZXNwYWNlIFBsYXRmb3JtIHsKK2NsYXNzIFZpZXdwb3J0QWNj
ZXNzb3I7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBCYWNraW5nU3RvcmVUaWxl
OwpAQCAtNTEsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgQmFja2luZ1N0b3JlR2VvbWV0cnkoKQog
ICAgICAgICA6IG1fbnVtYmVyT2ZUaWxlc1dpZGUoMCkKICAgICAgICAgLCBtX251bWJlck9mVGls
ZXNIaWdoKDApCisgICAgICAgICwgbV9zY2FsZSgwLjApCiAgICAgewogICAgIH0KIApAQCAtNjcs
OSArNzMsMTMgQEAgcHVibGljOgogICAgIGNvbnN0IFRpbGVNYXAmIHRpbGVNYXAoKSBjb25zdCB7
IHJldHVybiBtX3RpbGVNYXA7IH0KICAgICB2b2lkIHNldFRpbGVNYXAoY29uc3QgVGlsZU1hcCYg
dGlsZU1hcCkgeyBtX3RpbGVNYXAgPSB0aWxlTWFwOyB9CiAKKyAgICBkb3VibGUgc2NhbGUoKSBj
b25zdCB7IHJldHVybiBtX3NjYWxlOyB9CisgICAgdm9pZCBzZXRTY2FsZShkb3VibGUgc2NhbGUp
IHsgbV9zY2FsZSA9IHNjYWxlOyB9CisKICAgcHJpdmF0ZToKICAgICBpbnQgbV9udW1iZXJPZlRp
bGVzV2lkZTsKICAgICBpbnQgbV9udW1iZXJPZlRpbGVzSGlnaDsKKyAgICBkb3VibGUgbV9zY2Fs
ZTsKICAgICBQbGF0Zm9ybTo6SW50UG9pbnQgbV9iYWNraW5nU3RvcmVPZmZzZXQ7CiAgICAgVGls
ZU1hcCBtX3RpbGVNYXA7CiB9OwpAQCAtMTU0LDcgKzE2NCw3IEBAIHB1YmxpYzoKICAgICBib29s
IGNhbk1vdmVEb3duKGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JikgY29uc3Q7CiAKICAgICBQbGF0
Zm9ybTo6SW50UmVjdCBiYWNraW5nU3RvcmVSZWN0Rm9yU2Nyb2xsKGludCBkZWx0YVgsIGludCBk
ZWx0YVksIGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JikgY29uc3Q7Ci0gICAgdm9pZCBzZXRCYWNr
aW5nU3RvcmVSZWN0KGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0Jik7CisgICAgdm9pZCBzZXRCYWNr
aW5nU3RvcmVSZWN0KGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiwgZG91YmxlIHNjYWxlKTsKIAog
ICAgIHR5cGVkZWYgV1RGOjpWZWN0b3I8VGlsZUluZGV4PiBUaWxlSW5kZXhMaXN0OwogICAgIFRp
bGVJbmRleExpc3QgaW5kZXhlc0ZvckJhY2tpbmdTdG9yZVJlY3QoY29uc3QgUGxhdGZvcm06Oklu
dFJlY3QmKSBjb25zdDsKQEAgLTE5Myw3ICsyMDMsNyBAQCBwdWJsaWM6CiAgICAgLy8gQXNzdW1l
cyB0aGUgcmVjdCB0byBiZSBpbiB3aW5kb3cvdmlld3BvcnQgY29vcmRpbmF0ZXMuCiAgICAgdm9p
ZCBjb3B5UHJldmlvdXNDb250ZW50c1RvQmFja1N1cmZhY2VPZldpbmRvdygpOwogICAgIHZvaWQg
Y29weVByZXZpb3VzQ29udGVudHNUb0JhY2tTdXJmYWNlT2ZUaWxlKGNvbnN0IFBsYXRmb3JtOjpJ
bnRSZWN0JiwgQmFja2luZ1N0b3JlVGlsZSopOwotICAgIHZvaWQgcGFpbnREZWZhdWx0QmFja2dy
b3VuZChjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgY29udGVudHMsIGNvbnN0IFdlYkNvcmU6OlRy
YW5zZm9ybWF0aW9uTWF0cml4JiwgYm9vbCBmbHVzaCk7CisgICAgdm9pZCBwYWludERlZmF1bHRC
YWNrZ3JvdW5kKGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBkc3RSZWN0LCBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6Vmlld3BvcnRBY2Nlc3NvciosIGJvb2wgZmx1c2gpOwogICAgIHZvaWQgYmxpdE9u
SWRsZSgpOwogCiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8VGlsZUluZGV4LCBQbGF0Zm9ybTo6SW50
UmVjdD4gVGlsZVJlY3Q7CkBAIC0yMTYsOCArMjI2LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0
RGlyZWN0UmVuZGVyaW5nQW5pbWF0aW9uTWVzc2FnZVNjaGVkdWxlZCgpIHsgbV9pc0RpcmVjdFJl
bmRlcmluZ0FuaW1hdGlvbk1lc3NhZ2VTY2hlZHVsZWQgPSB0cnVlOyB9CiAjZW5kaWYKIAotICAg
IHZvaWQgYmxpdEhvcml6b250YWxTY3JvbGxiYXIoY29uc3QgUGxhdGZvcm06OkludFBvaW50Jik7
Ci0gICAgdm9pZCBibGl0VmVydGljYWxTY3JvbGxiYXIoY29uc3QgUGxhdGZvcm06OkludFBvaW50
Jik7CisgICAgdm9pZCBibGl0SG9yaXpvbnRhbFNjcm9sbGJhcigpOworICAgIHZvaWQgYmxpdFZl
cnRpY2FsU2Nyb2xsYmFyKCk7CiAKICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIHRpbGUgaW5k
ZXggaXMgY3VycmVudGx5IHZpc2libGUgb3Igbm90LgogICAgIGJvb2wgaXNUaWxlVmlzaWJsZShj
b25zdCBUaWxlSW5kZXgmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9BcGkvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBh
Z2UuY3BwCmluZGV4IGFjMWI4YTRjNzhiOWJiMzAxMjE3MDZiNDA1ZWI3YmJlN2RkNGI5MDguLmNj
NjY1ODhkODJiODFjZjBiNzA1ODVmZjhhNzlkMjJmNTY3MjgyMTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcApAQCAtMTM3LDYgKzEzNyw3IEBACiAjaWYgRU5BQkxF
KFdFQkRPTSkKICNpbmNsdWRlICJXZWJET01Eb2N1bWVudC5oIgogI2VuZGlmCisjaW5jbHVkZSAi
V2ViS2l0VGhyZWFkVmlld3BvcnRBY2Nlc3Nvci5oIgogI2luY2x1ZGUgIldlYktpdFZlcnNpb24u
aCIKICNpbmNsdWRlICJXZWJPdmVybGF5LmgiCiAjaW5jbHVkZSAiV2ViT3ZlcmxheV9wLmgiCkBA
IC0zODgsNiArMzg5LDcgQEAgV2ViUGFnZVByaXZhdGU6OldlYlBhZ2VQcml2YXRlKFdlYlBhZ2Uq
IHdlYlBhZ2UsIFdlYlBhZ2VDbGllbnQqIGNsaWVudCwgY29uc3QgSW4KICAgICAsIG1fdHJhbnNm
b3JtYXRpb25NYXRyaXgobmV3IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpCiAgICAgLCBtX2JhY2tp
bmdTdG9yZSgwKSAvLyBJbml0aWFsaXplZCBieSBpbml0LgogICAgICwgbV9iYWNraW5nU3RvcmVD
bGllbnQoMCkgLy8gSW5pdGlhbGl6ZWQgYnkgaW5pdC4KKyAgICAsIG1fd2Via2l0VGhyZWFkVmll
d3BvcnRBY2Nlc3NvcigwKSAvLyBJbml0aWFsaXplZCBieSBpbml0LgogICAgICwgbV9pblBhZ2VT
ZWFyY2hNYW5hZ2VyKG5ldyBJblBhZ2VTZWFyY2hNYW5hZ2VyKHRoaXMpKQogICAgICwgbV9pbnB1
dEhhbmRsZXIobmV3IElucHV0SGFuZGxlcih0aGlzKSkKICAgICAsIG1fc2VsZWN0aW9uSGFuZGxl
cihuZXcgU2VsZWN0aW9uSGFuZGxlcih0aGlzKSkKQEAgLTQ2Miw2ICs0NjQsOSBAQCBXZWJQYWdl
UHJpdmF0ZTo6fldlYlBhZ2VQcml2YXRlKCkKICAgICBkZWxldGUgbV9jb29raWVKYXI7CiAgICAg
bV9jb29raWVKYXIgPSAwOwogCisgICAgZGVsZXRlIG1fd2Via2l0VGhyZWFkVmlld3BvcnRBY2Nl
c3NvcjsKKyAgICBtX3dlYmtpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3IgPSAwOworCiAgICAgZGVs
ZXRlIG1fYmFja2luZ1N0b3JlQ2xpZW50OwogICAgIG1fYmFja2luZ1N0b3JlQ2xpZW50ID0gMDsK
ICAgICBtX2JhY2tpbmdTdG9yZSA9IDA7CkBAIC02MjMsNiArNjI4LDggQEAgdm9pZCBXZWJQYWdl
UHJpdmF0ZTo6aW5pdChjb25zdCBXZWJTdHJpbmcmIHBhZ2VHcm91cE5hbWUpCiAgICAgLy8gaXMg
b3duZWQgYnkgQmFja2luZ1N0b3JlQ2xpZW50IGFuZCB0aGVuIGRlbGV0ZWQgYnkgaXRzIGRlc3Ry
dWN0b3IuCiAgICAgbV9iYWNraW5nU3RvcmUgPSBtX2JhY2tpbmdTdG9yZUNsaWVudC0+YmFja2lu
Z1N0b3JlKCk7CiAKKyAgICBtX3dlYmtpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3IgPSBuZXcgV2Vi
S2l0VGhyZWFkVmlld3BvcnRBY2Nlc3Nvcih0aGlzKTsKKwogICAgIGJsb2NrQ2xpY2tSYWRpdXMg
PSBpbnQocm91bmRmKDAuMzUgKiBQbGF0Zm9ybTo6R3JhcGhpY3M6OlNjcmVlbjo6cHJpbWFyeVNj
cmVlbigpLT5waXhlbHNQZXJJbmNoKDApLndpZHRoKCkpKTsgLy8gVGhlIGNsaWNrZWQgcmVjdGFu
Z2xlIGFyZWEgc2hvdWxkIGJlIGEgZml4ZWQgdW5pdCBvZiBtZWFzdXJlbWVudC4KIAogICAgIG1f
cGFnZS0+c2V0dGluZ3MoKS0+c2V0RGVsZWdhdGVTZWxlY3Rpb25QYWludCh0cnVlKTsKQEAgLTE4
MTUsNiArMTgyMiwxMSBAQCBJbnRTaXplIFdlYlBhZ2VQcml2YXRlOjp0cmFuc2Zvcm1lZEFjdHVh
bFZpc2libGVTaXplKCkgY29uc3QKICAgICByZXR1cm4gSW50U2l6ZShtX2FjdHVhbFZpc2libGVX
aWR0aCwgbV9hY3R1YWxWaXNpYmxlSGVpZ2h0KTsKIH0KIAorUGxhdGZvcm06OlZpZXdwb3J0QWNj
ZXNzb3IqIFdlYlBhZ2U6OndlYmtpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3IoKSBjb25zdAorewor
ICAgIHJldHVybiBkLT5tX3dlYmtpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3I7Cit9CisKIFBsYXRm
b3JtOjpJbnRTaXplIFdlYlBhZ2U6OnZpZXdwb3J0U2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGQtPnRyYW5zZm9ybWVkQWN0dWFsVmlzaWJsZVNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0FwaS9XZWJQYWdlLmgKaW5kZXggZWJmNzczN2QxMzVlYWU4N2M3NDgyZjhjYTJjNjkzMGI0ZGQ3
N2VjNS4uMGNiNzZlMTJkZjcyNDEyNjliYTEzY2VkNTc5MTM5ZjJmNzc1ZjhkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmgKQEAgLTU3LDYgKzU3LDcgQEAgY2xhc3MgS2V5
Ym9hcmRFdmVudDsKIGNsYXNzIE1vdXNlRXZlbnQ7CiBjbGFzcyBUb3VjaEV2ZW50OwogY2xhc3Mg
VG91Y2hQb2ludDsKK2NsYXNzIFZpZXdwb3J0QWNjZXNzb3I7CiB9CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtMTM3LDYgKzEzOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhhc1BlbmRpbmdT
dXJmYWNlU2l6ZUNoYW5nZSgpOwogICAgIHZvaWQgYXBwbHlQZW5kaW5nT3JpZW50YXRpb25JZk5l
ZWRlZCgpOwogCisgICAgUGxhdGZvcm06OlZpZXdwb3J0QWNjZXNzb3IqIHdlYmtpdFRocmVhZFZp
ZXdwb3J0QWNjZXNzb3IoKSBjb25zdDsKICAgICBQbGF0Zm9ybTo6SW50U2l6ZSB2aWV3cG9ydFNp
emUoKSBjb25zdDsKICAgICB2b2lkIHNldFZpZXdwb3J0U2l6ZShjb25zdCBQbGF0Zm9ybTo6SW50
U2l6ZSYgdmlld3BvcnRTaXplLCBib29sIGVuc3VyZUZvY3VzRWxlbWVudFZpc2libGUgPSB0cnVl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDbGllbnQuaAppbmRl
eCBiYmIzZGMzYjkwMDRkOTI2MGFiOWNlMGFiYzhkZDA4MjgzN2Y2MmEwLi5lOWVkNTJlNjM1MDM5
ZWE0YzMxYTg3NGYxMTU2MjQ4MzhjYWQ0NjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQXBpL1dlYlBhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQXBpL1dlYlBhZ2VDbGllbnQuaApAQCAtNDMsNiArNDMsNyBAQCBjbGFzcyBHZW9UcmFja2Vy
TGlzdGVuZXI7CiBjbGFzcyBJbnRSZWN0UmVnaW9uOwogY2xhc3MgTmV0d29ya1JlcXVlc3Q7CiBj
bGFzcyBOZXR3b3JrU3RyZWFtRmFjdG9yeTsKK2NsYXNzIFZpZXdwb3J0QWNjZXNzb3I7CiBjbGFz
cyBXZWJVc2VyTWVkaWFSZXF1ZXN0OwogCiBuYW1lc3BhY2UgR3JhcGhpY3MgewpAQCAtMjAzLDgg
KzIwNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbmVlZE1vcmVEYXRhKCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVXZWJJbnNwZWN0b3JNZXNzYWdlVG9Gcm9udGVuZChpbnQg
aWQsIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIGludCBsZW5ndGgpID0gMDsKIAotICAgIHZpcnR1YWwg
UGxhdGZvcm06OkludFJlY3QgdXNlckludGVyZmFjZUJsaXR0ZWREZXN0aW5hdGlvblJlY3QoKSBj
b25zdCA9IDA7Ci0gICAgdmlydHVhbCBQbGF0Zm9ybTo6SW50UmVjdCB1c2VySW50ZXJmYWNlQmxp
dHRlZFZpc2libGVDb250ZW50c1JlY3QoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6Vmlld3BvcnRBY2Nlc3NvciogdXNlckludGVyZmFjZVZpZXdwb3J0QWNj
ZXNzb3IoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRCaXRtYXBab29tU2Nh
bGUoZG91YmxlIHNjYWxlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGVCbG9ja1pvb20o
Y29uc3QgUGxhdGZvcm06OkZsb2F0UG9pbnQmIGZpbmFsUG9pbnQsIGRvdWJsZSBmaW5hbFNjYWxl
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VD
b21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBv
c2l0b3IuY3BwCmluZGV4IDQ2YjUwODJlZjJmZjQ2MTg3MzNmYzA1M2ZkYzg5ODJiODVkMmU0MTMu
LmZhNjIyZGE0MTBiYjAzNWI5ZGNlNmM1MTI2NTdjNGE5NjYzYzE1NGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3IuY3BwCkBAIC0zMiw2
ICszMiw3IEBACiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtRXhlY3V0YWJsZU1lc3NhZ2Uu
aD4KICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1NZXNzYWdlLmg+CiAjaW5jbHVkZSA8Qmxh
Y2tCZXJyeVBsYXRmb3JtTWVzc2FnZUNsaWVudC5oPgorI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0
Zm9ybVZpZXdwb3J0QWNjZXNzb3IuaD4KICNpbmNsdWRlIDxHZW5lcmljVGltZXJDbGllbnQuaD4K
ICNpbmNsdWRlIDxUaHJlYWRUaW1lckNsaWVudC5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgpAQCAtMjIzLDggKzIyNCwxMSBAQCB2b2lkIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6
YW5pbWF0aW9uRnJhbWVDaGFuZ2VkKCkKIHsKICAgICBCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9y
ZSA9IG1fd2ViUGFnZS0+bV9iYWNraW5nU3RvcmU7CiAgICAgaWYgKCFiYWNraW5nU3RvcmUpIHsK
LSAgICAgICAgZHJhd0xheWVycyhtX3dlYlBhZ2UtPmNsaWVudCgpLT51c2VySW50ZXJmYWNlQmxp
dHRlZERlc3RpbmF0aW9uUmVjdCgpLAotICAgICAgICAgICAgICAgICAgIEludFJlY3QobV93ZWJQ
YWdlLT5jbGllbnQoKS0+dXNlckludGVyZmFjZUJsaXR0ZWRWaXNpYmxlQ29udGVudHNSZWN0KCkp
KTsKKyAgICAgICAgUGxhdGZvcm06OlZpZXdwb3J0QWNjZXNzb3IqIHZpZXdwb3J0QWNjZXNzb3Ig
PSBtX3dlYlBhZ2UtPmNsaWVudCgpLT51c2VySW50ZXJmYWNlVmlld3BvcnRBY2Nlc3NvcigpOwor
ICAgICAgICBjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCBkc3RSZWN0ID0gdmlld3BvcnRBY2Nlc3Nv
ci0+ZGVzdGluYXRpb25TdXJmYWNlUmVjdCgpOworICAgICAgICBjb25zdCBQbGF0Zm9ybTo6Rmxv
YXRSZWN0IHNyY1JlY3QgPSB2aWV3cG9ydEFjY2Vzc29yLT5kb2N1bWVudFZpZXdwb3J0UmVjdCgp
OworCisgICAgICAgIGRyYXdMYXllcnMoZHN0UmVjdCwgc3JjUmVjdCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2Vi
UGFnZV9wLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5oCmluZGV4
IDY1OWRhYWJjMmJhZTY3YjQ0MmRjYTE4ZTAxY2ViMzM4YjBjMmY3NjAuLjkwYWY4ZWM3NDEzODUw
ODM1M2Q1MGU0MmM0ODAyMDVjNTE3MzNiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0Fw
aS9XZWJQYWdlX3AuaApAQCAtNzksNiArNzksNyBAQCBjbGFzcyBTZWxlY3Rpb25IYW5kbGVyOwog
Y2xhc3MgVG91Y2hFdmVudEhhbmRsZXI7CiBjbGFzcyBXZWJDb29raWVKYXI7CiBjbGFzcyBXZWJQ
YWdlQ2xpZW50OworY2xhc3MgV2ViS2l0VGhyZWFkVmlld3BvcnRBY2Nlc3NvcjsKIAogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIGNsYXNzIEZyYW1lTGF5ZXJzOwpAQCAtNTA5LDYg
KzUxMCw3IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCogbV90
cmFuc2Zvcm1hdGlvbk1hdHJpeDsKICAgICBCYWNraW5nU3RvcmUqIG1fYmFja2luZ1N0b3JlOwog
ICAgIEJhY2tpbmdTdG9yZUNsaWVudCogbV9iYWNraW5nU3RvcmVDbGllbnQ7CisgICAgV2ViS2l0
VGhyZWFkVmlld3BvcnRBY2Nlc3NvciogbV93ZWJraXRUaHJlYWRWaWV3cG9ydEFjY2Vzc29yOwog
ICAgIEluUGFnZVNlYXJjaE1hbmFnZXIqIG1faW5QYWdlU2VhcmNoTWFuYWdlcjsKICAgICBJbnB1
dEhhbmRsZXIqIG1faW5wdXRIYW5kbGVyOwogICAgIFNlbGVjdGlvbkhhbmRsZXIqIG1fc2VsZWN0
aW9uSGFuZGxlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRT
dXBwb3J0L0JhY2tpbmdTdG9yZVRpbGUuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YktpdFN1cHBvcnQvQmFja2luZ1N0b3JlVGlsZS5jcHAKaW5kZXggMjYyZmJlZmYyMjFkMWYzNGUy
YjIxNDQ0NjY2NmVkN2E2NTRkY2UwMy4uYmViYzgyNjFlNjY4MzU0YTQzMmI0ZTU4NzBmODhlMTg5
ZWU1NGM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBv
cnQvQmFja2luZ1N0b3JlVGlsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YktpdFN1cHBvcnQvQmFja2luZ1N0b3JlVGlsZS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAgVGlsZUJ1
ZmZlcjo6VGlsZUJ1ZmZlcihjb25zdCBQbGF0Zm9ybTo6SW50U2l6ZSYgc2l6ZSkKICAgICA6IG1f
c2l6ZShzaXplKQogICAgICwgbV9mZW5jZShGZW5jZTo6Y3JlYXRlKCkpCiAgICAgLCBtX2J1ZmZl
cigwKQorICAgICwgbV9zY2FsZSgxLjApCiB7CiB9CiAKQEAgLTU1LDE0ICs1NiwxNCBAQCBQbGF0
Zm9ybTo6SW50UmVjdCBUaWxlQnVmZmVyOjpyZWN0KCkgY29uc3QKICAgICByZXR1cm4gUGxhdGZv
cm06OkludFJlY3QoUGxhdGZvcm06OkludFBvaW50Ojp6ZXJvKCksIG1fc2l6ZSk7CiB9CiAKLWJv
b2wgVGlsZUJ1ZmZlcjo6aXNSZW5kZXJlZCgpIGNvbnN0Citib29sIFRpbGVCdWZmZXI6OmlzUmVu
ZGVyZWQoZG91YmxlIHNjYWxlKSBjb25zdAogewotICAgIHJldHVybiBpc1JlbmRlcmVkKHJlY3Qo
KSk7CisgICAgcmV0dXJuIGlzUmVuZGVyZWQocmVjdCgpLCBzY2FsZSk7CiB9CiAKLWJvb2wgVGls
ZUJ1ZmZlcjo6aXNSZW5kZXJlZChjb25zdCBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbiYgY29udGVu
dHMpIGNvbnN0Citib29sIFRpbGVCdWZmZXI6OmlzUmVuZGVyZWQoY29uc3QgUGxhdGZvcm06Oklu
dFJlY3RSZWdpb24mIGNvbnRlbnRzLCBkb3VibGUgc2NhbGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uOjpzdWJ0cmFjdFJlZ2lvbnMoY29udGVudHMsIG1fcmVu
ZGVyZWRSZWdpb24pLmlzRW1wdHkoKTsKKyAgICByZXR1cm4gbV9zY2FsZSA9PSBzY2FsZSAmJiBQ
bGF0Zm9ybTo6SW50UmVjdFJlZ2lvbjo6c3VidHJhY3RSZWdpb25zKGNvbnRlbnRzLCBtX3JlbmRl
cmVkUmVnaW9uKS5pc0VtcHR5KCk7CiB9CiAKIHZvaWQgVGlsZUJ1ZmZlcjo6Y2xlYXJSZW5kZXJl
ZFJlZ2lvbihjb25zdCBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbiYgcmVnaW9uKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQmFja2luZ1N0b3JlVGls
ZS5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQmFja2luZ1N0b3Jl
VGlsZS5oCmluZGV4IDAzNjgwOGYzMjc4ODZiYjg0Zjk0Nzg1MzRhMGQwMTY5MTk4N2EwNDEuLmI1
MWEzMTYzYjY3YzcyOGFjYzk2ZTE1MmZiMDQ3NTEzMmRmMDI2ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0JhY2tpbmdTdG9yZVRpbGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9CYWNraW5nU3RvcmVUaWxl
LmgKQEAgLTc0LDE0ICs3NCwxNyBAQCBjbGFzcyBUaWxlQnVmZmVyIHsKICAgICAgICAgUGxhdGZv
cm06OkludFNpemUgc2l6ZSgpIGNvbnN0OwogICAgICAgICBQbGF0Zm9ybTo6SW50UmVjdCByZWN0
KCkgY29uc3Q7CiAKLSAgICAgICAgYm9vbCBpc1JlbmRlcmVkKCkgY29uc3Q7Ci0gICAgICAgIGJv
b2wgaXNSZW5kZXJlZChjb25zdCBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbiYgY29udGVudHMpIGNv
bnN0OworICAgICAgICBib29sIGlzUmVuZGVyZWQoZG91YmxlIHNjYWxlKSBjb25zdDsKKyAgICAg
ICAgYm9vbCBpc1JlbmRlcmVkKGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uJiBjb250ZW50
cywgZG91YmxlIHNjYWxlKSBjb25zdDsKICAgICAgICAgdm9pZCBjbGVhclJlbmRlcmVkUmVnaW9u
KCk7CiAgICAgICAgIHZvaWQgY2xlYXJSZW5kZXJlZFJlZ2lvbihjb25zdCBQbGF0Zm9ybTo6SW50
UmVjdFJlZ2lvbiYpOwogICAgICAgICB2b2lkIGFkZFJlbmRlcmVkUmVnaW9uKGNvbnN0IFBsYXRm
b3JtOjpJbnRSZWN0UmVnaW9uJik7CiAgICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uIHJl
bmRlcmVkUmVnaW9uKCkgY29uc3Q7CiAgICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uIG5v
dFJlbmRlcmVkUmVnaW9uKCkgY29uc3Q7CiAKKyAgICAgICAgZG91YmxlIHNjYWxlKCkgeyByZXR1
cm4gbV9zY2FsZTsgfQorICAgICAgICB2b2lkIHNldFNjYWxlKGRvdWJsZSBzY2FsZSkgeyBtX3Nj
YWxlID0gc2NhbGU7IH07CisKICAgICAgICAgUGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXIqIG5h
dGl2ZUJ1ZmZlcigpIGNvbnN0OwogCiAgICAgICAgIEZlbmNlKiBmZW5jZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZmVuY2UuZ2V0KCk7IH0KQEAgLTkyLDYgKzk1LDcgQEAgY2xhc3MgVGlsZUJ1ZmZlciB7
CiAgICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uIG1fcmVuZGVyZWRSZWdpb247CiAgICAg
ICAgIFJlZlB0cjxGZW5jZT4gbV9mZW5jZTsKICAgICAgICAgbXV0YWJsZSBQbGF0Zm9ybTo6R3Jh
cGhpY3M6OkJ1ZmZlciogbV9idWZmZXI7CisgICAgICAgIGRvdWJsZSBtX3NjYWxlOwogfTsKIAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9CYWNr
aW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3BvcnRBY2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9CYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3Bv
cnRBY2Nlc3Nvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODExNGYzNmNhNzllZTMzNWIzNGNlNjVmZjIxMjAw
OWRkODc2MTkxZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJLaXRTdXBwb3J0L0JhY2tpbmdTdG9yZVZpc3VhbGl6YXRpb25WaWV3cG9ydEFjY2Vzc29yLmNw
cApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIElu
IE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2luY2x1ZGUgIkJhY2tpbmdTdG9yZVZpc3VhbGl6YXRpb25WaWV3cG9ydEFj
Y2Vzc29yLmgiCisKKyNpbmNsdWRlICJCYWNraW5nU3RvcmVfcC5oIgorCisjaW5jbHVkZSA8Qmxh
Y2tCZXJyeVBsYXRmb3JtUHJpbWl0aXZlcy5oPgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKwordXNp
bmcgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkZsb2F0UG9pbnQ7Cit1c2luZyBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6SW50UG9pbnQ7Cit1c2luZyBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6SW50U2l6ZTsK
K3VzaW5nIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpWaWV3cG9ydEFjY2Vzc29yOworCituYW1lc3Bh
Y2UgQmxhY2tCZXJyeSB7CituYW1lc3BhY2UgV2ViS2l0IHsKKworQmFja2luZ1N0b3JlVmlzdWFs
aXphdGlvblZpZXdwb3J0QWNjZXNzb3I6OkJhY2tpbmdTdG9yZVZpc3VhbGl6YXRpb25WaWV3cG9y
dEFjY2Vzc29yKFZpZXdwb3J0QWNjZXNzb3IqIG9yaWdpbmFsQWNjZXNzb3IsIEJhY2tpbmdTdG9y
ZVByaXZhdGUqIGJhY2tpbmdTdG9yZVByaXZhdGUpCisgICAgOiBtX29yaWdpbmFsQWNjZXNzb3Io
b3JpZ2luYWxBY2Nlc3NvcikKKyAgICAsIG1fYmFja2luZ1N0b3JlUHJpdmF0ZShiYWNraW5nU3Rv
cmVQcml2YXRlKQoreworfQorCitJbnRTaXplIEJhY2tpbmdTdG9yZVZpc3VhbGl6YXRpb25WaWV3
cG9ydEFjY2Vzc29yOjpwaXhlbENvbnRlbnRzU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJv
dW5kVG9QaXhlbEZyb21Eb2N1bWVudENvbnRlbnRzKGRvY3VtZW50Q29udGVudHNSZWN0KCkpLnNp
emUoKTsKK30KKworSW50U2l6ZSBCYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3BvcnRBY2Nl
c3Nvcjo6ZG9jdW1lbnRDb250ZW50c1NpemUoKSBjb25zdAoreworICAgIHJldHVybiBtX29yaWdp
bmFsQWNjZXNzb3ItPmRvY3VtZW50Q29udGVudHNTaXplKCk7Cit9CisKK0ludFBvaW50IEJhY2tp
bmdTdG9yZVZpc3VhbGl6YXRpb25WaWV3cG9ydEFjY2Vzc29yOjpwaXhlbFNjcm9sbFBvc2l0aW9u
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gcm91bmRUb1BpeGVsRnJvbURvY3VtZW50Q29udGVudHMo
CisgICAgICAgIHRvRG9jdW1lbnRDb250ZW50cyhzdGF0ZSgpLT5iYWNraW5nU3RvcmVPZmZzZXQo
KSwgc3RhdGUoKS0+c2NhbGUoKSkpOworfQorCitJbnRQb2ludCBCYWNraW5nU3RvcmVWaXN1YWxp
emF0aW9uVmlld3BvcnRBY2Nlc3Nvcjo6ZG9jdW1lbnRTY3JvbGxQb3NpdGlvbigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHJvdW5kVG9Eb2N1bWVudENvbnRlbnRzKHN0YXRlKCktPmJhY2tpbmdTdG9y
ZU9mZnNldCgpLCBzdGF0ZSgpLT5zY2FsZSgpKTsKK30KKworSW50U2l6ZSBCYWNraW5nU3RvcmVW
aXN1YWxpemF0aW9uVmlld3BvcnRBY2Nlc3Nvcjo6cGl4ZWxWaWV3cG9ydFNpemUoKSBjb25zdAor
eworICAgIHJldHVybiBtX29yaWdpbmFsQWNjZXNzb3ItPnBpeGVsVmlld3BvcnRTaXplKCk7Cit9
CisKK0ludFNpemUgQmFja2luZ1N0b3JlVmlzdWFsaXphdGlvblZpZXdwb3J0QWNjZXNzb3I6OmRv
Y3VtZW50Vmlld3BvcnRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcm91bmRUb0RvY3VtZW50
RnJvbVBpeGVsQ29udGVudHMocGl4ZWxWaWV3cG9ydFJlY3QoKSkuc2l6ZSgpOworfQorCitJbnRQ
b2ludCBCYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3BvcnRBY2Nlc3Nvcjo6ZGVzdGluYXRp
b25TdXJmYWNlT2Zmc2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9vcmlnaW5hbEFjY2Vzc29y
LT5kZXN0aW5hdGlvblN1cmZhY2VPZmZzZXQoKTsKK30KKworZG91YmxlIEJhY2tpbmdTdG9yZVZp
c3VhbGl6YXRpb25WaWV3cG9ydEFjY2Vzc29yOjpzY2FsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHN0YXRlKCktPnNjYWxlKCkgLyBzdGQ6Om1heChzdGF0ZSgpLT5udW1iZXJPZlRpbGVzV2lkZSgp
LCBzdGF0ZSgpLT5udW1iZXJPZlRpbGVzSGlnaCgpKTsKK30KKworQmFja2luZ1N0b3JlR2VvbWV0
cnkqIEJhY2tpbmdTdG9yZVZpc3VhbGl6YXRpb25WaWV3cG9ydEFjY2Vzc29yOjpzdGF0ZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fYmFja2luZ1N0b3JlUHJpdmF0ZS0+ZnJvbnRTdGF0ZSgpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKK30gLy8gbmFtZXNwYWNlIEJsYWNrQmVycnkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0JhY2tpbmdT
dG9yZVZpc3VhbGl6YXRpb25WaWV3cG9ydEFjY2Vzc29yLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViS2l0U3VwcG9ydC9CYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3BvcnRBY2Nl
c3Nvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjYwOGJhMGY1ZmIyNmFmNGJlMjMxMjViNmQ2ZGVmMDhiMGE0Nzk4
NzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3Vw
cG9ydC9CYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3BvcnRBY2Nlc3Nvci5oCkBAIC0wLDAg
KzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExp
bWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKworI2lmbmRlZiBCYWNraW5nU3RvcmVW
aXN1YWxpemF0aW9uVmlld3BvcnRBY2Nlc3Nvcl9oCisjZGVmaW5lIEJhY2tpbmdTdG9yZVZpc3Vh
bGl6YXRpb25WaWV3cG9ydEFjY2Vzc29yX2gKKworI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9y
bVZpZXdwb3J0QWNjZXNzb3IuaD4KKworbmFtZXNwYWNlIEJsYWNrQmVycnkgeworCituYW1lc3Bh
Y2UgUGxhdGZvcm0geworY2xhc3MgSW50UG9pbnQ7CitjbGFzcyBJbnRTaXplOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQmFja2luZ1N0b3JlUHJpdmF0ZTsKK2NsYXNzIEJhY2tp
bmdTdG9yZUdlb21ldHJ5OworCitjbGFzcyBCYWNraW5nU3RvcmVWaXN1YWxpemF0aW9uVmlld3Bv
cnRBY2Nlc3NvciA6IHB1YmxpYyBQbGF0Zm9ybTo6Vmlld3BvcnRBY2Nlc3NvciB7CitwdWJsaWM6
CisgICAgQmFja2luZ1N0b3JlVmlzdWFsaXphdGlvblZpZXdwb3J0QWNjZXNzb3IoVmlld3BvcnRB
Y2Nlc3Nvciogb3JpZ2luYWxBY2Nlc3NvciwgQmFja2luZ1N0b3JlUHJpdmF0ZSopOworICAgIHZp
cnR1YWwgfkJhY2tpbmdTdG9yZVZpc3VhbGl6YXRpb25WaWV3cG9ydEFjY2Vzc29yKCkgeyB9CisK
KyAgICB2aXJ0dWFsIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpJbnRTaXplIGRvY3VtZW50Q29udGVu
dHNTaXplKCkgY29uc3Q7CisgICAgdmlydHVhbCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6SW50U2l6
ZSBwaXhlbENvbnRlbnRzU2l6ZSgpIGNvbnN0OworCisgICAgdmlydHVhbCBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6SW50UG9pbnQgZG9jdW1lbnRTY3JvbGxQb3NpdGlvbigpIGNvbnN0OworICAgIHZp
cnR1YWwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkludFBvaW50IHBpeGVsU2Nyb2xsUG9zaXRpb24o
KSBjb25zdDsKKworICAgIHZpcnR1YWwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkludFNpemUgZG9j
dW1lbnRWaWV3cG9ydFNpemUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpJbnRTaXplIHBpeGVsVmlld3BvcnRTaXplKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpJbnRQb2ludCBkZXN0aW5hdGlvblN1cmZhY2VPZmZzZXQoKSBj
b25zdDsKKworICAgIHZpcnR1YWwgZG91YmxlIHNjYWxlKCkgY29uc3Q7CisKK3ByaXZhdGU6Cisg
ICAgQmFja2luZ1N0b3JlR2VvbWV0cnkqIHN0YXRlKCkgY29uc3Q7CisKKyAgICBQbGF0Zm9ybTo6
Vmlld3BvcnRBY2Nlc3NvciogbV9vcmlnaW5hbEFjY2Vzc29yOworICAgIEJhY2tpbmdTdG9yZVBy
aXZhdGUqIG1fYmFja2luZ1N0b3JlUHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorfSAvLyBuYW1lc3BhY2UgQmxhY2tCZXJyeQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1dlYktpdFRocmVhZFZpZXdwb3J0QWNj
ZXNzb3IuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvV2ViS2l0
VGhyZWFkVmlld3BvcnRBY2Nlc3Nvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQ4MjkzYjE5MDk1MjAyMjQ4
OTVmNzgwNTdlNjk5NWQ5YzNiNzdkYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1dlYktpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3IuY3Bw
CkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4g
TW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSAiV2ViS2l0VGhyZWFkVmlld3BvcnRBY2Nlc3Nvci5oIgorCisj
aW5jbHVkZSAiV2ViUGFnZV9wLmgiCisKKyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1NZXNz
YWdlQ2xpZW50Lmg+CisjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtUHJpbWl0aXZlcy5oPgor
Cit1c2luZyBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6SW50UG9pbnQ7Cit1c2luZyBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6SW50U2l6ZTsKK3VzaW5nIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpWaWV3cG9y
dEFjY2Vzc29yOworCituYW1lc3BhY2UgQmxhY2tCZXJyeSB7CituYW1lc3BhY2UgV2ViS2l0IHsK
KworV2ViS2l0VGhyZWFkVmlld3BvcnRBY2Nlc3Nvcjo6V2ViS2l0VGhyZWFkVmlld3BvcnRBY2Nl
c3NvcihXZWJQYWdlUHJpdmF0ZSogd2ViUGFnZVByaXZhdGUpCisgICAgOiBtX3dlYlBhZ2VQcml2
YXRlKHdlYlBhZ2VQcml2YXRlKQoreworfQorCitJbnRTaXplIFdlYktpdFRocmVhZFZpZXdwb3J0
QWNjZXNzb3I6OnBpeGVsQ29udGVudHNTaXplKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoUGxhdGZv
cm06OndlYktpdFRocmVhZE1lc3NhZ2VDbGllbnQoKS0+aXNDdXJyZW50VGhyZWFkKCkpOworCisg
ICAgcmV0dXJuIG1fd2ViUGFnZVByaXZhdGUtPnRyYW5zZm9ybWVkQ29udGVudHNTaXplKCk7Cit9
CisKK0ludFNpemUgV2ViS2l0VGhyZWFkVmlld3BvcnRBY2Nlc3Nvcjo6ZG9jdW1lbnRDb250ZW50
c1NpemUoKSBjb25zdAoreworICAgIEFTU0VSVChQbGF0Zm9ybTo6d2ViS2l0VGhyZWFkTWVzc2Fn
ZUNsaWVudCgpLT5pc0N1cnJlbnRUaHJlYWQoKSk7CisKKyAgICByZXR1cm4gbV93ZWJQYWdlUHJp
dmF0ZS0+Y29udGVudHNTaXplKCk7Cit9CisKK0ludFBvaW50IFdlYktpdFRocmVhZFZpZXdwb3J0
QWNjZXNzb3I6OnBpeGVsU2Nyb2xsUG9zaXRpb24oKSBjb25zdAoreworICAgIEFTU0VSVChQbGF0
Zm9ybTo6d2ViS2l0VGhyZWFkTWVzc2FnZUNsaWVudCgpLT5pc0N1cnJlbnRUaHJlYWQoKSk7CisK
KyAgICByZXR1cm4gbV93ZWJQYWdlUHJpdmF0ZS0+dHJhbnNmb3JtZWRTY3JvbGxQb3NpdGlvbigp
OworfQorCitJbnRQb2ludCBXZWJLaXRUaHJlYWRWaWV3cG9ydEFjY2Vzc29yOjpkb2N1bWVudFNj
cm9sbFBvc2l0aW9uKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoUGxhdGZvcm06OndlYktpdFRocmVh
ZE1lc3NhZ2VDbGllbnQoKS0+aXNDdXJyZW50VGhyZWFkKCkpOworCisgICAgcmV0dXJuIG1fd2Vi
UGFnZVByaXZhdGUtPnNjcm9sbFBvc2l0aW9uKCk7Cit9CisKK0ludFNpemUgV2ViS2l0VGhyZWFk
Vmlld3BvcnRBY2Nlc3Nvcjo6cGl4ZWxWaWV3cG9ydFNpemUoKSBjb25zdAoreworICAgIEFTU0VS
VChQbGF0Zm9ybTo6d2ViS2l0VGhyZWFkTWVzc2FnZUNsaWVudCgpLT5pc0N1cnJlbnRUaHJlYWQo
KSk7CisKKyAgICByZXR1cm4gbV93ZWJQYWdlUHJpdmF0ZS0+dHJhbnNmb3JtZWRBY3R1YWxWaXNp
YmxlU2l6ZSgpOworfQorCitJbnRTaXplIFdlYktpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3I6OmRv
Y3VtZW50Vmlld3BvcnRTaXplKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoUGxhdGZvcm06OndlYktp
dFRocmVhZE1lc3NhZ2VDbGllbnQoKS0+aXNDdXJyZW50VGhyZWFkKCkpOworCisgICAgcmV0dXJu
IG1fd2ViUGFnZVByaXZhdGUtPmFjdHVhbFZpc2libGVTaXplKCk7Cit9CisKK0ludFBvaW50IFdl
YktpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3I6OmRlc3RpbmF0aW9uU3VyZmFjZU9mZnNldCgpIGNv
bnN0Cit7CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHNvbWVob3cgZ2V0IGl0cyBvZmZzZXQg
ZnJvbSBhIHJlbGlhYmxlIHNvdXJjZS4KKyAgICByZXR1cm4gSW50UG9pbnQoMCwgMCk7Cit9CisK
K2RvdWJsZSBXZWJLaXRUaHJlYWRWaWV3cG9ydEFjY2Vzc29yOjpzY2FsZSgpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUKFBsYXRmb3JtOjp3ZWJLaXRUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmlzQ3VycmVu
dFRocmVhZCgpKTsKKworICAgIHJldHVybiBtX3dlYlBhZ2VQcml2YXRlLT5jdXJyZW50U2NhbGUo
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cit9IC8vIG5hbWVzcGFjZSBCbGFja0JlcnJ5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9XZWJL
aXRUaHJlYWRWaWV3cG9ydEFjY2Vzc29yLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
S2l0U3VwcG9ydC9XZWJLaXRUaHJlYWRWaWV3cG9ydEFjY2Vzc29yLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGE1
NDkzZmQzMjkzMThhODZhZjk0NTZhOTg4M2ViZTFkMzU1MzVlYgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1dlYktpdFRocmVhZFZpZXdw
b3J0QWNjZXNzb3IuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisK
KyNpZm5kZWYgV2ViS2l0VGhyZWFkVmlld3BvcnRBY2Nlc3Nvcl9oCisjZGVmaW5lIFdlYktpdFRo
cmVhZFZpZXdwb3J0QWNjZXNzb3JfaAorCisjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtVmll
d3BvcnRBY2Nlc3Nvci5oPgorCituYW1lc3BhY2UgQmxhY2tCZXJyeSB7CisKK25hbWVzcGFjZSBQ
bGF0Zm9ybSB7CitjbGFzcyBJbnRQb2ludDsKK2NsYXNzIEludFNpemU7Cit9CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJpdmF0ZTsKKworY2xhc3MgV2ViS2l0VGhyZWFk
Vmlld3BvcnRBY2Nlc3NvciA6IHB1YmxpYyBQbGF0Zm9ybTo6Vmlld3BvcnRBY2Nlc3NvciB7Citw
dWJsaWM6CisgICAgV2ViS2l0VGhyZWFkVmlld3BvcnRBY2Nlc3NvcihXZWJQYWdlUHJpdmF0ZSop
OworICAgIHZpcnR1YWwgfldlYktpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3IoKSB7IH0KKworICAg
IHZpcnR1YWwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkludFNpemUgZG9jdW1lbnRDb250ZW50c1Np
emUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpJbnRTaXplIHBp
eGVsQ29udGVudHNTaXplKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpJbnRQb2ludCBkb2N1bWVudFNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7CisgICAgdmlydHVh
bCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6SW50UG9pbnQgcGl4ZWxTY3JvbGxQb3NpdGlvbigpIGNv
bnN0OworCisgICAgdmlydHVhbCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6SW50U2l6ZSBkb2N1bWVu
dFZpZXdwb3J0U2l6ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OkludFNpemUgcGl4ZWxWaWV3cG9ydFNpemUoKSBjb25zdDsKKworICAgIHZpcnR1YWwgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OkludFBvaW50IGRlc3RpbmF0aW9uU3VyZmFjZU9mZnNldCgpIGNvbnN0
OworCisgICAgdmlydHVhbCBkb3VibGUgc2NhbGUoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBQ
bGF0Zm9ybTo6Vmlld3BvcnRBY2Nlc3NvciogbV9vcmlnaW5hbEFjY2Vzc29yOworICAgIFdlYlBh
Z2VQcml2YXRlKiBtX3dlYlBhZ2VQcml2YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Cit9IC8vIG5hbWVzcGFjZSBCbGFja0JlcnJ5CisKKyNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>