<?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>109363</bug_id>
          
          <creation_ts>2013-02-09 14:23:24 -0800</creation_ts>
          <short_desc>[GTK][AC] Implement basic transform animations with clutter ac backend</short_desc>
          <delta_ts>2013-02-13 08:14:27 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>105699</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="ChangSeok Oh">kevin.cs.oh</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>buildbot</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>829123</commentid>
    <comment_count>0</comment_count>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2013-02-09 14:23:24 -0800</bug_when>
    <thetext>Here, I want to add basic transform animations support for clutter ac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829131</commentid>
    <comment_count>1</comment_count>
      <attachid>187448</attachid>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2013-02-09 14:58:45 -0800</bug_when>
    <thetext>Created attachment 187448
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829164</commentid>
    <comment_count>2</comment_count>
      <attachid>187448</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-09 19:49:09 -0800</bug_when>
    <thetext>Comment on attachment 187448
Patch

Attachment 187448 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16472651

New failing tests:
compositing/checkerboard.html
accessibility/anchor-linked-anonymous-block-crash.html
http/tests/cache/cancel-multiple-post-xhrs.html
animations/3d/state-at-end-event-transform.html
animations/animation-add-events-in-handler.html
animations/3d/replace-filling-transform.html
http/tests/cache/history-only-cached-subresource-loads.html
compositing/bounds-in-flipped-writing-mode.html
accessibility/accessibility-node-reparent.html
animations/animation-border-overflow.html
accessibility/accessibility-object-detached.html
accessibility/anonymous-render-block-in-continuation-causes-crash.html
animations/animation-controller-drt-api.html
compositing/absolute-position-changed-with-composited-parent-layer.html
compositing/absolute-position-changed-in-composited-layer.html
http/tests/cache/iframe-304-crash.html
animations/3d/transform-perspective.html
canvas/philip/tests/2d.clearRect+fillRect.alpha0.5.html
canvas/philip/tests/2d.clearRect.basic.html
animations/3d/transform-origin-vs-functions.html
animations/animation-css-rule-types.html
canvas/philip/tests/2d.clearRect+fillRect.basic.html
canvas/philip/tests/2d.clearRect+fillRect.alpha0.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829299</commentid>
    <comment_count>3</comment_count>
      <attachid>187482</attachid>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2013-02-10 09:00:52 -0800</bug_when>
    <thetext>Created attachment 187482
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829734</commentid>
    <comment_count>4</comment_count>
      <attachid>187583</attachid>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2013-02-11 08:44:37 -0800</bug_when>
    <thetext>Created attachment 187583
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831915</commentid>
    <comment_count>5</comment_count>
      <attachid>187583</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-13 08:14:23 -0800</bug_when>
    <thetext>Comment on attachment 187583
Patch

Clearing flags on attachment: 187583

Committed r142749: &lt;http://trac.webkit.org/changeset/142749&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831916</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-13 08:14:27 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187448</attachid>
            <date>2013-02-09 14:58:45 -0800</date>
            <delta_ts>2013-02-10 09:00:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109363-20130210075517.patch</filename>
            <type>text/plain</type>
            <size>27699</size>
            <attacher name="ChangSeok Oh">kevin.cs.oh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMzE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTM1MzlhNjE3ZWEyNWY0
