<?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>127456</bug_id>
          
          <creation_ts>2014-01-22 17:33:07 -0800</creation_ts>
          <short_desc>Make visibleContentRect() return actualVisibleContentRect() on iOS most of the time</short_desc>
          <delta_ts>2014-01-23 16:35:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>koivisto</cc>
    
    <cc>psolanki</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>970951</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-01-22 17:33:07 -0800</bug_when>
    <thetext>Make visibleContentRect() return actualVisibleContentRect() on iOS most of the time</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970957</commentid>
    <comment_count>1</comment_count>
      <attachid>221928</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-01-22 17:51:04 -0800</bug_when>
    <thetext>Created attachment 221928
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971016</commentid>
    <comment_count>2</comment_count>
      <attachid>221944</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-01-22 21:11:00 -0800</bug_when>
    <thetext>Created attachment 221944
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971025</commentid>
    <comment_count>3</comment_count>
      <attachid>221947</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-01-22 22:05:46 -0800</bug_when>
    <thetext>Created attachment 221947
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971270</commentid>
    <comment_count>4</comment_count>
      <attachid>221947</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-01-23 12:11:01 -0800</bug_when>
    <thetext>Comment on attachment 221947
Patch

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

&gt; Source/WebCore/platform/ScrollView.h:162
&gt; +    virtual IntRect visibleContentRect(VisibleContentRectIncludesScrollbars = ExcludeScrollbars, VisibleContentRectBehavior = ContentsVisibleRect) const override;

Default values are nasty in general and having more than one especially awkward. Considering that very few call sites want to include the scrollbars I think you should add a separate visibleContentRectIncludingScrollbars() function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971388</commentid>
    <comment_count>5</comment_count>
      <attachid>222039</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-01-23 16:29:16 -0800</bug_when>
    <thetext>Created attachment 222039
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971392</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-01-23 16:35:29 -0800</bug_when>
    <thetext>https://trac.webkit.org/r162663</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221928</attachid>
            <date>2014-01-22 17:51:04 -0800</date>
            <delta_ts>2014-01-22 21:10:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127456-20140122175100.patch</filename>
            <type>text/plain</type>
            <size>35808</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyNTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmY3MjdiM2VmMjVmMzA0
YmM4MTM4Nzc2MGY5NGQyZDAzMDRhM2U4OS4uYmMxNDYxZTViNTk5NzFjZWYzMTM5MWUwNTgzNzE1
YjMxZjhhODY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDE0LTAxLTIyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgdmlzaWJs
ZUNvbnRlbnRSZWN0KCkgcmV0dXJuIGFjdHVhbFZpc2libGVDb250ZW50UmVjdCgpIG9uIGlPUyBt
b3N0IG9mIHRoZSB0aW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjc0NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBPbiBpT1MsIHZpc2libGVDb250ZW50UmVjdCgpIHJldHVybnMgdGhlIGVudGlyZSBk
b2N1bWVudCByZWN0IGZvciBoaXN0b3JpY2FsCisgICAgICAgIHJlYXNvbnMsIGFuZCBhY3R1YWxW
aXNpYmxlQ29udGVudFJlY3QoKSByZXR1cm5zIHdoYXQgdmlzaWJsZUNvbnRlbnRSZWN0KCkKKyAg
ICAgICAgcmV0dXJucyBvbiBvdGhlciBwbGF0Zm9ybXMuCisgICAgICAgIAorICAgICAgICBJbiBh
ZGRpdGlvbiwgYWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KCkgd2FzIHJldHVybmluZyBhbiBlbXB0
eSByZWN0IGluIFdLMi4KKyAgICAgICAgCisgICAgICAgIFJlZHVjZSB0aGUgY29uZnVzaW9uIG9m
ICNpZmRlZnMgYnkgbWFraW5nIHZpc2libGVDb250ZW50UmVjdCgpIGJlaGF2ZSBsaWtlCisgICAg
ICAgIGFjdHVhbFZpc2libGVDb250ZW50UmVjdCgpIGJ5IGRlZmF1bHQgb24gaU9TLiBXaGVyZSBp
dCBuZWVkcyB0aGUgb2xkIGJlaGF2aW9yLAorICAgICAgICBhbiBvcHRpb25hbCBwYXJhbWV0ZXIs
IExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QsIHByb3ZpZGVzIHRoaXMuCisgICAgICAgIAor
ICAgICAgICBNZWNoYW5pY2FsbHkgY2hhbmdlIGFsbCB0aGUgY2FsbCBzaXRlcyBvZiBhY3R1YWxW
aXNpYmxlQ29udGVudFJlY3QoKSB0bworICAgICAgICB1c2UgdmlzaWJsZUNvbnRlbnRSZWN0KCks
IGFuZCB0aGUgY2FsbCBzaXRlcyBvZiB2aXNpYmxlQ29udGVudFJlY3QoKQorICAgICAgICB0byB2
aXNpYmxlQ29udGVudFJlY3QoLi4uLCBMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KSwgYWRk
aW5nIGNvbW1lbnRzCisgICAgICAgIHdoZXJlIHRoaXMgbWF5IG5vdCBiZSBhcHByb3ByaWF0ZS4K
KyAgICAgICAgCisgICAgICAgIEFsc28gYWRkIGFjdHVhbFNjcm9sbFBvc2l0aW9uKCksIGFuZCBj
bGVhbiB1cCBzb21lIGFjdHVhbFNjcm9sbCogY2FsbCBzaXRlcy4KKyAgICAgICAgCisgICAgICAg
IE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc09uc2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMpOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc09mZlNjcmVlbik6
CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjphZGp1c3RGbG9hdFF1YWRzRm9yU2Nyb2xsQW5kQWJzb2x1dGVab29tQW5kRnJhbWVTY2FsZSk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRqdXN0RmxvYXRSZWN0Rm9yU2Nyb2xsQW5k
QWJzb2x1dGVab29tQW5kRnJhbWVTY2FsZSk6CisgICAgICAgICogZG9tL01vdXNlUmVsYXRlZEV2
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50OjpNb3VzZVJlbGF0
ZWRFdmVudCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpjb3VudE1hdGNoZXNGb3JUZXh0KToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1l
U2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpib3VuZHMp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmdldENsaXBwZWRWaXNpYmxlVGV4
dFJlY3RhbmdsZXMpOgorICAgICAgICAqIGh0bWwvSFRNTEJvZHlFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxCb2R5RWxlbWVudDo6c2Nyb2xsTGVmdCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MQm9keUVsZW1lbnQ6OnNjcm9sbFRvcCk6CisgICAgICAgICogaHRtbC9JbWFnZURv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1lbnQ6OmltYWdlRml0c0lu
V2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1lbnQ6OndpbmRvd1NpemVDaGFu
Z2VkKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
T01XaW5kb3c6OmlubmVySGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6aW5u
ZXJXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnNjcm9sbFgpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV2luZG93OjpzY3JvbGxZKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdp
bmRvdzo6c2Nyb2xsQnkpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6Y2FsY3VsYXRlU2Nyb2xsYmFyTW9kZXNGb3JMYXlvdXQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpzY3JvbGxDb250ZW50c1Nsb3dQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6cmVwYWludENvbnRlbnRSZWN0YW5nbGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVWaWV3OjpzZW5kUmVzaXplRXZlbnRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVZpZXc6OndpbmRvd0NsaXBSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6aXNT
Y3JvbGxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRDb250cm9sVGlu
dHMpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsVmlldzo6dmlzaWJsZUNvbnRlbnRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9T
Y3JvbGxWaWV3Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp2aXNpYmxlU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxPZmZzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsVmlldzo6YWN0dWFsU2Nyb2xsWCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxWaWV3OjphY3R1YWxTY3JvbGxZKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6
OmFjdHVhbFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJl
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6dmlzaWJsZUNvbnRlbnRS
ZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
c2Nyb2xsUmVjdFRvVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6bWF4
aW11bVNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp2aXNp
YmxlQ29udGVudFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJC
YWNraW5nOjp1cGRhdGVDb21wb3NpdGVkQm91bmRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojp2aWV3UmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojp2aWV3cG9ydFNpemUpOgorCiAyMDE0LTAxLTIy
ICBQZXRlciBNb2xuYXIgIDxwbW9sbmFyLnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+CiAK
ICAgICAgICAgUmVmYWN0b3IgY2FsY3VsYXRpb24gb2YgaGFzUnggYW5kIGhhc1J5IHZhbHVlcyBp
biBTVkdQYXRoRGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4g
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA4YmE2MzhlMTAwZjE1NzMxOWU4
ZjkxMmE4OGFlOThkOThlYzBmMzBmLi5iNGJiMzg1Njk0NjkxYzZiNGJlM2EwMmYzNTM2ZjdiMjYy
NTQwZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTQyMyw3ICsxNDIzLDcgQEAgX19aTks3
V2ViQ29yZTEwU2Nyb2xsVmlldzE2d2luZG93VG9Db250ZW50c0VSS05TXzdJbnRSZWN0RQogX19a
Tks3V2ViQ29yZTEwU2Nyb2xsVmlldzE2d2luZG93VG9Db250ZW50c0VSS05TXzhJbnRQb2ludEUK
IF9fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcxOGNvbnRlbnRzVG9Sb290Vmlld0VSS05TXzdJbnRS
ZWN0RQogX19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE4Y29udGVudHNUb1Jvb3RWaWV3RVJLTlNf
OEludFBvaW50RQotX19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE4dmlzaWJsZUNvbnRlbnRSZWN0
RU5TXzE0U2Nyb2xsYWJsZUFyZWEzNlZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFy
c0UKK19fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcxOHZpc2libGVDb250ZW50UmVjdEVOU18xNFNj
cm9sbGFibGVBcmVhMzZWaXNpYmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnNFTlMxXzI2
VmlzaWJsZUNvbnRlbnRSZWN0QmVoYXZpb3JFCiBfX1pOSzdXZWJDb3JlMTBTY3JvbGxWaWV3MjNy
b290Vmlld1RvVG90YWxDb250ZW50c0VSS05TXzhJbnRQb2ludEUKIF9fWk5LN1dlYkNvcmUxMFNj
cm9sbFZpZXczMHNjcm9sbE9mZnNldFJlbGF0aXZlVG9Eb2N1bWVudEV2CiBfX1pOSzdXZWJDb3Jl
MTBTdG9yYWdlTWFwNmxlbmd0aEV2CkBAIC0yMTE4LDcgKzIxMTgsNyBAQCBfX1pON1dlYkNvcmU4
SW50UG9pbnRDMUVSSzdDR1BvaW50CiBfX1pON1dlYkNvcmU4SW50UG9pbnRDMUVSSzhfTlNQb2lu
dAogX19aTjdXZWJDb3JlOUZsb2F0UmVjdEMxRVJLN19OU1JlY3QKIF9fWk5LN1dlYkNvcmUxMEZs
b2F0UG9pbnRjdjhfTlNQb2ludEV2Ci1fX1pOSzdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYTE4dmlz
aWJsZUNvbnRlbnRSZWN0RU5TMF8zNlZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFy
c0UKK19fWk5LN1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhMTh2aXNpYmxlQ29udGVudFJlY3RFTlMw
XzM2VmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzRU5TMF8yNlZpc2libGVDb250
ZW50UmVjdEJlaGF2aW9yRQogX19aTks3V2ViQ29yZTZDdXJzb3IxNHBsYXRmb3JtQ3Vyc29yRXYK
IF9fWk5LN1dlYkNvcmU3SW50UmVjdGN2N19OU1JlY3RFdgogX19aTks3V2ViQ29yZTdJbnRTaXpl
Y3Y2Q0dTaXplRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwCmluZGV4IGU0YWM2Y2Q5NzFhZjIzZDY5M2U1MjQ0Y2QyNzQxNzg1
NzE1N2MwNzkuLmU0ODczZTU2MGU3NWM5ZGMzN2U1N2JkNmZiNGM4YjhmNjY4NDlhZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcApAQCAtMTg4Myw3ICsxODgzLDggQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc09u
c2NyZWVuKCkgY29uc3QKICAgICBmb3IgKHNpemVfdCBpID0gbGV2ZWxzOyBpID49IDE7IGktLSkg
ewogICAgICAgICBjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvdXRlciA9IG9iamVjdHNbaV07
CiAgICAgICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIGlubmVyID0gb2JqZWN0c1tpIC0g
MV07Ci0gICAgICAgIGNvbnN0IEludFJlY3Qgb3V0ZXJSZWN0ID0gaSA8IGxldmVscyA/IHBpeGVs
U25hcHBlZEludFJlY3Qob3V0ZXItPmJvdW5kaW5nQm94UmVjdCgpKSA6IG91dGVyLT5nZXRTY3Jv
bGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSgpLT52aXNpYmxlQ29udGVudFJlY3QoKTsKKyAgICAgICAg
Ly8gRklYTUU6IHVuY2xlYXIgaWYgd2UgbmVlZCBMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0
LgorICAgICAgICBjb25zdCBJbnRSZWN0IG91dGVyUmVjdCA9IGkgPCBsZXZlbHMgPyBwaXhlbFNu
YXBwZWRJbnRSZWN0KG91dGVyLT5ib3VuZGluZ0JveFJlY3QoKSkgOiBvdXRlci0+Z2V0U2Nyb2xs
YWJsZUFyZWFJZlNjcm9sbGFibGUoKS0+dmlzaWJsZUNvbnRlbnRSZWN0KFNjcm9sbGFibGVBcmVh
OjpFeGNsdWRlU2Nyb2xsYmFycywgU2Nyb2xsYWJsZUFyZWE6OkxlZ2FjeUlPU0RvY3VtZW50Vmlz
aWJsZVJlY3QpOwogICAgICAgICBjb25zdCBJbnRSZWN0IGlubmVyUmVjdCA9IHBpeGVsU25hcHBl
ZEludFJlY3QoaW5uZXItPmlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSA/IGlubmVyLT5wYXJl
bnRPYmplY3QoKS0+Ym91bmRpbmdCb3hSZWN0KCkgOiBpbm5lci0+Ym91bmRpbmdCb3hSZWN0KCkp
OwogICAgICAgICAKICAgICAgICAgaWYgKCFvdXRlclJlY3QuaW50ZXJzZWN0cyhpbm5lclJlY3Qp
KSB7CkBAIC0xOTE1LDcgKzE5MTYsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9s
bFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMoY29uc3QgSW50UmVjdCYgc3ViZm9jdQogCiAgICAg
TGF5b3V0UmVjdCBvYmplY3RSZWN0ID0gYm91bmRpbmdCb3hSZWN0KCk7CiAgICAgSW50UG9pbnQg
c2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxhYmxlQXJlYS0+c2Nyb2xsUG9zaXRpb24oKTsKLSAgICBJ
bnRSZWN0IHNjcm9sbFZpc2libGVSZWN0ID0gc2Nyb2xsYWJsZUFyZWEtPnZpc2libGVDb250ZW50
UmVjdCgpOworICAgIC8vIEZJWE1FOiB1bmNsZWFyIGlmIHdlIG5lZWQgTGVnYWN5SU9TRG9jdW1l
bnRWaXNpYmxlUmVjdC4KKyAgICBJbnRSZWN0IHNjcm9sbFZpc2libGVSZWN0ID0gc2Nyb2xsYWJs
ZUFyZWEtPnZpc2libGVDb250ZW50UmVjdChTY3JvbGxhYmxlQXJlYTo6RXhjbHVkZVNjcm9sbGJh
cnMsIFNjcm9sbGFibGVBcmVhOjpMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KTsKIAogICAg
IGludCBkZXNpcmVkWCA9IGNvbXB1dGVCZXN0U2Nyb2xsT2Zmc2V0KAogICAgICAgICBzY3JvbGxQ
b3NpdGlvbi54KCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCA5MmFlYjY2MDg4MTQzMDA5OTlh
ZDE2ZjhiMTExNDA5YmEwYzE0YzhjLi45YjkwZWEyNGVhN2U5NGRjMTdkYzQyNmQyYjA0NjhjYmIz
ZDdlOTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTU1MCw3ICs1NTAsOCBAQCBib29sIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzT2ZmU2NyZWVuKCkgY29uc3QKIHsKICAgICBBU1NF
UlQobV9yZW5kZXJlcik7CiAgICAgSW50UmVjdCBjb250ZW50UmVjdCA9IHBpeGVsU25hcHBlZElu
dFJlY3QobV9yZW5kZXJlci0+YWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCkpOwotICAgIElu
dFJlY3Qgdmlld1JlY3QgPSBtX3JlbmRlcmVyLT52aWV3KCkuZnJhbWVWaWV3KCkudmlzaWJsZUNv
bnRlbnRSZWN0KCk7CisgICAgLy8gRklYTUU6IHVuY2xlYXIgaWYgd2UgbmVlZCBMZWdhY3lJT1NE
b2N1bWVudFZpc2libGVSZWN0LgorICAgIEludFJlY3Qgdmlld1JlY3QgPSBtX3JlbmRlcmVyLT52
aWV3KCkuZnJhbWVWaWV3KCkudmlzaWJsZUNvbnRlbnRSZWN0KFNjcm9sbGFibGVBcmVhOjpFeGNs
dWRlU2Nyb2xsYmFycywgU2Nyb2xsYWJsZUFyZWE6OkxlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJl
Y3QpOwogICAgIHZpZXdSZWN0LmludGVyc2VjdChjb250ZW50UmVjdCk7CiAgICAgcmV0dXJuIHZp
ZXdSZWN0LmlzRW1wdHkoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDZkZjg1Yzc3
NTNmOGNmZTMxMzIxYWQwYjU3N2YyZmVjN2M0NDQ5NTYuLmE2MDAyNTEyYTE4Yjk5MWZjN2UzYWJi
MjJjMTAzYWE0MTFiYjg0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTgwNywxMSAr
NTgwNyw3IEBAIHZvaWQgRG9jdW1lbnQ6OmFkanVzdEZsb2F0UXVhZHNGb3JTY3JvbGxBbmRBYnNv
bHV0ZVpvb21BbmRGcmFtZVNjYWxlKFZlY3RvcjxGbG9hCiAgICAgaWYgKGZyYW1lKCkpCiAgICAg
ICAgIGludmVyc2VGcmFtZVNjYWxlID0gMSAvIGZyYW1lKCktPmZyYW1lU2NhbGVGYWN0b3IoKTsK
IAotI2lmIFBMQVRGT1JNKElPUykKLSAgICBMYXlvdXRSZWN0IHZpc2libGVDb250ZW50UmVjdCA9
IHZpZXcoKS0+YWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KCk7Ci0jZWxzZQogICAgIExheW91dFJl
Y3QgdmlzaWJsZUNvbnRlbnRSZWN0ID0gdmlldygpLT52aXNpYmxlQ29udGVudFJlY3QoKTsKLSNl
bmRpZgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVhZHMuc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgcXVhZHNbaV0ubW92ZSgtdmlzaWJsZUNvbnRlbnRSZWN0LngoKSwgLXZpc2libGVDb250
ZW50UmVjdC55KCkpOwogICAgICAgICBpZiAoem9vbSAhPSAxKQpAQCAtNTgzMSwxMSArNTgyNyw3
IEBAIHZvaWQgRG9jdW1lbnQ6OmFkanVzdEZsb2F0UmVjdEZvclNjcm9sbEFuZEFic29sdXRlWm9v
bUFuZEZyYW1lU2NhbGUoRmxvYXRSZWN0JiByCiAgICAgaWYgKGZyYW1lKCkpCiAgICAgICAgIGlu
dmVyc2VGcmFtZVNjYWxlID0gMSAvIGZyYW1lKCktPmZyYW1lU2NhbGVGYWN0b3IoKTsKIAotI2lm
IFBMQVRGT1JNKElPUykKLSAgICBMYXlvdXRSZWN0IHZpc2libGVDb250ZW50UmVjdCA9IHZpZXco
KS0+YWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KCk7Ci0jZWxzZQogICAgIExheW91dFJlY3Qgdmlz
aWJsZUNvbnRlbnRSZWN0ID0gdmlldygpLT52aXNpYmxlQ29udGVudFJlY3QoKTsKLSNlbmRpZgog
ICAgIHJlY3QubW92ZSgtdmlzaWJsZUNvbnRlbnRSZWN0LngoKSwgLXZpc2libGVDb250ZW50UmVj
dC55KCkpOwogICAgIGlmICh6b29tICE9IDEpCiAgICAgICAgIHJlY3Quc2NhbGUoMSAvIHpvb20p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAKaW5kZXggZDNiOGMzNTgx
NDE5NjUyODNiZmI1Y2Q1ZjBkY2VmMzNkYWFhMGZkMy4uODgwMDBmNWYzZjFmYzNmOThhNTBiYjcy
YjJkNjEyNzJhNTM1MjAyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVs
YXRlZEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQu
Y3BwCkBAIC03Nyw3ICs3Nyw3IEBAIE1vdXNlUmVsYXRlZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJiCiAjaWYgIVBMQVRG
T1JNKElPUykKICAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uID0gZnJhbWVWaWV3LT5zY3JvbGxQ
b3NpdGlvbigpOwogI2Vsc2UKLSAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uID0gZnJhbWVWaWV3
LT5hY3R1YWxWaXNpYmxlQ29udGVudFJlY3QoKS5sb2NhdGlvbigpOworICAgICAgICAgICAgc2Ny
b2xsUG9zaXRpb24gPSBmcmFtZVZpZXctPmFjdHVhbFNjcm9sbFBvc2l0aW9uKCk7CiAjZW5kaWYK
ICAgICAgICAgICAgIGFkanVzdGVkUGFnZUxvY2F0aW9uID0gZnJhbWVWaWV3LT53aW5kb3dUb0Nv
bnRlbnRzKHdpbmRvd0xvY2F0aW9uKTsKICAgICAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0g
MSAvIChmcmFtZS0+cGFnZVpvb21GYWN0b3IoKSAqIGZyYW1lLT5mcmFtZVNjYWxlRmFjdG9yKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDBlNWRiZWFhNDViZjYxYzE5YzQ4NzE2
YmI0YzQxOWMzZDBhZjc0ZDcuLjM1NzNlZTNjNmM2Njg3NzI3ZmU1M2Q5M2I5YTAxMTFhMTRmZGE3
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTMyNjcsNyArMzI2Nyw5IEBAIHVu
c2lnbmVkIEVkaXRvcjo6Y291bnRNYXRjaGVzRm9yVGV4dChjb25zdCBTdHJpbmcmIHRhcmdldCwg
UmFuZ2UqIHJhbmdlLCBGaW5kT3B0CiAgICAgICAgIC8vIERvIGEgImZha2UiIHBhaW50IGluIG9y
ZGVyIHRvIGV4ZWN1dGUgdGhlIGNvZGUgdGhhdCBjb21wdXRlcyB0aGUgcmVuZGVyZWQgcmVjdCBm
b3IgZWFjaCB0ZXh0IG1hdGNoLgogICAgICAgICBpZiAobV9mcmFtZS52aWV3KCkgJiYgbV9mcmFt
ZS5jb250ZW50UmVuZGVyZXIoKSkgewogICAgICAgICAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlv
dXQoKTsgLy8gRW5zdXJlIGxheW91dCBpcyB1cCB0byBkYXRlLgotICAgICAgICAgICAgTGF5b3V0
UmVjdCB2aXNpYmxlUmVjdCA9IG1fZnJhbWUudmlldygpLT52aXNpYmxlQ29udGVudFJlY3QoKTsK
KyAgICAgICAgICAgIC8vIEZJWE1FOiB1bmNsZWFyIGlmIHdlIG5lZWQgTGVnYWN5SU9TRG9jdW1l
bnRWaXNpYmxlUmVjdC4KKyAgICAgICAgICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBwcm9iYWJs
eSBsb29rIGF0IHBhaW50c0VudGlyZUNvbnRlbnRzKCkKKyAgICAgICAgICAgIExheW91dFJlY3Qg
dmlzaWJsZVJlY3QgPSBtX2ZyYW1lLnZpZXcoKS0+dmlzaWJsZUNvbnRlbnRSZWN0KFNjcm9sbGFi
bGVBcmVhOjpFeGNsdWRlU2Nyb2xsYmFycywgU2Nyb2xsYWJsZUFyZWE6OkxlZ2FjeUlPU0RvY3Vt
ZW50VmlzaWJsZVJlY3QpOwogICAgICAgICAgICAgaWYgKCF2aXNpYmxlUmVjdC5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQgY29udGV4dCgoUGxhdGZvcm1HcmFw
aGljc0NvbnRleHQqKTApOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0UGFpbnRpbmdEaXNh
YmxlZCh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5k
ZXggZDU5ZTdlOTUyYzY1YjExOWNlODAzNmNlYTU0ODRiYjU2Yjg3Mjc1Ni4uMGRlNjhmYjQwYTJj
OWJmMThlMjZmZTFmMjI4MTNiYjVhMTRjM2FmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9G
cmFtZVNlbGVjdGlvbi5jcHAKQEAgLTIwMDgsNyArMjAwOCw3IEBAIEZsb2F0UmVjdCBGcmFtZVNl
bGVjdGlvbjo6Ym91bmRzKGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQpIGNvbnN0CiAgICAgICAg
IHJldHVybiBMYXlvdXRSZWN0KCk7CiAKICAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3QgPSBy
b290LT5zZWxlY3Rpb25Cb3VuZHMoY2xpcFRvVmlzaWJsZUNvbnRlbnQpOwotICAgIHJldHVybiBj
bGlwVG9WaXNpYmxlQ29udGVudCA/IGludGVyc2VjdGlvbihzZWxlY3Rpb25SZWN0LCB2aWV3LT52
aXNpYmxlQ29udGVudFJlY3QoKSkgOiBzZWxlY3Rpb25SZWN0OworICAgIHJldHVybiBjbGlwVG9W
aXNpYmxlQ29udGVudCA/IGludGVyc2VjdGlvbihzZWxlY3Rpb25SZWN0LCB2aWV3LT52aXNpYmxl
Q29udGVudFJlY3QoU2Nyb2xsYWJsZUFyZWE6OkV4Y2x1ZGVTY3JvbGxiYXJzLCBTY3JvbGxhYmxl
QXJlYTo6TGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCkpIDogc2VsZWN0aW9uUmVjdDsKIH0K
IAogdm9pZCBGcmFtZVNlbGVjdGlvbjo6Z2V0Q2xpcHBlZFZpc2libGVUZXh0UmVjdGFuZ2xlcyhW
ZWN0b3I8RmxvYXRSZWN0PiYgcmVjdGFuZ2xlcykgY29uc3QKQEAgLTIwMTcsNyArMjAxNyw3IEBA
IHZvaWQgRnJhbWVTZWxlY3Rpb246OmdldENsaXBwZWRWaXNpYmxlVGV4dFJlY3RhbmdsZXMoVmVj
dG9yPEZsb2F0UmVjdD4mIHJlY3RhbmdsCiAgICAgaWYgKCFyb290KQogICAgICAgICByZXR1cm47
CiAKLSAgICBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0ID0gbV9mcmFtZS0+dmlldygpLT52
aXNpYmxlQ29udGVudFJlY3QoKTsKKyAgICBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0ID0g
bV9mcmFtZS0+dmlldygpLT52aXNpYmxlQ29udGVudFJlY3QoU2Nyb2xsYWJsZUFyZWE6OkV4Y2x1
ZGVTY3JvbGxiYXJzLCBTY3JvbGxhYmxlQXJlYTo6TGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVj
dCk7CiAKICAgICBWZWN0b3I8RmxvYXRRdWFkPiBxdWFkczsKICAgICB0b05vcm1hbGl6ZWRSYW5n
ZSgpLT50ZXh0UXVhZHMocXVhZHMsIHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVs
ZW1lbnQuY3BwCmluZGV4IDM4NWU4ODlhMzcwNzZkNjgwNGYwMDNmMTVjOGU1ZDE2MGZlZWQ2MWMu
LjlkYTE0MTBmZWIxZmU3NWMzYWU3YWE2MDZkY2Q4ZWJjMmE4NmZlNmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCBpbnQgSFRNTEJv
ZHlFbGVtZW50OjpzY3JvbGxMZWZ0KCkKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiAw
OwogI2lmIFBMQVRGT1JNKElPUykKLSAgICByZXR1cm4gYWRqdXN0Rm9yWm9vbSh2aWV3LT5hY3R1
YWxWaXNpYmxlQ29udGVudFJlY3QoKS54KCksICpmcmFtZSk7CisgICAgcmV0dXJuIGFkanVzdEZv
clpvb20odmlldy0+YWN0dWFsU2Nyb2xsWCgpLCAqZnJhbWUpOwogI2Vsc2UKICAgICByZXR1cm4g
YWRqdXN0Rm9yWm9vbSh2aWV3LT5zY3JvbGxYKCksICpmcmFtZSk7CiAjZW5kaWYKQEAgLTIzNyw3
ICsyMzcsNyBAQCBpbnQgSFRNTEJvZHlFbGVtZW50OjpzY3JvbGxUb3AoKQogICAgIGlmICghdmll
dykKICAgICAgICAgcmV0dXJuIDA7CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHJldHVybiBhZGp1
c3RGb3Jab29tKHZpZXctPmFjdHVhbFZpc2libGVDb250ZW50UmVjdCgpLnkoKSwgKmZyYW1lKTsK
KyAgICByZXR1cm4gYWRqdXN0Rm9yWm9vbSh2aWV3LT5hY3R1YWxTY3JvbGxZKCksICpmcmFtZSk7
CiAjZWxzZQogICAgIHJldHVybiBhZGp1c3RGb3Jab29tKHZpZXctPnNjcm9sbFkoKSwgKmZyYW1l
KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggYTZmNzVj
Yjk0ZTcwZmZhODE0ZGZjY2Y2N2YwZDMxOTNmMTIwMWY5MC4uZmQ0ZGU2NDkwYWI1NzQ5Yjc5MTQ0
NTVmZmIwM2Y3N2RlOGI5ODkwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3Bw
CkBAIC0zNDQsNyArMzQ0LDcgQEAgYm9vbCBJbWFnZURvY3VtZW50OjppbWFnZUZpdHNJbldpbmRv
dygpIGNvbnN0CiAKICAgICBMYXlvdXRTaXplIGltYWdlU2l6ZSA9IG1faW1hZ2VFbGVtZW50LT5j
YWNoZWRJbWFnZSgpLT5pbWFnZVNpemVGb3JSZW5kZXJlcihtX2ltYWdlRWxlbWVudC0+cmVuZGVy
ZXIoKSwgcGFnZVpvb21GYWN0b3IodGhpcykpOwogI2lmIFBMQVRGT1JNKElPUykKLSAgICBMYXlv
dXRTaXplIHdpbmRvd1NpemUgPSB2aWV3LT5jb250ZW50c1RvU2NyZWVuKHZpZXctPmFjdHVhbFZp
c2libGVDb250ZW50UmVjdCgpKS5zaXplKCk7CisgICAgTGF5b3V0U2l6ZSB3aW5kb3dTaXplID0g
dmlldy0+Y29udGVudHNUb1NjcmVlbih2aWV3LT52aXNpYmxlQ29udGVudFJlY3QoKSkuc2l6ZSgp
OwogI2Vsc2UKICAgICBMYXlvdXRTaXplIHdpbmRvd1NpemUgPSBMYXlvdXRTaXplKHZpZXctPndp
ZHRoKCksIHZpZXctPmhlaWdodCgpKTsKICNlbmRpZgpAQCAtMzYzLDcgKzM2Myw3IEBAIHZvaWQg
SW1hZ2VEb2N1bWVudDo6d2luZG93U2l6ZUNoYW5nZWQoKQogICAgICAgICByZXR1cm47CiAKICAg
ICBMYXlvdXRTaXplIGltYWdlU2l6ZSA9IG1faW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpLT5p
bWFnZVNpemVGb3JSZW5kZXJlcihtX2ltYWdlRWxlbWVudC0+cmVuZGVyZXIoKSwgcGFnZVpvb21G
YWN0b3IodGhpcykpOwotICAgIExheW91dFJlY3QgdmlzaWJsZVNjcmVlblNpemUgPSBmcmFtZSgp
LT52aWV3KCktPmNvbnRlbnRzVG9TY3JlZW4oZnJhbWUoKS0+dmlldygpLT5hY3R1YWxWaXNpYmxl
Q29udGVudFJlY3QoKSk7CisgICAgTGF5b3V0UmVjdCB2aXNpYmxlU2NyZWVuU2l6ZSA9IGZyYW1l
KCktPnZpZXcoKS0+Y29udGVudHNUb1NjcmVlbihmcmFtZSgpLT52aWV3KCktPnZpc2libGVDb250
ZW50UmVjdCgpKTsKIAogICAgIGZsb2F0IHdpZHRoU2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4o
dmlzaWJsZVNjcmVlblNpemUud2lkdGgoKSkgLyBpbWFnZVNpemUud2lkdGgoKTsKICAgICBmbG9h
dCBoZWlnaHRTY2FsZSA9IHN0YXRpY19jYXN0PGZsb2F0Pih2aXNpYmxlU2NyZWVuU2l6ZS5oZWln
aHQoKSkgLyBpbWFnZVNpemUuaGVpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5k
ZXggZDgwNzJkOWRhODA2MmJlMDgwMzkxMWJlMWE1ZjdiNTg2NWFjOWFkZC4uYmY1OWEzODFlMTMx
MWU1OGQ2YjgzN2RmY2E3NGI4ZDI2ZTMyZWRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cApAQCAtMTE1MywxMSArMTE1Myw3IEBAIGludCBET01XaW5kb3c6OmlubmVySGVpZ2h0KCkgY29u
c3QKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiAwOwogCi0jaWYgUExBVEZPUk0oSU9T
KQotICAgIHJldHVybiB2aWV3LT5tYXBGcm9tTGF5b3V0VG9DU1NVbml0cyhzdGF0aWNfY2FzdDxp
bnQ+KHZpZXctPmFjdHVhbFZpc2libGVDb250ZW50UmVjdCgpLmhlaWdodCgpKSk7Ci0jZWxzZQog
ICAgIHJldHVybiB2aWV3LT5tYXBGcm9tTGF5b3V0VG9DU1NVbml0cyhzdGF0aWNfY2FzdDxpbnQ+
KHZpZXctPnZpc2libGVDb250ZW50UmVjdChTY3JvbGxhYmxlQXJlYTo6SW5jbHVkZVNjcm9sbGJh
cnMpLmhlaWdodCgpKSk7Ci0jZW5kaWYKIH0KIAogaW50IERPTVdpbmRvdzo6aW5uZXJXaWR0aCgp
IGNvbnN0CkBAIC0xMTY5LDExICsxMTY1LDcgQEAgaW50IERPTVdpbmRvdzo6aW5uZXJXaWR0aCgp
IGNvbnN0CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm4gMDsKIAotI2lmIFBMQVRGT1JN
KElPUykKLSAgICByZXR1cm4gdmlldy0+bWFwRnJvbUxheW91dFRvQ1NTVW5pdHMoc3RhdGljX2Nh
c3Q8aW50Pih2aWV3LT5hY3R1YWxWaXNpYmxlQ29udGVudFJlY3QoKS53aWR0aCgpKSk7Ci0jZWxz
ZQogICAgIHJldHVybiB2aWV3LT5tYXBGcm9tTGF5b3V0VG9DU1NVbml0cyhzdGF0aWNfY2FzdDxp
bnQ+KHZpZXctPnZpc2libGVDb250ZW50UmVjdChTY3JvbGxhYmxlQXJlYTo6SW5jbHVkZVNjcm9s
bGJhcnMpLndpZHRoKCkpKTsKLSNlbmRpZgogfQogCiBpbnQgRE9NV2luZG93OjpzY3JlZW5YKCkg
Y29uc3QKQEAgLTEyMTUsNyArMTIwNyw3IEBAIGludCBET01XaW5kb3c6OnNjcm9sbFgoKSBjb25z
dAogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHls
ZXNoZWV0cygpOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxp
bnQ+KHZpZXctPmFjdHVhbFZpc2libGVDb250ZW50UmVjdCgpLngoKSAvIChtX2ZyYW1lLT5wYWdl
Wm9vbUZhY3RvcigpICogbV9mcmFtZS0+ZnJhbWVTY2FsZUZhY3RvcigpKSk7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGludD4odmlldy0+YWN0dWFsU2Nyb2xsWCgpIC8gKG1fZnJhbWUtPnBhZ2Va
b29tRmFjdG9yKCkgKiBtX2ZyYW1lLT5mcmFtZVNjYWxlRmFjdG9yKCkpKTsKICNlbHNlCiAgICAg
cmV0dXJuIHZpZXctPm1hcEZyb21MYXlvdXRUb0NTU1VuaXRzKHZpZXctPnNjcm9sbFgoKSk7CiAj
ZW5kaWYKQEAgLTEyMzYsNyArMTIyOCw3IEBAIGludCBET01XaW5kb3c6OnNjcm9sbFkoKSBjb25z
dAogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHls
ZXNoZWV0cygpOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxp
bnQ+KHZpZXctPmFjdHVhbFZpc2libGVDb250ZW50UmVjdCgpLnkoKSAvIChtX2ZyYW1lLT5wYWdl
Wm9vbUZhY3RvcigpICogbV9mcmFtZS0+ZnJhbWVTY2FsZUZhY3RvcigpKSk7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGludD4odmlldy0+YWN0dWFsU2Nyb2xsWSgpIC8gKG1fZnJhbWUtPnBhZ2Va
b29tRmFjdG9yKCkgKiBtX2ZyYW1lLT5mcmFtZVNjYWxlRmFjdG9yKCkpKTsKICNlbHNlCiAgICAg
cmV0dXJuIHZpZXctPm1hcEZyb21MYXlvdXRUb0NTU1VuaXRzKHZpZXctPnNjcm9sbFkoKSk7CiAj
ZW5kaWYKQEAgLTE0NTIsNyArMTQ0NCw3IEBAIHZvaWQgRE9NV2luZG93OjpzY3JvbGxCeShpbnQg
eCwgaW50IHkpIGNvbnN0CiAKICAgICBJbnRTaXplIHNjYWxlZE9mZnNldCh2aWV3LT5tYXBGcm9t
Q1NTVG9MYXlvdXRVbml0cyh4KSwgdmlldy0+bWFwRnJvbUNTU1RvTGF5b3V0VW5pdHMoeSkpOwog
I2lmIFBMQVRGT1JNKElPUykKLSAgICB2aWV3LT5zZXRBY3R1YWxTY3JvbGxQb3NpdGlvbih2aWV3
LT5hY3R1YWxWaXNpYmxlQ29udGVudFJlY3QoKS5sb2NhdGlvbigpICsgc2NhbGVkT2Zmc2V0KTsK
KyAgICB2aWV3LT5zZXRBY3R1YWxTY3JvbGxQb3NpdGlvbih2aWV3LT5hY3R1YWxTY3JvbGxQb3Np
dGlvbigpICsgc2NhbGVkT2Zmc2V0KTsKICNlbHNlCiAgICAgdmlldy0+c2Nyb2xsQnkoc2NhbGVk
T2Zmc2V0KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDJmNGIxMzE0
YjAyNTM3OTFkOTNhMjBhOWFjMjFjN2NjZmY1NjJkZmIuLmRlOGQwOWZlNTU4YzRiMzUxMWE3Mjhk
OGFmOWQ5OGE3MjgzNzFlNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTcxMSw3
ICs3MTEsNyBAQCB2b2lkIEZyYW1lVmlldzo6Y2FsY3VsYXRlU2Nyb2xsYmFyTW9kZXNGb3JMYXlv
dXQoU2Nyb2xsYmFyTW9kZSYgaE1vZGUsIFNjcm9sbGJhcgogICAgICAgICBoTW9kZSA9IFNjcm9s
bGJhckF1dG87CiAgICAgICAgIC8vIFNlYW1sZXNzIGRvY3VtZW50cyBiZWdpbiB3aXRoIGhlaWdo
dHMgb2YgMDsgd2Ugc3BlY2lhbCBjYXNlIHRoYXQgaGVyZQogICAgICAgICAvLyB0byBjb3JyZWN0
bHkgcmVuZGVyIGRvY3VtZW50cyB0aGF0IGRvbid0IG5lZWQgc2Nyb2xsYmFycy4KLSAgICAgICAg
SW50U2l6ZSBmdWxsVmlzaWJsZVNpemUgPSB2aXNpYmxlQ29udGVudFJlY3QoSW5jbHVkZVNjcm9s
bGJhcnMpLnNpemUoKTsKKyAgICAgICAgSW50U2l6ZSBmdWxsVmlzaWJsZVNpemUgPSB2aXNpYmxl
Q29udGVudFJlY3QoSW5jbHVkZVNjcm9sbGJhcnMsIExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJl
Y3QpLnNpemUoKTsKICAgICAgICAgYm9vbCBpc1NlYW1sZXNzRG9jdW1lbnQgPSBmcmFtZSgpLmRv
Y3VtZW50KCkgJiYgZnJhbWUoKS5kb2N1bWVudCgpLT5zaG91bGREaXNwbGF5U2VhbWxlc3NseVdp
dGhQYXJlbnQoKTsKICAgICAgICAgdk1vZGUgPSAoaXNTZWFtbGVzc0RvY3VtZW50ICYmICFmdWxs
VmlzaWJsZVNpemUuaGVpZ2h0KCkpID8gU2Nyb2xsYmFyQWx3YXlzT2ZmIDogU2Nyb2xsYmFyQXV0
bzsKICAgICB9IGVsc2UgewpAQCAtMTI2MiwxMSArMTI2Miw3IEBAIHZvaWQgRnJhbWVWaWV3Ojps
YXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUpCiAgICAgICAgICAgICAgICAgICAgIGlmICh1c2VGaXhl
ZExheW91dCgpICYmICFmaXhlZExheW91dFNpemUoKS5pc0VtcHR5KCkgJiYgZGVsZWdhdGVzU2Ny
b2xsaW5nKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2xhc3RWaWV3cG9ydFNpemUgPSBm
aXhlZExheW91dFNpemUoKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQotI2lmIFBMQVRGT1JN
KElPUykKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fbGFzdFZpZXdwb3J0U2l6ZSA9IGFjdHVh
bFZpc2libGVDb250ZW50UmVjdCgpLnNpemUoKTsKLSNlbHNlCiAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2xhc3RWaWV3cG9ydFNpemUgPSB2aXNpYmxlQ29udGVudFJlY3QoSW5jbHVkZVNjcm9s
bGJhcnMpLnNpemUoKTsKLSNlbmRpZgogCiAgICAgICAgICAgICAgICAgICAgIG1fbGFzdFpvb21G
YWN0b3IgPSByb290LT5zdHlsZSgpLnpvb20oKTsKIApAQCAtMTc3Niw3ICsxNzcyLDggQEAgdm9p
ZCBGcmFtZVZpZXc6OnNjcm9sbENvbnRlbnRzU2xvd1BhdGgoY29uc3QgSW50UmVjdCYgdXBkYXRl
UmVjdCkKIHsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKGNvbnRl
bnRzSW5Db21wb3NpdGVkTGF5ZXIoKSkgewotICAgICAgICBJbnRSZWN0IHVwZGF0ZVJlY3QgPSB2
aXNpYmxlQ29udGVudFJlY3QoKTsKKyAgICAgICAgLy8gRklYTUU6IHJlc3BlY3QgcGFpbnRzRW50
aXJlQ29udGVudHMoKT8KKyAgICAgICAgSW50UmVjdCB1cGRhdGVSZWN0ID0gdmlzaWJsZUNvbnRl
bnRSZWN0KEV4Y2x1ZGVTY3JvbGxiYXJzLCBMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KTsK
IAogICAgICAgICAvLyBNYWtlIHN1cmUgdG8gImFwcGx5IiB0aGUgc2NhbGUgZmFjdG9yIGhlcmUg
c2luY2Ugd2UncmUgY29udmVydGluZyBmcm9tIGZyYW1lIHZpZXcKICAgICAgICAgLy8gY29vcmRp
bmF0ZXMgdG8gbGF5ZXIgYmFja2luZyBjb29yZGluYXRlcy4KQEAgLTIxNjQsNyArMjE2MSw3IEBA
IHZvaWQgRnJhbWVWaWV3OjpyZXBhaW50Q29udGVudFJlY3RhbmdsZShjb25zdCBJbnRSZWN0JiBy
LCBib29sIGltbWVkaWF0ZSkKICAgICBpZiAoKG1fZGVmZXJyaW5nUmVwYWludHMgfHwgbV9kZWZl
cnJlZFJlcGFpbnRUaW1lci5pc0FjdGl2ZSgpIHx8IGRlbGF5KSAmJiAhaW1tZWRpYXRlKSB7CiAg
ICAgICAgIEludFJlY3QgcGFpbnRSZWN0ID0gcjsKICAgICAgICAgaWYgKGNsaXBzUmVwYWludHMo
KSAmJiAhcGFpbnRzRW50aXJlQ29udGVudHMoKSkKLSAgICAgICAgICAgIHBhaW50UmVjdC5pbnRl
cnNlY3QodmlzaWJsZUNvbnRlbnRSZWN0KCkpOworICAgICAgICAgICAgcGFpbnRSZWN0LmludGVy
c2VjdCh2aXNpYmxlQ29udGVudFJlY3QoRXhjbHVkZVNjcm9sbGJhcnMsIExlZ2FjeUlPU0RvY3Vt
ZW50VmlzaWJsZVJlY3QpKTsKICAgICAgICAgaWYgKHBhaW50UmVjdC5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIGlmIChtX3JlcGFpbnRDb3VudCA9PSBjUmVwYWludFJl
Y3RVbmlvblRocmVzaG9sZCkgewpAQCAtMjkwNCwxMSArMjkwMSw3IEBAIHZvaWQgRnJhbWVWaWV3
OjpzZW5kUmVzaXplRXZlbnRJZk5lZWRlZCgpCiAgICAgaWYgKHVzZUZpeGVkTGF5b3V0KCkgJiYg
IWZpeGVkTGF5b3V0U2l6ZSgpLmlzRW1wdHkoKSAmJiBkZWxlZ2F0ZXNTY3JvbGxpbmcoKSkKICAg
ICAgICAgY3VycmVudFNpemUgPSBmaXhlZExheW91dFNpemUoKTsKICAgICBlbHNlCi0jaWYgUExB
VEZPUk0oSU9TKQotICAgICAgICBjdXJyZW50U2l6ZSA9IGFjdHVhbFZpc2libGVDb250ZW50UmVj
dCgpLnNpemUoKTsKLSNlbHNlCiAgICAgICAgIGN1cnJlbnRTaXplID0gdmlzaWJsZUNvbnRlbnRS
ZWN0KEluY2x1ZGVTY3JvbGxiYXJzKS5zaXplKCk7Ci0jZW5kaWYKIAogICAgIGZsb2F0IGN1cnJl
bnRab29tRmFjdG9yID0gcmVuZGVyVmlldy0+c3R5bGUoKS56b29tKCk7CiAgICAgYm9vbCBzaG91
bGRTZW5kUmVzaXplRXZlbnQgPSAhbV9maXJzdExheW91dCAmJiAoY3VycmVudFNpemUgIT0gbV9s
YXN0Vmlld3BvcnRTaXplIHx8IGN1cnJlbnRab29tRmFjdG9yICE9IG1fbGFzdFpvb21GYWN0b3Ip
OwpAQCAtMzEzMSw3ICszMTI0LDcgQEAgSW50UmVjdCBGcmFtZVZpZXc6OndpbmRvd0NsaXBSZWN0
KGJvb2wgY2xpcFRvQ29udGVudHMpIGNvbnN0CiAgICAgICAgIHJldHVybiBJbnRSZWN0KEludFBv
aW50KCksIHRvdGFsQ29udGVudHNTaXplKCkpOwogCiAgICAgLy8gU2V0IG91ciBjbGlwIHJlY3Qg
dG8gYmUgb3VyIGNvbnRlbnRzLgotICAgIEludFJlY3QgY2xpcFJlY3QgPSBjb250ZW50c1RvV2lu
ZG93KHZpc2libGVDb250ZW50UmVjdChjbGlwVG9Db250ZW50cyA/IEV4Y2x1ZGVTY3JvbGxiYXJz
IDogSW5jbHVkZVNjcm9sbGJhcnMpKTsKKyAgICBJbnRSZWN0IGNsaXBSZWN0ID0gY29udGVudHNU
b1dpbmRvdyh2aXNpYmxlQ29udGVudFJlY3QoY2xpcFRvQ29udGVudHMgPyBFeGNsdWRlU2Nyb2xs
YmFycyA6IEluY2x1ZGVTY3JvbGxiYXJzLCBMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KSk7
CiAgICAgaWYgKCFmcmFtZSgpLm93bmVyRWxlbWVudCgpKQogICAgICAgICByZXR1cm4gY2xpcFJl
Y3Q7CiAKQEAgLTMyNDUsNyArMzIzOCw3IEBAIGJvb2wgRnJhbWVWaWV3Ojppc1Njcm9sbGFibGUo
KQogCiAgICAgLy8gQ292ZXJzICMxCiAgICAgSW50U2l6ZSB0b3RhbENvbnRlbnRzU2l6ZSA9IHRo
aXMtPnRvdGFsQ29udGVudHNTaXplKCk7Ci0gICAgSW50U2l6ZSB2aXNpYmxlQ29udGVudFNpemUg
PSB2aXNpYmxlQ29udGVudFJlY3QoKS5zaXplKCk7CisgICAgSW50U2l6ZSB2aXNpYmxlQ29udGVu
dFNpemUgPSB2aXNpYmxlQ29udGVudFJlY3QoRXhjbHVkZVNjcm9sbGJhcnMsIExlZ2FjeUlPU0Rv
Y3VtZW50VmlzaWJsZVJlY3QpLnNpemUoKTsKICAgICBpZiAoKHRvdGFsQ29udGVudHNTaXplLmhl
aWdodCgpIDw9IHZpc2libGVDb250ZW50U2l6ZS5oZWlnaHQoKSAmJiB0b3RhbENvbnRlbnRzU2l6
ZS53aWR0aCgpIDw9IHZpc2libGVDb250ZW50U2l6ZS53aWR0aCgpKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCkBAIC0zNTQ4LDkgKzM1NDEsMTAgQEAgdm9pZCBGcmFtZVZpZXc6OnBhaW50Q29u
dHJvbFRpbnRzKCkKICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogY29uc3Qgbm9Db250ZXh0
ID0gMDsKICAgICBHcmFwaGljc0NvbnRleHQgY29udGV4dChub0NvbnRleHQpOwogICAgIGNvbnRl
eHQuc2V0VXBkYXRpbmdDb250cm9sVGludHModHJ1ZSk7Ci0gICAgaWYgKHBsYXRmb3JtV2lkZ2V0
KCkpCi0gICAgICAgIHBhaW50Q29udGVudHMoJmNvbnRleHQsIHZpc2libGVDb250ZW50UmVjdCgp
KTsKLSAgICBlbHNlCisgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpIHsKKyAgICAgICAgLy8gRklY
TUU6IGNvbnN1bHQgcGFpbnRzRW50aXJlQ29udGVudHMoKS4KKyAgICAgICAgcGFpbnRDb250ZW50
cygmY29udGV4dCwgdmlzaWJsZUNvbnRlbnRSZWN0KEV4Y2x1ZGVTY3JvbGxiYXJzLCBMZWdhY3lJ
T1NEb2N1bWVudFZpc2libGVSZWN0KSk7CisgICAgfSBlbHNlCiAgICAgICAgIHBhaW50KCZjb250
ZXh0LCBmcmFtZVJlY3QoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5j
cHAKaW5kZXggN2U5N2UzOWNlNjBmYmJkNjZjMDc3ZDgwYTNlZDdhYWJhZWExYzFlMy4uMjhjYjk1
M2U5NjBjNjhiMThkNDFhNzc3MWMxY2FjZmViODJjODM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVmlldy5jcHAKQEAgLTI2MSwxNyArMjYxLDI0IEBAIEludFNpemUgU2Nyb2xsVmll
dzo6dW5zY2FsZWRWaXNpYmxlQ29udGVudFNpemUoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNT
Y3JvbGxiCiB9CiAKICNpZiAhUExBVEZPUk0oR1RLKQotSW50UmVjdCBTY3JvbGxWaWV3Ojp2aXNp
YmxlQ29udGVudFJlY3QoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzIHNjb2xs
YmFySW5jbHVzaW9uKSBjb25zdAorSW50UmVjdCBTY3JvbGxWaWV3Ojp2aXNpYmxlQ29udGVudFJl
Y3QoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzIHNjcm9sbGJhckluY2x1c2lv
biwgVmlzaWJsZUNvbnRlbnRSZWN0QmVoYXZpb3IgdmlzaWJsZUNvbnRlbnRSZWN0QmVoYXZpb3Ip
IGNvbnN0CiB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmICh2aXNpYmxlQ29udGVudFJlY3RC
ZWhhdmlvciA9PSBMZWdhY3lJT1NEb2N1bWVudFZpZXdSZWN0KSB7CisgICAgICAgIGlmIChwbGF0
Zm9ybVdpZGdldCgpKQorICAgICAgICAgICAgcmV0dXJuIHBsYXRmb3JtVmlzaWJsZUNvbnRlbnRS
ZWN0KHNjcm9sbGJhckluY2x1c2lvbiA9PSBJbmNsdWRlU2Nyb2xsYmFycyk7CisgICAgfQorICAg
IAogICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKQotICAgICAgICByZXR1cm4gcGxhdGZvcm1WaXNp
YmxlQ29udGVudFJlY3Qoc2NvbGxiYXJJbmNsdXNpb24gPT0gSW5jbHVkZVNjcm9sbGJhcnMpOwot
Ci0jaWYgIVBMQVRGT1JNKElPUykKLSAgICBpZiAoIW1fZml4ZWRWaXNpYmxlQ29udGVudFJlY3Qu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbV9maXhlZFZpc2libGVDb250ZW50UmVjdDsKKyAg
ICAgICAgcmV0dXJuIGFjdHVhbFZpc2libGVDb250ZW50UmVjdCgpOworI2Vsc2UKKyAgICBVTlVT
RURfUEFSQU0odmlzaWJsZUNvbnRlbnRSZWN0QmVoYXZpb3IpOwogI2VuZGlmCiAKLSAgICBGbG9h
dFNpemUgdmlzaWJsZUNvbnRlbnRTaXplID0gdW5zY2FsZWRWaXNpYmxlQ29udGVudFNpemUoc2Nv
bGxiYXJJbmNsdXNpb24pOworICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKQorICAgICAgICByZXR1
cm4gcGxhdGZvcm1WaXNpYmxlQ29udGVudFJlY3Qoc2Nyb2xsYmFySW5jbHVzaW9uID09IEluY2x1
ZGVTY3JvbGxiYXJzKTsKKworICAgIEZsb2F0U2l6ZSB2aXNpYmxlQ29udGVudFNpemUgPSB1bnNj
YWxlZFZpc2libGVDb250ZW50U2l6ZShzY3JvbGxiYXJJbmNsdXNpb24pOwogICAgIHZpc2libGVD
b250ZW50U2l6ZS5zY2FsZSgxIC8gdmlzaWJsZUNvbnRlbnRTY2FsZUZhY3RvcigpKTsKICAgICBy
ZXR1cm4gSW50UmVjdChJbnRQb2ludChtX3Njcm9sbE9mZnNldCksIGV4cGFuZGVkSW50U2l6ZSh2
aXNpYmxlQ29udGVudFNpemUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaApp
bmRleCBjMTdjMjkxNmIwNjA3MDhkMTZmNDE4MWRiOTYwN2JkYjdlNmVjNTY5Li41NTc0OGM5YTFi
Y2ZhNTBhYzQxZTI3MWNiMTNlOThjMzc2YWJlZTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVmlldy5oCkBAIC0xNTksMTIgKzE1OSwxMiBAQCBwdWJsaWM6CiAgICAgLy8gSW4gdGhlIHNp
dHVhdGlvbiB0aGUgY2xpZW50IGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgc2Nyb2xsaW5nIChpZS4g
d2l0aCBhIHRpbGVkIGJhY2tpbmcgc3RvcmUpIGl0IGlzIHBvc3NpYmxlIHRvIHVzZQogICAgIC8v
IHRoZSBzZXRGaXhlZFZpc2libGVDb250ZW50UmVjdCBpbnN0ZWFkIGZvciB0aGUgbWFpbmZyYW1l
LCB0aG91Z2ggdGhpcyBtdXN0IGJlIHVwZGF0ZWQgbWFudWFsbHksIGUuZyBqdXN0IGJlZm9yZSBy
ZXN1bWluZyB0aGUgcGFnZQogICAgIC8vIHdoaWNoIHVzdWFsbHkgd2lsbCBoYXBwZW4gd2hlbiBw
YW5uaW5nLCBwaW5jaGluZyBhbmQgcm90YXRpb24gZW5kcywgb3Igd2hlbiBzY2FsZSBvciBwb3Np
dGlvbiBhcmUgY2hhbmdlZCBtYW51YWxseS4KLSAgICB2aXJ0dWFsIEludFJlY3QgdmlzaWJsZUNv
bnRlbnRSZWN0KFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFycyA9IEV4Y2x1ZGVT
Y3JvbGxiYXJzKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEludFJlY3QgdmlzaWJsZUNv
bnRlbnRSZWN0KFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFycyA9IEV4Y2x1ZGVT
Y3JvbGxiYXJzLCBWaXNpYmxlQ29udGVudFJlY3RCZWhhdmlvciA9IENvbnRlbnRzVmlzaWJsZVJl
Y3QpIGNvbnN0IG92ZXJyaWRlOwogI2lmICFQTEFURk9STShJT1MpCiAgICAgdmlydHVhbCB2b2lk
IHNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KGNvbnN0IEludFJlY3QmIHZpc2libGVDb250ZW50
UmVjdCkgeyBtX2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0ID0gdmlzaWJsZUNvbnRlbnRSZWN0OyB9
CiAgICAgSW50UmVjdCBmaXhlZFZpc2libGVDb250ZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1f
Zml4ZWRWaXNpYmxlQ29udGVudFJlY3Q7IH0KICNlbmRpZgotICAgIEludFNpemUgdmlzaWJsZVNp
emUoKSBjb25zdCB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoKS5zaXplKCk7IH0KKyAgICBJ
bnRTaXplIHZpc2libGVTaXplKCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KEV4
Y2x1ZGVTY3JvbGxiYXJzLCBMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KS5zaXplKCk7IH0K
ICNpZiBQTEFURk9STShJT1MpCiAgICAgLy8gVGhpcyBpcyB0aGUgYXJlYSB0aGF0IGlzIG5vdCBj
b3ZlcmVkIGJ5IFVJIGVsZW1lbnRzLgogICAgIEludFJlY3QgYWN0dWFsVmlzaWJsZUNvbnRlbnRS
ZWN0KCkgY29uc3Q7CkBAIC0xNzQsOCArMTc0LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0QWN0
dWFsU2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmKTsKICAgICBUaWxlQ2FjaGUqIHRpbGVD
YWNoZSgpOwogI2VuZGlmCi0gICAgdmlydHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkud2lkdGgoKTsgfQotICAgIHZpcnR1
YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB2aXNpYmxlQ29u
dGVudFJlY3QoKS5oZWlnaHQoKTsgfQorICAgIHZpcnR1YWwgaW50IHZpc2libGVXaWR0aCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdChFeGNsdWRlU2Nyb2xsYmFy
cywgTGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCkud2lkdGgoKTsgfQorICAgIHZpcnR1YWwg
aW50IHZpc2libGVIZWlnaHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB2aXNpYmxlQ29udGVu
dFJlY3QoRXhjbHVkZVNjcm9sbGJhcnMsIExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpLmhl
aWdodCgpOyB9CiAKICAgICAvLyB2aXNpYmxlQ29udGVudFJlY3QoKS5zaXplKCkgaXMgY29tcHV0
ZWQgZnJvbSB1bnNjYWxlZFZpc2libGVDb250ZW50U2l6ZSgpIGRpdmlkZWQgYnkgdGhlIHZhbHVl
IG9mIHZpc2libGVDb250ZW50U2NhbGVGYWN0b3IuCiAgICAgLy8gdmlzaWJsZUNvbnRlbnRTY2Fs
ZUZhY3RvciBpcyB1c3VhbGx5IDEsIGV4Y2VwdCB3aGVuIHRoZSBzZXR0aW5nIGRlbGVnYXRlc1Bh
Z2VTY2FsaW5nIGlzIHRydWUgYW5kIHRoZQpAQCAtMjAyLDggKzIwMiw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNTaXplKGNvbnN0IEludFNpemUmKTsKIAogICAgIC8v
IEZ1bmN0aW9ucyBmb3IgcXVlcnlpbmcgdGhlIGN1cnJlbnQgc2Nyb2xsZWQgcG9zaXRpb24gKGJv
dGggYXMgYSBwb2ludCwgYSBzaXplLCBvciBhcyBpbmRpdmlkdWFsIFggYW5kIFkgdmFsdWVzKS4K
LSAgICB2aXJ0dWFsIEludFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkubG9jYXRpb24oKTsgfQotICAgIEludFNpemUgc2Ny
b2xsT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gdG9JbnRTaXplKHZpc2libGVDb250ZW50UmVjdCgp
LmxvY2F0aW9uKCkpOyB9IC8vIEdldHMgdGhlIHNjcm9sbGVkIHBvc2l0aW9uIGFzIGFuIEludFNp
emUuIENvbnZlbmllbnQgZm9yIGFkZGluZyB0byBvdGhlciBzaXplcy4KKyAgICB2aXJ0dWFsIElu
dFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdmlzaWJsZUNv
bnRlbnRSZWN0KEV4Y2x1ZGVTY3JvbGxiYXJzLCBMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0
KS5sb2NhdGlvbigpOyB9CisgICAgSW50U2l6ZSBzY3JvbGxPZmZzZXQoKSBjb25zdCB7IHJldHVy
biB0b0ludFNpemUodmlzaWJsZUNvbnRlbnRSZWN0KEV4Y2x1ZGVTY3JvbGxiYXJzLCBMZWdhY3lJ
T1NEb2N1bWVudFZpc2libGVSZWN0KS5sb2NhdGlvbigpKTsgfSAvLyBHZXRzIHRoZSBzY3JvbGxl
ZCBwb3NpdGlvbiBhcyBhbiBJbnRTaXplLiBDb252ZW5pZW50IGZvciBhZGRpbmcgdG8gb3RoZXIg
c2l6ZXMuCiAgICAgdmlydHVhbCBJbnRQb2ludCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25z
dCBvdmVycmlkZTsgLy8gVGhlIG1heGltdW0gcG9zaXRpb24gd2UgY2FuIGJlIHNjcm9sbGVkIHRv
LgogICAgIHZpcnR1YWwgSW50UG9pbnQgbWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3Zl
cnJpZGU7IC8vIFRoZSBtaW5pbXVtIHBvc2l0aW9uIHdlIGNhbiBiZSBzY3JvbGxlZCB0by4KICAg
ICAvLyBBZGp1c3QgdGhlIHBhc3NlZCBpbiBzY3JvbGwgcG9zaXRpb24gdG8ga2VlcCBpdCBiZXR3
ZWVuIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHBvc2l0aW9ucy4KQEAgLTIxMiw4ICsyMTIsMTAg
QEAgcHVibGljOgogICAgIGludCBzY3JvbGxZKCkgY29uc3QgeyByZXR1cm4gc2Nyb2xsUG9zaXRp
b24oKS55KCk7IH0KIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICBpbnQgYWN0dWFsU2Nyb2xsWCgp
IGNvbnN0IHsgcmV0dXJuIGFjdHVhbFZpc2libGVDb250ZW50UmVjdCgpLngoKTsgfQotICAgIGlu
dCBhY3R1YWxTY3JvbGxZKCkgY29uc3QgeyByZXR1cm4gYWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0
KCkueSgpOyB9CisgICAgaW50IGFjdHVhbFNjcm9sbFgoKSBjb25zdCB7IHJldHVybiB2aXNpYmxl
Q29udGVudFJlY3QoKS54KCk7IH0KKyAgICBpbnQgYWN0dWFsU2Nyb2xsWSgpIGNvbnN0IHsgcmV0
dXJuIHZpc2libGVDb250ZW50UmVjdCgpLnkoKTsgfQorICAgIC8vIEZJWE1FOiBtYXliZSBmaXgg
c2Nyb2xsUG9zaXRpb24oKSBvbiBpT1MgdG8gcmV0dXJuIHRoZSBhY3R1YWwgc2Nyb2xsIHBvc2l0
aW9uLgorICAgIEludFBvaW50IGFjdHVhbFNjcm9sbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4g
dmlzaWJsZUNvbnRlbnRSZWN0KCkubG9jYXRpb24oKTsgfQogI2VuZGlmCiAKICAgICAvLyBzY3Jv
bGxPZmZzZXQoKSBhbmNob3JzIGl0cyAoMCwwKSBwb2ludCBhdCB0aGUgdG9wIGVuZCBvZiB0aGUg
aGVhZGVyIGlmIHRoaXMgU2Nyb2xsYWJsZUFyZWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGFibGVBcmVhLmNwcAppbmRleCBkZjc1MzEyM2IzMDA2YmRkZDNmNWU5ZDE1MGY2ZTk0ZjA1
ZDdjN2IxLi41MjAzMGVmY2E5MzkxYjZiNWI0MjBjNjU1NWU2YTYxNWU5MmU0MGRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC00NDUsNyArNDQ1LDcg
QEAgSW50U2l6ZSBTY3JvbGxhYmxlQXJlYTo6dG90YWxDb250ZW50c1NpemUoKSBjb25zdAogICAg
IHJldHVybiB0b3RhbENvbnRlbnRzU2l6ZTsKIH0KIAotSW50UmVjdCBTY3JvbGxhYmxlQXJlYTo6
dmlzaWJsZUNvbnRlbnRSZWN0KFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFycyBz
Y3JvbGxiYXJJbmNsdXNpb24pIGNvbnN0CitJbnRSZWN0IFNjcm9sbGFibGVBcmVhOjp2aXNpYmxl
Q29udGVudFJlY3QoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzIHNjcm9sbGJh
ckluY2x1c2lvbiwgVmlzaWJsZUNvbnRlbnRSZWN0QmVoYXZpb3IpIGNvbnN0CiB7CiAgICAgaW50
IHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGggPSAwOwogICAgIGludCBob3Jpem9udGFsU2Nyb2xsYmFy
SGVpZ2h0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFi
bGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCmluZGV4
IGFhOTEyZWY0NDM0OThmNGEyZTdiYTFhMzE2OWRlMTZkYTM3YWVlZDYuLjI4MzMwMzk4NTZhODg1
NTBmYTY3MGFmMTg2OTU2YzJmZDgxZmMxMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYWJsZUFyZWEuaApAQCAtMTUzLDcgKzE1MywxNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJ
bnRQb2ludCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdDsKIAogICAgIGVudW0gVmlzaWJs
ZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzIHsgRXhjbHVkZVNjcm9sbGJhcnMsIEluY2x1
ZGVTY3JvbGxiYXJzIH07Ci0gICAgdmlydHVhbCBJbnRSZWN0IHZpc2libGVDb250ZW50UmVjdChW
aXNpYmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnMgPSBFeGNsdWRlU2Nyb2xsYmFycykg
Y29uc3Q7CisgICAgZW51bSBWaXNpYmxlQ29udGVudFJlY3RCZWhhdmlvciB7CisgICAgICAgIENv
bnRlbnRzVmlzaWJsZVJlY3QsCisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICBMZWdhY3lJT1NE
b2N1bWVudFZpZXdSZWN0LAorICAgICAgICBMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0ID0g
TGVnYWN5SU9TRG9jdW1lbnRWaWV3UmVjdAorI2Vsc2UKKyAgICAgICAgTGVnYWN5SU9TRG9jdW1l
bnRWaXNpYmxlUmVjdCA9IENvbnRlbnRzVmlzaWJsZVJlY3QKKyNlbmRpZgorICAgIH07CisKKyAg
ICB2aXJ0dWFsIEludFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0KFZpc2libGVDb250ZW50UmVjdElu
Y2x1ZGVzU2Nyb2xsYmFycyA9IEV4Y2x1ZGVTY3JvbGxiYXJzLCBWaXNpYmxlQ29udGVudFJlY3RC
ZWhhdmlvciA9IENvbnRlbnRzVmlzaWJsZVJlY3QpIGNvbnN0OwogICAgIHZpcnR1YWwgaW50IHZp
c2libGVIZWlnaHQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgSW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBiYWU2ZDM4YzEy
NDZhNDIzOTFiN2JjYzcxNmUxMzJkZjUxNGQwNjU1Li44MTJiNGNkMmI3MTQ1OTNjNzkzMWE2Yzhh
OWM1NWMxNmQ4NzRlM2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKQEAgLTI0NDksNyArMjQ0OSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zp
c2libGUoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgU2Nyb2xsQWxpZ25tCiAgICAgICAg
ICAgICAgICAgZnJhbWVFbGVtZW50QmFzZSA9IHRvSFRNTEZyYW1lRWxlbWVudEJhc2Uob3duZXJF
bGVtZW50KTsKIAogICAgICAgICAgICAgaWYgKGZyYW1lRWxlbWVudEFuZFZpZXdQZXJtaXRTY3Jv
bGwoZnJhbWVFbGVtZW50QmFzZSwgJmZyYW1lVmlldykpIHsKLSAgICAgICAgICAgICAgICBMYXlv
dXRSZWN0IHZpZXdSZWN0ID0gZnJhbWVWaWV3LnZpc2libGVDb250ZW50UmVjdCgpOworICAgICAg
ICAgICAgICAgIExheW91dFJlY3Qgdmlld1JlY3QgPSBmcmFtZVZpZXcudmlzaWJsZUNvbnRlbnRS
ZWN0KEV4Y2x1ZGVTY3JvbGxiYXJzLCBMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KTsKICAg
ICAgICAgICAgICAgICBMYXlvdXRSZWN0IGV4cG9zZVJlY3QgPSBnZXRSZWN0VG9FeHBvc2Uodmll
d1JlY3QsIHZpZXdSZWN0LCByZWN0LCBhbGlnblgsIGFsaWduWSk7CiAKICAgICAgICAgICAgICAg
ICBpbnQgeE9mZnNldCA9IHJvdW5kVG9JbnQoZXhwb3NlUmVjdC54KCkpOwpAQCAtMjQ3NSw2ICsy
NDc1LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZShjb25zdCBMYXlv
dXRSZWN0JiByZWN0LCBjb25zdCBTY3JvbGxBbGlnbm0KICAgICAgICAgICAgIEludFNpemUgc2Ny
b2xsT2Zmc2V0UmVsYXRpdmVUb0RvY3VtZW50ID0gZnJhbWVWaWV3LnNjcm9sbE9mZnNldFJlbGF0
aXZlVG9Eb2N1bWVudCgpOwogICAgICAgICAgICAgdmlzaWJsZVJlY3RSZWxhdGl2ZVRvRG9jdW1l
bnQuc2V0TG9jYXRpb24oSW50UG9pbnQoc2Nyb2xsT2Zmc2V0UmVsYXRpdmVUb0RvY3VtZW50Lndp
ZHRoKCksIHNjcm9sbE9mZnNldFJlbGF0aXZlVG9Eb2N1bWVudC5oZWlnaHQoKSkpOwogI2Vsc2UK
KyAgICAgICAgICAgIC8vIEZJWE1FOiBpcyB0aGlzIGVxdWl2YWxlbnQgdG8gdGhlIGNvZGUgYWJv
dmU/CiAgICAgICAgICAgICBMYXlvdXRSZWN0IHZpZXdSZWN0ID0gZnJhbWVWaWV3LmFjdHVhbFZp
c2libGVDb250ZW50UmVjdCgpOwogICAgICAgICAgICAgTGF5b3V0UmVjdCB2aXNpYmxlUmVjdFJl
bGF0aXZlVG9Eb2N1bWVudCA9IHZpZXdSZWN0OwogI2VuZGlmCkBAIC0yNzAwLDEwICsyNzAxLDEw
IEBAIEludFBvaW50IFJlbmRlckxheWVyOjptaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdAog
SW50UG9pbnQgUmVuZGVyTGF5ZXI6Om1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0CiB7CiAg
ICAgLy8gRklYTUU6IG1fc2Nyb2xsU2l6ZSBtYXkgbm90IGJlIHVwLXRvLWRhdGUgaWYgbV9zY3Jv
bGxEaW1lbnNpb25zRGlydHkgaXMgdHJ1ZS4KLSAgICByZXR1cm4gLXNjcm9sbE9yaWdpbigpICsg
cm91bmRlZEludFNpemUobV9zY3JvbGxTaXplKSAtIHZpc2libGVDb250ZW50UmVjdChJbmNsdWRl
U2Nyb2xsYmFycykuc2l6ZSgpOworICAgIHJldHVybiAtc2Nyb2xsT3JpZ2luKCkgKyByb3VuZGVk
SW50U2l6ZShtX3Njcm9sbFNpemUpIC0gdmlzaWJsZUNvbnRlbnRSZWN0KEluY2x1ZGVTY3JvbGxi
YXJzLCBDb250ZW50c1Zpc2libGVSZWN0KS5zaXplKCk7CiB9CiAKLUludFJlY3QgUmVuZGVyTGF5
ZXI6OnZpc2libGVDb250ZW50UmVjdChWaXNpYmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9sbGJh
cnMgc2Nyb2xsYmFySW5jbHVzaW9uKSBjb25zdAorSW50UmVjdCBSZW5kZXJMYXllcjo6dmlzaWJs
ZUNvbnRlbnRSZWN0KFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFycyBzY3JvbGxi
YXJJbmNsdXNpb24sIFZpc2libGVDb250ZW50UmVjdEJlaGF2aW9yKSBjb25zdAogewogICAgIGlu
dCB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoID0gMDsKICAgICBpbnQgaG9yaXpvbnRhbFNjcm9sbGJh
ckhlaWdodCA9IDA7CkBAIC00NjcwLDcgKzQ2NzEsNyBAQCBib29sIFJlbmRlckxheWVyOjpoaXRU
ZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24m
CiAKICAgICBMYXlvdXRSZWN0IGhpdFRlc3RBcmVhID0gaXNPdXRPZkZsb3dSZW5kZXJGbG93VGhy
ZWFkKCkgPyB0b1JlbmRlckZsb3dUaHJlYWQoJnJlbmRlcmVyKCkpLT52aXN1YWxPdmVyZmxvd1Jl
Y3QoKSA6IHJlbmRlcmVyKCkudmlldygpLmRvY3VtZW50UmVjdCgpOwogICAgIGlmICghcmVxdWVz
dC5pZ25vcmVDbGlwcGluZygpKQotICAgICAgICBoaXRUZXN0QXJlYS5pbnRlcnNlY3QocmVuZGVy
ZXIoKS52aWV3KCkuZnJhbWVWaWV3KCkudmlzaWJsZUNvbnRlbnRSZWN0KCkpOworICAgICAgICBo
aXRUZXN0QXJlYS5pbnRlcnNlY3QocmVuZGVyZXIoKS52aWV3KCkuZnJhbWVWaWV3KCkudmlzaWJs
ZUNvbnRlbnRSZWN0KEV4Y2x1ZGVTY3JvbGxiYXJzLCBMZWdhY3lJT1NEb2N1bWVudFZpc2libGVS
ZWN0KSk7CiAKICAgICBSZW5kZXJMYXllciogaW5zaWRlTGF5ZXIgPSBoaXRUZXN0TGF5ZXIodGhp
cywgMCwgcmVxdWVzdCwgcmVzdWx0LCBoaXRUZXN0QXJlYSwgaGl0VGVzdExvY2F0aW9uLCBmYWxz
ZSk7CiAgICAgaWYgKCFpbnNpZGVMYXllcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuaAppbmRleCBkNjA2ZDlhODM1YTY2OWRmZTNlZGFlZTgzMGJlNDNiMDhkNWRhYzA2Li44
ZGRkM2I0YTc2YzM2YzU0NDUzN2YyNzE1ZTA4NTk1NzhkYTZmZDMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtMTA2Nyw3ICsxMDY3LDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIEludFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCBJbnRQb2ludCBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIEludFBvaW50IG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgSW50UmVjdCB2aXNpYmxlQ29udGVudFJlY3QoVmlzaWJsZUNvbnRl
bnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIElu
dFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0KFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xs
YmFycywgVmlzaWJsZUNvbnRlbnRSZWN0QmVoYXZpb3IpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGlu
dCB2aXNpYmxlV2lkdGgoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEludFNpemUgY29u
dGVudHNTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGE2ZGZiMjAzZjAyM2I5ZTEyZWI5MThiMjJh
ZTEzMTNkNDQzMGUzYzYuLjFiMzhjMzI3ZjkyOGQ1ZDZmYTU5OTY1NDE2MmQ1MDQyNWUyYTUzYmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CkBAIC00OTEsNyArNDkxLDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbXBv
c2l0ZWRCb3VuZHMoKQogICAgICAgICBMYXlvdXRSZWN0IGNsaXBwaW5nQm91bmRzOwogICAgICAg
ICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbiAmJiBy
ZW5kZXJlcigpLmNvbnRhaW5lcigpID09ICZ2aWV3KSB7CiAjaWYgUExBVEZPUk0oSU9TKQotICAg
ICAgICAgICAgY2xpcHBpbmdCb3VuZHMgPSB2aWV3LmZyYW1lVmlldygpLnZpc2libGVDb250ZW50
UmVjdCgpOworICAgICAgICAgICAgY2xpcHBpbmdCb3VuZHMgPSB2aWV3LmZyYW1lVmlldygpLnZp
c2libGVDb250ZW50UmVjdChTY3JvbGxhYmxlQXJlYTo6RXhjbHVkZVNjcm9sbGJhcnMsIFNjcm9s
bGFibGVBcmVhOjpMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KTsKICNlbHNlCiAgICAgICAg
ICAgICBjbGlwcGluZ0JvdW5kcyA9IHZpZXcuZnJhbWVWaWV3KCkudmlld3BvcnRDb25zdHJhaW5l
ZFZpc2libGVDb250ZW50UmVjdCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5jcHAKaW5kZXggNGE0YjM1Y2UxYWM5MzlmZDZlNzVkZjgzODViMTkxYTA0MmI2MDVi
Ni4uZjcyY2U1M2NiNmIwN2Y3ZmE0NjRhNzhhZWY3ZWYzZGZlMDc0MjYzNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAtMTAxNSw3ICsxMDE1LDcgQEAgTGF5b3V0
UmVjdCBSZW5kZXJWaWV3Ojp2aWV3UmVjdCgpIGNvbnN0CiB7CiAgICAgaWYgKHNob3VsZFVzZVBy
aW50aW5nTGF5b3V0KCkpCiAgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KExheW91dFBvaW50KCks
IHNpemUoKSk7Ci0gICAgcmV0dXJuIGZyYW1lVmlldygpLnZpc2libGVDb250ZW50UmVjdCgpOwor
ICAgIHJldHVybiBmcmFtZVZpZXcoKS52aXNpYmxlQ29udGVudFJlY3QoU2Nyb2xsYWJsZUFyZWE6
OkV4Y2x1ZGVTY3JvbGxiYXJzLCBTY3JvbGxhYmxlQXJlYTo6TGVnYWN5SU9TRG9jdW1lbnRWaXNp
YmxlUmVjdCk7CiB9CiAKIEludFJlY3QgUmVuZGVyVmlldzo6dW5zY2FsZWREb2N1bWVudFJlY3Qo
KSBjb25zdApAQCAtMTEwOSw3ICsxMTA5LDcgQEAgYm9vbCBSZW5kZXJWaWV3OjpzaG91bGREaXNh
YmxlTGF5b3V0U3RhdGVGb3JTdWJ0cmVlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnMKIAog
SW50U2l6ZSBSZW5kZXJWaWV3Ojp2aWV3cG9ydFNpemUoKSBjb25zdAogewotICAgIHJldHVybiBm
cmFtZVZpZXcoKS52aXNpYmxlQ29udGVudFJlY3QoU2Nyb2xsYWJsZUFyZWE6OkluY2x1ZGVTY3Jv
bGxiYXJzKS5zaXplKCk7CisgICAgcmV0dXJuIGZyYW1lVmlldygpLnZpc2libGVDb250ZW50UmVj
dChTY3JvbGxhYmxlQXJlYTo6SW5jbHVkZVNjcm9sbGJhcnMsIFNjcm9sbGFibGVBcmVhOjpMZWdh
Y3lJT1NEb2N1bWVudFZpc2libGVSZWN0KS5zaXplKCk7CiB9CiAKIHZvaWQgUmVuZGVyVmlldzo6
dXBkYXRlSGl0VGVzdFJlc3VsdChIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IExheW91dFBv
aW50JiBwb2ludCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221944</attachid>
            <date>2014-01-22 21:11:00 -0800</date>
            <delta_ts>2014-01-22 22:05:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127456-20140122211056.patch</filename>
            <type>text/plain</type>
            <size>37685</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyNTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjY4NThiMzE5NDkyNmE3
ZDdlZmU0ZmU3MDZiY2FkMjE2OTFjNWRhYy4uNzA5MTA3Mzg3ZWQwNzg0ZmMzNjA2NDllMjdkZmNi
MzczNWZlNzQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDE0LTAxLTIyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgdmlzaWJs
ZUNvbnRlbnRSZWN0KCkgcmV0dXJuIGFjdHVhbFZpc2libGVDb250ZW50UmVjdCgpIG9uIGlPUyBt
b3N0IG9mIHRoZSB0aW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjc0NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBPbiBpT1MsIHZpc2libGVDb250ZW50UmVjdCgpIHJldHVybnMgdGhlIGVudGlyZSBk
b2N1bWVudCByZWN0IGZvciBoaXN0b3JpY2FsCisgICAgICAgIHJlYXNvbnMsIGFuZCBhY3R1YWxW
aXNpYmxlQ29udGVudFJlY3QoKSByZXR1cm5zIHdoYXQgdmlzaWJsZUNvbnRlbnRSZWN0KCkKKyAg
ICAgICAgcmV0dXJucyBvbiBvdGhlciBwbGF0Zm9ybXMuCisgICAgICAgIAorICAgICAgICBJbiBh
ZGRpdGlvbiwgYWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KCkgd2FzIHJldHVybmluZyBhbiBlbXB0
eSByZWN0IGluIFdLMi4KKyAgICAgICAgCisgICAgICAgIFJlZHVjZSB0aGUgY29uZnVzaW9uIG9m
ICNpZmRlZnMgYnkgbWFraW5nIHZpc2libGVDb250ZW50UmVjdCgpIGJlaGF2ZSBsaWtlCisgICAg
ICAgIGFjdHVhbFZpc2libGVDb250ZW50UmVjdCgpIGJ5IGRlZmF1bHQgb24gaU9TLiBXaGVyZSBp
dCBuZWVkcyB0aGUgb2xkIGJlaGF2aW9yLAorICAgICAgICBhbiBvcHRpb25hbCBwYXJhbWV0ZXIs
IExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QsIHByb3ZpZGVzIHRoaXMuCisgICAgICAgIAor
ICAgICAgICBNZWNoYW5pY2FsbHkgY2hhbmdlIGFsbCB0aGUgY2FsbCBzaXRlcyBvZiBhY3R1YWxW
aXNpYmxlQ29udGVudFJlY3QoKSB0bworICAgICAgICB1c2UgdmlzaWJsZUNvbnRlbnRSZWN0KCks
IGFuZCB0aGUgY2FsbCBzaXRlcyBvZiB2aXNpYmxlQ29udGVudFJlY3QoKQorICAgICAgICB0byB2
aXNpYmxlQ29udGVudFJlY3QoLi4uLCBMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KSwgYWRk
aW5nIGNvbW1lbnRzCisgICAgICAgIHdoZXJlIHRoaXMgbWF5IG5vdCBiZSBhcHByb3ByaWF0ZS4K
KyAgICAgICAgCisgICAgICAgIEFsc28gYWRkIGFjdHVhbFNjcm9sbFBvc2l0aW9uKCksIGFuZCBj
bGVhbiB1cCBzb21lIGFjdHVhbFNjcm9sbCogY2FsbCBzaXRlcy4KKyAgICAgICAgCisgICAgICAg
IE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc09uc2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMpOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc09mZlNjcmVlbik6
CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjphZGp1c3RGbG9hdFF1YWRzRm9yU2Nyb2xsQW5kQWJzb2x1dGVab29tQW5kRnJhbWVTY2FsZSk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRqdXN0RmxvYXRSZWN0Rm9yU2Nyb2xsQW5k
QWJzb2x1dGVab29tQW5kRnJhbWVTY2FsZSk6CisgICAgICAgICogZG9tL01vdXNlUmVsYXRlZEV2
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50OjpNb3VzZVJlbGF0
ZWRFdmVudCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpjb3VudE1hdGNoZXNGb3JUZXh0KToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1l
U2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpib3VuZHMp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmdldENsaXBwZWRWaXNpYmxlVGV4
dFJlY3RhbmdsZXMpOgorICAgICAgICAqIGh0bWwvSFRNTEJvZHlFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxCb2R5RWxlbWVudDo6c2Nyb2xsTGVmdCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MQm9keUVsZW1lbnQ6OnNjcm9sbFRvcCk6CisgICAgICAgICogaHRtbC9JbWFnZURv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1lbnQ6OmltYWdlRml0c0lu
V2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1lbnQ6OndpbmRvd1NpemVDaGFu
Z2VkKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
T01XaW5kb3c6OmlubmVySGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6aW5u
ZXJXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnNjcm9sbFgpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV2luZG93OjpzY3JvbGxZKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdp
bmRvdzo6c2Nyb2xsQnkpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6Y2FsY3VsYXRlU2Nyb2xsYmFyTW9kZXNGb3JMYXlvdXQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpzY3JvbGxDb250ZW50c1Nsb3dQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6cmVwYWludENvbnRlbnRSZWN0YW5nbGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVWaWV3OjpzZW5kUmVzaXplRXZlbnRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVZpZXc6OndpbmRvd0NsaXBSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6aXNT
Y3JvbGxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRDb250cm9sVGlu
dHMpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsVmlldzo6dmlzaWJsZUNvbnRlbnRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9T
Y3JvbGxWaWV3Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp2aXNpYmxlU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxPZmZzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsVmlldzo6YWN0dWFsU2Nyb2xsWCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxWaWV3OjphY3R1YWxTY3JvbGxZKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6
OmFjdHVhbFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJl
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6dmlzaWJsZUNvbnRlbnRS
ZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
c2Nyb2xsUmVjdFRvVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6bWF4
aW11bVNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp2aXNp
YmxlQ29udGVudFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJC
YWNraW5nOjp1cGRhdGVDb21wb3NpdGVkQm91bmRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojp2aWV3UmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojp2aWV3cG9ydFNpemUpOgorCiAyMDE0LTAxLTIy
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgQVNT
RVJUSU9OIEZBSUxFRDogdi5pc0ZpeGVkKCkgaW4gV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFdv
cmRTcGFjaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDg4NGZkMmYzYjhlY2ExOWZiYjZmYjhm
N2E3NDA3YWVhZjdhNDQ2NzEuLmU3YWFiYWUxMmQ5MmUyY2ZkMTAyNTE0NjNkZTdmYTllOGZkMWM0
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xNDIzLDcgKzE0MjMsNyBAQCBfX1pOSzdXZWJD
b3JlMTBTY3JvbGxWaWV3MTZ3aW5kb3dUb0NvbnRlbnRzRVJLTlNfN0ludFJlY3RFCiBfX1pOSzdX
ZWJDb3JlMTBTY3JvbGxWaWV3MTZ3aW5kb3dUb0NvbnRlbnRzRVJLTlNfOEludFBvaW50RQogX19a
Tks3V2ViQ29yZTEwU2Nyb2xsVmlldzE4Y29udGVudHNUb1Jvb3RWaWV3RVJLTlNfN0ludFJlY3RF
CiBfX1pOSzdXZWJDb3JlMTBTY3JvbGxWaWV3MThjb250ZW50c1RvUm9vdFZpZXdFUktOU184SW50
UG9pbnRFCi1fX1pOSzdXZWJDb3JlMTBTY3JvbGxWaWV3MTh2aXNpYmxlQ29udGVudFJlY3RFTlNf
MTRTY3JvbGxhYmxlQXJlYTM2VmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzRQor
X19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE4dmlzaWJsZUNvbnRlbnRSZWN0RU5TXzE0U2Nyb2xs
YWJsZUFyZWEzNlZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFyc0VOUzFfMjZWaXNp
YmxlQ29udGVudFJlY3RCZWhhdmlvckUKIF9fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcyM3Jvb3RW
aWV3VG9Ub3RhbENvbnRlbnRzRVJLTlNfOEludFBvaW50RQogX19aTks3V2ViQ29yZTEwU2Nyb2xs
VmlldzMwc2Nyb2xsT2Zmc2V0UmVsYXRpdmVUb0RvY3VtZW50RXYKIF9fWk5LN1dlYkNvcmUxMFN0
b3JhZ2VNYXA2bGVuZ3RoRXYKQEAgLTIxMTgsNyArMjExOCw3IEBAIF9fWk43V2ViQ29yZThJbnRQ
b2ludEMxRVJLN0NHUG9pbnQKIF9fWk43V2ViQ29yZThJbnRQb2ludEMxRVJLOF9OU1BvaW50CiBf
X1pON1dlYkNvcmU5RmxvYXRSZWN0QzFFUks3X05TUmVjdAogX19aTks3V2ViQ29yZTEwRmxvYXRQ
b2ludGN2OF9OU1BvaW50RXYKLV9fWk5LN1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhMTh2aXNpYmxl
Q29udGVudFJlY3RFTlMwXzM2VmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzRQor
X19aTks3V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWExOHZpc2libGVDb250ZW50UmVjdEVOUzBfMzZW
aXNpYmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnNFTlMwXzI2VmlzaWJsZUNvbnRlbnRS
ZWN0QmVoYXZpb3JFCiBfX1pOSzdXZWJDb3JlNkN1cnNvcjE0cGxhdGZvcm1DdXJzb3JFdgogX19a
Tks3V2ViQ29yZTdJbnRSZWN0Y3Y3X05TUmVjdEV2CiBfX1pOSzdXZWJDb3JlN0ludFNpemVjdjZD
R1NpemVFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAKaW5kZXggZTRhYzZjZDk3MWFmMjNkNjkzZTUyNDRjZDI3NDE3ODU3MTU3
YzA3OS4uZTQ4NzNlNTYwZTc1YzlkYzM3ZTU3YmQ2ZmI0YzhiOGY2Njg0OWFkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
CkBAIC0xODgzLDcgKzE4ODMsOCBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzT25zY3Jl
ZW4oKSBjb25zdAogICAgIGZvciAoc2l6ZV90IGkgPSBsZXZlbHM7IGkgPj0gMTsgaS0tKSB7CiAg
ICAgICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIG91dGVyID0gb2JqZWN0c1tpXTsKICAg
ICAgICAgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogaW5uZXIgPSBvYmplY3RzW2kgLSAxXTsK
LSAgICAgICAgY29uc3QgSW50UmVjdCBvdXRlclJlY3QgPSBpIDwgbGV2ZWxzID8gcGl4ZWxTbmFw
cGVkSW50UmVjdChvdXRlci0+Ym91bmRpbmdCb3hSZWN0KCkpIDogb3V0ZXItPmdldFNjcm9sbGFi
bGVBcmVhSWZTY3JvbGxhYmxlKCktPnZpc2libGVDb250ZW50UmVjdCgpOworICAgICAgICAvLyBG
SVhNRTogdW5jbGVhciBpZiB3ZSBuZWVkIExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QuCisg
ICAgICAgIGNvbnN0IEludFJlY3Qgb3V0ZXJSZWN0ID0gaSA8IGxldmVscyA/IHBpeGVsU25hcHBl
ZEludFJlY3Qob3V0ZXItPmJvdW5kaW5nQm94UmVjdCgpKSA6IG91dGVyLT5nZXRTY3JvbGxhYmxl
QXJlYUlmU2Nyb2xsYWJsZSgpLT52aXNpYmxlQ29udGVudFJlY3QoU2Nyb2xsYWJsZUFyZWE6OkV4
Y2x1ZGVTY3JvbGxiYXJzLCBTY3JvbGxhYmxlQXJlYTo6TGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxl
UmVjdCk7CiAgICAgICAgIGNvbnN0IEludFJlY3QgaW5uZXJSZWN0ID0gcGl4ZWxTbmFwcGVkSW50
UmVjdChpbm5lci0+aXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldygpID8gaW5uZXItPnBhcmVudE9i
amVjdCgpLT5ib3VuZGluZ0JveFJlY3QoKSA6IGlubmVyLT5ib3VuZGluZ0JveFJlY3QoKSk7CiAg
ICAgICAgIAogICAgICAgICBpZiAoIW91dGVyUmVjdC5pbnRlcnNlY3RzKGlubmVyUmVjdCkpIHsK
QEAgLTE5MTUsNyArMTkxNiw4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9N
YWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhjb25zdCBJbnRSZWN0JiBzdWJmb2N1CiAKICAgICBMYXlv
dXRSZWN0IG9iamVjdFJlY3QgPSBib3VuZGluZ0JveFJlY3QoKTsKICAgICBJbnRQb2ludCBzY3Jv
bGxQb3NpdGlvbiA9IHNjcm9sbGFibGVBcmVhLT5zY3JvbGxQb3NpdGlvbigpOwotICAgIEludFJl
Y3Qgc2Nyb2xsVmlzaWJsZVJlY3QgPSBzY3JvbGxhYmxlQXJlYS0+dmlzaWJsZUNvbnRlbnRSZWN0
KCk7CisgICAgLy8gRklYTUU6IHVuY2xlYXIgaWYgd2UgbmVlZCBMZWdhY3lJT1NEb2N1bWVudFZp
c2libGVSZWN0LgorICAgIEludFJlY3Qgc2Nyb2xsVmlzaWJsZVJlY3QgPSBzY3JvbGxhYmxlQXJl
YS0+dmlzaWJsZUNvbnRlbnRSZWN0KFNjcm9sbGFibGVBcmVhOjpFeGNsdWRlU2Nyb2xsYmFycywg
U2Nyb2xsYWJsZUFyZWE6OkxlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpOwogCiAgICAgaW50
IGRlc2lyZWRYID0gY29tcHV0ZUJlc3RTY3JvbGxPZmZzZXQoCiAgICAgICAgIHNjcm9sbFBvc2l0
aW9uLngoKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDkyYWViNjYwODgxNDMwMDk5OWFkMTZm
OGIxMTE0MDliYTBjMTRjOGMuLjliOTBlYTI0ZWE3ZTk0ZGMxN2RjNDI2ZDJiMDQ2OGNiYjNkN2U5
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtNTUwLDcgKzU1MCw4IEBAIGJvb2wgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6aXNPZmZTY3JlZW4oKSBjb25zdAogewogICAgIEFTU0VSVCht
X3JlbmRlcmVyKTsKICAgICBJbnRSZWN0IGNvbnRlbnRSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVj
dChtX3JlbmRlcmVyLT5hYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKSk7Ci0gICAgSW50UmVj
dCB2aWV3UmVjdCA9IG1fcmVuZGVyZXItPnZpZXcoKS5mcmFtZVZpZXcoKS52aXNpYmxlQ29udGVu
dFJlY3QoKTsKKyAgICAvLyBGSVhNRTogdW5jbGVhciBpZiB3ZSBuZWVkIExlZ2FjeUlPU0RvY3Vt
ZW50VmlzaWJsZVJlY3QuCisgICAgSW50UmVjdCB2aWV3UmVjdCA9IG1fcmVuZGVyZXItPnZpZXco
KS5mcmFtZVZpZXcoKS52aXNpYmxlQ29udGVudFJlY3QoU2Nyb2xsYWJsZUFyZWE6OkV4Y2x1ZGVT
Y3JvbGxiYXJzLCBTY3JvbGxhYmxlQXJlYTo6TGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCk7
CiAgICAgdmlld1JlY3QuaW50ZXJzZWN0KGNvbnRlbnRSZWN0KTsKICAgICByZXR1cm4gdmlld1Jl
Y3QuaXNFbXB0eSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNmRmODVjNzc1M2Y4
Y2ZlMzEzMjFhZDBiNTc3ZjJmZWM3YzQ0NDk1Ni4uYTYwMDI1MTJhMThiOTkxZmM3ZTNhYmIyMmMx
MDNhYTQxMWJiODQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01ODA3LDExICs1ODA3
LDcgQEAgdm9pZCBEb2N1bWVudDo6YWRqdXN0RmxvYXRRdWFkc0ZvclNjcm9sbEFuZEFic29sdXRl
Wm9vbUFuZEZyYW1lU2NhbGUoVmVjdG9yPEZsb2EKICAgICBpZiAoZnJhbWUoKSkKICAgICAgICAg
aW52ZXJzZUZyYW1lU2NhbGUgPSAxIC8gZnJhbWUoKS0+ZnJhbWVTY2FsZUZhY3RvcigpOwogCi0j
aWYgUExBVEZPUk0oSU9TKQotICAgIExheW91dFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0ID0gdmll
dygpLT5hY3R1YWxWaXNpYmxlQ29udGVudFJlY3QoKTsKLSNlbHNlCiAgICAgTGF5b3V0UmVjdCB2
aXNpYmxlQ29udGVudFJlY3QgPSB2aWV3KCktPnZpc2libGVDb250ZW50UmVjdCgpOwotI2VuZGlm
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFkcy5zaXplKCk7ICsraSkgewogICAgICAg
ICBxdWFkc1tpXS5tb3ZlKC12aXNpYmxlQ29udGVudFJlY3QueCgpLCAtdmlzaWJsZUNvbnRlbnRS
ZWN0LnkoKSk7CiAgICAgICAgIGlmICh6b29tICE9IDEpCkBAIC01ODMxLDExICs1ODI3LDcgQEAg
dm9pZCBEb2N1bWVudDo6YWRqdXN0RmxvYXRSZWN0Rm9yU2Nyb2xsQW5kQWJzb2x1dGVab29tQW5k
RnJhbWVTY2FsZShGbG9hdFJlY3QmIHIKICAgICBpZiAoZnJhbWUoKSkKICAgICAgICAgaW52ZXJz
ZUZyYW1lU2NhbGUgPSAxIC8gZnJhbWUoKS0+ZnJhbWVTY2FsZUZhY3RvcigpOwogCi0jaWYgUExB
VEZPUk0oSU9TKQotICAgIExheW91dFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0ID0gdmlldygpLT5h
Y3R1YWxWaXNpYmxlQ29udGVudFJlY3QoKTsKLSNlbHNlCiAgICAgTGF5b3V0UmVjdCB2aXNpYmxl
Q29udGVudFJlY3QgPSB2aWV3KCktPnZpc2libGVDb250ZW50UmVjdCgpOwotI2VuZGlmCiAgICAg
cmVjdC5tb3ZlKC12aXNpYmxlQ29udGVudFJlY3QueCgpLCAtdmlzaWJsZUNvbnRlbnRSZWN0Lnko
KSk7CiAgICAgaWYgKHpvb20gIT0gMSkKICAgICAgICAgcmVjdC5zY2FsZSgxIC8gem9vbSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAppbmRleCBkM2I4YzM1ODE0MTk2
NTI4M2JmYjVjZDVmMGRjZWYzM2RhYWEwZmQzLi44ODAwMGY1ZjNmMWZjM2Y5OGE1MGJiNzJiMmQ2
MTI3MmE1MzUyMDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVk
RXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAK
QEAgLTc3LDcgKzc3LDcgQEAgTW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmIKICNpZiAhUExBVEZPUk0o
SU9TKQogICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb24gPSBmcmFtZVZpZXctPnNjcm9sbFBvc2l0
aW9uKCk7CiAjZWxzZQotICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb24gPSBmcmFtZVZpZXctPmFj
dHVhbFZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9uKCk7CisgICAgICAgICAgICBzY3JvbGxQ
b3NpdGlvbiA9IGZyYW1lVmlldy0+YWN0dWFsU2Nyb2xsUG9zaXRpb24oKTsKICNlbmRpZgogICAg
ICAgICAgICAgYWRqdXN0ZWRQYWdlTG9jYXRpb24gPSBmcmFtZVZpZXctPndpbmRvd1RvQ29udGVu
dHMod2luZG93TG9jYXRpb24pOwogICAgICAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSAxIC8g
KGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpICogZnJhbWUtPmZyYW1lU2NhbGVGYWN0b3IoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMGU1ZGJlYWE0NWJmNjFjMTljNDg3MTZiYjRj
NDE5YzNkMGFmNzRkNy4uMzU3M2VlM2M2YzY2ODc3MjdmZTUzZDkzYjlhMDExMWExNGZkYTc1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzI2Nyw3ICszMjY3LDkgQEAgdW5zaWdu
ZWQgRWRpdG9yOjpjb3VudE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBSYW5n
ZSogcmFuZ2UsIEZpbmRPcHQKICAgICAgICAgLy8gRG8gYSAiZmFrZSIgcGFpbnQgaW4gb3JkZXIg
dG8gZXhlY3V0ZSB0aGUgY29kZSB0aGF0IGNvbXB1dGVzIHRoZSByZW5kZXJlZCByZWN0IGZvciBl
YWNoIHRleHQgbWF0Y2guCiAgICAgICAgIGlmIChtX2ZyYW1lLnZpZXcoKSAmJiBtX2ZyYW1lLmNv
bnRlbnRSZW5kZXJlcigpKSB7CiAgICAgICAgICAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dCgp
OyAvLyBFbnN1cmUgbGF5b3V0IGlzIHVwIHRvIGRhdGUuCi0gICAgICAgICAgICBMYXlvdXRSZWN0
IHZpc2libGVSZWN0ID0gbV9mcmFtZS52aWV3KCktPnZpc2libGVDb250ZW50UmVjdCgpOworICAg
ICAgICAgICAgLy8gRklYTUU6IHVuY2xlYXIgaWYgd2UgbmVlZCBMZWdhY3lJT1NEb2N1bWVudFZp
c2libGVSZWN0LgorICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIHByb2JhYmx5IGxv
b2sgYXQgcGFpbnRzRW50aXJlQ29udGVudHMoKQorICAgICAgICAgICAgTGF5b3V0UmVjdCB2aXNp
YmxlUmVjdCA9IG1fZnJhbWUudmlldygpLT52aXNpYmxlQ29udGVudFJlY3QoU2Nyb2xsYWJsZUFy
ZWE6OkV4Y2x1ZGVTY3JvbGxiYXJzLCBTY3JvbGxhYmxlQXJlYTo6TGVnYWN5SU9TRG9jdW1lbnRW
aXNpYmxlUmVjdCk7CiAgICAgICAgICAgICBpZiAoIXZpc2libGVSZWN0LmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KChQbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dCopMCk7CiAgICAgICAgICAgICAgICAgY29udGV4dC5zZXRQYWludGluZ0Rpc2FibGVk
KHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCBk
NTllN2U5NTJjNjViMTE5Y2U4MDM2Y2VhNTQ4NGJiNTZiODcyNzU2Li4wZGU2OGZiNDBhMmM5YmYx
OGUyNmZlMWYyMjgxM2JiNWExNGMzYWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1l
U2VsZWN0aW9uLmNwcApAQCAtMjAwOCw3ICsyMDA4LDcgQEAgRmxvYXRSZWN0IEZyYW1lU2VsZWN0
aW9uOjpib3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkgY29uc3QKICAgICAgICAgcmV0
dXJuIExheW91dFJlY3QoKTsKIAogICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdCA9IHJvb3Qt
PnNlbGVjdGlvbkJvdW5kcyhjbGlwVG9WaXNpYmxlQ29udGVudCk7Ci0gICAgcmV0dXJuIGNsaXBU
b1Zpc2libGVDb250ZW50ID8gaW50ZXJzZWN0aW9uKHNlbGVjdGlvblJlY3QsIHZpZXctPnZpc2li
bGVDb250ZW50UmVjdCgpKSA6IHNlbGVjdGlvblJlY3Q7CisgICAgcmV0dXJuIGNsaXBUb1Zpc2li
bGVDb250ZW50ID8gaW50ZXJzZWN0aW9uKHNlbGVjdGlvblJlY3QsIHZpZXctPnZpc2libGVDb250
ZW50UmVjdChTY3JvbGxhYmxlQXJlYTo6RXhjbHVkZVNjcm9sbGJhcnMsIFNjcm9sbGFibGVBcmVh
OjpMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KSkgOiBzZWxlY3Rpb25SZWN0OwogfQogCiB2
b2lkIEZyYW1lU2VsZWN0aW9uOjpnZXRDbGlwcGVkVmlzaWJsZVRleHRSZWN0YW5nbGVzKFZlY3Rv
cjxGbG9hdFJlY3Q+JiByZWN0YW5nbGVzKSBjb25zdApAQCAtMjAxNyw3ICsyMDE3LDcgQEAgdm9p
ZCBGcmFtZVNlbGVjdGlvbjo6Z2V0Q2xpcHBlZFZpc2libGVUZXh0UmVjdGFuZ2xlcyhWZWN0b3I8
RmxvYXRSZWN0PiYgcmVjdGFuZ2wKICAgICBpZiAoIXJvb3QpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QgPSBtX2ZyYW1lLT52aWV3KCktPnZpc2li
bGVDb250ZW50UmVjdCgpOworICAgIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QgPSBtX2Zy
YW1lLT52aWV3KCktPnZpc2libGVDb250ZW50UmVjdChTY3JvbGxhYmxlQXJlYTo6RXhjbHVkZVNj
cm9sbGJhcnMsIFNjcm9sbGFibGVBcmVhOjpMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KTsK
IAogICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1YWRzOwogICAgIHRvTm9ybWFsaXplZFJhbmdlKCkt
PnRleHRRdWFkcyhxdWFkcywgdHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxCb2R5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVu
dC5jcHAKaW5kZXggMzg1ZTg4OWEzNzA3NmQ2ODA0ZjAwM2YxNWM4ZTVkMTYwZmVlZDYxYy4uOWRh
MTQxMGZlYjFmZTc1YzNhZTdhYTYwNmRjZDhlYmMyYTg2ZmU2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEJvZHlFbGVtZW50LmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIGludCBIVE1MQm9keUVs
ZW1lbnQ6OnNjcm9sbExlZnQoKQogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuIDA7CiAj
aWYgUExBVEZPUk0oSU9TKQotICAgIHJldHVybiBhZGp1c3RGb3Jab29tKHZpZXctPmFjdHVhbFZp
c2libGVDb250ZW50UmVjdCgpLngoKSwgKmZyYW1lKTsKKyAgICByZXR1cm4gYWRqdXN0Rm9yWm9v
bSh2aWV3LT5hY3R1YWxTY3JvbGxYKCksICpmcmFtZSk7CiAjZWxzZQogICAgIHJldHVybiBhZGp1
c3RGb3Jab29tKHZpZXctPnNjcm9sbFgoKSwgKmZyYW1lKTsKICNlbmRpZgpAQCAtMjM3LDcgKzIz
Nyw3IEBAIGludCBIVE1MQm9keUVsZW1lbnQ6OnNjcm9sbFRvcCgpCiAgICAgaWYgKCF2aWV3KQog
ICAgICAgICByZXR1cm4gMDsKICNpZiBQTEFURk9STShJT1MpCi0gICAgcmV0dXJuIGFkanVzdEZv
clpvb20odmlldy0+YWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KCkueSgpLCAqZnJhbWUpOworICAg
IHJldHVybiBhZGp1c3RGb3Jab29tKHZpZXctPmFjdHVhbFNjcm9sbFkoKSwgKmZyYW1lKTsKICNl
bHNlCiAgICAgcmV0dXJuIGFkanVzdEZvclpvb20odmlldy0+c2Nyb2xsWSgpLCAqZnJhbWUpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRleCBhNmY3NWNiOTRl
NzBmZmE4MTRkZmNjZjY3ZjBkMzE5M2YxMjAxZjkwLi5mZDRkZTY0OTBhYjU3NDliNzkxNDQ1NWZm
YjAzZjc3ZGU4Yjk4OTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKQEAg
LTM0NCw3ICszNDQsNyBAQCBib29sIEltYWdlRG9jdW1lbnQ6OmltYWdlRml0c0luV2luZG93KCkg
Y29uc3QKIAogICAgIExheW91dFNpemUgaW1hZ2VTaXplID0gbV9pbWFnZUVsZW1lbnQtPmNhY2hl
ZEltYWdlKCktPmltYWdlU2l6ZUZvclJlbmRlcmVyKG1faW1hZ2VFbGVtZW50LT5yZW5kZXJlcigp
LCBwYWdlWm9vbUZhY3Rvcih0aGlzKSk7CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIExheW91dFNp
emUgd2luZG93U2l6ZSA9IHZpZXctPmNvbnRlbnRzVG9TY3JlZW4odmlldy0+YWN0dWFsVmlzaWJs
ZUNvbnRlbnRSZWN0KCkpLnNpemUoKTsKKyAgICBMYXlvdXRTaXplIHdpbmRvd1NpemUgPSB2aWV3
LT5jb250ZW50c1RvU2NyZWVuKHZpZXctPnZpc2libGVDb250ZW50UmVjdCgpKS5zaXplKCk7CiAj
ZWxzZQogICAgIExheW91dFNpemUgd2luZG93U2l6ZSA9IExheW91dFNpemUodmlldy0+d2lkdGgo
KSwgdmlldy0+aGVpZ2h0KCkpOwogI2VuZGlmCkBAIC0zNjMsNyArMzYzLDcgQEAgdm9pZCBJbWFn
ZURvY3VtZW50Ojp3aW5kb3dTaXplQ2hhbmdlZCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIExh
eW91dFNpemUgaW1hZ2VTaXplID0gbV9pbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdlKCktPmltYWdl
U2l6ZUZvclJlbmRlcmVyKG1faW1hZ2VFbGVtZW50LT5yZW5kZXJlcigpLCBwYWdlWm9vbUZhY3Rv
cih0aGlzKSk7Ci0gICAgTGF5b3V0UmVjdCB2aXNpYmxlU2NyZWVuU2l6ZSA9IGZyYW1lKCktPnZp
ZXcoKS0+Y29udGVudHNUb1NjcmVlbihmcmFtZSgpLT52aWV3KCktPmFjdHVhbFZpc2libGVDb250
ZW50UmVjdCgpKTsKKyAgICBMYXlvdXRSZWN0IHZpc2libGVTY3JlZW5TaXplID0gZnJhbWUoKS0+
dmlldygpLT5jb250ZW50c1RvU2NyZWVuKGZyYW1lKCktPnZpZXcoKS0+dmlzaWJsZUNvbnRlbnRS
ZWN0KCkpOwogCiAgICAgZmxvYXQgd2lkdGhTY2FsZSA9IHN0YXRpY19jYXN0PGZsb2F0Pih2aXNp
YmxlU2NyZWVuU2l6ZS53aWR0aCgpKSAvIGltYWdlU2l6ZS53aWR0aCgpOwogICAgIGZsb2F0IGhl
aWdodFNjYWxlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZpc2libGVTY3JlZW5TaXplLmhlaWdodCgp
KSAvIGltYWdlU2l6ZS5oZWlnaHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCBk
ODA3MmQ5ZGE4MDYyYmUwODAzOTExYmUxYTVmN2I1ODY1YWM5YWRkLi5iZjU5YTM4MWUxMzExZTU4
ZDZiODM3ZGZjYTc0YjhkMjZlMzJlZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBA
IC0xMTUzLDExICsxMTUzLDcgQEAgaW50IERPTVdpbmRvdzo6aW5uZXJIZWlnaHQoKSBjb25zdAog
ICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuIDA7CiAKLSNpZiBQTEFURk9STShJT1MpCi0g
ICAgcmV0dXJuIHZpZXctPm1hcEZyb21MYXlvdXRUb0NTU1VuaXRzKHN0YXRpY19jYXN0PGludD4o
dmlldy0+YWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KCkuaGVpZ2h0KCkpKTsKLSNlbHNlCiAgICAg
cmV0dXJuIHZpZXctPm1hcEZyb21MYXlvdXRUb0NTU1VuaXRzKHN0YXRpY19jYXN0PGludD4odmll
dy0+dmlzaWJsZUNvbnRlbnRSZWN0KFNjcm9sbGFibGVBcmVhOjpJbmNsdWRlU2Nyb2xsYmFycyku
aGVpZ2h0KCkpKTsKLSNlbmRpZgogfQogCiBpbnQgRE9NV2luZG93Ojppbm5lcldpZHRoKCkgY29u
c3QKQEAgLTExNjksMTEgKzExNjUsNyBAQCBpbnQgRE9NV2luZG93Ojppbm5lcldpZHRoKCkgY29u
c3QKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiAwOwogCi0jaWYgUExBVEZPUk0oSU9T
KQotICAgIHJldHVybiB2aWV3LT5tYXBGcm9tTGF5b3V0VG9DU1NVbml0cyhzdGF0aWNfY2FzdDxp
bnQ+KHZpZXctPmFjdHVhbFZpc2libGVDb250ZW50UmVjdCgpLndpZHRoKCkpKTsKLSNlbHNlCiAg
ICAgcmV0dXJuIHZpZXctPm1hcEZyb21MYXlvdXRUb0NTU1VuaXRzKHN0YXRpY19jYXN0PGludD4o
dmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KFNjcm9sbGFibGVBcmVhOjpJbmNsdWRlU2Nyb2xsYmFy
cykud2lkdGgoKSkpOwotI2VuZGlmCiB9CiAKIGludCBET01XaW5kb3c6OnNjcmVlblgoKSBjb25z
dApAQCAtMTIxNSw3ICsxMjA3LDcgQEAgaW50IERPTVdpbmRvdzo6c2Nyb2xsWCgpIGNvbnN0CiAg
ICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hl
ZXRzKCk7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
dmlldy0+YWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KCkueCgpIC8gKG1fZnJhbWUtPnBhZ2Vab29t
RmFjdG9yKCkgKiBtX2ZyYW1lLT5mcmFtZVNjYWxlRmFjdG9yKCkpKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50Pih2aWV3LT5hY3R1YWxTY3JvbGxYKCkgLyAobV9mcmFtZS0+cGFnZVpvb21G
YWN0b3IoKSAqIG1fZnJhbWUtPmZyYW1lU2NhbGVGYWN0b3IoKSkpOwogI2Vsc2UKICAgICByZXR1
cm4gdmlldy0+bWFwRnJvbUxheW91dFRvQ1NTVW5pdHModmlldy0+c2Nyb2xsWCgpKTsKICNlbmRp
ZgpAQCAtMTIzNiw3ICsxMjI4LDcgQEAgaW50IERPTVdpbmRvdzo6c2Nyb2xsWSgpIGNvbnN0CiAg
ICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hl
ZXRzKCk7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
dmlldy0+YWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KCkueSgpIC8gKG1fZnJhbWUtPnBhZ2Vab29t
RmFjdG9yKCkgKiBtX2ZyYW1lLT5mcmFtZVNjYWxlRmFjdG9yKCkpKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50Pih2aWV3LT5hY3R1YWxTY3JvbGxZKCkgLyAobV9mcmFtZS0+cGFnZVpvb21G
YWN0b3IoKSAqIG1fZnJhbWUtPmZyYW1lU2NhbGVGYWN0b3IoKSkpOwogI2Vsc2UKICAgICByZXR1
cm4gdmlldy0+bWFwRnJvbUxheW91dFRvQ1NTVW5pdHModmlldy0+c2Nyb2xsWSgpKTsKICNlbmRp
ZgpAQCAtMTQ1Miw3ICsxNDQ0LDcgQEAgdm9pZCBET01XaW5kb3c6OnNjcm9sbEJ5KGludCB4LCBp
bnQgeSkgY29uc3QKIAogICAgIEludFNpemUgc2NhbGVkT2Zmc2V0KHZpZXctPm1hcEZyb21DU1NU
b0xheW91dFVuaXRzKHgpLCB2aWV3LT5tYXBGcm9tQ1NTVG9MYXlvdXRVbml0cyh5KSk7CiAjaWYg
UExBVEZPUk0oSU9TKQotICAgIHZpZXctPnNldEFjdHVhbFNjcm9sbFBvc2l0aW9uKHZpZXctPmFj
dHVhbFZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9uKCkgKyBzY2FsZWRPZmZzZXQpOworICAg
IHZpZXctPnNldEFjdHVhbFNjcm9sbFBvc2l0aW9uKHZpZXctPmFjdHVhbFNjcm9sbFBvc2l0aW9u
KCkgKyBzY2FsZWRPZmZzZXQpOwogI2Vsc2UKICAgICB2aWV3LT5zY3JvbGxCeShzY2FsZWRPZmZz
ZXQpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMmY0YjEzMTRiMDI1
Mzc5MWQ5M2EyMGE5YWMyMWM3Y2NmZjU2MmRmYi4uZGU4ZDA5ZmU1NThjNGIzNTExYTcyOGQ4YWY5
ZDk4YTcyODM3MWU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtNzExLDcgKzcx
MSw3IEBAIHZvaWQgRnJhbWVWaWV3OjpjYWxjdWxhdGVTY3JvbGxiYXJNb2Rlc0ZvckxheW91dChT
Y3JvbGxiYXJNb2RlJiBoTW9kZSwgU2Nyb2xsYmFyCiAgICAgICAgIGhNb2RlID0gU2Nyb2xsYmFy
QXV0bzsKICAgICAgICAgLy8gU2VhbWxlc3MgZG9jdW1lbnRzIGJlZ2luIHdpdGggaGVpZ2h0cyBv
ZiAwOyB3ZSBzcGVjaWFsIGNhc2UgdGhhdCBoZXJlCiAgICAgICAgIC8vIHRvIGNvcnJlY3RseSBy
ZW5kZXIgZG9jdW1lbnRzIHRoYXQgZG9uJ3QgbmVlZCBzY3JvbGxiYXJzLgotICAgICAgICBJbnRT
aXplIGZ1bGxWaXNpYmxlU2l6ZSA9IHZpc2libGVDb250ZW50UmVjdChJbmNsdWRlU2Nyb2xsYmFy
cykuc2l6ZSgpOworICAgICAgICBJbnRTaXplIGZ1bGxWaXNpYmxlU2l6ZSA9IHZpc2libGVDb250
ZW50UmVjdChJbmNsdWRlU2Nyb2xsYmFycywgTGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCku
c2l6ZSgpOwogICAgICAgICBib29sIGlzU2VhbWxlc3NEb2N1bWVudCA9IGZyYW1lKCkuZG9jdW1l
bnQoKSAmJiBmcmFtZSgpLmRvY3VtZW50KCktPnNob3VsZERpc3BsYXlTZWFtbGVzc2x5V2l0aFBh
cmVudCgpOwogICAgICAgICB2TW9kZSA9IChpc1NlYW1sZXNzRG9jdW1lbnQgJiYgIWZ1bGxWaXNp
YmxlU2l6ZS5oZWlnaHQoKSkgPyBTY3JvbGxiYXJBbHdheXNPZmYgOiBTY3JvbGxiYXJBdXRvOwog
ICAgIH0gZWxzZSB7CkBAIC0xMjYyLDExICsxMjYyLDcgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91
dChib29sIGFsbG93U3VidHJlZSkKICAgICAgICAgICAgICAgICAgICAgaWYgKHVzZUZpeGVkTGF5
b3V0KCkgJiYgIWZpeGVkTGF5b3V0U2l6ZSgpLmlzRW1wdHkoKSAmJiBkZWxlZ2F0ZXNTY3JvbGxp
bmcoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGFzdFZpZXdwb3J0U2l6ZSA9IGZpeGVk
TGF5b3V0U2l6ZSgpOwogICAgICAgICAgICAgICAgICAgICBlbHNlCi0jaWYgUExBVEZPUk0oSU9T
KQotICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXN0Vmlld3BvcnRTaXplID0gYWN0dWFsVmlz
aWJsZUNvbnRlbnRSZWN0KCkuc2l6ZSgpOwotI2Vsc2UKICAgICAgICAgICAgICAgICAgICAgICAg
IG1fbGFzdFZpZXdwb3J0U2l6ZSA9IHZpc2libGVDb250ZW50UmVjdChJbmNsdWRlU2Nyb2xsYmFy
cykuc2l6ZSgpOwotI2VuZGlmCiAKICAgICAgICAgICAgICAgICAgICAgbV9sYXN0Wm9vbUZhY3Rv
ciA9IHJvb3QtPnN0eWxlKCkuem9vbSgpOwogCkBAIC0xNzc2LDcgKzE3NzIsOCBAQCB2b2lkIEZy
YW1lVmlldzo6c2Nyb2xsQ29udGVudHNTbG93UGF0aChjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0
KQogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBpZiAoY29udGVudHNJ
bkNvbXBvc2l0ZWRMYXllcigpKSB7Ci0gICAgICAgIEludFJlY3QgdXBkYXRlUmVjdCA9IHZpc2li
bGVDb250ZW50UmVjdCgpOworICAgICAgICAvLyBGSVhNRTogcmVzcGVjdCBwYWludHNFbnRpcmVD
b250ZW50cygpPworICAgICAgICBJbnRSZWN0IHVwZGF0ZVJlY3QgPSB2aXNpYmxlQ29udGVudFJl
Y3QoRXhjbHVkZVNjcm9sbGJhcnMsIExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpOwogCiAg
ICAgICAgIC8vIE1ha2Ugc3VyZSB0byAiYXBwbHkiIHRoZSBzY2FsZSBmYWN0b3IgaGVyZSBzaW5j
ZSB3ZSdyZSBjb252ZXJ0aW5nIGZyb20gZnJhbWUgdmlldwogICAgICAgICAvLyBjb29yZGluYXRl
cyB0byBsYXllciBiYWNraW5nIGNvb3JkaW5hdGVzLgpAQCAtMjE2NCw3ICsyMTYxLDcgQEAgdm9p
ZCBGcmFtZVZpZXc6OnJlcGFpbnRDb250ZW50UmVjdGFuZ2xlKGNvbnN0IEludFJlY3QmIHIsIGJv
b2wgaW1tZWRpYXRlKQogICAgIGlmICgobV9kZWZlcnJpbmdSZXBhaW50cyB8fCBtX2RlZmVycmVk
UmVwYWludFRpbWVyLmlzQWN0aXZlKCkgfHwgZGVsYXkpICYmICFpbW1lZGlhdGUpIHsKICAgICAg
ICAgSW50UmVjdCBwYWludFJlY3QgPSByOwogICAgICAgICBpZiAoY2xpcHNSZXBhaW50cygpICYm
ICFwYWludHNFbnRpcmVDb250ZW50cygpKQotICAgICAgICAgICAgcGFpbnRSZWN0LmludGVyc2Vj
dCh2aXNpYmxlQ29udGVudFJlY3QoKSk7CisgICAgICAgICAgICBwYWludFJlY3QuaW50ZXJzZWN0
KHZpc2libGVDb250ZW50UmVjdChFeGNsdWRlU2Nyb2xsYmFycywgTGVnYWN5SU9TRG9jdW1lbnRW
aXNpYmxlUmVjdCkpOwogICAgICAgICBpZiAocGFpbnRSZWN0LmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgaWYgKG1fcmVwYWludENvdW50ID09IGNSZXBhaW50UmVjdFVu
aW9uVGhyZXNob2xkKSB7CkBAIC0yOTA0LDExICsyOTAxLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNl
bmRSZXNpemVFdmVudElmTmVlZGVkKCkKICAgICBpZiAodXNlRml4ZWRMYXlvdXQoKSAmJiAhZml4
ZWRMYXlvdXRTaXplKCkuaXNFbXB0eSgpICYmIGRlbGVnYXRlc1Njcm9sbGluZygpKQogICAgICAg
ICBjdXJyZW50U2l6ZSA9IGZpeGVkTGF5b3V0U2l6ZSgpOwogICAgIGVsc2UKLSNpZiBQTEFURk9S
TShJT1MpCi0gICAgICAgIGN1cnJlbnRTaXplID0gYWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KCku
c2l6ZSgpOwotI2Vsc2UKICAgICAgICAgY3VycmVudFNpemUgPSB2aXNpYmxlQ29udGVudFJlY3Qo
SW5jbHVkZVNjcm9sbGJhcnMpLnNpemUoKTsKLSNlbmRpZgogCiAgICAgZmxvYXQgY3VycmVudFpv
b21GYWN0b3IgPSByZW5kZXJWaWV3LT5zdHlsZSgpLnpvb20oKTsKICAgICBib29sIHNob3VsZFNl
bmRSZXNpemVFdmVudCA9ICFtX2ZpcnN0TGF5b3V0ICYmIChjdXJyZW50U2l6ZSAhPSBtX2xhc3RW
aWV3cG9ydFNpemUgfHwgY3VycmVudFpvb21GYWN0b3IgIT0gbV9sYXN0Wm9vbUZhY3Rvcik7CkBA
IC0zMTMxLDcgKzMxMjQsNyBAQCBJbnRSZWN0IEZyYW1lVmlldzo6d2luZG93Q2xpcFJlY3QoYm9v
bCBjbGlwVG9Db250ZW50cykgY29uc3QKICAgICAgICAgcmV0dXJuIEludFJlY3QoSW50UG9pbnQo
KSwgdG90YWxDb250ZW50c1NpemUoKSk7CiAKICAgICAvLyBTZXQgb3VyIGNsaXAgcmVjdCB0byBi
ZSBvdXIgY29udGVudHMuCi0gICAgSW50UmVjdCBjbGlwUmVjdCA9IGNvbnRlbnRzVG9XaW5kb3co
dmlzaWJsZUNvbnRlbnRSZWN0KGNsaXBUb0NvbnRlbnRzID8gRXhjbHVkZVNjcm9sbGJhcnMgOiBJ
bmNsdWRlU2Nyb2xsYmFycykpOworICAgIEludFJlY3QgY2xpcFJlY3QgPSBjb250ZW50c1RvV2lu
ZG93KHZpc2libGVDb250ZW50UmVjdChjbGlwVG9Db250ZW50cyA/IEV4Y2x1ZGVTY3JvbGxiYXJz
IDogSW5jbHVkZVNjcm9sbGJhcnMsIExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpKTsKICAg
ICBpZiAoIWZyYW1lKCkub3duZXJFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBjbGlwUmVjdDsK
IApAQCAtMzI0NSw3ICszMjM4LDcgQEAgYm9vbCBGcmFtZVZpZXc6OmlzU2Nyb2xsYWJsZSgpCiAK
ICAgICAvLyBDb3ZlcnMgIzEKICAgICBJbnRTaXplIHRvdGFsQ29udGVudHNTaXplID0gdGhpcy0+
dG90YWxDb250ZW50c1NpemUoKTsKLSAgICBJbnRTaXplIHZpc2libGVDb250ZW50U2l6ZSA9IHZp
c2libGVDb250ZW50UmVjdCgpLnNpemUoKTsKKyAgICBJbnRTaXplIHZpc2libGVDb250ZW50U2l6
ZSA9IHZpc2libGVDb250ZW50UmVjdChFeGNsdWRlU2Nyb2xsYmFycywgTGVnYWN5SU9TRG9jdW1l
bnRWaXNpYmxlUmVjdCkuc2l6ZSgpOwogICAgIGlmICgodG90YWxDb250ZW50c1NpemUuaGVpZ2h0
KCkgPD0gdmlzaWJsZUNvbnRlbnRTaXplLmhlaWdodCgpICYmIHRvdGFsQ29udGVudHNTaXplLndp
ZHRoKCkgPD0gdmlzaWJsZUNvbnRlbnRTaXplLndpZHRoKCkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKQEAgLTM1NDgsOSArMzU0MSwxMCBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250cm9s
VGludHMoKQogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBjb25zdCBub0NvbnRleHQgPSAw
OwogICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KG5vQ29udGV4dCk7CiAgICAgY29udGV4dC5z
ZXRVcGRhdGluZ0NvbnRyb2xUaW50cyh0cnVlKTsKLSAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkK
LSAgICAgICAgcGFpbnRDb250ZW50cygmY29udGV4dCwgdmlzaWJsZUNvbnRlbnRSZWN0KCkpOwot
ICAgIGVsc2UKKyAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkgeworICAgICAgICAvLyBGSVhNRTog
Y29uc3VsdCBwYWludHNFbnRpcmVDb250ZW50cygpLgorICAgICAgICBwYWludENvbnRlbnRzKCZj
b250ZXh0LCB2aXNpYmxlQ29udGVudFJlY3QoRXhjbHVkZVNjcm9sbGJhcnMsIExlZ2FjeUlPU0Rv
Y3VtZW50VmlzaWJsZVJlY3QpKTsKKyAgICB9IGVsc2UKICAgICAgICAgcGFpbnQoJmNvbnRleHQs
IGZyYW1lUmVjdCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApp
bmRleCA3ZTk3ZTM5Y2U2MGZiYmQ2NmMwNzdkODBhM2VkN2FhYmFlYTFjMWUzLi4yOGNiOTUzZTk2
MGM2OGIxOGQ0MWE3NzcxYzFjYWNmZWI4MmM4Mzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmNwcApAQCAtMjYxLDE3ICsyNjEsMjQgQEAgSW50U2l6ZSBTY3JvbGxWaWV3Ojp1
bnNjYWxlZFZpc2libGVDb250ZW50U2l6ZShWaXNpYmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9s
bGIKIH0KIAogI2lmICFQTEFURk9STShHVEspCi1JbnRSZWN0IFNjcm9sbFZpZXc6OnZpc2libGVD
b250ZW50UmVjdChWaXNpYmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnMgc2NvbGxiYXJJ
bmNsdXNpb24pIGNvbnN0CitJbnRSZWN0IFNjcm9sbFZpZXc6OnZpc2libGVDb250ZW50UmVjdChW
aXNpYmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnMgc2Nyb2xsYmFySW5jbHVzaW9uLCBW
aXNpYmxlQ29udGVudFJlY3RCZWhhdmlvciB2aXNpYmxlQ29udGVudFJlY3RCZWhhdmlvcikgY29u
c3QKIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYgKHZpc2libGVDb250ZW50UmVjdEJlaGF2
aW9yID09IExlZ2FjeUlPU0RvY3VtZW50Vmlld1JlY3QpIHsKKyAgICAgICAgaWYgKHBsYXRmb3Jt
V2lkZ2V0KCkpCisgICAgICAgICAgICByZXR1cm4gcGxhdGZvcm1WaXNpYmxlQ29udGVudFJlY3Qo
c2Nyb2xsYmFySW5jbHVzaW9uID09IEluY2x1ZGVTY3JvbGxiYXJzKTsKKyAgICB9CisgICAgCiAg
ICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpCi0gICAgICAgIHJldHVybiBwbGF0Zm9ybVZpc2libGVD
b250ZW50UmVjdChzY29sbGJhckluY2x1c2lvbiA9PSBJbmNsdWRlU2Nyb2xsYmFycyk7Ci0KLSNp
ZiAhUExBVEZPUk0oSU9TKQotICAgIGlmICghbV9maXhlZFZpc2libGVDb250ZW50UmVjdC5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBtX2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0OworICAgICAg
ICByZXR1cm4gYWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KCk7CisjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTSh2aXNpYmxlQ29udGVudFJlY3RCZWhhdmlvcik7CiAjZW5kaWYKIAotICAgIEZsb2F0U2l6
ZSB2aXNpYmxlQ29udGVudFNpemUgPSB1bnNjYWxlZFZpc2libGVDb250ZW50U2l6ZShzY29sbGJh
ckluY2x1c2lvbik7CisgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpCisgICAgICAgIHJldHVybiBw
bGF0Zm9ybVZpc2libGVDb250ZW50UmVjdChzY3JvbGxiYXJJbmNsdXNpb24gPT0gSW5jbHVkZVNj
cm9sbGJhcnMpOworCisgICAgRmxvYXRTaXplIHZpc2libGVDb250ZW50U2l6ZSA9IHVuc2NhbGVk
VmlzaWJsZUNvbnRlbnRTaXplKHNjcm9sbGJhckluY2x1c2lvbik7CiAgICAgdmlzaWJsZUNvbnRl
bnRTaXplLnNjYWxlKDEgLyB2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yKCkpOwogICAgIHJldHVy
biBJbnRSZWN0KEludFBvaW50KG1fc2Nyb2xsT2Zmc2V0KSwgZXhwYW5kZWRJbnRTaXplKHZpc2li
bGVDb250ZW50U2l6ZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4
IGMxN2MyOTE2YjA2MDcwOGQxNmY0MTgxZGI5NjA3YmRiN2U2ZWM1NjkuLjU1NzQ4YzlhMWJjZmE1
MGFjNDFlMjcxY2IxM2U5OGMzNzZhYmVlMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxW
aWV3LmgKQEAgLTE1OSwxMiArMTU5LDEyIEBAIHB1YmxpYzoKICAgICAvLyBJbiB0aGUgc2l0dWF0
aW9uIHRoZSBjbGllbnQgaXMgcmVzcG9uc2libGUgZm9yIHRoZSBzY3JvbGxpbmcgKGllLiB3aXRo
IGEgdGlsZWQgYmFja2luZyBzdG9yZSkgaXQgaXMgcG9zc2libGUgdG8gdXNlCiAgICAgLy8gdGhl
IHNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0IGluc3RlYWQgZm9yIHRoZSBtYWluZnJhbWUsIHRo
b3VnaCB0aGlzIG11c3QgYmUgdXBkYXRlZCBtYW51YWxseSwgZS5nIGp1c3QgYmVmb3JlIHJlc3Vt
aW5nIHRoZSBwYWdlCiAgICAgLy8gd2hpY2ggdXN1YWxseSB3aWxsIGhhcHBlbiB3aGVuIHBhbm5p
bmcsIHBpbmNoaW5nIGFuZCByb3RhdGlvbiBlbmRzLCBvciB3aGVuIHNjYWxlIG9yIHBvc2l0aW9u
IGFyZSBjaGFuZ2VkIG1hbnVhbGx5LgotICAgIHZpcnR1YWwgSW50UmVjdCB2aXNpYmxlQ29udGVu
dFJlY3QoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzID0gRXhjbHVkZVNjcm9s
bGJhcnMpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgSW50UmVjdCB2aXNpYmxlQ29udGVu
dFJlY3QoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzID0gRXhjbHVkZVNjcm9s
bGJhcnMsIFZpc2libGVDb250ZW50UmVjdEJlaGF2aW9yID0gQ29udGVudHNWaXNpYmxlUmVjdCkg
Y29uc3Qgb3ZlcnJpZGU7CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QoY29uc3QgSW50UmVjdCYgdmlzaWJsZUNvbnRlbnRSZWN0
KSB7IG1fZml4ZWRWaXNpYmxlQ29udGVudFJlY3QgPSB2aXNpYmxlQ29udGVudFJlY3Q7IH0KICAg
ICBJbnRSZWN0IGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9maXhl
ZFZpc2libGVDb250ZW50UmVjdDsgfQogI2VuZGlmCi0gICAgSW50U2l6ZSB2aXNpYmxlU2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdCgpLnNpemUoKTsgfQorICAgIEludFNp
emUgdmlzaWJsZVNpemUoKSBjb25zdCB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoRXhjbHVk
ZVNjcm9sbGJhcnMsIExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpLnNpemUoKTsgfQogI2lm
IFBMQVRGT1JNKElPUykKICAgICAvLyBUaGlzIGlzIHRoZSBhcmVhIHRoYXQgaXMgbm90IGNvdmVy
ZWQgYnkgVUkgZWxlbWVudHMuCiAgICAgSW50UmVjdCBhY3R1YWxWaXNpYmxlQ29udGVudFJlY3Qo
KSBjb25zdDsKQEAgLTE3NCw4ICsxNzQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBY3R1YWxT
Y3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYpOwogICAgIFRpbGVDYWNoZSogdGlsZUNhY2hl
KCk7CiAjZW5kaWYKLSAgICB2aXJ0dWFsIGludCB2aXNpYmxlV2lkdGgoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoKS53aWR0aCgpOyB9Ci0gICAgdmlydHVhbCBp
bnQgdmlzaWJsZUhlaWdodCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHZpc2libGVDb250ZW50
UmVjdCgpLmhlaWdodCgpOyB9CisgICAgdmlydHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KEV4Y2x1ZGVTY3JvbGxiYXJzLCBM
ZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KS53aWR0aCgpOyB9CisgICAgdmlydHVhbCBpbnQg
dmlzaWJsZUhlaWdodCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVj
dChFeGNsdWRlU2Nyb2xsYmFycywgTGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCkuaGVpZ2h0
KCk7IH0KIAogICAgIC8vIHZpc2libGVDb250ZW50UmVjdCgpLnNpemUoKSBpcyBjb21wdXRlZCBm
cm9tIHVuc2NhbGVkVmlzaWJsZUNvbnRlbnRTaXplKCkgZGl2aWRlZCBieSB0aGUgdmFsdWUgb2Yg
dmlzaWJsZUNvbnRlbnRTY2FsZUZhY3Rvci4KICAgICAvLyB2aXNpYmxlQ29udGVudFNjYWxlRmFj
dG9yIGlzIHVzdWFsbHkgMSwgZXhjZXB0IHdoZW4gdGhlIHNldHRpbmcgZGVsZWdhdGVzUGFnZVNj
YWxpbmcgaXMgdHJ1ZSBhbmQgdGhlCkBAIC0yMDIsOCArMjAyLDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBzZXRDb250ZW50c1NpemUoY29uc3QgSW50U2l6ZSYpOwogCiAgICAgLy8gRnVu
Y3Rpb25zIGZvciBxdWVyeWluZyB0aGUgY3VycmVudCBzY3JvbGxlZCBwb3NpdGlvbiAoYm90aCBh
cyBhIHBvaW50LCBhIHNpemUsIG9yIGFzIGluZGl2aWR1YWwgWCBhbmQgWSB2YWx1ZXMpLgotICAg
IHZpcnR1YWwgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB2aXNpYmxlQ29udGVudFJlY3QoKS5sb2NhdGlvbigpOyB9Ci0gICAgSW50U2l6ZSBzY3JvbGxP
ZmZzZXQoKSBjb25zdCB7IHJldHVybiB0b0ludFNpemUodmlzaWJsZUNvbnRlbnRSZWN0KCkubG9j
YXRpb24oKSk7IH0gLy8gR2V0cyB0aGUgc2Nyb2xsZWQgcG9zaXRpb24gYXMgYW4gSW50U2l6ZS4g
Q29udmVuaWVudCBmb3IgYWRkaW5nIHRvIG90aGVyIHNpemVzLgorICAgIHZpcnR1YWwgSW50UG9p
bnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB2aXNpYmxlQ29udGVu
dFJlY3QoRXhjbHVkZVNjcm9sbGJhcnMsIExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpLmxv
Y2F0aW9uKCk7IH0KKyAgICBJbnRTaXplIHNjcm9sbE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHRv
SW50U2l6ZSh2aXNpYmxlQ29udGVudFJlY3QoRXhjbHVkZVNjcm9sbGJhcnMsIExlZ2FjeUlPU0Rv
Y3VtZW50VmlzaWJsZVJlY3QpLmxvY2F0aW9uKCkpOyB9IC8vIEdldHMgdGhlIHNjcm9sbGVkIHBv
c2l0aW9uIGFzIGFuIEludFNpemUuIENvbnZlbmllbnQgZm9yIGFkZGluZyB0byBvdGhlciBzaXpl
cy4KICAgICB2aXJ0dWFsIEludFBvaW50IG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92
ZXJyaWRlOyAvLyBUaGUgbWF4aW11bSBwb3NpdGlvbiB3ZSBjYW4gYmUgc2Nyb2xsZWQgdG8uCiAg
ICAgdmlydHVhbCBJbnRQb2ludCBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlk
ZTsgLy8gVGhlIG1pbmltdW0gcG9zaXRpb24gd2UgY2FuIGJlIHNjcm9sbGVkIHRvLgogICAgIC8v
IEFkanVzdCB0aGUgcGFzc2VkIGluIHNjcm9sbCBwb3NpdGlvbiB0byBrZWVwIGl0IGJldHdlZW4g
dGhlIG1pbmltdW0gYW5kIG1heGltdW0gcG9zaXRpb25zLgpAQCAtMjEyLDggKzIxMiwxMCBAQCBw
dWJsaWM6CiAgICAgaW50IHNjcm9sbFkoKSBjb25zdCB7IHJldHVybiBzY3JvbGxQb3NpdGlvbigp
LnkoKTsgfQogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIGludCBhY3R1YWxTY3JvbGxYKCkgY29u
c3QgeyByZXR1cm4gYWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KCkueCgpOyB9Ci0gICAgaW50IGFj
dHVhbFNjcm9sbFkoKSBjb25zdCB7IHJldHVybiBhY3R1YWxWaXNpYmxlQ29udGVudFJlY3QoKS55
KCk7IH0KKyAgICBpbnQgYWN0dWFsU2Nyb2xsWCgpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVDb250
ZW50UmVjdCgpLngoKTsgfQorICAgIGludCBhY3R1YWxTY3JvbGxZKCkgY29uc3QgeyByZXR1cm4g
dmlzaWJsZUNvbnRlbnRSZWN0KCkueSgpOyB9CisgICAgLy8gRklYTUU6IG1heWJlIGZpeCBzY3Jv
bGxQb3NpdGlvbigpIG9uIGlPUyB0byByZXR1cm4gdGhlIGFjdHVhbCBzY3JvbGwgcG9zaXRpb24u
CisgICAgSW50UG9pbnQgYWN0dWFsU2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiB2aXNp
YmxlQ29udGVudFJlY3QoKS5sb2NhdGlvbigpOyB9CiAjZW5kaWYKIAogICAgIC8vIHNjcm9sbE9m
ZnNldCgpIGFuY2hvcnMgaXRzICgwLDApIHBvaW50IGF0IHRoZSB0b3AgZW5kIG9mIHRoZSBoZWFk
ZXIgaWYgdGhpcyBTY3JvbGxhYmxlQXJlYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuY3BwCmluZGV4IGRmNzUzMTIzYjMwMDZiZGRkM2Y1ZTlkMTUwZjZlOTRmMDVkN2M3
YjEuLjUyMDMwZWZjYTkzOTFiNmI1YjQyMGM2NTU1ZTZhNjE1ZTkyZTQwZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTQ0NSw3ICs0NDUsNyBAQCBJ
bnRTaXplIFNjcm9sbGFibGVBcmVhOjp0b3RhbENvbnRlbnRzU2l6ZSgpIGNvbnN0CiAgICAgcmV0
dXJuIHRvdGFsQ29udGVudHNTaXplOwogfQogCi1JbnRSZWN0IFNjcm9sbGFibGVBcmVhOjp2aXNp
YmxlQ29udGVudFJlY3QoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzIHNjcm9s
bGJhckluY2x1c2lvbikgY29uc3QKK0ludFJlY3QgU2Nyb2xsYWJsZUFyZWE6OnZpc2libGVDb250
ZW50UmVjdChWaXNpYmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnMgc2Nyb2xsYmFySW5j
bHVzaW9uLCBWaXNpYmxlQ29udGVudFJlY3RCZWhhdmlvcikgY29uc3QKIHsKICAgICBpbnQgdmVy
dGljYWxTY3JvbGxiYXJXaWR0aCA9IDA7CiAgICAgaW50IGhvcml6b250YWxTY3JvbGxiYXJIZWln
aHQgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFy
ZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKaW5kZXggYWE5
MTJlZjQ0MzQ5OGY0YTJlN2JhMWEzMTY5ZGUxNmRhMzdhZWVkNi4uMjgzMzAzOTg1NmE4ODU1MGZh
NjcwYWYxODY5NTZjMmZkODFmYzExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxh
YmxlQXJlYS5oCkBAIC0xNTMsNyArMTUzLDE3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEludFBv
aW50IG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0OwogCiAgICAgZW51bSBWaXNpYmxlQ29u
dGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnMgeyBFeGNsdWRlU2Nyb2xsYmFycywgSW5jbHVkZVNj
cm9sbGJhcnMgfTsKLSAgICB2aXJ0dWFsIEludFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0KFZpc2li
bGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFycyA9IEV4Y2x1ZGVTY3JvbGxiYXJzKSBjb25z
dDsKKyAgICBlbnVtIFZpc2libGVDb250ZW50UmVjdEJlaGF2aW9yIHsKKyAgICAgICAgQ29udGVu
dHNWaXNpYmxlUmVjdCwKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIExlZ2FjeUlPU0RvY3Vt
ZW50Vmlld1JlY3QsCisgICAgICAgIExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QgPSBMZWdh
Y3lJT1NEb2N1bWVudFZpZXdSZWN0CisjZWxzZQorICAgICAgICBMZWdhY3lJT1NEb2N1bWVudFZp
c2libGVSZWN0ID0gQ29udGVudHNWaXNpYmxlUmVjdAorI2VuZGlmCisgICAgfTsKKworICAgIHZp
cnR1YWwgSW50UmVjdCB2aXNpYmxlQ29udGVudFJlY3QoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVk
ZXNTY3JvbGxiYXJzID0gRXhjbHVkZVNjcm9sbGJhcnMsIFZpc2libGVDb250ZW50UmVjdEJlaGF2
aW9yID0gQ29udGVudHNWaXNpYmxlUmVjdCkgY29uc3Q7CiAgICAgdmlydHVhbCBpbnQgdmlzaWJs
ZUhlaWdodCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGludCB2aXNpYmxlV2lkdGgoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0ID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxWaWV3R3RrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxWaWV3R3RrLmNwcAppbmRleCAwYjA1
YTU3YjdkZTI5NGI2M2M4NmZkNTJlNzQ4ZjAwZjkxMjMyMDg5Li40Njg4Y2IzMjA2OGIwZDgyNzQ0
Y2I0ZWU1MDIyODU0NjU2NmRhY2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvU2Nyb2xsVmlld0d0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1Njcm9sbFZpZXdHdGsuY3BwCkBAIC02Myw3ICs2Myw3IEBAIFBhc3NSZWZQdHI8U2Nyb2xsYmFy
PiBTY3JvbGxWaWV3OjpjcmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50
YXRpCiAgICAgcmV0dXJuIFNjcm9sbGJhcjo6Y3JlYXRlTmF0aXZlU2Nyb2xsYmFyKHRoaXMsIG9y
aWVudGF0aW9uLCBSZWd1bGFyU2Nyb2xsYmFyKTsKIH0KIAotSW50UmVjdCBTY3JvbGxWaWV3Ojp2
aXNpYmxlQ29udGVudFJlY3QoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzIHNj
cm9sbGJhckluY2x1c2lvbikgY29uc3QKK0ludFJlY3QgU2Nyb2xsVmlldzo6dmlzaWJsZUNvbnRl
bnRSZWN0KFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFycyBzY3JvbGxiYXJJbmNs
dXNpb24sIFZpc2libGVDb250ZW50UmVjdEJlaGF2aW9yKSBjb25zdAogewogICAgIGJvb2wgaW5j
bHVkZVNjcm9sbGJhcnMgPSBzY3JvbGxiYXJJbmNsdXNpb24gPT0gSW5jbHVkZVNjcm9sbGJhcnM7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGJhZTZkMzhj
MTI0NmE0MjM5MWI3YmNjNzE2ZTEzMmRmNTE0ZDA2NTUuLjgxMmI0Y2QyYjcxNDU5M2M3OTMxYTZj
OGE5YzU1YzE2ZDg3NGUzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcApAQCAtMjQ0OSw3ICsyNDQ5LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRv
VmlzaWJsZShjb25zdCBMYXlvdXRSZWN0JiByZWN0LCBjb25zdCBTY3JvbGxBbGlnbm0KICAgICAg
ICAgICAgICAgICBmcmFtZUVsZW1lbnRCYXNlID0gdG9IVE1MRnJhbWVFbGVtZW50QmFzZShvd25l
ckVsZW1lbnQpOwogCiAgICAgICAgICAgICBpZiAoZnJhbWVFbGVtZW50QW5kVmlld1Blcm1pdFNj
cm9sbChmcmFtZUVsZW1lbnRCYXNlLCAmZnJhbWVWaWV3KSkgewotICAgICAgICAgICAgICAgIExh
eW91dFJlY3Qgdmlld1JlY3QgPSBmcmFtZVZpZXcudmlzaWJsZUNvbnRlbnRSZWN0KCk7CisgICAg
ICAgICAgICAgICAgTGF5b3V0UmVjdCB2aWV3UmVjdCA9IGZyYW1lVmlldy52aXNpYmxlQ29udGVu
dFJlY3QoRXhjbHVkZVNjcm9sbGJhcnMsIExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpOwog
ICAgICAgICAgICAgICAgIExheW91dFJlY3QgZXhwb3NlUmVjdCA9IGdldFJlY3RUb0V4cG9zZSh2
aWV3UmVjdCwgdmlld1JlY3QsIHJlY3QsIGFsaWduWCwgYWxpZ25ZKTsKIAogICAgICAgICAgICAg
ICAgIGludCB4T2Zmc2V0ID0gcm91bmRUb0ludChleHBvc2VSZWN0LngoKSk7CkBAIC0yNDc1LDYg
KzI0NzUsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0IExh
eW91dFJlY3QmIHJlY3QsIGNvbnN0IFNjcm9sbEFsaWdubQogICAgICAgICAgICAgSW50U2l6ZSBz
Y3JvbGxPZmZzZXRSZWxhdGl2ZVRvRG9jdW1lbnQgPSBmcmFtZVZpZXcuc2Nyb2xsT2Zmc2V0UmVs
YXRpdmVUb0RvY3VtZW50KCk7CiAgICAgICAgICAgICB2aXNpYmxlUmVjdFJlbGF0aXZlVG9Eb2N1
bWVudC5zZXRMb2NhdGlvbihJbnRQb2ludChzY3JvbGxPZmZzZXRSZWxhdGl2ZVRvRG9jdW1lbnQu
d2lkdGgoKSwgc2Nyb2xsT2Zmc2V0UmVsYXRpdmVUb0RvY3VtZW50LmhlaWdodCgpKSk7CiAjZWxz
ZQorICAgICAgICAgICAgLy8gRklYTUU6IGlzIHRoaXMgZXF1aXZhbGVudCB0byB0aGUgY29kZSBh
Ym92ZT8KICAgICAgICAgICAgIExheW91dFJlY3Qgdmlld1JlY3QgPSBmcmFtZVZpZXcuYWN0dWFs
VmlzaWJsZUNvbnRlbnRSZWN0KCk7CiAgICAgICAgICAgICBMYXlvdXRSZWN0IHZpc2libGVSZWN0
UmVsYXRpdmVUb0RvY3VtZW50ID0gdmlld1JlY3Q7CiAjZW5kaWYKQEAgLTI3MDAsMTAgKzI3MDEs
MTAgQEAgSW50UG9pbnQgUmVuZGVyTGF5ZXI6Om1pbmltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0
CiBJbnRQb2ludCBSZW5kZXJMYXllcjo6bWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QKIHsK
ICAgICAvLyBGSVhNRTogbV9zY3JvbGxTaXplIG1heSBub3QgYmUgdXAtdG8tZGF0ZSBpZiBtX3Nj
cm9sbERpbWVuc2lvbnNEaXJ0eSBpcyB0cnVlLgotICAgIHJldHVybiAtc2Nyb2xsT3JpZ2luKCkg
KyByb3VuZGVkSW50U2l6ZShtX3Njcm9sbFNpemUpIC0gdmlzaWJsZUNvbnRlbnRSZWN0KEluY2x1
ZGVTY3JvbGxiYXJzKS5zaXplKCk7CisgICAgcmV0dXJuIC1zY3JvbGxPcmlnaW4oKSArIHJvdW5k
ZWRJbnRTaXplKG1fc2Nyb2xsU2l6ZSkgLSB2aXNpYmxlQ29udGVudFJlY3QoSW5jbHVkZVNjcm9s
bGJhcnMsIENvbnRlbnRzVmlzaWJsZVJlY3QpLnNpemUoKTsKIH0KIAotSW50UmVjdCBSZW5kZXJM
YXllcjo6dmlzaWJsZUNvbnRlbnRSZWN0KFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xs
YmFycyBzY3JvbGxiYXJJbmNsdXNpb24pIGNvbnN0CitJbnRSZWN0IFJlbmRlckxheWVyOjp2aXNp
YmxlQ29udGVudFJlY3QoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzIHNjcm9s
bGJhckluY2x1c2lvbiwgVmlzaWJsZUNvbnRlbnRSZWN0QmVoYXZpb3IpIGNvbnN0CiB7CiAgICAg
aW50IHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGggPSAwOwogICAgIGludCBob3Jpem9udGFsU2Nyb2xs
YmFySGVpZ2h0ID0gMDsKQEAgLTQ2NzAsNyArNDY3MSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6Omhp
dFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEhpdFRlc3RMb2NhdGlv
biYKIAogICAgIExheW91dFJlY3QgaGl0VGVzdEFyZWEgPSBpc091dE9mRmxvd1JlbmRlckZsb3dU
aHJlYWQoKSA/IHRvUmVuZGVyRmxvd1RocmVhZCgmcmVuZGVyZXIoKSktPnZpc3VhbE92ZXJmbG93
UmVjdCgpIDogcmVuZGVyZXIoKS52aWV3KCkuZG9jdW1lbnRSZWN0KCk7CiAgICAgaWYgKCFyZXF1
ZXN0Lmlnbm9yZUNsaXBwaW5nKCkpCi0gICAgICAgIGhpdFRlc3RBcmVhLmludGVyc2VjdChyZW5k
ZXJlcigpLnZpZXcoKS5mcmFtZVZpZXcoKS52aXNpYmxlQ29udGVudFJlY3QoKSk7CisgICAgICAg
IGhpdFRlc3RBcmVhLmludGVyc2VjdChyZW5kZXJlcigpLnZpZXcoKS5mcmFtZVZpZXcoKS52aXNp
YmxlQ29udGVudFJlY3QoRXhjbHVkZVNjcm9sbGJhcnMsIExlZ2FjeUlPU0RvY3VtZW50VmlzaWJs
ZVJlY3QpKTsKIAogICAgIFJlbmRlckxheWVyKiBpbnNpZGVMYXllciA9IGhpdFRlc3RMYXllcih0
aGlzLCAwLCByZXF1ZXN0LCByZXN1bHQsIGhpdFRlc3RBcmVhLCBoaXRUZXN0TG9jYXRpb24sIGZh
bHNlKTsKICAgICBpZiAoIWluc2lkZUxheWVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5oCmluZGV4IGQ2MDZkOWE4MzVhNjY5ZGZlM2VkYWVlODMwYmU0M2IwOGQ1ZGFjMDYu
LjhkZGQzYjRhNzZjMzZjNTQ0NTM3ZjI3MTVlMDg1OTU3OGRhNmZkMzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC0xMDY3LDcgKzEwNjcsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIEludFBvaW50IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgSW50UG9pbnQgbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHZpc2libGVDb250ZW50UmVjdChWaXNpYmxlQ29u
dGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnMpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwg
SW50UmVjdCB2aXNpYmxlQ29udGVudFJlY3QoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3Jv
bGxiYXJzLCBWaXNpYmxlQ29udGVudFJlY3RCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCBpbnQgdmlzaWJsZUhlaWdodCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
aW50IHZpc2libGVXaWR0aCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgSW50U2l6ZSBj
b250ZW50c1NpemUoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggYTZkZmIyMDNmMDIzYjllMTJlYjkxOGIy
MmFlMTMxM2Q0NDMwZTNjNi4uMWIzOGMzMjdmOTI4ZDVkNmZhNTk5NjU0MTYyZDUwNDI1ZTJhNTNi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAKQEAgLTQ5MSw3ICs0OTEsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ29t
cG9zaXRlZEJvdW5kcygpCiAgICAgICAgIExheW91dFJlY3QgY2xpcHBpbmdCb3VuZHM7CiAgICAg
ICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkucG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uICYm
IHJlbmRlcmVyKCkuY29udGFpbmVyKCkgPT0gJnZpZXcpIHsKICNpZiBQTEFURk9STShJT1MpCi0g
ICAgICAgICAgICBjbGlwcGluZ0JvdW5kcyA9IHZpZXcuZnJhbWVWaWV3KCkudmlzaWJsZUNvbnRl
bnRSZWN0KCk7CisgICAgICAgICAgICBjbGlwcGluZ0JvdW5kcyA9IHZpZXcuZnJhbWVWaWV3KCku
dmlzaWJsZUNvbnRlbnRSZWN0KFNjcm9sbGFibGVBcmVhOjpFeGNsdWRlU2Nyb2xsYmFycywgU2Ny
b2xsYWJsZUFyZWE6OkxlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpOwogI2Vsc2UKICAgICAg
ICAgICAgIGNsaXBwaW5nQm91bmRzID0gdmlldy5mcmFtZVZpZXcoKS52aWV3cG9ydENvbnN0cmFp
bmVkVmlzaWJsZUNvbnRlbnRSZWN0KCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmNwcAppbmRleCA0YTRiMzVjZTFhYzkzOWZkNmU3NWRmODM4NWIxOTFhMDQyYjYw
NWI2Li5mNzJjZTUzY2I2YjA3ZjdmYTQ2NGE3OGFlZjdlZjNkZmUwNzQyNjM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC0xMDE1LDcgKzEwMTUsNyBAQCBMYXlv
dXRSZWN0IFJlbmRlclZpZXc6OnZpZXdSZWN0KCkgY29uc3QKIHsKICAgICBpZiAoc2hvdWxkVXNl
UHJpbnRpbmdMYXlvdXQoKSkKICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoTGF5b3V0UG9pbnQo
KSwgc2l6ZSgpKTsKLSAgICByZXR1cm4gZnJhbWVWaWV3KCkudmlzaWJsZUNvbnRlbnRSZWN0KCk7
CisgICAgcmV0dXJuIGZyYW1lVmlldygpLnZpc2libGVDb250ZW50UmVjdChTY3JvbGxhYmxlQXJl
YTo6RXhjbHVkZVNjcm9sbGJhcnMsIFNjcm9sbGFibGVBcmVhOjpMZWdhY3lJT1NEb2N1bWVudFZp
c2libGVSZWN0KTsKIH0KIAogSW50UmVjdCBSZW5kZXJWaWV3Ojp1bnNjYWxlZERvY3VtZW50UmVj
dCgpIGNvbnN0CkBAIC0xMTA5LDcgKzExMDksNyBAQCBib29sIFJlbmRlclZpZXc6OnNob3VsZERp
c2FibGVMYXlvdXRTdGF0ZUZvclN1YnRyZWUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29ucwog
CiBJbnRTaXplIFJlbmRlclZpZXc6OnZpZXdwb3J0U2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGZyYW1lVmlldygpLnZpc2libGVDb250ZW50UmVjdChTY3JvbGxhYmxlQXJlYTo6SW5jbHVkZVNj
cm9sbGJhcnMpLnNpemUoKTsKKyAgICByZXR1cm4gZnJhbWVWaWV3KCkudmlzaWJsZUNvbnRlbnRS
ZWN0KFNjcm9sbGFibGVBcmVhOjpJbmNsdWRlU2Nyb2xsYmFycywgU2Nyb2xsYWJsZUFyZWE6Okxl
Z2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpLnNpemUoKTsKIH0KIAogdm9pZCBSZW5kZXJWaWV3
Ojp1cGRhdGVIaXRUZXN0UmVzdWx0KEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgTGF5b3V0
UG9pbnQmIHBvaW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9X
ZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5p
bgppbmRleCBlMDZjYWNiODE1MzE3MWY2MGRlY2VkYThjMWM0ZTQ5YTY2YmE1YzQ3Li43NjExOGQ4
YjAwODAzMzA2N2E5YWNjYzFlYWZjMzAxNWYzYzk2NzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRl
Zi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVy
YXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgpAQCAtNDY4LDQgKzQ2OCwzIEBAIEVYUE9SVFMKICAg
ICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP3ZtQFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRAV2ViQ29y
ZUBAUUFFUEFWVk1ASlNDQEBYWiwgP3ZtQFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRAV2ViQ29yZUBA
UUVBQVBFQVZWTUBKU0NAQFhaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/Y29tcGxldGVV
UkxARG9jdW1lbnRAV2ViQ29yZUBAVUJFP0FWVVJMQDJAQUJWU3RyaW5nQFdURkBAQFosID9jb21w
bGV0ZVVSTEBEb2N1bWVudEBXZWJDb3JlQEBVRUJBP0FWVVJMQDJAQUVCVlN0cmluZ0BXVEZAQEBa
KQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/PzFET01XaW5kb3dAV2ViQ29yZUBAVUFFQFha
LCA/PzFET01XaW5kb3dAV2ViQ29yZUBAVUVBQUBYWikKLSAgICAgICAgc3ltYm9sV2l0aFBvaW50
ZXIoP3Zpc2libGVDb250ZW50UmVjdEBTY3JvbGxWaWV3QFdlYkNvcmVAQFVCRT9BVkludFJlY3RA
MkBXNFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFyc0BTY3JvbGxhYmxlQXJlYUAy
QEBaLCA/dmlzaWJsZUNvbnRlbnRSZWN0QFNjcm9sbFZpZXdAV2ViQ29yZUBAVUVCQT9BVkludFJl
Y3RAMkBXNFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFyc0BTY3JvbGxhYmxlQXJl
YUAyQEBaKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221947</attachid>
            <date>2014-01-22 22:05:46 -0800</date>
            <delta_ts>2014-01-23 16:29:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127456-20140122220545.patch</filename>
            <type>text/plain</type>
            <size>38011</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyNTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjY4NThiMzE5NDkyNmE3
ZDdlZmU0ZmU3MDZiY2FkMjE2OTFjNWRhYy4uNzA5MTA3Mzg3ZWQwNzg0ZmMzNjA2NDllMjdkZmNi
MzczNWZlNzQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDE0LTAxLTIyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgdmlzaWJs
ZUNvbnRlbnRSZWN0KCkgcmV0dXJuIGFjdHVhbFZpc2libGVDb250ZW50UmVjdCgpIG9uIGlPUyBt
b3N0IG9mIHRoZSB0aW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjc0NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBPbiBpT1MsIHZpc2libGVDb250ZW50UmVjdCgpIHJldHVybnMgdGhlIGVudGlyZSBk
b2N1bWVudCByZWN0IGZvciBoaXN0b3JpY2FsCisgICAgICAgIHJlYXNvbnMsIGFuZCBhY3R1YWxW
aXNpYmxlQ29udGVudFJlY3QoKSByZXR1cm5zIHdoYXQgdmlzaWJsZUNvbnRlbnRSZWN0KCkKKyAg
ICAgICAgcmV0dXJucyBvbiBvdGhlciBwbGF0Zm9ybXMuCisgICAgICAgIAorICAgICAgICBJbiBh
ZGRpdGlvbiwgYWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KCkgd2FzIHJldHVybmluZyBhbiBlbXB0
eSByZWN0IGluIFdLMi4KKyAgICAgICAgCisgICAgICAgIFJlZHVjZSB0aGUgY29uZnVzaW9uIG9m
ICNpZmRlZnMgYnkgbWFraW5nIHZpc2libGVDb250ZW50UmVjdCgpIGJlaGF2ZSBsaWtlCisgICAg
ICAgIGFjdHVhbFZpc2libGVDb250ZW50UmVjdCgpIGJ5IGRlZmF1bHQgb24gaU9TLiBXaGVyZSBp
dCBuZWVkcyB0aGUgb2xkIGJlaGF2aW9yLAorICAgICAgICBhbiBvcHRpb25hbCBwYXJhbWV0ZXIs
IExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QsIHByb3ZpZGVzIHRoaXMuCisgICAgICAgIAor
ICAgICAgICBNZWNoYW5pY2FsbHkgY2hhbmdlIGFsbCB0aGUgY2FsbCBzaXRlcyBvZiBhY3R1YWxW
aXNpYmxlQ29udGVudFJlY3QoKSB0bworICAgICAgICB1c2UgdmlzaWJsZUNvbnRlbnRSZWN0KCks
IGFuZCB0aGUgY2FsbCBzaXRlcyBvZiB2aXNpYmxlQ29udGVudFJlY3QoKQorICAgICAgICB0byB2
aXNpYmxlQ29udGVudFJlY3QoLi4uLCBMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KSwgYWRk
aW5nIGNvbW1lbnRzCisgICAgICAgIHdoZXJlIHRoaXMgbWF5IG5vdCBiZSBhcHByb3ByaWF0ZS4K
KyAgICAgICAgCisgICAgICAgIEFsc28gYWRkIGFjdHVhbFNjcm9sbFBvc2l0aW9uKCksIGFuZCBj
bGVhbiB1cCBzb21lIGFjdHVhbFNjcm9sbCogY2FsbCBzaXRlcy4KKyAgICAgICAgCisgICAgICAg
IE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc09uc2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMpOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc09mZlNjcmVlbik6
CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjphZGp1c3RGbG9hdFF1YWRzRm9yU2Nyb2xsQW5kQWJzb2x1dGVab29tQW5kRnJhbWVTY2FsZSk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRqdXN0RmxvYXRSZWN0Rm9yU2Nyb2xsQW5k
QWJzb2x1dGVab29tQW5kRnJhbWVTY2FsZSk6CisgICAgICAgICogZG9tL01vdXNlUmVsYXRlZEV2
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50OjpNb3VzZVJlbGF0
ZWRFdmVudCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpjb3VudE1hdGNoZXNGb3JUZXh0KToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1l
U2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpib3VuZHMp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmdldENsaXBwZWRWaXNpYmxlVGV4
dFJlY3RhbmdsZXMpOgorICAgICAgICAqIGh0bWwvSFRNTEJvZHlFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxCb2R5RWxlbWVudDo6c2Nyb2xsTGVmdCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MQm9keUVsZW1lbnQ6OnNjcm9sbFRvcCk6CisgICAgICAgICogaHRtbC9JbWFnZURv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1lbnQ6OmltYWdlRml0c0lu
V2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1lbnQ6OndpbmRvd1NpemVDaGFu
Z2VkKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
T01XaW5kb3c6OmlubmVySGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6aW5u
ZXJXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnNjcm9sbFgpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV2luZG93OjpzY3JvbGxZKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdp
bmRvdzo6c2Nyb2xsQnkpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6Y2FsY3VsYXRlU2Nyb2xsYmFyTW9kZXNGb3JMYXlvdXQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpzY3JvbGxDb250ZW50c1Nsb3dQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6cmVwYWludENvbnRlbnRSZWN0YW5nbGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVWaWV3OjpzZW5kUmVzaXplRXZlbnRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVZpZXc6OndpbmRvd0NsaXBSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6aXNT
Y3JvbGxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRDb250cm9sVGlu
dHMpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsVmlldzo6dmlzaWJsZUNvbnRlbnRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9T
Y3JvbGxWaWV3Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp2aXNpYmxlU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxPZmZzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsVmlldzo6YWN0dWFsU2Nyb2xsWCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxWaWV3OjphY3R1YWxTY3JvbGxZKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6
OmFjdHVhbFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJl
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6dmlzaWJsZUNvbnRlbnRS
ZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
c2Nyb2xsUmVjdFRvVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6bWF4
aW11bVNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp2aXNp
YmxlQ29udGVudFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJC
YWNraW5nOjp1cGRhdGVDb21wb3NpdGVkQm91bmRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojp2aWV3UmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojp2aWV3cG9ydFNpemUpOgorCiAyMDE0LTAxLTIy
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgQVNT
RVJUSU9OIEZBSUxFRDogdi5pc0ZpeGVkKCkgaW4gV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFdv
cmRTcGFjaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDg4NGZkMmYzYjhlY2ExOWZiYjZmYjhm
N2E3NDA3YWVhZjdhNDQ2NzEuLmU3YWFiYWUxMmQ5MmUyY2ZkMTAyNTE0NjNkZTdmYTllOGZkMWM0
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xNDIzLDcgKzE0MjMsNyBAQCBfX1pOSzdXZWJD
b3JlMTBTY3JvbGxWaWV3MTZ3aW5kb3dUb0NvbnRlbnRzRVJLTlNfN0ludFJlY3RFCiBfX1pOSzdX
ZWJDb3JlMTBTY3JvbGxWaWV3MTZ3aW5kb3dUb0NvbnRlbnRzRVJLTlNfOEludFBvaW50RQogX19a
Tks3V2ViQ29yZTEwU2Nyb2xsVmlldzE4Y29udGVudHNUb1Jvb3RWaWV3RVJLTlNfN0ludFJlY3RF
CiBfX1pOSzdXZWJDb3JlMTBTY3JvbGxWaWV3MThjb250ZW50c1RvUm9vdFZpZXdFUktOU184SW50
UG9pbnRFCi1fX1pOSzdXZWJDb3JlMTBTY3JvbGxWaWV3MTh2aXNpYmxlQ29udGVudFJlY3RFTlNf
MTRTY3JvbGxhYmxlQXJlYTM2VmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzRQor
X19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE4dmlzaWJsZUNvbnRlbnRSZWN0RU5TXzE0U2Nyb2xs
YWJsZUFyZWEzNlZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFyc0VOUzFfMjZWaXNp
YmxlQ29udGVudFJlY3RCZWhhdmlvckUKIF9fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcyM3Jvb3RW
aWV3VG9Ub3RhbENvbnRlbnRzRVJLTlNfOEludFBvaW50RQogX19aTks3V2ViQ29yZTEwU2Nyb2xs
VmlldzMwc2Nyb2xsT2Zmc2V0UmVsYXRpdmVUb0RvY3VtZW50RXYKIF9fWk5LN1dlYkNvcmUxMFN0
b3JhZ2VNYXA2bGVuZ3RoRXYKQEAgLTIxMTgsNyArMjExOCw3IEBAIF9fWk43V2ViQ29yZThJbnRQ
b2ludEMxRVJLN0NHUG9pbnQKIF9fWk43V2ViQ29yZThJbnRQb2ludEMxRVJLOF9OU1BvaW50CiBf
X1pON1dlYkNvcmU5RmxvYXRSZWN0QzFFUks3X05TUmVjdAogX19aTks3V2ViQ29yZTEwRmxvYXRQ
b2ludGN2OF9OU1BvaW50RXYKLV9fWk5LN1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhMTh2aXNpYmxl
Q29udGVudFJlY3RFTlMwXzM2VmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzRQor
X19aTks3V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWExOHZpc2libGVDb250ZW50UmVjdEVOUzBfMzZW
aXNpYmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnNFTlMwXzI2VmlzaWJsZUNvbnRlbnRS
ZWN0QmVoYXZpb3JFCiBfX1pOSzdXZWJDb3JlNkN1cnNvcjE0cGxhdGZvcm1DdXJzb3JFdgogX19a
Tks3V2ViQ29yZTdJbnRSZWN0Y3Y3X05TUmVjdEV2CiBfX1pOSzdXZWJDb3JlN0ludFNpemVjdjZD
R1NpemVFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAKaW5kZXggZTRhYzZjZDk3MWFmMjNkNjkzZTUyNDRjZDI3NDE3ODU3MTU3
YzA3OS4uZTQ4NzNlNTYwZTc1YzlkYzM3ZTU3YmQ2ZmI0YzhiOGY2Njg0OWFkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
CkBAIC0xODgzLDcgKzE4ODMsOCBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzT25zY3Jl
ZW4oKSBjb25zdAogICAgIGZvciAoc2l6ZV90IGkgPSBsZXZlbHM7IGkgPj0gMTsgaS0tKSB7CiAg
ICAgICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIG91dGVyID0gb2JqZWN0c1tpXTsKICAg
ICAgICAgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogaW5uZXIgPSBvYmplY3RzW2kgLSAxXTsK
LSAgICAgICAgY29uc3QgSW50UmVjdCBvdXRlclJlY3QgPSBpIDwgbGV2ZWxzID8gcGl4ZWxTbmFw
cGVkSW50UmVjdChvdXRlci0+Ym91bmRpbmdCb3hSZWN0KCkpIDogb3V0ZXItPmdldFNjcm9sbGFi
bGVBcmVhSWZTY3JvbGxhYmxlKCktPnZpc2libGVDb250ZW50UmVjdCgpOworICAgICAgICAvLyBG
SVhNRTogdW5jbGVhciBpZiB3ZSBuZWVkIExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QuCisg
ICAgICAgIGNvbnN0IEludFJlY3Qgb3V0ZXJSZWN0ID0gaSA8IGxldmVscyA/IHBpeGVsU25hcHBl
ZEludFJlY3Qob3V0ZXItPmJvdW5kaW5nQm94UmVjdCgpKSA6IG91dGVyLT5nZXRTY3JvbGxhYmxl
QXJlYUlmU2Nyb2xsYWJsZSgpLT52aXNpYmxlQ29udGVudFJlY3QoU2Nyb2xsYWJsZUFyZWE6OkV4
Y2x1ZGVTY3JvbGxiYXJzLCBTY3JvbGxhYmxlQXJlYTo6TGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxl
UmVjdCk7CiAgICAgICAgIGNvbnN0IEludFJlY3QgaW5uZXJSZWN0ID0gcGl4ZWxTbmFwcGVkSW50
UmVjdChpbm5lci0+aXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldygpID8gaW5uZXItPnBhcmVudE9i
amVjdCgpLT5ib3VuZGluZ0JveFJlY3QoKSA6IGlubmVyLT5ib3VuZGluZ0JveFJlY3QoKSk7CiAg
ICAgICAgIAogICAgICAgICBpZiAoIW91dGVyUmVjdC5pbnRlcnNlY3RzKGlubmVyUmVjdCkpIHsK
QEAgLTE5MTUsNyArMTkxNiw4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9N
YWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhjb25zdCBJbnRSZWN0JiBzdWJmb2N1CiAKICAgICBMYXlv
dXRSZWN0IG9iamVjdFJlY3QgPSBib3VuZGluZ0JveFJlY3QoKTsKICAgICBJbnRQb2ludCBzY3Jv
bGxQb3NpdGlvbiA9IHNjcm9sbGFibGVBcmVhLT5zY3JvbGxQb3NpdGlvbigpOwotICAgIEludFJl
Y3Qgc2Nyb2xsVmlzaWJsZVJlY3QgPSBzY3JvbGxhYmxlQXJlYS0+dmlzaWJsZUNvbnRlbnRSZWN0
KCk7CisgICAgLy8gRklYTUU6IHVuY2xlYXIgaWYgd2UgbmVlZCBMZWdhY3lJT1NEb2N1bWVudFZp
c2libGVSZWN0LgorICAgIEludFJlY3Qgc2Nyb2xsVmlzaWJsZVJlY3QgPSBzY3JvbGxhYmxlQXJl
YS0+dmlzaWJsZUNvbnRlbnRSZWN0KFNjcm9sbGFibGVBcmVhOjpFeGNsdWRlU2Nyb2xsYmFycywg
U2Nyb2xsYWJsZUFyZWE6OkxlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpOwogCiAgICAgaW50
IGRlc2lyZWRYID0gY29tcHV0ZUJlc3RTY3JvbGxPZmZzZXQoCiAgICAgICAgIHNjcm9sbFBvc2l0
aW9uLngoKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDkyYWViNjYwODgxNDMwMDk5OWFkMTZm
OGIxMTE0MDliYTBjMTRjOGMuLjliOTBlYTI0ZWE3ZTk0ZGMxN2RjNDI2ZDJiMDQ2OGNiYjNkN2U5
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtNTUwLDcgKzU1MCw4IEBAIGJvb2wgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6aXNPZmZTY3JlZW4oKSBjb25zdAogewogICAgIEFTU0VSVCht
X3JlbmRlcmVyKTsKICAgICBJbnRSZWN0IGNvbnRlbnRSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVj
dChtX3JlbmRlcmVyLT5hYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKSk7Ci0gICAgSW50UmVj
dCB2aWV3UmVjdCA9IG1fcmVuZGVyZXItPnZpZXcoKS5mcmFtZVZpZXcoKS52aXNpYmxlQ29udGVu
dFJlY3QoKTsKKyAgICAvLyBGSVhNRTogdW5jbGVhciBpZiB3ZSBuZWVkIExlZ2FjeUlPU0RvY3Vt
ZW50VmlzaWJsZVJlY3QuCisgICAgSW50UmVjdCB2aWV3UmVjdCA9IG1fcmVuZGVyZXItPnZpZXco
KS5mcmFtZVZpZXcoKS52aXNpYmxlQ29udGVudFJlY3QoU2Nyb2xsYWJsZUFyZWE6OkV4Y2x1ZGVT
Y3JvbGxiYXJzLCBTY3JvbGxhYmxlQXJlYTo6TGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCk7
CiAgICAgdmlld1JlY3QuaW50ZXJzZWN0KGNvbnRlbnRSZWN0KTsKICAgICByZXR1cm4gdmlld1Jl
Y3QuaXNFbXB0eSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNmRmODVjNzc1M2Y4
Y2ZlMzEzMjFhZDBiNTc3ZjJmZWM3YzQ0NDk1Ni4uYTYwMDI1MTJhMThiOTkxZmM3ZTNhYmIyMmMx
MDNhYTQxMWJiODQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01ODA3LDExICs1ODA3
LDcgQEAgdm9pZCBEb2N1bWVudDo6YWRqdXN0RmxvYXRRdWFkc0ZvclNjcm9sbEFuZEFic29sdXRl
Wm9vbUFuZEZyYW1lU2NhbGUoVmVjdG9yPEZsb2EKICAgICBpZiAoZnJhbWUoKSkKICAgICAgICAg
aW52ZXJzZUZyYW1lU2NhbGUgPSAxIC8gZnJhbWUoKS0+ZnJhbWVTY2FsZUZhY3RvcigpOwogCi0j
aWYgUExBVEZPUk0oSU9TKQotICAgIExheW91dFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0ID0gdmll
dygpLT5hY3R1YWxWaXNpYmxlQ29udGVudFJlY3QoKTsKLSNlbHNlCiAgICAgTGF5b3V0UmVjdCB2
aXNpYmxlQ29udGVudFJlY3QgPSB2aWV3KCktPnZpc2libGVDb250ZW50UmVjdCgpOwotI2VuZGlm
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFkcy5zaXplKCk7ICsraSkgewogICAgICAg
ICBxdWFkc1tpXS5tb3ZlKC12aXNpYmxlQ29udGVudFJlY3QueCgpLCAtdmlzaWJsZUNvbnRlbnRS
ZWN0LnkoKSk7CiAgICAgICAgIGlmICh6b29tICE9IDEpCkBAIC01ODMxLDExICs1ODI3LDcgQEAg
dm9pZCBEb2N1bWVudDo6YWRqdXN0RmxvYXRSZWN0Rm9yU2Nyb2xsQW5kQWJzb2x1dGVab29tQW5k
RnJhbWVTY2FsZShGbG9hdFJlY3QmIHIKICAgICBpZiAoZnJhbWUoKSkKICAgICAgICAgaW52ZXJz
ZUZyYW1lU2NhbGUgPSAxIC8gZnJhbWUoKS0+ZnJhbWVTY2FsZUZhY3RvcigpOwogCi0jaWYgUExB
VEZPUk0oSU9TKQotICAgIExheW91dFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0ID0gdmlldygpLT5h
Y3R1YWxWaXNpYmxlQ29udGVudFJlY3QoKTsKLSNlbHNlCiAgICAgTGF5b3V0UmVjdCB2aXNpYmxl
Q29udGVudFJlY3QgPSB2aWV3KCktPnZpc2libGVDb250ZW50UmVjdCgpOwotI2VuZGlmCiAgICAg
cmVjdC5tb3ZlKC12aXNpYmxlQ29udGVudFJlY3QueCgpLCAtdmlzaWJsZUNvbnRlbnRSZWN0Lnko
KSk7CiAgICAgaWYgKHpvb20gIT0gMSkKICAgICAgICAgcmVjdC5zY2FsZSgxIC8gem9vbSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAppbmRleCBkM2I4YzM1ODE0MTk2
NTI4M2JmYjVjZDVmMGRjZWYzM2RhYWEwZmQzLi44ODAwMGY1ZjNmMWZjM2Y5OGE1MGJiNzJiMmQ2
MTI3MmE1MzUyMDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVk
RXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAK
QEAgLTc3LDcgKzc3LDcgQEAgTW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmIKICNpZiAhUExBVEZPUk0o
SU9TKQogICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb24gPSBmcmFtZVZpZXctPnNjcm9sbFBvc2l0
aW9uKCk7CiAjZWxzZQotICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb24gPSBmcmFtZVZpZXctPmFj
dHVhbFZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9uKCk7CisgICAgICAgICAgICBzY3JvbGxQ
b3NpdGlvbiA9IGZyYW1lVmlldy0+YWN0dWFsU2Nyb2xsUG9zaXRpb24oKTsKICNlbmRpZgogICAg
ICAgICAgICAgYWRqdXN0ZWRQYWdlTG9jYXRpb24gPSBmcmFtZVZpZXctPndpbmRvd1RvQ29udGVu
dHMod2luZG93TG9jYXRpb24pOwogICAgICAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSAxIC8g
KGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpICogZnJhbWUtPmZyYW1lU2NhbGVGYWN0b3IoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMGU1ZGJlYWE0NWJmNjFjMTljNDg3MTZiYjRj
NDE5YzNkMGFmNzRkNy4uMzU3M2VlM2M2YzY2ODc3MjdmZTUzZDkzYjlhMDExMWExNGZkYTc1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzI2Nyw3ICszMjY3LDkgQEAgdW5zaWdu
ZWQgRWRpdG9yOjpjb3VudE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBSYW5n
ZSogcmFuZ2UsIEZpbmRPcHQKICAgICAgICAgLy8gRG8gYSAiZmFrZSIgcGFpbnQgaW4gb3JkZXIg
dG8gZXhlY3V0ZSB0aGUgY29kZSB0aGF0IGNvbXB1dGVzIHRoZSByZW5kZXJlZCByZWN0IGZvciBl
YWNoIHRleHQgbWF0Y2guCiAgICAgICAgIGlmIChtX2ZyYW1lLnZpZXcoKSAmJiBtX2ZyYW1lLmNv
bnRlbnRSZW5kZXJlcigpKSB7CiAgICAgICAgICAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dCgp
OyAvLyBFbnN1cmUgbGF5b3V0IGlzIHVwIHRvIGRhdGUuCi0gICAgICAgICAgICBMYXlvdXRSZWN0
IHZpc2libGVSZWN0ID0gbV9mcmFtZS52aWV3KCktPnZpc2libGVDb250ZW50UmVjdCgpOworICAg
ICAgICAgICAgLy8gRklYTUU6IHVuY2xlYXIgaWYgd2UgbmVlZCBMZWdhY3lJT1NEb2N1bWVudFZp
c2libGVSZWN0LgorICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIHByb2JhYmx5IGxv
b2sgYXQgcGFpbnRzRW50aXJlQ29udGVudHMoKQorICAgICAgICAgICAgTGF5b3V0UmVjdCB2aXNp
YmxlUmVjdCA9IG1fZnJhbWUudmlldygpLT52aXNpYmxlQ29udGVudFJlY3QoU2Nyb2xsYWJsZUFy
ZWE6OkV4Y2x1ZGVTY3JvbGxiYXJzLCBTY3JvbGxhYmxlQXJlYTo6TGVnYWN5SU9TRG9jdW1lbnRW
aXNpYmxlUmVjdCk7CiAgICAgICAgICAgICBpZiAoIXZpc2libGVSZWN0LmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KChQbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dCopMCk7CiAgICAgICAgICAgICAgICAgY29udGV4dC5zZXRQYWludGluZ0Rpc2FibGVk
KHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCBk
NTllN2U5NTJjNjViMTE5Y2U4MDM2Y2VhNTQ4NGJiNTZiODcyNzU2Li4wZGU2OGZiNDBhMmM5YmYx
OGUyNmZlMWYyMjgxM2JiNWExNGMzYWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1l
U2VsZWN0aW9uLmNwcApAQCAtMjAwOCw3ICsyMDA4LDcgQEAgRmxvYXRSZWN0IEZyYW1lU2VsZWN0
aW9uOjpib3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkgY29uc3QKICAgICAgICAgcmV0
dXJuIExheW91dFJlY3QoKTsKIAogICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdCA9IHJvb3Qt
PnNlbGVjdGlvbkJvdW5kcyhjbGlwVG9WaXNpYmxlQ29udGVudCk7Ci0gICAgcmV0dXJuIGNsaXBU
b1Zpc2libGVDb250ZW50ID8gaW50ZXJzZWN0aW9uKHNlbGVjdGlvblJlY3QsIHZpZXctPnZpc2li
bGVDb250ZW50UmVjdCgpKSA6IHNlbGVjdGlvblJlY3Q7CisgICAgcmV0dXJuIGNsaXBUb1Zpc2li
bGVDb250ZW50ID8gaW50ZXJzZWN0aW9uKHNlbGVjdGlvblJlY3QsIHZpZXctPnZpc2libGVDb250
ZW50UmVjdChTY3JvbGxhYmxlQXJlYTo6RXhjbHVkZVNjcm9sbGJhcnMsIFNjcm9sbGFibGVBcmVh
OjpMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KSkgOiBzZWxlY3Rpb25SZWN0OwogfQogCiB2
b2lkIEZyYW1lU2VsZWN0aW9uOjpnZXRDbGlwcGVkVmlzaWJsZVRleHRSZWN0YW5nbGVzKFZlY3Rv
cjxGbG9hdFJlY3Q+JiByZWN0YW5nbGVzKSBjb25zdApAQCAtMjAxNyw3ICsyMDE3LDcgQEAgdm9p
ZCBGcmFtZVNlbGVjdGlvbjo6Z2V0Q2xpcHBlZFZpc2libGVUZXh0UmVjdGFuZ2xlcyhWZWN0b3I8
RmxvYXRSZWN0PiYgcmVjdGFuZ2wKICAgICBpZiAoIXJvb3QpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QgPSBtX2ZyYW1lLT52aWV3KCktPnZpc2li
bGVDb250ZW50UmVjdCgpOworICAgIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QgPSBtX2Zy
YW1lLT52aWV3KCktPnZpc2libGVDb250ZW50UmVjdChTY3JvbGxhYmxlQXJlYTo6RXhjbHVkZVNj
cm9sbGJhcnMsIFNjcm9sbGFibGVBcmVhOjpMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KTsK
IAogICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1YWRzOwogICAgIHRvTm9ybWFsaXplZFJhbmdlKCkt
PnRleHRRdWFkcyhxdWFkcywgdHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxCb2R5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVu
dC5jcHAKaW5kZXggMzg1ZTg4OWEzNzA3NmQ2ODA0ZjAwM2YxNWM4ZTVkMTYwZmVlZDYxYy4uOWRh
MTQxMGZlYjFmZTc1YzNhZTdhYTYwNmRjZDhlYmMyYTg2ZmU2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEJvZHlFbGVtZW50LmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIGludCBIVE1MQm9keUVs
ZW1lbnQ6OnNjcm9sbExlZnQoKQogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuIDA7CiAj
aWYgUExBVEZPUk0oSU9TKQotICAgIHJldHVybiBhZGp1c3RGb3Jab29tKHZpZXctPmFjdHVhbFZp
c2libGVDb250ZW50UmVjdCgpLngoKSwgKmZyYW1lKTsKKyAgICByZXR1cm4gYWRqdXN0Rm9yWm9v
bSh2aWV3LT5hY3R1YWxTY3JvbGxYKCksICpmcmFtZSk7CiAjZWxzZQogICAgIHJldHVybiBhZGp1
c3RGb3Jab29tKHZpZXctPnNjcm9sbFgoKSwgKmZyYW1lKTsKICNlbmRpZgpAQCAtMjM3LDcgKzIz
Nyw3IEBAIGludCBIVE1MQm9keUVsZW1lbnQ6OnNjcm9sbFRvcCgpCiAgICAgaWYgKCF2aWV3KQog
ICAgICAgICByZXR1cm4gMDsKICNpZiBQTEFURk9STShJT1MpCi0gICAgcmV0dXJuIGFkanVzdEZv
clpvb20odmlldy0+YWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KCkueSgpLCAqZnJhbWUpOworICAg
IHJldHVybiBhZGp1c3RGb3Jab29tKHZpZXctPmFjdHVhbFNjcm9sbFkoKSwgKmZyYW1lKTsKICNl
bHNlCiAgICAgcmV0dXJuIGFkanVzdEZvclpvb20odmlldy0+c2Nyb2xsWSgpLCAqZnJhbWUpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRleCBhNmY3NWNiOTRl
NzBmZmE4MTRkZmNjZjY3ZjBkMzE5M2YxMjAxZjkwLi5mZDRkZTY0OTBhYjU3NDliNzkxNDQ1NWZm
YjAzZjc3ZGU4Yjk4OTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKQEAg
LTM0NCw3ICszNDQsNyBAQCBib29sIEltYWdlRG9jdW1lbnQ6OmltYWdlRml0c0luV2luZG93KCkg
Y29uc3QKIAogICAgIExheW91dFNpemUgaW1hZ2VTaXplID0gbV9pbWFnZUVsZW1lbnQtPmNhY2hl
ZEltYWdlKCktPmltYWdlU2l6ZUZvclJlbmRlcmVyKG1faW1hZ2VFbGVtZW50LT5yZW5kZXJlcigp
LCBwYWdlWm9vbUZhY3Rvcih0aGlzKSk7CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIExheW91dFNp
emUgd2luZG93U2l6ZSA9IHZpZXctPmNvbnRlbnRzVG9TY3JlZW4odmlldy0+YWN0dWFsVmlzaWJs
ZUNvbnRlbnRSZWN0KCkpLnNpemUoKTsKKyAgICBMYXlvdXRTaXplIHdpbmRvd1NpemUgPSB2aWV3
LT5jb250ZW50c1RvU2NyZWVuKHZpZXctPnZpc2libGVDb250ZW50UmVjdCgpKS5zaXplKCk7CiAj
ZWxzZQogICAgIExheW91dFNpemUgd2luZG93U2l6ZSA9IExheW91dFNpemUodmlldy0+d2lkdGgo
KSwgdmlldy0+aGVpZ2h0KCkpOwogI2VuZGlmCkBAIC0zNjMsNyArMzYzLDcgQEAgdm9pZCBJbWFn
ZURvY3VtZW50Ojp3aW5kb3dTaXplQ2hhbmdlZCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIExh
eW91dFNpemUgaW1hZ2VTaXplID0gbV9pbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdlKCktPmltYWdl
U2l6ZUZvclJlbmRlcmVyKG1faW1hZ2VFbGVtZW50LT5yZW5kZXJlcigpLCBwYWdlWm9vbUZhY3Rv
cih0aGlzKSk7Ci0gICAgTGF5b3V0UmVjdCB2aXNpYmxlU2NyZWVuU2l6ZSA9IGZyYW1lKCktPnZp
ZXcoKS0+Y29udGVudHNUb1NjcmVlbihmcmFtZSgpLT52aWV3KCktPmFjdHVhbFZpc2libGVDb250
ZW50UmVjdCgpKTsKKyAgICBMYXlvdXRSZWN0IHZpc2libGVTY3JlZW5TaXplID0gZnJhbWUoKS0+
dmlldygpLT5jb250ZW50c1RvU2NyZWVuKGZyYW1lKCktPnZpZXcoKS0+dmlzaWJsZUNvbnRlbnRS
ZWN0KCkpOwogCiAgICAgZmxvYXQgd2lkdGhTY2FsZSA9IHN0YXRpY19jYXN0PGZsb2F0Pih2aXNp
YmxlU2NyZWVuU2l6ZS53aWR0aCgpKSAvIGltYWdlU2l6ZS53aWR0aCgpOwogICAgIGZsb2F0IGhl
aWdodFNjYWxlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZpc2libGVTY3JlZW5TaXplLmhlaWdodCgp
KSAvIGltYWdlU2l6ZS5oZWlnaHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCBk
ODA3MmQ5ZGE4MDYyYmUwODAzOTExYmUxYTVmN2I1ODY1YWM5YWRkLi5iZjU5YTM4MWUxMzExZTU4
ZDZiODM3ZGZjYTc0YjhkMjZlMzJlZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBA
IC0xMTUzLDExICsxMTUzLDcgQEAgaW50IERPTVdpbmRvdzo6aW5uZXJIZWlnaHQoKSBjb25zdAog
ICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuIDA7CiAKLSNpZiBQTEFURk9STShJT1MpCi0g
ICAgcmV0dXJuIHZpZXctPm1hcEZyb21MYXlvdXRUb0NTU1VuaXRzKHN0YXRpY19jYXN0PGludD4o
dmlldy0+YWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KCkuaGVpZ2h0KCkpKTsKLSNlbHNlCiAgICAg
cmV0dXJuIHZpZXctPm1hcEZyb21MYXlvdXRUb0NTU1VuaXRzKHN0YXRpY19jYXN0PGludD4odmll
dy0+dmlzaWJsZUNvbnRlbnRSZWN0KFNjcm9sbGFibGVBcmVhOjpJbmNsdWRlU2Nyb2xsYmFycyku
aGVpZ2h0KCkpKTsKLSNlbmRpZgogfQogCiBpbnQgRE9NV2luZG93Ojppbm5lcldpZHRoKCkgY29u
c3QKQEAgLTExNjksMTEgKzExNjUsNyBAQCBpbnQgRE9NV2luZG93Ojppbm5lcldpZHRoKCkgY29u
c3QKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiAwOwogCi0jaWYgUExBVEZPUk0oSU9T
KQotICAgIHJldHVybiB2aWV3LT5tYXBGcm9tTGF5b3V0VG9DU1NVbml0cyhzdGF0aWNfY2FzdDxp
bnQ+KHZpZXctPmFjdHVhbFZpc2libGVDb250ZW50UmVjdCgpLndpZHRoKCkpKTsKLSNlbHNlCiAg
ICAgcmV0dXJuIHZpZXctPm1hcEZyb21MYXlvdXRUb0NTU1VuaXRzKHN0YXRpY19jYXN0PGludD4o
dmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KFNjcm9sbGFibGVBcmVhOjpJbmNsdWRlU2Nyb2xsYmFy
cykud2lkdGgoKSkpOwotI2VuZGlmCiB9CiAKIGludCBET01XaW5kb3c6OnNjcmVlblgoKSBjb25z
dApAQCAtMTIxNSw3ICsxMjA3LDcgQEAgaW50IERPTVdpbmRvdzo6c2Nyb2xsWCgpIGNvbnN0CiAg
ICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hl
ZXRzKCk7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
dmlldy0+YWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KCkueCgpIC8gKG1fZnJhbWUtPnBhZ2Vab29t
RmFjdG9yKCkgKiBtX2ZyYW1lLT5mcmFtZVNjYWxlRmFjdG9yKCkpKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50Pih2aWV3LT5hY3R1YWxTY3JvbGxYKCkgLyAobV9mcmFtZS0+cGFnZVpvb21G
YWN0b3IoKSAqIG1fZnJhbWUtPmZyYW1lU2NhbGVGYWN0b3IoKSkpOwogI2Vsc2UKICAgICByZXR1
cm4gdmlldy0+bWFwRnJvbUxheW91dFRvQ1NTVW5pdHModmlldy0+c2Nyb2xsWCgpKTsKICNlbmRp
ZgpAQCAtMTIzNiw3ICsxMjI4LDcgQEAgaW50IERPTVdpbmRvdzo6c2Nyb2xsWSgpIGNvbnN0CiAg
ICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hl
ZXRzKCk7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
dmlldy0+YWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KCkueSgpIC8gKG1fZnJhbWUtPnBhZ2Vab29t
RmFjdG9yKCkgKiBtX2ZyYW1lLT5mcmFtZVNjYWxlRmFjdG9yKCkpKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50Pih2aWV3LT5hY3R1YWxTY3JvbGxZKCkgLyAobV9mcmFtZS0+cGFnZVpvb21G
YWN0b3IoKSAqIG1fZnJhbWUtPmZyYW1lU2NhbGVGYWN0b3IoKSkpOwogI2Vsc2UKICAgICByZXR1
cm4gdmlldy0+bWFwRnJvbUxheW91dFRvQ1NTVW5pdHModmlldy0+c2Nyb2xsWSgpKTsKICNlbmRp
ZgpAQCAtMTQ1Miw3ICsxNDQ0LDcgQEAgdm9pZCBET01XaW5kb3c6OnNjcm9sbEJ5KGludCB4LCBp
bnQgeSkgY29uc3QKIAogICAgIEludFNpemUgc2NhbGVkT2Zmc2V0KHZpZXctPm1hcEZyb21DU1NU
b0xheW91dFVuaXRzKHgpLCB2aWV3LT5tYXBGcm9tQ1NTVG9MYXlvdXRVbml0cyh5KSk7CiAjaWYg
UExBVEZPUk0oSU9TKQotICAgIHZpZXctPnNldEFjdHVhbFNjcm9sbFBvc2l0aW9uKHZpZXctPmFj
dHVhbFZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9uKCkgKyBzY2FsZWRPZmZzZXQpOworICAg
IHZpZXctPnNldEFjdHVhbFNjcm9sbFBvc2l0aW9uKHZpZXctPmFjdHVhbFNjcm9sbFBvc2l0aW9u
KCkgKyBzY2FsZWRPZmZzZXQpOwogI2Vsc2UKICAgICB2aWV3LT5zY3JvbGxCeShzY2FsZWRPZmZz
ZXQpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMmY0YjEzMTRiMDI1
Mzc5MWQ5M2EyMGE5YWMyMWM3Y2NmZjU2MmRmYi4uZGU4ZDA5ZmU1NThjNGIzNTExYTcyOGQ4YWY5
ZDk4YTcyODM3MWU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtNzExLDcgKzcx
MSw3IEBAIHZvaWQgRnJhbWVWaWV3OjpjYWxjdWxhdGVTY3JvbGxiYXJNb2Rlc0ZvckxheW91dChT
Y3JvbGxiYXJNb2RlJiBoTW9kZSwgU2Nyb2xsYmFyCiAgICAgICAgIGhNb2RlID0gU2Nyb2xsYmFy
QXV0bzsKICAgICAgICAgLy8gU2VhbWxlc3MgZG9jdW1lbnRzIGJlZ2luIHdpdGggaGVpZ2h0cyBv
ZiAwOyB3ZSBzcGVjaWFsIGNhc2UgdGhhdCBoZXJlCiAgICAgICAgIC8vIHRvIGNvcnJlY3RseSBy
ZW5kZXIgZG9jdW1lbnRzIHRoYXQgZG9uJ3QgbmVlZCBzY3JvbGxiYXJzLgotICAgICAgICBJbnRT
aXplIGZ1bGxWaXNpYmxlU2l6ZSA9IHZpc2libGVDb250ZW50UmVjdChJbmNsdWRlU2Nyb2xsYmFy
cykuc2l6ZSgpOworICAgICAgICBJbnRTaXplIGZ1bGxWaXNpYmxlU2l6ZSA9IHZpc2libGVDb250
ZW50UmVjdChJbmNsdWRlU2Nyb2xsYmFycywgTGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCku
c2l6ZSgpOwogICAgICAgICBib29sIGlzU2VhbWxlc3NEb2N1bWVudCA9IGZyYW1lKCkuZG9jdW1l
bnQoKSAmJiBmcmFtZSgpLmRvY3VtZW50KCktPnNob3VsZERpc3BsYXlTZWFtbGVzc2x5V2l0aFBh
cmVudCgpOwogICAgICAgICB2TW9kZSA9IChpc1NlYW1sZXNzRG9jdW1lbnQgJiYgIWZ1bGxWaXNp
YmxlU2l6ZS5oZWlnaHQoKSkgPyBTY3JvbGxiYXJBbHdheXNPZmYgOiBTY3JvbGxiYXJBdXRvOwog
ICAgIH0gZWxzZSB7CkBAIC0xMjYyLDExICsxMjYyLDcgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91
dChib29sIGFsbG93U3VidHJlZSkKICAgICAgICAgICAgICAgICAgICAgaWYgKHVzZUZpeGVkTGF5
b3V0KCkgJiYgIWZpeGVkTGF5b3V0U2l6ZSgpLmlzRW1wdHkoKSAmJiBkZWxlZ2F0ZXNTY3JvbGxp
bmcoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGFzdFZpZXdwb3J0U2l6ZSA9IGZpeGVk
TGF5b3V0U2l6ZSgpOwogICAgICAgICAgICAgICAgICAgICBlbHNlCi0jaWYgUExBVEZPUk0oSU9T
KQotICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXN0Vmlld3BvcnRTaXplID0gYWN0dWFsVmlz
aWJsZUNvbnRlbnRSZWN0KCkuc2l6ZSgpOwotI2Vsc2UKICAgICAgICAgICAgICAgICAgICAgICAg
IG1fbGFzdFZpZXdwb3J0U2l6ZSA9IHZpc2libGVDb250ZW50UmVjdChJbmNsdWRlU2Nyb2xsYmFy
cykuc2l6ZSgpOwotI2VuZGlmCiAKICAgICAgICAgICAgICAgICAgICAgbV9sYXN0Wm9vbUZhY3Rv
ciA9IHJvb3QtPnN0eWxlKCkuem9vbSgpOwogCkBAIC0xNzc2LDcgKzE3NzIsOCBAQCB2b2lkIEZy
YW1lVmlldzo6c2Nyb2xsQ29udGVudHNTbG93UGF0aChjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0
KQogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBpZiAoY29udGVudHNJ
bkNvbXBvc2l0ZWRMYXllcigpKSB7Ci0gICAgICAgIEludFJlY3QgdXBkYXRlUmVjdCA9IHZpc2li
bGVDb250ZW50UmVjdCgpOworICAgICAgICAvLyBGSVhNRTogcmVzcGVjdCBwYWludHNFbnRpcmVD
b250ZW50cygpPworICAgICAgICBJbnRSZWN0IHVwZGF0ZVJlY3QgPSB2aXNpYmxlQ29udGVudFJl
Y3QoRXhjbHVkZVNjcm9sbGJhcnMsIExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpOwogCiAg
ICAgICAgIC8vIE1ha2Ugc3VyZSB0byAiYXBwbHkiIHRoZSBzY2FsZSBmYWN0b3IgaGVyZSBzaW5j
ZSB3ZSdyZSBjb252ZXJ0aW5nIGZyb20gZnJhbWUgdmlldwogICAgICAgICAvLyBjb29yZGluYXRl
cyB0byBsYXllciBiYWNraW5nIGNvb3JkaW5hdGVzLgpAQCAtMjE2NCw3ICsyMTYxLDcgQEAgdm9p
ZCBGcmFtZVZpZXc6OnJlcGFpbnRDb250ZW50UmVjdGFuZ2xlKGNvbnN0IEludFJlY3QmIHIsIGJv
b2wgaW1tZWRpYXRlKQogICAgIGlmICgobV9kZWZlcnJpbmdSZXBhaW50cyB8fCBtX2RlZmVycmVk
UmVwYWludFRpbWVyLmlzQWN0aXZlKCkgfHwgZGVsYXkpICYmICFpbW1lZGlhdGUpIHsKICAgICAg
ICAgSW50UmVjdCBwYWludFJlY3QgPSByOwogICAgICAgICBpZiAoY2xpcHNSZXBhaW50cygpICYm
ICFwYWludHNFbnRpcmVDb250ZW50cygpKQotICAgICAgICAgICAgcGFpbnRSZWN0LmludGVyc2Vj
dCh2aXNpYmxlQ29udGVudFJlY3QoKSk7CisgICAgICAgICAgICBwYWludFJlY3QuaW50ZXJzZWN0
KHZpc2libGVDb250ZW50UmVjdChFeGNsdWRlU2Nyb2xsYmFycywgTGVnYWN5SU9TRG9jdW1lbnRW
aXNpYmxlUmVjdCkpOwogICAgICAgICBpZiAocGFpbnRSZWN0LmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgaWYgKG1fcmVwYWludENvdW50ID09IGNSZXBhaW50UmVjdFVu
aW9uVGhyZXNob2xkKSB7CkBAIC0yOTA0LDExICsyOTAxLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNl
bmRSZXNpemVFdmVudElmTmVlZGVkKCkKICAgICBpZiAodXNlRml4ZWRMYXlvdXQoKSAmJiAhZml4
ZWRMYXlvdXRTaXplKCkuaXNFbXB0eSgpICYmIGRlbGVnYXRlc1Njcm9sbGluZygpKQogICAgICAg
ICBjdXJyZW50U2l6ZSA9IGZpeGVkTGF5b3V0U2l6ZSgpOwogICAgIGVsc2UKLSNpZiBQTEFURk9S
TShJT1MpCi0gICAgICAgIGN1cnJlbnRTaXplID0gYWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KCku
c2l6ZSgpOwotI2Vsc2UKICAgICAgICAgY3VycmVudFNpemUgPSB2aXNpYmxlQ29udGVudFJlY3Qo
SW5jbHVkZVNjcm9sbGJhcnMpLnNpemUoKTsKLSNlbmRpZgogCiAgICAgZmxvYXQgY3VycmVudFpv
b21GYWN0b3IgPSByZW5kZXJWaWV3LT5zdHlsZSgpLnpvb20oKTsKICAgICBib29sIHNob3VsZFNl
bmRSZXNpemVFdmVudCA9ICFtX2ZpcnN0TGF5b3V0ICYmIChjdXJyZW50U2l6ZSAhPSBtX2xhc3RW
aWV3cG9ydFNpemUgfHwgY3VycmVudFpvb21GYWN0b3IgIT0gbV9sYXN0Wm9vbUZhY3Rvcik7CkBA
IC0zMTMxLDcgKzMxMjQsNyBAQCBJbnRSZWN0IEZyYW1lVmlldzo6d2luZG93Q2xpcFJlY3QoYm9v
bCBjbGlwVG9Db250ZW50cykgY29uc3QKICAgICAgICAgcmV0dXJuIEludFJlY3QoSW50UG9pbnQo
KSwgdG90YWxDb250ZW50c1NpemUoKSk7CiAKICAgICAvLyBTZXQgb3VyIGNsaXAgcmVjdCB0byBi
ZSBvdXIgY29udGVudHMuCi0gICAgSW50UmVjdCBjbGlwUmVjdCA9IGNvbnRlbnRzVG9XaW5kb3co
dmlzaWJsZUNvbnRlbnRSZWN0KGNsaXBUb0NvbnRlbnRzID8gRXhjbHVkZVNjcm9sbGJhcnMgOiBJ
bmNsdWRlU2Nyb2xsYmFycykpOworICAgIEludFJlY3QgY2xpcFJlY3QgPSBjb250ZW50c1RvV2lu
ZG93KHZpc2libGVDb250ZW50UmVjdChjbGlwVG9Db250ZW50cyA/IEV4Y2x1ZGVTY3JvbGxiYXJz
IDogSW5jbHVkZVNjcm9sbGJhcnMsIExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpKTsKICAg
ICBpZiAoIWZyYW1lKCkub3duZXJFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBjbGlwUmVjdDsK
IApAQCAtMzI0NSw3ICszMjM4LDcgQEAgYm9vbCBGcmFtZVZpZXc6OmlzU2Nyb2xsYWJsZSgpCiAK
ICAgICAvLyBDb3ZlcnMgIzEKICAgICBJbnRTaXplIHRvdGFsQ29udGVudHNTaXplID0gdGhpcy0+
dG90YWxDb250ZW50c1NpemUoKTsKLSAgICBJbnRTaXplIHZpc2libGVDb250ZW50U2l6ZSA9IHZp
c2libGVDb250ZW50UmVjdCgpLnNpemUoKTsKKyAgICBJbnRTaXplIHZpc2libGVDb250ZW50U2l6
ZSA9IHZpc2libGVDb250ZW50UmVjdChFeGNsdWRlU2Nyb2xsYmFycywgTGVnYWN5SU9TRG9jdW1l
bnRWaXNpYmxlUmVjdCkuc2l6ZSgpOwogICAgIGlmICgodG90YWxDb250ZW50c1NpemUuaGVpZ2h0
KCkgPD0gdmlzaWJsZUNvbnRlbnRTaXplLmhlaWdodCgpICYmIHRvdGFsQ29udGVudHNTaXplLndp
ZHRoKCkgPD0gdmlzaWJsZUNvbnRlbnRTaXplLndpZHRoKCkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKQEAgLTM1NDgsOSArMzU0MSwxMCBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250cm9s
VGludHMoKQogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBjb25zdCBub0NvbnRleHQgPSAw
OwogICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KG5vQ29udGV4dCk7CiAgICAgY29udGV4dC5z
ZXRVcGRhdGluZ0NvbnRyb2xUaW50cyh0cnVlKTsKLSAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkK
LSAgICAgICAgcGFpbnRDb250ZW50cygmY29udGV4dCwgdmlzaWJsZUNvbnRlbnRSZWN0KCkpOwot
ICAgIGVsc2UKKyAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkgeworICAgICAgICAvLyBGSVhNRTog
Y29uc3VsdCBwYWludHNFbnRpcmVDb250ZW50cygpLgorICAgICAgICBwYWludENvbnRlbnRzKCZj
b250ZXh0LCB2aXNpYmxlQ29udGVudFJlY3QoRXhjbHVkZVNjcm9sbGJhcnMsIExlZ2FjeUlPU0Rv
Y3VtZW50VmlzaWJsZVJlY3QpKTsKKyAgICB9IGVsc2UKICAgICAgICAgcGFpbnQoJmNvbnRleHQs
IGZyYW1lUmVjdCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApp
bmRleCA3ZTk3ZTM5Y2U2MGZiYmQ2NmMwNzdkODBhM2VkN2FhYmFlYTFjMWUzLi4yOGNiOTUzZTk2
MGM2OGIxOGQ0MWE3NzcxYzFjYWNmZWI4MmM4Mzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmNwcApAQCAtMjYxLDE3ICsyNjEsMjQgQEAgSW50U2l6ZSBTY3JvbGxWaWV3Ojp1
bnNjYWxlZFZpc2libGVDb250ZW50U2l6ZShWaXNpYmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9s
bGIKIH0KIAogI2lmICFQTEFURk9STShHVEspCi1JbnRSZWN0IFNjcm9sbFZpZXc6OnZpc2libGVD
b250ZW50UmVjdChWaXNpYmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnMgc2NvbGxiYXJJ
bmNsdXNpb24pIGNvbnN0CitJbnRSZWN0IFNjcm9sbFZpZXc6OnZpc2libGVDb250ZW50UmVjdChW
aXNpYmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnMgc2Nyb2xsYmFySW5jbHVzaW9uLCBW
aXNpYmxlQ29udGVudFJlY3RCZWhhdmlvciB2aXNpYmxlQ29udGVudFJlY3RCZWhhdmlvcikgY29u
c3QKIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYgKHZpc2libGVDb250ZW50UmVjdEJlaGF2
aW9yID09IExlZ2FjeUlPU0RvY3VtZW50Vmlld1JlY3QpIHsKKyAgICAgICAgaWYgKHBsYXRmb3Jt
V2lkZ2V0KCkpCisgICAgICAgICAgICByZXR1cm4gcGxhdGZvcm1WaXNpYmxlQ29udGVudFJlY3Qo
c2Nyb2xsYmFySW5jbHVzaW9uID09IEluY2x1ZGVTY3JvbGxiYXJzKTsKKyAgICB9CisgICAgCiAg
ICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpCi0gICAgICAgIHJldHVybiBwbGF0Zm9ybVZpc2libGVD
b250ZW50UmVjdChzY29sbGJhckluY2x1c2lvbiA9PSBJbmNsdWRlU2Nyb2xsYmFycyk7Ci0KLSNp
ZiAhUExBVEZPUk0oSU9TKQotICAgIGlmICghbV9maXhlZFZpc2libGVDb250ZW50UmVjdC5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBtX2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0OworICAgICAg
ICByZXR1cm4gYWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KCk7CisjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTSh2aXNpYmxlQ29udGVudFJlY3RCZWhhdmlvcik7CiAjZW5kaWYKIAotICAgIEZsb2F0U2l6
ZSB2aXNpYmxlQ29udGVudFNpemUgPSB1bnNjYWxlZFZpc2libGVDb250ZW50U2l6ZShzY29sbGJh
ckluY2x1c2lvbik7CisgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpCisgICAgICAgIHJldHVybiBw
bGF0Zm9ybVZpc2libGVDb250ZW50UmVjdChzY3JvbGxiYXJJbmNsdXNpb24gPT0gSW5jbHVkZVNj
cm9sbGJhcnMpOworCisgICAgRmxvYXRTaXplIHZpc2libGVDb250ZW50U2l6ZSA9IHVuc2NhbGVk
VmlzaWJsZUNvbnRlbnRTaXplKHNjcm9sbGJhckluY2x1c2lvbik7CiAgICAgdmlzaWJsZUNvbnRl
bnRTaXplLnNjYWxlKDEgLyB2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yKCkpOwogICAgIHJldHVy
biBJbnRSZWN0KEludFBvaW50KG1fc2Nyb2xsT2Zmc2V0KSwgZXhwYW5kZWRJbnRTaXplKHZpc2li
bGVDb250ZW50U2l6ZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4
IGMxN2MyOTE2YjA2MDcwOGQxNmY0MTgxZGI5NjA3YmRiN2U2ZWM1NjkuLjU1NzQ4YzlhMWJjZmE1
MGFjNDFlMjcxY2IxM2U5OGMzNzZhYmVlMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxW
aWV3LmgKQEAgLTE1OSwxMiArMTU5LDEyIEBAIHB1YmxpYzoKICAgICAvLyBJbiB0aGUgc2l0dWF0
aW9uIHRoZSBjbGllbnQgaXMgcmVzcG9uc2libGUgZm9yIHRoZSBzY3JvbGxpbmcgKGllLiB3aXRo
IGEgdGlsZWQgYmFja2luZyBzdG9yZSkgaXQgaXMgcG9zc2libGUgdG8gdXNlCiAgICAgLy8gdGhl
IHNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0IGluc3RlYWQgZm9yIHRoZSBtYWluZnJhbWUsIHRo
b3VnaCB0aGlzIG11c3QgYmUgdXBkYXRlZCBtYW51YWxseSwgZS5nIGp1c3QgYmVmb3JlIHJlc3Vt
aW5nIHRoZSBwYWdlCiAgICAgLy8gd2hpY2ggdXN1YWxseSB3aWxsIGhhcHBlbiB3aGVuIHBhbm5p
bmcsIHBpbmNoaW5nIGFuZCByb3RhdGlvbiBlbmRzLCBvciB3aGVuIHNjYWxlIG9yIHBvc2l0aW9u
IGFyZSBjaGFuZ2VkIG1hbnVhbGx5LgotICAgIHZpcnR1YWwgSW50UmVjdCB2aXNpYmxlQ29udGVu
dFJlY3QoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzID0gRXhjbHVkZVNjcm9s
bGJhcnMpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgSW50UmVjdCB2aXNpYmxlQ29udGVu
dFJlY3QoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzID0gRXhjbHVkZVNjcm9s
bGJhcnMsIFZpc2libGVDb250ZW50UmVjdEJlaGF2aW9yID0gQ29udGVudHNWaXNpYmxlUmVjdCkg
Y29uc3Qgb3ZlcnJpZGU7CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QoY29uc3QgSW50UmVjdCYgdmlzaWJsZUNvbnRlbnRSZWN0
KSB7IG1fZml4ZWRWaXNpYmxlQ29udGVudFJlY3QgPSB2aXNpYmxlQ29udGVudFJlY3Q7IH0KICAg
ICBJbnRSZWN0IGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9maXhl
ZFZpc2libGVDb250ZW50UmVjdDsgfQogI2VuZGlmCi0gICAgSW50U2l6ZSB2aXNpYmxlU2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdCgpLnNpemUoKTsgfQorICAgIEludFNp
emUgdmlzaWJsZVNpemUoKSBjb25zdCB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoRXhjbHVk
ZVNjcm9sbGJhcnMsIExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpLnNpemUoKTsgfQogI2lm
IFBMQVRGT1JNKElPUykKICAgICAvLyBUaGlzIGlzIHRoZSBhcmVhIHRoYXQgaXMgbm90IGNvdmVy
ZWQgYnkgVUkgZWxlbWVudHMuCiAgICAgSW50UmVjdCBhY3R1YWxWaXNpYmxlQ29udGVudFJlY3Qo
KSBjb25zdDsKQEAgLTE3NCw4ICsxNzQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBY3R1YWxT
Y3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYpOwogICAgIFRpbGVDYWNoZSogdGlsZUNhY2hl
KCk7CiAjZW5kaWYKLSAgICB2aXJ0dWFsIGludCB2aXNpYmxlV2lkdGgoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoKS53aWR0aCgpOyB9Ci0gICAgdmlydHVhbCBp
bnQgdmlzaWJsZUhlaWdodCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHZpc2libGVDb250ZW50
UmVjdCgpLmhlaWdodCgpOyB9CisgICAgdmlydHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KEV4Y2x1ZGVTY3JvbGxiYXJzLCBM
ZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KS53aWR0aCgpOyB9CisgICAgdmlydHVhbCBpbnQg
dmlzaWJsZUhlaWdodCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVj
dChFeGNsdWRlU2Nyb2xsYmFycywgTGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCkuaGVpZ2h0
KCk7IH0KIAogICAgIC8vIHZpc2libGVDb250ZW50UmVjdCgpLnNpemUoKSBpcyBjb21wdXRlZCBm
cm9tIHVuc2NhbGVkVmlzaWJsZUNvbnRlbnRTaXplKCkgZGl2aWRlZCBieSB0aGUgdmFsdWUgb2Yg
dmlzaWJsZUNvbnRlbnRTY2FsZUZhY3Rvci4KICAgICAvLyB2aXNpYmxlQ29udGVudFNjYWxlRmFj
dG9yIGlzIHVzdWFsbHkgMSwgZXhjZXB0IHdoZW4gdGhlIHNldHRpbmcgZGVsZWdhdGVzUGFnZVNj
YWxpbmcgaXMgdHJ1ZSBhbmQgdGhlCkBAIC0yMDIsOCArMjAyLDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBzZXRDb250ZW50c1NpemUoY29uc3QgSW50U2l6ZSYpOwogCiAgICAgLy8gRnVu
Y3Rpb25zIGZvciBxdWVyeWluZyB0aGUgY3VycmVudCBzY3JvbGxlZCBwb3NpdGlvbiAoYm90aCBh
cyBhIHBvaW50LCBhIHNpemUsIG9yIGFzIGluZGl2aWR1YWwgWCBhbmQgWSB2YWx1ZXMpLgotICAg
IHZpcnR1YWwgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB2aXNpYmxlQ29udGVudFJlY3QoKS5sb2NhdGlvbigpOyB9Ci0gICAgSW50U2l6ZSBzY3JvbGxP
ZmZzZXQoKSBjb25zdCB7IHJldHVybiB0b0ludFNpemUodmlzaWJsZUNvbnRlbnRSZWN0KCkubG9j
YXRpb24oKSk7IH0gLy8gR2V0cyB0aGUgc2Nyb2xsZWQgcG9zaXRpb24gYXMgYW4gSW50U2l6ZS4g
Q29udmVuaWVudCBmb3IgYWRkaW5nIHRvIG90aGVyIHNpemVzLgorICAgIHZpcnR1YWwgSW50UG9p
bnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB2aXNpYmxlQ29udGVu
dFJlY3QoRXhjbHVkZVNjcm9sbGJhcnMsIExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpLmxv
Y2F0aW9uKCk7IH0KKyAgICBJbnRTaXplIHNjcm9sbE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHRv
SW50U2l6ZSh2aXNpYmxlQ29udGVudFJlY3QoRXhjbHVkZVNjcm9sbGJhcnMsIExlZ2FjeUlPU0Rv
Y3VtZW50VmlzaWJsZVJlY3QpLmxvY2F0aW9uKCkpOyB9IC8vIEdldHMgdGhlIHNjcm9sbGVkIHBv
c2l0aW9uIGFzIGFuIEludFNpemUuIENvbnZlbmllbnQgZm9yIGFkZGluZyB0byBvdGhlciBzaXpl
cy4KICAgICB2aXJ0dWFsIEludFBvaW50IG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92
ZXJyaWRlOyAvLyBUaGUgbWF4aW11bSBwb3NpdGlvbiB3ZSBjYW4gYmUgc2Nyb2xsZWQgdG8uCiAg
ICAgdmlydHVhbCBJbnRQb2ludCBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlk
ZTsgLy8gVGhlIG1pbmltdW0gcG9zaXRpb24gd2UgY2FuIGJlIHNjcm9sbGVkIHRvLgogICAgIC8v
IEFkanVzdCB0aGUgcGFzc2VkIGluIHNjcm9sbCBwb3NpdGlvbiB0byBrZWVwIGl0IGJldHdlZW4g
dGhlIG1pbmltdW0gYW5kIG1heGltdW0gcG9zaXRpb25zLgpAQCAtMjEyLDggKzIxMiwxMCBAQCBw
dWJsaWM6CiAgICAgaW50IHNjcm9sbFkoKSBjb25zdCB7IHJldHVybiBzY3JvbGxQb3NpdGlvbigp
LnkoKTsgfQogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIGludCBhY3R1YWxTY3JvbGxYKCkgY29u
c3QgeyByZXR1cm4gYWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KCkueCgpOyB9Ci0gICAgaW50IGFj
dHVhbFNjcm9sbFkoKSBjb25zdCB7IHJldHVybiBhY3R1YWxWaXNpYmxlQ29udGVudFJlY3QoKS55
KCk7IH0KKyAgICBpbnQgYWN0dWFsU2Nyb2xsWCgpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVDb250
ZW50UmVjdCgpLngoKTsgfQorICAgIGludCBhY3R1YWxTY3JvbGxZKCkgY29uc3QgeyByZXR1cm4g
dmlzaWJsZUNvbnRlbnRSZWN0KCkueSgpOyB9CisgICAgLy8gRklYTUU6IG1heWJlIGZpeCBzY3Jv
bGxQb3NpdGlvbigpIG9uIGlPUyB0byByZXR1cm4gdGhlIGFjdHVhbCBzY3JvbGwgcG9zaXRpb24u
CisgICAgSW50UG9pbnQgYWN0dWFsU2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiB2aXNp
YmxlQ29udGVudFJlY3QoKS5sb2NhdGlvbigpOyB9CiAjZW5kaWYKIAogICAgIC8vIHNjcm9sbE9m
ZnNldCgpIGFuY2hvcnMgaXRzICgwLDApIHBvaW50IGF0IHRoZSB0b3AgZW5kIG9mIHRoZSBoZWFk
ZXIgaWYgdGhpcyBTY3JvbGxhYmxlQXJlYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuY3BwCmluZGV4IGRmNzUzMTIzYjMwMDZiZGRkM2Y1ZTlkMTUwZjZlOTRmMDVkN2M3
YjEuLjUyMDMwZWZjYTkzOTFiNmI1YjQyMGM2NTU1ZTZhNjE1ZTkyZTQwZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTQ0NSw3ICs0NDUsNyBAQCBJ
bnRTaXplIFNjcm9sbGFibGVBcmVhOjp0b3RhbENvbnRlbnRzU2l6ZSgpIGNvbnN0CiAgICAgcmV0
dXJuIHRvdGFsQ29udGVudHNTaXplOwogfQogCi1JbnRSZWN0IFNjcm9sbGFibGVBcmVhOjp2aXNp
YmxlQ29udGVudFJlY3QoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzIHNjcm9s
bGJhckluY2x1c2lvbikgY29uc3QKK0ludFJlY3QgU2Nyb2xsYWJsZUFyZWE6OnZpc2libGVDb250
ZW50UmVjdChWaXNpYmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnMgc2Nyb2xsYmFySW5j
bHVzaW9uLCBWaXNpYmxlQ29udGVudFJlY3RCZWhhdmlvcikgY29uc3QKIHsKICAgICBpbnQgdmVy
dGljYWxTY3JvbGxiYXJXaWR0aCA9IDA7CiAgICAgaW50IGhvcml6b250YWxTY3JvbGxiYXJIZWln
aHQgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFy
ZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKaW5kZXggYWE5
MTJlZjQ0MzQ5OGY0YTJlN2JhMWEzMTY5ZGUxNmRhMzdhZWVkNi4uMjgzMzAzOTg1NmE4ODU1MGZh
NjcwYWYxODY5NTZjMmZkODFmYzExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxh
YmxlQXJlYS5oCkBAIC0xNTMsNyArMTUzLDE3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEludFBv
aW50IG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0OwogCiAgICAgZW51bSBWaXNpYmxlQ29u
dGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnMgeyBFeGNsdWRlU2Nyb2xsYmFycywgSW5jbHVkZVNj
cm9sbGJhcnMgfTsKLSAgICB2aXJ0dWFsIEludFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0KFZpc2li
bGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFycyA9IEV4Y2x1ZGVTY3JvbGxiYXJzKSBjb25z
dDsKKyAgICBlbnVtIFZpc2libGVDb250ZW50UmVjdEJlaGF2aW9yIHsKKyAgICAgICAgQ29udGVu
dHNWaXNpYmxlUmVjdCwKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIExlZ2FjeUlPU0RvY3Vt
ZW50Vmlld1JlY3QsCisgICAgICAgIExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QgPSBMZWdh
Y3lJT1NEb2N1bWVudFZpZXdSZWN0CisjZWxzZQorICAgICAgICBMZWdhY3lJT1NEb2N1bWVudFZp
c2libGVSZWN0ID0gQ29udGVudHNWaXNpYmxlUmVjdAorI2VuZGlmCisgICAgfTsKKworICAgIHZp
cnR1YWwgSW50UmVjdCB2aXNpYmxlQ29udGVudFJlY3QoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVk
ZXNTY3JvbGxiYXJzID0gRXhjbHVkZVNjcm9sbGJhcnMsIFZpc2libGVDb250ZW50UmVjdEJlaGF2
aW9yID0gQ29udGVudHNWaXNpYmxlUmVjdCkgY29uc3Q7CiAgICAgdmlydHVhbCBpbnQgdmlzaWJs
ZUhlaWdodCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGludCB2aXNpYmxlV2lkdGgoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0ID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxWaWV3R3RrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxWaWV3R3RrLmNwcAppbmRleCAwYjA1
YTU3YjdkZTI5NGI2M2M4NmZkNTJlNzQ4ZjAwZjkxMjMyMDg5Li40Njg4Y2IzMjA2OGIwZDgyNzQ0
Y2I0ZWU1MDIyODU0NjU2NmRhY2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvU2Nyb2xsVmlld0d0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1Njcm9sbFZpZXdHdGsuY3BwCkBAIC02Myw3ICs2Myw3IEBAIFBhc3NSZWZQdHI8U2Nyb2xsYmFy
PiBTY3JvbGxWaWV3OjpjcmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50
YXRpCiAgICAgcmV0dXJuIFNjcm9sbGJhcjo6Y3JlYXRlTmF0aXZlU2Nyb2xsYmFyKHRoaXMsIG9y
aWVudGF0aW9uLCBSZWd1bGFyU2Nyb2xsYmFyKTsKIH0KIAotSW50UmVjdCBTY3JvbGxWaWV3Ojp2
aXNpYmxlQ29udGVudFJlY3QoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzIHNj
cm9sbGJhckluY2x1c2lvbikgY29uc3QKK0ludFJlY3QgU2Nyb2xsVmlldzo6dmlzaWJsZUNvbnRl
bnRSZWN0KFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFycyBzY3JvbGxiYXJJbmNs
dXNpb24sIFZpc2libGVDb250ZW50UmVjdEJlaGF2aW9yKSBjb25zdAogewogICAgIGJvb2wgaW5j
bHVkZVNjcm9sbGJhcnMgPSBzY3JvbGxiYXJJbmNsdXNpb24gPT0gSW5jbHVkZVNjcm9sbGJhcnM7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGJhZTZkMzhj
MTI0NmE0MjM5MWI3YmNjNzE2ZTEzMmRmNTE0ZDA2NTUuLjgxMmI0Y2QyYjcxNDU5M2M3OTMxYTZj
OGE5YzU1YzE2ZDg3NGUzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcApAQCAtMjQ0OSw3ICsyNDQ5LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRv
VmlzaWJsZShjb25zdCBMYXlvdXRSZWN0JiByZWN0LCBjb25zdCBTY3JvbGxBbGlnbm0KICAgICAg
ICAgICAgICAgICBmcmFtZUVsZW1lbnRCYXNlID0gdG9IVE1MRnJhbWVFbGVtZW50QmFzZShvd25l
ckVsZW1lbnQpOwogCiAgICAgICAgICAgICBpZiAoZnJhbWVFbGVtZW50QW5kVmlld1Blcm1pdFNj
cm9sbChmcmFtZUVsZW1lbnRCYXNlLCAmZnJhbWVWaWV3KSkgewotICAgICAgICAgICAgICAgIExh
eW91dFJlY3Qgdmlld1JlY3QgPSBmcmFtZVZpZXcudmlzaWJsZUNvbnRlbnRSZWN0KCk7CisgICAg
ICAgICAgICAgICAgTGF5b3V0UmVjdCB2aWV3UmVjdCA9IGZyYW1lVmlldy52aXNpYmxlQ29udGVu
dFJlY3QoRXhjbHVkZVNjcm9sbGJhcnMsIExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpOwog
ICAgICAgICAgICAgICAgIExheW91dFJlY3QgZXhwb3NlUmVjdCA9IGdldFJlY3RUb0V4cG9zZSh2
aWV3UmVjdCwgdmlld1JlY3QsIHJlY3QsIGFsaWduWCwgYWxpZ25ZKTsKIAogICAgICAgICAgICAg
ICAgIGludCB4T2Zmc2V0ID0gcm91bmRUb0ludChleHBvc2VSZWN0LngoKSk7CkBAIC0yNDc1LDYg
KzI0NzUsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0IExh
eW91dFJlY3QmIHJlY3QsIGNvbnN0IFNjcm9sbEFsaWdubQogICAgICAgICAgICAgSW50U2l6ZSBz
Y3JvbGxPZmZzZXRSZWxhdGl2ZVRvRG9jdW1lbnQgPSBmcmFtZVZpZXcuc2Nyb2xsT2Zmc2V0UmVs
YXRpdmVUb0RvY3VtZW50KCk7CiAgICAgICAgICAgICB2aXNpYmxlUmVjdFJlbGF0aXZlVG9Eb2N1
bWVudC5zZXRMb2NhdGlvbihJbnRQb2ludChzY3JvbGxPZmZzZXRSZWxhdGl2ZVRvRG9jdW1lbnQu
d2lkdGgoKSwgc2Nyb2xsT2Zmc2V0UmVsYXRpdmVUb0RvY3VtZW50LmhlaWdodCgpKSk7CiAjZWxz
ZQorICAgICAgICAgICAgLy8gRklYTUU6IGlzIHRoaXMgZXF1aXZhbGVudCB0byB0aGUgY29kZSBh
Ym92ZT8KICAgICAgICAgICAgIExheW91dFJlY3Qgdmlld1JlY3QgPSBmcmFtZVZpZXcuYWN0dWFs
VmlzaWJsZUNvbnRlbnRSZWN0KCk7CiAgICAgICAgICAgICBMYXlvdXRSZWN0IHZpc2libGVSZWN0
UmVsYXRpdmVUb0RvY3VtZW50ID0gdmlld1JlY3Q7CiAjZW5kaWYKQEAgLTI3MDAsMTAgKzI3MDEs
MTAgQEAgSW50UG9pbnQgUmVuZGVyTGF5ZXI6Om1pbmltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0
CiBJbnRQb2ludCBSZW5kZXJMYXllcjo6bWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QKIHsK
ICAgICAvLyBGSVhNRTogbV9zY3JvbGxTaXplIG1heSBub3QgYmUgdXAtdG8tZGF0ZSBpZiBtX3Nj
cm9sbERpbWVuc2lvbnNEaXJ0eSBpcyB0cnVlLgotICAgIHJldHVybiAtc2Nyb2xsT3JpZ2luKCkg
KyByb3VuZGVkSW50U2l6ZShtX3Njcm9sbFNpemUpIC0gdmlzaWJsZUNvbnRlbnRSZWN0KEluY2x1
ZGVTY3JvbGxiYXJzKS5zaXplKCk7CisgICAgcmV0dXJuIC1zY3JvbGxPcmlnaW4oKSArIHJvdW5k
ZWRJbnRTaXplKG1fc2Nyb2xsU2l6ZSkgLSB2aXNpYmxlQ29udGVudFJlY3QoSW5jbHVkZVNjcm9s
bGJhcnMsIENvbnRlbnRzVmlzaWJsZVJlY3QpLnNpemUoKTsKIH0KIAotSW50UmVjdCBSZW5kZXJM
YXllcjo6dmlzaWJsZUNvbnRlbnRSZWN0KFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xs
YmFycyBzY3JvbGxiYXJJbmNsdXNpb24pIGNvbnN0CitJbnRSZWN0IFJlbmRlckxheWVyOjp2aXNp
YmxlQ29udGVudFJlY3QoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzIHNjcm9s
bGJhckluY2x1c2lvbiwgVmlzaWJsZUNvbnRlbnRSZWN0QmVoYXZpb3IpIGNvbnN0CiB7CiAgICAg
aW50IHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGggPSAwOwogICAgIGludCBob3Jpem9udGFsU2Nyb2xs
YmFySGVpZ2h0ID0gMDsKQEAgLTQ2NzAsNyArNDY3MSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6Omhp
dFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEhpdFRlc3RMb2NhdGlv
biYKIAogICAgIExheW91dFJlY3QgaGl0VGVzdEFyZWEgPSBpc091dE9mRmxvd1JlbmRlckZsb3dU
aHJlYWQoKSA/IHRvUmVuZGVyRmxvd1RocmVhZCgmcmVuZGVyZXIoKSktPnZpc3VhbE92ZXJmbG93
UmVjdCgpIDogcmVuZGVyZXIoKS52aWV3KCkuZG9jdW1lbnRSZWN0KCk7CiAgICAgaWYgKCFyZXF1
ZXN0Lmlnbm9yZUNsaXBwaW5nKCkpCi0gICAgICAgIGhpdFRlc3RBcmVhLmludGVyc2VjdChyZW5k
ZXJlcigpLnZpZXcoKS5mcmFtZVZpZXcoKS52aXNpYmxlQ29udGVudFJlY3QoKSk7CisgICAgICAg
IGhpdFRlc3RBcmVhLmludGVyc2VjdChyZW5kZXJlcigpLnZpZXcoKS5mcmFtZVZpZXcoKS52aXNp
YmxlQ29udGVudFJlY3QoRXhjbHVkZVNjcm9sbGJhcnMsIExlZ2FjeUlPU0RvY3VtZW50VmlzaWJs
ZVJlY3QpKTsKIAogICAgIFJlbmRlckxheWVyKiBpbnNpZGVMYXllciA9IGhpdFRlc3RMYXllcih0
aGlzLCAwLCByZXF1ZXN0LCByZXN1bHQsIGhpdFRlc3RBcmVhLCBoaXRUZXN0TG9jYXRpb24sIGZh
bHNlKTsKICAgICBpZiAoIWluc2lkZUxheWVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5oCmluZGV4IGQ2MDZkOWE4MzVhNjY5ZGZlM2VkYWVlODMwYmU0M2IwOGQ1ZGFjMDYu
LjhkZGQzYjRhNzZjMzZjNTQ0NTM3ZjI3MTVlMDg1OTU3OGRhNmZkMzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC0xMDY3LDcgKzEwNjcsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIEludFBvaW50IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgSW50UG9pbnQgbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHZpc2libGVDb250ZW50UmVjdChWaXNpYmxlQ29u
dGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnMpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwg
SW50UmVjdCB2aXNpYmxlQ29udGVudFJlY3QoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3Jv
bGxiYXJzLCBWaXNpYmxlQ29udGVudFJlY3RCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCBpbnQgdmlzaWJsZUhlaWdodCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
aW50IHZpc2libGVXaWR0aCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgSW50U2l6ZSBj
b250ZW50c1NpemUoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggYTZkZmIyMDNmMDIzYjllMTJlYjkxOGIy
MmFlMTMxM2Q0NDMwZTNjNi4uMWIzOGMzMjdmOTI4ZDVkNmZhNTk5NjU0MTYyZDUwNDI1ZTJhNTNi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAKQEAgLTQ5MSw3ICs0OTEsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ29t
cG9zaXRlZEJvdW5kcygpCiAgICAgICAgIExheW91dFJlY3QgY2xpcHBpbmdCb3VuZHM7CiAgICAg
ICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkucG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uICYm
IHJlbmRlcmVyKCkuY29udGFpbmVyKCkgPT0gJnZpZXcpIHsKICNpZiBQTEFURk9STShJT1MpCi0g
ICAgICAgICAgICBjbGlwcGluZ0JvdW5kcyA9IHZpZXcuZnJhbWVWaWV3KCkudmlzaWJsZUNvbnRl
bnRSZWN0KCk7CisgICAgICAgICAgICBjbGlwcGluZ0JvdW5kcyA9IHZpZXcuZnJhbWVWaWV3KCku
dmlzaWJsZUNvbnRlbnRSZWN0KFNjcm9sbGFibGVBcmVhOjpFeGNsdWRlU2Nyb2xsYmFycywgU2Ny
b2xsYWJsZUFyZWE6OkxlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpOwogI2Vsc2UKICAgICAg
ICAgICAgIGNsaXBwaW5nQm91bmRzID0gdmlldy5mcmFtZVZpZXcoKS52aWV3cG9ydENvbnN0cmFp
bmVkVmlzaWJsZUNvbnRlbnRSZWN0KCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmNwcAppbmRleCA0YTRiMzVjZTFhYzkzOWZkNmU3NWRmODM4NWIxOTFhMDQyYjYw
NWI2Li5mNzJjZTUzY2I2YjA3ZjdmYTQ2NGE3OGFlZjdlZjNkZmUwNzQyNjM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC0xMDE1LDcgKzEwMTUsNyBAQCBMYXlv
dXRSZWN0IFJlbmRlclZpZXc6OnZpZXdSZWN0KCkgY29uc3QKIHsKICAgICBpZiAoc2hvdWxkVXNl
UHJpbnRpbmdMYXlvdXQoKSkKICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoTGF5b3V0UG9pbnQo
KSwgc2l6ZSgpKTsKLSAgICByZXR1cm4gZnJhbWVWaWV3KCkudmlzaWJsZUNvbnRlbnRSZWN0KCk7
CisgICAgcmV0dXJuIGZyYW1lVmlldygpLnZpc2libGVDb250ZW50UmVjdChTY3JvbGxhYmxlQXJl
YTo6RXhjbHVkZVNjcm9sbGJhcnMsIFNjcm9sbGFibGVBcmVhOjpMZWdhY3lJT1NEb2N1bWVudFZp
c2libGVSZWN0KTsKIH0KIAogSW50UmVjdCBSZW5kZXJWaWV3Ojp1bnNjYWxlZERvY3VtZW50UmVj
dCgpIGNvbnN0CkBAIC0xMTA5LDcgKzExMDksNyBAQCBib29sIFJlbmRlclZpZXc6OnNob3VsZERp
c2FibGVMYXlvdXRTdGF0ZUZvclN1YnRyZWUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29ucwog
CiBJbnRTaXplIFJlbmRlclZpZXc6OnZpZXdwb3J0U2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGZyYW1lVmlldygpLnZpc2libGVDb250ZW50UmVjdChTY3JvbGxhYmxlQXJlYTo6SW5jbHVkZVNj
cm9sbGJhcnMpLnNpemUoKTsKKyAgICByZXR1cm4gZnJhbWVWaWV3KCkudmlzaWJsZUNvbnRlbnRS
ZWN0KFNjcm9sbGFibGVBcmVhOjpJbmNsdWRlU2Nyb2xsYmFycywgU2Nyb2xsYWJsZUFyZWE6Okxl
Z2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpLnNpemUoKTsKIH0KIAogdm9pZCBSZW5kZXJWaWV3
Ojp1cGRhdGVIaXRUZXN0UmVzdWx0KEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgTGF5b3V0
UG9pbnQmIHBvaW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9X
ZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5p
bgppbmRleCBlMDZjYWNiODE1MzE3MWY2MGRlY2VkYThjMWM0ZTQ5YTY2YmE1YzQ3Li5kYzdkYzc5
MDQ4YjZmN2I4MmEzNjRmMjA4ZWQ2ZDBiZjUxMjJhMzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRl
Zi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVy
YXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgpAQCAtNDY4LDQgKzQ2OCw0IEBAIEVYUE9SVFMKICAg
ICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP3ZtQFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRAV2ViQ29y
ZUBAUUFFUEFWVk1ASlNDQEBYWiwgP3ZtQFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRAV2ViQ29yZUBA
UUVBQVBFQVZWTUBKU0NAQFhaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/Y29tcGxldGVV
UkxARG9jdW1lbnRAV2ViQ29yZUBAVUJFP0FWVVJMQDJAQUJWU3RyaW5nQFdURkBAQFosID9jb21w
bGV0ZVVSTEBEb2N1bWVudEBXZWJDb3JlQEBVRUJBP0FWVVJMQDJAQUVCVlN0cmluZ0BXVEZAQEBa
KQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/PzFET01XaW5kb3dAV2ViQ29yZUBAVUFFQFha
LCA/PzFET01XaW5kb3dAV2ViQ29yZUBAVUVBQUBYWikKLSAgICAgICAgc3ltYm9sV2l0aFBvaW50
ZXIoP3Zpc2libGVDb250ZW50UmVjdEBTY3JvbGxWaWV3QFdlYkNvcmVAQFVCRT9BVkludFJlY3RA
MkBXNFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFyc0BTY3JvbGxhYmxlQXJlYUAy
QEBaLCA/dmlzaWJsZUNvbnRlbnRSZWN0QFNjcm9sbFZpZXdAV2ViQ29yZUBAVUVCQT9BVkludFJl
Y3RAMkBXNFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFyc0BTY3JvbGxhYmxlQXJl
YUAyQEBaKQorICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/dmlzaWJsZUNvbnRlbnRSZWN0QFNj
cm9sbFZpZXdAV2ViQ29yZUBAVUJFP0FWSW50UmVjdEAyQFc0VmlzaWJsZUNvbnRlbnRSZWN0SW5j
bHVkZXNTY3JvbGxiYXJzQFNjcm9sbGFibGVBcmVhQDJAVzRWaXNpYmxlQ29udGVudFJlY3RCZWhh
dmlvckA1MkBAWiksID92aXNpYmxlQ29udGVudFJlY3RAU2Nyb2xsVmlld0BXZWJDb3JlQEBVRUJB
P0FWSW50UmVjdEAyQFc0VmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzQFNjcm9s
bGFibGVBcmVhQDJAVzRWaXNpYmxlQ29udGVudFJlY3RCZWhhdmlvckA1MkBAWikpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222039</attachid>
            <date>2014-01-23 16:29:16 -0800</date>
            <delta_ts>2014-01-23 16:32:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127456-20140123162913.patch</filename>
            <type>text/plain</type>
            <size>56531</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyNjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmJjZWQ2YjBkZjZmM2Q5
OGU0YmYxZjY5ZTUwOTBkNTcxMjIyM2M1ZS4uNzAxYzQ2NWEyOTI4OTA5NGMwMDVkYmJhMTkzYTJk
YWNmMGU2NjhhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNiBAQAorMjAxNC0wMS0yMyAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIHZpc2li
bGVDb250ZW50UmVjdCgpIHJldHVybiBhY3R1YWxWaXNpYmxlQ29udGVudFJlY3QoKSBvbiBpT1Mg
bW9zdCBvZiB0aGUgdGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTI3NDU2CisgICAgICAgIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKyAgICAgICAgCisgICAgICAgIE9uIGlPUywgdmlzaWJsZUNvbnRlbnRSZWN0KCkgcmV0
dXJucyB0aGUgZW50aXJlIGRvY3VtZW50IHJlY3QgZm9yIGhpc3RvcmljYWwKKyAgICAgICAgcmVh
c29ucywgYW5kIGFjdHVhbFZpc2libGVDb250ZW50UmVjdCgpIHJldHVybnMgd2hhdCB2aXNpYmxl
Q29udGVudFJlY3QoKQorICAgICAgICByZXR1cm5zIG9uIG90aGVyIHBsYXRmb3Jtcy4KKyAgICAg
ICAgCisgICAgICAgIEluIGFkZGl0aW9uLCBhY3R1YWxWaXNpYmxlQ29udGVudFJlY3QoKSB3YXMg
cmV0dXJuaW5nIGFuIGVtcHR5IHJlY3QgaW4gV0syLgorICAgICAgICAKKyAgICAgICAgUmVkdWNl
IHRoZSBjb25mdXNpb24gb2YgI2lmZGVmcyBieSBtYWtpbmcgdmlzaWJsZUNvbnRlbnRSZWN0KCkg
YmVoYXZlIGxpa2UKKyAgICAgICAgYWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KCkgYnkgZGVmYXVs
dCBvbiBpT1MuIFdoZXJlIGl0IG5lZWRzIHRoZSBvbGQgYmVoYXZpb3IsCisgICAgICAgIGFuIG9w
dGlvbmFsIHBhcmFtZXRlciwgTGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCwgcHJvdmlkZXMg
dGhpcy4KKyAgICAgICAgCisgICAgICAgIEFjaGlldmUgdGhpcyBieSBoYXZpbmcgdGhlIHZpcnR1
YWwgU2Nyb2xsYWJsZUFyZWE6OnZpc2libGVDb250ZW50UmVjdEludGVybmFsKCksCisgICAgICAg
IHdoaWNoIGlzIGNhbGxlZCBieSBub24tdmlydHVhbCB2aXNpYmxlQ29udGVudFJlY3QoKSBhbmQg
dmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFycygpLgorICAgICAgICAKKyAgICAg
ICAgU2ltaWxhcmx5IGNsZWFuIHVwIHZpc2libGVIZWlnaHQvdmlzaWJsZVdpZHRoIGZ1bmN0aW9u
cyBieSBoYXZpbmcgdmlzaWJsZVNpemUoKSBiZSB2aXJ0dWFsLAorICAgICAgICB3aXRoIG5vbi12
aXJ0dWFsIHZpc2libGVIZWlnaHQoKSBhbmQgdmlzaWJsZVdpZHRoKCkuCisgICAgICAgIAorICAg
ICAgICBTY3JvbGxhYmxlQXJlYSBzdWJjbGFzc2VzIG92ZXJyaWRlIHZpc2libGVDb250ZW50UmVj
dEludGVybmFsKCkgYW5kIHZpc2libGVTaXplKCkgd2hlcmUgbmVjZXNzYXJ5LgorICAgICAgICAK
KyAgICAgICAgTWVjaGFuaWNhbGx5IGNoYW5nZSBhbGwgdGhlIGNhbGwgc2l0ZXMgb2YgYWN0dWFs
VmlzaWJsZUNvbnRlbnRSZWN0KCkgdG8KKyAgICAgICAgdXNlIHZpc2libGVDb250ZW50UmVjdCgp
LCBhbmQgdGhlIGNhbGwgc2l0ZXMgb2YgdmlzaWJsZUNvbnRlbnRSZWN0KCkKKyAgICAgICAgdG8g
dmlzaWJsZUNvbnRlbnRSZWN0KC4uLiwgTGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCksIGFk
ZGluZyBjb21tZW50cworICAgICAgICB3aGVyZSB0aGlzIG1heSBub3QgYmUgYXBwcm9wcmlhdGUu
CisgICAgICAgIAorICAgICAgICBDaGFuZ2UgY2FsbGVycyBvZiB2aXNpYmxlQ29udGVudFJlY3Qo
SW5jbHVkZVNjcm9sbGJhcnMuLi4pIHRvIHZpc2libGVDb250ZW50UmVjdEluY2x1ZGluZ1Njcm9s
bGJhcnMoKS4KKyAgICAgICAgCisgICAgICAgIEFsc28gYWRkIGFjdHVhbFNjcm9sbFBvc2l0aW9u
KCksIGFuZCBjbGVhbiB1cCBzb21lIGFjdHVhbFNjcm9sbCogY2FsbCBzaXRlcy4KKyAgICAgICAg
CisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmlu
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc09uc2NyZWVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3Vi
Rm9jdXMpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc09m
ZlNjcmVlbik6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjphZGp1c3RGbG9hdFF1YWRzRm9yU2Nyb2xsQW5kQWJzb2x1dGVab29tQW5kRnJh
bWVTY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRqdXN0RmxvYXRSZWN0Rm9y
U2Nyb2xsQW5kQWJzb2x1dGVab29tQW5kRnJhbWVTY2FsZSk6CisgICAgICAgICogZG9tL01vdXNl
UmVsYXRlZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50OjpN
b3VzZVJlbGF0ZWRFdmVudCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjpjb3VudE1hdGNoZXNGb3JUZXh0KToKKyAgICAgICAgKiBlZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
Ojpib3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmdldENsaXBwZWRW
aXNpYmxlVGV4dFJlY3RhbmdsZXMpOgorICAgICAgICAqIGh0bWwvSFRNTEJvZHlFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCb2R5RWxlbWVudDo6c2Nyb2xsTGVmdCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MQm9keUVsZW1lbnQ6OnNjcm9sbFRvcCk6CisgICAgICAgICogaHRt
bC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1lbnQ6Omlt
YWdlRml0c0luV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1lbnQ6OndpbmRv
d1NpemVDaGFuZ2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5Ojp1cGRhdGUpOgorICAgICAgICAq
IHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6aW5uZXJI
ZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojppbm5lcldpZHRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2Nyb2xsWCk6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3c6OnNjcm9sbFkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpzY3JvbGxCeSk6
CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpjYWxjdWxhdGVTY3JvbGxiYXJNb2Rlc0ZvckxheW91dCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9s
bENvbnRlbnRzU2xvd1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZXBhaW50
Q29udGVudFJlY3RhbmdsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNlbmRSZXNp
emVFdmVudElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6d2luZG93Q2xp
cFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojppc1Njcm9sbGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRyb2xUaW50cyk6CisgICAgICAgICog
cGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYW5TY3JvbGxJ
bkRpcmVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp1bnNjYWxlZFZpc2libGVDb250ZW50U2l6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp2aXNpYmxlQ29udGVudFJlY3RJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbFZpZXc6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxW
aWV3Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxPZmZzZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6YWN0dWFsU2Nyb2xsWCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxWaWV3OjphY3R1YWxTY3JvbGxZKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bFZpZXc6OmFjdHVhbFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxh
YmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6dmlzaWJsZUNv
bnRlbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjp2aXNpYmxlQ29u
dGVudFJlY3RJbmNsdWRpbmdTY3JvbGxiYXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFi
bGVBcmVhOjp2aXNpYmxlQ29udGVudFJlY3RJbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0v
U2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjp2aXNp
YmxlV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnZpc2libGVIZWln
aHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkludFNpemU6OmV4cGFuZGVkVG8pOiBEcml2ZS1ieSBjbGVhbnVwLgorICAgICAgICAo
V2ViQ29yZTo6SW50U2l6ZTo6c2hydW5rVG8pOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3Jv
bGxWaWV3R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnZpc2libGVDb250
ZW50UmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjptYXhpbXVtU2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OnZpc2libGVDb250ZW50UmVjdEludGVybmFsKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ29tcG9zaXRlZEJv
dW5kcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZp
ZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6dmlld1JlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6dmlld3BvcnRTaXplKToKKwogMjAxNC0wMS0yMyAgTWF4
IFZ1am92aWMgIDxtdnVqb3ZpY0BhZG9iZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIENTUyBDdXN0
b20gRmlsdGVycyBjb2RlIGFuZCB0ZXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjOTA1ZGUyNWFjMTdiOGI3NWUx
NzdhNmVmNTE3ZDYwOTQyMTgwM2ZlLi5mNmEzNDZhM2QxZTkyMDc4NjFlYzhkMzE3Zjk1Nzg1Yjkx
OTc2MmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE0LTAxLTIzICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgdmlzaWJsZUNvbnRl
bnRSZWN0KCkgcmV0dXJuIGFjdHVhbFZpc2libGVDb250ZW50UmVjdCgpIG9uIGlPUyBtb3N0IG9m
IHRoZSB0aW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjc0NTYKKyAgICAgICAgCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
ICAgICAgICAKKyAgICAgICAgT24gaU9TLCB2aXNpYmxlQ29udGVudFJlY3QoKSByZXR1cm5zIHRo
ZSBlbnRpcmUgZG9jdW1lbnQgcmVjdCBmb3IgaGlzdG9yaWNhbAorICAgICAgICByZWFzb25zLCBh
bmQgYWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KCkgcmV0dXJucyB3aGF0IHZpc2libGVDb250ZW50
UmVjdCgpCisgICAgICAgIHJldHVybnMgb24gb3RoZXIgcGxhdGZvcm1zLgorICAgICAgICAKKyAg
ICAgICAgSW4gYWRkaXRpb24sIGFjdHVhbFZpc2libGVDb250ZW50UmVjdCgpIHdhcyByZXR1cm5p
bmcgYW4gZW1wdHkgcmVjdCBpbiBXSzIuCisgICAgICAgIAorICAgICAgICBSZWR1Y2UgdGhlIGNv
bmZ1c2lvbiBvZiAjaWZkZWZzIGJ5IG1ha2luZyB2aXNpYmxlQ29udGVudFJlY3QoKSBiZWhhdmUg
bGlrZQorICAgICAgICBhY3R1YWxWaXNpYmxlQ29udGVudFJlY3QoKSBieSBkZWZhdWx0IG9uIGlP
Uy4gV2hlcmUgaXQgbmVlZHMgdGhlIG9sZCBiZWhhdmlvciwKKyAgICAgICAgYW4gb3B0aW9uYWwg
cGFyYW1ldGVyLCBMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0LCBwcm92aWRlcyB0aGlzLgor
ICAgICAgICAKKyAgICAgICAgQWNoaWV2ZSB0aGlzIGJ5IGhhdmluZyB0aGUgdmlydHVhbCBTY3Jv
bGxhYmxlQXJlYTo6dmlzaWJsZUNvbnRlbnRSZWN0SW50ZXJuYWwoKSwKKyAgICAgICAgd2hpY2gg
aXMgY2FsbGVkIGJ5IG5vbi12aXJ0dWFsIHZpc2libGVDb250ZW50UmVjdCgpIGFuZCB2aXNpYmxl
Q29udGVudFJlY3RJbmNsdWRpbmdTY3JvbGxiYXJzKCkuCisgICAgICAgIAorICAgICAgICBTaW1p
bGFybHkgY2xlYW4gdXAgdmlzaWJsZUhlaWdodC92aXNpYmxlV2lkdGggZnVuY3Rpb25zIGJ5IGhh
dmluZyB2aXNpYmxlU2l6ZSgpIGJlIHZpcnR1YWwsCisgICAgICAgIHdpdGggbm9uLXZpcnR1YWwg
dmlzaWJsZUhlaWdodCgpIGFuZCB2aXNpYmxlV2lkdGgoKS4KKyAgICAgICAgCisgICAgICAgIFNj
cm9sbGFibGVBcmVhIHN1YmNsYXNzZXMgb3ZlcnJpZGUgdmlzaWJsZUNvbnRlbnRSZWN0SW50ZXJu
YWwoKSBhbmQgdmlzaWJsZVNpemUoKSB3aGVyZSBuZWNlc3NhcnkuCisgICAgICAgIAorICAgICAg
ICBNZWNoYW5pY2FsbHkgY2hhbmdlIGFsbCB0aGUgY2FsbCBzaXRlcyBvZiBhY3R1YWxWaXNpYmxl
Q29udGVudFJlY3QoKSB0bworICAgICAgICB1c2UgdmlzaWJsZUNvbnRlbnRSZWN0KCksIGFuZCB0
aGUgY2FsbCBzaXRlcyBvZiB2aXNpYmxlQ29udGVudFJlY3QoKQorICAgICAgICB0byB2aXNpYmxl
Q29udGVudFJlY3QoLi4uLCBMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KSwgYWRkaW5nIGNv
bW1lbnRzCisgICAgICAgIHdoZXJlIHRoaXMgbWF5IG5vdCBiZSBhcHByb3ByaWF0ZS4KKyAgICAg
ICAgCisgICAgICAgIENoYW5nZSBjYWxsZXJzIG9mIHZpc2libGVDb250ZW50UmVjdChJbmNsdWRl
U2Nyb2xsYmFycy4uLikgdG8gdmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFycygp
LgorICAgICAgICAKKyAgICAgICAgQWxzbyBhZGQgYWN0dWFsU2Nyb2xsUG9zaXRpb24oKSwgYW5k
IGNsZWFuIHVwIHNvbWUgYWN0dWFsU2Nyb2xsKiBjYWxsIHNpdGVzLgorICAgICAgICAKKyAgICAg
ICAgTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogV2ViS2l0LnZjeHByb2ovV2ViS2l0
RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluOgorCiAyMDE0LTAxLTIyICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIFVwZGF0ZSBw
cm9qZWN0IGFuZCBzb2x1dGlvbiBmaWxlcyBmb3IgNjQtYml0IGJ1aWxkcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IDBlMzcxZmM2OGI3ZDgyNDY2OTYxOTA0ZjZjYWM1Njg5MDZkNmVmYTQuLmQ1ZjI0ZmYyOGRkYTYw
NzEwMzY3MWZiOTJlNzhiMTM2NDA2NTQ2MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAor
MjAxNC0wMS0yMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAg
ICAgICBNYWtlIHZpc2libGVDb250ZW50UmVjdCgpIHJldHVybiBhY3R1YWxWaXNpYmxlQ29udGVu
dFJlY3QoKSBvbiBpT1MgbW9zdCBvZiB0aGUgdGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3NDU2CisgICAgICAgIAorICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIE9uIGlPUywgdmlzaWJsZUNv
bnRlbnRSZWN0KCkgcmV0dXJucyB0aGUgZW50aXJlIGRvY3VtZW50IHJlY3QgZm9yIGhpc3Rvcmlj
YWwKKyAgICAgICAgcmVhc29ucywgYW5kIGFjdHVhbFZpc2libGVDb250ZW50UmVjdCgpIHJldHVy
bnMgd2hhdCB2aXNpYmxlQ29udGVudFJlY3QoKQorICAgICAgICByZXR1cm5zIG9uIG90aGVyIHBs
YXRmb3Jtcy4KKyAgICAgICAgCisgICAgICAgIEluIGFkZGl0aW9uLCBhY3R1YWxWaXNpYmxlQ29u
dGVudFJlY3QoKSB3YXMgcmV0dXJuaW5nIGFuIGVtcHR5IHJlY3QgaW4gV0syLgorICAgICAgICAK
KyAgICAgICAgUmVkdWNlIHRoZSBjb25mdXNpb24gb2YgI2lmZGVmcyBieSBtYWtpbmcgdmlzaWJs
ZUNvbnRlbnRSZWN0KCkgYmVoYXZlIGxpa2UKKyAgICAgICAgYWN0dWFsVmlzaWJsZUNvbnRlbnRS
ZWN0KCkgYnkgZGVmYXVsdCBvbiBpT1MuIFdoZXJlIGl0IG5lZWRzIHRoZSBvbGQgYmVoYXZpb3Is
CisgICAgICAgIGFuIG9wdGlvbmFsIHBhcmFtZXRlciwgTGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxl
UmVjdCwgcHJvdmlkZXMgdGhpcy4KKyAgICAgICAgCisgICAgICAgIEFjaGlldmUgdGhpcyBieSBo
YXZpbmcgdGhlIHZpcnR1YWwgU2Nyb2xsYWJsZUFyZWE6OnZpc2libGVDb250ZW50UmVjdEludGVy
bmFsKCksCisgICAgICAgIHdoaWNoIGlzIGNhbGxlZCBieSBub24tdmlydHVhbCB2aXNpYmxlQ29u
dGVudFJlY3QoKSBhbmQgdmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFycygpLgor
ICAgICAgICAKKyAgICAgICAgU2ltaWxhcmx5IGNsZWFuIHVwIHZpc2libGVIZWlnaHQvdmlzaWJs
ZVdpZHRoIGZ1bmN0aW9ucyBieSBoYXZpbmcgdmlzaWJsZVNpemUoKSBiZSB2aXJ0dWFsLAorICAg
ICAgICB3aXRoIG5vbi12aXJ0dWFsIHZpc2libGVIZWlnaHQoKSBhbmQgdmlzaWJsZVdpZHRoKCku
CisgICAgICAgIAorICAgICAgICBTY3JvbGxhYmxlQXJlYSBzdWJjbGFzc2VzIG92ZXJyaWRlIHZp
c2libGVDb250ZW50UmVjdEludGVybmFsKCkgYW5kIHZpc2libGVTaXplKCkgd2hlcmUgbmVjZXNz
YXJ5LgorICAgICAgICAKKyAgICAgICAgTWVjaGFuaWNhbGx5IGNoYW5nZSBhbGwgdGhlIGNhbGwg
c2l0ZXMgb2YgYWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KCkgdG8KKyAgICAgICAgdXNlIHZpc2li
bGVDb250ZW50UmVjdCgpLCBhbmQgdGhlIGNhbGwgc2l0ZXMgb2YgdmlzaWJsZUNvbnRlbnRSZWN0
KCkKKyAgICAgICAgdG8gdmlzaWJsZUNvbnRlbnRSZWN0KC4uLiwgTGVnYWN5SU9TRG9jdW1lbnRW
aXNpYmxlUmVjdCksIGFkZGluZyBjb21tZW50cworICAgICAgICB3aGVyZSB0aGlzIG1heSBub3Qg
YmUgYXBwcm9wcmlhdGUuCisgICAgICAgIAorICAgICAgICBDaGFuZ2UgY2FsbGVycyBvZiB2aXNp
YmxlQ29udGVudFJlY3QoSW5jbHVkZVNjcm9sbGJhcnMuLi4pIHRvIHZpc2libGVDb250ZW50UmVj
dEluY2x1ZGluZ1Njcm9sbGJhcnMoKS4KKyAgICAgICAgCisgICAgICAgIEFsc28gYWRkIGFjdHVh
bFNjcm9sbFBvc2l0aW9uKCksIGFuZCBjbGVhbiB1cCBzb21lIGFjdHVhbFNjcm9sbCogY2FsbCBz
aXRlcy4KKyAgICAgICAgCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpjb2xsZWN0R2VvbWV0cnlGb3JNYWdu
aWZpY2F0aW9uR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlR2VvbWV0cnlD
b2xsZWN0b3I6OmNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lOjp2aXNpYmxlQ29udGVudEJvdW5kcyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAg
KFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNvbW1pdFRyYW5zaWVudFpv
b20pOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YXBw
bHlUcmFuc2llbnRab29tVG9QYWdlKToKKwogMjAxNC0wMS0yMyAgTWF4IFZ1am92aWMgIDxtdnVq
b3ZpY0BhZG9iZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIENTUyBDdXN0b20gRmlsdGVycyBjb2Rl
IGFuZCB0ZXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBhZjMyOWIzNjQ0ZWNkMjU3YjQ2MDhi
OGVhMGYxNTRmYjViOGFkZWVjLi4zNGMzMGM0MTU0OGU3NDYxZjg4MDEyYzhhMTZjNjQ5OGRkMDg2
MTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTQyMyw3ICsxNDIzLDYgQEAgX19aTks3V2Vi
Q29yZTEwU2Nyb2xsVmlldzE2d2luZG93VG9Db250ZW50c0VSS05TXzdJbnRSZWN0RQogX19aTks3
V2ViQ29yZTEwU2Nyb2xsVmlldzE2d2luZG93VG9Db250ZW50c0VSS05TXzhJbnRQb2ludEUKIF9f
Wk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcxOGNvbnRlbnRzVG9Sb290Vmlld0VSS05TXzdJbnRSZWN0
RQogX19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE4Y29udGVudHNUb1Jvb3RWaWV3RVJLTlNfOElu
dFBvaW50RQotX19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE4dmlzaWJsZUNvbnRlbnRSZWN0RU5T
XzE0U2Nyb2xsYWJsZUFyZWEzNlZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFyc0UK
IF9fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcyM3Jvb3RWaWV3VG9Ub3RhbENvbnRlbnRzRVJLTlNf
OEludFBvaW50RQogX19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzMwc2Nyb2xsT2Zmc2V0UmVsYXRp
dmVUb0RvY3VtZW50RXYKIF9fWk5LN1dlYkNvcmUxMFN0b3JhZ2VNYXA2bGVuZ3RoRXYKQEAgLTE1
NDgsMTIgKzE1NDcsMTUgQEAgX19aTks3V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGUxMGNvbm5lY3Rp
b25FdgogX19aTks3V2ViQ29yZTE0UmVzb3VyY2VMb2FkZXIxMWZyYW1lTG9hZGVyRXYKIF9fWk5L
N1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhMTRzY3JvbGxBbmltYXRvckV2CiBfX1pOSzdXZWJDb3Jl
MTRTY3JvbGxhYmxlQXJlYTE3dG90YWxDb250ZW50c1NpemVFdgorX19aTks3V2ViQ29yZTE0U2Ny
b2xsYWJsZUFyZWExOHZpc2libGVDb250ZW50UmVjdEVOUzBfMjZWaXNpYmxlQ29udGVudFJlY3RC
ZWhhdmlvckUKIF9fWk5LN1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhMjBjb250ZW50QXJlYVdpbGxQ
YWludEV2CiBfX1pOSzdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYTIxbW91c2VFbnRlcmVkU2Nyb2xs
YmFyRVBOU185U2Nyb2xsYmFyRQogX19aTks3V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWEyMXNjcm9s
bGJhcnNDYW5CZUFjdGl2ZUV2CiBfX1pOSzdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYTIybW91c2VF
eGl0ZWRDb250ZW50QXJlYUV2CiBfX1pOSzdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYTIzbW91c2VF
bnRlcmVkQ29udGVudEFyZWFFdgogX19aTks3V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWEyM21vdXNl
TW92ZWRJbkNvbnRlbnRBcmVhRXYKK19fWk5LN1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhMjZ2aXNp
YmxlQ29udGVudFJlY3RJbnRlcm5hbEVOUzBfMzZWaXNpYmxlQ29udGVudFJlY3RJbmNsdWRlc1Nj
cm9sbGJhcnNFTlMwXzI2VmlzaWJsZUNvbnRlbnRSZWN0QmVoYXZpb3JFCitfX1pOSzdXZWJDb3Jl
MTRTY3JvbGxhYmxlQXJlYTM3dmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFyc0VO
UzBfMjZWaXNpYmxlQ29udGVudFJlY3RCZWhhdmlvckUKIF9fWk5LN1dlYkNvcmUxNFNlY3VyaXR5
T3JpZ2luMTBjYW5EaXNwbGF5RVJLTlNfM1VSTEUKIF9fWk5LN1dlYkNvcmUxNFNlY3VyaXR5T3Jp
Z2luMTF0b1Jhd1N0cmluZ0V2CiBfX1pOSzdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjEyaXNvbGF0
ZWRDb3B5RXYKQEAgLTIxMTksNyArMjEyMSw2IEBAIF9fWk43V2ViQ29yZThJbnRQb2ludEMxRVJL
N0NHUG9pbnQKIF9fWk43V2ViQ29yZThJbnRQb2ludEMxRVJLOF9OU1BvaW50CiBfX1pON1dlYkNv
cmU5RmxvYXRSZWN0QzFFUks3X05TUmVjdAogX19aTks3V2ViQ29yZTEwRmxvYXRQb2ludGN2OF9O
U1BvaW50RXYKLV9fWk5LN1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhMTh2aXNpYmxlQ29udGVudFJl
Y3RFTlMwXzM2VmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzRQogX19aTks3V2Vi
Q29yZTZDdXJzb3IxNHBsYXRmb3JtQ3Vyc29yRXYKIF9fWk5LN1dlYkNvcmU3SW50UmVjdGN2N19O
U1JlY3RFdgogX19aTks3V2ViQ29yZTdJbnRTaXplY3Y2Q0dTaXplRXYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IGU0
YWM2Y2Q5NzFhZjIzZDY5M2U1MjQ0Y2QyNzQxNzg1NzE1N2MwNzkuLmMzZTc5NDYyNmVhNzA3NjFj
YjY3MDIyNWE1MzA4NjExNTc5OTgxMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMTg4Myw3ICsxODgzLDggQEAg
Ym9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc09uc2NyZWVuKCkgY29uc3QKICAgICBmb3IgKHNp
emVfdCBpID0gbGV2ZWxzOyBpID49IDE7IGktLSkgewogICAgICAgICBjb25zdCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBvdXRlciA9IG9iamVjdHNbaV07CiAgICAgICAgIGNvbnN0IEFjY2Vzc2liaWxp
dHlPYmplY3QqIGlubmVyID0gb2JqZWN0c1tpIC0gMV07Ci0gICAgICAgIGNvbnN0IEludFJlY3Qg
b3V0ZXJSZWN0ID0gaSA8IGxldmVscyA/IHBpeGVsU25hcHBlZEludFJlY3Qob3V0ZXItPmJvdW5k
aW5nQm94UmVjdCgpKSA6IG91dGVyLT5nZXRTY3JvbGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSgpLT52
aXNpYmxlQ29udGVudFJlY3QoKTsKKyAgICAgICAgLy8gRklYTUU6IHVuY2xlYXIgaWYgd2UgbmVl
ZCBMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0LgorICAgICAgICBjb25zdCBJbnRSZWN0IG91
dGVyUmVjdCA9IGkgPCBsZXZlbHMgPyBwaXhlbFNuYXBwZWRJbnRSZWN0KG91dGVyLT5ib3VuZGlu
Z0JveFJlY3QoKSkgOiBvdXRlci0+Z2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFibGUoKS0+dmlz
aWJsZUNvbnRlbnRSZWN0KFNjcm9sbGFibGVBcmVhOjpMZWdhY3lJT1NEb2N1bWVudFZpc2libGVS
ZWN0KTsKICAgICAgICAgY29uc3QgSW50UmVjdCBpbm5lclJlY3QgPSBwaXhlbFNuYXBwZWRJbnRS
ZWN0KGlubmVyLT5pc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkgPyBpbm5lci0+cGFyZW50T2Jq
ZWN0KCktPmJvdW5kaW5nQm94UmVjdCgpIDogaW5uZXItPmJvdW5kaW5nQm94UmVjdCgpKTsKICAg
ICAgICAgCiAgICAgICAgIGlmICghb3V0ZXJSZWN0LmludGVyc2VjdHMoaW5uZXJSZWN0KSkgewpA
QCAtMTkxNSw3ICsxOTE2LDggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzY3JvbGxUb01h
a2VWaXNpYmxlV2l0aFN1YkZvY3VzKGNvbnN0IEludFJlY3QmIHN1YmZvY3UKIAogICAgIExheW91
dFJlY3Qgb2JqZWN0UmVjdCA9IGJvdW5kaW5nQm94UmVjdCgpOwogICAgIEludFBvaW50IHNjcm9s
bFBvc2l0aW9uID0gc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbFBvc2l0aW9uKCk7Ci0gICAgSW50UmVj
dCBzY3JvbGxWaXNpYmxlUmVjdCA9IHNjcm9sbGFibGVBcmVhLT52aXNpYmxlQ29udGVudFJlY3Qo
KTsKKyAgICAvLyBGSVhNRTogdW5jbGVhciBpZiB3ZSBuZWVkIExlZ2FjeUlPU0RvY3VtZW50Vmlz
aWJsZVJlY3QuCisgICAgSW50UmVjdCBzY3JvbGxWaXNpYmxlUmVjdCA9IHNjcm9sbGFibGVBcmVh
LT52aXNpYmxlQ29udGVudFJlY3QoU2Nyb2xsYWJsZUFyZWE6OkxlZ2FjeUlPU0RvY3VtZW50Vmlz
aWJsZVJlY3QpOwogCiAgICAgaW50IGRlc2lyZWRYID0gY29tcHV0ZUJlc3RTY3JvbGxPZmZzZXQo
CiAgICAgICAgIHNjcm9sbFBvc2l0aW9uLngoKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDky
YWViNjYwODgxNDMwMDk5OWFkMTZmOGIxMTE0MDliYTBjMTRjOGMuLjY3NTIyYzg0YWViMzBmNDg3
MzAxZjVkNDUyYjlhZmZjZjU3NjA3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtNTUwLDcg
KzU1MCw4IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNPZmZTY3JlZW4oKSBj
b25zdAogewogICAgIEFTU0VSVChtX3JlbmRlcmVyKTsKICAgICBJbnRSZWN0IGNvbnRlbnRSZWN0
ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChtX3JlbmRlcmVyLT5hYnNvbHV0ZUNsaXBwZWRPdmVyZmxv
d1JlY3QoKSk7Ci0gICAgSW50UmVjdCB2aWV3UmVjdCA9IG1fcmVuZGVyZXItPnZpZXcoKS5mcmFt
ZVZpZXcoKS52aXNpYmxlQ29udGVudFJlY3QoKTsKKyAgICAvLyBGSVhNRTogdW5jbGVhciBpZiB3
ZSBuZWVkIExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QuCisgICAgSW50UmVjdCB2aWV3UmVj
dCA9IG1fcmVuZGVyZXItPnZpZXcoKS5mcmFtZVZpZXcoKS52aXNpYmxlQ29udGVudFJlY3QoU2Ny
b2xsYWJsZUFyZWE6OkxlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpOwogICAgIHZpZXdSZWN0
LmludGVyc2VjdChjb250ZW50UmVjdCk7CiAgICAgcmV0dXJuIHZpZXdSZWN0LmlzRW1wdHkoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDZkZjg1Yzc3NTNmOGNmZTMxMzIxYWQwYjU3
N2YyZmVjN2M0NDQ5NTYuLmE2MDAyNTEyYTE4Yjk5MWZjN2UzYWJiMjJjMTAzYWE0MTFiYjg0NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTgwNywxMSArNTgwNyw3IEBAIHZvaWQgRG9j
dW1lbnQ6OmFkanVzdEZsb2F0UXVhZHNGb3JTY3JvbGxBbmRBYnNvbHV0ZVpvb21BbmRGcmFtZVNj
YWxlKFZlY3RvcjxGbG9hCiAgICAgaWYgKGZyYW1lKCkpCiAgICAgICAgIGludmVyc2VGcmFtZVNj
YWxlID0gMSAvIGZyYW1lKCktPmZyYW1lU2NhbGVGYWN0b3IoKTsKIAotI2lmIFBMQVRGT1JNKElP
UykKLSAgICBMYXlvdXRSZWN0IHZpc2libGVDb250ZW50UmVjdCA9IHZpZXcoKS0+YWN0dWFsVmlz
aWJsZUNvbnRlbnRSZWN0KCk7Ci0jZWxzZQogICAgIExheW91dFJlY3QgdmlzaWJsZUNvbnRlbnRS
ZWN0ID0gdmlldygpLT52aXNpYmxlQ29udGVudFJlY3QoKTsKLSNlbmRpZgogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcXVhZHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgcXVhZHNbaV0ubW92
ZSgtdmlzaWJsZUNvbnRlbnRSZWN0LngoKSwgLXZpc2libGVDb250ZW50UmVjdC55KCkpOwogICAg
ICAgICBpZiAoem9vbSAhPSAxKQpAQCAtNTgzMSwxMSArNTgyNyw3IEBAIHZvaWQgRG9jdW1lbnQ6
OmFkanVzdEZsb2F0UmVjdEZvclNjcm9sbEFuZEFic29sdXRlWm9vbUFuZEZyYW1lU2NhbGUoRmxv
YXRSZWN0JiByCiAgICAgaWYgKGZyYW1lKCkpCiAgICAgICAgIGludmVyc2VGcmFtZVNjYWxlID0g
MSAvIGZyYW1lKCktPmZyYW1lU2NhbGVGYWN0b3IoKTsKIAotI2lmIFBMQVRGT1JNKElPUykKLSAg
ICBMYXlvdXRSZWN0IHZpc2libGVDb250ZW50UmVjdCA9IHZpZXcoKS0+YWN0dWFsVmlzaWJsZUNv
bnRlbnRSZWN0KCk7Ci0jZWxzZQogICAgIExheW91dFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0ID0g
dmlldygpLT52aXNpYmxlQ29udGVudFJlY3QoKTsKLSNlbmRpZgogICAgIHJlY3QubW92ZSgtdmlz
aWJsZUNvbnRlbnRSZWN0LngoKSwgLXZpc2libGVDb250ZW50UmVjdC55KCkpOwogICAgIGlmICh6
b29tICE9IDEpCiAgICAgICAgIHJlY3Quc2NhbGUoMSAvIHpvb20pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAKaW5kZXggZDNiOGMzNTgxNDE5NjUyODNiZmI1Y2Q1ZjBk
Y2VmMzNkYWFhMGZkMy4uODgwMDBmNWYzZjFmYzNmOThhNTBiYjcyYjJkNjEyNzJhNTM1MjAyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwCkBAIC03Nyw3ICs3Nyw3
IEBAIE1vdXNlUmVsYXRlZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJiCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAg
ICAgIHNjcm9sbFBvc2l0aW9uID0gZnJhbWVWaWV3LT5zY3JvbGxQb3NpdGlvbigpOwogI2Vsc2UK
LSAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uID0gZnJhbWVWaWV3LT5hY3R1YWxWaXNpYmxlQ29u
dGVudFJlY3QoKS5sb2NhdGlvbigpOworICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb24gPSBmcmFt
ZVZpZXctPmFjdHVhbFNjcm9sbFBvc2l0aW9uKCk7CiAjZW5kaWYKICAgICAgICAgICAgIGFkanVz
dGVkUGFnZUxvY2F0aW9uID0gZnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKHdpbmRvd0xvY2F0
aW9uKTsKICAgICAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gMSAvIChmcmFtZS0+cGFnZVpv
b21GYWN0b3IoKSAqIGZyYW1lLT5mcmFtZVNjYWxlRmFjdG9yKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCmluZGV4IDBlNWRiZWFhNDViZjYxYzE5YzQ4NzE2YmI0YzQxOWMzZDBhZjc0ZDcu
LjEyNzEwNzZmOGI0ZGQ4M2YzM2FlN2JkMTAxNmEzMTEyZWU0NmEyYWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKQEAgLTMyNjcsNyArMzI2Nyw5IEBAIHVuc2lnbmVkIEVkaXRvcjo6Y291
bnRNYXRjaGVzRm9yVGV4dChjb25zdCBTdHJpbmcmIHRhcmdldCwgUmFuZ2UqIHJhbmdlLCBGaW5k
T3B0CiAgICAgICAgIC8vIERvIGEgImZha2UiIHBhaW50IGluIG9yZGVyIHRvIGV4ZWN1dGUgdGhl
IGNvZGUgdGhhdCBjb21wdXRlcyB0aGUgcmVuZGVyZWQgcmVjdCBmb3IgZWFjaCB0ZXh0IG1hdGNo
LgogICAgICAgICBpZiAobV9mcmFtZS52aWV3KCkgJiYgbV9mcmFtZS5jb250ZW50UmVuZGVyZXIo
KSkgewogICAgICAgICAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXQoKTsgLy8gRW5zdXJlIGxh
eW91dCBpcyB1cCB0byBkYXRlLgotICAgICAgICAgICAgTGF5b3V0UmVjdCB2aXNpYmxlUmVjdCA9
IG1fZnJhbWUudmlldygpLT52aXNpYmxlQ29udGVudFJlY3QoKTsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiB1bmNsZWFyIGlmIHdlIG5lZWQgTGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdC4KKyAg
ICAgICAgICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBwcm9iYWJseSBsb29rIGF0IHBhaW50c0Vu
dGlyZUNvbnRlbnRzKCkKKyAgICAgICAgICAgIExheW91dFJlY3QgdmlzaWJsZVJlY3QgPSBtX2Zy
YW1lLnZpZXcoKS0+dmlzaWJsZUNvbnRlbnRSZWN0KFNjcm9sbGFibGVBcmVhOjpMZWdhY3lJT1NE
b2N1bWVudFZpc2libGVSZWN0KTsKICAgICAgICAgICAgIGlmICghdmlzaWJsZVJlY3QuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQoKFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0KikwKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LnNldFBhaW50aW5n
RGlzYWJsZWQodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1l
U2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3Bw
CmluZGV4IGQ1OWU3ZTk1MmM2NWIxMTljZTgwMzZjZWE1NDg0YmI1NmI4NzI3NTYuLmNmMGZlYWYx
OTg2NGNhM2JmMTM3MDFmMTBiMTY3NjQxNDhkY2Y4ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0yMDA4LDcgKzIwMDgsNyBAQCBGbG9hdFJlY3QgRnJh
bWVTZWxlY3Rpb246OmJvdW5kcyhib29sIGNsaXBUb1Zpc2libGVDb250ZW50KSBjb25zdAogICAg
ICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwogCiAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0
ID0gcm9vdC0+c2VsZWN0aW9uQm91bmRzKGNsaXBUb1Zpc2libGVDb250ZW50KTsKLSAgICByZXR1
cm4gY2xpcFRvVmlzaWJsZUNvbnRlbnQgPyBpbnRlcnNlY3Rpb24oc2VsZWN0aW9uUmVjdCwgdmll
dy0+dmlzaWJsZUNvbnRlbnRSZWN0KCkpIDogc2VsZWN0aW9uUmVjdDsKKyAgICByZXR1cm4gY2xp
cFRvVmlzaWJsZUNvbnRlbnQgPyBpbnRlcnNlY3Rpb24oc2VsZWN0aW9uUmVjdCwgdmlldy0+dmlz
aWJsZUNvbnRlbnRSZWN0KFNjcm9sbGFibGVBcmVhOjpMZWdhY3lJT1NEb2N1bWVudFZpc2libGVS
ZWN0KSkgOiBzZWxlY3Rpb25SZWN0OwogfQogCiB2b2lkIEZyYW1lU2VsZWN0aW9uOjpnZXRDbGlw
cGVkVmlzaWJsZVRleHRSZWN0YW5nbGVzKFZlY3RvcjxGbG9hdFJlY3Q+JiByZWN0YW5nbGVzKSBj
b25zdApAQCAtMjAxNyw3ICsyMDE3LDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6Z2V0Q2xpcHBl
ZFZpc2libGVUZXh0UmVjdGFuZ2xlcyhWZWN0b3I8RmxvYXRSZWN0PiYgcmVjdGFuZ2wKICAgICBp
ZiAoIXJvb3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVu
dFJlY3QgPSBtX2ZyYW1lLT52aWV3KCktPnZpc2libGVDb250ZW50UmVjdCgpOworICAgIEZsb2F0
UmVjdCB2aXNpYmxlQ29udGVudFJlY3QgPSBtX2ZyYW1lLT52aWV3KCktPnZpc2libGVDb250ZW50
UmVjdChTY3JvbGxhYmxlQXJlYTo6TGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCk7CiAKICAg
ICBWZWN0b3I8RmxvYXRRdWFkPiBxdWFkczsKICAgICB0b05vcm1hbGl6ZWRSYW5nZSgpLT50ZXh0
UXVhZHMocXVhZHMsIHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Qm9keUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3Bw
CmluZGV4IDM4NWU4ODlhMzcwNzZkNjgwNGYwMDNmMTVjOGU1ZDE2MGZlZWQ2MWMuLjlkYTE0MTBm
ZWIxZmU3NWMzYWU3YWE2MDZkY2Q4ZWJjMmE4NmZlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxCb2R5RWxlbWVudC5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCBpbnQgSFRNTEJvZHlFbGVtZW50
OjpzY3JvbGxMZWZ0KCkKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiAwOwogI2lmIFBM
QVRGT1JNKElPUykKLSAgICByZXR1cm4gYWRqdXN0Rm9yWm9vbSh2aWV3LT5hY3R1YWxWaXNpYmxl
Q29udGVudFJlY3QoKS54KCksICpmcmFtZSk7CisgICAgcmV0dXJuIGFkanVzdEZvclpvb20odmll
dy0+YWN0dWFsU2Nyb2xsWCgpLCAqZnJhbWUpOwogI2Vsc2UKICAgICByZXR1cm4gYWRqdXN0Rm9y
Wm9vbSh2aWV3LT5zY3JvbGxYKCksICpmcmFtZSk7CiAjZW5kaWYKQEAgLTIzNyw3ICsyMzcsNyBA
QCBpbnQgSFRNTEJvZHlFbGVtZW50OjpzY3JvbGxUb3AoKQogICAgIGlmICghdmlldykKICAgICAg
ICAgcmV0dXJuIDA7CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHJldHVybiBhZGp1c3RGb3Jab29t
KHZpZXctPmFjdHVhbFZpc2libGVDb250ZW50UmVjdCgpLnkoKSwgKmZyYW1lKTsKKyAgICByZXR1
cm4gYWRqdXN0Rm9yWm9vbSh2aWV3LT5hY3R1YWxTY3JvbGxZKCksICpmcmFtZSk7CiAjZWxzZQog
ICAgIHJldHVybiBhZGp1c3RGb3Jab29tKHZpZXctPnNjcm9sbFkoKSwgKmZyYW1lKTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggYTZmNzVjYjk0ZTcwZmZh
ODE0ZGZjY2Y2N2YwZDMxOTNmMTIwMWY5MC4uZmQ0ZGU2NDkwYWI1NzQ5Yjc5MTQ0NTVmZmIwM2Y3
N2RlOGI5ODkwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC0zNDQs
NyArMzQ0LDcgQEAgYm9vbCBJbWFnZURvY3VtZW50OjppbWFnZUZpdHNJbldpbmRvdygpIGNvbnN0
CiAKICAgICBMYXlvdXRTaXplIGltYWdlU2l6ZSA9IG1faW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFn
ZSgpLT5pbWFnZVNpemVGb3JSZW5kZXJlcihtX2ltYWdlRWxlbWVudC0+cmVuZGVyZXIoKSwgcGFn
ZVpvb21GYWN0b3IodGhpcykpOwogI2lmIFBMQVRGT1JNKElPUykKLSAgICBMYXlvdXRTaXplIHdp
bmRvd1NpemUgPSB2aWV3LT5jb250ZW50c1RvU2NyZWVuKHZpZXctPmFjdHVhbFZpc2libGVDb250
ZW50UmVjdCgpKS5zaXplKCk7CisgICAgTGF5b3V0U2l6ZSB3aW5kb3dTaXplID0gdmlldy0+Y29u
dGVudHNUb1NjcmVlbih2aWV3LT52aXNpYmxlQ29udGVudFJlY3QoKSkuc2l6ZSgpOwogI2Vsc2UK
ICAgICBMYXlvdXRTaXplIHdpbmRvd1NpemUgPSBMYXlvdXRTaXplKHZpZXctPndpZHRoKCksIHZp
ZXctPmhlaWdodCgpKTsKICNlbmRpZgpAQCAtMzYzLDcgKzM2Myw3IEBAIHZvaWQgSW1hZ2VEb2N1
bWVudDo6d2luZG93U2l6ZUNoYW5nZWQoKQogICAgICAgICByZXR1cm47CiAKICAgICBMYXlvdXRT
aXplIGltYWdlU2l6ZSA9IG1faW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpLT5pbWFnZVNpemVG
b3JSZW5kZXJlcihtX2ltYWdlRWxlbWVudC0+cmVuZGVyZXIoKSwgcGFnZVpvb21GYWN0b3IodGhp
cykpOwotICAgIExheW91dFJlY3QgdmlzaWJsZVNjcmVlblNpemUgPSBmcmFtZSgpLT52aWV3KCkt
PmNvbnRlbnRzVG9TY3JlZW4oZnJhbWUoKS0+dmlldygpLT5hY3R1YWxWaXNpYmxlQ29udGVudFJl
Y3QoKSk7CisgICAgTGF5b3V0UmVjdCB2aXNpYmxlU2NyZWVuU2l6ZSA9IGZyYW1lKCktPnZpZXco
KS0+Y29udGVudHNUb1NjcmVlbihmcmFtZSgpLT52aWV3KCktPnZpc2libGVDb250ZW50UmVjdCgp
KTsKIAogICAgIGZsb2F0IHdpZHRoU2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4odmlzaWJsZVNj
cmVlblNpemUud2lkdGgoKSkgLyBpbWFnZVNpemUud2lkdGgoKTsKICAgICBmbG9hdCBoZWlnaHRT
Y2FsZSA9IHN0YXRpY19jYXN0PGZsb2F0Pih2aXNpYmxlU2NyZWVuU2l6ZS5oZWlnaHQoKSkgLyBp
bWFnZVNpemUuaGVpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
T3ZlcmxheS5jcHAKaW5kZXggZDY5N2U1MTgxODk5MGU2MGQ5ZTEyOTMxN2UxZjAwZWRiMmYwNmI3
Yy4uZGExMTc2NjVmYjA1ZGRkYmJmODRjNDI1YTViNmUzZjZkNThjYzRmNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAtMzI4LDcgKzMyOCw3
IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6dXBkYXRlKCkKIAogICAgIEZyYW1lVmlldyogb3Zl
cmxheVZpZXcgPSBvdmVybGF5UGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCk7CiAgICAgSW50U2l6
ZSB2aWV3cG9ydFNpemUgPSB2aWV3LT52aXNpYmxlQ29udGVudFJlY3QoKS5zaXplKCk7Ci0gICAg
SW50U2l6ZSBmcmFtZVZpZXdGdWxsU2l6ZSA9IHZpZXctPnZpc2libGVDb250ZW50UmVjdChTY3Jv
bGxhYmxlQXJlYTo6SW5jbHVkZVNjcm9sbGJhcnMpLnNpemUoKTsKKyAgICBJbnRTaXplIGZyYW1l
Vmlld0Z1bGxTaXplID0gdmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFy
cygpLnNpemUoKTsKICAgICBJbnRTaXplIHNpemUgPSBtX3NpemUuaXNFbXB0eSgpID8gZnJhbWVW
aWV3RnVsbFNpemUgOiBtX3NpemU7CiAgICAgb3ZlcmxheVBhZ2UoKS0+c2V0UGFnZVNjYWxlRmFj
dG9yKG1fcGFnZS5wYWdlU2NhbGVGYWN0b3IoKSwgSW50UG9pbnQoKSk7CiAgICAgc2l6ZS5zY2Fs
ZShtX3BhZ2UucGFnZVNjYWxlRmFjdG9yKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmlu
ZGV4IGQ4MDcyZDlkYTgwNjJiZTA4MDM5MTFiZTFhNWY3YjU4NjVhYzlhZGQuLjIyYjJjMjcxOGMw
ZDFmYTQ5ZmMwNTk1MzU4ZmJhMTE5ZDdhZjZmYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKQEAgLTExNTMsMTEgKzExNTMsNyBAQCBpbnQgRE9NV2luZG93Ojppbm5lckhlaWdodCgpIGNv
bnN0CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm4gMDsKIAotI2lmIFBMQVRGT1JNKElP
UykKLSAgICByZXR1cm4gdmlldy0+bWFwRnJvbUxheW91dFRvQ1NTVW5pdHMoc3RhdGljX2Nhc3Q8
aW50Pih2aWV3LT5hY3R1YWxWaXNpYmxlQ29udGVudFJlY3QoKS5oZWlnaHQoKSkpOwotI2Vsc2UK
LSAgICByZXR1cm4gdmlldy0+bWFwRnJvbUxheW91dFRvQ1NTVW5pdHMoc3RhdGljX2Nhc3Q8aW50
Pih2aWV3LT52aXNpYmxlQ29udGVudFJlY3QoU2Nyb2xsYWJsZUFyZWE6OkluY2x1ZGVTY3JvbGxi
YXJzKS5oZWlnaHQoKSkpOwotI2VuZGlmCisgICAgcmV0dXJuIHZpZXctPm1hcEZyb21MYXlvdXRU
b0NTU1VuaXRzKHN0YXRpY19jYXN0PGludD4odmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVk
aW5nU2Nyb2xsYmFycygpLmhlaWdodCgpKSk7CiB9CiAKIGludCBET01XaW5kb3c6OmlubmVyV2lk
dGgoKSBjb25zdApAQCAtMTE2OSwxMSArMTE2NSw3IEBAIGludCBET01XaW5kb3c6OmlubmVyV2lk
dGgoKSBjb25zdAogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuIDA7CiAKLSNpZiBQTEFU
Rk9STShJT1MpCi0gICAgcmV0dXJuIHZpZXctPm1hcEZyb21MYXlvdXRUb0NTU1VuaXRzKHN0YXRp
Y19jYXN0PGludD4odmlldy0+YWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KCkud2lkdGgoKSkpOwot
I2Vsc2UKLSAgICByZXR1cm4gdmlldy0+bWFwRnJvbUxheW91dFRvQ1NTVW5pdHMoc3RhdGljX2Nh
c3Q8aW50Pih2aWV3LT52aXNpYmxlQ29udGVudFJlY3QoU2Nyb2xsYWJsZUFyZWE6OkluY2x1ZGVT
Y3JvbGxiYXJzKS53aWR0aCgpKSk7Ci0jZW5kaWYKKyAgICByZXR1cm4gdmlldy0+bWFwRnJvbUxh
eW91dFRvQ1NTVW5pdHMoc3RhdGljX2Nhc3Q8aW50Pih2aWV3LT52aXNpYmxlQ29udGVudFJlY3RJ
bmNsdWRpbmdTY3JvbGxiYXJzKCkud2lkdGgoKSkpOwogfQogCiBpbnQgRE9NV2luZG93OjpzY3Jl
ZW5YKCkgY29uc3QKQEAgLTEyMTUsNyArMTIwNyw3IEBAIGludCBET01XaW5kb3c6OnNjcm9sbFgo
KSBjb25zdAogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRp
bmdTdHlsZXNoZWV0cygpOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxpbnQ+KHZpZXctPmFjdHVhbFZpc2libGVDb250ZW50UmVjdCgpLngoKSAvIChtX2ZyYW1l
LT5wYWdlWm9vbUZhY3RvcigpICogbV9mcmFtZS0+ZnJhbWVTY2FsZUZhY3RvcigpKSk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4odmlldy0+YWN0dWFsU2Nyb2xsWCgpIC8gKG1fZnJhbWUt
PnBhZ2Vab29tRmFjdG9yKCkgKiBtX2ZyYW1lLT5mcmFtZVNjYWxlRmFjdG9yKCkpKTsKICNlbHNl
CiAgICAgcmV0dXJuIHZpZXctPm1hcEZyb21MYXlvdXRUb0NTU1VuaXRzKHZpZXctPnNjcm9sbFgo
KSk7CiAjZW5kaWYKQEAgLTEyMzYsNyArMTIyOCw3IEBAIGludCBET01XaW5kb3c6OnNjcm9sbFko
KSBjb25zdAogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRp
bmdTdHlsZXNoZWV0cygpOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxpbnQ+KHZpZXctPmFjdHVhbFZpc2libGVDb250ZW50UmVjdCgpLnkoKSAvIChtX2ZyYW1l
LT5wYWdlWm9vbUZhY3RvcigpICogbV9mcmFtZS0+ZnJhbWVTY2FsZUZhY3RvcigpKSk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4odmlldy0+YWN0dWFsU2Nyb2xsWSgpIC8gKG1fZnJhbWUt
PnBhZ2Vab29tRmFjdG9yKCkgKiBtX2ZyYW1lLT5mcmFtZVNjYWxlRmFjdG9yKCkpKTsKICNlbHNl
CiAgICAgcmV0dXJuIHZpZXctPm1hcEZyb21MYXlvdXRUb0NTU1VuaXRzKHZpZXctPnNjcm9sbFko
KSk7CiAjZW5kaWYKQEAgLTE0NTIsNyArMTQ0NCw3IEBAIHZvaWQgRE9NV2luZG93OjpzY3JvbGxC
eShpbnQgeCwgaW50IHkpIGNvbnN0CiAKICAgICBJbnRTaXplIHNjYWxlZE9mZnNldCh2aWV3LT5t
YXBGcm9tQ1NTVG9MYXlvdXRVbml0cyh4KSwgdmlldy0+bWFwRnJvbUNTU1RvTGF5b3V0VW5pdHMo
eSkpOwogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2aWV3LT5zZXRBY3R1YWxTY3JvbGxQb3NpdGlv
bih2aWV3LT5hY3R1YWxWaXNpYmxlQ29udGVudFJlY3QoKS5sb2NhdGlvbigpICsgc2NhbGVkT2Zm
c2V0KTsKKyAgICB2aWV3LT5zZXRBY3R1YWxTY3JvbGxQb3NpdGlvbih2aWV3LT5hY3R1YWxTY3Jv
bGxQb3NpdGlvbigpICsgc2NhbGVkT2Zmc2V0KTsKICNlbHNlCiAgICAgdmlldy0+c2Nyb2xsQnko
c2NhbGVkT2Zmc2V0KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGI4
YmVhY2NmZTYwYWNmNjcyOGQ4NzdlNDM3NTdjMDJlOTVjYTdkMGEuLmIyNWE5MjJiMThjOTM5YTBl
ODFkZmE0NjAzYTNjNmZlYTQzZWYyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAg
LTcxMyw3ICs3MTMsNyBAQCB2b2lkIEZyYW1lVmlldzo6Y2FsY3VsYXRlU2Nyb2xsYmFyTW9kZXNG
b3JMYXlvdXQoU2Nyb2xsYmFyTW9kZSYgaE1vZGUsIFNjcm9sbGJhcgogICAgICAgICBoTW9kZSA9
IFNjcm9sbGJhckF1dG87CiAgICAgICAgIC8vIFNlYW1sZXNzIGRvY3VtZW50cyBiZWdpbiB3aXRo
IGhlaWdodHMgb2YgMDsgd2Ugc3BlY2lhbCBjYXNlIHRoYXQgaGVyZQogICAgICAgICAvLyB0byBj
b3JyZWN0bHkgcmVuZGVyIGRvY3VtZW50cyB0aGF0IGRvbid0IG5lZWQgc2Nyb2xsYmFycy4KLSAg
ICAgICAgSW50U2l6ZSBmdWxsVmlzaWJsZVNpemUgPSB2aXNpYmxlQ29udGVudFJlY3QoSW5jbHVk
ZVNjcm9sbGJhcnMpLnNpemUoKTsKKyAgICAgICAgSW50U2l6ZSBmdWxsVmlzaWJsZVNpemUgPSB2
aXNpYmxlQ29udGVudFJlY3RJbmNsdWRpbmdTY3JvbGxiYXJzKExlZ2FjeUlPU0RvY3VtZW50Vmlz
aWJsZVJlY3QpLnNpemUoKTsKICAgICAgICAgYm9vbCBpc1NlYW1sZXNzRG9jdW1lbnQgPSBmcmFt
ZSgpLmRvY3VtZW50KCkgJiYgZnJhbWUoKS5kb2N1bWVudCgpLT5zaG91bGREaXNwbGF5U2VhbWxl
c3NseVdpdGhQYXJlbnQoKTsKICAgICAgICAgdk1vZGUgPSAoaXNTZWFtbGVzc0RvY3VtZW50ICYm
ICFmdWxsVmlzaWJsZVNpemUuaGVpZ2h0KCkpID8gU2Nyb2xsYmFyQWx3YXlzT2ZmIDogU2Nyb2xs
YmFyQXV0bzsKICAgICB9IGVsc2UgewpAQCAtMTI2NCwxMSArMTI2NCw3IEBAIHZvaWQgRnJhbWVW
aWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUpCiAgICAgICAgICAgICAgICAgICAgIGlmICh1
c2VGaXhlZExheW91dCgpICYmICFmaXhlZExheW91dFNpemUoKS5pc0VtcHR5KCkgJiYgZGVsZWdh
dGVzU2Nyb2xsaW5nKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2xhc3RWaWV3cG9ydFNp
emUgPSBmaXhlZExheW91dFNpemUoKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQotI2lmIFBM
QVRGT1JNKElPUykKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fbGFzdFZpZXdwb3J0U2l6ZSA9
IGFjdHVhbFZpc2libGVDb250ZW50UmVjdCgpLnNpemUoKTsKLSNlbHNlCi0gICAgICAgICAgICAg
ICAgICAgICAgICBtX2xhc3RWaWV3cG9ydFNpemUgPSB2aXNpYmxlQ29udGVudFJlY3QoSW5jbHVk
ZVNjcm9sbGJhcnMpLnNpemUoKTsKLSNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgICAgbV9s
YXN0Vmlld3BvcnRTaXplID0gdmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFycygp
LnNpemUoKTsKIAogICAgICAgICAgICAgICAgICAgICBtX2xhc3Rab29tRmFjdG9yID0gcm9vdC0+
c3R5bGUoKS56b29tKCk7CiAKQEAgLTE3NzgsNyArMTc3NCw4IEBAIHZvaWQgRnJhbWVWaWV3Ojpz
Y3JvbGxDb250ZW50c1Nsb3dQYXRoKGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QpCiB7CiAjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGlmIChjb250ZW50c0luQ29tcG9zaXRl
ZExheWVyKCkpIHsKLSAgICAgICAgSW50UmVjdCB1cGRhdGVSZWN0ID0gdmlzaWJsZUNvbnRlbnRS
ZWN0KCk7CisgICAgICAgIC8vIEZJWE1FOiByZXNwZWN0IHBhaW50c0VudGlyZUNvbnRlbnRzKCk/
CisgICAgICAgIEludFJlY3QgdXBkYXRlUmVjdCA9IHZpc2libGVDb250ZW50UmVjdChMZWdhY3lJ
T1NEb2N1bWVudFZpc2libGVSZWN0KTsKIAogICAgICAgICAvLyBNYWtlIHN1cmUgdG8gImFwcGx5
IiB0aGUgc2NhbGUgZmFjdG9yIGhlcmUgc2luY2Ugd2UncmUgY29udmVydGluZyBmcm9tIGZyYW1l
IHZpZXcKICAgICAgICAgLy8gY29vcmRpbmF0ZXMgdG8gbGF5ZXIgYmFja2luZyBjb29yZGluYXRl
cy4KQEAgLTIxNjYsNyArMjE2Myw3IEBAIHZvaWQgRnJhbWVWaWV3OjpyZXBhaW50Q29udGVudFJl
Y3RhbmdsZShjb25zdCBJbnRSZWN0JiByLCBib29sIGltbWVkaWF0ZSkKICAgICBpZiAoKG1fZGVm
ZXJyaW5nUmVwYWludHMgfHwgbV9kZWZlcnJlZFJlcGFpbnRUaW1lci5pc0FjdGl2ZSgpIHx8IGRl
bGF5KSAmJiAhaW1tZWRpYXRlKSB7CiAgICAgICAgIEludFJlY3QgcGFpbnRSZWN0ID0gcjsKICAg
ICAgICAgaWYgKGNsaXBzUmVwYWludHMoKSAmJiAhcGFpbnRzRW50aXJlQ29udGVudHMoKSkKLSAg
ICAgICAgICAgIHBhaW50UmVjdC5pbnRlcnNlY3QodmlzaWJsZUNvbnRlbnRSZWN0KCkpOworICAg
ICAgICAgICAgcGFpbnRSZWN0LmludGVyc2VjdCh2aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9T
RG9jdW1lbnRWaXNpYmxlUmVjdCkpOwogICAgICAgICBpZiAocGFpbnRSZWN0LmlzRW1wdHkoKSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKG1fcmVwYWludENvdW50ID09IGNSZXBh
aW50UmVjdFVuaW9uVGhyZXNob2xkKSB7CkBAIC0yOTM4LDExICsyOTM1LDcgQEAgdm9pZCBGcmFt
ZVZpZXc6OnNlbmRSZXNpemVFdmVudElmTmVlZGVkKCkKICAgICBpZiAodXNlRml4ZWRMYXlvdXQo
KSAmJiAhZml4ZWRMYXlvdXRTaXplKCkuaXNFbXB0eSgpICYmIGRlbGVnYXRlc1Njcm9sbGluZygp
KQogICAgICAgICBjdXJyZW50U2l6ZSA9IGZpeGVkTGF5b3V0U2l6ZSgpOwogICAgIGVsc2UKLSNp
ZiBQTEFURk9STShJT1MpCi0gICAgICAgIGN1cnJlbnRTaXplID0gYWN0dWFsVmlzaWJsZUNvbnRl
bnRSZWN0KCkuc2l6ZSgpOwotI2Vsc2UKLSAgICAgICAgY3VycmVudFNpemUgPSB2aXNpYmxlQ29u
dGVudFJlY3QoSW5jbHVkZVNjcm9sbGJhcnMpLnNpemUoKTsKLSNlbmRpZgorICAgICAgICBjdXJy
ZW50U2l6ZSA9IHZpc2libGVDb250ZW50UmVjdEluY2x1ZGluZ1Njcm9sbGJhcnMoKS5zaXplKCk7
CiAKICAgICBmbG9hdCBjdXJyZW50Wm9vbUZhY3RvciA9IHJlbmRlclZpZXctPnN0eWxlKCkuem9v
bSgpOwogICAgIGJvb2wgc2hvdWxkU2VuZFJlc2l6ZUV2ZW50ID0gIW1fZmlyc3RMYXlvdXQgJiYg
KGN1cnJlbnRTaXplICE9IG1fbGFzdFZpZXdwb3J0U2l6ZSB8fCBjdXJyZW50Wm9vbUZhY3RvciAh
PSBtX2xhc3Rab29tRmFjdG9yKTsKQEAgLTMxNjUsNyArMzE1OCwxMSBAQCBJbnRSZWN0IEZyYW1l
Vmlldzo6d2luZG93Q2xpcFJlY3QoYm9vbCBjbGlwVG9Db250ZW50cykgY29uc3QKICAgICAgICAg
cmV0dXJuIEludFJlY3QoSW50UG9pbnQoKSwgdG90YWxDb250ZW50c1NpemUoKSk7CiAKICAgICAv
LyBTZXQgb3VyIGNsaXAgcmVjdCB0byBiZSBvdXIgY29udGVudHMuCi0gICAgSW50UmVjdCBjbGlw
UmVjdCA9IGNvbnRlbnRzVG9XaW5kb3codmlzaWJsZUNvbnRlbnRSZWN0KGNsaXBUb0NvbnRlbnRz
ID8gRXhjbHVkZVNjcm9sbGJhcnMgOiBJbmNsdWRlU2Nyb2xsYmFycykpOworICAgIEludFJlY3Qg
Y2xpcFJlY3Q7CisgICAgaWYgKGNsaXBUb0NvbnRlbnRzKQorICAgICAgICBjbGlwUmVjdCA9IGNv
bnRlbnRzVG9XaW5kb3codmlzaWJsZUNvbnRlbnRSZWN0KExlZ2FjeUlPU0RvY3VtZW50VmlzaWJs
ZVJlY3QpKTsKKyAgICBlbHNlCisgICAgICAgIGNsaXBSZWN0ID0gY29udGVudHNUb1dpbmRvdyh2
aXNpYmxlQ29udGVudFJlY3RJbmNsdWRpbmdTY3JvbGxiYXJzKExlZ2FjeUlPU0RvY3VtZW50Vmlz
aWJsZVJlY3QpKTsKICAgICBpZiAoIWZyYW1lKCkub3duZXJFbGVtZW50KCkpCiAgICAgICAgIHJl
dHVybiBjbGlwUmVjdDsKIApAQCAtMzI3OSw3ICszMjc2LDcgQEAgYm9vbCBGcmFtZVZpZXc6Omlz
U2Nyb2xsYWJsZSgpCiAKICAgICAvLyBDb3ZlcnMgIzEKICAgICBJbnRTaXplIHRvdGFsQ29udGVu
dHNTaXplID0gdGhpcy0+dG90YWxDb250ZW50c1NpemUoKTsKLSAgICBJbnRTaXplIHZpc2libGVD
b250ZW50U2l6ZSA9IHZpc2libGVDb250ZW50UmVjdCgpLnNpemUoKTsKKyAgICBJbnRTaXplIHZp
c2libGVDb250ZW50U2l6ZSA9IHZpc2libGVDb250ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVudFZp
c2libGVSZWN0KS5zaXplKCk7CiAgICAgaWYgKCh0b3RhbENvbnRlbnRzU2l6ZS5oZWlnaHQoKSA8
PSB2aXNpYmxlQ29udGVudFNpemUuaGVpZ2h0KCkgJiYgdG90YWxDb250ZW50c1NpemUud2lkdGgo
KSA8PSB2aXNpYmxlQ29udGVudFNpemUud2lkdGgoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IApAQCAtMzU4Miw5ICszNTc5LDEwIEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRyb2xUaW50
cygpCiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIGNvbnN0IG5vQ29udGV4dCA9IDA7CiAg
ICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQobm9Db250ZXh0KTsKICAgICBjb250ZXh0LnNldFVw
ZGF0aW5nQ29udHJvbFRpbnRzKHRydWUpOwotICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKQotICAg
ICAgICBwYWludENvbnRlbnRzKCZjb250ZXh0LCB2aXNpYmxlQ29udGVudFJlY3QoKSk7Ci0gICAg
ZWxzZQorICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBjb25z
dWx0IHBhaW50c0VudGlyZUNvbnRlbnRzKCkuCisgICAgICAgIHBhaW50Q29udGVudHMoJmNvbnRl
eHQsIHZpc2libGVDb250ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KSk7Cisg
ICAgfSBlbHNlCiAgICAgICAgIHBhaW50KCZjb250ZXh0LCBmcmFtZVJlY3QoKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKaW5kZXggZGEzN2M0YjEyMGY0
M2VkMTNlMTViODM3MjRlYjI5ZTA1ZTgwYjY2ZS4uNTBjYjNmMzY3OTVjMDg4NjFlNzg2ZDMxNzVi
MjA2MmU5MDViMDQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2
aWdhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5j
cHAKQEAgLTQ4NSw3ICs0ODUsNyBAQCBib29sIGNhblNjcm9sbEluRGlyZWN0aW9uKGNvbnN0IEZy
YW1lKiBmcmFtZSwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgTGF5b3V0U2l6ZSBzaXplID0gZnJhbWUtPnZpZXcoKS0+dG90YWxDb250ZW50c1Np
emUoKTsKICAgICBMYXlvdXRTaXplIG9mZnNldCA9IGZyYW1lLT52aWV3KCktPnNjcm9sbE9mZnNl
dCgpOwotICAgIExheW91dFJlY3QgcmVjdCA9IGZyYW1lLT52aWV3KCktPnZpc2libGVDb250ZW50
UmVjdChTY3JvbGxhYmxlQXJlYTo6SW5jbHVkZVNjcm9sbGJhcnMpOworICAgIExheW91dFJlY3Qg
cmVjdCA9IGZyYW1lLT52aWV3KCktPnZpc2libGVDb250ZW50UmVjdEluY2x1ZGluZ1Njcm9sbGJh
cnMoKTsKIAogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CiAgICAgY2FzZSBGb2N1c0RpcmVjdGlv
bkxlZnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmluZGV4IGI4MWQwMWNh
ZTA0NWE1OTliOWZhZWU2ODAwMmI3MWI4MDZiY2YyYjQuLjdkNjkyY2EzZGRjMjliYmJmYzVkODEy
MzlmNWU2OTU3NmNmNzIyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3Bw
CkBAIC0yNTYsMTMgKzI1NiwyNCBAQCBJbnRTaXplIFNjcm9sbFZpZXc6OnVuc2NhbGVkVmlzaWJs
ZUNvbnRlbnRTaXplKFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYgogICAgICAgICAg
ICAgaG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodCA9ICFob3Jpem9udGFsQmFyLT5pc092ZXJsYXlT
Y3JvbGxiYXIoKSA/IGhvcml6b250YWxCYXItPmhlaWdodCgpIDogMDsKICAgICB9CiAKLSAgICBy
ZXR1cm4gSW50U2l6ZShzdGQ6Om1heCgwLCB3aWR0aCgpIC0gdmVydGljYWxTY3JvbGxiYXJXaWR0
aCksCi0gICAgICAgICAgICAgICAgICAgc3RkOjptYXgoMCwgaGVpZ2h0KCkgLSBob3Jpem9udGFs
U2Nyb2xsYmFySGVpZ2h0KSk7CisgICAgcmV0dXJuIEludFNpemUod2lkdGgoKSAtIHZlcnRpY2Fs
U2Nyb2xsYmFyV2lkdGgsIGhlaWdodCgpIC0gaG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodCkuZXhw
YW5kZWRUbyhJbnRTaXplKCkpOwogfQogCiAjaWYgIVBMQVRGT1JNKEdUSykKLUludFJlY3QgU2Ny
b2xsVmlldzo6dmlzaWJsZUNvbnRlbnRSZWN0KFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Ny
b2xsYmFycyBzY29sbGJhckluY2x1c2lvbikgY29uc3QKK0ludFJlY3QgU2Nyb2xsVmlldzo6dmlz
aWJsZUNvbnRlbnRSZWN0SW50ZXJuYWwoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxi
YXJzIHNjb2xsYmFySW5jbHVzaW9uLCBWaXNpYmxlQ29udGVudFJlY3RCZWhhdmlvciB2aXNpYmxl
Q29udGVudFJlY3RCZWhhdmlvcikgY29uc3QKIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYg
KHZpc2libGVDb250ZW50UmVjdEJlaGF2aW9yID09IExlZ2FjeUlPU0RvY3VtZW50Vmlld1JlY3Qp
IHsKKyAgICAgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpCisgICAgICAgICAgICByZXR1cm4gcGxh
dGZvcm1WaXNpYmxlQ29udGVudFJlY3QodHJ1ZSAvKiBpbmNsdWRlIHNjcm9sbGJhcnMgKi8pOwor
ICAgIH0KKyAgICAKKyAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKKyAgICAgICAgcmV0dXJuIGFj
dHVhbFZpc2libGVDb250ZW50UmVjdCgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0odmlzaWJs
ZUNvbnRlbnRSZWN0QmVoYXZpb3IpOworI2VuZGlmCisKICAgICBpZiAocGxhdGZvcm1XaWRnZXQo
KSkKICAgICAgICAgcmV0dXJuIHBsYXRmb3JtVmlzaWJsZUNvbnRlbnRSZWN0KHNjb2xsYmFySW5j
bHVzaW9uID09IEluY2x1ZGVTY3JvbGxiYXJzKTsKIApAQCAtNTQ4LDcgKzU1OSw3IEBAIHZvaWQg
U2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25zdCBJbnRTaXplJiBkZXNpcmVkT2Zmc2V0
KQogICAgICAgICBib29sIHNlbmRDb250ZW50UmVzaXplZE5vdGlmaWNhdGlvbiA9IGZhbHNlOwog
ICAgICAgICAKICAgICAgICAgSW50U2l6ZSBkb2NTaXplID0gdG90YWxDb250ZW50c1NpemUoKTsK
LSAgICAgICAgSW50U2l6ZSBmdWxsVmlzaWJsZVNpemUgPSB2aXNpYmxlQ29udGVudFJlY3QoSW5j
bHVkZVNjcm9sbGJhcnMpLnNpemUoKTsKKyAgICAgICAgSW50U2l6ZSBmdWxsVmlzaWJsZVNpemUg
PSB2aXNpYmxlQ29udGVudFJlY3RJbmNsdWRpbmdTY3JvbGxiYXJzKCkuc2l6ZSgpOwogCiAgICAg
ICAgIGlmIChoU2Nyb2xsID09IFNjcm9sbGJhckF1dG8pCiAgICAgICAgICAgICBuZXdIYXNIb3Jp
em9udGFsU2Nyb2xsYmFyID0gZG9jU2l6ZS53aWR0aCgpID4gdmlzaWJsZVdpZHRoKCk7CkBAIC0x
MTYyLDcgKzExNzMsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBpZiAoIW1fc2Nyb2xsYmFyc1N1cHBy
ZXNzZWQgJiYgKG1faG9yaXpvbnRhbFNjcm9sbGJhciB8fCBtX3ZlcnRpY2FsU2Nyb2xsYmFyKSkg
ewogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQp
OwogICAgICAgICBJbnRSZWN0IHNjcm9sbFZpZXdEaXJ0eVJlY3QgPSByZWN0OwotICAgICAgICBJ
bnRSZWN0IHZpc2libGVBcmVhV2l0aFNjcm9sbGJhcnMobG9jYXRpb24oKSwgdmlzaWJsZUNvbnRl
bnRSZWN0KEluY2x1ZGVTY3JvbGxiYXJzKS5zaXplKCkpOworICAgICAgICBJbnRSZWN0IHZpc2li
bGVBcmVhV2l0aFNjcm9sbGJhcnMobG9jYXRpb24oKSwgdmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVk
aW5nU2Nyb2xsYmFycygpLnNpemUoKSk7CiAgICAgICAgIHNjcm9sbFZpZXdEaXJ0eVJlY3QuaW50
ZXJzZWN0KHZpc2libGVBcmVhV2l0aFNjcm9sbGJhcnMpOwogICAgICAgICBjb250ZXh0LT50cmFu
c2xhdGUoeCgpLCB5KCkpOwogICAgICAgICBzY3JvbGxWaWV3RGlydHlSZWN0Lm1vdmVCeSgtbG9j
YXRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKaW5kZXggMTQxMjhiMzhi
YTc2MWIwOWQxOWQxYTJlZmNhNjhmOGY2YTAxZTk2OC4uNTAyZWU3YTczYjhiNjFmMzQ1Y2MzODNl
MGZkNDY4YjM2OGUxZGNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaApAQCAt
MTU5LDggKzE1OSw3IEBAIHB1YmxpYzoKICAgICAvLyBJbiB0aGUgc2l0dWF0aW9uIHRoZSBjbGll
bnQgaXMgcmVzcG9uc2libGUgZm9yIHRoZSBzY3JvbGxpbmcgKGllLiB3aXRoIGEgdGlsZWQgYmFj
a2luZyBzdG9yZSkgaXQgaXMgcG9zc2libGUgdG8gdXNlCiAgICAgLy8gdGhlIHNldEZpeGVkVmlz
aWJsZUNvbnRlbnRSZWN0IGluc3RlYWQgZm9yIHRoZSBtYWluZnJhbWUsIHRob3VnaCB0aGlzIG11
c3QgYmUgdXBkYXRlZCBtYW51YWxseSwgZS5nIGp1c3QgYmVmb3JlIHJlc3VtaW5nIHRoZSBwYWdl
CiAgICAgLy8gd2hpY2ggdXN1YWxseSB3aWxsIGhhcHBlbiB3aGVuIHBhbm5pbmcsIHBpbmNoaW5n
IGFuZCByb3RhdGlvbiBlbmRzLCBvciB3aGVuIHNjYWxlIG9yIHBvc2l0aW9uIGFyZSBjaGFuZ2Vk
IG1hbnVhbGx5LgotICAgIHZpcnR1YWwgSW50UmVjdCB2aXNpYmxlQ29udGVudFJlY3QoVmlzaWJs
ZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzID0gRXhjbHVkZVNjcm9sbGJhcnMpIGNvbnN0
IG92ZXJyaWRlOwotICAgIEludFNpemUgdmlzaWJsZVNpemUoKSBjb25zdCB7IHJldHVybiB2aXNp
YmxlQ29udGVudFJlY3QoKS5zaXplKCk7IH0KKyAgICB2aXJ0dWFsIEludFNpemUgdmlzaWJsZVNp
emUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9T
RG9jdW1lbnRWaXNpYmxlUmVjdCkuc2l6ZSgpOyB9CiAKICNpZiBVU0UoVElMRURfQkFDS0lOR19T
VE9SRSkKICAgICB2aXJ0dWFsIHZvaWQgc2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QoY29uc3Qg
SW50UmVjdCYgdmlzaWJsZUNvbnRlbnRSZWN0KSB7IG1fZml4ZWRWaXNpYmxlQ29udGVudFJlY3Qg
PSB2aXNpYmxlQ29udGVudFJlY3Q7IH0KQEAgLTE3Niw4ICsxNzUsNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRBY3R1YWxTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYpOwogICAgIFRpbGVD
YWNoZSogdGlsZUNhY2hlKCk7CiAjZW5kaWYKLSAgICB2aXJ0dWFsIGludCB2aXNpYmxlV2lkdGgo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoKS53aWR0aCgpOyB9
Ci0gICAgdmlydHVhbCBpbnQgdmlzaWJsZUhlaWdodCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHZpc2libGVDb250ZW50UmVjdCgpLmhlaWdodCgpOyB9CiAKICAgICAvLyB2aXNpYmxlQ29udGVu
dFJlY3QoKS5zaXplKCkgaXMgY29tcHV0ZWQgZnJvbSB1bnNjYWxlZFZpc2libGVDb250ZW50U2l6
ZSgpIGRpdmlkZWQgYnkgdGhlIHZhbHVlIG9mIHZpc2libGVDb250ZW50U2NhbGVGYWN0b3IuCiAg
ICAgLy8gdmlzaWJsZUNvbnRlbnRTY2FsZUZhY3RvciBpcyB1c3VhbGx5IDEsIGV4Y2VwdCB3aGVu
IHRoZSBzZXR0aW5nIGRlbGVnYXRlc1BhZ2VTY2FsaW5nIGlzIHRydWUgYW5kIHRoZQpAQCAtMjA0
LDggKzIwMSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNTaXplKGNv
bnN0IEludFNpemUmKTsKIAogICAgIC8vIEZ1bmN0aW9ucyBmb3IgcXVlcnlpbmcgdGhlIGN1cnJl
bnQgc2Nyb2xsZWQgcG9zaXRpb24gKGJvdGggYXMgYSBwb2ludCwgYSBzaXplLCBvciBhcyBpbmRp
dmlkdWFsIFggYW5kIFkgdmFsdWVzKS4KLSAgICB2aXJ0dWFsIEludFBvaW50IHNjcm9sbFBvc2l0
aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkubG9jYXRp
b24oKTsgfQotICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gdG9JbnRT
aXplKHZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9uKCkpOyB9IC8vIEdldHMgdGhlIHNjcm9s
bGVkIHBvc2l0aW9uIGFzIGFuIEludFNpemUuIENvbnZlbmllbnQgZm9yIGFkZGluZyB0byBvdGhl
ciBzaXplcy4KKyAgICB2aXJ0dWFsIEludFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KExlZ2FjeUlPU0RvY3VtZW50VmlzaWJs
ZVJlY3QpLmxvY2F0aW9uKCk7IH0KKyAgICBJbnRTaXplIHNjcm9sbE9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIHRvSW50U2l6ZSh2aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9TRG9jdW1lbnRWaXNp
YmxlUmVjdCkubG9jYXRpb24oKSk7IH0gLy8gR2V0cyB0aGUgc2Nyb2xsZWQgcG9zaXRpb24gYXMg
YW4gSW50U2l6ZS4gQ29udmVuaWVudCBmb3IgYWRkaW5nIHRvIG90aGVyIHNpemVzLgogICAgIHZp
cnR1YWwgSW50UG9pbnQgbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7IC8v
IFRoZSBtYXhpbXVtIHBvc2l0aW9uIHdlIGNhbiBiZSBzY3JvbGxlZCB0by4KICAgICB2aXJ0dWFs
IEludFBvaW50IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOyAvLyBUaGUg
bWluaW11bSBwb3NpdGlvbiB3ZSBjYW4gYmUgc2Nyb2xsZWQgdG8uCiAgICAgLy8gQWRqdXN0IHRo
ZSBwYXNzZWQgaW4gc2Nyb2xsIHBvc2l0aW9uIHRvIGtlZXAgaXQgYmV0d2VlbiB0aGUgbWluaW11
bSBhbmQgbWF4aW11bSBwb3NpdGlvbnMuCkBAIC0yMTQsOCArMjExLDEwIEBAIHB1YmxpYzoKICAg
ICBpbnQgc2Nyb2xsWSgpIGNvbnN0IHsgcmV0dXJuIHNjcm9sbFBvc2l0aW9uKCkueSgpOyB9CiAK
ICNpZiBQTEFURk9STShJT1MpCi0gICAgaW50IGFjdHVhbFNjcm9sbFgoKSBjb25zdCB7IHJldHVy
biBhY3R1YWxWaXNpYmxlQ29udGVudFJlY3QoKS54KCk7IH0KLSAgICBpbnQgYWN0dWFsU2Nyb2xs
WSgpIGNvbnN0IHsgcmV0dXJuIGFjdHVhbFZpc2libGVDb250ZW50UmVjdCgpLnkoKTsgfQorICAg
IGludCBhY3R1YWxTY3JvbGxYKCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCku
eCgpOyB9CisgICAgaW50IGFjdHVhbFNjcm9sbFkoKSBjb25zdCB7IHJldHVybiB2aXNpYmxlQ29u
dGVudFJlY3QoKS55KCk7IH0KKyAgICAvLyBGSVhNRTogbWF5YmUgZml4IHNjcm9sbFBvc2l0aW9u
KCkgb24gaU9TIHRvIHJldHVybiB0aGUgYWN0dWFsIHNjcm9sbCBwb3NpdGlvbi4KKyAgICBJbnRQ
b2ludCBhY3R1YWxTY3JvbGxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVDb250ZW50
UmVjdCgpLmxvY2F0aW9uKCk7IH0KICNlbmRpZgogCiAgICAgLy8gc2Nyb2xsT2Zmc2V0KCkgYW5j
aG9ycyBpdHMgKDAsMCkgcG9pbnQgYXQgdGhlIHRvcCBlbmQgb2YgdGhlIGhlYWRlciBpZiB0aGlz
IFNjcm9sbGFibGVBcmVhCkBAIC0zNzUsNiArMzc0LDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQg
dXBkYXRlU2Nyb2xsYmFycyhjb25zdCBJbnRTaXplJiBkZXNpcmVkT2Zmc2V0KTsKIAogcHJpdmF0
ZToKKyAgICB2aXJ0dWFsIEludFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0SW50ZXJuYWwoVmlzaWJs
ZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzLCBWaXNpYmxlQ29udGVudFJlY3RCZWhhdmlv
cikgY29uc3Qgb3ZlcnJpZGU7CisKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBtX2hvcml6b250YWxT
Y3JvbGxiYXI7CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV92ZXJ0aWNhbFNjcm9sbGJhcjsKICAg
ICBTY3JvbGxiYXJNb2RlIG1faG9yaXpvbnRhbFNjcm9sbGJhck1vZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggZGY3NTMxMjNiMzAwNmJkZGQzZjVl
OWQxNTBmNmU5NGYwNWQ3YzdiMS4uODhkMDI5MzhmNjUxZjNjZGE4MDM5OTU3MTZhMjAzMjI1YzI0
ZTE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAt
NDQ1LDcgKzQ0NSwxNyBAQCBJbnRTaXplIFNjcm9sbGFibGVBcmVhOjp0b3RhbENvbnRlbnRzU2l6
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRvdGFsQ29udGVudHNTaXplOwogfQogCi1JbnRSZWN0IFNj
cm9sbGFibGVBcmVhOjp2aXNpYmxlQ29udGVudFJlY3QoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVk
ZXNTY3JvbGxiYXJzIHNjcm9sbGJhckluY2x1c2lvbikgY29uc3QKK0ludFJlY3QgU2Nyb2xsYWJs
ZUFyZWE6OnZpc2libGVDb250ZW50UmVjdChWaXNpYmxlQ29udGVudFJlY3RCZWhhdmlvciB2aXNp
YmxlQ29udGVudFJlY3RCZWhhdmlvcikgY29uc3QKK3sKKyAgICByZXR1cm4gdmlzaWJsZUNvbnRl
bnRSZWN0SW50ZXJuYWwoRXhjbHVkZVNjcm9sbGJhcnMsIHZpc2libGVDb250ZW50UmVjdEJlaGF2
aW9yKTsKK30KKworSW50UmVjdCBTY3JvbGxhYmxlQXJlYTo6dmlzaWJsZUNvbnRlbnRSZWN0SW5j
bHVkaW5nU2Nyb2xsYmFycyhWaXNpYmxlQ29udGVudFJlY3RCZWhhdmlvciB2aXNpYmxlQ29udGVu
dFJlY3RCZWhhdmlvcikgY29uc3QKK3sKKyAgICByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0SW50
ZXJuYWwoSW5jbHVkZVNjcm9sbGJhcnMsIHZpc2libGVDb250ZW50UmVjdEJlaGF2aW9yKTsKK30K
KworSW50UmVjdCBTY3JvbGxhYmxlQXJlYTo6dmlzaWJsZUNvbnRlbnRSZWN0SW50ZXJuYWwoVmlz
aWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzIHNjcm9sbGJhckluY2x1c2lvbiwgVmlz
aWJsZUNvbnRlbnRSZWN0QmVoYXZpb3IpIGNvbnN0CiB7CiAgICAgaW50IHZlcnRpY2FsU2Nyb2xs
YmFyV2lkdGggPSAwOwogICAgIGludCBob3Jpem9udGFsU2Nyb2xsYmFySGVpZ2h0ID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCmluZGV4IGFhOTEyZWY0NDM0OThm
NGEyZTdiYTFhMzE2OWRlMTZkYTM3YWVlZDYuLmI0MjZjYzIyMDE5ZGZlZWE5ZGViZWIzMmFlMzVh
YTAwZWJlODIyMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFi
bGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApA
QCAtMTUzLDkgKzE1MywyMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJbnRQb2ludCBtYXhpbXVt
U2Nyb2xsUG9zaXRpb24oKSBjb25zdDsKIAogICAgIGVudW0gVmlzaWJsZUNvbnRlbnRSZWN0SW5j
bHVkZXNTY3JvbGxiYXJzIHsgRXhjbHVkZVNjcm9sbGJhcnMsIEluY2x1ZGVTY3JvbGxiYXJzIH07
Ci0gICAgdmlydHVhbCBJbnRSZWN0IHZpc2libGVDb250ZW50UmVjdChWaXNpYmxlQ29udGVudFJl
Y3RJbmNsdWRlc1Njcm9sbGJhcnMgPSBFeGNsdWRlU2Nyb2xsYmFycykgY29uc3Q7Ci0gICAgdmly
dHVhbCBpbnQgdmlzaWJsZUhlaWdodCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGludCB2aXNp
YmxlV2lkdGgoKSBjb25zdCA9IDA7CisgICAgZW51bSBWaXNpYmxlQ29udGVudFJlY3RCZWhhdmlv
ciB7CisgICAgICAgIENvbnRlbnRzVmlzaWJsZVJlY3QsCisjaWYgUExBVEZPUk0oSU9TKQorICAg
ICAgICBMZWdhY3lJT1NEb2N1bWVudFZpZXdSZWN0LAorICAgICAgICBMZWdhY3lJT1NEb2N1bWVu
dFZpc2libGVSZWN0ID0gTGVnYWN5SU9TRG9jdW1lbnRWaWV3UmVjdAorI2Vsc2UKKyAgICAgICAg
TGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCA9IENvbnRlbnRzVmlzaWJsZVJlY3QKKyNlbmRp
ZgorICAgIH07CisKKyAgICBJbnRSZWN0IHZpc2libGVDb250ZW50UmVjdChWaXNpYmxlQ29udGVu
dFJlY3RCZWhhdmlvciA9IENvbnRlbnRzVmlzaWJsZVJlY3QpIGNvbnN0OworICAgIEludFJlY3Qg
dmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFycyhWaXNpYmxlQ29udGVudFJlY3RC
ZWhhdmlvciA9IENvbnRlbnRzVmlzaWJsZVJlY3QpIGNvbnN0OworCisgICAgaW50IHZpc2libGVX
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVTaXplKCkud2lkdGgoKTsgfQorICAgIGludCB2
aXNpYmxlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZVNpemUoKS5oZWlnaHQoKTsgfQor
ICAgIHZpcnR1YWwgSW50U2l6ZSB2aXNpYmxlU2l6ZSgpIGNvbnN0ID0gMDsKKwogICAgIHZpcnR1
YWwgSW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBJbnRTaXpl
IG92ZXJoYW5nQW1vdW50KCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZSgpOyB9CiAgICAgdmlydHVh
bCBJbnRQb2ludCBsYXN0S25vd25Nb3VzZVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gSW50UG9p
bnQoKTsgfQpAQCAtMjQxLDYgKzI1NSw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIGhhc0xheWVy
Rm9yU2Nyb2xsQ29ybmVyKCkgY29uc3Q7CiAKIHByaXZhdGU6CisgICAgdmlydHVhbCBJbnRSZWN0
IHZpc2libGVDb250ZW50UmVjdEludGVybmFsKFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Ny
b2xsYmFycywgVmlzaWJsZUNvbnRlbnRSZWN0QmVoYXZpb3IpIGNvbnN0OwogICAgIHZvaWQgc2Ny
b2xsUG9zaXRpb25DaGFuZ2VkKGNvbnN0IEludFBvaW50Jik7CiAgICAgCiAgICAgLy8gTk9URTog
T25seSBjYWxsZWQgZnJvbSB0aGUgU2Nyb2xsQW5pbWF0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKaW5kZXggZDFkM2Q0NWVhZGM1YWNmZjAwZDU1Y2QwMTUy
YWJjMzZjMDE5NDNiYy4uOTVhNDYzMmU1MzU4YmYzMDdmMjBiNzEzMGRkMWNlNzQ1NjExOTYwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaApAQCAtODcsMTQg
Kzg3LDEyIEBAIHB1YmxpYzoKIAogICAgIEludFNpemUgZXhwYW5kZWRUbyhjb25zdCBJbnRTaXpl
JiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBJbnRTaXplKG1fd2lkdGggPiBv
dGhlci5tX3dpZHRoID8gbV93aWR0aCA6IG90aGVyLm1fd2lkdGgsCi0gICAgICAgICAgICBtX2hl
aWdodCA+IG90aGVyLm1faGVpZ2h0ID8gbV9oZWlnaHQgOiBvdGhlci5tX2hlaWdodCk7CisgICAg
ICAgIHJldHVybiBJbnRTaXplKHN0ZDo6bWF4KG1fd2lkdGgsIG90aGVyLm1fd2lkdGgpLCBzdGQ6
Om1heChtX2hlaWdodCwgb3RoZXIubV9oZWlnaHQpKTsKICAgICB9CiAKICAgICBJbnRTaXplIHNo
cnVua1RvKGNvbnN0IEludFNpemUmIG90aGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJu
IEludFNpemUobV93aWR0aCA8IG90aGVyLm1fd2lkdGggPyBtX3dpZHRoIDogb3RoZXIubV93aWR0
aCwKLSAgICAgICAgICAgIG1faGVpZ2h0IDwgb3RoZXIubV9oZWlnaHQgPyBtX2hlaWdodCA6IG90
aGVyLm1faGVpZ2h0KTsKKyAgICAgICAgcmV0dXJuIEludFNpemUoc3RkOjptaW4obV93aWR0aCwg
b3RoZXIubV93aWR0aCksIHN0ZDo6bWluKG1faGVpZ2h0LCBvdGhlci5tX2hlaWdodCkpOwogICAg
IH0KIAogICAgIHZvaWQgY2xhbXBOZWdhdGl2ZVRvWmVybygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsVmlld0d0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvU2Nyb2xsVmlld0d0ay5jcHAKaW5kZXggMGIwNWE1N2I3ZGUyOTRiNjNjODZm
ZDUyZTc0OGYwMGY5MTIzMjA4OS4uNDY4OGNiMzIwNjhiMGQ4Mjc0NGNiNGVlNTAyMjg1NDY1NjZk
YWNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbFZpZXdH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxWaWV3R3RrLmNw
cApAQCAtNjMsNyArNjMsNyBAQCBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gU2Nyb2xsVmlldzo6Y3Jl
YXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aQogICAgIHJldHVybiBT
Y3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcih0aGlzLCBvcmllbnRhdGlvbiwgUmVndWxh
clNjcm9sbGJhcik7CiB9CiAKLUludFJlY3QgU2Nyb2xsVmlldzo6dmlzaWJsZUNvbnRlbnRSZWN0
KFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFycyBzY3JvbGxiYXJJbmNsdXNpb24p
IGNvbnN0CitJbnRSZWN0IFNjcm9sbFZpZXc6OnZpc2libGVDb250ZW50UmVjdChWaXNpYmxlQ29u
dGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnMgc2Nyb2xsYmFySW5jbHVzaW9uLCBWaXNpYmxlQ29u
dGVudFJlY3RCZWhhdmlvcikgY29uc3QKIHsKICAgICBib29sIGluY2x1ZGVTY3JvbGxiYXJzID0g
c2Nyb2xsYmFySW5jbHVzaW9uID09IEluY2x1ZGVTY3JvbGxiYXJzOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA5M2I4ZmJmN2IyN2UwOWRkZWI1MzUyMGIz
NWQ3Njc5MDM3NWY3YjEzLi5hYmMzMDQwMGI1NDE5ZDZmMGUyM2Y1NzljOThiN2YwYTg3M2Y3ZThk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTI0MzIsNyAr
MjQzMiw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUoY29uc3QgTGF5
b3V0UmVjdCYgcmVjdCwgY29uc3QgU2Nyb2xsQWxpZ25tCiAgICAgICAgICAgICAgICAgZnJhbWVF
bGVtZW50QmFzZSA9IHRvSFRNTEZyYW1lRWxlbWVudEJhc2Uob3duZXJFbGVtZW50KTsKIAogICAg
ICAgICAgICAgaWYgKGZyYW1lRWxlbWVudEFuZFZpZXdQZXJtaXRTY3JvbGwoZnJhbWVFbGVtZW50
QmFzZSwgJmZyYW1lVmlldykpIHsKLSAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IHZpZXdSZWN0
ID0gZnJhbWVWaWV3LnZpc2libGVDb250ZW50UmVjdCgpOworICAgICAgICAgICAgICAgIExheW91
dFJlY3Qgdmlld1JlY3QgPSBmcmFtZVZpZXcudmlzaWJsZUNvbnRlbnRSZWN0KExlZ2FjeUlPU0Rv
Y3VtZW50VmlzaWJsZVJlY3QpOwogICAgICAgICAgICAgICAgIExheW91dFJlY3QgZXhwb3NlUmVj
dCA9IGdldFJlY3RUb0V4cG9zZSh2aWV3UmVjdCwgdmlld1JlY3QsIHJlY3QsIGFsaWduWCwgYWxp
Z25ZKTsKIAogICAgICAgICAgICAgICAgIGludCB4T2Zmc2V0ID0gcm91bmRUb0ludChleHBvc2VS
ZWN0LngoKSk7CkBAIC0yNDU4LDYgKzI0NTgsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxS
ZWN0VG9WaXNpYmxlKGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFNjcm9sbEFsaWdubQog
ICAgICAgICAgICAgSW50U2l6ZSBzY3JvbGxPZmZzZXRSZWxhdGl2ZVRvRG9jdW1lbnQgPSBmcmFt
ZVZpZXcuc2Nyb2xsT2Zmc2V0UmVsYXRpdmVUb0RvY3VtZW50KCk7CiAgICAgICAgICAgICB2aXNp
YmxlUmVjdFJlbGF0aXZlVG9Eb2N1bWVudC5zZXRMb2NhdGlvbihJbnRQb2ludChzY3JvbGxPZmZz
ZXRSZWxhdGl2ZVRvRG9jdW1lbnQud2lkdGgoKSwgc2Nyb2xsT2Zmc2V0UmVsYXRpdmVUb0RvY3Vt
ZW50LmhlaWdodCgpKSk7CiAjZWxzZQorICAgICAgICAgICAgLy8gRklYTUU6IGlzIHRoaXMgZXF1
aXZhbGVudCB0byB0aGUgY29kZSBhYm92ZT8KICAgICAgICAgICAgIExheW91dFJlY3Qgdmlld1Jl
Y3QgPSBmcmFtZVZpZXcuYWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KCk7CiAgICAgICAgICAgICBM
YXlvdXRSZWN0IHZpc2libGVSZWN0UmVsYXRpdmVUb0RvY3VtZW50ID0gdmlld1JlY3Q7CiAjZW5k
aWYKQEAgLTI2ODMsMTAgKzI2ODQsMTAgQEAgSW50UG9pbnQgUmVuZGVyTGF5ZXI6Om1pbmltdW1T
Y3JvbGxQb3NpdGlvbigpIGNvbnN0CiBJbnRQb2ludCBSZW5kZXJMYXllcjo6bWF4aW11bVNjcm9s
bFBvc2l0aW9uKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogbV9zY3JvbGxTaXplIG1heSBub3Qg
YmUgdXAtdG8tZGF0ZSBpZiBtX3Njcm9sbERpbWVuc2lvbnNEaXJ0eSBpcyB0cnVlLgotICAgIHJl
dHVybiAtc2Nyb2xsT3JpZ2luKCkgKyByb3VuZGVkSW50U2l6ZShtX3Njcm9sbFNpemUpIC0gdmlz
aWJsZUNvbnRlbnRSZWN0KEluY2x1ZGVTY3JvbGxiYXJzKS5zaXplKCk7CisgICAgcmV0dXJuIC1z
Y3JvbGxPcmlnaW4oKSArIHJvdW5kZWRJbnRTaXplKG1fc2Nyb2xsU2l6ZSkgLSB2aXNpYmxlQ29u
dGVudFJlY3RJbmNsdWRpbmdTY3JvbGxiYXJzKENvbnRlbnRzVmlzaWJsZVJlY3QpLnNpemUoKTsK
IH0KIAotSW50UmVjdCBSZW5kZXJMYXllcjo6dmlzaWJsZUNvbnRlbnRSZWN0KFZpc2libGVDb250
ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFycyBzY3JvbGxiYXJJbmNsdXNpb24pIGNvbnN0CitJbnRS
ZWN0IFJlbmRlckxheWVyOjp2aXNpYmxlQ29udGVudFJlY3RJbnRlcm5hbChWaXNpYmxlQ29udGVu
dFJlY3RJbmNsdWRlc1Njcm9sbGJhcnMgc2Nyb2xsYmFySW5jbHVzaW9uLCBWaXNpYmxlQ29udGVu
dFJlY3RCZWhhdmlvcikgY29uc3QKIHsKICAgICBpbnQgdmVydGljYWxTY3JvbGxiYXJXaWR0aCA9
IDA7CiAgICAgaW50IGhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQgPSAwOwpAQCAtMjgyMiwxNiAr
MjgyMyw2IEBAIEludFNpemUgUmVuZGVyTGF5ZXI6OmNvbnRlbnRzU2l6ZSgpIGNvbnN0CiAgICAg
cmV0dXJuIEludFNpemUoc2Nyb2xsV2lkdGgoKSwgc2Nyb2xsSGVpZ2h0KCkpOwogfQogCi1pbnQg
UmVuZGVyTGF5ZXI6OnZpc2libGVIZWlnaHQoKSBjb25zdAotewotICAgIHJldHVybiBtX2xheWVy
U2l6ZS5oZWlnaHQoKTsKLX0KLQotaW50IFJlbmRlckxheWVyOjp2aXNpYmxlV2lkdGgoKSBjb25z
dAotewotICAgIHJldHVybiBtX2xheWVyU2l6ZS53aWR0aCgpOwotfQotCiBib29sIFJlbmRlckxh
eWVyOjpzaG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IHJlbmRlcmVyKCkudmlldygpLmZyYW1lVmlldygpLnNob3VsZFN1c3BlbmRTY3JvbGxBbmltYXRp
b25zKCk7CkBAIC00NjUzLDcgKzQ2NDQsNyBAQCBib29sIFJlbmRlckxheWVyOjpoaXRUZXN0KGNv
bnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mCiAKICAg
ICBMYXlvdXRSZWN0IGhpdFRlc3RBcmVhID0gaXNPdXRPZkZsb3dSZW5kZXJGbG93VGhyZWFkKCkg
PyB0b1JlbmRlckZsb3dUaHJlYWQoJnJlbmRlcmVyKCkpLT52aXN1YWxPdmVyZmxvd1JlY3QoKSA6
IHJlbmRlcmVyKCkudmlldygpLmRvY3VtZW50UmVjdCgpOwogICAgIGlmICghcmVxdWVzdC5pZ25v
cmVDbGlwcGluZygpKQotICAgICAgICBoaXRUZXN0QXJlYS5pbnRlcnNlY3QocmVuZGVyZXIoKS52
aWV3KCkuZnJhbWVWaWV3KCkudmlzaWJsZUNvbnRlbnRSZWN0KCkpOworICAgICAgICBoaXRUZXN0
QXJlYS5pbnRlcnNlY3QocmVuZGVyZXIoKS52aWV3KCkuZnJhbWVWaWV3KCkudmlzaWJsZUNvbnRl
bnRSZWN0KExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpKTsKIAogICAgIFJlbmRlckxheWVy
KiBpbnNpZGVMYXllciA9IGhpdFRlc3RMYXllcih0aGlzLCAwLCByZXF1ZXN0LCByZXN1bHQsIGhp
dFRlc3RBcmVhLCBoaXRUZXN0TG9jYXRpb24sIGZhbHNlKTsKICAgICBpZiAoIWluc2lkZUxheWVy
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IGU1OWQ0ZDUwZjE2
NjYzNTYxNmE1NjYyNjg1YWQ2NTYxMDEyNWU5NGMuLjM5MTkzNGNmZGVjMDIzOWQ0OTVjOGIzNjQ1
NWMwNTI5MWU5ZDgyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBA
IC0xMDYyLDkgKzEwNjIsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgSW50UG9pbnQgc2Nyb2xs
UG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEludFBvaW50IG1pbmltdW1T
Y3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgSW50UG9pbnQgbWF4
aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBJbnRSZWN0
IHZpc2libGVDb250ZW50UmVjdChWaXNpYmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnMp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGludCB2aXNpYmxlV2lkdGgoKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIEludFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0SW50ZXJuYWwoVmlzaWJsZUNv
bnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzLCBWaXNpYmxlQ29udGVudFJlY3RCZWhhdmlvcikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBJbnRTaXplIHZpc2libGVTaXplKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9sYXllclNpemU7IH0KICAgICB2aXJ0dWFsIEludFNpemUgY29u
dGVudHNTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBJbnRTaXplIG92ZXJoYW5n
QW1vdW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBJbnRQb2ludCBsYXN0S25vd25N
b3VzZVBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGE5NWExNzNlZWY1M2ZiZTNlNjk3MmY0
YjE1ZGU4NGI4NWE1NDVhMjAuLjQyNTJiM2MxZDhmNGU3MTMyMDQwMDFiM2NjZTRmOTRiNzk0ZGM0
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwCkBAIC00ODAsNyArNDgwLDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNv
bXBvc2l0ZWRCb3VuZHMoKQogICAgICAgICBMYXlvdXRSZWN0IGNsaXBwaW5nQm91bmRzOwogICAg
ICAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbiAm
JiByZW5kZXJlcigpLmNvbnRhaW5lcigpID09ICZ2aWV3KSB7CiAjaWYgUExBVEZPUk0oSU9TKQot
ICAgICAgICAgICAgY2xpcHBpbmdCb3VuZHMgPSB2aWV3LmZyYW1lVmlldygpLnZpc2libGVDb250
ZW50UmVjdCgpOworICAgICAgICAgICAgY2xpcHBpbmdCb3VuZHMgPSB2aWV3LmZyYW1lVmlldygp
LnZpc2libGVDb250ZW50UmVjdChTY3JvbGxhYmxlQXJlYTo6TGVnYWN5SU9TRG9jdW1lbnRWaXNp
YmxlUmVjdCk7CiAjZWxzZQogICAgICAgICAgICAgY2xpcHBpbmdCb3VuZHMgPSB2aWV3LmZyYW1l
VmlldygpLnZpZXdwb3J0Q29uc3RyYWluZWRWaXNpYmxlQ29udGVudFJlY3QoKTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IGFlOGM5MzYw
OTE2YzFjYmI3OWJmNzY5NmQ3NGEwZWZiODY2OTQ1NTQuLmUwYzg1ZWE0YzM2NDZiMzU1YTU3YTc4
ZTBlZTkxMTRiYmRmNjAzNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dEJveC5jcHAKQEAgLTc2NCwxNiArNzY0LDYgQEAgSW50U2l6ZSBSZW5kZXJMaXN0Qm94Ojpjb250
ZW50c1NpemUoKSBjb25zdAogICAgIHJldHVybiBJbnRTaXplKHNjcm9sbFdpZHRoKCksIHNjcm9s
bEhlaWdodCgpKTsKIH0KIAotaW50IFJlbmRlckxpc3RCb3g6OnZpc2libGVIZWlnaHQoKSBjb25z
dAotewotICAgIHJldHVybiBoZWlnaHQoKTsKLX0KLQotaW50IFJlbmRlckxpc3RCb3g6OnZpc2li
bGVXaWR0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHdpZHRoKCk7Ci19Ci0KIEludFBvaW50IFJl
bmRlckxpc3RCb3g6Omxhc3RLbm93bk1vdXNlUG9zaXRpb24oKSBjb25zdAogewogICAgIHJldHVy
biB2aWV3KCkuZnJhbWVWaWV3KCkubGFzdEtub3duTW91c2VQb3NpdGlvbigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKaW5kZXggNDM2Y2FjZTYwYTE0NmRmY2FlNDkw
ZDE2Mjk2ZTVlMGMyYWJkMzMwZS4uNjA2YmFiMGRmOTZhZGUyMTc0NDllNTRhMzUyY2JhYTIwZGQ4
NTE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3gu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCkBAIC0xMTgs
OCArMTE4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRGcm9tQ29u
dGFpbmluZ1ZpZXdUb1Njcm9sbGJhcihjb25zdCBTY3JvbGxiYXIqLCBjb25zdCBJbnRQb2ludCYp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgU2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJh
cigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdkJhci5nZXQoKTsgfQogICAgIHZpcnR1YWwg
SW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGludCB2
aXNpYmxlSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBpbnQgdmlzaWJsZVdp
ZHRoKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBJbnRTaXplIHZpc2libGVTaXplKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gSW50U2l6ZShoZWlnaHQoKSwgd2lkdGgoKSk7IH0KICAg
ICB2aXJ0dWFsIEludFBvaW50IGxhc3RLbm93bk1vdXNlUG9zaXRpb24oKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIGJvb2wgaXNIYW5kbGluZ1doZWVsRXZlbnQoKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1hdGlvbnMoKSBjb25z
dCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCA3
YjY0NmJlNTY3MTJiYzgzYTI4YmRjOWQ5ZGU3YjhlZDY0YTE3NTdhLi5iYmY4YWEwYTRkZTVjZDAx
NzkwMTEyNjJiNzU4NDE0YmVkZWViMTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clZpZXcuY3BwCkBAIC0xMDExLDcgKzEwMTEsNyBAQCBMYXlvdXRSZWN0IFJlbmRlclZpZXc6OnZp
ZXdSZWN0KCkgY29uc3QKIHsKICAgICBpZiAoc2hvdWxkVXNlUHJpbnRpbmdMYXlvdXQoKSkKICAg
ICAgICAgcmV0dXJuIExheW91dFJlY3QoTGF5b3V0UG9pbnQoKSwgc2l6ZSgpKTsKLSAgICByZXR1
cm4gZnJhbWVWaWV3KCkudmlzaWJsZUNvbnRlbnRSZWN0KCk7CisgICAgcmV0dXJuIGZyYW1lVmll
dygpLnZpc2libGVDb250ZW50UmVjdChTY3JvbGxhYmxlQXJlYTo6TGVnYWN5SU9TRG9jdW1lbnRW
aXNpYmxlUmVjdCk7CiB9CiAKIEludFJlY3QgUmVuZGVyVmlldzo6dW5zY2FsZWREb2N1bWVudFJl
Y3QoKSBjb25zdApAQCAtMTEwNSw3ICsxMTA1LDcgQEAgYm9vbCBSZW5kZXJWaWV3OjpzaG91bGRE
aXNhYmxlTGF5b3V0U3RhdGVGb3JTdWJ0cmVlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnMK
IAogSW50U2l6ZSBSZW5kZXJWaWV3Ojp2aWV3cG9ydFNpemUoKSBjb25zdAogewotICAgIHJldHVy
biBmcmFtZVZpZXcoKS52aXNpYmxlQ29udGVudFJlY3QoU2Nyb2xsYWJsZUFyZWE6OkluY2x1ZGVT
Y3JvbGxiYXJzKS5zaXplKCk7CisgICAgcmV0dXJuIGZyYW1lVmlldygpLnZpc2libGVDb250ZW50
UmVjdEluY2x1ZGluZ1Njcm9sbGJhcnMoU2Nyb2xsYWJsZUFyZWE6OkxlZ2FjeUlPU0RvY3VtZW50
VmlzaWJsZVJlY3QpLnNpemUoKTsKIH0KIAogdm9pZCBSZW5kZXJWaWV3Ojp1cGRhdGVIaXRUZXN0
UmVzdWx0KEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5l
cmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9q
L1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgppbmRleCBlMDZjYWNi
ODE1MzE3MWY2MGRlY2VkYThjMWM0ZTQ5YTY2YmE1YzQ3Li43NjExOGQ4YjAwODAzMzA2N2E5YWNj
YzFlYWZjMzAxNWYzYzk2NzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hw
cm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBv
cnRzLmRlZi5pbgpAQCAtNDY4LDQgKzQ2OCwzIEBAIEVYUE9SVFMKICAgICAgICAgc3ltYm9sV2l0
aFBvaW50ZXIoP3ZtQFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRAV2ViQ29yZUBAUUFFUEFWVk1ASlND
QEBYWiwgP3ZtQFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRAV2ViQ29yZUBAUUVBQVBFQVZWTUBKU0NA
QFhaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/Y29tcGxldGVVUkxARG9jdW1lbnRAV2Vi
Q29yZUBAVUJFP0FWVVJMQDJAQUJWU3RyaW5nQFdURkBAQFosID9jb21wbGV0ZVVSTEBEb2N1bWVu
dEBXZWJDb3JlQEBVRUJBP0FWVVJMQDJAQUVCVlN0cmluZ0BXVEZAQEBaKQogICAgICAgICBzeW1i
b2xXaXRoUG9pbnRlcig/PzFET01XaW5kb3dAV2ViQ29yZUBAVUFFQFhaLCA/PzFET01XaW5kb3dA
V2ViQ29yZUBAVUVBQUBYWikKLSAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP3Zpc2libGVDb250
ZW50UmVjdEBTY3JvbGxWaWV3QFdlYkNvcmVAQFVCRT9BVkludFJlY3RAMkBXNFZpc2libGVDb250
ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFyc0BTY3JvbGxhYmxlQXJlYUAyQEBaLCA/dmlzaWJsZUNv
bnRlbnRSZWN0QFNjcm9sbFZpZXdAV2ViQ29yZUBAVUVCQT9BVkludFJlY3RAMkBXNFZpc2libGVD
b250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFyc0BTY3JvbGxhYmxlQXJlYUAyQEBaKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKaW5kZXgg
MGI2NjdmNzI3ZWM2YTY1MTAzYjYwMjZkY2QyODEzYTRhMTdkZDRkYS4uYmRhZTQ3YzJiMTdmNjg3
MTE4MTc2MTg3NzVhMDQ1ZDk5YTE0ZTAzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC0xOTEsOCArMTkxLDcgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBtaW5pbXVtU2Nyb2xsUG9z
aXRpb24oKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IG1h
eGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgaW50IHZp
c2libGVIZWlnaHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3NpemUuaGVpZ2h0KCk7IH0K
LSAgICB2aXJ0dWFsIGludCB2aXNpYmxlV2lkdGgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X3NpemUud2lkdGgoKTsgfQorICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50U2l6ZSB2aXNpYmxlU2l6
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIHZpcnR1YWwgV2ViQ29y
ZTo6SW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BkZkRv
Y3VtZW50U2l6ZTsgfQogICAgIHZpcnR1YWwgV2ViQ29yZTo6U2Nyb2xsYmFyKiBob3Jpem9udGFs
U2Nyb2xsYmFyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ob3Jpem9udGFsU2Nyb2xsYmFy
LmdldCgpOyB9CiAgICAgdmlydHVhbCBXZWJDb3JlOjpTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xs
YmFyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV92ZXJ0aWNhbFNjcm9sbGJhci5nZXQoKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwCmluZGV4IDQxMTlhOGM2NGQ0ZWZh
NTI2N2E1Yjg2MzA4MzkxYTNlZWQ2ZWQ4YjkuLjE3YTU3NWM0NDFiZjgzNzFmYjk5Njg5OTE1Njg5
Yjc0ZDY3ZjFiNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAKQEAgLTUz
LDE0ICs1MywxNCBAQCBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjp+Vmlld0dlc3R1cmVH
ZW9tZXRyeUNvbGxlY3RvcigpCiAKIHZvaWQgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6
Y29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoKQogewotICAgIEZsb2F0UmVj
dCB2aXNpYmxlQ29udGVudFJlY3QgPSBtX3dlYlBhZ2UubWFpbkZyYW1lVmlldygpLT52aXNpYmxl
Q29udGVudFJlY3QoU2Nyb2xsYWJsZUFyZWE6OkluY2x1ZGVTY3JvbGxiYXJzKTsKKyAgICBGbG9h
dFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0ID0gbV93ZWJQYWdlLm1haW5GcmFtZVZpZXcoKS0+dmlz
aWJsZUNvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFycygpOwogICAgIGJvb2wgZnJhbWVIYW5k
bGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUgPSBtX3dlYlBhZ2UubWFpbldlYkZyYW1lKCktPmhhbmRs
ZXNQYWdlU2NhbGVHZXN0dXJlKCk7CiAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OlZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6RGlkQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1
cmUodmlzaWJsZUNvbnRlbnRSZWN0LCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkp
OwogfQogCiB2b2lkIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OmNvbGxlY3RHZW9tZXRy
eUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBvcmlnaW4pCiB7Ci0gICAg
RmxvYXRSZWN0IHZpc2libGVDb250ZW50UmVjdCA9IG1fd2ViUGFnZS5tYWluRnJhbWVWaWV3KCkt
PnZpc2libGVDb250ZW50UmVjdChTY3JvbGxhYmxlQXJlYTo6SW5jbHVkZVNjcm9sbGJhcnMpOwor
ICAgIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QgPSBtX3dlYlBhZ2UubWFpbkZyYW1lVmll
dygpLT52aXNpYmxlQ29udGVudFJlY3RJbmNsdWRpbmdTY3JvbGxiYXJzKCk7CiAgICAgYm9vbCBm
cmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSA9IG1fd2ViUGFnZS5tYWluV2ViRnJhbWUo
KS0+aGFuZGxlc1BhZ2VTY2FsZUdlc3R1cmUoKTsKIAogICAgIEZsb2F0UG9pbnQgc2Nyb2xsZWRP
cmlnaW4gPSBvcmlnaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcAppbmRleCBjNDlhNDFjNWVlYTBmMzE0NDYxMGFlMWYzZGFiMjBjNGNiYTc3NzEy
Li5jZWQ3ODY1YmY0ZTdhMDNhMjdlM2E5NjgzYjZiZjIzNjQ4MjA1OTdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTQ5OSw3ICs0OTks
NyBAQCBJbnRSZWN0IFdlYkZyYW1lOjp2aXNpYmxlQ29udGVudEJvdW5kcygpIGNvbnN0CiAgICAg
aWYgKCF2aWV3KQogICAgICAgICByZXR1cm4gSW50UmVjdCgpOwogICAgIAotICAgIEludFJlY3Qg
Y29udGVudFJlY3QgPSB2aWV3LT52aXNpYmxlQ29udGVudFJlY3QoU2Nyb2xsYWJsZUFyZWE6Oklu
Y2x1ZGVTY3JvbGxiYXJzKTsKKyAgICBJbnRSZWN0IGNvbnRlbnRSZWN0ID0gdmlldy0+dmlzaWJs
ZUNvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFycygpOwogICAgIHJldHVybiBJbnRSZWN0KDAs
IDAsIGNvbnRlbnRSZWN0LndpZHRoKCksIGNvbnRlbnRSZWN0LmhlaWdodCgpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggYzcyZjI4NThjNDRm
YTUxMThmMzAxNmRjNGQ2Y2NlMmYyYjVkODNkYi4uY2ZkYWFlNDRkMWU5Y2MwMzM0M2JjNmNiNzNl
NmMyODE3YzliYmZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Lm1tCkBAIC03MjAsNyArNzIwLDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YTo6Y29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQKICAgICBSZW5k
ZXJWaWV3KiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LT5yZW5kZXJWaWV3KCk7CiAgICAgUGxhdGZv
cm1DQUxheWVyKiByZW5kZXJWaWV3TGF5ZXIgPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0Eq
PihyZW5kZXJWaWV3LT5sYXllcigpLT5iYWNraW5nKCktPmdyYXBoaWNzTGF5ZXIoKSktPnBsYXRm
b3JtQ0FMYXllcigpOwogCi0gICAgRmxvYXRSZWN0IHZpc2libGVDb250ZW50UmVjdCA9IGZyYW1l
Vmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KFNjcm9sbGFibGVBcmVhOjpJbmNsdWRlU2Nyb2xsYmFy
cyk7CisgICAgRmxvYXRSZWN0IHZpc2libGVDb250ZW50UmVjdCA9IGZyYW1lVmlldy0+dmlzaWJs
ZUNvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFycygpOwogCiAgICAgRmxvYXRQb2ludCBjb25z
dHJhaW5lZE9yaWdpbiA9IHZpc2libGVDb250ZW50UmVjdC5sb2NhdGlvbigpOwogICAgIGNvbnN0
cmFpbmVkT3JpZ2luLm1vdmVCeSgtb3JpZ2luKTsKQEAgLTc5NSw3ICs3OTUsNyBAQCB2b2lkIFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjphcHBseVRyYW5zaWVudFpvb21Ub1BhZ2UoZG91
YmxlIHNjYWxlLCBGbG9hdAogICAgIHNoYWRvd0xheWVyLT5zZXRQb3NpdGlvbihzaGFkb3dMYXll
ci0+Ym91bmRzKCkuY2VudGVyKCkpOwogCiAgICAgRmxvYXRQb2ludCB1bnNjcm9sbGVkT3JpZ2lu
KG9yaWdpbik7Ci0gICAgRmxvYXRSZWN0IHZpc2libGVDb250ZW50UmVjdCA9IG1fd2ViUGFnZS0+
bWFpbkZyYW1lVmlldygpLT52aXNpYmxlQ29udGVudFJlY3QoU2Nyb2xsYWJsZUFyZWE6OkluY2x1
ZGVTY3JvbGxiYXJzKTsKKyAgICBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0ID0gbV93ZWJQ
YWdlLT5tYWluRnJhbWVWaWV3KCktPnZpc2libGVDb250ZW50UmVjdEluY2x1ZGluZ1Njcm9sbGJh
cnMoKTsKICAgICB1bnNjcm9sbGVkT3JpZ2luLm1vdmVCeSgtdmlzaWJsZUNvbnRlbnRSZWN0Lmxv
Y2F0aW9uKCkpOwogICAgIG1fd2ViUGFnZS0+c2NhbGVQYWdlKHNjYWxlLCByb3VuZGVkSW50UG9p
bnQoLXVuc2Nyb2xsZWRPcmlnaW4pKTsKICAgICBmbHVzaExheWVycygpOwo=
</data>
<flag name="review"
          id="246018"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>