<?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>110057</bug_id>
          
          <creation_ts>2013-02-17 10:58:30 -0800</creation_ts>
          <short_desc>[GTK][AC] Implement keyframe animations with clutter ac backend</short_desc>
          <delta_ts>2013-02-19 09:03:18 -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>Linux</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>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>835006</commentid>
    <comment_count>0</comment_count>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2013-02-17 10:58:30 -0800</bug_when>
    <thetext>This bug is for bringing accelearted animation with clutter to webkitgtk port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835009</commentid>
    <comment_count>1</comment_count>
      <attachid>188770</attachid>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2013-02-17 11:19:08 -0800</bug_when>
    <thetext>Created attachment 188770
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836332</commentid>
    <comment_count>2</comment_count>
      <attachid>188770</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-02-19 06:37:18 -0800</bug_when>
    <thetext>Comment on attachment 188770
Patch

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

&gt; Source/WebCore/platform/graphics/clutter/GraphicsLayerClutter.cpp:775
&gt; +            // If any matrix is singular, CA won&apos;t animate it correctly. So fall back to software animation

CA reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836333</commentid>
    <comment_count>3</comment_count>
      <attachid>188770</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-02-19 06:37:37 -0800</bug_when>
    <thetext>Comment on attachment 188770
Patch

Err, actually, there was a nit, so cq-</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836385</commentid>
    <comment_count>4</comment_count>
      <attachid>189089</attachid>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2013-02-19 07:42:52 -0800</bug_when>
    <thetext>Created attachment 189089
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836389</commentid>
    <comment_count>5</comment_count>
      <attachid>188770</attachid>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2013-02-19 07:45:33 -0800</bug_when>
    <thetext>Comment on attachment 188770
Patch

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

Thank you for the review :)

&gt;&gt; Source/WebCore/platform/graphics/clutter/GraphicsLayerClutter.cpp:775
&gt;&gt; +            // If any matrix is singular, CA won&apos;t animate it correctly. So fall back to software animation
&gt; 
&gt; CA reference.

Updated this comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836457</commentid>
    <comment_count>6</comment_count>
      <attachid>189089</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-19 09:03:14 -0800</bug_when>
    <thetext>Comment on attachment 189089
Patch

Clearing flags on attachment: 189089

Committed r143343: &lt;http://trac.webkit.org/changeset/143343&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836458</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-19 09:03:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188770</attachid>
            <date>2013-02-17 11:19:08 -0800</date>
            <delta_ts>2013-02-19 08:48:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110057-20130218041531.patch</filename>
            <type>text/plain</type>
            <size>22320</size>
            <attacher name="ChangSeok Oh">kevin.cs.oh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyOTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmIyNTMzMTc3NWQwMzU4