ZmEzODIyNTJhYzY0NWIxZDYzODJlODhjYy4uYjY5MzZkYjM2ZGY3NTNmYWJmOTIxMjhhZGU1Mjll
NGU3MjAzOWU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEzLTAyLTA5ICBDaGFu
Z1Nlb2sgT2ggIDxzaGl2YW1pZG93QGdtYWlsLmNvbT4KKworICAgICAgICBbR1RLXVtBQ10gSW1w
bGVtZW50IGJhc2ljIHRyYW5zZm9ybSBhbmltYXRpb25zIHdpdGggY2x1dHRlciBhYyBiYWNrZW5k
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkzNjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnQgYmFzaWMgdHJhbnNmb3JtIGFuaW1hdGlvbiB3aXRoIGNsdXR0ZXIgYWMgYmFja2VuZC4KKyAg
ICAgICAgR3JhcGhpY3NMYXllckNsdXR0ZXIgaXMgYWxtb3N0IHNhbWUgd2l0aCBHcmFwaGljc0xh
eWVyQ0EuIEFuZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb24KKyAgICAgICAgaW50ZXJmYWNlcyBh
cmUgYWxzbyBzaW1pbGFyIHdpdGggUGxhdGZvcm1DQUFuaW1hdGlvbiwgYnV0IHRoZXkgYXJlIGlt
cGxlbWVudGVkCisgICAgICAgIHdpdGggbmF0aXZlIGNsdXR0ZXIgQVBJcy4gQ2x1dHRlciBiYWNr
ZW5kIEFDIHN1cHBvcnRzIGEgYmFzaWMgc2luZ2xlIHRyYW5zZm9ybSBhbmltYXRpb24KKyAgICAg
ICAgd2l0aCB0aGlzIHBhdGNoIG5vdywgYnV0IGFkZGl0aXZlIGFuaW1hdGlvbiBjb21iaW5hdGlv
biBhbmQga2V5ZnJhbWUgYW5pbWF0aW9uCisgICAgICAgIGFyZSBub3Qgc3VwcG9ydGVkIHlldC4K
KworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIGFuaW1hdGlvbiB0ZXN0cy4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckFjdG9yLmNwcDoKKyAg
ICAgICAgKGdyYXBoaWNzTGF5ZXJBY3RvclNldFRyYW5zZm9ybSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0xheWVyQ2x1dHRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppc1RyYW5zZm9ybVR5cGVUcmFuc2Zvcm1hdGlvbk1hdHJpeCk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVHJhbnNmb3JtVHlwZUZsb2F0UG9pbnQzRCk6
CisgICAgICAgIChXZWJDb3JlOjppc1RyYW5zZm9ybVR5cGVOdW1iZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRW
YWx1ZUZ1bmN0aW9uTmFtZUZvclRyYW5zZm9ybU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ2x1dHRlcjo6c2V0VHJhbnNmb3JtQW5pbWF0aW9uRW5kcG9pbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDbHV0dGVyOjphcHBlbmRUb1VuY29tbWl0
dGVkQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2x1dHRlcjo6
Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIuaDoKKyAgICAgICAgKEdy
YXBoaWNzTGF5ZXJDbHV0dGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVy
L1BsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0NsdXR0
ZXJBY3RvclByb3BlcnR5U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpzdXBwb3J0c1ZhbHVlRnVuY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpkdXJhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OnNldER1cmF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6c2V0QWRkaXRpdmUp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjp2YWx1ZUZ1bmN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6c2V0VmFs
dWVGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246
OnNldEZyb21WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNsdXR0ZXJBbmltYXRp
b246OnNldFRvVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DbHV0dGVyQW5pbWF0
aW9uOjp0aW1lbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNsdXR0ZXJBbmltYXRp
b246OmFkZENsdXR0ZXJUcmFuc2l0aW9uRm9yUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjphZGRPcGFjaXR5VHJhbnNpdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OmFkZFRyYW5zZm9ybVRyYW5zaXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjphZGRBbmlt
YXRpb25Gb3JLZXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvUGxhdGZv
cm1DbHV0dGVyQW5pbWF0aW9uLmg6CisgICAgICAgIChQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb24p
OgorCiAyMDEzLTAyLTA4ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAg
ICBQdXQgc25hcHNob3R0aW5nIGxhYmVsIHRleHQgaW50byBsb2NhbGl6YWJsZSBzdHJpbmdzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dyYXBo
aWNzTGF5ZXJBY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0
dGVyL0dyYXBoaWNzTGF5ZXJBY3Rvci5jcHAKaW5kZXggZDJlZmQxNjYzMzkwOTJkZTE4YWFjYmUy
ZmM1MjUxMWYwODZmNDk2Yy4uZjU1NmRhYjc2MWM0OTQxZWJlZWY0ZDQyNzQ5YzE2YmFhMmY3ZTlm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9H
cmFwaGljc0xheWVyQWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckFjdG9yLmNwcApAQCAtMzkyLDcgKzM5Miw3IEBAIHZv
aWQgZ3JhcGhpY3NMYXllckFjdG9yU2V0VHJhbnNmb3JtKEdyYXBoaWNzTGF5ZXJBY3RvciogbGF5
ZXIsIGNvbnN0IENvZ2xNYXRyaXgqCiAgICAgICAgIG5lZWRUb1JlZHJhdyA9IHRydWU7CiAgICAg
fQogCi0gICAgaWYgKCFjb2dsX21hdHJpeF9pc19pZGVudGl0eShtYXRyaXgpKSB7CisgICAgaWYg
KG1hdHJpeCAmJiAhY29nbF9tYXRyaXhfaXNfaWRlbnRpdHkobWF0cml4KSkgewogICAgICAgICBw
cml2LT5tYXRyaXggPSBjb2dsX21hdHJpeF9jb3B5KG1hdHJpeCk7CiAgICAgICAgIG5lZWRUb1Jl
ZHJhdyA9IHRydWU7CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIuY3Bw
CmluZGV4IGQ3OTkxODcyM2VkYjE0M2JiN2UzN2Y4ZmVmNmZjNmFjMjg3YjY3YzEuLjUzNzk2ZWM4
OTc3OTZkOWI5MzljMjEyMWYxMjUzZDAxYmI1NzE5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXll
ckNsdXR0ZXIuY3BwCkBAIC01Myw2ICs1MywxNDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8g
U28gc2VuZCBhIHZlcnkgc21hbGwgdmFsdWUgaW5zdGVhZC4KIHN0YXRpYyBjb25zdCBmbG9hdCBj
QW5pbWF0aW9uQWxtb3N0WmVyb0R1cmF0aW9uID0gMWUtM2Y7CiAKK3N0YXRpYyBib29sIGlzVHJh
bnNmb3JtVHlwZVRyYW5zZm9ybWF0aW9uTWF0cml4KFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0
aW9uVHlwZSB0cmFuc2Zvcm1UeXBlKQoreworICAgIHN3aXRjaCAodHJhbnNmb3JtVHlwZSkgewor
ICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXX1g6CisgICAgY2FzZSBUcmFuc2Zvcm1P
cGVyYXRpb246OlNLRVdfWToKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFVzoKKyAg
ICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6TUFUUklYOgorICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpST1RBVEVfM0Q6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJWF8z
RDoKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6UEVSU1BFQ1RJVkU6CisgICAgY2FzZSBU
cmFuc2Zvcm1PcGVyYXRpb246OklERU5USVRZOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpOT05FOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBpc1RyYW5zZm9ybVR5cGVGbG9hdFBv
aW50M0QoVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybVR5cGUpCit7
CisgICAgc3dpdGNoICh0cmFuc2Zvcm1UeXBlKSB7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRp
b246OlNDQUxFOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV8zRDoKKyAgICBj
YXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFOgorICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpUUkFOU0xBVEVfM0Q6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK3N0YXRpYyBib29sIGlzVHJhbnNm
b3JtVHlwZU51bWJlcihUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHJhbnNmb3Jt
VHlwZSkKK3sKKyAgICByZXR1cm4gIWlzVHJhbnNmb3JtVHlwZVRyYW5zZm9ybWF0aW9uTWF0cml4
KHRyYW5zZm9ybVR5cGUpICYmICFpc1RyYW5zZm9ybVR5cGVGbG9hdFBvaW50M0QodHJhbnNmb3Jt
VHlwZSk7Cit9CisKK3N0YXRpYyB2b2lkIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoY29uc3Qg
VHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm1PcCwgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVy
YXRpb25UeXBlIHRyYW5zZm9ybVR5cGUsIGNvbnN0IEludFNpemUmIHNpemUsIGZsb2F0JiB2YWx1
ZSkKK3sKKyAgICBzd2l0Y2ggKHRyYW5zZm9ybVR5cGUpIHsKKyAgICBjYXNlIFRyYW5zZm9ybU9w
ZXJhdGlvbjo6Uk9UQVRFOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWDoK
KyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1k6CisgICAgICAgIHZhbHVlID0g
dHJhbnNmb3JtT3AgPyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGRlZzJyYWQoc3RhdGljX2Nhc3Q8
Y29uc3QgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT5hbmdsZSgpKSkg
OiAwOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVf
WDoKKyAgICAgICAgdmFsdWUgPSB0cmFuc2Zvcm1PcCA/IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
c3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCkt
PngoKSkgOiAxOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6
U0NBTEVfWToKKyAgICAgICAgdmFsdWUgPSB0cmFuc2Zvcm1PcCA/IG5hcnJvd1ByZWNpc2lvblRv
RmxvYXQoc3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zv
cm1PcCktPnkoKSkgOiAxOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJh
dGlvbjo6U0NBTEVfWjoKKyAgICAgICAgdmFsdWUgPSB0cmFuc2Zvcm1PcCA/IG5hcnJvd1ByZWNp
c2lvblRvRmxvYXQoc3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0
cmFuc2Zvcm1PcCktPnooKSkgOiAxOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRyYW5zZm9y
bU9wZXJhdGlvbjo6VFJBTlNMQVRFX1g6CisgICAgICAgIHZhbHVlID0gdHJhbnNmb3JtT3AgPyBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zbGF0ZVRyYW5zZm9y
bU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eChzaXplKSkgOiAwOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1k6CisgICAgICAgIHZhbHVl
ID0gdHJhbnNmb3JtT3AgPyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHN0YXRpY19jYXN0PGNvbnN0
IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eShzaXplKSkgOiAw
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRF
X1o6CisgICAgICAgIHZhbHVlID0gdHJhbnNmb3JtT3AgPyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9y
bU9wKS0+eihzaXplKSkgOiAwOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFs
dWUoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm1PcCwgVHJhbnNmb3JtT3BlcmF0
aW9uOjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybVR5cGUsIGNvbnN0IEludFNpemUmIHNpemUsIEZs
b2F0UG9pbnQzRCYgdmFsdWUpCit7CisgICAgc3dpdGNoICh0cmFuc2Zvcm1UeXBlKSB7CisgICAg
Y2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0
aW9uOjpTQ0FMRV8zRDoKKyAgICAgICAgdmFsdWUuc2V0WCh0cmFuc2Zvcm1PcCA/IG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQoc3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24q
Pih0cmFuc2Zvcm1PcCktPngoKSkgOiAxKTsKKyAgICAgICAgdmFsdWUuc2V0WSh0cmFuc2Zvcm1P
cCA/IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoc3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zv
cm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPnkoKSkgOiAxKTsKKyAgICAgICAgdmFsdWUuc2V0
Wih0cmFuc2Zvcm1PcCA/IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoc3RhdGljX2Nhc3Q8Y29uc3Qg
U2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPnooKSkgOiAxKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURToKKyAgICBj
YXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFXzNEOgorICAgICAgICB2YWx1ZS5zZXRY
KHRyYW5zZm9ybU9wID8gbmFycm93UHJlY2lzaW9uVG9GbG9hdChzdGF0aWNfY2FzdDxjb25zdCBU
cmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPngoc2l6ZSkpIDogMCk7
CisgICAgICAgIHZhbHVlLnNldFkodHJhbnNmb3JtT3AgPyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9y
bU9wKS0+eShzaXplKSkgOiAwKTsKKyAgICAgICAgdmFsdWUuc2V0Wih0cmFuc2Zvcm1PcCA/IG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQoc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNsYXRlVHJhbnNmb3Jt
T3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT56KHNpemUpKSA6IDApOworICAgICAgICBicmVhazsK
KyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGdl
dFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zv
cm1PcCwgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybVR5cGUsIGNv
bnN0IEludFNpemUmIHNpemUsIFRyYW5zZm9ybWF0aW9uTWF0cml4JiB2YWx1ZSkKK3sKKyAgICBz
d2l0Y2ggKHRyYW5zZm9ybVR5cGUpIHsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tF
V19YOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXX1k6CisgICAgY2FzZSBUcmFu
c2Zvcm1PcGVyYXRpb246OlNLRVc6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJ
WDoKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNEOgorICAgIGNhc2UgVHJh
bnNmb3JtT3BlcmF0aW9uOjpNQVRSSVhfM0Q6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OlBFUlNQRUNUSVZFOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpJREVOVElUWToKKyAg
ICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Tk9ORToKKyAgICAgICAgaWYgKHRyYW5zZm9ybU9w
KQorICAgICAgICAgICAgdHJhbnNmb3JtT3AtPmFwcGx5KHZhbHVlLCBzaXplKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgdmFsdWUubWFrZUlkZW50aXR5KCk7CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIFBsYXRmb3Jt
Q2x1dHRlckFuaW1hdGlvbjo6VmFsdWVGdW5jdGlvblR5cGUgZ2V0VmFsdWVGdW5jdGlvbk5hbWVG
b3JUcmFuc2Zvcm1PcGVyYXRpb24oVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHRy
YW5zZm9ybVR5cGUpCit7CisgICAgLy8gVXNlIGxpdGVyYWwgc3RyaW5ncyB0byBhdm9pZCBsaW5r
LXRpbWUgZGVwZW5kZW5jeSBvbiB0aG9zZSBzeW1ib2xzLgorICAgIHN3aXRjaCAodHJhbnNmb3Jt
VHlwZSkgeworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWDoKKyAgICAgICAg
cmV0dXJuIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6Um90YXRlWDsKKyAgICBjYXNlIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1k6CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNsdXR0ZXJB
bmltYXRpb246OlJvdGF0ZVk7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURToK
KyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6Um90YXRlWjsKKyAgICBj
YXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWDoKKyAgICAgICAgcmV0dXJuIFBsYXRmb3Jt
Q2x1dHRlckFuaW1hdGlvbjo6U2NhbGVYOworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpT
Q0FMRV9ZOgorICAgICAgICByZXR1cm4gUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpTY2FsZVk7
CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1o6CisgICAgICAgIHJldHVybiBQ
bGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OlNjYWxlWjsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJh
dGlvbjo6VFJBTlNMQVRFX1g6CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRp
b246OlRyYW5zbGF0ZVg7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9Z
OgorICAgICAgICByZXR1cm4gUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpUcmFuc2xhdGVZOwor
ICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWjoKKyAgICAgICAgcmV0dXJu
IFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6VHJhbnNsYXRlWjsKKyAgICBjYXNlIFRyYW5zZm9y
bU9wZXJhdGlvbjo6U0NBTEU6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFXzNE
OgorICAgICAgICByZXR1cm4gUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpTY2FsZTsKKyAgICBj
YXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFOgorICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpUUkFOU0xBVEVfM0Q6CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNsdXR0ZXJBbmlt
YXRpb246OlRyYW5zbGF0ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gUGxhdGZvcm1D
bHV0dGVyQW5pbWF0aW9uOjpOb1ZhbHVlRnVuY3Rpb247CisgICAgfQorfQorCiBzdGF0aWMgU3Ry
aW5nIHByb3BlcnR5SWRUb1N0cmluZyhBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHkpCiB7CiAg
ICAgc3dpdGNoIChwcm9wZXJ0eSkgewpAQCAtNjE4LDE0ICs3NjAsMTIyIEBAIGJvb2wgR3JhcGhp
Y3NMYXllckNsdXR0ZXI6OnNldFRyYW5zZm9ybUFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlm
cmFtZVZhbHVlTGlzCiAKIGJvb2wgR3JhcGhpY3NMYXllckNsdXR0ZXI6OnNldFRyYW5zZm9ybUFu
aW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25z
dCBBbmltYXRpb24qIGFuaW1hdGlvbiwgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uKiBiYXNpY0Fu
aW0sIGludCBmdW5jdGlvbkluZGV4LCBUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUg
dHJhbnNmb3JtT3BUeXBlLCBib29sIGlzTWF0cml4QW5pbWF0aW9uLCBjb25zdCBJbnRTaXplJiBi
b3hTaXplKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAg
IEFTU0VSVCh2YWx1ZUxpc3Quc2l6ZSgpID09IDIpOworCisgICAgYm9vbCBmb3J3YXJkcyA9IGFu
aW1hdGlvbi0+ZGlyZWN0aW9uSXNGb3J3YXJkcygpOworCisgICAgdW5zaWduZWQgZnJvbUluZGV4
ID0gIWZvcndhcmRzOworICAgIHVuc2lnbmVkIHRvSW5kZXggPSBmb3J3YXJkczsKKworICAgIGNv
bnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKiBzdGFydFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29u
c3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQoZnJvbUluZGV4KSk7Cisg
ICAgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqIGVuZFZhbHVlID0gc3RhdGljX2Nhc3Q8
Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQodG9JbmRleCkpOwor
CisgICAgaWYgKGlzTWF0cml4QW5pbWF0aW9uKSB7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGZyb21UcmFuc2Zvcm0sIHRvVHJhbnNmb3JtOworICAgICAgICBzdGFydFZhbHVlLT52YWx1
ZSgpLT5hcHBseShib3hTaXplLCBmcm9tVHJhbnNmb3JtKTsKKyAgICAgICAgZW5kVmFsdWUtPnZh
bHVlKCktPmFwcGx5KGJveFNpemUsIHRvVHJhbnNmb3JtKTsKKworICAgICAgICAvLyBGSVhNRTog
SWYgYW55IG1hdHJpeCBpcyBzaW5ndWxhciwgQ0Egd29uJ3QgYW5pbWF0ZSBpdCBjb3JyZWN0bHku
CisgICAgICAgIC8vIFNvIGZhbGwgYmFjayB0byBzb2Z0d2FyZSBhbmltYXRpb24sIEJ1dCBpdCdz
IG5vdCBzdXJlIGluIGNsdXR0ZXIgY2FzZS4KKyAgICAgICAgLy8gV2UgbmVlZCB0byBpbnZlc3Rp
Z2F0ZSBpdCBtb3JlLgorICAgICAgICBpZiAoIWZyb21UcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkg
fHwgIXRvVHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIGJhc2ljQW5pbS0+c2V0RnJvbVZhbHVlKGZyb21UcmFuc2Zvcm0pOworICAg
ICAgICBiYXNpY0FuaW0tPnNldFRvVmFsdWUodG9UcmFuc2Zvcm0pOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGlmIChpc1RyYW5zZm9ybVR5cGVOdW1iZXIodHJhbnNmb3JtT3BUeXBlKSkgeworICAg
ICAgICAgICAgZmxvYXQgZnJvbVZhbHVlOworICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rp
b25WYWx1ZShzdGFydFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNmb3Jt
T3BUeXBlLCBib3hTaXplLCBmcm9tVmFsdWUpOworICAgICAgICAgICAgYmFzaWNBbmltLT5zZXRG
cm9tVmFsdWUoZnJvbVZhbHVlKTsKKworICAgICAgICAgICAgZmxvYXQgdG9WYWx1ZTsKKyAgICAg
ICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoZW5kVmFsdWUtPnZhbHVlKCktPmF0KGZ1
bmN0aW9uSW5kZXgpLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIHRvVmFsdWUpOworICAgICAg
ICAgICAgYmFzaWNBbmltLT5zZXRUb1ZhbHVlKHRvVmFsdWUpOworICAgICAgICB9IGVsc2UgaWYg
KGlzVHJhbnNmb3JtVHlwZUZsb2F0UG9pbnQzRCh0cmFuc2Zvcm1PcFR5cGUpKSB7CisgICAgICAg
ICAgICBGbG9hdFBvaW50M0QgZnJvbVZhbHVlOworICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVu
Y3Rpb25WYWx1ZShzdGFydFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNm
b3JtT3BUeXBlLCBib3hTaXplLCBmcm9tVmFsdWUpOworICAgICAgICAgICAgYmFzaWNBbmltLT5z
ZXRGcm9tVmFsdWUoZnJvbVZhbHVlKTsKKworICAgICAgICAgICAgRmxvYXRQb2ludDNEIHRvVmFs
dWU7CisgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGVuZFZhbHVlLT52YWx1
ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB0b1ZhbHVl
KTsKKyAgICAgICAgICAgIGJhc2ljQW5pbS0+c2V0VG9WYWx1ZSh0b1ZhbHVlKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZyb21WYWx1ZTsKKyAg
ICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS0+dmFsdWUoKS0+
YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgZnJvbVZhbHVlKTsK
KyAgICAgICAgICAgIGJhc2ljQW5pbS0+c2V0RnJvbVZhbHVlKGZyb21WYWx1ZSk7CisKKyAgICAg
ICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRvVmFsdWU7CisgICAgICAgICAgICBnZXRUcmFu
c2Zvcm1GdW5jdGlvblZhbHVlKGVuZFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwg
dHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB0b1ZhbHVlKTsKKyAgICAgICAgICAgIGJhc2ljQW5p
bS0+c2V0VG9WYWx1ZSh0b1ZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRoaXMg
Y29kZXBhdGggaXMgdXNlZCBmb3IgMi1rZXlmcmFtZSBhbmltYXRpb25zLCBzbyB3ZSBzdGlsbCBu
ZWVkIHRvIGxvb2sgaW4gdGhlIHN0YXJ0CisgICAgLy8gZm9yIGEgdGltaW5nIGZ1bmN0aW9uLiBF
dmVuIGluIHRoZSByZXZlcnNpbmcgYW5pbWF0aW9uIGNhc2UsIHRoZSBmaXJzdCBrZXlmcmFtZSBw
cm92aWRlcyB0aGUgdGltaW5nIGZ1bmN0aW9uLgorICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0
aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0
LmF0KDApLCBhbmltYXRpb24pOworICAgIGJhc2ljQW5pbS0+c2V0VGltaW5nRnVuY3Rpb24odGlt
aW5nRnVuY3Rpb24sICFmb3J3YXJkcyk7CisKKyAgICBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246
OlZhbHVlRnVuY3Rpb25UeXBlIHZhbHVlRnVuY3Rpb24gPSBnZXRWYWx1ZUZ1bmN0aW9uTmFtZUZv
clRyYW5zZm9ybU9wZXJhdGlvbih0cmFuc2Zvcm1PcFR5cGUpOworICAgIGlmICh2YWx1ZUZ1bmN0
aW9uICE9IFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6Tm9WYWx1ZUZ1bmN0aW9uKQorICAgICAg
ICBiYXNpY0FuaW0tPnNldFZhbHVlRnVuY3Rpb24odmFsdWVGdW5jdGlvbik7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBHcmFwaGljc0xheWVyQ2x1dHRlcjo6YXBwZW5kVG9VbmNvbW1p
dHRlZEFuaW1hdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3Qg
VHJhbnNmb3JtT3BlcmF0aW9ucyogb3BlcmF0aW9ucywgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRp
b24sIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSwg
aW50IGFuaW1hdGlvbkluZGV4LCBkb3VibGUgdGltZU9mZnNldCwgYm9vbCBpc01hdHJpeEFuaW1h
dGlvbikKK3sKKyAgICBUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHJhbnNmb3Jt
T3AgPSBpc01hdHJpeEFuaW1hdGlvbiA/IFRyYW5zZm9ybU9wZXJhdGlvbjo6TUFUUklYXzNEIDog
b3BlcmF0aW9ucy0+b3BlcmF0aW9ucygpLmF0KGFuaW1hdGlvbkluZGV4KS0+Z2V0T3BlcmF0aW9u
VHlwZSgpOworICAgIGJvb2wgYWRkaXRpdmUgPSBhbmltYXRpb25JbmRleCA+IDA7CisgICAgYm9v
bCBpc0tleWZyYW1lID0gdmFsdWVMaXN0LnNpemUoKSA+IDI7CisKKyAgICBSZWZQdHI8UGxhdGZv
cm1DbHV0dGVyQW5pbWF0aW9uPiBjbHV0dGVyQW5pbWF0aW9uOworICAgIGJvb2wgdmFsaWRNYXRy
aWNlcyA9IHRydWU7CisgICAgaWYgKGlzS2V5ZnJhbWUpIHsKKyAgICAgICAgY2x1dHRlckFuaW1h
dGlvbiA9IGNyZWF0ZUtleWZyYW1lQW5pbWF0aW9uKGFuaW1hdGlvbiwgcHJvcGVydHlJZFRvU3Ry
aW5nKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSwgYWRkaXRpdmUpOworICAgICAgICB2YWxpZE1hdHJp
Y2VzID0gc2V0VHJhbnNmb3JtQW5pbWF0aW9uS2V5ZnJhbWVzKHZhbHVlTGlzdCwgYW5pbWF0aW9u
LCBjbHV0dGVyQW5pbWF0aW9uLmdldCgpLCBhbmltYXRpb25JbmRleCwgdHJhbnNmb3JtT3AsIGlz
TWF0cml4QW5pbWF0aW9uLCBib3hTaXplKTsKKyAgICB9IGVsc2UgeworICAgICAgICBjbHV0dGVy
QW5pbWF0aW9uID0gY3JlYXRlQmFzaWNBbmltYXRpb24oYW5pbWF0aW9uLCBwcm9wZXJ0eUlkVG9T
dHJpbmcodmFsdWVMaXN0LnByb3BlcnR5KCkpLCBhZGRpdGl2ZSk7CisgICAgICAgIHZhbGlkTWF0
cmljZXMgPSBzZXRUcmFuc2Zvcm1BbmltYXRpb25FbmRwb2ludHModmFsdWVMaXN0LCBhbmltYXRp
b24sIGNsdXR0ZXJBbmltYXRpb24uZ2V0KCksIGFuaW1hdGlvbkluZGV4LCB0cmFuc2Zvcm1PcCwg
aXNNYXRyaXhBbmltYXRpb24sIGJveFNpemUpOworICAgIH0KKworICAgIGlmICghdmFsaWRNYXRy
aWNlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV91bmNvbWl0dGVkQW5pbWF0aW9u
cy5hcHBlbmQoTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihjbHV0dGVyQW5pbWF0aW9uLCBhbmltYXRp
b25OYW1lLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIHRpbWVPZmZzZXQp
KTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBHcmFwaGljc0xheWVyQ2x1dHRlcjo6Y3Jl
YXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxp
c3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIGNvbnN0IFN0cmluZyYg
YW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEludFNpemUmIGJveFNpemUp
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJU
KHZhbHVlTGlzdC5wcm9wZXJ0eSgpID09IEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0p
OworCisgICAgYm9vbCBoYXNCaWdSb3RhdGlvbjsKKyAgICBpbnQgbGlzdEluZGV4ID0gdmFsaWRh
dGVUcmFuc2Zvcm1PcGVyYXRpb25zKHZhbHVlTGlzdCwgaGFzQmlnUm90YXRpb24pOworICAgIGNv
bnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIG9wZXJhdGlvbnMgPSAobGlzdEluZGV4ID49IDApID8g
c3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQo
bGlzdEluZGV4KSktPnZhbHVlKCkgOiAwOworCisgICAgLy8gV2UgbmVlZCB0byBmYWxsIGJhY2sg
dG8gc29mdHdhcmUgYW5pbWF0aW9uIGlmIHdlIGRvbid0IGhhdmUgc2V0VmFsdWVGdW5jdGlvbjos
IGFuZAorICAgIC8vIHdlIHdvdWxkIG5lZWQgdG8gYW5pbWF0ZSBlYWNoIGluY29taW5nIHRyYW5z
Zm9ybSBmdW5jdGlvbiBzZXBhcmF0ZWx5LiBUaGlzIGlzIHRoZQorICAgIC8vIGNhc2UgaWYgd2Ug
aGF2ZSBhIHJvdGF0aW9uID49IDE4MCBvciB3ZSBoYXZlIG1vcmUgdGhhbiBvbmUgdHJhbnNmb3Jt
IGZ1bmN0aW9uLgorICAgIGlmICgoaGFzQmlnUm90YXRpb24gfHwgKG9wZXJhdGlvbnMgJiYgb3Bl
cmF0aW9ucy0+c2l6ZSgpID4gMSkpICYmICFQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OnN1cHBv
cnRzVmFsdWVGdW5jdGlvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHZh
bGlkTWF0cmljZXMgPSB0cnVlOworCisgICAgLy8gSWYgZnVuY3Rpb24gbGlzdHMgZG9uJ3QgbWF0
Y2ggd2UgZG8gYSBtYXRyaXggYW5pbWF0aW9uLCBvdGhlcndpc2Ugd2UgZG8gYSBjb21wb25lbnQg
aGFyZHdhcmUgYW5pbWF0aW9uLgorICAgIC8vIEFsc28sIHdlIGNhbid0IGRvIGNvbXBvbmVudCBh
bmltYXRpb24gdW5sZXNzIHdlIGhhdmUgdmFsdWVGdW5jdGlvbiwgc28gd2UgbmVlZCB0byBkbyBt
YXRyaXggYW5pbWF0aW9uCisgICAgLy8gaWYgdGhhdCdzIG5vdCB0cnVlIGFzIHdlbGwuCisgICAg
Ym9vbCBpc01hdHJpeEFuaW1hdGlvbiA9IGxpc3RJbmRleCA8IDAgfHwgIVBsYXRmb3JtQ2x1dHRl
ckFuaW1hdGlvbjo6c3VwcG9ydHNWYWx1ZUZ1bmN0aW9uKCk7CisgICAgaW50IG51bUFuaW1hdGlv
bnMgPSBpc01hdHJpeEFuaW1hdGlvbiA/IDEgOiBvcGVyYXRpb25zLT5zaXplKCk7CisKKyAgICBm
b3IgKGludCBhbmltYXRpb25JbmRleCA9IDA7IGFuaW1hdGlvbkluZGV4IDwgbnVtQW5pbWF0aW9u
czsgKythbmltYXRpb25JbmRleCkgeworICAgICAgICBpZiAoIWFwcGVuZFRvVW5jb21taXR0ZWRB
bmltYXRpb25zKHZhbHVlTGlzdCwgb3BlcmF0aW9ucywgYW5pbWF0aW9uLCBhbmltYXRpb25OYW1l
LCBib3hTaXplLCBhbmltYXRpb25JbmRleCwgdGltZU9mZnNldCwgaXNNYXRyaXhBbmltYXRpb24p
KSB7CisgICAgICAgICAgICB2YWxpZE1hdHJpY2VzID0gZmFsc2U7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB2YWxpZE1hdHJpY2VzOwogfQogCiBi
b29sIEdyYXBoaWNzTGF5ZXJDbHV0dGVyOjpjcmVhdGVBbmltYXRpb25Gcm9tS2V5ZnJhbWVzKGNv
bnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0
aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGlj
c0xheWVyQ2x1dHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRl
ci9HcmFwaGljc0xheWVyQ2x1dHRlci5oCmluZGV4IDM1YTU0NzAwNzUwMTdjZTllNjEzZWY3YmMw
MDdjMTE3YjM0MmYyODYuLmM5MzAwMzJiYWQ2OTYxMTUxOTI4NjQ0ZTUxZjcxNGM2MzY4MmVmMjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3Jh
cGhpY3NMYXllckNsdXR0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmgKQEAgLTExOSw2ICsxMTksOCBAQCBwcml2
YXRlOgogICAgIGJvb2wgc2V0VHJhbnNmb3JtQW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZy
YW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9u
KiwgaW50IGZ1bmN0aW9uSW5kZXgsIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSwg
Ym9vbCBpc01hdHJpeEFuaW1hdGlvbiwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSk7CiAgICAgYm9v
bCBzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3Qm
LCBjb25zdCBBbmltYXRpb24qLCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb24qLCBpbnQgZnVuY3Rp
b25JbmRleCwgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlLCBib29sIGlzTWF0cml4
QW5pbWF0aW9uLCBjb25zdCBJbnRTaXplJiBib3hTaXplKTsKIAorICAgIGJvb2wgYXBwZW5kVG9V
bmNvbW1pdHRlZEFuaW1hdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBUcmFu
c2Zvcm1PcGVyYXRpb25zKiwgY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiBhbmltYXRp
b25OYW1lLCBjb25zdCBJbnRTaXplJiBib3hTaXplLCBpbnQgYW5pbWF0aW9uSW5kZXgsIGRvdWJs
ZSB0aW1lT2Zmc2V0LCBib29sIGlzTWF0cml4QW5pbWF0aW9uKTsKKwogICAgIGVudW0gTGF5ZXJD
aGFuZ2UgewogICAgICAgICBOb0NoYW5nZSA9IDAsCiAgICAgICAgIE5hbWVDaGFuZ2VkID0gMSA8
PCAxLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRl
ci9QbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2x1dHRlci9QbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb24uY3BwCmluZGV4IGM3OTg3
NjIwNWVjYmQ5ODU1MzRjYTI5NmQyZTVkMGI4ODA3MjI2YjcuLmRhMWJmYzRlNmM0MWRiNGI4NmI4
NjFjYzllMjg5ZGY3MmRiYzgxZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NsdXR0ZXIvUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL1BsYXRmb3JtQ2x1dHRlckFuaW1h
dGlvbi5jcHAKQEAgLTUwLDYgKzUwLDE0IEBAIHN0YXRpYyB2b2lkIHRpbWVsaW5lU3RhcnRlZENh
bGxiYWNrKENsdXR0ZXJUaW1lbGluZSosIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbioKICAgICBh
bmltYXRpb24tPmFuaW1hdGlvbkRpZFN0YXJ0KCk7CiB9CiAKK3N0YXRpYyBTdHJpbmcgdG9DbHV0
dGVyQWN0b3JQcm9wZXJ0eVN0cmluZyhjb25zdCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OlZh
bHVlRnVuY3Rpb25UeXBlIHZhbHVlRnVuY3Rpb25UeXBlKQoreworICAgIC8vIENsdXR0ZXJBY3Rv
ciBkb2Vzbid0IGhhdmUgJ3NjYWxlJyBhbmQgJ3RyYW5zbGF0ZScgcHJvcGVydGllcy4gU28gd2Ug
c2hvdWxkIHN1cHBvcnQKKyAgICAvLyAnc2NhbGUnIGFuZCAndHJhbnNsYXRlJyBWYWx1ZUZ1bmN0
aW9uVHlwZSBieSBjb21iaW5hdGlvbiBvZiBleGlzdGluZyBwcm9wZXJ0eSBhbmltYXRpb25zLiAK
KyAgICBjb25zdCBjaGFyKiBjbHV0dGVyQWN0b3JQcm9wZXJ0eVtdID0geyAiTm9Qcm9wZXJ0eSIs
ICJyb3RhdGlvbi1hbmdsZS14IiwgInJvdGF0aW9uLWFuZ2xlLXkiLCAicm90YXRpb24tYW5nbGUt
eiIsICJzY2FsZS14IiwgInNjYWxlLXkiLCAic2NhbGUteiIsICJOb1Byb3BlcnR5IiwgInRyYW5z
bGF0aW9uLXgiLCAidHJhbnNsYXRpb24teSIsICJ0cmFuc2xhdGlvbi16IiwgIk5vUHJvcGVydHki
IH07IAorICAgIHJldHVybiBjbHV0dGVyQWN0b3JQcm9wZXJ0eVt2YWx1ZUZ1bmN0aW9uVHlwZV07
Cit9CisKIHN0YXRpYyBDbHV0dGVyQW5pbWF0aW9uTW9kZSB0b0NsdXR0ZXJBbmltYXRpb25Nb2Rl
KGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbikKIHsKICAgICBBU1NFUlQodGlt
aW5nRnVuY3Rpb24pOwpAQCAtMTI0LDcgKzEzMiw3IEBAIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlv
bjo6flBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbigpCiAKIGJvb2wgUGxhdGZvcm1DbHV0dGVyQW5p
bWF0aW9uOjpzdXBwb3J0c1ZhbHVlRnVuY3Rpb24oKQogewotICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogZG91YmxlIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6YmVn
aW5UaW1lKCkgY29uc3QKQEAgLTE0MCwxNiArMTQ4LDEyIEBAIHZvaWQgUGxhdGZvcm1DbHV0dGVy
QW5pbWF0aW9uOjpzZXRCZWdpblRpbWUoZG91YmxlIHZhbHVlKQogCiBkb3VibGUgUGxhdGZvcm1D
bHV0dGVyQW5pbWF0aW9uOjpkdXJhdGlvbigpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fdHlwZSA9
PSBCYXNpYyk7Ci0KICAgICBkb3VibGUgZHVyYXRpb24gPSBjbHV0dGVyX3RpbWVsaW5lX2dldF9k
dXJhdGlvbihDTFVUVEVSX1RJTUVMSU5FKG1fYW5pbWF0aW9uLmdldCgpKSk7CiAgICAgcmV0dXJu
IGR1cmF0aW9uIC8gMTAwMDsKIH0KIAogdm9pZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OnNl
dER1cmF0aW9uKGRvdWJsZSB2YWx1ZSkKIHsKLSAgICBBU1NFUlQobV90eXBlID09IEJhc2ljKTsK
LQogICAgIC8vIENsdXR0ZXIgQW5pbWF0aW9uIHNldHMgdGhlIGR1cmF0aW9uIHRpbWUgaW4gbWls
bGlzZWNvbmRzLgogICAgIGdpbnQgZHVyYXRpb24gPSB2YWx1ZSAqIDEwMDA7CiAgICAgY2x1dHRl
cl90aW1lbGluZV9zZXRfZHVyYXRpb24oQ0xVVFRFUl9USU1FTElORShtX2FuaW1hdGlvbi5nZXQo
KSksIGR1cmF0aW9uKTsKQEAgLTI0NSwyNCArMjQ5LDI4IEBAIHZvaWQgUGxhdGZvcm1DbHV0dGVy
QW5pbWF0aW9uOjpzZXRBZGRpdGl2ZShib29sIHZhbHVlKQogewogICAgIGlmIChtX2FkZGl0aXZl
ID09IHZhbHVlKQogICAgICAgICByZXR1cm47CisKICAgICBtX2FkZGl0aXZlID0gdmFsdWU7CiB9
CiAKIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6VmFsdWVGdW5jdGlvblR5cGUgUGxhdGZvcm1D
bHV0dGVyQW5pbWF0aW9uOjp2YWx1ZUZ1bmN0aW9uKCkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHJldHVybiBOb1ZhbHVlRnVuY3Rpb247CisgICAgcmV0dXJuIG1fdmFsdWVG
dW5jdGlvblR5cGU7CiB9CiAKIHZvaWQgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpzZXRWYWx1
ZUZ1bmN0aW9uKFZhbHVlRnVuY3Rpb25UeXBlIHZhbHVlKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgaWYgKG1fdmFsdWVGdW5jdGlvblR5cGUgPT0gdmFsdWUpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fdmFsdWVGdW5jdGlvblR5cGUgPSB2YWx1ZTsKIH0KIAogdm9pZCBQbGF0Zm9y
bUNsdXR0ZXJBbmltYXRpb246OnNldEZyb21WYWx1ZShmbG9hdCB2YWx1ZSkKIHsKLSAgICBpZiAo
bV9mcm9tVmFsdWUgPT0gdmFsdWUpCisgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYyB8
fCBtX2Zyb21WYWx1ZSA9PSB2YWx1ZSkKICAgICAgICAgcmV0dXJuOworCiAgICAgbV9mcm9tVmFs
dWUgPSB2YWx1ZTsKIH0KIApAQCAtMjczLDcgKzI4MSwxMCBAQCB2b2lkIFBsYXRmb3JtQ2x1dHRl
ckFuaW1hdGlvbjo6c2V0RnJvbVZhbHVlKGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0
cml4JgogCiB2b2lkIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6c2V0RnJvbVZhbHVlKGNvbnN0
IEZsb2F0UG9pbnQzRCYgdmFsdWUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAo
YW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljIHx8IG1fZnJvbVZhbHVlM0QgPT0gdmFsdWUpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fZnJvbVZhbHVlM0QgPSB2YWx1ZTsKIH0KIAogdm9pZCBQbGF0
Zm9ybUNsdXR0ZXJBbmltYXRpb246OnNldEZyb21WYWx1ZShjb25zdCBXZWJDb3JlOjpDb2xvciYg
dmFsdWUpCkBAIC0yODgsOCArMjk5LDkgQEAgdm9pZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246
OmNvcHlGcm9tVmFsdWVGcm9tKGNvbnN0IFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbioKIAogdm9p
ZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OnNldFRvVmFsdWUoZmxvYXQgdmFsdWUpCiB7Ci0g
ICAgaWYgKG1fdG9WYWx1ZSA9PSB2YWx1ZSkKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJh
c2ljIHx8IG1fdG9WYWx1ZSA9PSB2YWx1ZSkKICAgICAgICAgcmV0dXJuOworCiAgICAgbV90b1Zh
bHVlID0gdmFsdWU7CiB9CiAKQEAgLTMwMCw3ICszMTIsMTAgQEAgdm9pZCBQbGF0Zm9ybUNsdXR0
ZXJBbmltYXRpb246OnNldFRvVmFsdWUoY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRy
aXgmIHYKIAogdm9pZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OnNldFRvVmFsdWUoY29uc3Qg
RmxvYXRQb2ludDNEJiB2YWx1ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChh
bmltYXRpb25UeXBlKCkgIT0gQmFzaWMgfHwgbV90b1ZhbHVlM0QgPT0gdmFsdWUpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fdG9WYWx1ZTNEID0gdmFsdWU7CiB9CiAKIHZvaWQgUGxhdGZvcm1D
bHV0dGVyQW5pbWF0aW9uOjpzZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiB2YWx1ZSkK
QEAgLTM3MiwyOCArMzg3LDc2IEBAIHZvaWQgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjphbmlt
YXRpb25EaWRTdGFydCgpCiBDbHV0dGVyVGltZWxpbmUqIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlv
bjo6dGltZWxpbmUoKSBjb25zdAogewogICAgIEFTU0VSVChtX2FuaW1hdGlvbik7Ci0gICAgQVNT
RVJUKG1fdHlwZSA9PSBCYXNpYyk7CiAgICAgcmV0dXJuIENMVVRURVJfVElNRUxJTkUobV9hbmlt
YXRpb24uZ2V0KCkpOwogfQogCi12b2lkIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6YWRkT3Bh
Y2l0eVRyYW5zaXRpb24oKQordm9pZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OmFkZENsdXR0
ZXJUcmFuc2l0aW9uRm9yUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eSwgY29uc3QgdW5z
aWduZWQgZnJvbVZhbHVlLCBjb25zdCB1bnNpZ25lZCB0b1ZhbHVlKQogewotICAgIEdSZWZQdHI8
Q2x1dHRlclRyYW5zaXRpb24+IHRyYW5zaXRpb24gPSBhZG9wdEdSZWYoY2x1dHRlcl9wcm9wZXJ0
eV90cmFuc2l0aW9uX25ldygib3BhY2l0eSIpKTsKLSAgICBjbHV0dGVyX3RyYW5zaXRpb25fc2V0
X2Zyb20odHJhbnNpdGlvbi5nZXQoKSwgR19UWVBFX1VJTlQsIHN0YXRpY19jYXN0PGd1aW50OD4o
MjU1ICogbV9mcm9tVmFsdWUpKTsKLSAgICBjbHV0dGVyX3RyYW5zaXRpb25fc2V0X3RvKHRyYW5z
aXRpb24uZ2V0KCksIEdfVFlQRV9VSU5ULCBzdGF0aWNfY2FzdDxndWludDg+KDI1NSAqIG1fdG9W
YWx1ZSkpOworICAgIEFTU0VSVChwcm9wZXJ0eSAhPSAiTm9Qcm9wZXJ0eSIpOworCisgICAgR1Jl
ZlB0cjxDbHV0dGVyVHJhbnNpdGlvbj4gdHJhbnNpdGlvbiA9IGFkb3B0R1JlZihjbHV0dGVyX3By
b3BlcnR5X3RyYW5zaXRpb25fbmV3KHByb3BlcnR5LnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBjbHV0
dGVyX3RyYW5zaXRpb25fc2V0X2Zyb20odHJhbnNpdGlvbi5nZXQoKSwgR19UWVBFX1VJTlQsIGZy
b21WYWx1ZSk7CisgICAgY2x1dHRlcl90cmFuc2l0aW9uX3NldF90byh0cmFuc2l0aW9uLmdldCgp
LCBHX1RZUEVfVUlOVCwgdG9WYWx1ZSk7CiAKICAgICBjbHV0dGVyX3RyYW5zaXRpb25fZ3JvdXBf
YWRkX3RyYW5zaXRpb24oQ0xVVFRFUl9UUkFOU0lUSU9OX0dST1VQKG1fYW5pbWF0aW9uLmdldCgp
KSwgdHJhbnNpdGlvbi5nZXQoKSk7CiB9CiAKK3ZvaWQgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9u
OjphZGRDbHV0dGVyVHJhbnNpdGlvbkZvclByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHks
IGNvbnN0IGZsb2F0IGZyb21WYWx1ZSwgY29uc3QgZmxvYXQgdG9WYWx1ZSkKK3sKKyAgICBBU1NF
UlQocHJvcGVydHkgIT0gIk5vUHJvcGVydHkiKTsKKworICAgIEdSZWZQdHI8Q2x1dHRlclRyYW5z
aXRpb24+IHRyYW5zaXRpb24gPSBhZG9wdEdSZWYoY2x1dHRlcl9wcm9wZXJ0eV90cmFuc2l0aW9u
X25ldyhwcm9wZXJ0eS51dGY4KCkuZGF0YSgpKSk7CisgICAgY2x1dHRlcl90cmFuc2l0aW9uX3Nl
dF9mcm9tKHRyYW5zaXRpb24uZ2V0KCksIEdfVFlQRV9GTE9BVCwgZnJvbVZhbHVlKTsKKyAgICBj
bHV0dGVyX3RyYW5zaXRpb25fc2V0X3RvKHRyYW5zaXRpb24uZ2V0KCksIEdfVFlQRV9GTE9BVCwg
dG9WYWx1ZSk7CisKKyAgICBjbHV0dGVyX3RyYW5zaXRpb25fZ3JvdXBfYWRkX3RyYW5zaXRpb24o
Q0xVVFRFUl9UUkFOU0lUSU9OX0dST1VQKG1fYW5pbWF0aW9uLmdldCgpKSwgdHJhbnNpdGlvbi5n
ZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjphZGRPcGFjaXR5VHJh
bnNpdGlvbigpCit7CisgICAgYWRkQ2x1dHRlclRyYW5zaXRpb25Gb3JQcm9wZXJ0eShTdHJpbmco
Im9wYWNpdHkiKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDI1NSAqIG1fZnJvbVZhbHVlKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KDI1NSAqIG1fdG9WYWx1ZSkpOworfQorCit2b2lkIFBsYXRmb3Jt
Q2x1dHRlckFuaW1hdGlvbjo6YWRkVHJhbnNmb3JtVHJhbnNpdGlvbigpCit7CisgICAgc3dpdGNo
IChtX3ZhbHVlRnVuY3Rpb25UeXBlKSB7CisgICAgY2FzZSBSb3RhdGVYOgorICAgIGNhc2UgUm90
YXRlWToKKyAgICBjYXNlIFJvdGF0ZVo6CisgICAgICAgIGFkZENsdXR0ZXJUcmFuc2l0aW9uRm9y
UHJvcGVydHkodG9DbHV0dGVyQWN0b3JQcm9wZXJ0eVN0cmluZyhtX3ZhbHVlRnVuY3Rpb25UeXBl
KSwgcmFkMmRlZyhtX2Zyb21WYWx1ZSksIHJhZDJkZWcobV90b1ZhbHVlKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgU2NhbGVYOgorICAgIGNhc2UgU2NhbGVZOgorICAgIGNhc2UgU2NhbGVa
OgorICAgIGNhc2UgVHJhbnNsYXRlWDoKKyAgICBjYXNlIFRyYW5zbGF0ZVk6CisgICAgY2FzZSBU
cmFuc2xhdGVaOgorICAgICAgICBhZGRDbHV0dGVyVHJhbnNpdGlvbkZvclByb3BlcnR5KHRvQ2x1
dHRlckFjdG9yUHJvcGVydHlTdHJpbmcobV92YWx1ZUZ1bmN0aW9uVHlwZSksIG1fZnJvbVZhbHVl
LCBtX3RvVmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNjYWxlOgorICAgICAgICBh
ZGRDbHV0dGVyVHJhbnNpdGlvbkZvclByb3BlcnR5KFN0cmluZygic2NhbGUteCIpLCBtX2Zyb21W
YWx1ZTNELngoKSwgbV90b1ZhbHVlM0QueCgpKTsKKyAgICAgICAgYWRkQ2x1dHRlclRyYW5zaXRp
b25Gb3JQcm9wZXJ0eShTdHJpbmcoInNjYWxlLXkiKSwgbV9mcm9tVmFsdWUzRC55KCksIG1fdG9W
YWx1ZTNELnkoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHJhbnNsYXRlOgorICAgICAg
ICBhZGRDbHV0dGVyVHJhbnNpdGlvbkZvclByb3BlcnR5KFN0cmluZygidHJhbnNsYXRpb24teCIp
LCBtX2Zyb21WYWx1ZTNELngoKSwgbV90b1ZhbHVlM0QueCgpKTsKKyAgICAgICAgYWRkQ2x1dHRl
clRyYW5zaXRpb25Gb3JQcm9wZXJ0eShTdHJpbmcoInRyYW5zbGF0aW9uLXkiKSwgbV9mcm9tVmFs
dWUzRC54KCksIG1fdG9WYWx1ZTNELnkoKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKwogdm9pZCBQbGF0Zm9y
bUNsdXR0ZXJBbmltYXRpb246OmFkZEFuaW1hdGlvbkZvcktleShHcmFwaGljc0xheWVyQWN0b3Iq
IHBsYXRmb3JtTGF5ZXIsIGNvbnN0IFN0cmluZyYga2V5KQogewogICAgIEFTU0VSVChhbmltYXRp
b25UeXBlKCkgPT0gQmFzaWMpOwogICAgIEFTU0VSVCghZ19vYmplY3RfZ2V0X2RhdGEoR19PQkpF
Q1QocGxhdGZvcm1MYXllciksIGtleS51dGY4KCkuZGF0YSgpKSk7CiAKKyAgICBtX2xheWVyID0g
Q0xVVFRFUl9BQ1RPUihwbGF0Zm9ybUxheWVyKTsKKwogICAgIGlmIChtX2FuaW1hdGVkUHJvcGVy
dHlUeXBlID09IE9wYWNpdHkpCiAgICAgICAgIGFkZE9wYWNpdHlUcmFuc2l0aW9uKCk7CiAgICAg
ZWxzZSBpZiAobV9hbmltYXRlZFByb3BlcnR5VHlwZSA9PSBUcmFuc2Zvcm0pCi0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBhZGRUcmFuc2Zvcm1UcmFuc2l0aW9uKCk7CiAg
ICAgZWxzZSBpZiAobV9hbmltYXRlZFByb3BlcnR5VHlwZSA9PSBCYWNrZ3JvdW5kQ29sb3IpCiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIGVsc2UKQEAgLTQwNiw3ICs0NjksOSBA
QCB2b2lkIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6YWRkQW5pbWF0aW9uRm9yS2V5KEdyYXBo
aWNzTGF5ZXJBY3RvciogcGxhdGZvcm1MYQogICAgIGdfc2lnbmFsX2Nvbm5lY3QoY2x1dHRlclRp
bWVsaW5lLCAic3RhcnRlZCIsIEdfQ0FMTEJBQ0sodGltZWxpbmVTdGFydGVkQ2FsbGJhY2spLCB0
aGlzKTsKICAgICBnX29iamVjdF9zZXRfZGF0YShHX09CSkVDVChwbGF0Zm9ybUxheWVyKSwga2V5
LnV0ZjgoKS5kYXRhKCksIHRoaXMpOwogCi0gICAgbV9sYXllciA9IENMVVRURVJfQUNUT1IocGxh
dGZvcm1MYXllcik7CisgICAgLy8gSWYgY2x1dHRlciBjb3ZlcnMgdmFsdWVGdW5jdGlvbiB0eXBl
IGFuaW1hdGlvbnMsIHdlIHNob3VsZCByZWxlYXNlIGtlZXBpbmcgdHJhbnNmb3JtIG1hdHJpeC4K
KyAgICAvLyBPdGhlcndpc2UsIHRoZSB0cmFuc2Zvcm1hdGlvbiBpcyBhcHBsaWVkIHR3aWNlIHVu
ZXhwZWN0ZWRseS4gU2VlIGdyYXBoaWNzTGF5ZXJBY3RvckFwcGx5VHJhbnNmb3JtLgorICAgIGdy
YXBoaWNzTGF5ZXJBY3RvclNldFRyYW5zZm9ybShwbGF0Zm9ybUxheWVyLCAwKTsKIAogICAgIGNs
dXR0ZXJfYWN0b3JfYWRkX3RyYW5zaXRpb24obV9sYXllci5nZXQoKSwga2V5LnV0ZjgoKS5kYXRh
KCksIENMVVRURVJfVFJBTlNJVElPTihtX2FuaW1hdGlvbi5nZXQoKSkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9QbGF0Zm9ybUNsdXR0
ZXJBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIv
UGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uLmgKaW5kZXggNjdiMWU0ODUyMTEzNjU0ZjA0YTczNTAw
NzU4YzhjYWI5NDM5M2ZkOC4uYjg5MmRkM2NjZjUxYTQ1Y2Y5ZGNhOWFlNzkzNzRjOWE0MTI1NmFl
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9Q
bGF0Zm9ybUNsdXR0ZXJBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jbHV0dGVyL1BsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbi5oCkBAIC0xMzgsNyArMTM4
LDExIEBAIHByaXZhdGU6CiAgICAgQ2x1dHRlclRpbWVsaW5lKiB0aW1lbGluZSgpIGNvbnN0Owog
ICAgIEFuaW1hdGVkUHJvcGVydHlUeXBlIHN0cmluZ1RvQW5pbWF0ZWRQcm9wZXJ0eVR5cGUoY29u
c3QgU3RyaW5nJiBrZXlQYXRoKSBjb25zdDsKIAorICAgIHZvaWQgYWRkQ2x1dHRlclRyYW5zaXRp
b25Gb3JQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5LCBjb25zdCB1bnNpZ25lZCBmcm9t
VmFsdWUsIGNvbnN0IHVuc2lnbmVkIHRvVmFsdWUpOworICAgIHZvaWQgYWRkQ2x1dHRlclRyYW5z
aXRpb25Gb3JQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5LCBjb25zdCBmbG9hdCBmcm9t
VmFsdWUsIGNvbnN0IGZsb2F0IHRvVmFsdWUpOworCiAgICAgdm9pZCBhZGRPcGFjaXR5VHJhbnNp
dGlvbigpOworICAgIHZvaWQgYWRkVHJhbnNmb3JtVHJhbnNpdGlvbigpOwogCiAgICAgQW5pbWF0
aW9uVHlwZSBtX3R5cGU7CiAgICAgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgbV9hbmltYXRlZFByb3Bl
cnR5VHlwZTsKQEAgLTE1MSw2ICsxNTUsOSBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fZnJvbVZh
bHVlOwogICAgIGZsb2F0IG1fdG9WYWx1ZTsKIAorICAgIEZsb2F0UG9pbnQzRCBtX2Zyb21WYWx1
ZTNEOworICAgIEZsb2F0UG9pbnQzRCBtX3RvVmFsdWUzRDsKKwogICAgIGZsb2F0IG1fcmVwZWF0
Q291bnQ7CiAKICAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogbV90aW1pbmdGdW5jdGlvbjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187482</attachid>
            <date>2013-02-10 09:00:52 -0800</date>
            <delta_ts>2013-02-11 08:44:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109363-20130211015723.patch</filename>
            <type>text/plain</type>
            <size>27718</size>
            <attacher name="ChangSeok Oh">kevin.cs.oh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWIwYmEzYTRiMzM0NWQ3
OTYxYWI1MmNmOTAxMDYwYTAyMzNkZDNjYi4uYzIwNjVkZDMxNTM1ZTRkYzM2ZWMyNGI2NjRhODM5
OWZlOTU0MGRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEzLTAyLTEwICBDaGFu
Z1Nlb2sgT2ggIDxzaGl2YW1pZG93QGdtYWlsLmNvbT4KKworICAgICAgICBbR1RLXVtBQ10gSW1w
bGVtZW50IGJhc2ljIHRyYW5zZm9ybSBhbmltYXRpb25zIHdpdGggY2x1dHRlciBhYyBiYWNrZW5k
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkzNjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnQgYmFzaWMgdHJhbnNmb3JtIGFuaW1hdGlvbiB3aXRoIGNsdXR0ZXIgYWMgYmFja2VuZC4KKyAg
ICAgICAgR3JhcGhpY3NMYXllckNsdXR0ZXIgaXMgYWxtb3N0IHNhbWUgd2l0aCBHcmFwaGljc0xh
eWVyQ0EuIEFuZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb24KKyAgICAgICAgaW50ZXJmYWNlcyBh
cmUgYWxzbyBzaW1pbGFyIHdpdGggUGxhdGZvcm1DQUFuaW1hdGlvbiwgYnV0IHRoZXkgYXJlIGlt
cGxlbWVudGVkCisgICAgICAgIHdpdGggbmF0aXZlIGNsdXR0ZXIgQVBJcy4gQ2x1dHRlciBiYWNr
ZW5kIEFDIHN1cHBvcnRzIGEgYmFzaWMgc2luZ2xlIHRyYW5zZm9ybSBhbmltYXRpb24KKyAgICAg
ICAgd2l0aCB0aGlzIHBhdGNoIG5vdywgYnV0IGFkZGl0aXZlIGFuaW1hdGlvbiBjb21iaW5hdGlv
biBhbmQga2V5ZnJhbWUgYW5pbWF0aW9uCisgICAgICAgIGFyZSBub3Qgc3VwcG9ydGVkIHlldC4K
KworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIGFuaW1hdGlvbiB0ZXN0cy4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckFjdG9yLmNwcDoKKyAg
ICAgICAgKGdyYXBoaWNzTGF5ZXJBY3RvclNldFRyYW5zZm9ybSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0xheWVyQ2x1dHRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppc1RyYW5zZm9ybVR5cGVUcmFuc2Zvcm1hdGlvbk1hdHJpeCk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVHJhbnNmb3JtVHlwZUZsb2F0UG9pbnQzRCk6
CisgICAgICAgIChXZWJDb3JlOjppc1RyYW5zZm9ybVR5cGVOdW1iZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRW
YWx1ZUZ1bmN0aW9uTmFtZUZvclRyYW5zZm9ybU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ2x1dHRlcjo6c2V0VHJhbnNmb3JtQW5pbWF0aW9uRW5kcG9pbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDbHV0dGVyOjphcHBlbmRUb1VuY29tbWl0
dGVkQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2x1dHRlcjo6
Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIuaDoKKyAgICAgICAgKEdy
YXBoaWNzTGF5ZXJDbHV0dGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVy
L1BsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0NsdXR0
ZXJBY3RvclByb3BlcnR5U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpzdXBwb3J0c1ZhbHVlRnVuY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpkdXJhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OnNldER1cmF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6c2V0QWRkaXRpdmUp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjp2YWx1ZUZ1bmN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6c2V0VmFs
dWVGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246
OnNldEZyb21WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNsdXR0ZXJBbmltYXRp
b246OnNldFRvVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DbHV0dGVyQW5pbWF0
aW9uOjp0aW1lbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNsdXR0ZXJBbmltYXRp
b246OmFkZENsdXR0ZXJUcmFuc2l0aW9uRm9yUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjphZGRPcGFjaXR5VHJhbnNpdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OmFkZFRyYW5zZm9ybVRyYW5zaXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjphZGRBbmlt
YXRpb25Gb3JLZXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvUGxhdGZv
cm1DbHV0dGVyQW5pbWF0aW9uLmg6CisgICAgICAgIChQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb24p
OgorCiAyMDEzLTAyLTEwICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW5kZXJTdHlsZSBzaG91bGQgdXNlIGNvcHktb24td3JpdGUgaW5oZXJpdGFuY2UgZm9y
IE5pbmVQaWVjZUltYWdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2x1dHRlci9HcmFwaGljc0xheWVyQWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0xheWVyQWN0b3IuY3BwCmluZGV4IGQyZWZk
MTY2MzM5MDkyZGUxOGFhY2JlMmZjNTI1MTFmMDg2ZjQ5NmMuLmY1NTZkYWI3NjFjNDk0MWViZWVm
NGQ0Mjc0OWMxNmJhYTJmN2U5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckFjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJBY3Rvci5jcHAKQEAg
LTM5Miw3ICszOTIsNyBAQCB2b2lkIGdyYXBoaWNzTGF5ZXJBY3RvclNldFRyYW5zZm9ybShHcmFw
aGljc0xheWVyQWN0b3IqIGxheWVyLCBjb25zdCBDb2dsTWF0cml4KgogICAgICAgICBuZWVkVG9S
ZWRyYXcgPSB0cnVlOwogICAgIH0KIAotICAgIGlmICghY29nbF9tYXRyaXhfaXNfaWRlbnRpdHko
bWF0cml4KSkgeworICAgIGlmIChtYXRyaXggJiYgIWNvZ2xfbWF0cml4X2lzX2lkZW50aXR5KG1h
dHJpeCkpIHsKICAgICAgICAgcHJpdi0+bWF0cml4ID0gY29nbF9tYXRyaXhfY29weShtYXRyaXgp
OwogICAgICAgICBuZWVkVG9SZWRyYXcgPSB0cnVlOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0xheWVyQ2x1
dHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dyYXBo
aWNzTGF5ZXJDbHV0dGVyLmNwcAppbmRleCBkNzk5MTg3MjNlZGIxNDNiYjdlMzdmOGZlZjZmYzZh
YzI4N2I2N2MxLi41Mzc5NmVjODk3Nzk2ZDliOTM5YzIxMjFmMTI1M2QwMWJiNTcxOTgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dyYXBoaWNz
TGF5ZXJDbHV0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
bHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmNwcApAQCAtNTMsNiArNTMsMTQ4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIC8vIFNvIHNlbmQgYSB2ZXJ5IHNtYWxsIHZhbHVlIGluc3RlYWQuCiBz
dGF0aWMgY29uc3QgZmxvYXQgY0FuaW1hdGlvbkFsbW9zdFplcm9EdXJhdGlvbiA9IDFlLTNmOwog
CitzdGF0aWMgYm9vbCBpc1RyYW5zZm9ybVR5cGVUcmFuc2Zvcm1hdGlvbk1hdHJpeChUcmFuc2Zv
cm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHJhbnNmb3JtVHlwZSkKK3sKKyAgICBzd2l0Y2gg
KHRyYW5zZm9ybVR5cGUpIHsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFV19YOgor
ICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXX1k6CisgICAgY2FzZSBUcmFuc2Zvcm1P
cGVyYXRpb246OlNLRVc6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJWDoKKyAg
ICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNEOgorICAgIGNhc2UgVHJhbnNmb3Jt
T3BlcmF0aW9uOjpNQVRSSVhfM0Q6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlBFUlNQ
RUNUSVZFOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpJREVOVElUWToKKyAgICBjYXNl
IFRyYW5zZm9ybU9wZXJhdGlvbjo6Tk9ORToKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworc3RhdGljIGJvb2wgaXNU
cmFuc2Zvcm1UeXBlRmxvYXRQb2ludDNEKFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlw
ZSB0cmFuc2Zvcm1UeXBlKQoreworICAgIHN3aXRjaCAodHJhbnNmb3JtVHlwZSkgeworICAgIGNh
c2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRToKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlv
bjo6U0NBTEVfM0Q6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURToKKyAg
ICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFXzNEOgorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitz
dGF0aWMgYm9vbCBpc1RyYW5zZm9ybVR5cGVOdW1iZXIoVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVy
YXRpb25UeXBlIHRyYW5zZm9ybVR5cGUpCit7CisgICAgcmV0dXJuICFpc1RyYW5zZm9ybVR5cGVU
cmFuc2Zvcm1hdGlvbk1hdHJpeCh0cmFuc2Zvcm1UeXBlKSAmJiAhaXNUcmFuc2Zvcm1UeXBlRmxv
YXRQb2ludDNEKHRyYW5zZm9ybVR5cGUpOworfQorCitzdGF0aWMgdm9pZCBnZXRUcmFuc2Zvcm1G
dW5jdGlvblZhbHVlKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogdHJhbnNmb3JtT3AsIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0cmFuc2Zvcm1UeXBlLCBjb25zdCBJbnRTaXpl
JiBzaXplLCBmbG9hdCYgdmFsdWUpCit7CisgICAgc3dpdGNoICh0cmFuc2Zvcm1UeXBlKSB7Cisg
ICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURToKKyAgICBjYXNlIFRyYW5zZm9ybU9w
ZXJhdGlvbjo6Uk9UQVRFX1g6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9Z
OgorICAgICAgICB2YWx1ZSA9IHRyYW5zZm9ybU9wID8gbmFycm93UHJlY2lzaW9uVG9GbG9hdChk
ZWcycmFkKHN0YXRpY19jYXN0PGNvbnN0IFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5z
Zm9ybU9wKS0+YW5nbGUoKSkpIDogMDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUcmFuc2Zv
cm1PcGVyYXRpb246OlNDQUxFX1g6CisgICAgICAgIHZhbHVlID0gdHJhbnNmb3JtT3AgPyBuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KHN0YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJhbnNmb3JtT3BlcmF0
aW9uKj4odHJhbnNmb3JtT3ApLT54KCkpIDogMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBU
cmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1k6CisgICAgICAgIHZhbHVlID0gdHJhbnNmb3JtT3Ag
PyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHN0YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJhbnNmb3Jt
T3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT55KCkpIDogMTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1o6CisgICAgICAgIHZhbHVlID0gdHJhbnNm
b3JtT3AgPyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHN0YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJh
bnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT56KCkpIDogMTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9YOgorICAgICAgICB2YWx1
ZSA9IHRyYW5zZm9ybU9wID8gbmFycm93UHJlY2lzaW9uVG9GbG9hdChzdGF0aWNfY2FzdDxjb25z
dCBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPngoc2l6ZSkpIDog
MDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFU
RV9ZOgorICAgICAgICB2YWx1ZSA9IHRyYW5zZm9ybU9wID8gbmFycm93UHJlY2lzaW9uVG9GbG9h
dChzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zv
cm1PcCktPnkoc2l6ZSkpIDogMDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUcmFuc2Zvcm1P
cGVyYXRpb246OlRSQU5TTEFURV9aOgorICAgICAgICB2YWx1ZSA9IHRyYW5zZm9ybU9wID8gbmFy
cm93UHJlY2lzaW9uVG9GbG9hdChzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2xhdGVUcmFuc2Zvcm1P
cGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPnooc2l6ZSkpIDogMDsKKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBnZXRU
cmFuc2Zvcm1GdW5jdGlvblZhbHVlKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogdHJhbnNmb3Jt
T3AsIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0cmFuc2Zvcm1UeXBlLCBjb25z
dCBJbnRTaXplJiBzaXplLCBGbG9hdFBvaW50M0QmIHZhbHVlKQoreworICAgIHN3aXRjaCAodHJh
bnNmb3JtVHlwZSkgeworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRToKKyAgICBj
YXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfM0Q6CisgICAgICAgIHZhbHVlLnNldFgodHJh
bnNmb3JtT3AgPyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHN0YXRpY19jYXN0PGNvbnN0IFNjYWxl
VHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT54KCkpIDogMSk7CisgICAgICAgIHZh
bHVlLnNldFkodHJhbnNmb3JtT3AgPyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHN0YXRpY19jYXN0
PGNvbnN0IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT55KCkpIDogMSk7
CisgICAgICAgIHZhbHVlLnNldFoodHJhbnNmb3JtT3AgPyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KHN0YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3Ap
LT56KCkpIDogMSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpUUkFOU0xBVEU6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV8zRDoK
KyAgICAgICAgdmFsdWUuc2V0WCh0cmFuc2Zvcm1PcCA/IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
c3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3Jt
T3ApLT54KHNpemUpKSA6IDApOworICAgICAgICB2YWx1ZS5zZXRZKHRyYW5zZm9ybU9wID8gbmFy
cm93UHJlY2lzaW9uVG9GbG9hdChzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2xhdGVUcmFuc2Zvcm1P
cGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPnkoc2l6ZSkpIDogMCk7CisgICAgICAgIHZhbHVlLnNl
dFoodHJhbnNmb3JtT3AgPyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHN0YXRpY19jYXN0PGNvbnN0
IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eihzaXplKSkgOiAw
KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQor
fQorCitzdGF0aWMgdm9pZCBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGNvbnN0IFRyYW5zZm9y
bU9wZXJhdGlvbiogdHJhbnNmb3JtT3AsIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlw
ZSB0cmFuc2Zvcm1UeXBlLCBjb25zdCBJbnRTaXplJiBzaXplLCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgdmFsdWUpCit7CisgICAgc3dpdGNoICh0cmFuc2Zvcm1UeXBlKSB7CisgICAgY2FzZSBUcmFu
c2Zvcm1PcGVyYXRpb246OlNLRVdfWDoKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tF
V19ZOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXOgorICAgIGNhc2UgVHJhbnNm
b3JtT3BlcmF0aW9uOjpNQVRSSVg6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFU
RV8zRDoKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6TUFUUklYXzNEOgorICAgIGNhc2Ug
VHJhbnNmb3JtT3BlcmF0aW9uOjpQRVJTUEVDVElWRToKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJh
dGlvbjo6SURFTlRJVFk6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok5PTkU6CisgICAg
ICAgIGlmICh0cmFuc2Zvcm1PcCkKKyAgICAgICAgICAgIHRyYW5zZm9ybU9wLT5hcHBseSh2YWx1
ZSwgc2l6ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHZhbHVlLm1ha2VJZGVudGl0eSgp
OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9Cit9
CisKK3N0YXRpYyBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OlZhbHVlRnVuY3Rpb25UeXBlIGdl
dFZhbHVlRnVuY3Rpb25OYW1lRm9yVHJhbnNmb3JtT3BlcmF0aW9uKFRyYW5zZm9ybU9wZXJhdGlv
bjo6T3BlcmF0aW9uVHlwZSB0cmFuc2Zvcm1UeXBlKQoreworICAgIC8vIFVzZSBsaXRlcmFsIHN0
cmluZ3MgdG8gYXZvaWQgbGluay10aW1lIGRlcGVuZGVuY3kgb24gdGhvc2Ugc3ltYm9scy4KKyAg
ICBzd2l0Y2ggKHRyYW5zZm9ybVR5cGUpIHsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6
Uk9UQVRFX1g6CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OlJvdGF0
ZVg7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9ZOgorICAgICAgICByZXR1
cm4gUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpSb3RhdGVZOworICAgIGNhc2UgVHJhbnNmb3Jt
T3BlcmF0aW9uOjpST1RBVEU6CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRp
b246OlJvdGF0ZVo7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1g6CisgICAg
ICAgIHJldHVybiBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OlNjYWxlWDsKKyAgICBjYXNlIFRy
YW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWToKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ2x1dHRl
ckFuaW1hdGlvbjo6U2NhbGVZOworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9a
OgorICAgICAgICByZXR1cm4gUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpTY2FsZVo7CisgICAg
Y2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9YOgorICAgICAgICByZXR1cm4gUGxh
dGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpUcmFuc2xhdGVYOworICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpUUkFOU0xBVEVfWToKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ2x1dHRlckFuaW1h
dGlvbjo6VHJhbnNsYXRlWTsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRF
X1o6CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OlRyYW5zbGF0ZVo7
CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFOgorICAgIGNhc2UgVHJhbnNmb3Jt
T3BlcmF0aW9uOjpTQ0FMRV8zRDoKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ2x1dHRlckFuaW1h
dGlvbjo6U2NhbGU7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURToKKyAg
ICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFXzNEOgorICAgICAgICByZXR1cm4g
UGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpUcmFuc2xhdGU7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgcmV0dXJuIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6Tm9WYWx1ZUZ1bmN0aW9uOworICAg
IH0KK30KKwogc3RhdGljIFN0cmluZyBwcm9wZXJ0eUlkVG9TdHJpbmcoQW5pbWF0ZWRQcm9wZXJ0
eUlEIHByb3BlcnR5KQogewogICAgIHN3aXRjaCAocHJvcGVydHkpIHsKQEAgLTYxOCwxNCArNzYw
LDEyMiBAQCBib29sIEdyYXBoaWNzTGF5ZXJDbHV0dGVyOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25L
ZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpcwogCiBib29sIEdyYXBoaWNzTGF5ZXJDbHV0
dGVyOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxp
c3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIFBsYXRmb3JtQ2x1dHRl
ckFuaW1hdGlvbiogYmFzaWNBbmltLCBpbnQgZnVuY3Rpb25JbmRleCwgVHJhbnNmb3JtT3BlcmF0
aW9uOjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybU9wVHlwZSwgYm9vbCBpc01hdHJpeEFuaW1hdGlv
biwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
IHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQodmFsdWVMaXN0LnNpemUoKSA9PSAyKTsKKworICAg
IGJvb2wgZm9yd2FyZHMgPSBhbmltYXRpb24tPmRpcmVjdGlvbklzRm9yd2FyZHMoKTsKKworICAg
IHVuc2lnbmVkIGZyb21JbmRleCA9ICFmb3J3YXJkczsKKyAgICB1bnNpZ25lZCB0b0luZGV4ID0g
Zm9yd2FyZHM7CisKKyAgICBjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSogc3RhcnRWYWx1
ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0
LmF0KGZyb21JbmRleCkpOworICAgIGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKiBlbmRW
YWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKj4odmFsdWVM
aXN0LmF0KHRvSW5kZXgpKTsKKworICAgIGlmIChpc01hdHJpeEFuaW1hdGlvbikgeworICAgICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBmcm9tVHJhbnNmb3JtLCB0b1RyYW5zZm9ybTsKKyAgICAg
ICAgc3RhcnRWYWx1ZS0+dmFsdWUoKS0+YXBwbHkoYm94U2l6ZSwgZnJvbVRyYW5zZm9ybSk7Cisg
ICAgICAgIGVuZFZhbHVlLT52YWx1ZSgpLT5hcHBseShib3hTaXplLCB0b1RyYW5zZm9ybSk7CisK
KyAgICAgICAgLy8gRklYTUU6IElmIGFueSBtYXRyaXggaXMgc2luZ3VsYXIsIENBIHdvbid0IGFu
aW1hdGUgaXQgY29ycmVjdGx5LgorICAgICAgICAvLyBTbyBmYWxsIGJhY2sgdG8gc29mdHdhcmUg
YW5pbWF0aW9uLCBCdXQgaXQncyBub3Qgc3VyZSBpbiBjbHV0dGVyIGNhc2UuCisgICAgICAgIC8v
IFdlIG5lZWQgdG8gaW52ZXN0aWdhdGUgaXQgbW9yZS4KKyAgICAgICAgaWYgKCFmcm9tVHJhbnNm
b3JtLmlzSW52ZXJ0aWJsZSgpIHx8ICF0b1RyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBiYXNpY0FuaW0tPnNldEZyb21WYWx1ZShm
cm9tVHJhbnNmb3JtKTsKKyAgICAgICAgYmFzaWNBbmltLT5zZXRUb1ZhbHVlKHRvVHJhbnNmb3Jt
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoaXNUcmFuc2Zvcm1UeXBlTnVtYmVyKHRyYW5z
Zm9ybU9wVHlwZSkpIHsKKyAgICAgICAgICAgIGZsb2F0IGZyb21WYWx1ZTsKKyAgICAgICAgICAg
IGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rp
b25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgZnJvbVZhbHVlKTsKKyAgICAgICAg
ICAgIGJhc2ljQW5pbS0+c2V0RnJvbVZhbHVlKGZyb21WYWx1ZSk7CisKKyAgICAgICAgICAgIGZs
b2F0IHRvVmFsdWU7CisgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGVuZFZh
bHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXpl
LCB0b1ZhbHVlKTsKKyAgICAgICAgICAgIGJhc2ljQW5pbS0+c2V0VG9WYWx1ZSh0b1ZhbHVlKTsK
KyAgICAgICAgfSBlbHNlIGlmIChpc1RyYW5zZm9ybVR5cGVGbG9hdFBvaW50M0QodHJhbnNmb3Jt
T3BUeXBlKSkgeworICAgICAgICAgICAgRmxvYXRQb2ludDNEIGZyb21WYWx1ZTsKKyAgICAgICAg
ICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVu
Y3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgZnJvbVZhbHVlKTsKKyAgICAg
ICAgICAgIGJhc2ljQW5pbS0+c2V0RnJvbVZhbHVlKGZyb21WYWx1ZSk7CisKKyAgICAgICAgICAg
IEZsb2F0UG9pbnQzRCB0b1ZhbHVlOworICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25W
YWx1ZShlbmRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlw
ZSwgYm94U2l6ZSwgdG9WYWx1ZSk7CisgICAgICAgICAgICBiYXNpY0FuaW0tPnNldFRvVmFsdWUo
dG9WYWx1ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBmcm9tVmFsdWU7CisgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKHN0
YXJ0VmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpLCB0cmFuc2Zvcm1PcFR5cGUsIGJv
eFNpemUsIGZyb21WYWx1ZSk7CisgICAgICAgICAgICBiYXNpY0FuaW0tPnNldEZyb21WYWx1ZShm
cm9tVmFsdWUpOworCisgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0b1ZhbHVlOwor
ICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShlbmRWYWx1ZS0+dmFsdWUoKS0+
YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgdG9WYWx1ZSk7Cisg
ICAgICAgICAgICBiYXNpY0FuaW0tPnNldFRvVmFsdWUodG9WYWx1ZSk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQgZm9yIDIta2V5ZnJhbWUgYW5pbWF0
aW9ucywgc28gd2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRoZSBzdGFydAorICAgIC8vIGZvciBh
IHRpbWluZyBmdW5jdGlvbi4gRXZlbiBpbiB0aGUgcmV2ZXJzaW5nIGFuaW1hdGlvbiBjYXNlLCB0
aGUgZmlyc3Qga2V5ZnJhbWUgcHJvdmlkZXMgdGhlIHRpbWluZyBmdW5jdGlvbi4KKyAgICBjb25z
dCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1h
dGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgYW5pbWF0aW9uKTsKKyAgICBiYXNpY0FuaW0tPnNl
dFRpbWluZ0Z1bmN0aW9uKHRpbWluZ0Z1bmN0aW9uLCAhZm9yd2FyZHMpOworCisgICAgUGxhdGZv
cm1DbHV0dGVyQW5pbWF0aW9uOjpWYWx1ZUZ1bmN0aW9uVHlwZSB2YWx1ZUZ1bmN0aW9uID0gZ2V0
VmFsdWVGdW5jdGlvbk5hbWVGb3JUcmFuc2Zvcm1PcGVyYXRpb24odHJhbnNmb3JtT3BUeXBlKTsK
KyAgICBpZiAodmFsdWVGdW5jdGlvbiAhPSBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246Ok5vVmFs
dWVGdW5jdGlvbikKKyAgICAgICAgYmFzaWNBbmltLT5zZXRWYWx1ZUZ1bmN0aW9uKHZhbHVlRnVu
Y3Rpb24pOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgR3JhcGhpY3NMYXllckNsdXR0
ZXI6OmFwcGVuZFRvVW5jb21taXR0ZWRBbmltYXRpb25zKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0
JiB2YWx1ZUxpc3QsIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIG9wZXJhdGlvbnMsIGNvbnN0
IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGNvbnN0
IEludFNpemUmIGJveFNpemUsIGludCBhbmltYXRpb25JbmRleCwgZG91YmxlIHRpbWVPZmZzZXQs
IGJvb2wgaXNNYXRyaXhBbmltYXRpb24pCit7CisgICAgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVy
YXRpb25UeXBlIHRyYW5zZm9ybU9wID0gaXNNYXRyaXhBbmltYXRpb24gPyBUcmFuc2Zvcm1PcGVy
YXRpb246Ok1BVFJJWF8zRCA6IG9wZXJhdGlvbnMtPm9wZXJhdGlvbnMoKS5hdChhbmltYXRpb25J
bmRleCktPmdldE9wZXJhdGlvblR5cGUoKTsKKyAgICBib29sIGFkZGl0aXZlID0gYW5pbWF0aW9u
SW5kZXggPiAwOworICAgIGJvb2wgaXNLZXlmcmFtZSA9IHZhbHVlTGlzdC5zaXplKCkgPiAyOwor
CisgICAgUmVmUHRyPFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbj4gY2x1dHRlckFuaW1hdGlvbjsK
KyAgICBib29sIHZhbGlkTWF0cmljZXMgPSB0cnVlOworICAgIGlmIChpc0tleWZyYW1lKSB7Cisg
ICAgICAgIGNsdXR0ZXJBbmltYXRpb24gPSBjcmVhdGVLZXlmcmFtZUFuaW1hdGlvbihhbmltYXRp
b24sIHByb3BlcnR5SWRUb1N0cmluZyh2YWx1ZUxpc3QucHJvcGVydHkoKSksIGFkZGl0aXZlKTsK
KyAgICAgICAgdmFsaWRNYXRyaWNlcyA9IHNldFRyYW5zZm9ybUFuaW1hdGlvbktleWZyYW1lcyh2
YWx1ZUxpc3QsIGFuaW1hdGlvbiwgY2x1dHRlckFuaW1hdGlvbi5nZXQoKSwgYW5pbWF0aW9uSW5k
ZXgsIHRyYW5zZm9ybU9wLCBpc01hdHJpeEFuaW1hdGlvbiwgYm94U2l6ZSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgY2x1dHRlckFuaW1hdGlvbiA9IGNyZWF0ZUJhc2ljQW5pbWF0aW9uKGFuaW1h
dGlvbiwgcHJvcGVydHlJZFRvU3RyaW5nKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSwgYWRkaXRpdmUp
OworICAgICAgICB2YWxpZE1hdHJpY2VzID0gc2V0VHJhbnNmb3JtQW5pbWF0aW9uRW5kcG9pbnRz
KHZhbHVlTGlzdCwgYW5pbWF0aW9uLCBjbHV0dGVyQW5pbWF0aW9uLmdldCgpLCBhbmltYXRpb25J
bmRleCwgdHJhbnNmb3JtT3AsIGlzTWF0cml4QW5pbWF0aW9uLCBib3hTaXplKTsKKyAgICB9CisK
KyAgICBpZiAoIXZhbGlkTWF0cmljZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1f
dW5jb21pdHRlZEFuaW1hdGlvbnMuYXBwZW5kKExheWVyUHJvcGVydHlBbmltYXRpb24oY2x1dHRl
ckFuaW1hdGlvbiwgYW5pbWF0aW9uTmFtZSwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFuaW1hdGlv
bkluZGV4LCB0aW1lT2Zmc2V0KSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgR3JhcGhp
Y3NMYXllckNsdXR0ZXI6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5ZnJhbWVzKGNv
bnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0
aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25z
dCBJbnRTaXplJiBib3hTaXplKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
IGZhbHNlOworICAgIEFTU0VSVCh2YWx1ZUxpc3QucHJvcGVydHkoKSA9PSBBbmltYXRlZFByb3Bl
cnR5V2Via2l0VHJhbnNmb3JtKTsKKworICAgIGJvb2wgaGFzQmlnUm90YXRpb247CisgICAgaW50
IGxpc3RJbmRleCA9IHZhbGlkYXRlVHJhbnNmb3JtT3BlcmF0aW9ucyh2YWx1ZUxpc3QsIGhhc0Jp
Z1JvdGF0aW9uKTsKKyAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zKiBvcGVyYXRpb25zID0g
KGxpc3RJbmRleCA+PSAwKSA/IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZh
bHVlKj4odmFsdWVMaXN0LmF0KGxpc3RJbmRleCkpLT52YWx1ZSgpIDogMDsKKworICAgIC8vIFdl
IG5lZWQgdG8gZmFsbCBiYWNrIHRvIHNvZnR3YXJlIGFuaW1hdGlvbiBpZiB3ZSBkb24ndCBoYXZl
IHNldFZhbHVlRnVuY3Rpb246LCBhbmQKKyAgICAvLyB3ZSB3b3VsZCBuZWVkIHRvIGFuaW1hdGUg
ZWFjaCBpbmNvbWluZyB0cmFuc2Zvcm0gZnVuY3Rpb24gc2VwYXJhdGVseS4gVGhpcyBpcyB0aGUK
KyAgICAvLyBjYXNlIGlmIHdlIGhhdmUgYSByb3RhdGlvbiA+PSAxODAgb3Igd2UgaGF2ZSBtb3Jl
IHRoYW4gb25lIHRyYW5zZm9ybSBmdW5jdGlvbi4KKyAgICBpZiAoKGhhc0JpZ1JvdGF0aW9uIHx8
IChvcGVyYXRpb25zICYmIG9wZXJhdGlvbnMtPnNpemUoKSA+IDEpKSAmJiAhUGxhdGZvcm1DbHV0
dGVyQW5pbWF0aW9uOjpzdXBwb3J0c1ZhbHVlRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgYm9vbCB2YWxpZE1hdHJpY2VzID0gdHJ1ZTsKKworICAgIC8vIElmIGZ1bmN0
aW9uIGxpc3RzIGRvbid0IG1hdGNoIHdlIGRvIGEgbWF0cml4IGFuaW1hdGlvbiwgb3RoZXJ3aXNl
IHdlIGRvIGEgY29tcG9uZW50IGhhcmR3YXJlIGFuaW1hdGlvbi4KKyAgICAvLyBBbHNvLCB3ZSBj
YW4ndCBkbyBjb21wb25lbnQgYW5pbWF0aW9uIHVubGVzcyB3ZSBoYXZlIHZhbHVlRnVuY3Rpb24s
IHNvIHdlIG5lZWQgdG8gZG8gbWF0cml4IGFuaW1hdGlvbgorICAgIC8vIGlmIHRoYXQncyBub3Qg
dHJ1ZSBhcyB3ZWxsLgorICAgIGJvb2wgaXNNYXRyaXhBbmltYXRpb24gPSBsaXN0SW5kZXggPCAw
IHx8ICFQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OnN1cHBvcnRzVmFsdWVGdW5jdGlvbigpOwor
ICAgIGludCBudW1BbmltYXRpb25zID0gaXNNYXRyaXhBbmltYXRpb24gPyAxIDogb3BlcmF0aW9u
cy0+c2l6ZSgpOworCisgICAgZm9yIChpbnQgYW5pbWF0aW9uSW5kZXggPSAwOyBhbmltYXRpb25J
bmRleCA8IG51bUFuaW1hdGlvbnM7ICsrYW5pbWF0aW9uSW5kZXgpIHsKKyAgICAgICAgaWYgKCFh
cHBlbmRUb1VuY29tbWl0dGVkQW5pbWF0aW9ucyh2YWx1ZUxpc3QsIG9wZXJhdGlvbnMsIGFuaW1h
dGlvbiwgYW5pbWF0aW9uTmFtZSwgYm94U2l6ZSwgYW5pbWF0aW9uSW5kZXgsIHRpbWVPZmZzZXQs
IGlzTWF0cml4QW5pbWF0aW9uKSkgeworICAgICAgICAgICAgdmFsaWRNYXRyaWNlcyA9IGZhbHNl
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdmFs
aWRNYXRyaWNlczsKIH0KIAogYm9vbCBHcmFwaGljc0xheWVyQ2x1dHRlcjo6Y3JlYXRlQW5pbWF0
aW9uRnJvbUtleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25z
dCBBbmltYXRpb24qIGFuaW1hdGlvbiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3Vi
bGUgdGltZU9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIuaAppbmRleCAzNWE1NDcw
MDc1MDE3Y2U5ZTYxM2VmN2JjMDA3YzExN2IzNDJmMjg2Li5jOTMwMDMyYmFkNjk2MTE1MTkyODY0
NGU1MWY3MTRjNjM2ODJlZjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0xheWVyQ2x1dHRlci5oCkBAIC0x
MTksNiArMTE5LDggQEAgcHJpdmF0ZToKICAgICBib29sIHNldFRyYW5zZm9ybUFuaW1hdGlvbkVu
ZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEFuaW1hdGlvbiosIFBsYXRm
b3JtQ2x1dHRlckFuaW1hdGlvbiosIGludCBmdW5jdGlvbkluZGV4LCBUcmFuc2Zvcm1PcGVyYXRp
b246Ok9wZXJhdGlvblR5cGUsIGJvb2wgaXNNYXRyaXhBbmltYXRpb24sIGNvbnN0IEludFNpemUm
IGJveFNpemUpOwogICAgIGJvb2wgc2V0VHJhbnNmb3JtQW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0
IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgUGxhdGZvcm1DbHV0dGVyQW5p
bWF0aW9uKiwgaW50IGZ1bmN0aW9uSW5kZXgsIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9u
VHlwZSwgYm9vbCBpc01hdHJpeEFuaW1hdGlvbiwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSk7CiAK
KyAgICBib29sIGFwcGVuZFRvVW5jb21taXR0ZWRBbmltYXRpb25zKGNvbnN0IEtleWZyYW1lVmFs
dWVMaXN0JiwgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyosIGNvbnN0IEFuaW1hdGlvbiosIGNv
bnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSwgaW50IGFu
aW1hdGlvbkluZGV4LCBkb3VibGUgdGltZU9mZnNldCwgYm9vbCBpc01hdHJpeEFuaW1hdGlvbik7
CisKICAgICBlbnVtIExheWVyQ2hhbmdlIHsKICAgICAgICAgTm9DaGFuZ2UgPSAwLAogICAgICAg
ICBOYW1lQ2hhbmdlZCA9IDEgPDwgMSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NsdXR0ZXIvUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvUGxhdGZvcm1DbHV0dGVyQW5pbWF0
aW9uLmNwcAppbmRleCBjNzk4NzYyMDVlY2JkOTg1NTM0Y2EyOTZkMmU1ZDBiODgwNzIyNmI3Li5k
YTFiZmM0ZTZjNDFkYjRiODZiODYxY2M5ZTI4OWRmNzJkYmM4MWRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL1BsYXRmb3JtQ2x1dHRlckFuaW1h
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9Q
bGF0Zm9ybUNsdXR0ZXJBbmltYXRpb24uY3BwCkBAIC01MCw2ICs1MCwxNCBAQCBzdGF0aWMgdm9p
ZCB0aW1lbGluZVN0YXJ0ZWRDYWxsYmFjayhDbHV0dGVyVGltZWxpbmUqLCBQbGF0Zm9ybUNsdXR0
ZXJBbmltYXRpb24qCiAgICAgYW5pbWF0aW9uLT5hbmltYXRpb25EaWRTdGFydCgpOwogfQogCitz
dGF0aWMgU3RyaW5nIHRvQ2x1dHRlckFjdG9yUHJvcGVydHlTdHJpbmcoY29uc3QgUGxhdGZvcm1D
bHV0dGVyQW5pbWF0aW9uOjpWYWx1ZUZ1bmN0aW9uVHlwZSB2YWx1ZUZ1bmN0aW9uVHlwZSkKK3sK
KyAgICAvLyBDbHV0dGVyQWN0b3IgZG9lc24ndCBoYXZlICdzY2FsZScgYW5kICd0cmFuc2xhdGUn
IHByb3BlcnRpZXMuIFNvIHdlIHNob3VsZCBzdXBwb3J0CisgICAgLy8gJ3NjYWxlJyBhbmQgJ3Ry
YW5zbGF0ZScgVmFsdWVGdW5jdGlvblR5cGUgYnkgY29tYmluYXRpb24gb2YgZXhpc3RpbmcgcHJv
cGVydHkgYW5pbWF0aW9ucy4gCisgICAgY29uc3QgY2hhciogY2x1dHRlckFjdG9yUHJvcGVydHlb
XSA9IHsgIk5vUHJvcGVydHkiLCAicm90YXRpb24tYW5nbGUteCIsICJyb3RhdGlvbi1hbmdsZS15
IiwgInJvdGF0aW9uLWFuZ2xlLXoiLCAic2NhbGUteCIsICJzY2FsZS15IiwgInNjYWxlLXoiLCAi
Tm9Qcm9wZXJ0eSIsICJ0cmFuc2xhdGlvbi14IiwgInRyYW5zbGF0aW9uLXkiLCAidHJhbnNsYXRp
b24teiIsICJOb1Byb3BlcnR5IiB9OyAKKyAgICByZXR1cm4gY2x1dHRlckFjdG9yUHJvcGVydHlb
dmFsdWVGdW5jdGlvblR5cGVdOworfQorCiBzdGF0aWMgQ2x1dHRlckFuaW1hdGlvbk1vZGUgdG9D
bHV0dGVyQW5pbWF0aW9uTW9kZShjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24p
CiB7CiAgICAgQVNTRVJUKHRpbWluZ0Z1bmN0aW9uKTsKQEAgLTEyNCw3ICsxMzIsNyBAQCBQbGF0
Zm9ybUNsdXR0ZXJBbmltYXRpb246On5QbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb24oKQogCiBib29s
IFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6c3VwcG9ydHNWYWx1ZUZ1bmN0aW9uKCkKIHsKLSAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGRvdWJsZSBQbGF0Zm9ybUNs
dXR0ZXJBbmltYXRpb246OmJlZ2luVGltZSgpIGNvbnN0CkBAIC0xNDAsMTYgKzE0OCwxMiBAQCB2
b2lkIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6c2V0QmVnaW5UaW1lKGRvdWJsZSB2YWx1ZSkK
IAogZG91YmxlIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6ZHVyYXRpb24oKSBjb25zdAogewot
ICAgIEFTU0VSVChtX3R5cGUgPT0gQmFzaWMpOwotCiAgICAgZG91YmxlIGR1cmF0aW9uID0gY2x1
dHRlcl90aW1lbGluZV9nZXRfZHVyYXRpb24oQ0xVVFRFUl9USU1FTElORShtX2FuaW1hdGlvbi5n
ZXQoKSkpOwogICAgIHJldHVybiBkdXJhdGlvbiAvIDEwMDA7CiB9CiAKIHZvaWQgUGxhdGZvcm1D
bHV0dGVyQW5pbWF0aW9uOjpzZXREdXJhdGlvbihkb3VibGUgdmFsdWUpCiB7Ci0gICAgQVNTRVJU
KG1fdHlwZSA9PSBCYXNpYyk7Ci0KICAgICAvLyBDbHV0dGVyIEFuaW1hdGlvbiBzZXRzIHRoZSBk
dXJhdGlvbiB0aW1lIGluIG1pbGxpc2Vjb25kcy4KICAgICBnaW50IGR1cmF0aW9uID0gdmFsdWUg
KiAxMDAwOwogICAgIGNsdXR0ZXJfdGltZWxpbmVfc2V0X2R1cmF0aW9uKENMVVRURVJfVElNRUxJ
TkUobV9hbmltYXRpb24uZ2V0KCkpLCBkdXJhdGlvbik7CkBAIC0yNDUsMjQgKzI0OSwyOCBAQCB2
b2lkIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6c2V0QWRkaXRpdmUoYm9vbCB2YWx1ZSkKIHsK
ICAgICBpZiAobV9hZGRpdGl2ZSA9PSB2YWx1ZSkKICAgICAgICAgcmV0dXJuOworCiAgICAgbV9h
ZGRpdGl2ZSA9IHZhbHVlOwogfQogCiBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OlZhbHVlRnVu
Y3Rpb25UeXBlIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6dmFsdWVGdW5jdGlvbigpIGNvbnN0
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gTm9WYWx1ZUZ1bmN0aW9uOwor
ICAgIHJldHVybiBtX3ZhbHVlRnVuY3Rpb25UeXBlOwogfQogCiB2b2lkIFBsYXRmb3JtQ2x1dHRl
ckFuaW1hdGlvbjo6c2V0VmFsdWVGdW5jdGlvbihWYWx1ZUZ1bmN0aW9uVHlwZSB2YWx1ZSkKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChtX3ZhbHVlRnVuY3Rpb25UeXBlID09IHZh
bHVlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3ZhbHVlRnVuY3Rpb25UeXBlID0gdmFsdWU7
CiB9CiAKIHZvaWQgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpzZXRGcm9tVmFsdWUoZmxvYXQg
dmFsdWUpCiB7Ci0gICAgaWYgKG1fZnJvbVZhbHVlID09IHZhbHVlKQorICAgIGlmIChhbmltYXRp
b25UeXBlKCkgIT0gQmFzaWMgfHwgbV9mcm9tVmFsdWUgPT0gdmFsdWUpCiAgICAgICAgIHJldHVy
bjsKKwogICAgIG1fZnJvbVZhbHVlID0gdmFsdWU7CiB9CiAKQEAgLTI3Myw3ICsyODEsMTAgQEAg
dm9pZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OnNldEZyb21WYWx1ZShjb25zdCBXZWJDb3Jl
OjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYKIAogdm9pZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246
OnNldEZyb21WYWx1ZShjb25zdCBGbG9hdFBvaW50M0QmIHZhbHVlKQogewotICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYyB8fCBtX2Zyb21WYWx1
ZTNEID09IHZhbHVlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Zyb21WYWx1ZTNEID0gdmFs
dWU7CiB9CiAKIHZvaWQgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpzZXRGcm9tVmFsdWUoY29u
c3QgV2ViQ29yZTo6Q29sb3ImIHZhbHVlKQpAQCAtMjg4LDggKzI5OSw5IEBAIHZvaWQgUGxhdGZv
cm1DbHV0dGVyQW5pbWF0aW9uOjpjb3B5RnJvbVZhbHVlRnJvbShjb25zdCBQbGF0Zm9ybUNsdXR0
ZXJBbmltYXRpb24qCiAKIHZvaWQgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpzZXRUb1ZhbHVl
KGZsb2F0IHZhbHVlKQogewotICAgIGlmIChtX3RvVmFsdWUgPT0gdmFsdWUpCisgICAgaWYgKGFu
aW1hdGlvblR5cGUoKSAhPSBCYXNpYyB8fCBtX3RvVmFsdWUgPT0gdmFsdWUpCiAgICAgICAgIHJl
dHVybjsKKwogICAgIG1fdG9WYWx1ZSA9IHZhbHVlOwogfQogCkBAIC0zMDAsNyArMzEyLDEwIEBA
IHZvaWQgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpzZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6
OlRyYW5zZm9ybWF0aW9uTWF0cml4JiB2CiAKIHZvaWQgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9u
OjpzZXRUb1ZhbHVlKGNvbnN0IEZsb2F0UG9pbnQzRCYgdmFsdWUpCiB7Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljIHx8IG1fdG9WYWx1ZTNE
ID09IHZhbHVlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3RvVmFsdWUzRCA9IHZhbHVlOwog
fQogCiB2b2lkIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6c2V0VG9WYWx1ZShjb25zdCBXZWJD
b3JlOjpDb2xvciYgdmFsdWUpCkBAIC0zNzIsMjggKzM4Nyw3NiBAQCB2b2lkIFBsYXRmb3JtQ2x1
dHRlckFuaW1hdGlvbjo6YW5pbWF0aW9uRGlkU3RhcnQoKQogQ2x1dHRlclRpbWVsaW5lKiBQbGF0
Zm9ybUNsdXR0ZXJBbmltYXRpb246OnRpbWVsaW5lKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9h
bmltYXRpb24pOwotICAgIEFTU0VSVChtX3R5cGUgPT0gQmFzaWMpOwogICAgIHJldHVybiBDTFVU
VEVSX1RJTUVMSU5FKG1fYW5pbWF0aW9uLmdldCgpKTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNsdXR0
ZXJBbmltYXRpb246OmFkZE9wYWNpdHlUcmFuc2l0aW9uKCkKK3ZvaWQgUGxhdGZvcm1DbHV0dGVy
QW5pbWF0aW9uOjphZGRDbHV0dGVyVHJhbnNpdGlvbkZvclByb3BlcnR5KGNvbnN0IFN0cmluZyYg
cHJvcGVydHksIGNvbnN0IHVuc2lnbmVkIGZyb21WYWx1ZSwgY29uc3QgdW5zaWduZWQgdG9WYWx1
ZSkKIHsKLSAgICBHUmVmUHRyPENsdXR0ZXJUcmFuc2l0aW9uPiB0cmFuc2l0aW9uID0gYWRvcHRH
UmVmKGNsdXR0ZXJfcHJvcGVydHlfdHJhbnNpdGlvbl9uZXcoIm9wYWNpdHkiKSk7Ci0gICAgY2x1
dHRlcl90cmFuc2l0aW9uX3NldF9mcm9tKHRyYW5zaXRpb24uZ2V0KCksIEdfVFlQRV9VSU5ULCBz
dGF0aWNfY2FzdDxndWludDg+KDI1NSAqIG1fZnJvbVZhbHVlKSk7Ci0gICAgY2x1dHRlcl90cmFu
c2l0aW9uX3NldF90byh0cmFuc2l0aW9uLmdldCgpLCBHX1RZUEVfVUlOVCwgc3RhdGljX2Nhc3Q8
Z3VpbnQ4PigyNTUgKiBtX3RvVmFsdWUpKTsKKyAgICBBU1NFUlQocHJvcGVydHkgIT0gIk5vUHJv
cGVydHkiKTsKKworICAgIEdSZWZQdHI8Q2x1dHRlclRyYW5zaXRpb24+IHRyYW5zaXRpb24gPSBh
ZG9wdEdSZWYoY2x1dHRlcl9wcm9wZXJ0eV90cmFuc2l0aW9uX25ldyhwcm9wZXJ0eS51dGY4KCku
ZGF0YSgpKSk7CisgICAgY2x1dHRlcl90cmFuc2l0aW9uX3NldF9mcm9tKHRyYW5zaXRpb24uZ2V0
KCksIEdfVFlQRV9VSU5ULCBmcm9tVmFsdWUpOworICAgIGNsdXR0ZXJfdHJhbnNpdGlvbl9zZXRf
dG8odHJhbnNpdGlvbi5nZXQoKSwgR19UWVBFX1VJTlQsIHRvVmFsdWUpOwogCiAgICAgY2x1dHRl
cl90cmFuc2l0aW9uX2dyb3VwX2FkZF90cmFuc2l0aW9uKENMVVRURVJfVFJBTlNJVElPTl9HUk9V
UChtX2FuaW1hdGlvbi5nZXQoKSksIHRyYW5zaXRpb24uZ2V0KCkpOwogfQogCit2b2lkIFBsYXRm
b3JtQ2x1dHRlckFuaW1hdGlvbjo6YWRkQ2x1dHRlclRyYW5zaXRpb25Gb3JQcm9wZXJ0eShjb25z
dCBTdHJpbmcmIHByb3BlcnR5LCBjb25zdCBmbG9hdCBmcm9tVmFsdWUsIGNvbnN0IGZsb2F0IHRv
VmFsdWUpCit7CisgICAgQVNTRVJUKHByb3BlcnR5ICE9ICJOb1Byb3BlcnR5Iik7CisKKyAgICBH
UmVmUHRyPENsdXR0ZXJUcmFuc2l0aW9uPiB0cmFuc2l0aW9uID0gYWRvcHRHUmVmKGNsdXR0ZXJf
cHJvcGVydHlfdHJhbnNpdGlvbl9uZXcocHJvcGVydHkudXRmOCgpLmRhdGEoKSkpOworICAgIGNs
dXR0ZXJfdHJhbnNpdGlvbl9zZXRfZnJvbSh0cmFuc2l0aW9uLmdldCgpLCBHX1RZUEVfRkxPQVQs
IGZyb21WYWx1ZSk7CisgICAgY2x1dHRlcl90cmFuc2l0aW9uX3NldF90byh0cmFuc2l0aW9uLmdl
dCgpLCBHX1RZUEVfRkxPQVQsIHRvVmFsdWUpOworCisgICAgY2x1dHRlcl90cmFuc2l0aW9uX2dy
b3VwX2FkZF90cmFuc2l0aW9uKENMVVRURVJfVFJBTlNJVElPTl9HUk9VUChtX2FuaW1hdGlvbi5n
ZXQoKSksIHRyYW5zaXRpb24uZ2V0KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ2x1dHRlckFuaW1h
dGlvbjo6YWRkT3BhY2l0eVRyYW5zaXRpb24oKQoreworICAgIGFkZENsdXR0ZXJUcmFuc2l0aW9u
Rm9yUHJvcGVydHkoU3RyaW5nKCJvcGFjaXR5IiksIHN0YXRpY19jYXN0PHVuc2lnbmVkPigyNTUg
KiBtX2Zyb21WYWx1ZSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPigyNTUgKiBtX3RvVmFsdWUpKTsK
K30KKwordm9pZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OmFkZFRyYW5zZm9ybVRyYW5zaXRp
b24oKQoreworICAgIHN3aXRjaCAobV92YWx1ZUZ1bmN0aW9uVHlwZSkgeworICAgIGNhc2UgUm90
YXRlWDoKKyAgICBjYXNlIFJvdGF0ZVk6CisgICAgY2FzZSBSb3RhdGVaOgorICAgICAgICBhZGRD
bHV0dGVyVHJhbnNpdGlvbkZvclByb3BlcnR5KHRvQ2x1dHRlckFjdG9yUHJvcGVydHlTdHJpbmco
bV92YWx1ZUZ1bmN0aW9uVHlwZSksIHJhZDJkZWcobV9mcm9tVmFsdWUpLCByYWQyZGVnKG1fdG9W
YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNjYWxlWDoKKyAgICBjYXNlIFNjYWxl
WToKKyAgICBjYXNlIFNjYWxlWjoKKyAgICBjYXNlIFRyYW5zbGF0ZVg6CisgICAgY2FzZSBUcmFu
c2xhdGVZOgorICAgIGNhc2UgVHJhbnNsYXRlWjoKKyAgICAgICAgYWRkQ2x1dHRlclRyYW5zaXRp
b25Gb3JQcm9wZXJ0eSh0b0NsdXR0ZXJBY3RvclByb3BlcnR5U3RyaW5nKG1fdmFsdWVGdW5jdGlv
blR5cGUpLCBtX2Zyb21WYWx1ZSwgbV90b1ZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBTY2FsZToKKyAgICAgICAgYWRkQ2x1dHRlclRyYW5zaXRpb25Gb3JQcm9wZXJ0eShTdHJpbmco
InNjYWxlLXgiKSwgbV9mcm9tVmFsdWUzRC54KCksIG1fdG9WYWx1ZTNELngoKSk7CisgICAgICAg
IGFkZENsdXR0ZXJUcmFuc2l0aW9uRm9yUHJvcGVydHkoU3RyaW5nKCJzY2FsZS15IiksIG1fZnJv
bVZhbHVlM0QueSgpLCBtX3RvVmFsdWUzRC55KCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFRyYW5zbGF0ZToKKyAgICAgICAgYWRkQ2x1dHRlclRyYW5zaXRpb25Gb3JQcm9wZXJ0eShTdHJp
bmcoInRyYW5zbGF0aW9uLXgiKSwgbV9mcm9tVmFsdWUzRC54KCksIG1fdG9WYWx1ZTNELngoKSk7
CisgICAgICAgIGFkZENsdXR0ZXJUcmFuc2l0aW9uRm9yUHJvcGVydHkoU3RyaW5nKCJ0cmFuc2xh
dGlvbi15IiksIG1fZnJvbVZhbHVlM0QueCgpLCBtX3RvVmFsdWUzRC55KCkpOworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
Cit9CisKIHZvaWQgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjphZGRBbmltYXRpb25Gb3JLZXko
R3JhcGhpY3NMYXllckFjdG9yKiBwbGF0Zm9ybUxheWVyLCBjb25zdCBTdHJpbmcmIGtleSkKIHsK
ICAgICBBU1NFUlQoYW5pbWF0aW9uVHlwZSgpID09IEJhc2ljKTsKICAgICBBU1NFUlQoIWdfb2Jq
ZWN0X2dldF9kYXRhKEdfT0JKRUNUKHBsYXRmb3JtTGF5ZXIpLCBrZXkudXRmOCgpLmRhdGEoKSkp
OwogCisgICAgbV9sYXllciA9IENMVVRURVJfQUNUT1IocGxhdGZvcm1MYXllcik7CisKICAgICBp
ZiAobV9hbmltYXRlZFByb3BlcnR5VHlwZSA9PSBPcGFjaXR5KQogICAgICAgICBhZGRPcGFjaXR5
VHJhbnNpdGlvbigpOwogICAgIGVsc2UgaWYgKG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUgPT0gVHJh
bnNmb3JtKQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYWRkVHJhbnNm
b3JtVHJhbnNpdGlvbigpOwogICAgIGVsc2UgaWYgKG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUgPT0g
QmFja2dyb3VuZENvbG9yKQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBlbHNl
CkBAIC00MDYsNyArNDY5LDkgQEAgdm9pZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OmFkZEFu
aW1hdGlvbkZvcktleShHcmFwaGljc0xheWVyQWN0b3IqIHBsYXRmb3JtTGEKICAgICBnX3NpZ25h
bF9jb25uZWN0KGNsdXR0ZXJUaW1lbGluZSwgInN0YXJ0ZWQiLCBHX0NBTExCQUNLKHRpbWVsaW5l
U3RhcnRlZENhbGxiYWNrKSwgdGhpcyk7CiAgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1Qo
cGxhdGZvcm1MYXllciksIGtleS51dGY4KCkuZGF0YSgpLCB0aGlzKTsKIAotICAgIG1fbGF5ZXIg
PSBDTFVUVEVSX0FDVE9SKHBsYXRmb3JtTGF5ZXIpOworICAgIC8vIElmIGNsdXR0ZXIgY292ZXJz
IHZhbHVlRnVuY3Rpb24gdHlwZSBhbmltYXRpb25zLCB3ZSBzaG91bGQgcmVsZWFzZSBrZWVwaW5n
IHRyYW5zZm9ybSBtYXRyaXguCisgICAgLy8gT3RoZXJ3aXNlLCB0aGUgdHJhbnNmb3JtYXRpb24g
aXMgYXBwbGllZCB0d2ljZSB1bmV4cGVjdGVkbHkuIFNlZSBncmFwaGljc0xheWVyQWN0b3JBcHBs
eVRyYW5zZm9ybS4KKyAgICBncmFwaGljc0xheWVyQWN0b3JTZXRUcmFuc2Zvcm0ocGxhdGZvcm1M
YXllciwgMCk7CiAKICAgICBjbHV0dGVyX2FjdG9yX2FkZF90cmFuc2l0aW9uKG1fbGF5ZXIuZ2V0
KCksIGtleS51dGY4KCkuZGF0YSgpLCBDTFVUVEVSX1RSQU5TSVRJT04obV9hbmltYXRpb24uZ2V0
KCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Ns
dXR0ZXIvUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jbHV0dGVyL1BsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbi5oCmluZGV4IDY3YjFl
NDg1MjExMzY1NGYwNGE3MzUwMDc1OGM4Y2FiOTQzOTNmZDguLmI4OTJkZDNjY2Y1MWE0NWNmOWRj
YTlhZTc5Mzc0YzlhNDEyNTZhZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NsdXR0ZXIvUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9QbGF0Zm9ybUNsdXR0ZXJBbmltYXRp
b24uaApAQCAtMTM4LDcgKzEzOCwxMSBAQCBwcml2YXRlOgogICAgIENsdXR0ZXJUaW1lbGluZSog
dGltZWxpbmUoKSBjb25zdDsKICAgICBBbmltYXRlZFByb3BlcnR5VHlwZSBzdHJpbmdUb0FuaW1h
dGVkUHJvcGVydHlUeXBlKGNvbnN0IFN0cmluZyYga2V5UGF0aCkgY29uc3Q7CiAKKyAgICB2b2lk
IGFkZENsdXR0ZXJUcmFuc2l0aW9uRm9yUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eSwg
Y29uc3QgdW5zaWduZWQgZnJvbVZhbHVlLCBjb25zdCB1bnNpZ25lZCB0b1ZhbHVlKTsKKyAgICB2
b2lkIGFkZENsdXR0ZXJUcmFuc2l0aW9uRm9yUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eSwgY29uc3QgZmxvYXQgZnJvbVZhbHVlLCBjb25zdCBmbG9hdCB0b1ZhbHVlKTsKKwogICAgIHZv
aWQgYWRkT3BhY2l0eVRyYW5zaXRpb24oKTsKKyAgICB2b2lkIGFkZFRyYW5zZm9ybVRyYW5zaXRp
b24oKTsKIAogICAgIEFuaW1hdGlvblR5cGUgbV90eXBlOwogICAgIEFuaW1hdGVkUHJvcGVydHlU
eXBlIG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGU7CkBAIC0xNTEsNiArMTU1LDkgQEAgcHJpdmF0ZToK
ICAgICBmbG9hdCBtX2Zyb21WYWx1ZTsKICAgICBmbG9hdCBtX3RvVmFsdWU7CiAKKyAgICBGbG9h
dFBvaW50M0QgbV9mcm9tVmFsdWUzRDsKKyAgICBGbG9hdFBvaW50M0QgbV90b1ZhbHVlM0Q7CisK
ICAgICBmbG9hdCBtX3JlcGVhdENvdW50OwogCiAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIG1f
dGltaW5nRnVuY3Rpb247Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187583</attachid>
            <date>2013-02-11 08:44:37 -0800</date>
            <delta_ts>2013-02-13 08:14:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109363-20130212014107.patch</filename>
            <type>text/plain</type>
            <size>27731</size>
            <attacher name="ChangSeok Oh">kevin.cs.oh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDRkN2JhYmMxYWViZWUy