MzMxMTk1NjQyMjcwNWZkYzA4ODlkNmRmZS4uOWJlNDMyNzc4MDBhMDdkYzMxNjg3YmU3OTljMDY5
NDIxNmQzOTA2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEzLTAyLTE3ICBDaGFu
Z1Nlb2sgT2ggIDxzaGl2YW1pZG93QGdtYWlsLmNvbT4KKworICAgICAgICBbR1RLXVtBQ10gSW1w
bGVtZW50IGtleWZyYW1lIGFuaW1hdGlvbnMgd2l0aCBjbHV0dGVyIGFjIGJhY2tlbmQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDA1NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYnJp
bmdzIGFjY2VsZXJhdGVkIGtleWZyYW1lIGFuaW1hdGlvbiB3aXRoIGNsdXR0ZXIgdG8gV2ViS2l0
R3RrKy4KKyAgICAgICAgQ2hhbmdlcyBvZiBHcmFwaGljc0xheWVyQ2x1dHRlciBhcmUgYmFzZWQg
b24gR3JhcGhpY3NMYXllckNBLiBCdXQgbWFqb3IgY2hhbmdlcworICAgICAgICBvZiBQbGF0Zm9y
bUNsdXR0ZXJBbmltYXRpb24gYXJlIGltcGxlbWVudGVkIHdpdGggY2x1dHRlciBrZXlmcmFtZSB0
cmFuc2l0aW9uIGFwaXMuCisgICAgICAgIFNlZSBodHRwOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9j
bHV0dGVyL3N0YWJsZS9DbHV0dGVyS2V5ZnJhbWVUcmFuc2l0aW9uLmh0bWwKKworICAgICAgICBD
b3ZlcmVkIGJ5IGV4aXN0aW5nIGFuaW1hdGlvbiB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllckNsdXR0ZXI6OmNyZWF0ZUtleWZyYW1lQW5pbWF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDbHV0dGVyOjpzZXRUcmFuc2Zvcm1BbmltYXRp
b25LZXlmcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNsdXR0ZXI6OnNl
dEFuaW1hdGlvbktleWZyYW1lcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRl
ci9QbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9DbHV0
dGVyQWN0b3JQcm9wZXJ0eVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNsdXR0
ZXJBbmltYXRpb246OlBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OnNldFRpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6c2V0VmFsdWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6c2V0S2V5VGltZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpzZXRUaW1pbmdGdW5jdGlvbnMp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjphZGRDbHV0dGVy
VHJhbnNpdGlvbkZvclByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjphZGRDbHV0dGVyS2V5ZnJhbWVUcmFuc2l0
aW9uRm9yUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DbHV0dGVyQW5pbWF0
aW9uOjphZGRPcGFjaXR5VHJhbnNpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNs
dXR0ZXJBbmltYXRpb246OmFkZFRyYW5zZm9ybVRyYW5zaXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjphZGRBbmltYXRpb25Gb3JLZXkpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpyZW1vdmVBbmltYXRpb25Gb3JL
ZXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvUGxhdGZvcm1DbHV0dGVy
QW5pbWF0aW9uLmg6CisgICAgICAgIChQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb24pOgorCiAyMDEz
LTAyLTE0ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBGYWN0
b3IgRXZlbnQgcmV0YXJnZXRpbmcgY29kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0xheWVyQ2x1dHRlci5j
cHAKaW5kZXggNTM3OTZlYzg5Nzc5NmQ5YjkzOWMyMTIxZjEyNTNkMDFiYjU3MTk4My4uNDU5YzI1
MTVjZjlmM2IxNjJjZDg4MjVmMzlkNmNkMGM1NmNhZDE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0xheWVyQ2x1dHRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0xh
eWVyQ2x1dHRlci5jcHAKQEAgLTc0OCwxNCArNzQ4LDcyIEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1D
bHV0dGVyQW5pbWF0aW9uPiBHcmFwaGljc0xheWVyQ2x1dHRlcjo6Y3JlYXRlQmFzaWNBbmltYXRp
b24oCiAKIFBhc3NSZWZQdHI8UGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uPkdyYXBoaWNzTGF5ZXJD
bHV0dGVyOjpjcmVhdGVLZXlmcmFtZUFuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFuaW0sIGNv
bnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhZGRpdGl2ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgIHJldHVybiAwOworICAgIFJlZlB0cjxQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb24+
IGtleWZyYW1lQW5pbSA9IFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6Y3JlYXRlKFBsYXRmb3Jt
Q2x1dHRlckFuaW1hdGlvbjo6S2V5ZnJhbWUsIGtleVBhdGgpOworICAgIHNldHVwQW5pbWF0aW9u
KGtleWZyYW1lQW5pbS5nZXQoKSwgYW5pbSwgYWRkaXRpdmUpOworICAgIHJldHVybiBrZXlmcmFt
ZUFuaW07CiB9CiAKIGJvb2wgR3JhcGhpY3NMYXllckNsdXR0ZXI6OnNldFRyYW5zZm9ybUFuaW1h
dGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBB
bmltYXRpb24qIGFuaW1hdGlvbiwgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uKiBrZXlmcmFtZUFu
aW0sIGludCBmdW5jdGlvbkluZGV4LCBUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUg
dHJhbnNmb3JtT3BUeXBlLCBib29sIGlzTWF0cml4QW5pbWF0aW9uLCBjb25zdCBJbnRTaXplJiBi
b3hTaXplKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAg
IFZlY3RvcjxmbG9hdD4ga2V5VGltZXM7CisgICAgVmVjdG9yPGZsb2F0PiBmbG9hdFZhbHVlczsK
KyAgICBWZWN0b3I8RmxvYXRQb2ludDNEPiBmbG9hdFBvaW50M0RWYWx1ZXM7CisgICAgVmVjdG9y
PFRyYW5zZm9ybWF0aW9uTWF0cml4PiB0cmFuc2Zvcm1hdGlvbk1hdHJpeFZhbHVlczsKKyAgICBW
ZWN0b3I8Y29uc3QgVGltaW5nRnVuY3Rpb24qPiB0aW1pbmdGdW5jdGlvbnM7CisKKyAgICBib29s
IGZvcndhcmRzID0gYW5pbWF0aW9uLT5kaXJlY3Rpb25Jc0ZvcndhcmRzKCk7CisKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVMaXN0LnNpemUoKTsgKytpKSB7CisgICAgICAgIHVu
c2lnbmVkIGluZGV4ID0gZm9yd2FyZHMgPyBpIDogKHZhbHVlTGlzdC5zaXplKCkgLSBpIC0gMSk7
CisgICAgICAgIGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKiBjdXJWYWx1ZSA9IHN0YXRp
Y19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KGluZGV4
KSk7CisgICAgICAgIGtleVRpbWVzLmFwcGVuZChmb3J3YXJkcyA/IGN1clZhbHVlLT5rZXlUaW1l
KCkgOiAoMSAtIGN1clZhbHVlLT5rZXlUaW1lKCkpKTsKKworICAgICAgICBpZiAoaXNNYXRyaXhB
bmltYXRpb24pIHsKKyAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsK
KyAgICAgICAgICAgIGN1clZhbHVlLT52YWx1ZSgpLT5hcHBseShib3hTaXplLCB0cmFuc2Zvcm0p
OworCisgICAgICAgICAgICAvLyBJZiBhbnkgbWF0cml4IGlzIHNpbmd1bGFyLCBDQSB3b24ndCBh
bmltYXRlIGl0IGNvcnJlY3RseS4gU28gZmFsbCBiYWNrIHRvIHNvZnR3YXJlIGFuaW1hdGlvbgor
ICAgICAgICAgICAgaWYgKCF0cmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICB0cmFuc2Zvcm1hdGlvbk1hdHJpeFZhbHVl
cy5hcHBlbmQodHJhbnNmb3JtKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0
IFRyYW5zZm9ybU9wZXJhdGlvbiogdHJhbnNmb3JtT3AgPSBjdXJWYWx1ZS0+dmFsdWUoKS0+YXQo
ZnVuY3Rpb25JbmRleCk7CisgICAgICAgICAgICBpZiAoaXNUcmFuc2Zvcm1UeXBlTnVtYmVyKHRy
YW5zZm9ybU9wVHlwZSkpIHsKKyAgICAgICAgICAgICAgICBmbG9hdCB2YWx1ZTsKKyAgICAgICAg
ICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKHRyYW5zZm9ybU9wLCB0cmFuc2Zvcm1P
cFR5cGUsIGJveFNpemUsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBmbG9hdFZhbHVlcy5hcHBl
bmQodmFsdWUpOworICAgICAgICAgICAgfSBlbHNlIGlmIChpc1RyYW5zZm9ybVR5cGVGbG9hdFBv
aW50M0QodHJhbnNmb3JtT3BUeXBlKSkgeworICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQzRCB2
YWx1ZTsKKyAgICAgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKHRyYW5zZm9y
bU9wLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBm
bG9hdFBvaW50M0RWYWx1ZXMuYXBwZW5kKHZhbHVlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdmFsdWU7CisgICAgICAgICAgICAg
ICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZSh0cmFuc2Zvcm1PcCwgdHJhbnNmb3JtT3BUeXBl
LCBib3hTaXplLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgdHJhbnNmb3JtYXRpb25NYXRyaXhW
YWx1ZXMuYXBwZW5kKHZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IGlmIChpIDwgKHZhbHVlTGlzdC5zaXplKCkgLSAxKSkKKyAgICAgICAgICAgIHRpbWluZ0Z1bmN0
aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJkcyA/IGN1
clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksIGFuaW1hdGlvbikpOworICAgIH0KKwor
ICAgIGtleWZyYW1lQW5pbS0+c2V0S2V5VGltZXMoa2V5VGltZXMpOworCisgICAgaWYgKGlzVHJh
bnNmb3JtVHlwZU51bWJlcih0cmFuc2Zvcm1PcFR5cGUpKQorICAgICAgICBrZXlmcmFtZUFuaW0t
PnNldFZhbHVlcyhmbG9hdFZhbHVlcyk7CisgICAgZWxzZSBpZiAoaXNUcmFuc2Zvcm1UeXBlRmxv
YXRQb2ludDNEKHRyYW5zZm9ybU9wVHlwZSkpCisgICAgICAgIGtleWZyYW1lQW5pbS0+c2V0VmFs
dWVzKGZsb2F0UG9pbnQzRFZhbHVlcyk7CisgICAgZWxzZQorICAgICAgICBrZXlmcmFtZUFuaW0t
PnNldFZhbHVlcyh0cmFuc2Zvcm1hdGlvbk1hdHJpeFZhbHVlcyk7CisKKyAgICBrZXlmcmFtZUFu
aW0tPnNldFRpbWluZ0Z1bmN0aW9ucyh0aW1pbmdGdW5jdGlvbnMsICFmb3J3YXJkcyk7CisKKyAg
ICBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OlZhbHVlRnVuY3Rpb25UeXBlIHZhbHVlRnVuY3Rp
b24gPSBnZXRWYWx1ZUZ1bmN0aW9uTmFtZUZvclRyYW5zZm9ybU9wZXJhdGlvbih0cmFuc2Zvcm1P
cFR5cGUpOworICAgIGlmICh2YWx1ZUZ1bmN0aW9uICE9IFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlv
bjo6Tm9WYWx1ZUZ1bmN0aW9uKQorICAgICAgICBrZXlmcmFtZUFuaW0tPnNldFZhbHVlRnVuY3Rp
b24odmFsdWVGdW5jdGlvbik7CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBHcmFwaGlj
c0xheWVyQ2x1dHRlcjo6c2V0VHJhbnNmb3JtQW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZy
YW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBQbGF0
Zm9ybUNsdXR0ZXJBbmltYXRpb24qIGJhc2ljQW5pbSwgaW50IGZ1bmN0aW9uSW5kZXgsIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0cmFuc2Zvcm1PcFR5cGUsIGJvb2wgaXNNYXRy
aXhBbmltYXRpb24sIGNvbnN0IEludFNpemUmIGJveFNpemUpCkBAIC05ODYsOCArMTA0NCwzNyBA
QCBib29sIEdyYXBoaWNzTGF5ZXJDbHV0dGVyOjpzZXRBbmltYXRpb25FbmRwb2ludHMoY29uc3Qg
S2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTAogCiBib29sIEdyYXBoaWNzTGF5ZXJDbHV0dGVyOjpz
ZXRBbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwg
Y29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbioga2V5
ZnJhbWVBbmltKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwor
ICAgIFZlY3RvcjxmbG9hdD4ga2V5VGltZXM7CisgICAgVmVjdG9yPGZsb2F0PiB2YWx1ZXM7Cisg
ICAgVmVjdG9yPGNvbnN0IFRpbWluZ0Z1bmN0aW9uKj4gdGltaW5nRnVuY3Rpb25zOworCisgICAg
Ym9vbCBmb3J3YXJkcyA9IGFuaW1hdGlvbi0+ZGlyZWN0aW9uSXNGb3J3YXJkcygpOworCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgeworICAgICAg
ICB1bnNpZ25lZCBpbmRleCA9IGZvcndhcmRzID8gaSA6ICh2YWx1ZUxpc3Quc2l6ZSgpIC0gaSAt
IDEpOworICAgICAgICBjb25zdCBBbmltYXRpb25WYWx1ZSogY3VyVmFsdWUgPSB2YWx1ZUxpc3Qu
YXQoaW5kZXgpOworICAgICAgICBrZXlUaW1lcy5hcHBlbmQoZm9yd2FyZHMgPyBjdXJWYWx1ZS0+
a2V5VGltZSgpIDogKDEgLSBjdXJWYWx1ZS0+a2V5VGltZSgpKSk7CisKKyAgICAgICAgc3dpdGNo
ICh2YWx1ZUxpc3QucHJvcGVydHkoKSkgeworICAgICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlP
cGFjaXR5OiB7CisgICAgICAgICAgICBjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKiBmbG9hdFZh
bHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSo+KGN1clZhbHVlKTsK
KyAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQoZmxvYXRWYWx1ZS0+dmFsdWUoKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IC8vIHdlIGRvbid0IGFuaW1hdGUgY29sb3IgeWV0CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpIDwgKHZhbHVlTGlzdC5zaXpl
KCkgLSAxKSkKKyAgICAgICAgICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rp
b25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJkcyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0KGlu
ZGV4IC0gMSksIGFuaW1hdGlvbikpOworICAgIH0KKworICAgIGtleWZyYW1lQW5pbS0+c2V0S2V5
VGltZXMoa2V5VGltZXMpOworICAgIGtleWZyYW1lQW5pbS0+c2V0VmFsdWVzKHZhbHVlcyk7Cisg
ICAga2V5ZnJhbWVBbmltLT5zZXRUaW1pbmdGdW5jdGlvbnModGltaW5nRnVuY3Rpb25zLCAhZm9y
d2FyZHMpOworCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEdyYXBoaWNzTGF5ZXJBY3RvciogR3Jh
cGhpY3NMYXllckNsdXR0ZXI6OmxheWVyRm9yU3VwZXJsYXllcigpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL1BsYXRmb3JtQ2x1dHRl
ckFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVy
L1BsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbi5jcHAKaW5kZXggNjJmZTc2MTkyMGMwMjEyM2RhYjhj
YTIxMzNiMWZkY2U3YWRmMDJiZi4uM2IwNmY2NTVjNDRiZWZhMGJmYTE4MzI2MjUxMDA5ZGIyMzMx
NWYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRl
ci9QbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NsdXR0ZXIvUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uLmNwcApAQCAtMzgs
NyArMzgsOSBAQAogI2luY2x1ZGUgIlVuaXRCZXppZXIuaCIKICNpbmNsdWRlIDxsaW1pdHMuaD4K
ICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIu
aD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwpAQCAtNTQsNyArNTYsNyBAQCBzdGF0aWMgU3RyaW5nIHRvQ2x1dHRlckFjdG9yUHJv
cGVydHlTdHJpbmcoY29uc3QgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpWYWx1ZQogewogICAg
IC8vIENsdXR0ZXJBY3RvciBkb2Vzbid0IGhhdmUgJ3NjYWxlJyBhbmQgJ3RyYW5zbGF0ZScgcHJv
cGVydGllcy4gU28gd2Ugc2hvdWxkIHN1cHBvcnQKICAgICAvLyAnc2NhbGUnIGFuZCAndHJhbnNs
YXRlJyBWYWx1ZUZ1bmN0aW9uVHlwZSBieSBjb21iaW5hdGlvbiBvZiBleGlzdGluZyBwcm9wZXJ0
eSBhbmltYXRpb25zLiAKLSAgICBjb25zdCBjaGFyKiBjbHV0dGVyQWN0b3JQcm9wZXJ0eVtdID0g
eyAiTm9Qcm9wZXJ0eSIsICJyb3RhdGlvbi1hbmdsZS14IiwgInJvdGF0aW9uLWFuZ2xlLXkiLCAi
cm90YXRpb24tYW5nbGUteiIsICJzY2FsZS14IiwgInNjYWxlLXkiLCAic2NhbGUteiIsICJOb1By
b3BlcnR5IiwgInRyYW5zbGF0aW9uLXgiLCAidHJhbnNsYXRpb24teSIsICJ0cmFuc2xhdGlvbi16
IiwgIk5vUHJvcGVydHkiIH07IAorICAgIGNvbnN0IGNoYXIqIGNsdXR0ZXJBY3RvclByb3BlcnR5
W10gPSB7ICJOb1Byb3BlcnR5IiwgInJvdGF0aW9uLWFuZ2xlLXgiLCAicm90YXRpb24tYW5nbGUt
eSIsICJyb3RhdGlvbi1hbmdsZS16IiwgInNjYWxlLXgiLCAic2NhbGUteSIsICJzY2FsZS16Iiwg
InNjYWxlIiwgInRyYW5zbGF0aW9uLXgiLCAidHJhbnNsYXRpb24teSIsICJ0cmFuc2xhdGlvbi16
IiwgInRyYW5zbGF0ZSIgfTsgCiAgICAgcmV0dXJuIGNsdXR0ZXJBY3RvclByb3BlcnR5W3ZhbHVl
RnVuY3Rpb25UeXBlXTsKIH0KIApAQCAtMTE0LDggKzExNiw2IEBAIFBsYXRmb3JtQ2x1dHRlckFu
aW1hdGlvbjo6UGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uKEFuaW1hdGlvblR5cGUgdHlwZSwgY29u
c3QgU3RyCiAgICAgLCBtX3RpbWluZ0Z1bmN0aW9uKDApCiAgICAgLCBtX3ZhbHVlRnVuY3Rpb25U
eXBlKE5vVmFsdWVGdW5jdGlvbikKIHsKLSAgICAvLyBGSVhNRTogV2Ugc3VwcG9ydCBvbmx5IEJh
c2ljIHR5cGUgbm93LgotICAgIEFTU0VSVCh0eXBlID09IEJhc2ljKTsKICAgICBtX2FuaW1hdGlv
biA9IGFkb3B0R1JlZihHX09CSkVDVChjbHV0dGVyX3RyYW5zaXRpb25fZ3JvdXBfbmV3KCkpKTsK
IH0KIApAQCAtMjIxLDYgKzIyMSw3IEBAIHZvaWQgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpz
ZXRUaW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuCiB7CiAgICAg
aWYgKCF0aW1pbmdGdW5jdGlvbikKICAgICAgICAgcmV0dXJuOworCiAgICAgbV90aW1pbmdGdW5j
dGlvbiA9IHRpbWluZ0Z1bmN0aW9uOwogfQogCkBAIC0zMzAsNyArMzMxLDkgQEAgdm9pZCBQbGF0
Zm9ybUNsdXR0ZXJBbmltYXRpb246OmNvcHlUb1ZhbHVlRnJvbShjb25zdCBQbGF0Zm9ybUNsdXR0
ZXJBbmltYXRpb24qIHYKIAogdm9pZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OnNldFZhbHVl
cyhjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2YWx1ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIEFTU0VSVChhbmltYXRpb25UeXBlKCkgPT0gS2V5ZnJhbWUpOworCisgICAgbV92YWx1ZXMg
PSB2YWx1ZTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OnNldFZhbHVlcyhj
b25zdCBWZWN0b3I8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+JiB2YWx1ZSkKQEAgLTM0
MCw3ICszNDMsOSBAQCB2b2lkIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6c2V0VmFsdWVzKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdAogCiB2b2lkIFBsYXRmb3JtQ2x1
dHRlckFuaW1hdGlvbjo6c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxGbG9hdFBvaW50M0Q+JiB2YWx1
ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEFTU0VSVChhbmltYXRpb25UeXBlKCkg
PT0gS2V5ZnJhbWUpOworCisgICAgbV92YWx1ZXMzRCA9IHZhbHVlOwogfQogCiB2b2lkIFBsYXRm
b3JtQ2x1dHRlckFuaW1hdGlvbjo6c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb2xv
cj4mIHZhbHVlKQpAQCAtMzU1LDcgKzM2MCw5IEBAIHZvaWQgUGxhdGZvcm1DbHV0dGVyQW5pbWF0
aW9uOjpjb3B5VmFsdWVzRnJvbShjb25zdCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb24qIHZhCiAK
IHZvaWQgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpzZXRLZXlUaW1lcyhjb25zdCBWZWN0b3I8
ZmxvYXQ+JiB2YWx1ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEFTU0VSVChhbmlt
YXRpb25UeXBlKCkgPT0gS2V5ZnJhbWUpOworCisgICAgbV9rZXlUaW1lcyA9IHZhbHVlOwogfQog
CiB2b2lkIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6Y29weUtleVRpbWVzRnJvbShjb25zdCBQ
bGF0Zm9ybUNsdXR0ZXJBbmltYXRpb24qIHZhbHVlKQpAQCAtMzY1LDcgKzM3Miw5IEBAIHZvaWQg
UGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpjb3B5S2V5VGltZXNGcm9tKGNvbnN0IFBsYXRmb3Jt
Q2x1dHRlckFuaW1hdGlvbioKIAogdm9pZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OnNldFRp
bWluZ0Z1bmN0aW9ucyhjb25zdCBWZWN0b3I8Y29uc3QgVGltaW5nRnVuY3Rpb24qPiYgdmFsdWUs
IGJvb2wgcmV2ZXJzZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEFTU0VSVChhbmlt
YXRpb25UeXBlKCkgPT0gS2V5ZnJhbWUpOworCisgICAgbV90aW1pbmdGdW5jdGlvbnMgPSB2YWx1
ZTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OmNvcHlUaW1pbmdGdW5jdGlv
bnNGcm9tKGNvbnN0IFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbiogdmFsdWUpCkBAIC0zOTAsNDAg
KzM5OSwxMzMgQEAgQ2x1dHRlclRpbWVsaW5lKiBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OnRp
bWVsaW5lKCkgY29uc3QKICAgICByZXR1cm4gQ0xVVFRFUl9USU1FTElORShtX2FuaW1hdGlvbi5n
ZXQoKSk7CiB9CiAKLXZvaWQgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjphZGRDbHV0dGVyVHJh
bnNpdGlvbkZvclByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHksIGNvbnN0IHVuc2lnbmVk
IGZyb21WYWx1ZSwgY29uc3QgdW5zaWduZWQgdG9WYWx1ZSkKK3ZvaWQgUGxhdGZvcm1DbHV0dGVy
QW5pbWF0aW9uOjphZGRDbHV0dGVyVHJhbnNpdGlvbkZvclByb3BlcnR5KGNvbnN0IFN0cmluZyYg
cHJvcGVydHksIGNvbnN0IGZsb2F0IGZyb21WYWx1ZSwgY29uc3QgZmxvYXQgdG9WYWx1ZSkKIHsK
ICAgICBBU1NFUlQocHJvcGVydHkgIT0gIk5vUHJvcGVydHkiKTsKIAorICAgIEdUeXBlIGdUeXBl
ID0gKHByb3BlcnR5ID09ICJvcGFjaXR5IiA/IEdfVFlQRV9VSU5UIDogR19UWVBFX0ZMT0FUKTsK
KwogICAgIEdSZWZQdHI8Q2x1dHRlclRyYW5zaXRpb24+IHRyYW5zaXRpb24gPSBhZG9wdEdSZWYo
Y2x1dHRlcl9wcm9wZXJ0eV90cmFuc2l0aW9uX25ldyhwcm9wZXJ0eS51dGY4KCkuZGF0YSgpKSk7
Ci0gICAgY2x1dHRlcl90cmFuc2l0aW9uX3NldF9mcm9tKHRyYW5zaXRpb24uZ2V0KCksIEdfVFlQ
RV9VSU5ULCBmcm9tVmFsdWUpOwotICAgIGNsdXR0ZXJfdHJhbnNpdGlvbl9zZXRfdG8odHJhbnNp
dGlvbi5nZXQoKSwgR19UWVBFX1VJTlQsIHRvVmFsdWUpOworICAgIGNsdXR0ZXJfdHJhbnNpdGlv
bl9zZXRfZnJvbSh0cmFuc2l0aW9uLmdldCgpLCBnVHlwZSwgKGdUeXBlID09IEdfVFlQRV9VSU5U
ID8gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGZyb21WYWx1ZSkgOiBmcm9tVmFsdWUpKTsKKyAgICBj
bHV0dGVyX3RyYW5zaXRpb25fc2V0X3RvKHRyYW5zaXRpb24uZ2V0KCksIGdUeXBlLCAoZ1R5cGUg
PT0gR19UWVBFX1VJTlQgPyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odG9WYWx1ZSkgOiB0b1ZhbHVl
KSk7CisKKyAgICBjbHV0dGVyX3RpbWVsaW5lX3NldF9wcm9ncmVzc19tb2RlKHRpbWVsaW5lKCks
IHRvQ2x1dHRlckFuaW1hdGlvbk1vZGUobV90aW1pbmdGdW5jdGlvbikpOwogCiAgICAgY2x1dHRl
cl90cmFuc2l0aW9uX2dyb3VwX2FkZF90cmFuc2l0aW9uKENMVVRURVJfVFJBTlNJVElPTl9HUk9V
UChtX2FuaW1hdGlvbi5nZXQoKSksIHRyYW5zaXRpb24uZ2V0KCkpOwogfQogCi12b2lkIFBsYXRm
b3JtQ2x1dHRlckFuaW1hdGlvbjo6YWRkQ2x1dHRlclRyYW5zaXRpb25Gb3JQcm9wZXJ0eShjb25z
dCBTdHJpbmcmIHByb3BlcnR5LCBjb25zdCBmbG9hdCBmcm9tVmFsdWUsIGNvbnN0IGZsb2F0IHRv
VmFsdWUpCit2b2lkIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6YWRkQ2x1dHRlclRyYW5zaXRp
b25Gb3JQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5LCBjb25zdCBGbG9hdFBvaW50M0Qm
IGZyb21WYWx1ZSwgY29uc3QgRmxvYXRQb2ludDNEJiB0b1ZhbHVlKQogewogICAgIEFTU0VSVChw
cm9wZXJ0eSAhPSAiTm9Qcm9wZXJ0eSIpOwogCi0gICAgR1JlZlB0cjxDbHV0dGVyVHJhbnNpdGlv
bj4gdHJhbnNpdGlvbiA9IGFkb3B0R1JlZihjbHV0dGVyX3Byb3BlcnR5X3RyYW5zaXRpb25fbmV3
KHByb3BlcnR5LnV0ZjgoKS5kYXRhKCkpKTsKLSAgICBjbHV0dGVyX3RyYW5zaXRpb25fc2V0X2Zy
b20odHJhbnNpdGlvbi5nZXQoKSwgR19UWVBFX0ZMT0FULCBmcm9tVmFsdWUpOwotICAgIGNsdXR0
ZXJfdHJhbnNpdGlvbl9zZXRfdG8odHJhbnNpdGlvbi5nZXQoKSwgR19UWVBFX0ZMT0FULCB0b1Zh
bHVlKTsKKyAgICBpZiAocHJvcGVydHkgPT0gInNjYWxlIikgeworICAgICAgICBhZGRDbHV0dGVy
VHJhbnNpdGlvbkZvclByb3BlcnR5KFN0cmluZygic2NhbGUteCIpLCBmcm9tVmFsdWUueCgpLCB0
b1ZhbHVlLngoKSk7CisgICAgICAgIGFkZENsdXR0ZXJUcmFuc2l0aW9uRm9yUHJvcGVydHkoU3Ry
aW5nKCJzY2FsZS15IiksIGZyb21WYWx1ZS55KCksIHRvVmFsdWUueSgpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBpZiAocHJvcGVydHkgPT0gInRyYW5zbGF0ZSIpIHsKKyAgICAgICAg
YWRkQ2x1dHRlclRyYW5zaXRpb25Gb3JQcm9wZXJ0eShTdHJpbmcoInRyYW5zbGF0aW9uLXgiKSwg
ZnJvbVZhbHVlLngoKSwgdG9WYWx1ZS54KCkpOworICAgICAgICBhZGRDbHV0dGVyVHJhbnNpdGlv
bkZvclByb3BlcnR5KFN0cmluZygidHJhbnNsYXRpb24teSIpLCBmcm9tVmFsdWUueCgpLCB0b1Zh
bHVlLnkoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKK30KKwordm9pZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OmFkZENsdXR0ZXJLZXlm
cmFtZVRyYW5zaXRpb25Gb3JQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5LCBjb25zdCBW
ZWN0b3I8ZmxvYXQ+JiB2YWx1ZXMpCit7CisgICAgQVNTRVJUKHByb3BlcnR5ICE9ICJOb1Byb3Bl
cnR5Iik7CisKKyAgICBHVHlwZSBnVHlwZSA9IChwcm9wZXJ0eSA9PSAib3BhY2l0eSIgPyBHX1RZ
UEVfVUlOVCA6IEdfVFlQRV9GTE9BVCk7CisKKyAgICBHUmVmUHRyPENsdXR0ZXJUcmFuc2l0aW9u
PiB0cmFuc2l0aW9uID0gYWRvcHRHUmVmKGNsdXR0ZXJfa2V5ZnJhbWVfdHJhbnNpdGlvbl9uZXco
cHJvcGVydHkudXRmOCgpLmRhdGEoKSkpOworICAgIGNsdXR0ZXJfdHJhbnNpdGlvbl9zZXRfZnJv
bSh0cmFuc2l0aW9uLmdldCgpLCBnVHlwZSwgdmFsdWVzLmZpcnN0KCkpOworICAgIGNsdXR0ZXJf
dHJhbnNpdGlvbl9zZXRfdG8odHJhbnNpdGlvbi5nZXQoKSwgZ1R5cGUsIHZhbHVlcy5sYXN0KCkp
OworCisgICAgLy8gSWdub3JlIHRoZSBmaXJzdCBrZXlmcmFtZSwgc2luY2UgaXQncyBhICcwJyBm
cmFtZSwgbWVhbmluZ2xlc3MuCisgICAgY29uc3QgdW5zaWduZWQgbktleWZyYW1lcyA9IHZhbHVl
cy5zaXplKCkgLSAxOworICAgIE93bkFycmF5UHRyPENsdXR0ZXJBbmltYXRpb25Nb2RlPiBhbmlt
YXRpb25Nb2RlcyA9IGFkb3B0QXJyYXlQdHIobmV3IENsdXR0ZXJBbmltYXRpb25Nb2RlW25LZXlm
cmFtZXNdKTsKKyAgICBPd25BcnJheVB0cjxkb3VibGU+IGtleVRpbWVzID0gYWRvcHRBcnJheVB0
cihuZXcgZG91YmxlW25LZXlmcmFtZXNdKTsKKyAgICBHT3duUHRyPEdWYWx1ZT4ga2V5VmFsdWVz
KGdfbmV3MChHVmFsdWUsIG5LZXlmcmFtZXMpKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBuS2V5ZnJhbWVzOyArK2kpIHsKKyAgICAgICAga2V5VGltZXNbaV0gPSBzdGF0aWNfY2Fz
dDxkb3VibGU+KG1fa2V5VGltZXNbaSArIDFdKTsKKyAgICAgICAgYW5pbWF0aW9uTW9kZXNbaV0g
PSB0b0NsdXR0ZXJBbmltYXRpb25Nb2RlKG1fdGltaW5nRnVuY3Rpb25zW2ldKTsKKyAgICAgICAg
Z192YWx1ZV9pbml0KCZrZXlWYWx1ZXMuZ2V0KClbaV0sIGdUeXBlKTsKKyAgICAgICAgaWYgKGdU
eXBlID09IEdfVFlQRV9VSU5UKQorICAgICAgICAgICAgZ192YWx1ZV9zZXRfdWludCgma2V5VmFs
dWVzLmdldCgpW2ldLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odmFsdWVzW2kgKyAxXSkpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBnX3ZhbHVlX3NldF9mbG9hdCgma2V5VmFsdWVzLmdldCgp
W2ldLCB2YWx1ZXNbaSArIDFdKTsKKyAgICB9CisKKyAgICBjbHV0dGVyX2tleWZyYW1lX3RyYW5z
aXRpb25fc2V0X2tleV9mcmFtZXMoQ0xVVFRFUl9LRVlGUkFNRV9UUkFOU0lUSU9OKHRyYW5zaXRp
b24uZ2V0KCkpLCBuS2V5ZnJhbWVzLCBrZXlUaW1lcy5nZXQoKSk7IAorICAgIGNsdXR0ZXJfa2V5
ZnJhbWVfdHJhbnNpdGlvbl9zZXRfdmFsdWVzKENMVVRURVJfS0VZRlJBTUVfVFJBTlNJVElPTih0
cmFuc2l0aW9uLmdldCgpKSwgbktleWZyYW1lcywga2V5VmFsdWVzLmdldCgpKTsKKyAgICBjbHV0
dGVyX2tleWZyYW1lX3RyYW5zaXRpb25fc2V0X21vZGVzKENMVVRURVJfS0VZRlJBTUVfVFJBTlNJ
VElPTih0cmFuc2l0aW9uLmdldCgpKSwgbktleWZyYW1lcywgYW5pbWF0aW9uTW9kZXMuZ2V0KCkp
OwogCiAgICAgY2x1dHRlcl90cmFuc2l0aW9uX2dyb3VwX2FkZF90cmFuc2l0aW9uKENMVVRURVJf
VFJBTlNJVElPTl9HUk9VUChtX2FuaW1hdGlvbi5nZXQoKSksIHRyYW5zaXRpb24uZ2V0KCkpOwor
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5LZXlmcmFtZXM7ICsraSkKKyAgICAgICAg
Z192YWx1ZV91bnNldCgma2V5VmFsdWVzLmdldCgpW2ldKTsKK30KKwordm9pZCBQbGF0Zm9ybUNs
dXR0ZXJBbmltYXRpb246OmFkZENsdXR0ZXJLZXlmcmFtZVRyYW5zaXRpb25Gb3JQcm9wZXJ0eShj
b25zdCBTdHJpbmcmIHByb3BlcnR5LCBjb25zdCBWZWN0b3I8RmxvYXRQb2ludDNEPiYgdmFsdWVz
KQoreworICAgIEFTU0VSVChwcm9wZXJ0eSAhPSAiTm9Qcm9wZXJ0eSIpOworCisgICAgVmVjdG9y
PGZsb2F0PiB2YWx1ZXNYLCB2YWx1ZXNZOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2
YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgdmFsdWVzWC5hcHBlbmQodmFsdWVzW2ldLngo
KSk7CisgICAgICAgIHZhbHVlc1kuYXBwZW5kKHZhbHVlc1tpXS55KCkpOworICAgIH0KKworICAg
IGlmIChwcm9wZXJ0eSA9PSAic2NhbGUiKSB7CisgICAgICAgIGFkZENsdXR0ZXJLZXlmcmFtZVRy
YW5zaXRpb25Gb3JQcm9wZXJ0eShTdHJpbmcoInNjYWxlLXgiKSwgdmFsdWVzWCk7CisgICAgICAg
IGFkZENsdXR0ZXJLZXlmcmFtZVRyYW5zaXRpb25Gb3JQcm9wZXJ0eShTdHJpbmcoInNjYWxlLXki
KSwgdmFsdWVzWSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHByb3BlcnR5ID09
ICJ0cmFuc2xhdGUiKSB7CisgICAgICAgIGFkZENsdXR0ZXJLZXlmcmFtZVRyYW5zaXRpb25Gb3JQ
cm9wZXJ0eShTdHJpbmcoInRyYW5zbGF0aW9uLXgiKSwgdmFsdWVzWCk7CisgICAgICAgIGFkZENs
dXR0ZXJLZXlmcmFtZVRyYW5zaXRpb25Gb3JQcm9wZXJ0eShTdHJpbmcoInRyYW5zbGF0aW9uLXki
KSwgdmFsdWVzWSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OmFkZE9wYWNpdHlU
cmFuc2l0aW9uKCkKIHsKLSAgICBhZGRDbHV0dGVyVHJhbnNpdGlvbkZvclByb3BlcnR5KFN0cmlu
Zygib3BhY2l0eSIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMjU1ICogbV9mcm9tVmFsdWUpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oMjU1ICogbV90b1ZhbHVlKSk7CisgICAgaWYgKGFuaW1hdGlv
blR5cGUoKSA9PSBLZXlmcmFtZSkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV92YWx1ZXMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBtX3ZhbHVlc1tpXSAqPSAyNTU7CisK
KyAgICAgICAgYWRkQ2x1dHRlcktleWZyYW1lVHJhbnNpdGlvbkZvclByb3BlcnR5KFN0cmluZygi
b3BhY2l0eSIpLCBtX3ZhbHVlcyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9mcm9tVmFsdWUg
Kj0gMjU1OworICAgICAgICBtX3RvVmFsdWUgKj0gMjU1OworCisgICAgICAgIGFkZENsdXR0ZXJU
cmFuc2l0aW9uRm9yUHJvcGVydHkoU3RyaW5nKCJvcGFjaXR5IiksIG1fZnJvbVZhbHVlLCBtX3Rv
VmFsdWUpOworICAgIH0KIH0KIAogdm9pZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OmFkZFRy
YW5zZm9ybVRyYW5zaXRpb24oKQogeworICAgIGNvbnN0IGJvb2wgaXNLZXlmcmFtZSA9IChhbmlt
YXRpb25UeXBlKCkgPT0gS2V5ZnJhbWUpOworCiAgICAgc3dpdGNoIChtX3ZhbHVlRnVuY3Rpb25U
eXBlKSB7CiAgICAgY2FzZSBSb3RhdGVYOgogICAgIGNhc2UgUm90YXRlWToKICAgICBjYXNlIFJv
dGF0ZVo6Ci0gICAgICAgIGFkZENsdXR0ZXJUcmFuc2l0aW9uRm9yUHJvcGVydHkodG9DbHV0dGVy
QWN0b3JQcm9wZXJ0eVN0cmluZyhtX3ZhbHVlRnVuY3Rpb25UeXBlKSwgcmFkMmRlZyhtX2Zyb21W
YWx1ZSksIHJhZDJkZWcobV90b1ZhbHVlKSk7CisgICAgICAgIGlmIChpc0tleWZyYW1lKSB7Cisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV92YWx1ZXMuc2l6ZSgpOyArK2kp
CisgICAgICAgICAgICAgICAgbV92YWx1ZXNbaV0gPSByYWQyZGVnKG1fdmFsdWVzW2ldKTsKKwor
ICAgICAgICAgICAgYWRkQ2x1dHRlcktleWZyYW1lVHJhbnNpdGlvbkZvclByb3BlcnR5KHRvQ2x1
dHRlckFjdG9yUHJvcGVydHlTdHJpbmcobV92YWx1ZUZ1bmN0aW9uVHlwZSksIG1fdmFsdWVzKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZnJvbVZhbHVlID0gcmFkMmRlZyhtX2Zy
b21WYWx1ZSk7CisgICAgICAgICAgICBtX3RvVmFsdWUgPSByYWQyZGVnKG1fdG9WYWx1ZSk7CisK
KyAgICAgICAgICAgIGFkZENsdXR0ZXJUcmFuc2l0aW9uRm9yUHJvcGVydHkodG9DbHV0dGVyQWN0
b3JQcm9wZXJ0eVN0cmluZyhtX3ZhbHVlRnVuY3Rpb25UeXBlKSwgbV9mcm9tVmFsdWUsIG1fdG9W
YWx1ZSk7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTY2FsZVg6CiAgICAg
Y2FzZSBTY2FsZVk6CkBAIC00MzEsMTUgKzUzMywxNyBAQCB2b2lkIFBsYXRmb3JtQ2x1dHRlckFu
aW1hdGlvbjo6YWRkVHJhbnNmb3JtVHJhbnNpdGlvbigpCiAgICAgY2FzZSBUcmFuc2xhdGVYOgog
ICAgIGNhc2UgVHJhbnNsYXRlWToKICAgICBjYXNlIFRyYW5zbGF0ZVo6Ci0gICAgICAgIGFkZENs
dXR0ZXJUcmFuc2l0aW9uRm9yUHJvcGVydHkodG9DbHV0dGVyQWN0b3JQcm9wZXJ0eVN0cmluZyht
X3ZhbHVlRnVuY3Rpb25UeXBlKSwgbV9mcm9tVmFsdWUsIG1fdG9WYWx1ZSk7CisgICAgICAgIGlm
IChpc0tleWZyYW1lKQorICAgICAgICAgICAgYWRkQ2x1dHRlcktleWZyYW1lVHJhbnNpdGlvbkZv
clByb3BlcnR5KHRvQ2x1dHRlckFjdG9yUHJvcGVydHlTdHJpbmcobV92YWx1ZUZ1bmN0aW9uVHlw
ZSksIG1fdmFsdWVzKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYWRkQ2x1dHRlclRyYW5z
aXRpb25Gb3JQcm9wZXJ0eSh0b0NsdXR0ZXJBY3RvclByb3BlcnR5U3RyaW5nKG1fdmFsdWVGdW5j
dGlvblR5cGUpLCBtX2Zyb21WYWx1ZSwgbV90b1ZhbHVlKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBTY2FsZToKLSAgICAgICAgYWRkQ2x1dHRlclRyYW5zaXRpb25Gb3JQcm9wZXJ0eShTdHJp
bmcoInNjYWxlLXgiKSwgbV9mcm9tVmFsdWUzRC54KCksIG1fdG9WYWx1ZTNELngoKSk7Ci0gICAg
ICAgIGFkZENsdXR0ZXJUcmFuc2l0aW9uRm9yUHJvcGVydHkoU3RyaW5nKCJzY2FsZS15IiksIG1f
ZnJvbVZhbHVlM0QueSgpLCBtX3RvVmFsdWUzRC55KCkpOwotICAgICAgICBicmVhazsKICAgICBj
YXNlIFRyYW5zbGF0ZToKLSAgICAgICAgYWRkQ2x1dHRlclRyYW5zaXRpb25Gb3JQcm9wZXJ0eShT
dHJpbmcoInRyYW5zbGF0aW9uLXgiKSwgbV9mcm9tVmFsdWUzRC54KCksIG1fdG9WYWx1ZTNELngo
KSk7Ci0gICAgICAgIGFkZENsdXR0ZXJUcmFuc2l0aW9uRm9yUHJvcGVydHkoU3RyaW5nKCJ0cmFu
c2xhdGlvbi15IiksIG1fZnJvbVZhbHVlM0QueCgpLCBtX3RvVmFsdWUzRC55KCkpOworICAgICAg
ICBpZiAoaXNLZXlmcmFtZSkKKyAgICAgICAgICAgIGFkZENsdXR0ZXJLZXlmcmFtZVRyYW5zaXRp
b25Gb3JQcm9wZXJ0eSh0b0NsdXR0ZXJBY3RvclByb3BlcnR5U3RyaW5nKG1fdmFsdWVGdW5jdGlv
blR5cGUpLCBtX3ZhbHVlczNEKTsgCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZENsdXR0
ZXJUcmFuc2l0aW9uRm9yUHJvcGVydHkodG9DbHV0dGVyQWN0b3JQcm9wZXJ0eVN0cmluZyhtX3Zh
bHVlRnVuY3Rpb25UeXBlKSwgbV9mcm9tVmFsdWUzRCwgbV90b1ZhbHVlM0QpOwogICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQ1
Miw3ICs1NTYsNiBAQCB2b2lkIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6YWRkVHJhbnNmb3Jt
VHJhbnNpdGlvbigpCiAKIHZvaWQgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjphZGRBbmltYXRp
b25Gb3JLZXkoR3JhcGhpY3NMYXllckFjdG9yKiBwbGF0Zm9ybUxheWVyLCBjb25zdCBTdHJpbmcm
IGtleSkKIHsKLSAgICBBU1NFUlQoYW5pbWF0aW9uVHlwZSgpID09IEJhc2ljKTsKICAgICBBU1NF
UlQoIWdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHBsYXRmb3JtTGF5ZXIpLCBrZXkudXRmOCgp
LmRhdGEoKSkpOwogCiAgICAgbV9sYXllciA9IENMVVRURVJfQUNUT1IocGxhdGZvcm1MYXllcik7
CkBAIC00NjYsMTEgKzU2OSw3IEBAIHZvaWQgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjphZGRB
bmltYXRpb25Gb3JLZXkoR3JhcGhpY3NMYXllckFjdG9yKiBwbGF0Zm9ybUxhCiAgICAgZWxzZQog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAotICAgIENsdXR0ZXJBbmltYXRpb25Nb2Rl
IGFuaW1hdGlvbk1vZGUgPSB0b0NsdXR0ZXJBbmltYXRpb25Nb2RlKG1fdGltaW5nRnVuY3Rpb24p
OwotICAgIENsdXR0ZXJUaW1lbGluZSogY2x1dHRlclRpbWVsaW5lID0gdGltZWxpbmUoKTsKLSAg
ICBjbHV0dGVyX3RpbWVsaW5lX3NldF9wcm9ncmVzc19tb2RlKGNsdXR0ZXJUaW1lbGluZSwgYW5p
bWF0aW9uTW9kZSk7Ci0KLSAgICBnX3NpZ25hbF9jb25uZWN0KGNsdXR0ZXJUaW1lbGluZSwgInN0
YXJ0ZWQiLCBHX0NBTExCQUNLKHRpbWVsaW5lU3RhcnRlZENhbGxiYWNrKSwgdGhpcyk7CisgICAg
Z19zaWduYWxfY29ubmVjdCh0aW1lbGluZSgpLCAic3RhcnRlZCIsIEdfQ0FMTEJBQ0sodGltZWxp
bmVTdGFydGVkQ2FsbGJhY2spLCB0aGlzKTsKICAgICBnX29iamVjdF9zZXRfZGF0YShHX09CSkVD
VChwbGF0Zm9ybUxheWVyKSwga2V5LnV0ZjgoKS5kYXRhKCksIHRoaXMpOwogCiAgICAgY2x1dHRl
cl9hY3Rvcl9hZGRfdHJhbnNpdGlvbihtX2xheWVyLmdldCgpLCBrZXkudXRmOCgpLmRhdGEoKSwg
Q0xVVFRFUl9UUkFOU0lUSU9OKG1fYW5pbWF0aW9uLmdldCgpKSk7CkBAIC00NzgsOCArNTc3LDYg
QEAgdm9pZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OmFkZEFuaW1hdGlvbkZvcktleShHcmFw
aGljc0xheWVyQWN0b3IqIHBsYXRmb3JtTGEKIAogdm9pZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRp
b246OnJlbW92ZUFuaW1hdGlvbkZvcktleShHcmFwaGljc0xheWVyQWN0b3IqIGxheWVyLCBjb25z
dCBTdHJpbmcmIGtleSkKIHsKLSAgICBBU1NFUlQoYW5pbWF0aW9uVHlwZSgpID09IEJhc2ljKTsK
LQogICAgIGNsdXR0ZXJfYWN0b3JfcmVtb3ZlX3RyYW5zaXRpb24oQ0xVVFRFUl9BQ1RPUihsYXll
ciksIGtleS51dGY4KCkuZGF0YSgpKTsKICAgICBnX29iamVjdF9zZXRfZGF0YShHX09CSkVDVChs
YXllciksIGtleS51dGY4KCkuZGF0YSgpLCAwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL1BsYXRmb3JtQ2x1dHRl
ckFuaW1hdGlvbi5oCmluZGV4IGI4OTJkZDNjY2Y1MWE0NWNmOWRjYTlhZTc5Mzc0YzlhNDEyNTZh
ZWIuLmQyZjdhZDY0YzM2ZjBkZjYxN2YwMmJhOTk3ZmI1MjEyOTQwMGIwZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvUGxhdGZvcm1DbHV0dGVy
QW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRl
ci9QbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb24uaApAQCAtMTM4LDggKzEzOCwxMSBAQCBwcml2YXRl
OgogICAgIENsdXR0ZXJUaW1lbGluZSogdGltZWxpbmUoKSBjb25zdDsKICAgICBBbmltYXRlZFBy
b3BlcnR5VHlwZSBzdHJpbmdUb0FuaW1hdGVkUHJvcGVydHlUeXBlKGNvbnN0IFN0cmluZyYga2V5
UGF0aCkgY29uc3Q7CiAKLSAgICB2b2lkIGFkZENsdXR0ZXJUcmFuc2l0aW9uRm9yUHJvcGVydHko
Y29uc3QgU3RyaW5nJiBwcm9wZXJ0eSwgY29uc3QgdW5zaWduZWQgZnJvbVZhbHVlLCBjb25zdCB1
bnNpZ25lZCB0b1ZhbHVlKTsKICAgICB2b2lkIGFkZENsdXR0ZXJUcmFuc2l0aW9uRm9yUHJvcGVy
dHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eSwgY29uc3QgZmxvYXQgZnJvbVZhbHVlLCBjb25zdCBm
bG9hdCB0b1ZhbHVlKTsKKyAgICB2b2lkIGFkZENsdXR0ZXJUcmFuc2l0aW9uRm9yUHJvcGVydHko
Y29uc3QgU3RyaW5nJiBwcm9wZXJ0eSwgY29uc3QgRmxvYXRQb2ludDNEJiBmcm9tVmFsdWUsIGNv
bnN0IEZsb2F0UG9pbnQzRCYgdG9WYWx1ZSk7CisKKyAgICB2b2lkIGFkZENsdXR0ZXJLZXlmcmFt
ZVRyYW5zaXRpb25Gb3JQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5LCBjb25zdCBWZWN0
b3I8ZmxvYXQ+JiB2YWx1ZXMpOworICAgIHZvaWQgYWRkQ2x1dHRlcktleWZyYW1lVHJhbnNpdGlv
bkZvclByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHksIGNvbnN0IFZlY3RvcjxGbG9hdFBv
aW50M0Q+JiB2YWx1ZXMpOwogCiAgICAgdm9pZCBhZGRPcGFjaXR5VHJhbnNpdGlvbigpOwogICAg
IHZvaWQgYWRkVHJhbnNmb3JtVHJhbnNpdGlvbigpOwpAQCAtMTYyLDYgKzE2NSwxMiBAQCBwcml2
YXRlOgogCiAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIG1fdGltaW5nRnVuY3Rpb247CiAgICAg
VmFsdWVGdW5jdGlvblR5cGUgbV92YWx1ZUZ1bmN0aW9uVHlwZTsKKworICAgIFZlY3RvcjxmbG9h
dD4gbV9rZXlUaW1lczsKKyAgICBWZWN0b3I8Y29uc3QgVGltaW5nRnVuY3Rpb24qPiBtX3RpbWlu
Z0Z1bmN0aW9uczsKKworICAgIFZlY3RvcjxmbG9hdD4gbV92YWx1ZXM7CisgICAgVmVjdG9yPEZs
b2F0UG9pbnQzRD4gbV92YWx1ZXMzRDsKIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189089</attachid>
            <date>2013-02-19 07:42:52 -0800</date>
            <delta_ts>2013-02-19 09:03:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110057-20130220003913.patch</filename>
            <type>text/plain</type>
            <size>22512</size>
            <attacher name="ChangSeok Oh">kevin.cs.oh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmJkZjk5YjkyZGE3YTdl