YThjY2NjNTY4Y2JkNWUyODJiYjViOTlhOS4uZDU0YjIwZGQ0ZjhkZjAwOGQ4MTY4YjNlMjdhMmQ4
NjJhNWMyMDE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEzLTAyLTExICBDaGFu
Z1Nlb2sgT2ggIDxzaGl2YW1pZG93QGdtYWlsLmNvbT4KKworICAgICAgICBbR1RLXVtBQ10gSW1w
bGVtZW50IGJhc2ljIHRyYW5zZm9ybSBhbmltYXRpb25zIHdpdGggY2x1dHRlciBhYyBiYWNrZW5k
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkzNjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnQgYmFzaWMgdHJhbnNmb3JtIGFuaW1hdGlvbiB3aXRoIGNsdXR0ZXIgYWMgYmFja2VuZC4KKyAg
ICAgICAgR3JhcGhpY3NMYXllckNsdXR0ZXIgaXMgYWxtb3N0IHNhbWUgd2l0aCBHcmFwaGljc0xh
eWVyQ0EuIEFuZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb24KKyAgICAgICAgaW50ZXJmYWNlcyBh
cmUgYWxzbyBzaW1pbGFyIHdpdGggUGxhdGZvcm1DQUFuaW1hdGlvbiwgYnV0IHRoZXkgYXJlIGlt
cGxlbWVudGVkCisgICAgICAgIHdpdGggbmF0aXZlIGNsdXR0ZXIgQVBJcy4gQ2x1dHRlciBiYWNr
ZW5kIEFDIHN1cHBvcnRzIGEgYmFzaWMgc2luZ2xlIHRyYW5zZm9ybSBhbmltYXRpb24KKyAgICAg
ICAgd2l0aCB0aGlzIHBhdGNoIG5vdywgYnV0IGFkZGl0aXZlIGFuaW1hdGlvbiBjb21iaW5hdGlv
biBhbmQga2V5ZnJhbWUgYW5pbWF0aW9uCisgICAgICAgIGFyZSBub3Qgc3VwcG9ydGVkIHlldC4K
KworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIGFuaW1hdGlvbiB0ZXN0cy4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckFjdG9yLmNwcDoKKyAg
ICAgICAgKGdyYXBoaWNzTGF5ZXJBY3RvclNldFRyYW5zZm9ybSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0xheWVyQ2x1dHRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppc1RyYW5zZm9ybVR5cGVUcmFuc2Zvcm1hdGlvbk1hdHJpeCk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVHJhbnNmb3JtVHlwZUZsb2F0UG9pbnQzRCk6
CisgICAgICAgIChXZWJDb3JlOjppc1RyYW5zZm9ybVR5cGVOdW1iZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRW
YWx1ZUZ1bmN0aW9uTmFtZUZvclRyYW5zZm9ybU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ2x1dHRlcjo6c2V0VHJhbnNmb3JtQW5pbWF0aW9uRW5kcG9pbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDbHV0dGVyOjphcHBlbmRUb1VuY29tbWl0
dGVkQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2x1dHRlcjo6
Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIuaDoKKyAgICAgICAgKEdy
YXBoaWNzTGF5ZXJDbHV0dGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVy
L1BsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0NsdXR0
ZXJBY3RvclByb3BlcnR5U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpzdXBwb3J0c1ZhbHVlRnVuY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpkdXJhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OnNldER1cmF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6c2V0QWRkaXRpdmUp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjp2YWx1ZUZ1bmN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6c2V0VmFs
dWVGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246
OnNldEZyb21WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNsdXR0ZXJBbmltYXRp
b246OnNldFRvVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DbHV0dGVyQW5pbWF0
aW9uOjp0aW1lbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNsdXR0ZXJBbmltYXRp
b246OmFkZENsdXR0ZXJUcmFuc2l0aW9uRm9yUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjphZGRPcGFjaXR5VHJhbnNpdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OmFkZFRyYW5zZm9ybVRyYW5zaXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjphZGRBbmlt
YXRpb25Gb3JLZXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvUGxhdGZv
cm1DbHV0dGVyQW5pbWF0aW9uLmg6CisgICAgICAgIChQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb24p
OgorCiAyMDEzLTAyLTExICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZW5hbWUgUHJlbG9hZFRhc2sgdG8gU3RhcnRUYWdTY2FubmVyIHRvIG1hdGNoIGl0cyBwdXJw
b3NlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVy
L0dyYXBoaWNzTGF5ZXJBY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJBY3Rvci5jcHAKaW5kZXggZDJlZmQxNjYzMzkwOTJkZTE4
YWFjYmUyZmM1MjUxMWYwODZmNDk2Yy4uZjU1NmRhYjc2MWM0OTQxZWJlZWY0ZDQyNzQ5YzE2YmFh
MmY3ZTlmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1
dHRlci9HcmFwaGljc0xheWVyQWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckFjdG9yLmNwcApAQCAtMzkyLDcgKzM5Miw3
IEBAIHZvaWQgZ3JhcGhpY3NMYXllckFjdG9yU2V0VHJhbnNmb3JtKEdyYXBoaWNzTGF5ZXJBY3Rv
ciogbGF5ZXIsIGNvbnN0IENvZ2xNYXRyaXgqCiAgICAgICAgIG5lZWRUb1JlZHJhdyA9IHRydWU7
CiAgICAgfQogCi0gICAgaWYgKCFjb2dsX21hdHJpeF9pc19pZGVudGl0eShtYXRyaXgpKSB7Cisg
ICAgaWYgKG1hdHJpeCAmJiAhY29nbF9tYXRyaXhfaXNfaWRlbnRpdHkobWF0cml4KSkgewogICAg
ICAgICBwcml2LT5tYXRyaXggPSBjb2dsX21hdHJpeF9jb3B5KG1hdHJpeCk7CiAgICAgICAgIG5l
ZWRUb1JlZHJhdyA9IHRydWU7CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0
ZXIuY3BwCmluZGV4IGQ3OTkxODcyM2VkYjE0M2JiN2UzN2Y4ZmVmNmZjNmFjMjg3YjY3YzEuLjUz
Nzk2ZWM4OTc3OTZkOWI5MzljMjEyMWYxMjUzZDAxYmI1NzE5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhp
Y3NMYXllckNsdXR0ZXIuY3BwCkBAIC01Myw2ICs1MywxNDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogLy8gU28gc2VuZCBhIHZlcnkgc21hbGwgdmFsdWUgaW5zdGVhZC4KIHN0YXRpYyBjb25zdCBm
bG9hdCBjQW5pbWF0aW9uQWxtb3N0WmVyb0R1cmF0aW9uID0gMWUtM2Y7CiAKK3N0YXRpYyBib29s
IGlzVHJhbnNmb3JtVHlwZVRyYW5zZm9ybWF0aW9uTWF0cml4KFRyYW5zZm9ybU9wZXJhdGlvbjo6
T3BlcmF0aW9uVHlwZSB0cmFuc2Zvcm1UeXBlKQoreworICAgIHN3aXRjaCAodHJhbnNmb3JtVHlw
ZSkgeworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXX1g6CisgICAgY2FzZSBUcmFu
c2Zvcm1PcGVyYXRpb246OlNLRVdfWToKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tF
VzoKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6TUFUUklYOgorICAgIGNhc2UgVHJhbnNm
b3JtT3BlcmF0aW9uOjpST1RBVEVfM0Q6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok1B
VFJJWF8zRDoKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6UEVSU1BFQ1RJVkU6CisgICAg
Y2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OklERU5USVRZOgorICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpOT05FOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBpc1RyYW5zZm9ybVR5cGVG
bG9hdFBvaW50M0QoVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybVR5
cGUpCit7CisgICAgc3dpdGNoICh0cmFuc2Zvcm1UeXBlKSB7CisgICAgY2FzZSBUcmFuc2Zvcm1P
cGVyYXRpb246OlNDQUxFOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV8zRDoK
KyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFOgorICAgIGNhc2UgVHJhbnNm
b3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfM0Q6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK3N0YXRpYyBib29sIGlz
VHJhbnNmb3JtVHlwZU51bWJlcihUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHJh
bnNmb3JtVHlwZSkKK3sKKyAgICByZXR1cm4gIWlzVHJhbnNmb3JtVHlwZVRyYW5zZm9ybWF0aW9u
TWF0cml4KHRyYW5zZm9ybVR5cGUpICYmICFpc1RyYW5zZm9ybVR5cGVGbG9hdFBvaW50M0QodHJh
bnNmb3JtVHlwZSk7Cit9CisKK3N0YXRpYyB2b2lkIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUo
Y29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm1PcCwgVHJhbnNmb3JtT3BlcmF0aW9u
OjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybVR5cGUsIGNvbnN0IEludFNpemUmIHNpemUsIGZsb2F0
JiB2YWx1ZSkKK3sKKyAgICBzd2l0Y2ggKHRyYW5zZm9ybVR5cGUpIHsKKyAgICBjYXNlIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6Uk9UQVRFOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RB
VEVfWDoKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1k6CisgICAgICAgIHZh
bHVlID0gdHJhbnNmb3JtT3AgPyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGRlZzJyYWQoc3RhdGlj
X2Nhc3Q8Y29uc3QgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT5hbmds
ZSgpKSkgOiAwOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6
U0NBTEVfWDoKKyAgICAgICAgdmFsdWUgPSB0cmFuc2Zvcm1PcCA/IG5hcnJvd1ByZWNpc2lvblRv
RmxvYXQoc3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zv
cm1PcCktPngoKSkgOiAxOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJh
dGlvbjo6U0NBTEVfWToKKyAgICAgICAgdmFsdWUgPSB0cmFuc2Zvcm1PcCA/IG5hcnJvd1ByZWNp
c2lvblRvRmxvYXQoc3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0
cmFuc2Zvcm1PcCktPnkoKSkgOiAxOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRyYW5zZm9y
bU9wZXJhdGlvbjo6U0NBTEVfWjoKKyAgICAgICAgdmFsdWUgPSB0cmFuc2Zvcm1PcCA/IG5hcnJv
d1ByZWNpc2lvblRvRmxvYXQoc3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRp
b24qPih0cmFuc2Zvcm1PcCktPnooKSkgOiAxOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRy
YW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1g6CisgICAgICAgIHZhbHVlID0gdHJhbnNmb3Jt
T3AgPyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zbGF0ZVRy
YW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eChzaXplKSkgOiAwOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1k6CisgICAgICAg
IHZhbHVlID0gdHJhbnNmb3JtT3AgPyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHN0YXRpY19jYXN0
PGNvbnN0IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eShzaXpl
KSkgOiAwOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJB
TlNMQVRFX1o6CisgICAgICAgIHZhbHVlID0gdHJhbnNmb3JtT3AgPyBuYXJyb3dQcmVjaXNpb25U
b0Zsb2F0KHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRy
YW5zZm9ybU9wKS0+eihzaXplKSkgOiAwOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGdldFRyYW5zZm9ybUZ1bmN0
aW9uVmFsdWUoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm1PcCwgVHJhbnNmb3Jt
T3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybVR5cGUsIGNvbnN0IEludFNpemUmIHNp
emUsIEZsb2F0UG9pbnQzRCYgdmFsdWUpCit7CisgICAgc3dpdGNoICh0cmFuc2Zvcm1UeXBlKSB7
CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFOgorICAgIGNhc2UgVHJhbnNmb3Jt
T3BlcmF0aW9uOjpTQ0FMRV8zRDoKKyAgICAgICAgdmFsdWUuc2V0WCh0cmFuc2Zvcm1PcCA/IG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQoc3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVy
YXRpb24qPih0cmFuc2Zvcm1PcCktPngoKSkgOiAxKTsKKyAgICAgICAgdmFsdWUuc2V0WSh0cmFu
c2Zvcm1PcCA/IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoc3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVU
cmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPnkoKSkgOiAxKTsKKyAgICAgICAgdmFs
dWUuc2V0Wih0cmFuc2Zvcm1PcCA/IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoc3RhdGljX2Nhc3Q8
Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPnooKSkgOiAxKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURToK
KyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFXzNEOgorICAgICAgICB2YWx1
ZS5zZXRYKHRyYW5zZm9ybU9wID8gbmFycm93UHJlY2lzaW9uVG9GbG9hdChzdGF0aWNfY2FzdDxj
b25zdCBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPngoc2l6ZSkp
IDogMCk7CisgICAgICAgIHZhbHVlLnNldFkodHJhbnNmb3JtT3AgPyBuYXJyb3dQcmVjaXNpb25U
b0Zsb2F0KHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRy
YW5zZm9ybU9wKS0+eShzaXplKSkgOiAwKTsKKyAgICAgICAgdmFsdWUuc2V0Wih0cmFuc2Zvcm1P
cCA/IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNsYXRlVHJh
bnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT56KHNpemUpKSA6IDApOworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2
b2lkIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiB0
cmFuc2Zvcm1PcCwgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybVR5
cGUsIGNvbnN0IEludFNpemUmIHNpemUsIFRyYW5zZm9ybWF0aW9uTWF0cml4JiB2YWx1ZSkKK3sK
KyAgICBzd2l0Y2ggKHRyYW5zZm9ybVR5cGUpIHsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlv
bjo6U0tFV19YOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXX1k6CisgICAgY2Fz
ZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNLRVc6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
Ok1BVFJJWDoKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNEOgorICAgIGNh
c2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpNQVRSSVhfM0Q6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVy
YXRpb246OlBFUlNQRUNUSVZFOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpJREVOVElU
WToKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Tk9ORToKKyAgICAgICAgaWYgKHRyYW5z
Zm9ybU9wKQorICAgICAgICAgICAgdHJhbnNmb3JtT3AtPmFwcGx5KHZhbHVlLCBzaXplKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgdmFsdWUubWFrZUlkZW50aXR5KCk7CisgICAgICAgIGJy
ZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIFBs
YXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6VmFsdWVGdW5jdGlvblR5cGUgZ2V0VmFsdWVGdW5jdGlv
bk5hbWVGb3JUcmFuc2Zvcm1PcGVyYXRpb24oVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25U
eXBlIHRyYW5zZm9ybVR5cGUpCit7CisgICAgLy8gVXNlIGxpdGVyYWwgc3RyaW5ncyB0byBhdm9p
ZCBsaW5rLXRpbWUgZGVwZW5kZW5jeSBvbiB0aG9zZSBzeW1ib2xzLgorICAgIHN3aXRjaCAodHJh
bnNmb3JtVHlwZSkgeworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWDoKKyAg
ICAgICAgcmV0dXJuIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6Um90YXRlWDsKKyAgICBjYXNl
IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1k6CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNs
dXR0ZXJBbmltYXRpb246OlJvdGF0ZVk7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJP
VEFURToKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6Um90YXRlWjsK
KyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWDoKKyAgICAgICAgcmV0dXJuIFBs
YXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6U2NhbGVYOworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0
aW9uOjpTQ0FMRV9ZOgorICAgICAgICByZXR1cm4gUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpT
Y2FsZVk7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1o6CisgICAgICAgIHJl
dHVybiBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OlNjYWxlWjsKKyAgICBjYXNlIFRyYW5zZm9y
bU9wZXJhdGlvbjo6VFJBTlNMQVRFX1g6CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNsdXR0ZXJB
bmltYXRpb246OlRyYW5zbGF0ZVg7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5T
TEFURV9ZOgorICAgICAgICByZXR1cm4gUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpUcmFuc2xh
dGVZOworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWjoKKyAgICAgICAg
cmV0dXJuIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6VHJhbnNsYXRlWjsKKyAgICBjYXNlIFRy
YW5zZm9ybU9wZXJhdGlvbjo6U0NBTEU6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlND
QUxFXzNEOgorICAgICAgICByZXR1cm4gUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpTY2FsZTsK
KyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFOgorICAgIGNhc2UgVHJhbnNm
b3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfM0Q6CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNsdXR0
ZXJBbmltYXRpb246OlRyYW5zbGF0ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gUGxh
dGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpOb1ZhbHVlRnVuY3Rpb247CisgICAgfQorfQorCiBzdGF0
aWMgU3RyaW5nIHByb3BlcnR5SWRUb1N0cmluZyhBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHkp
CiB7CiAgICAgc3dpdGNoIChwcm9wZXJ0eSkgewpAQCAtNjE4LDE0ICs3NjAsMTIyIEBAIGJvb2wg
R3JhcGhpY3NMYXllckNsdXR0ZXI6OnNldFRyYW5zZm9ybUFuaW1hdGlvbktleWZyYW1lcyhjb25z
dCBLZXlmcmFtZVZhbHVlTGlzCiAKIGJvb2wgR3JhcGhpY3NMYXllckNsdXR0ZXI6OnNldFRyYW5z
Zm9ybUFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0
LCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uKiBi
YXNpY0FuaW0sIGludCBmdW5jdGlvbkluZGV4LCBUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlv
blR5cGUgdHJhbnNmb3JtT3BUeXBlLCBib29sIGlzTWF0cml4QW5pbWF0aW9uLCBjb25zdCBJbnRT
aXplJiBib3hTaXplKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNl
OworICAgIEFTU0VSVCh2YWx1ZUxpc3Quc2l6ZSgpID09IDIpOworCisgICAgYm9vbCBmb3J3YXJk
cyA9IGFuaW1hdGlvbi0+ZGlyZWN0aW9uSXNGb3J3YXJkcygpOworCisgICAgdW5zaWduZWQgZnJv
bUluZGV4ID0gIWZvcndhcmRzOworICAgIHVuc2lnbmVkIHRvSW5kZXggPSBmb3J3YXJkczsKKwor
ICAgIGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKiBzdGFydFZhbHVlID0gc3RhdGljX2Nh
c3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQoZnJvbUluZGV4
KSk7CisgICAgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqIGVuZFZhbHVlID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQodG9JbmRl
eCkpOworCisgICAgaWYgKGlzTWF0cml4QW5pbWF0aW9uKSB7CisgICAgICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGZyb21UcmFuc2Zvcm0sIHRvVHJhbnNmb3JtOworICAgICAgICBzdGFydFZhbHVl
LT52YWx1ZSgpLT5hcHBseShib3hTaXplLCBmcm9tVHJhbnNmb3JtKTsKKyAgICAgICAgZW5kVmFs
dWUtPnZhbHVlKCktPmFwcGx5KGJveFNpemUsIHRvVHJhbnNmb3JtKTsKKworICAgICAgICAvLyBG
SVhNRTogSWYgYW55IG1hdHJpeCBpcyBzaW5ndWxhciwgQ0Egd29uJ3QgYW5pbWF0ZSBpdCBjb3Jy
ZWN0bHkuCisgICAgICAgIC8vIFNvIGZhbGwgYmFjayB0byBzb2Z0d2FyZSBhbmltYXRpb24sIEJ1
dCBpdCdzIG5vdCBzdXJlIGluIGNsdXR0ZXIgY2FzZS4KKyAgICAgICAgLy8gV2UgbmVlZCB0byBp
bnZlc3RpZ2F0ZSBpdCBtb3JlLgorICAgICAgICBpZiAoIWZyb21UcmFuc2Zvcm0uaXNJbnZlcnRp
YmxlKCkgfHwgIXRvVHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgIGJhc2ljQW5pbS0+c2V0RnJvbVZhbHVlKGZyb21UcmFuc2Zvcm0p
OworICAgICAgICBiYXNpY0FuaW0tPnNldFRvVmFsdWUodG9UcmFuc2Zvcm0pOworICAgIH0gZWxz
ZSB7CisgICAgICAgIGlmIChpc1RyYW5zZm9ybVR5cGVOdW1iZXIodHJhbnNmb3JtT3BUeXBlKSkg
eworICAgICAgICAgICAgZmxvYXQgZnJvbVZhbHVlOworICAgICAgICAgICAgZ2V0VHJhbnNmb3Jt
RnVuY3Rpb25WYWx1ZShzdGFydFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJh
bnNmb3JtT3BUeXBlLCBib3hTaXplLCBmcm9tVmFsdWUpOworICAgICAgICAgICAgYmFzaWNBbmlt
LT5zZXRGcm9tVmFsdWUoZnJvbVZhbHVlKTsKKworICAgICAgICAgICAgZmxvYXQgdG9WYWx1ZTsK
KyAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoZW5kVmFsdWUtPnZhbHVlKCkt
PmF0KGZ1bmN0aW9uSW5kZXgpLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIHRvVmFsdWUpOwor
ICAgICAgICAgICAgYmFzaWNBbmltLT5zZXRUb1ZhbHVlKHRvVmFsdWUpOworICAgICAgICB9IGVs
c2UgaWYgKGlzVHJhbnNmb3JtVHlwZUZsb2F0UG9pbnQzRCh0cmFuc2Zvcm1PcFR5cGUpKSB7Cisg
ICAgICAgICAgICBGbG9hdFBvaW50M0QgZnJvbVZhbHVlOworICAgICAgICAgICAgZ2V0VHJhbnNm
b3JtRnVuY3Rpb25WYWx1ZShzdGFydFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwg
dHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCBmcm9tVmFsdWUpOworICAgICAgICAgICAgYmFzaWNB
bmltLT5zZXRGcm9tVmFsdWUoZnJvbVZhbHVlKTsKKworICAgICAgICAgICAgRmxvYXRQb2ludDNE
IHRvVmFsdWU7CisgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGVuZFZhbHVl
LT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB0
b1ZhbHVlKTsKKyAgICAgICAgICAgIGJhc2ljQW5pbS0+c2V0VG9WYWx1ZSh0b1ZhbHVlKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZyb21WYWx1
ZTsKKyAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS0+dmFs
dWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgZnJvbVZh
bHVlKTsKKyAgICAgICAgICAgIGJhc2ljQW5pbS0+c2V0RnJvbVZhbHVlKGZyb21WYWx1ZSk7CisK
KyAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRvVmFsdWU7CisgICAgICAgICAgICBn
ZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGVuZFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbklu
ZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB0b1ZhbHVlKTsKKyAgICAgICAgICAgIGJh
c2ljQW5pbS0+c2V0VG9WYWx1ZSh0b1ZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8v
IFRoaXMgY29kZXBhdGggaXMgdXNlZCBmb3IgMi1rZXlmcmFtZSBhbmltYXRpb25zLCBzbyB3ZSBz
dGlsbCBuZWVkIHRvIGxvb2sgaW4gdGhlIHN0YXJ0CisgICAgLy8gZm9yIGEgdGltaW5nIGZ1bmN0
aW9uLiBFdmVuIGluIHRoZSByZXZlcnNpbmcgYW5pbWF0aW9uIGNhc2UsIHRoZSBmaXJzdCBrZXlm
cmFtZSBwcm92aWRlcyB0aGUgdGltaW5nIGZ1bmN0aW9uLgorICAgIGNvbnN0IFRpbWluZ0Z1bmN0
aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFs
dWVMaXN0LmF0KDApLCBhbmltYXRpb24pOworICAgIGJhc2ljQW5pbS0+c2V0VGltaW5nRnVuY3Rp
b24odGltaW5nRnVuY3Rpb24sICFmb3J3YXJkcyk7CisKKyAgICBQbGF0Zm9ybUNsdXR0ZXJBbmlt
YXRpb246OlZhbHVlRnVuY3Rpb25UeXBlIHZhbHVlRnVuY3Rpb24gPSBnZXRWYWx1ZUZ1bmN0aW9u
TmFtZUZvclRyYW5zZm9ybU9wZXJhdGlvbih0cmFuc2Zvcm1PcFR5cGUpOworICAgIGlmICh2YWx1
ZUZ1bmN0aW9uICE9IFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6Tm9WYWx1ZUZ1bmN0aW9uKQor
ICAgICAgICBiYXNpY0FuaW0tPnNldFZhbHVlRnVuY3Rpb24odmFsdWVGdW5jdGlvbik7CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBHcmFwaGljc0xheWVyQ2x1dHRlcjo6YXBwZW5kVG9V
bmNvbW1pdHRlZEFuaW1hdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwg
Y29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyogb3BlcmF0aW9ucywgY29uc3QgQW5pbWF0aW9uKiBh
bmltYXRpb24sIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgY29uc3QgSW50U2l6ZSYgYm94
U2l6ZSwgaW50IGFuaW1hdGlvbkluZGV4LCBkb3VibGUgdGltZU9mZnNldCwgYm9vbCBpc01hdHJp
eEFuaW1hdGlvbikKK3sKKyAgICBUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHJh
bnNmb3JtT3AgPSBpc01hdHJpeEFuaW1hdGlvbiA/IFRyYW5zZm9ybU9wZXJhdGlvbjo6TUFUUklY
XzNEIDogb3BlcmF0aW9ucy0+b3BlcmF0aW9ucygpLmF0KGFuaW1hdGlvbkluZGV4KS0+Z2V0T3Bl
cmF0aW9uVHlwZSgpOworICAgIGJvb2wgYWRkaXRpdmUgPSBhbmltYXRpb25JbmRleCA+IDA7Cisg
ICAgYm9vbCBpc0tleWZyYW1lID0gdmFsdWVMaXN0LnNpemUoKSA+IDI7CisKKyAgICBSZWZQdHI8
UGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uPiBjbHV0dGVyQW5pbWF0aW9uOworICAgIGJvb2wgdmFs
aWRNYXRyaWNlcyA9IHRydWU7CisgICAgaWYgKGlzS2V5ZnJhbWUpIHsKKyAgICAgICAgY2x1dHRl
ckFuaW1hdGlvbiA9IGNyZWF0ZUtleWZyYW1lQW5pbWF0aW9uKGFuaW1hdGlvbiwgcHJvcGVydHlJ
ZFRvU3RyaW5nKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSwgYWRkaXRpdmUpOworICAgICAgICB2YWxp
ZE1hdHJpY2VzID0gc2V0VHJhbnNmb3JtQW5pbWF0aW9uS2V5ZnJhbWVzKHZhbHVlTGlzdCwgYW5p
bWF0aW9uLCBjbHV0dGVyQW5pbWF0aW9uLmdldCgpLCBhbmltYXRpb25JbmRleCwgdHJhbnNmb3Jt
T3AsIGlzTWF0cml4QW5pbWF0aW9uLCBib3hTaXplKTsKKyAgICB9IGVsc2UgeworICAgICAgICBj
bHV0dGVyQW5pbWF0aW9uID0gY3JlYXRlQmFzaWNBbmltYXRpb24oYW5pbWF0aW9uLCBwcm9wZXJ0
eUlkVG9TdHJpbmcodmFsdWVMaXN0LnByb3BlcnR5KCkpLCBhZGRpdGl2ZSk7CisgICAgICAgIHZh
bGlkTWF0cmljZXMgPSBzZXRUcmFuc2Zvcm1BbmltYXRpb25FbmRwb2ludHModmFsdWVMaXN0LCBh
bmltYXRpb24sIGNsdXR0ZXJBbmltYXRpb24uZ2V0KCksIGFuaW1hdGlvbkluZGV4LCB0cmFuc2Zv
cm1PcCwgaXNNYXRyaXhBbmltYXRpb24sIGJveFNpemUpOworICAgIH0KKworICAgIGlmICghdmFs
aWRNYXRyaWNlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV91bmNvbWl0dGVkQW5p
bWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihjbHV0dGVyQW5pbWF0aW9uLCBh
bmltYXRpb25OYW1lLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIHRpbWVP
ZmZzZXQpKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBHcmFwaGljc0xheWVyQ2x1dHRl
cjo6Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVW
YWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIGNvbnN0IFN0
cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEludFNpemUmIGJv
eFNpemUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAg
QVNTRVJUKHZhbHVlTGlzdC5wcm9wZXJ0eSgpID09IEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFu
c2Zvcm0pOworCisgICAgYm9vbCBoYXNCaWdSb3RhdGlvbjsKKyAgICBpbnQgbGlzdEluZGV4ID0g
dmFsaWRhdGVUcmFuc2Zvcm1PcGVyYXRpb25zKHZhbHVlTGlzdCwgaGFzQmlnUm90YXRpb24pOwor
ICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIG9wZXJhdGlvbnMgPSAobGlzdEluZGV4ID49
IDApID8gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxp
c3QuYXQobGlzdEluZGV4KSktPnZhbHVlKCkgOiAwOworCisgICAgLy8gV2UgbmVlZCB0byBmYWxs
IGJhY2sgdG8gc29mdHdhcmUgYW5pbWF0aW9uIGlmIHdlIGRvbid0IGhhdmUgc2V0VmFsdWVGdW5j
dGlvbjosIGFuZAorICAgIC8vIHdlIHdvdWxkIG5lZWQgdG8gYW5pbWF0ZSBlYWNoIGluY29taW5n
IHRyYW5zZm9ybSBmdW5jdGlvbiBzZXBhcmF0ZWx5LiBUaGlzIGlzIHRoZQorICAgIC8vIGNhc2Ug
aWYgd2UgaGF2ZSBhIHJvdGF0aW9uID49IDE4MCBvciB3ZSBoYXZlIG1vcmUgdGhhbiBvbmUgdHJh
bnNmb3JtIGZ1bmN0aW9uLgorICAgIGlmICgoaGFzQmlnUm90YXRpb24gfHwgKG9wZXJhdGlvbnMg
JiYgb3BlcmF0aW9ucy0+c2l6ZSgpID4gMSkpICYmICFQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246
OnN1cHBvcnRzVmFsdWVGdW5jdGlvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBi
b29sIHZhbGlkTWF0cmljZXMgPSB0cnVlOworCisgICAgLy8gSWYgZnVuY3Rpb24gbGlzdHMgZG9u
J3QgbWF0Y2ggd2UgZG8gYSBtYXRyaXggYW5pbWF0aW9uLCBvdGhlcndpc2Ugd2UgZG8gYSBjb21w
b25lbnQgaGFyZHdhcmUgYW5pbWF0aW9uLgorICAgIC8vIEFsc28sIHdlIGNhbid0IGRvIGNvbXBv
bmVudCBhbmltYXRpb24gdW5sZXNzIHdlIGhhdmUgdmFsdWVGdW5jdGlvbiwgc28gd2UgbmVlZCB0
byBkbyBtYXRyaXggYW5pbWF0aW9uCisgICAgLy8gaWYgdGhhdCdzIG5vdCB0cnVlIGFzIHdlbGwu
CisgICAgYm9vbCBpc01hdHJpeEFuaW1hdGlvbiA9IGxpc3RJbmRleCA8IDAgfHwgIVBsYXRmb3Jt
Q2x1dHRlckFuaW1hdGlvbjo6c3VwcG9ydHNWYWx1ZUZ1bmN0aW9uKCk7CisgICAgaW50IG51bUFu
aW1hdGlvbnMgPSBpc01hdHJpeEFuaW1hdGlvbiA/IDEgOiBvcGVyYXRpb25zLT5zaXplKCk7CisK
KyAgICBmb3IgKGludCBhbmltYXRpb25JbmRleCA9IDA7IGFuaW1hdGlvbkluZGV4IDwgbnVtQW5p
bWF0aW9uczsgKythbmltYXRpb25JbmRleCkgeworICAgICAgICBpZiAoIWFwcGVuZFRvVW5jb21t
aXR0ZWRBbmltYXRpb25zKHZhbHVlTGlzdCwgb3BlcmF0aW9ucywgYW5pbWF0aW9uLCBhbmltYXRp
b25OYW1lLCBib3hTaXplLCBhbmltYXRpb25JbmRleCwgdGltZU9mZnNldCwgaXNNYXRyaXhBbmlt
YXRpb24pKSB7CisgICAgICAgICAgICB2YWxpZE1hdHJpY2VzID0gZmFsc2U7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB2YWxpZE1hdHJpY2VzOwog
fQogCiBib29sIEdyYXBoaWNzTGF5ZXJDbHV0dGVyOjpjcmVhdGVBbmltYXRpb25Gcm9tS2V5ZnJh
bWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiog
YW5pbWF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9H
cmFwaGljc0xheWVyQ2x1dHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2x1dHRlci9HcmFwaGljc0xheWVyQ2x1dHRlci5oCmluZGV4IDM1YTU0NzAwNzUwMTdjZTllNjEz
ZWY3YmMwMDdjMTE3YjM0MmYyODYuLmM5MzAwMzJiYWQ2OTYxMTUxOTI4NjQ0ZTUxZjcxNGM2MzY4
MmVmMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0
ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmgKQEAgLTExOSw2ICsxMTksOCBA
QCBwcml2YXRlOgogICAgIGJvb2wgc2V0VHJhbnNmb3JtQW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0
IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgUGxhdGZvcm1DbHV0dGVyQW5p
bWF0aW9uKiwgaW50IGZ1bmN0aW9uSW5kZXgsIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9u
VHlwZSwgYm9vbCBpc01hdHJpeEFuaW1hdGlvbiwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSk7CiAg
ICAgYm9vbCBzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1
ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb24qLCBpbnQg
ZnVuY3Rpb25JbmRleCwgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlLCBib29sIGlz
TWF0cml4QW5pbWF0aW9uLCBjb25zdCBJbnRTaXplJiBib3hTaXplKTsKIAorICAgIGJvb2wgYXBw
ZW5kVG9VbmNvbW1pdHRlZEFuaW1hdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25z
dCBUcmFuc2Zvcm1PcGVyYXRpb25zKiwgY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiBh
bmltYXRpb25OYW1lLCBjb25zdCBJbnRTaXplJiBib3hTaXplLCBpbnQgYW5pbWF0aW9uSW5kZXgs
IGRvdWJsZSB0aW1lT2Zmc2V0LCBib29sIGlzTWF0cml4QW5pbWF0aW9uKTsKKwogICAgIGVudW0g
TGF5ZXJDaGFuZ2UgewogICAgICAgICBOb0NoYW5nZSA9IDAsCiAgICAgICAgIE5hbWVDaGFuZ2Vk
ID0gMSA8PCAxLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2x1dHRlci9QbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9QbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb24uY3BwCmluZGV4
IGM3OTg3NjIwNWVjYmQ5ODU1MzRjYTI5NmQyZTVkMGI4ODA3MjI2YjcuLjYyZmU3NjE5MjBjMDIx
MjNkYWI4Y2EyMTMzYjFmZGNlN2FkZjAyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL1BsYXRmb3JtQ2x1dHRl
ckFuaW1hdGlvbi5jcHAKQEAgLTUwLDYgKzUwLDE0IEBAIHN0YXRpYyB2b2lkIHRpbWVsaW5lU3Rh
cnRlZENhbGxiYWNrKENsdXR0ZXJUaW1lbGluZSosIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbioK
ICAgICBhbmltYXRpb24tPmFuaW1hdGlvbkRpZFN0YXJ0KCk7CiB9CiAKK3N0YXRpYyBTdHJpbmcg
dG9DbHV0dGVyQWN0b3JQcm9wZXJ0eVN0cmluZyhjb25zdCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRp
b246OlZhbHVlRnVuY3Rpb25UeXBlIHZhbHVlRnVuY3Rpb25UeXBlKQoreworICAgIC8vIENsdXR0
ZXJBY3RvciBkb2Vzbid0IGhhdmUgJ3NjYWxlJyBhbmQgJ3RyYW5zbGF0ZScgcHJvcGVydGllcy4g
U28gd2Ugc2hvdWxkIHN1cHBvcnQKKyAgICAvLyAnc2NhbGUnIGFuZCAndHJhbnNsYXRlJyBWYWx1
ZUZ1bmN0aW9uVHlwZSBieSBjb21iaW5hdGlvbiBvZiBleGlzdGluZyBwcm9wZXJ0eSBhbmltYXRp
b25zLiAKKyAgICBjb25zdCBjaGFyKiBjbHV0dGVyQWN0b3JQcm9wZXJ0eVtdID0geyAiTm9Qcm9w
ZXJ0eSIsICJyb3RhdGlvbi1hbmdsZS14IiwgInJvdGF0aW9uLWFuZ2xlLXkiLCAicm90YXRpb24t
YW5nbGUteiIsICJzY2FsZS14IiwgInNjYWxlLXkiLCAic2NhbGUteiIsICJOb1Byb3BlcnR5Iiwg
InRyYW5zbGF0aW9uLXgiLCAidHJhbnNsYXRpb24teSIsICJ0cmFuc2xhdGlvbi16IiwgIk5vUHJv
cGVydHkiIH07IAorICAgIHJldHVybiBjbHV0dGVyQWN0b3JQcm9wZXJ0eVt2YWx1ZUZ1bmN0aW9u
VHlwZV07Cit9CisKIHN0YXRpYyBDbHV0dGVyQW5pbWF0aW9uTW9kZSB0b0NsdXR0ZXJBbmltYXRp
b25Nb2RlKGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbikKIHsKICAgICBBU1NF
UlQodGltaW5nRnVuY3Rpb24pOwpAQCAtMTI0LDcgKzEzMiw3IEBAIFBsYXRmb3JtQ2x1dHRlckFu
aW1hdGlvbjo6flBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbigpCiAKIGJvb2wgUGxhdGZvcm1DbHV0
dGVyQW5pbWF0aW9uOjpzdXBwb3J0c1ZhbHVlRnVuY3Rpb24oKQogewotICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogZG91YmxlIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlv
bjo6YmVnaW5UaW1lKCkgY29uc3QKQEAgLTE0MCwxNiArMTQ4LDEyIEBAIHZvaWQgUGxhdGZvcm1D
bHV0dGVyQW5pbWF0aW9uOjpzZXRCZWdpblRpbWUoZG91YmxlIHZhbHVlKQogCiBkb3VibGUgUGxh
dGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpkdXJhdGlvbigpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1f
dHlwZSA9PSBCYXNpYyk7Ci0KICAgICBkb3VibGUgZHVyYXRpb24gPSBjbHV0dGVyX3RpbWVsaW5l
X2dldF9kdXJhdGlvbihDTFVUVEVSX1RJTUVMSU5FKG1fYW5pbWF0aW9uLmdldCgpKSk7CiAgICAg
cmV0dXJuIGR1cmF0aW9uIC8gMTAwMDsKIH0KIAogdm9pZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRp
b246OnNldER1cmF0aW9uKGRvdWJsZSB2YWx1ZSkKIHsKLSAgICBBU1NFUlQobV90eXBlID09IEJh
c2ljKTsKLQogICAgIC8vIENsdXR0ZXIgQW5pbWF0aW9uIHNldHMgdGhlIGR1cmF0aW9uIHRpbWUg
aW4gbWlsbGlzZWNvbmRzLgogICAgIGdpbnQgZHVyYXRpb24gPSB2YWx1ZSAqIDEwMDA7CiAgICAg
Y2x1dHRlcl90aW1lbGluZV9zZXRfZHVyYXRpb24oQ0xVVFRFUl9USU1FTElORShtX2FuaW1hdGlv
bi5nZXQoKSksIGR1cmF0aW9uKTsKQEAgLTI0NSwyNCArMjQ5LDI4IEBAIHZvaWQgUGxhdGZvcm1D
bHV0dGVyQW5pbWF0aW9uOjpzZXRBZGRpdGl2ZShib29sIHZhbHVlKQogewogICAgIGlmIChtX2Fk
ZGl0aXZlID09IHZhbHVlKQogICAgICAgICByZXR1cm47CisKICAgICBtX2FkZGl0aXZlID0gdmFs
dWU7CiB9CiAKIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6VmFsdWVGdW5jdGlvblR5cGUgUGxh
dGZvcm1DbHV0dGVyQW5pbWF0aW9uOjp2YWx1ZUZ1bmN0aW9uKCkgY29uc3QKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBOb1ZhbHVlRnVuY3Rpb247CisgICAgcmV0dXJuIG1f
dmFsdWVGdW5jdGlvblR5cGU7CiB9CiAKIHZvaWQgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpz
ZXRWYWx1ZUZ1bmN0aW9uKFZhbHVlRnVuY3Rpb25UeXBlIHZhbHVlKQogewotICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgaWYgKG1fdmFsdWVGdW5jdGlvblR5cGUgPT0gdmFsdWUpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fdmFsdWVGdW5jdGlvblR5cGUgPSB2YWx1ZTsKIH0KIAogdm9pZCBQ
bGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OnNldEZyb21WYWx1ZShmbG9hdCB2YWx1ZSkKIHsKLSAg
ICBpZiAobV9mcm9tVmFsdWUgPT0gdmFsdWUpCisgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBC
YXNpYyB8fCBtX2Zyb21WYWx1ZSA9PSB2YWx1ZSkKICAgICAgICAgcmV0dXJuOworCiAgICAgbV9m
cm9tVmFsdWUgPSB2YWx1ZTsKIH0KIApAQCAtMjczLDcgKzI4MSwxMCBAQCB2b2lkIFBsYXRmb3Jt
Q2x1dHRlckFuaW1hdGlvbjo6c2V0RnJvbVZhbHVlKGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0
aW9uTWF0cml4JgogCiB2b2lkIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6c2V0RnJvbVZhbHVl
KGNvbnN0IEZsb2F0UG9pbnQzRCYgdmFsdWUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljIHx8IG1fZnJvbVZhbHVlM0QgPT0gdmFsdWUp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fZnJvbVZhbHVlM0QgPSB2YWx1ZTsKIH0KIAogdm9p
ZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OnNldEZyb21WYWx1ZShjb25zdCBXZWJDb3JlOjpD
b2xvciYgdmFsdWUpCkBAIC0yODgsOCArMjk5LDkgQEAgdm9pZCBQbGF0Zm9ybUNsdXR0ZXJBbmlt
YXRpb246OmNvcHlGcm9tVmFsdWVGcm9tKGNvbnN0IFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbioK
IAogdm9pZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OnNldFRvVmFsdWUoZmxvYXQgdmFsdWUp
CiB7Ci0gICAgaWYgKG1fdG9WYWx1ZSA9PSB2YWx1ZSkKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgp
ICE9IEJhc2ljIHx8IG1fdG9WYWx1ZSA9PSB2YWx1ZSkKICAgICAgICAgcmV0dXJuOworCiAgICAg
bV90b1ZhbHVlID0gdmFsdWU7CiB9CiAKQEAgLTMwMCw3ICszMTIsMTAgQEAgdm9pZCBQbGF0Zm9y
bUNsdXR0ZXJBbmltYXRpb246OnNldFRvVmFsdWUoY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRp
b25NYXRyaXgmIHYKIAogdm9pZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OnNldFRvVmFsdWUo
Y29uc3QgRmxvYXRQb2ludDNEJiB2YWx1ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IGlmIChhbmltYXRpb25UeXBlKCkgIT0gQmFzaWMgfHwgbV90b1ZhbHVlM0QgPT0gdmFsdWUpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fdG9WYWx1ZTNEID0gdmFsdWU7CiB9CiAKIHZvaWQgUGxh
dGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpzZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiB2
YWx1ZSkKQEAgLTM3MiwyOCArMzg3LDgwIEBAIHZvaWQgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9u
OjphbmltYXRpb25EaWRTdGFydCgpCiBDbHV0dGVyVGltZWxpbmUqIFBsYXRmb3JtQ2x1dHRlckFu
aW1hdGlvbjo6dGltZWxpbmUoKSBjb25zdAogewogICAgIEFTU0VSVChtX2FuaW1hdGlvbik7Ci0g
ICAgQVNTRVJUKG1fdHlwZSA9PSBCYXNpYyk7CiAgICAgcmV0dXJuIENMVVRURVJfVElNRUxJTkUo
bV9hbmltYXRpb24uZ2V0KCkpOwogfQogCi12b2lkIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6
YWRkT3BhY2l0eVRyYW5zaXRpb24oKQordm9pZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OmFk
ZENsdXR0ZXJUcmFuc2l0aW9uRm9yUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eSwgY29u
c3QgdW5zaWduZWQgZnJvbVZhbHVlLCBjb25zdCB1bnNpZ25lZCB0b1ZhbHVlKQogewotICAgIEdS
ZWZQdHI8Q2x1dHRlclRyYW5zaXRpb24+IHRyYW5zaXRpb24gPSBhZG9wdEdSZWYoY2x1dHRlcl9w
cm9wZXJ0eV90cmFuc2l0aW9uX25ldygib3BhY2l0eSIpKTsKLSAgICBjbHV0dGVyX3RyYW5zaXRp
b25fc2V0X2Zyb20odHJhbnNpdGlvbi5nZXQoKSwgR19UWVBFX1VJTlQsIHN0YXRpY19jYXN0PGd1
aW50OD4oMjU1ICogbV9mcm9tVmFsdWUpKTsKLSAgICBjbHV0dGVyX3RyYW5zaXRpb25fc2V0X3Rv
KHRyYW5zaXRpb24uZ2V0KCksIEdfVFlQRV9VSU5ULCBzdGF0aWNfY2FzdDxndWludDg+KDI1NSAq
IG1fdG9WYWx1ZSkpOworICAgIEFTU0VSVChwcm9wZXJ0eSAhPSAiTm9Qcm9wZXJ0eSIpOworCisg
ICAgR1JlZlB0cjxDbHV0dGVyVHJhbnNpdGlvbj4gdHJhbnNpdGlvbiA9IGFkb3B0R1JlZihjbHV0
dGVyX3Byb3BlcnR5X3RyYW5zaXRpb25fbmV3KHByb3BlcnR5LnV0ZjgoKS5kYXRhKCkpKTsKKyAg
ICBjbHV0dGVyX3RyYW5zaXRpb25fc2V0X2Zyb20odHJhbnNpdGlvbi5nZXQoKSwgR19UWVBFX1VJ
TlQsIGZyb21WYWx1ZSk7CisgICAgY2x1dHRlcl90cmFuc2l0aW9uX3NldF90byh0cmFuc2l0aW9u
LmdldCgpLCBHX1RZUEVfVUlOVCwgdG9WYWx1ZSk7CisKKyAgICBjbHV0dGVyX3RyYW5zaXRpb25f
Z3JvdXBfYWRkX3RyYW5zaXRpb24oQ0xVVFRFUl9UUkFOU0lUSU9OX0dST1VQKG1fYW5pbWF0aW9u
LmdldCgpKSwgdHJhbnNpdGlvbi5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DbHV0dGVyQW5p
bWF0aW9uOjphZGRDbHV0dGVyVHJhbnNpdGlvbkZvclByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJv
cGVydHksIGNvbnN0IGZsb2F0IGZyb21WYWx1ZSwgY29uc3QgZmxvYXQgdG9WYWx1ZSkKK3sKKyAg
ICBBU1NFUlQocHJvcGVydHkgIT0gIk5vUHJvcGVydHkiKTsKKworICAgIEdSZWZQdHI8Q2x1dHRl
clRyYW5zaXRpb24+IHRyYW5zaXRpb24gPSBhZG9wdEdSZWYoY2x1dHRlcl9wcm9wZXJ0eV90cmFu
c2l0aW9uX25ldyhwcm9wZXJ0eS51dGY4KCkuZGF0YSgpKSk7CisgICAgY2x1dHRlcl90cmFuc2l0
aW9uX3NldF9mcm9tKHRyYW5zaXRpb24uZ2V0KCksIEdfVFlQRV9GTE9BVCwgZnJvbVZhbHVlKTsK
KyAgICBjbHV0dGVyX3RyYW5zaXRpb25fc2V0X3RvKHRyYW5zaXRpb24uZ2V0KCksIEdfVFlQRV9G
TE9BVCwgdG9WYWx1ZSk7CiAKICAgICBjbHV0dGVyX3RyYW5zaXRpb25fZ3JvdXBfYWRkX3RyYW5z
aXRpb24oQ0xVVFRFUl9UUkFOU0lUSU9OX0dST1VQKG1fYW5pbWF0aW9uLmdldCgpKSwgdHJhbnNp
dGlvbi5nZXQoKSk7CiB9CiAKK3ZvaWQgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjphZGRPcGFj
aXR5VHJhbnNpdGlvbigpCit7CisgICAgYWRkQ2x1dHRlclRyYW5zaXRpb25Gb3JQcm9wZXJ0eShT
dHJpbmcoIm9wYWNpdHkiKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDI1NSAqIG1fZnJvbVZhbHVl
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDI1NSAqIG1fdG9WYWx1ZSkpOworfQorCit2b2lkIFBs
YXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6YWRkVHJhbnNmb3JtVHJhbnNpdGlvbigpCit7CisgICAg
c3dpdGNoIChtX3ZhbHVlRnVuY3Rpb25UeXBlKSB7CisgICAgY2FzZSBSb3RhdGVYOgorICAgIGNh
c2UgUm90YXRlWToKKyAgICBjYXNlIFJvdGF0ZVo6CisgICAgICAgIGFkZENsdXR0ZXJUcmFuc2l0
aW9uRm9yUHJvcGVydHkodG9DbHV0dGVyQWN0b3JQcm9wZXJ0eVN0cmluZyhtX3ZhbHVlRnVuY3Rp
b25UeXBlKSwgcmFkMmRlZyhtX2Zyb21WYWx1ZSksIHJhZDJkZWcobV90b1ZhbHVlKSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgU2NhbGVYOgorICAgIGNhc2UgU2NhbGVZOgorICAgIGNhc2Ug
U2NhbGVaOgorICAgIGNhc2UgVHJhbnNsYXRlWDoKKyAgICBjYXNlIFRyYW5zbGF0ZVk6CisgICAg
Y2FzZSBUcmFuc2xhdGVaOgorICAgICAgICBhZGRDbHV0dGVyVHJhbnNpdGlvbkZvclByb3BlcnR5
KHRvQ2x1dHRlckFjdG9yUHJvcGVydHlTdHJpbmcobV92YWx1ZUZ1bmN0aW9uVHlwZSksIG1fZnJv
bVZhbHVlLCBtX3RvVmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNjYWxlOgorICAg
ICAgICBhZGRDbHV0dGVyVHJhbnNpdGlvbkZvclByb3BlcnR5KFN0cmluZygic2NhbGUteCIpLCBt
X2Zyb21WYWx1ZTNELngoKSwgbV90b1ZhbHVlM0QueCgpKTsKKyAgICAgICAgYWRkQ2x1dHRlclRy
YW5zaXRpb25Gb3JQcm9wZXJ0eShTdHJpbmcoInNjYWxlLXkiKSwgbV9mcm9tVmFsdWUzRC55KCks
IG1fdG9WYWx1ZTNELnkoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHJhbnNsYXRlOgor
ICAgICAgICBhZGRDbHV0dGVyVHJhbnNpdGlvbkZvclByb3BlcnR5KFN0cmluZygidHJhbnNsYXRp
b24teCIpLCBtX2Zyb21WYWx1ZTNELngoKSwgbV90b1ZhbHVlM0QueCgpKTsKKyAgICAgICAgYWRk
Q2x1dHRlclRyYW5zaXRpb25Gb3JQcm9wZXJ0eShTdHJpbmcoInRyYW5zbGF0aW9uLXkiKSwgbV9m
cm9tVmFsdWUzRC54KCksIG1fdG9WYWx1ZTNELnkoKSk7CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIC8vIElm
IGNsdXR0ZXIgY292ZXJzIHZhbHVlRnVuY3Rpb24gdHlwZSBhbmltYXRpb25zLCB3ZSBzaG91bGQg
cmVsZWFzZSBrZWVwaW5nIHRyYW5zZm9ybSBtYXRyaXguCisgICAgLy8gT3RoZXJ3aXNlLCB0aGUg
dHJhbnNmb3JtYXRpb24gaXMgYXBwbGllZCB0d2ljZSB1bmV4cGVjdGVkbHkuIFNlZSBncmFwaGlj
c0xheWVyQWN0b3JBcHBseVRyYW5zZm9ybS4KKyAgICBncmFwaGljc0xheWVyQWN0b3JTZXRUcmFu
c2Zvcm0oR1JBUEhJQ1NfTEFZRVJfQUNUT1IobV9sYXllci5nZXQoKSksIDApOworfQorCiB2b2lk
IFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6YWRkQW5pbWF0aW9uRm9yS2V5KEdyYXBoaWNzTGF5
ZXJBY3RvciogcGxhdGZvcm1MYXllciwgY29uc3QgU3RyaW5nJiBrZXkpCiB7CiAgICAgQVNTRVJU
KGFuaW1hdGlvblR5cGUoKSA9PSBCYXNpYyk7CiAgICAgQVNTRVJUKCFnX29iamVjdF9nZXRfZGF0
YShHX09CSkVDVChwbGF0Zm9ybUxheWVyKSwga2V5LnV0ZjgoKS5kYXRhKCkpKTsKIAorICAgIG1f
bGF5ZXIgPSBDTFVUVEVSX0FDVE9SKHBsYXRmb3JtTGF5ZXIpOworCiAgICAgaWYgKG1fYW5pbWF0
ZWRQcm9wZXJ0eVR5cGUgPT0gT3BhY2l0eSkKICAgICAgICAgYWRkT3BhY2l0eVRyYW5zaXRpb24o
KTsKICAgICBlbHNlIGlmIChtX2FuaW1hdGVkUHJvcGVydHlUeXBlID09IFRyYW5zZm9ybSkKLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGFkZFRyYW5zZm9ybVRyYW5zaXRp
b24oKTsKICAgICBlbHNlIGlmIChtX2FuaW1hdGVkUHJvcGVydHlUeXBlID09IEJhY2tncm91bmRD
b2xvcikKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgZWxzZQpAQCAtNDA2LDgg
KzQ3Myw2IEBAIHZvaWQgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjphZGRBbmltYXRpb25Gb3JL
ZXkoR3JhcGhpY3NMYXllckFjdG9yKiBwbGF0Zm9ybUxhCiAgICAgZ19zaWduYWxfY29ubmVjdChj
bHV0dGVyVGltZWxpbmUsICJzdGFydGVkIiwgR19DQUxMQkFDSyh0aW1lbGluZVN0YXJ0ZWRDYWxs
YmFjayksIHRoaXMpOwogICAgIGdfb2JqZWN0X3NldF9kYXRhKEdfT0JKRUNUKHBsYXRmb3JtTGF5
ZXIpLCBrZXkudXRmOCgpLmRhdGEoKSwgdGhpcyk7CiAKLSAgICBtX2xheWVyID0gQ0xVVFRFUl9B
Q1RPUihwbGF0Zm9ybUxheWVyKTsKLQogICAgIGNsdXR0ZXJfYWN0b3JfYWRkX3RyYW5zaXRpb24o
bV9sYXllci5nZXQoKSwga2V5LnV0ZjgoKS5kYXRhKCksIENMVVRURVJfVFJBTlNJVElPTihtX2Fu
aW1hdGlvbi5nZXQoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jbHV0dGVyL1BsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9QbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb24u
aAppbmRleCA2N2IxZTQ4NTIxMTM2NTRmMDRhNzM1MDA3NThjOGNhYjk0MzkzZmQ4Li5iODkyZGQz
Y2NmNTFhNDVjZjlkY2E5YWU3OTM3NGM5YTQxMjU2YWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL1BsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvUGxhdGZvcm1D
bHV0dGVyQW5pbWF0aW9uLmgKQEAgLTEzOCw3ICsxMzgsMTEgQEAgcHJpdmF0ZToKICAgICBDbHV0
dGVyVGltZWxpbmUqIHRpbWVsaW5lKCkgY29uc3Q7CiAgICAgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUg
c3RyaW5nVG9BbmltYXRlZFByb3BlcnR5VHlwZShjb25zdCBTdHJpbmcmIGtleVBhdGgpIGNvbnN0
OwogCisgICAgdm9pZCBhZGRDbHV0dGVyVHJhbnNpdGlvbkZvclByb3BlcnR5KGNvbnN0IFN0cmlu
ZyYgcHJvcGVydHksIGNvbnN0IHVuc2lnbmVkIGZyb21WYWx1ZSwgY29uc3QgdW5zaWduZWQgdG9W
YWx1ZSk7CisgICAgdm9pZCBhZGRDbHV0dGVyVHJhbnNpdGlvbkZvclByb3BlcnR5KGNvbnN0IFN0
cmluZyYgcHJvcGVydHksIGNvbnN0IGZsb2F0IGZyb21WYWx1ZSwgY29uc3QgZmxvYXQgdG9WYWx1
ZSk7CisKICAgICB2b2lkIGFkZE9wYWNpdHlUcmFuc2l0aW9uKCk7CisgICAgdm9pZCBhZGRUcmFu
c2Zvcm1UcmFuc2l0aW9uKCk7CiAKICAgICBBbmltYXRpb25UeXBlIG1fdHlwZTsKICAgICBBbmlt
YXRlZFByb3BlcnR5VHlwZSBtX2FuaW1hdGVkUHJvcGVydHlUeXBlOwpAQCAtMTUxLDYgKzE1NSw5
IEBAIHByaXZhdGU6CiAgICAgZmxvYXQgbV9mcm9tVmFsdWU7CiAgICAgZmxvYXQgbV90b1ZhbHVl
OwogCisgICAgRmxvYXRQb2ludDNEIG1fZnJvbVZhbHVlM0Q7CisgICAgRmxvYXRQb2ludDNEIG1f
dG9WYWx1ZTNEOworCiAgICAgZmxvYXQgbV9yZXBlYXRDb3VudDsKIAogICAgIGNvbnN0IFRpbWlu
Z0Z1bmN0aW9uKiBtX3RpbWluZ0Z1bmN0aW9uOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>