Y2U0ZTc4NGY1MTYyYThkMTkxY2I4ZGNhZC4uYWNmMTg1NDY1OGFhYTk0MTU0NjJhNTgxMmMyYjQ4
Y2NmN2NkZTM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEzLTAyLTE5ICBDaGFu
Z1Nlb2sgT2ggIDxjaGFuZ3Nlb2sub2hAY29sbGFib3JhLmNvbT4KKworICAgICAgICBbR1RLXVtB
Q10gSW1wbGVtZW50IGtleWZyYW1lIGFuaW1hdGlvbnMgd2l0aCBjbHV0dGVyIGFjIGJhY2tlbmQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDA1Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YS4KKworICAgICAgICBU
aGlzIHBhdGNoIGJyaW5ncyBhY2NlbGVyYXRlZCBrZXlmcmFtZSBhbmltYXRpb24gd2l0aCBjbHV0
dGVyIHRvIFdlYktpdEd0aysuCisgICAgICAgIENoYW5nZXMgb2YgR3JhcGhpY3NMYXllckNsdXR0
ZXIgYXJlIGJhc2VkIG9uIEdyYXBoaWNzTGF5ZXJDQS4gQnV0IG1ham9yIGNoYW5nZXMKKyAgICAg
ICAgb2YgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uIGFyZSBpbXBsZW1lbnRlZCB3aXRoIGNsdXR0
ZXIga2V5ZnJhbWUgdHJhbnNpdGlvbiBhcGlzLgorICAgICAgICBTZWUgaHR0cDovL2RldmVsb3Bl
ci5nbm9tZS5vcmcvY2x1dHRlci9zdGFibGUvQ2x1dHRlcktleWZyYW1lVHJhbnNpdGlvbi5odG1s
CisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyBhbmltYXRpb24gdGVzdHMuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDbHV0dGVyOjpjcmVhdGVLZXlmcmFtZUFu
aW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2x1dHRlcjo6c2V0VHJh
bnNmb3JtQW5pbWF0aW9uS2V5ZnJhbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDbHV0dGVyOjpzZXRBbmltYXRpb25LZXlmcmFtZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NsdXR0ZXIvUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvQ2x1dHRlckFjdG9yUHJvcGVydHlTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpzZXRUaW1pbmdGdW5jdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OnNldFZhbHVl
cyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OnNldEtleVRp
bWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6c2V0VGlt
aW5nRnVuY3Rpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ2x1dHRlckFuaW1hdGlv
bjo6YWRkQ2x1dHRlclRyYW5zaXRpb25Gb3JQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6YWRkQ2x1dHRlcktl
eWZyYW1lVHJhbnNpdGlvbkZvclByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
Q2x1dHRlckFuaW1hdGlvbjo6YWRkT3BhY2l0eVRyYW5zaXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjphZGRUcmFuc2Zvcm1UcmFuc2l0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6YWRkQW5pbWF0aW9uRm9y
S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6cmVtb3Zl
QW5pbWF0aW9uRm9yS2V5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL1Bs
YXRmb3JtQ2x1dHRlckFuaW1hdGlvbi5oOgorICAgICAgICAoUGxhdGZvcm1DbHV0dGVyQW5pbWF0
aW9uKToKKwogMjAxMy0wMi0xOSAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbU291cF0gVXNlIHN5bmNocm9ub3VzIGNhbGxzIHRvIGNsb3NlIGNv
bXBsZXRlbHkgcHJvY2Vzc2VkIHN0cmVhbXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0xheWVyQ2x1dHRlci5j
cHAKaW5kZXggNTM3OTZlYzg5Nzc5NmQ5YjkzOWMyMTIxZjEyNTNkMDFiYjU3MTk4My4uMGI2Njc5
ZmEyZWZlODNjY2I1ZGRkM2E0NmU3N2MxYmM5NThkMjQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0xheWVyQ2x1dHRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0xh
eWVyQ2x1dHRlci5jcHAKQEAgLTc0OCwxNCArNzQ4LDc0IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1D
bHV0dGVyQW5pbWF0aW9uPiBHcmFwaGljc0xheWVyQ2x1dHRlcjo6Y3JlYXRlQmFzaWNBbmltYXRp
b24oCiAKIFBhc3NSZWZQdHI8UGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uPkdyYXBoaWNzTGF5ZXJD
bHV0dGVyOjpjcmVhdGVLZXlmcmFtZUFuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFuaW0sIGNv
bnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhZGRpdGl2ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgIHJldHVybiAwOworICAgIFJlZlB0cjxQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb24+
IGtleWZyYW1lQW5pbSA9IFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6Y3JlYXRlKFBsYXRmb3Jt
Q2x1dHRlckFuaW1hdGlvbjo6S2V5ZnJhbWUsIGtleVBhdGgpOworICAgIHNldHVwQW5pbWF0aW9u
KGtleWZyYW1lQW5pbS5nZXQoKSwgYW5pbSwgYWRkaXRpdmUpOworICAgIHJldHVybiBrZXlmcmFt
ZUFuaW07CiB9CiAKIGJvb2wgR3JhcGhpY3NMYXllckNsdXR0ZXI6OnNldFRyYW5zZm9ybUFuaW1h
dGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBB
bmltYXRpb24qIGFuaW1hdGlvbiwgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uKiBrZXlmcmFtZUFu
aW0sIGludCBmdW5jdGlvbkluZGV4LCBUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUg
dHJhbnNmb3JtT3BUeXBlLCBib29sIGlzTWF0cml4QW5pbWF0aW9uLCBjb25zdCBJbnRTaXplJiBi
b3hTaXplKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAg
IFZlY3RvcjxmbG9hdD4ga2V5VGltZXM7CisgICAgVmVjdG9yPGZsb2F0PiBmbG9hdFZhbHVlczsK
KyAgICBWZWN0b3I8RmxvYXRQb2ludDNEPiBmbG9hdFBvaW50M0RWYWx1ZXM7CisgICAgVmVjdG9y
PFRyYW5zZm9ybWF0aW9uTWF0cml4PiB0cmFuc2Zvcm1hdGlvbk1hdHJpeFZhbHVlczsKKyAgICBW
ZWN0b3I8Y29uc3QgVGltaW5nRnVuY3Rpb24qPiB0aW1pbmdGdW5jdGlvbnM7CisKKyAgICBib29s
IGZvcndhcmRzID0gYW5pbWF0aW9uLT5kaXJlY3Rpb25Jc0ZvcndhcmRzKCk7CisKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVMaXN0LnNpemUoKTsgKytpKSB7CisgICAgICAgIHVu
c2lnbmVkIGluZGV4ID0gZm9yd2FyZHMgPyBpIDogKHZhbHVlTGlzdC5zaXplKCkgLSBpIC0gMSk7
CisgICAgICAgIGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKiBjdXJWYWx1ZSA9IHN0YXRp
Y19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KGluZGV4
KSk7CisgICAgICAgIGtleVRpbWVzLmFwcGVuZChmb3J3YXJkcyA/IGN1clZhbHVlLT5rZXlUaW1l
KCkgOiAoMSAtIGN1clZhbHVlLT5rZXlUaW1lKCkpKTsKKworICAgICAgICBpZiAoaXNNYXRyaXhB
bmltYXRpb24pIHsKKyAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsK
KyAgICAgICAgICAgIGN1clZhbHVlLT52YWx1ZSgpLT5hcHBseShib3hTaXplLCB0cmFuc2Zvcm0p
OworCisgICAgICAgICAgICAvLyBGSVhNRTogSW4gQ29yZUFuaW1hdGlvbiBjYXNlLCBpZiBhbnkg
bWF0cml4IGlzIHNpbmd1bGFyLCBDQSB3b24ndCBhbmltYXRlIGl0IGNvcnJlY3RseS4KKyAgICAg
ICAgICAgIC8vIEJ1dCBJJ20gbm90IHN1cmUgY2x1dHRlciBhbHNvIGRvZXMuIENoZWNrIGl0IGxh
dGVyLCBhbmQgdGhlbiBkZWNpZGUKKyAgICAgICAgICAgIC8vIHdoZXRoZXIgcmVtb3ZpbmcgZm9s
bG93aW5nIGxpbmVzIG9yIG5vdC4KKyAgICAgICAgICAgIGlmICghdHJhbnNmb3JtLmlzSW52ZXJ0
aWJsZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgdHJh
bnNmb3JtYXRpb25NYXRyaXhWYWx1ZXMuYXBwZW5kKHRyYW5zZm9ybSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIHRyYW5zZm9ybU9wID0g
Y3VyVmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpOworICAgICAgICAgICAgaWYgKGlz
VHJhbnNmb3JtVHlwZU51bWJlcih0cmFuc2Zvcm1PcFR5cGUpKSB7CisgICAgICAgICAgICAgICAg
ZmxvYXQgdmFsdWU7CisgICAgICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZSh0
cmFuc2Zvcm1PcCwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB2YWx1ZSk7CisgICAgICAgICAg
ICAgICAgZmxvYXRWYWx1ZXMuYXBwZW5kKHZhbHVlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
aXNUcmFuc2Zvcm1UeXBlRmxvYXRQb2ludDNEKHRyYW5zZm9ybU9wVHlwZSkpIHsKKyAgICAgICAg
ICAgICAgICBGbG9hdFBvaW50M0QgdmFsdWU7CisgICAgICAgICAgICAgICAgZ2V0VHJhbnNmb3Jt
RnVuY3Rpb25WYWx1ZSh0cmFuc2Zvcm1PcCwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB2YWx1
ZSk7CisgICAgICAgICAgICAgICAgZmxvYXRQb2ludDNEVmFsdWVzLmFwcGVuZCh2YWx1ZSk7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHZhbHVlOworICAgICAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUodHJhbnNm
b3JtT3AsIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgdmFsdWUpOworICAgICAgICAgICAgICAg
IHRyYW5zZm9ybWF0aW9uTWF0cml4VmFsdWVzLmFwcGVuZCh2YWx1ZSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICBpZiAoaSA8ICh2YWx1ZUxpc3Quc2l6ZSgpIC0gMSkpCisg
ICAgICAgICAgICB0aW1pbmdGdW5jdGlvbnMuYXBwZW5kKHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0
aW9uVmFsdWUoZm9yd2FyZHMgPyBjdXJWYWx1ZSA6IHZhbHVlTGlzdC5hdChpbmRleCAtIDEpLCBh
bmltYXRpb24pKTsKKyAgICB9CisKKyAgICBrZXlmcmFtZUFuaW0tPnNldEtleVRpbWVzKGtleVRp
bWVzKTsKKworICAgIGlmIChpc1RyYW5zZm9ybVR5cGVOdW1iZXIodHJhbnNmb3JtT3BUeXBlKSkK
KyAgICAgICAga2V5ZnJhbWVBbmltLT5zZXRWYWx1ZXMoZmxvYXRWYWx1ZXMpOworICAgIGVsc2Ug
aWYgKGlzVHJhbnNmb3JtVHlwZUZsb2F0UG9pbnQzRCh0cmFuc2Zvcm1PcFR5cGUpKQorICAgICAg
ICBrZXlmcmFtZUFuaW0tPnNldFZhbHVlcyhmbG9hdFBvaW50M0RWYWx1ZXMpOworICAgIGVsc2UK
KyAgICAgICAga2V5ZnJhbWVBbmltLT5zZXRWYWx1ZXModHJhbnNmb3JtYXRpb25NYXRyaXhWYWx1
ZXMpOworCisgICAga2V5ZnJhbWVBbmltLT5zZXRUaW1pbmdGdW5jdGlvbnModGltaW5nRnVuY3Rp
b25zLCAhZm9yd2FyZHMpOworCisgICAgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpWYWx1ZUZ1
bmN0aW9uVHlwZSB2YWx1ZUZ1bmN0aW9uID0gZ2V0VmFsdWVGdW5jdGlvbk5hbWVGb3JUcmFuc2Zv
cm1PcGVyYXRpb24odHJhbnNmb3JtT3BUeXBlKTsKKyAgICBpZiAodmFsdWVGdW5jdGlvbiAhPSBQ
bGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246Ok5vVmFsdWVGdW5jdGlvbikKKyAgICAgICAga2V5ZnJh
bWVBbmltLT5zZXRWYWx1ZUZ1bmN0aW9uKHZhbHVlRnVuY3Rpb24pOworCisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIGJvb2wgR3JhcGhpY3NMYXllckNsdXR0ZXI6OnNldFRyYW5zZm9ybUFuaW1hdGlv
bkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmlt
YXRpb24qIGFuaW1hdGlvbiwgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uKiBiYXNpY0FuaW0sIGlu
dCBmdW5jdGlvbkluZGV4LCBUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHJhbnNm
b3JtT3BUeXBlLCBib29sIGlzTWF0cml4QW5pbWF0aW9uLCBjb25zdCBJbnRTaXplJiBib3hTaXpl
KQpAQCAtOTg2LDggKzEwNDYsMzcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ2x1dHRlcjo6c2V0QW5p
bWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUwKIAogYm9vbCBH
cmFwaGljc0xheWVyQ2x1dHRlcjo6c2V0QW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1l
VmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBQbGF0Zm9y
bUNsdXR0ZXJBbmltYXRpb24qIGtleWZyYW1lQW5pbSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotICAgIHJldHVybiBmYWxzZTsKKyAgICBWZWN0b3I8ZmxvYXQ+IGtleVRpbWVzOworICAgIFZl
Y3RvcjxmbG9hdD4gdmFsdWVzOworICAgIFZlY3Rvcjxjb25zdCBUaW1pbmdGdW5jdGlvbio+IHRp
bWluZ0Z1bmN0aW9uczsKKworICAgIGJvb2wgZm9yd2FyZHMgPSBhbmltYXRpb24tPmRpcmVjdGlv
bklzRm9yd2FyZHMoKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZUxpc3Qu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSBmb3J3YXJkcyA/IGkgOiAo
dmFsdWVMaXN0LnNpemUoKSAtIGkgLSAxKTsKKyAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUq
IGN1clZhbHVlID0gdmFsdWVMaXN0LmF0KGluZGV4KTsKKyAgICAgICAga2V5VGltZXMuYXBwZW5k
KGZvcndhcmRzID8gY3VyVmFsdWUtPmtleVRpbWUoKSA6ICgxIC0gY3VyVmFsdWUtPmtleVRpbWUo
KSkpOworCisgICAgICAgIHN3aXRjaCAodmFsdWVMaXN0LnByb3BlcnR5KCkpIHsKKyAgICAgICAg
Y2FzZSBBbmltYXRlZFByb3BlcnR5T3BhY2l0eTogeworICAgICAgICAgICAgY29uc3QgRmxvYXRB
bmltYXRpb25WYWx1ZSogZmxvYXRWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0
aW9uVmFsdWUqPihjdXJWYWx1ZSk7CisgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKGZsb2F0VmFs
dWUtPnZhbHVlKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyB3ZSBkb24ndCBhbmlt
YXRlIGNvbG9yIHlldAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoaSA8ICh2YWx1ZUxpc3Quc2l6ZSgpIC0gMSkpCisgICAgICAgICAgICB0aW1pbmdGdW5jdGlv
bnMuYXBwZW5kKHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoZm9yd2FyZHMgPyBjdXJW
YWx1ZSA6IHZhbHVlTGlzdC5hdChpbmRleCAtIDEpLCBhbmltYXRpb24pKTsKKyAgICB9CisKKyAg
ICBrZXlmcmFtZUFuaW0tPnNldEtleVRpbWVzKGtleVRpbWVzKTsKKyAgICBrZXlmcmFtZUFuaW0t
PnNldFZhbHVlcyh2YWx1ZXMpOworICAgIGtleWZyYW1lQW5pbS0+c2V0VGltaW5nRnVuY3Rpb25z
KHRpbWluZ0Z1bmN0aW9ucywgIWZvcndhcmRzKTsKKworICAgIHJldHVybiB0cnVlOwogfQogCiBH
cmFwaGljc0xheWVyQWN0b3IqIEdyYXBoaWNzTGF5ZXJDbHV0dGVyOjpsYXllckZvclN1cGVybGF5
ZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2x1dHRlci9QbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9QbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb24uY3BwCmluZGV4
IDYyZmU3NjE5MjBjMDIxMjNkYWI4Y2EyMTMzYjFmZGNlN2FkZjAyYmYuLmIzNzkyYjg5YjBhODAx
OTExMDlmOWFlZDY3NTIxYjE5MDNkOTg0ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL1BsYXRmb3JtQ2x1dHRl
ckFuaW1hdGlvbi5jcHAKQEAgLTM4LDcgKzM4LDkgQEAKICNpbmNsdWRlICJVbml0QmV6aWVyLmgi
CiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5j
bHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+Cisj
aW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTU0LDcgKzU2LDcgQEAgc3RhdGljIFN0
cmluZyB0b0NsdXR0ZXJBY3RvclByb3BlcnR5U3RyaW5nKGNvbnN0IFBsYXRmb3JtQ2x1dHRlckFu
aW1hdGlvbjo6VmFsdWUKIHsKICAgICAvLyBDbHV0dGVyQWN0b3IgZG9lc24ndCBoYXZlICdzY2Fs
ZScgYW5kICd0cmFuc2xhdGUnIHByb3BlcnRpZXMuIFNvIHdlIHNob3VsZCBzdXBwb3J0CiAgICAg
Ly8gJ3NjYWxlJyBhbmQgJ3RyYW5zbGF0ZScgVmFsdWVGdW5jdGlvblR5cGUgYnkgY29tYmluYXRp
b24gb2YgZXhpc3RpbmcgcHJvcGVydHkgYW5pbWF0aW9ucy4gCi0gICAgY29uc3QgY2hhciogY2x1
dHRlckFjdG9yUHJvcGVydHlbXSA9IHsgIk5vUHJvcGVydHkiLCAicm90YXRpb24tYW5nbGUteCIs
ICJyb3RhdGlvbi1hbmdsZS15IiwgInJvdGF0aW9uLWFuZ2xlLXoiLCAic2NhbGUteCIsICJzY2Fs
ZS15IiwgInNjYWxlLXoiLCAiTm9Qcm9wZXJ0eSIsICJ0cmFuc2xhdGlvbi14IiwgInRyYW5zbGF0
aW9uLXkiLCAidHJhbnNsYXRpb24teiIsICJOb1Byb3BlcnR5IiB9OyAKKyAgICBjb25zdCBjaGFy
KiBjbHV0dGVyQWN0b3JQcm9wZXJ0eVtdID0geyAiTm9Qcm9wZXJ0eSIsICJyb3RhdGlvbi1hbmds
ZS14IiwgInJvdGF0aW9uLWFuZ2xlLXkiLCAicm90YXRpb24tYW5nbGUteiIsICJzY2FsZS14Iiwg
InNjYWxlLXkiLCAic2NhbGUteiIsICJzY2FsZSIsICJ0cmFuc2xhdGlvbi14IiwgInRyYW5zbGF0
aW9uLXkiLCAidHJhbnNsYXRpb24teiIsICJ0cmFuc2xhdGUiIH07IAogICAgIHJldHVybiBjbHV0
dGVyQWN0b3JQcm9wZXJ0eVt2YWx1ZUZ1bmN0aW9uVHlwZV07CiB9CiAKQEAgLTExNCw4ICsxMTYs
NiBAQCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OlBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbihB
bmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cgogICAgICwgbV90aW1pbmdGdW5jdGlvbigwKQog
ICAgICwgbV92YWx1ZUZ1bmN0aW9uVHlwZShOb1ZhbHVlRnVuY3Rpb24pCiB7Ci0gICAgLy8gRklY
TUU6IFdlIHN1cHBvcnQgb25seSBCYXNpYyB0eXBlIG5vdy4KLSAgICBBU1NFUlQodHlwZSA9PSBC
YXNpYyk7CiAgICAgbV9hbmltYXRpb24gPSBhZG9wdEdSZWYoR19PQkpFQ1QoY2x1dHRlcl90cmFu
c2l0aW9uX2dyb3VwX25ldygpKSk7CiB9CiAKQEAgLTIyMSw2ICsyMjEsNyBAQCB2b2lkIFBsYXRm
b3JtQ2x1dHRlckFuaW1hdGlvbjo6c2V0VGltaW5nRnVuY3Rpb24oY29uc3QgVGltaW5nRnVuY3Rp
b24qIHRpbWluZ0Z1bgogewogICAgIGlmICghdGltaW5nRnVuY3Rpb24pCiAgICAgICAgIHJldHVy
bjsKKwogICAgIG1fdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbjsKIH0KIApAQCAtMzMw
LDcgKzMzMSw5IEBAIHZvaWQgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uOjpjb3B5VG9WYWx1ZUZy
b20oY29uc3QgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uKiB2CiAKIHZvaWQgUGxhdGZvcm1DbHV0
dGVyQW5pbWF0aW9uOjpzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPGZsb2F0PiYgdmFsdWUpCiB7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBBU1NFUlQoYW5pbWF0aW9uVHlwZSgpID09IEtleWZy
YW1lKTsKKworICAgIG1fdmFsdWVzID0gdmFsdWU7CiB9CiAKIHZvaWQgUGxhdGZvcm1DbHV0dGVy
QW5pbWF0aW9uOjpzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9u
TWF0cml4PiYgdmFsdWUpCkBAIC0zNDAsNyArMzQzLDkgQEAgdm9pZCBQbGF0Zm9ybUNsdXR0ZXJB
bmltYXRpb246OnNldFZhbHVlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25N
YXQKIAogdm9pZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OnNldFZhbHVlcyhjb25zdCBWZWN0
b3I8RmxvYXRQb2ludDNEPiYgdmFsdWUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBB
U1NFUlQoYW5pbWF0aW9uVHlwZSgpID09IEtleWZyYW1lKTsKKworICAgIG1fdmFsdWVzM0QgPSB2
YWx1ZTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OnNldFZhbHVlcyhjb25z
dCBWZWN0b3I8V2ViQ29yZTo6Q29sb3I+JiB2YWx1ZSkKQEAgLTM1NSw3ICszNjAsOSBAQCB2b2lk
IFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6Y29weVZhbHVlc0Zyb20oY29uc3QgUGxhdGZvcm1D
bHV0dGVyQW5pbWF0aW9uKiB2YQogCiB2b2lkIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6c2V0
S2V5VGltZXMoY29uc3QgVmVjdG9yPGZsb2F0PiYgdmFsdWUpCiB7Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICBBU1NFUlQoYW5pbWF0aW9uVHlwZSgpID09IEtleWZyYW1lKTsKKworICAgIG1f
a2V5VGltZXMgPSB2YWx1ZTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OmNv
cHlLZXlUaW1lc0Zyb20oY29uc3QgUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uKiB2YWx1ZSkKQEAg
LTM2NSw3ICszNzIsOSBAQCB2b2lkIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6Y29weUtleVRp
bWVzRnJvbShjb25zdCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb24qCiAKIHZvaWQgUGxhdGZvcm1D
bHV0dGVyQW5pbWF0aW9uOjpzZXRUaW1pbmdGdW5jdGlvbnMoY29uc3QgVmVjdG9yPGNvbnN0IFRp
bWluZ0Z1bmN0aW9uKj4mIHZhbHVlLCBib29sIHJldmVyc2UpCiB7Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICBBU1NFUlQoYW5pbWF0aW9uVHlwZSgpID09IEtleWZyYW1lKTsKKworICAgIG1f
dGltaW5nRnVuY3Rpb25zID0gdmFsdWU7CiB9CiAKIHZvaWQgUGxhdGZvcm1DbHV0dGVyQW5pbWF0
aW9uOjpjb3B5VGltaW5nRnVuY3Rpb25zRnJvbShjb25zdCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRp
b24qIHZhbHVlKQpAQCAtMzkwLDQwICszOTksMTMzIEBAIENsdXR0ZXJUaW1lbGluZSogUGxhdGZv
cm1DbHV0dGVyQW5pbWF0aW9uOjp0aW1lbGluZSgpIGNvbnN0CiAgICAgcmV0dXJuIENMVVRURVJf
VElNRUxJTkUobV9hbmltYXRpb24uZ2V0KCkpOwogfQogCi12b2lkIFBsYXRmb3JtQ2x1dHRlckFu
aW1hdGlvbjo6YWRkQ2x1dHRlclRyYW5zaXRpb25Gb3JQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHBy
b3BlcnR5LCBjb25zdCB1bnNpZ25lZCBmcm9tVmFsdWUsIGNvbnN0IHVuc2lnbmVkIHRvVmFsdWUp
Cit2b2lkIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6YWRkQ2x1dHRlclRyYW5zaXRpb25Gb3JQ
cm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5LCBjb25zdCBmbG9hdCBmcm9tVmFsdWUsIGNv
bnN0IGZsb2F0IHRvVmFsdWUpCiB7CiAgICAgQVNTRVJUKHByb3BlcnR5ICE9ICJOb1Byb3BlcnR5
Iik7CiAKKyAgICBHVHlwZSBnVHlwZSA9IChwcm9wZXJ0eSA9PSAib3BhY2l0eSIgPyBHX1RZUEVf
VUlOVCA6IEdfVFlQRV9GTE9BVCk7CisKICAgICBHUmVmUHRyPENsdXR0ZXJUcmFuc2l0aW9uPiB0
cmFuc2l0aW9uID0gYWRvcHRHUmVmKGNsdXR0ZXJfcHJvcGVydHlfdHJhbnNpdGlvbl9uZXcocHJv
cGVydHkudXRmOCgpLmRhdGEoKSkpOwotICAgIGNsdXR0ZXJfdHJhbnNpdGlvbl9zZXRfZnJvbSh0
cmFuc2l0aW9uLmdldCgpLCBHX1RZUEVfVUlOVCwgZnJvbVZhbHVlKTsKLSAgICBjbHV0dGVyX3Ry
YW5zaXRpb25fc2V0X3RvKHRyYW5zaXRpb24uZ2V0KCksIEdfVFlQRV9VSU5ULCB0b1ZhbHVlKTsK
KyAgICBjbHV0dGVyX3RyYW5zaXRpb25fc2V0X2Zyb20odHJhbnNpdGlvbi5nZXQoKSwgZ1R5cGUs
IChnVHlwZSA9PSBHX1RZUEVfVUlOVCA/IHN0YXRpY19jYXN0PHVuc2lnbmVkPihmcm9tVmFsdWUp
IDogZnJvbVZhbHVlKSk7CisgICAgY2x1dHRlcl90cmFuc2l0aW9uX3NldF90byh0cmFuc2l0aW9u
LmdldCgpLCBnVHlwZSwgKGdUeXBlID09IEdfVFlQRV9VSU5UID8gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHRvVmFsdWUpIDogdG9WYWx1ZSkpOworCisgICAgY2x1dHRlcl90aW1lbGluZV9zZXRfcHJv
Z3Jlc3NfbW9kZSh0aW1lbGluZSgpLCB0b0NsdXR0ZXJBbmltYXRpb25Nb2RlKG1fdGltaW5nRnVu
Y3Rpb24pKTsKIAogICAgIGNsdXR0ZXJfdHJhbnNpdGlvbl9ncm91cF9hZGRfdHJhbnNpdGlvbihD
TFVUVEVSX1RSQU5TSVRJT05fR1JPVVAobV9hbmltYXRpb24uZ2V0KCkpLCB0cmFuc2l0aW9uLmdl
dCgpKTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OmFkZENsdXR0ZXJUcmFu
c2l0aW9uRm9yUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eSwgY29uc3QgZmxvYXQgZnJv
bVZhbHVlLCBjb25zdCBmbG9hdCB0b1ZhbHVlKQordm9pZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRp
b246OmFkZENsdXR0ZXJUcmFuc2l0aW9uRm9yUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eSwgY29uc3QgRmxvYXRQb2ludDNEJiBmcm9tVmFsdWUsIGNvbnN0IEZsb2F0UG9pbnQzRCYgdG9W
YWx1ZSkKIHsKICAgICBBU1NFUlQocHJvcGVydHkgIT0gIk5vUHJvcGVydHkiKTsKIAotICAgIEdS
ZWZQdHI8Q2x1dHRlclRyYW5zaXRpb24+IHRyYW5zaXRpb24gPSBhZG9wdEdSZWYoY2x1dHRlcl9w
cm9wZXJ0eV90cmFuc2l0aW9uX25ldyhwcm9wZXJ0eS51dGY4KCkuZGF0YSgpKSk7Ci0gICAgY2x1
dHRlcl90cmFuc2l0aW9uX3NldF9mcm9tKHRyYW5zaXRpb24uZ2V0KCksIEdfVFlQRV9GTE9BVCwg
ZnJvbVZhbHVlKTsKLSAgICBjbHV0dGVyX3RyYW5zaXRpb25fc2V0X3RvKHRyYW5zaXRpb24uZ2V0
KCksIEdfVFlQRV9GTE9BVCwgdG9WYWx1ZSk7CisgICAgaWYgKHByb3BlcnR5ID09ICJzY2FsZSIp
IHsKKyAgICAgICAgYWRkQ2x1dHRlclRyYW5zaXRpb25Gb3JQcm9wZXJ0eShTdHJpbmcoInNjYWxl
LXgiKSwgZnJvbVZhbHVlLngoKSwgdG9WYWx1ZS54KCkpOworICAgICAgICBhZGRDbHV0dGVyVHJh
bnNpdGlvbkZvclByb3BlcnR5KFN0cmluZygic2NhbGUteSIpLCBmcm9tVmFsdWUueSgpLCB0b1Zh
bHVlLnkoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHByb3BlcnR5ID09ICJ0
cmFuc2xhdGUiKSB7CisgICAgICAgIGFkZENsdXR0ZXJUcmFuc2l0aW9uRm9yUHJvcGVydHkoU3Ry
aW5nKCJ0cmFuc2xhdGlvbi14IiksIGZyb21WYWx1ZS54KCksIHRvVmFsdWUueCgpKTsKKyAgICAg
ICAgYWRkQ2x1dHRlclRyYW5zaXRpb25Gb3JQcm9wZXJ0eShTdHJpbmcoInRyYW5zbGF0aW9uLXki
KSwgZnJvbVZhbHVlLngoKSwgdG9WYWx1ZS55KCkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DbHV0dGVyQW5p
bWF0aW9uOjphZGRDbHV0dGVyS2V5ZnJhbWVUcmFuc2l0aW9uRm9yUHJvcGVydHkoY29uc3QgU3Ry
aW5nJiBwcm9wZXJ0eSwgY29uc3QgVmVjdG9yPGZsb2F0PiYgdmFsdWVzKQoreworICAgIEFTU0VS
VChwcm9wZXJ0eSAhPSAiTm9Qcm9wZXJ0eSIpOworCisgICAgR1R5cGUgZ1R5cGUgPSAocHJvcGVy
dHkgPT0gIm9wYWNpdHkiID8gR19UWVBFX1VJTlQgOiBHX1RZUEVfRkxPQVQpOworCisgICAgR1Jl
ZlB0cjxDbHV0dGVyVHJhbnNpdGlvbj4gdHJhbnNpdGlvbiA9IGFkb3B0R1JlZihjbHV0dGVyX2tl
eWZyYW1lX3RyYW5zaXRpb25fbmV3KHByb3BlcnR5LnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBjbHV0
dGVyX3RyYW5zaXRpb25fc2V0X2Zyb20odHJhbnNpdGlvbi5nZXQoKSwgZ1R5cGUsIHZhbHVlcy5m
aXJzdCgpKTsKKyAgICBjbHV0dGVyX3RyYW5zaXRpb25fc2V0X3RvKHRyYW5zaXRpb24uZ2V0KCks
IGdUeXBlLCB2YWx1ZXMubGFzdCgpKTsKKworICAgIC8vIElnbm9yZSB0aGUgZmlyc3Qga2V5ZnJh
bWUsIHNpbmNlIGl0J3MgYSAnMCcgZnJhbWUsIG1lYW5pbmdsZXNzLgorICAgIGNvbnN0IHVuc2ln
bmVkIG5LZXlmcmFtZXMgPSB2YWx1ZXMuc2l6ZSgpIC0gMTsKKyAgICBPd25BcnJheVB0cjxDbHV0
dGVyQW5pbWF0aW9uTW9kZT4gYW5pbWF0aW9uTW9kZXMgPSBhZG9wdEFycmF5UHRyKG5ldyBDbHV0
dGVyQW5pbWF0aW9uTW9kZVtuS2V5ZnJhbWVzXSk7CisgICAgT3duQXJyYXlQdHI8ZG91YmxlPiBr
ZXlUaW1lcyA9IGFkb3B0QXJyYXlQdHIobmV3IGRvdWJsZVtuS2V5ZnJhbWVzXSk7CisgICAgR093
blB0cjxHVmFsdWU+IGtleVZhbHVlcyhnX25ldzAoR1ZhbHVlLCBuS2V5ZnJhbWVzKSk7CisKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbktleWZyYW1lczsgKytpKSB7CisgICAgICAgIGtl
eVRpbWVzW2ldID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihtX2tleVRpbWVzW2kgKyAxXSk7CisgICAg
ICAgIGFuaW1hdGlvbk1vZGVzW2ldID0gdG9DbHV0dGVyQW5pbWF0aW9uTW9kZShtX3RpbWluZ0Z1
bmN0aW9uc1tpXSk7CisgICAgICAgIGdfdmFsdWVfaW5pdCgma2V5VmFsdWVzLmdldCgpW2ldLCBn
VHlwZSk7CisgICAgICAgIGlmIChnVHlwZSA9PSBHX1RZUEVfVUlOVCkKKyAgICAgICAgICAgIGdf
dmFsdWVfc2V0X3VpbnQoJmtleVZhbHVlcy5nZXQoKVtpXSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHZhbHVlc1tpICsgMV0pKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZ192YWx1ZV9zZXRf
ZmxvYXQoJmtleVZhbHVlcy5nZXQoKVtpXSwgdmFsdWVzW2kgKyAxXSk7CisgICAgfQorCisgICAg
Y2x1dHRlcl9rZXlmcmFtZV90cmFuc2l0aW9uX3NldF9rZXlfZnJhbWVzKENMVVRURVJfS0VZRlJB
TUVfVFJBTlNJVElPTih0cmFuc2l0aW9uLmdldCgpKSwgbktleWZyYW1lcywga2V5VGltZXMuZ2V0
KCkpOworICAgIGNsdXR0ZXJfa2V5ZnJhbWVfdHJhbnNpdGlvbl9zZXRfdmFsdWVzKENMVVRURVJf
S0VZRlJBTUVfVFJBTlNJVElPTih0cmFuc2l0aW9uLmdldCgpKSwgbktleWZyYW1lcywga2V5VmFs
dWVzLmdldCgpKTsKKyAgICBjbHV0dGVyX2tleWZyYW1lX3RyYW5zaXRpb25fc2V0X21vZGVzKENM
VVRURVJfS0VZRlJBTUVfVFJBTlNJVElPTih0cmFuc2l0aW9uLmdldCgpKSwgbktleWZyYW1lcywg
YW5pbWF0aW9uTW9kZXMuZ2V0KCkpOwogCiAgICAgY2x1dHRlcl90cmFuc2l0aW9uX2dyb3VwX2Fk
ZF90cmFuc2l0aW9uKENMVVRURVJfVFJBTlNJVElPTl9HUk9VUChtX2FuaW1hdGlvbi5nZXQoKSks
IHRyYW5zaXRpb24uZ2V0KCkpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5LZXlm
cmFtZXM7ICsraSkKKyAgICAgICAgZ192YWx1ZV91bnNldCgma2V5VmFsdWVzLmdldCgpW2ldKTsK
K30KKwordm9pZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OmFkZENsdXR0ZXJLZXlmcmFtZVRy
YW5zaXRpb25Gb3JQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5LCBjb25zdCBWZWN0b3I8
RmxvYXRQb2ludDNEPiYgdmFsdWVzKQoreworICAgIEFTU0VSVChwcm9wZXJ0eSAhPSAiTm9Qcm9w
ZXJ0eSIpOworCisgICAgVmVjdG9yPGZsb2F0PiB2YWx1ZXNYLCB2YWx1ZXNZOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgdmFsdWVz
WC5hcHBlbmQodmFsdWVzW2ldLngoKSk7CisgICAgICAgIHZhbHVlc1kuYXBwZW5kKHZhbHVlc1tp
XS55KCkpOworICAgIH0KKworICAgIGlmIChwcm9wZXJ0eSA9PSAic2NhbGUiKSB7CisgICAgICAg
IGFkZENsdXR0ZXJLZXlmcmFtZVRyYW5zaXRpb25Gb3JQcm9wZXJ0eShTdHJpbmcoInNjYWxlLXgi
KSwgdmFsdWVzWCk7CisgICAgICAgIGFkZENsdXR0ZXJLZXlmcmFtZVRyYW5zaXRpb25Gb3JQcm9w
ZXJ0eShTdHJpbmcoInNjYWxlLXkiKSwgdmFsdWVzWSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgaWYgKHByb3BlcnR5ID09ICJ0cmFuc2xhdGUiKSB7CisgICAgICAgIGFkZENsdXR0ZXJL
ZXlmcmFtZVRyYW5zaXRpb25Gb3JQcm9wZXJ0eShTdHJpbmcoInRyYW5zbGF0aW9uLXgiKSwgdmFs
dWVzWCk7CisgICAgICAgIGFkZENsdXR0ZXJLZXlmcmFtZVRyYW5zaXRpb25Gb3JQcm9wZXJ0eShT
dHJpbmcoInRyYW5zbGF0aW9uLXkiKSwgdmFsdWVzWSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNsdXR0ZXJB
bmltYXRpb246OmFkZE9wYWNpdHlUcmFuc2l0aW9uKCkKIHsKLSAgICBhZGRDbHV0dGVyVHJhbnNp
dGlvbkZvclByb3BlcnR5KFN0cmluZygib3BhY2l0eSIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
MjU1ICogbV9mcm9tVmFsdWUpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMjU1ICogbV90b1ZhbHVl
KSk7CisgICAgaWYgKGFuaW1hdGlvblR5cGUoKSA9PSBLZXlmcmFtZSkgeworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV92YWx1ZXMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBt
X3ZhbHVlc1tpXSAqPSAyNTU7CisKKyAgICAgICAgYWRkQ2x1dHRlcktleWZyYW1lVHJhbnNpdGlv
bkZvclByb3BlcnR5KFN0cmluZygib3BhY2l0eSIpLCBtX3ZhbHVlcyk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgbV9mcm9tVmFsdWUgKj0gMjU1OworICAgICAgICBtX3RvVmFsdWUgKj0gMjU1Owor
CisgICAgICAgIGFkZENsdXR0ZXJUcmFuc2l0aW9uRm9yUHJvcGVydHkoU3RyaW5nKCJvcGFjaXR5
IiksIG1fZnJvbVZhbHVlLCBtX3RvVmFsdWUpOworICAgIH0KIH0KIAogdm9pZCBQbGF0Zm9ybUNs
dXR0ZXJBbmltYXRpb246OmFkZFRyYW5zZm9ybVRyYW5zaXRpb24oKQogeworICAgIGNvbnN0IGJv
b2wgaXNLZXlmcmFtZSA9IChhbmltYXRpb25UeXBlKCkgPT0gS2V5ZnJhbWUpOworCiAgICAgc3dp
dGNoIChtX3ZhbHVlRnVuY3Rpb25UeXBlKSB7CiAgICAgY2FzZSBSb3RhdGVYOgogICAgIGNhc2Ug
Um90YXRlWToKICAgICBjYXNlIFJvdGF0ZVo6Ci0gICAgICAgIGFkZENsdXR0ZXJUcmFuc2l0aW9u
Rm9yUHJvcGVydHkodG9DbHV0dGVyQWN0b3JQcm9wZXJ0eVN0cmluZyhtX3ZhbHVlRnVuY3Rpb25U
eXBlKSwgcmFkMmRlZyhtX2Zyb21WYWx1ZSksIHJhZDJkZWcobV90b1ZhbHVlKSk7CisgICAgICAg
IGlmIChpc0tleWZyYW1lKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV92YWx1ZXMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICAgICAgbV92YWx1ZXNbaV0gPSByYWQy
ZGVnKG1fdmFsdWVzW2ldKTsKKworICAgICAgICAgICAgYWRkQ2x1dHRlcktleWZyYW1lVHJhbnNp
dGlvbkZvclByb3BlcnR5KHRvQ2x1dHRlckFjdG9yUHJvcGVydHlTdHJpbmcobV92YWx1ZUZ1bmN0
aW9uVHlwZSksIG1fdmFsdWVzKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZnJv
bVZhbHVlID0gcmFkMmRlZyhtX2Zyb21WYWx1ZSk7CisgICAgICAgICAgICBtX3RvVmFsdWUgPSBy
YWQyZGVnKG1fdG9WYWx1ZSk7CisKKyAgICAgICAgICAgIGFkZENsdXR0ZXJUcmFuc2l0aW9uRm9y
UHJvcGVydHkodG9DbHV0dGVyQWN0b3JQcm9wZXJ0eVN0cmluZyhtX3ZhbHVlRnVuY3Rpb25UeXBl
KSwgbV9mcm9tVmFsdWUsIG1fdG9WYWx1ZSk7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBTY2FsZVg6CiAgICAgY2FzZSBTY2FsZVk6CkBAIC00MzEsMTUgKzUzMywxNyBAQCB2
b2lkIFBsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbjo6YWRkVHJhbnNmb3JtVHJhbnNpdGlvbigpCiAg
ICAgY2FzZSBUcmFuc2xhdGVYOgogICAgIGNhc2UgVHJhbnNsYXRlWToKICAgICBjYXNlIFRyYW5z
bGF0ZVo6Ci0gICAgICAgIGFkZENsdXR0ZXJUcmFuc2l0aW9uRm9yUHJvcGVydHkodG9DbHV0dGVy
QWN0b3JQcm9wZXJ0eVN0cmluZyhtX3ZhbHVlRnVuY3Rpb25UeXBlKSwgbV9mcm9tVmFsdWUsIG1f
dG9WYWx1ZSk7CisgICAgICAgIGlmIChpc0tleWZyYW1lKQorICAgICAgICAgICAgYWRkQ2x1dHRl
cktleWZyYW1lVHJhbnNpdGlvbkZvclByb3BlcnR5KHRvQ2x1dHRlckFjdG9yUHJvcGVydHlTdHJp
bmcobV92YWx1ZUZ1bmN0aW9uVHlwZSksIG1fdmFsdWVzKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgYWRkQ2x1dHRlclRyYW5zaXRpb25Gb3JQcm9wZXJ0eSh0b0NsdXR0ZXJBY3RvclByb3Bl
cnR5U3RyaW5nKG1fdmFsdWVGdW5jdGlvblR5cGUpLCBtX2Zyb21WYWx1ZSwgbV90b1ZhbHVlKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTY2FsZToKLSAgICAgICAgYWRkQ2x1dHRlclRyYW5z
aXRpb25Gb3JQcm9wZXJ0eShTdHJpbmcoInNjYWxlLXgiKSwgbV9mcm9tVmFsdWUzRC54KCksIG1f
dG9WYWx1ZTNELngoKSk7Ci0gICAgICAgIGFkZENsdXR0ZXJUcmFuc2l0aW9uRm9yUHJvcGVydHko
U3RyaW5nKCJzY2FsZS15IiksIG1fZnJvbVZhbHVlM0QueSgpLCBtX3RvVmFsdWUzRC55KCkpOwot
ICAgICAgICBicmVhazsKICAgICBjYXNlIFRyYW5zbGF0ZToKLSAgICAgICAgYWRkQ2x1dHRlclRy
YW5zaXRpb25Gb3JQcm9wZXJ0eShTdHJpbmcoInRyYW5zbGF0aW9uLXgiKSwgbV9mcm9tVmFsdWUz
RC54KCksIG1fdG9WYWx1ZTNELngoKSk7Ci0gICAgICAgIGFkZENsdXR0ZXJUcmFuc2l0aW9uRm9y
UHJvcGVydHkoU3RyaW5nKCJ0cmFuc2xhdGlvbi15IiksIG1fZnJvbVZhbHVlM0QueCgpLCBtX3Rv
VmFsdWUzRC55KCkpOworICAgICAgICBpZiAoaXNLZXlmcmFtZSkKKyAgICAgICAgICAgIGFkZENs
dXR0ZXJLZXlmcmFtZVRyYW5zaXRpb25Gb3JQcm9wZXJ0eSh0b0NsdXR0ZXJBY3RvclByb3BlcnR5
U3RyaW5nKG1fdmFsdWVGdW5jdGlvblR5cGUpLCBtX3ZhbHVlczNEKTsgCisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGFkZENsdXR0ZXJUcmFuc2l0aW9uRm9yUHJvcGVydHkodG9DbHV0dGVyQWN0
b3JQcm9wZXJ0eVN0cmluZyhtX3ZhbHVlRnVuY3Rpb25UeXBlKSwgbV9mcm9tVmFsdWUzRCwgbV90
b1ZhbHVlM0QpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKQEAgLTQ1Miw3ICs1NTYsNiBAQCB2b2lkIFBsYXRmb3JtQ2x1dHRlckFu
aW1hdGlvbjo6YWRkVHJhbnNmb3JtVHJhbnNpdGlvbigpCiAKIHZvaWQgUGxhdGZvcm1DbHV0dGVy
QW5pbWF0aW9uOjphZGRBbmltYXRpb25Gb3JLZXkoR3JhcGhpY3NMYXllckFjdG9yKiBwbGF0Zm9y
bUxheWVyLCBjb25zdCBTdHJpbmcmIGtleSkKIHsKLSAgICBBU1NFUlQoYW5pbWF0aW9uVHlwZSgp
ID09IEJhc2ljKTsKICAgICBBU1NFUlQoIWdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHBsYXRm
b3JtTGF5ZXIpLCBrZXkudXRmOCgpLmRhdGEoKSkpOwogCiAgICAgbV9sYXllciA9IENMVVRURVJf
QUNUT1IocGxhdGZvcm1MYXllcik7CkBAIC00NjYsMTEgKzU2OSw3IEBAIHZvaWQgUGxhdGZvcm1D
bHV0dGVyQW5pbWF0aW9uOjphZGRBbmltYXRpb25Gb3JLZXkoR3JhcGhpY3NMYXllckFjdG9yKiBw
bGF0Zm9ybUxhCiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAotICAg
IENsdXR0ZXJBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUgPSB0b0NsdXR0ZXJBbmltYXRpb25N
b2RlKG1fdGltaW5nRnVuY3Rpb24pOwotICAgIENsdXR0ZXJUaW1lbGluZSogY2x1dHRlclRpbWVs
aW5lID0gdGltZWxpbmUoKTsKLSAgICBjbHV0dGVyX3RpbWVsaW5lX3NldF9wcm9ncmVzc19tb2Rl
KGNsdXR0ZXJUaW1lbGluZSwgYW5pbWF0aW9uTW9kZSk7Ci0KLSAgICBnX3NpZ25hbF9jb25uZWN0
KGNsdXR0ZXJUaW1lbGluZSwgInN0YXJ0ZWQiLCBHX0NBTExCQUNLKHRpbWVsaW5lU3RhcnRlZENh
bGxiYWNrKSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdCh0aW1lbGluZSgpLCAic3RhcnRl
ZCIsIEdfQ0FMTEJBQ0sodGltZWxpbmVTdGFydGVkQ2FsbGJhY2spLCB0aGlzKTsKICAgICBnX29i
amVjdF9zZXRfZGF0YShHX09CSkVDVChwbGF0Zm9ybUxheWVyKSwga2V5LnV0ZjgoKS5kYXRhKCks
IHRoaXMpOwogCiAgICAgY2x1dHRlcl9hY3Rvcl9hZGRfdHJhbnNpdGlvbihtX2xheWVyLmdldCgp
LCBrZXkudXRmOCgpLmRhdGEoKSwgQ0xVVFRFUl9UUkFOU0lUSU9OKG1fYW5pbWF0aW9uLmdldCgp
KSk7CkBAIC00NzgsOCArNTc3LDYgQEAgdm9pZCBQbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OmFk
ZEFuaW1hdGlvbkZvcktleShHcmFwaGljc0xheWVyQWN0b3IqIHBsYXRmb3JtTGEKIAogdm9pZCBQ
bGF0Zm9ybUNsdXR0ZXJBbmltYXRpb246OnJlbW92ZUFuaW1hdGlvbkZvcktleShHcmFwaGljc0xh
eWVyQWN0b3IqIGxheWVyLCBjb25zdCBTdHJpbmcmIGtleSkKIHsKLSAgICBBU1NFUlQoYW5pbWF0
aW9uVHlwZSgpID09IEJhc2ljKTsKLQogICAgIGNsdXR0ZXJfYWN0b3JfcmVtb3ZlX3RyYW5zaXRp
b24oQ0xVVFRFUl9BQ1RPUihsYXllciksIGtleS51dGY4KCkuZGF0YSgpKTsKICAgICBnX29iamVj
dF9zZXRfZGF0YShHX09CSkVDVChsYXllciksIGtleS51dGY4KCkuZGF0YSgpLCAwKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvUGxhdGZv
cm1DbHV0dGVyQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
bHV0dGVyL1BsYXRmb3JtQ2x1dHRlckFuaW1hdGlvbi5oCmluZGV4IGI4OTJkZDNjY2Y1MWE0NWNm
OWRjYTlhZTc5Mzc0YzlhNDEyNTZhZWIuLmQyZjdhZDY0YzM2ZjBkZjYxN2YwMmJhOTk3ZmI1MjEy
OTQwMGIwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Ns
dXR0ZXIvUGxhdGZvcm1DbHV0dGVyQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9QbGF0Zm9ybUNsdXR0ZXJBbmltYXRpb24uaApAQCAtMTM4
LDggKzEzOCwxMSBAQCBwcml2YXRlOgogICAgIENsdXR0ZXJUaW1lbGluZSogdGltZWxpbmUoKSBj
b25zdDsKICAgICBBbmltYXRlZFByb3BlcnR5VHlwZSBzdHJpbmdUb0FuaW1hdGVkUHJvcGVydHlU
eXBlKGNvbnN0IFN0cmluZyYga2V5UGF0aCkgY29uc3Q7CiAKLSAgICB2b2lkIGFkZENsdXR0ZXJU
cmFuc2l0aW9uRm9yUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eSwgY29uc3QgdW5zaWdu
ZWQgZnJvbVZhbHVlLCBjb25zdCB1bnNpZ25lZCB0b1ZhbHVlKTsKICAgICB2b2lkIGFkZENsdXR0
ZXJUcmFuc2l0aW9uRm9yUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eSwgY29uc3QgZmxv
YXQgZnJvbVZhbHVlLCBjb25zdCBmbG9hdCB0b1ZhbHVlKTsKKyAgICB2b2lkIGFkZENsdXR0ZXJU
cmFuc2l0aW9uRm9yUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eSwgY29uc3QgRmxvYXRQ
b2ludDNEJiBmcm9tVmFsdWUsIGNvbnN0IEZsb2F0UG9pbnQzRCYgdG9WYWx1ZSk7CisKKyAgICB2
b2lkIGFkZENsdXR0ZXJLZXlmcmFtZVRyYW5zaXRpb25Gb3JQcm9wZXJ0eShjb25zdCBTdHJpbmcm
IHByb3BlcnR5LCBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2YWx1ZXMpOworICAgIHZvaWQgYWRkQ2x1
dHRlcktleWZyYW1lVHJhbnNpdGlvbkZvclByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHks
IGNvbnN0IFZlY3RvcjxGbG9hdFBvaW50M0Q+JiB2YWx1ZXMpOwogCiAgICAgdm9pZCBhZGRPcGFj
aXR5VHJhbnNpdGlvbigpOwogICAgIHZvaWQgYWRkVHJhbnNmb3JtVHJhbnNpdGlvbigpOwpAQCAt
MTYyLDYgKzE2NSwxMiBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIG1f
dGltaW5nRnVuY3Rpb247CiAgICAgVmFsdWVGdW5jdGlvblR5cGUgbV92YWx1ZUZ1bmN0aW9uVHlw
ZTsKKworICAgIFZlY3RvcjxmbG9hdD4gbV9rZXlUaW1lczsKKyAgICBWZWN0b3I8Y29uc3QgVGlt
aW5nRnVuY3Rpb24qPiBtX3RpbWluZ0Z1bmN0aW9uczsKKworICAgIFZlY3RvcjxmbG9hdD4gbV92
YWx1ZXM7CisgICAgVmVjdG9yPEZsb2F0UG9pbnQzRD4gbV92YWx1ZXMzRDsKIH07CiAKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>