<?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>79549</bug_id>
          
          <creation_ts>2012-02-24 18:57:02 -0800</creation_ts>
          <short_desc>Scoped stylesheets don&apos;t appear to work in Shadow DOM</short_desc>
          <delta_ts>2012-03-06 02:50:50 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://dglazkov.github.com/Web-Components-Polyfill/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>59827</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Roland Steiner">rolandsteiner</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>rniwa</cc>
    
    <cc>rolandsteiner</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>564817</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-02-24 18:57:02 -0800</bug_when>
    <thetext>* Create a shadow DOM subtree
* Add scoped stylesheet to it
* Observe that the styles don&apos;t match anything in the shadow DOM tree.

Last checked at r108661.

For an example, see: http://dglazkov.github.com/Web-Components-Polyfill/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566539</commentid>
    <comment_count>1</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-02-28 02:53:09 -0800</bug_when>
    <thetext>Indeed! :P   Attempting to use the host element as &quot;anchor&quot; for the style scope is probably a bad idea in the first place - working on a patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566570</commentid>
    <comment_count>2</comment_count>
      <attachid>129226</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-02-28 04:00:01 -0800</bug_when>
    <thetext>Created attachment 129226
work-in-progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569279</commentid>
    <comment_count>3</comment_count>
      <attachid>129821</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-03-01 22:30:50 -0800</bug_when>
    <thetext>Created attachment 129821
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569587</commentid>
    <comment_count>4</comment_count>
      <attachid>129821</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-02 05:27:42 -0800</bug_when>
    <thetext>Comment on attachment 129821
Patch

Clearing flags on attachment: 129821

Committed r109563: &lt;http://trac.webkit.org/changeset/109563&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569588</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-02 05:27:49 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570768</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-05 09:18:02 -0800</bug_when>
    <thetext>It seems like this changeset caused ~25% regression on Parser/html5-full-render.html:
http://webkit-perf.appspot.com/graph.html#tests=[[3068,2001,3001]]&amp;sel=1330690990310,1330703206709&amp;displayrange=7&amp;datatype=running
http://webkit-perf.appspot.com/graph.html#tests=[[3068,2001,3001],[3068,2001,173262]]&amp;sel=1330693225546.817,1330698934586.7354&amp;displayrange=7&amp;datatype=running</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570772</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-05 09:25:12 -0800</bug_when>
    <thetext>See https://bugs.webkit.org/show_bug.cgi?id=79963#c13 for further information.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571692</commentid>
    <comment_count>8</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-03-06 02:50:50 -0800</bug_when>
    <thetext>found the culprit -&gt; patch submitted in bug 80404</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129226</attachid>
            <date>2012-02-28 04:00:01 -0800</date>
            <delta_ts>2012-03-01 22:30:44 -0800</delta_ts>
            <desc>work-in-progress</desc>
            <filename>bug-79549-20120228205959.patch</filename>
            <type>text/plain</type>
            <size>21345</size>
            <attacher name="Roland Steiner">rolandsteiner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWQ4OTNjNTVjOTQ4MzJi
MzU1MDdlNDcwNDcxNTRmYTBmZTZhYWY3ZS4uMmM4ZjU4ZmNjODVmNWFjOTU3YjExMjRmZmFhN2Zk
NzAxMDlhNzQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUxIEBACiAyMDEyLTAyLTI4ICBSb2xh
bmQgU3RlaW5lciAgPHJvbGFuZHN0ZWluZXJAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFNjb3Bl
ZCBzdHlsZXNoZWV0cyBkb24ndCBhcHBlYXIgdG8gd29yayBpbiBTaGFkb3cgRE9NCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTU0OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9P
UFMhKQorCisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoUnVs
ZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpDU1NTdHlsZVNlbGVj
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmRldGVybWluZVNjb3Bl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnJ1bGVTZXRGb3JTY29wZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphcHBlbmRBdXRob3JTdHlsZXNo
ZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpzZXR1cFNjb3BlU3Rh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6cHVzaFNjb3BlKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6cG9w
U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6cHVzaFBhcmVudEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6cG9wUGFyZW50RWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpwdXNoUGFyZW50U2hh
ZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpwb3BQYXJlbnRT
aGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hdGNoU2Nv
cGVkQXV0aG9yUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y29s
bGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5oOgorICAgICAgICAoQ1NTU3R5bGVTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
dHlsZVNlbGVjdG9yOjpwdXNoU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxl
Y3Rvcjo6cG9wU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6TWF0
Y2hPcHRpb25zOjpNYXRjaE9wdGlvbnMpOgorICAgICAgICAoTWF0Y2hPcHRpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnNjb3BlU3RhY2tJc0NvbnNpc3RlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2NvcGVTdGFja0ZyYW1lOjpTY29w
ZVN0YWNrRnJhbWUpOgorICAgICAgICAoU2NvcGVTdGFja0ZyYW1lKToKKyAgICAgICAgKiBjc3Mv
U2VsZWN0b3JDaGVja2VyLmg6CisgICAgICAgIChTZWxlY3RvckNoZWNraW5nQ29udGV4dCk6Cisg
ICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTZWxlY3Rv
clBhcmVudFB1c2hlcjo6cHVzaCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNlbGVjdG9yUGFy
ZW50UHVzaGVyOjp+U3R5bGVTZWxlY3RvclBhcmVudFB1c2hlcik6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjpiZWdpblBhcnNpbmdDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4pOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmF0dGFjaCk6CisgICAgICAgICogZG9t
L1NoYWRvd1RyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6cmVjYWxjU2hh
ZG93VHJlZVN0eWxlKToKKworMjAxMi0wMi0yOCAgUm9sYW5kIFN0ZWluZXIgIDxyb2xhbmRzdGVp
bmVyQGNocm9taXVtLm9yZz4KKwogICAgICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRN
dWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZCBzaG91bGQgbm90IGJlIGlubGluZQogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk3NTMKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IDk3NGUyOTliN2ZhZjRmYWUxYWU0
YmFmNzdjZmM5ZmNkYmRlNzQ3MGYuLmNiNDk2ZDQ3Nzk1ODc2NGIwZjdjZWIyNWEzYzI2NmNiNjY2
NDQxNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTkyLDYg
KzkyLDcgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCiAjaW5jbHVkZSAiU2hhZG93RGF0YS5oIgorI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNp
bmNsdWRlICJTaGFkb3dWYWx1ZS5oIgogI2luY2x1ZGUgIlNrZXdUcmFuc2Zvcm1PcGVyYXRpb24u
aCIKICNpbmNsdWRlICJTdHlsZUNhY2hlZEltYWdlLmgiCkBAIC0yMjMsNyArMjI0LDcgQEAgcHVi
bGljOgogCiAgICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBPd25QdHI8VmVj
dG9yPFJ1bGVEYXRhPiA+ID4gQXRvbVJ1bGVNYXA7CiAKLSAgICB2b2lkIGFkZFJ1bGVzRnJvbVNo
ZWV0KENTU1N0eWxlU2hlZXQqLCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiwgQ1NTU3R5bGVT
ZWxlY3RvciogPSAwLCBjb25zdCBFbGVtZW50KiA9IDApOworICAgIHZvaWQgYWRkUnVsZXNGcm9t
U2hlZXQoQ1NTU3R5bGVTaGVldCosIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImLCBDU1NTdHls
ZVNlbGVjdG9yKiA9IDAsIGNvbnN0IENvbnRhaW5lck5vZGUqID0gMCk7CiAKICAgICB2b2lkIGFk
ZFN0eWxlUnVsZShDU1NTdHlsZVJ1bGUqLCBib29sIGNhblVzZUZhc3RDaGVja1NlbGVjdG9yID0g
dHJ1ZSk7CiAgICAgdm9pZCBhZGRSdWxlKENTU1N0eWxlUnVsZSosIENTU1NlbGVjdG9yKiwgYm9v
bCBjYW5Vc2VGYXN0Q2hlY2tTZWxlY3RvciA9IHRydWUpOwpAQCAtMzM5LDcgKzM0MCw3IEBAIENT
U1N0eWxlU2VsZWN0b3I6OkNTU1N0eWxlU2VsZWN0b3IoRG9jdW1lbnQqIGRvY3VtZW50LCBTdHls
ZVNoZWV0TGlzdCogc3R5bGVTaGVlCiAgICAgLCBtX2hhc1BlbmRpbmdTaGFkZXJzKGZhbHNlKQog
I2VuZGlmCiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkKLSAgICAsIG1fc2NvcGluZ0VsZW1lbnRT
dGFja1BhcmVudCgwKQorICAgICwgbV9zY29wZVN0YWNrUGFyZW50KDApCiAjZW5kaWYKIHsKICAg
ICBFbGVtZW50KiByb290ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOwpAQCAtNDQzLDcg
KzQ0NCw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6Y29sbGVjdEZlYXR1cmVzKCkKIH0KIAog
I2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpCi1jb25zdCBFbGVtZW50KiBDU1NTdHlsZVNlbGVjdG9y
OjpkZXRlcm1pbmVTY29waW5nRWxlbWVudChjb25zdCBDU1NTdHlsZVNoZWV0KiBzaGVldCkKK2Nv
bnN0IENvbnRhaW5lck5vZGUqIENTU1N0eWxlU2VsZWN0b3I6OmRldGVybWluZVNjb3BlKGNvbnN0
IENTU1N0eWxlU2hlZXQqIHNoZWV0KQogewogICAgIEFTU0VSVChzaGVldCk7CiAKQEAgLTQ1OCwx
NCArNDU5LDE4IEBAIGNvbnN0IEVsZW1lbnQqIENTU1N0eWxlU2VsZWN0b3I6OmRldGVybWluZVNj
b3BpbmdFbGVtZW50KGNvbnN0IENTU1N0eWxlU2hlZXQqIHNoCiAgICAgaWYgKCFzdHlsZUVsZW1l
bnQtPnNjb3BlZCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBzdHlsZUVsZW1l
bnQtPnBhcmVudEVsZW1lbnQoKTsKKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBzdHlsZUVs
ZW1lbnQtPnBhcmVudE5vZGUoKTsKKyAgICBpZiAoIXBhcmVudCkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICByZXR1cm4gKHBhcmVudC0+aXNFbGVtZW50Tm9kZSgpIHx8IHBhcmVudC0+aXNTaGFk
b3dSb290KCkpID8gcGFyZW50IDogMDsKIH0KIAotaW5saW5lIFJ1bGVTZXQqIENTU1N0eWxlU2Vs
ZWN0b3I6OnNjb3BlZFJ1bGVTZXRGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpIGNv
bnN0CitpbmxpbmUgUnVsZVNldCogQ1NTU3R5bGVTZWxlY3Rvcjo6cnVsZVNldEZvclNjb3BlKGNv
bnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKSBjb25zdAogewotICAgIGlmICghZWxlbWVudC0+aGFz
U2NvcGVkSFRNTFN0eWxlQ2hpbGQoKSkKKyAgICBpZiAoIXNjb3BlLT5oYXNTY29wZWRIVE1MU3R5
bGVDaGlsZCgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBTY29wZWRSdWxlU2V0TWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IG1fc2NvcGVkQXV0aG9yU3R5bGVzLmZpbmQoZWxlbWVudCk7CisgICAg
U2NvcGVkUnVsZVNldE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3Njb3BlZEF1dGhvclN0eWxl
cy5maW5kKHNjb3BlKTsKICAgICByZXR1cm4gaXQgIT0gbV9zY29wZWRBdXRob3JTdHlsZXMuZW5k
KCkgPyBpdC0+c2Vjb25kLmdldCgpIDogMDsgCiB9CiAjZW5kaWYKQEAgLTQ4MCw3ICs0ODUsNyBA
QCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGVuZEF1dGhvclN0eWxlc2hlZXRzKHVuc2lnbmVk
IGZpcnN0TmV3LCBjb25zdCBWZWN0b3I8UgogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IENTU1N0eWxlU2hlZXQqIGNzc1NoZWV0ID0gc3RhdGljX2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KHN0
eWxlc2hlZXRzW2ldLmdldCgpKTsKICNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQotICAgICAgICBj
b25zdCBFbGVtZW50KiBzY29wZSA9IGRldGVybWluZVNjb3BpbmdFbGVtZW50KGNzc1NoZWV0KTsK
KyAgICAgICAgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUgPSBkZXRlcm1pbmVTY29wZShjc3NT
aGVldCk7CiAgICAgICAgIGlmIChzY29wZSkgewogICAgICAgICAgICAgcGFpcjxTY29wZWRSdWxl
U2V0TWFwOjppdGVyYXRvciwgYm9vbD4gYWRkUmVzdWx0ID0gbV9zY29wZWRBdXRob3JTdHlsZXMu
YWRkKHNjb3BlLCBudWxscHRyKTsKICAgICAgICAgICAgIGlmIChhZGRSZXN1bHQuc2Vjb25kKQpA
QCAtNDk5LDY4ICs1MDQsODUgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBlbmRBdXRob3JT
dHlsZXNoZWV0cyh1bnNpZ25lZCBmaXJzdE5ldywgY29uc3QgVmVjdG9yPFIKIH0KIAogI2lmIEVO
QUJMRShTVFlMRV9TQ09QRUQpCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6OnNldHVwU2NvcGluZ0Vs
ZW1lbnRTdGFjayhjb25zdCBFbGVtZW50KiBwYXJlbnQpCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6
OnNldHVwU2NvcGVTdGFjayhjb25zdCBDb250YWluZXJOb2RlKiBwYXJlbnQpCiB7CiAgICAgLy8g
VGhlIHNjb3BpbmcgZWxlbWVudCBzdGFjayBzaG91bGRuJ3QgYmUgdXNlZCBpZiA8c3R5bGUgc2Nv
cGVkPiBpc24ndCB1c2VkIGFueXdoZXJlLgogICAgIEFTU0VSVCghbV9zY29wZWRBdXRob3JTdHls
ZXMuaXNFbXB0eSgpKTsKIAotICAgIG1fc2NvcGluZ0VsZW1lbnRTdGFjay5zaHJpbmsoMCk7Ci0g
ICAgZm9yICg7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPckhvc3RFbGVtZW50KCkp
IHsKLSAgICAgICAgUnVsZVNldCogcnVsZVNldCA9IHNjb3BlZFJ1bGVTZXRGb3JFbGVtZW50KHBh
cmVudCk7CisgICAgbV9zY29wZVN0YWNrLnNocmluaygwKTsKKyAgICBmb3IgKDsgcGFyZW50OyBw
YXJlbnQgPSBwYXJlbnQtPnBhcmVudE9ySG9zdE5vZGUoKSkgeworICAgICAgICBSdWxlU2V0KiBy
dWxlU2V0ID0gcnVsZVNldEZvclNjb3BlKHBhcmVudCk7CiAgICAgICAgIGlmIChydWxlU2V0KQot
ICAgICAgICAgICAgbV9zY29waW5nRWxlbWVudFN0YWNrLmFwcGVuZChTY29wZVN0YWNrRnJhbWUo
cGFyZW50LCBydWxlU2V0KSk7CisgICAgICAgICAgICBtX3Njb3BlU3RhY2suYXBwZW5kKFNjb3Bl
U3RhY2tGcmFtZShwYXJlbnQsIHJ1bGVTZXQpKTsKICAgICB9Ci0gICAgbV9zY29waW5nRWxlbWVu
dFN0YWNrLnJldmVyc2UoKTsKLSAgICBtX3Njb3BpbmdFbGVtZW50U3RhY2tQYXJlbnQgPSBwYXJl
bnQ7CisgICAgbV9zY29wZVN0YWNrLnJldmVyc2UoKTsKKyAgICBtX3Njb3BlU3RhY2tQYXJlbnQg
PSBwYXJlbnQ7CiB9Ci0jZW5kaWYKIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpwdXNoUGFyZW50
KEVsZW1lbnQqIHBhcmVudCkKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6cHVzaFNjb3BlKGNvbnN0
IENvbnRhaW5lck5vZGUqIHNjb3BlLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZVBhcmVudCkK
IHsKLSAgICBjb25zdCBFbGVtZW50KiBwYXJlbnRzUGFyZW50ID0gcGFyZW50LT5wYXJlbnRPckhv
c3RFbGVtZW50KCk7Ci0gICAgLy8gV2UgYXJlIG5vdCBhbHdheXMgaW52b2tlZCBjb25zaXN0ZW50
bHkuIEZvciBleGFtcGxlLCBzY3JpcHQgZXhlY3V0aW9uIGNhbiBjYXVzZSB1cyB0byBlbnRlcgot
ICAgIC8vIHN0eWxlIHJlY2FsYyBpbiB0aGUgbWlkZGxlIG9mIHRyZWUgYnVpbGRpbmcuIFdlIG1h
eSBhbHNvIGJlIGludm9rZWQgZnJvbSBzb21ld2hlcmUgd2l0aGluIHRoZSB0cmVlLgotICAgIC8v
IFJlc2V0IHRoZSBzdGFjayBpbiB0aGlzIGNhc2UsIG9yIGlmIHdlIHNlZSBhIG5ldyByb290IGVs
ZW1lbnQuCi0gICAgLy8gT3RoZXJ3aXNlIGp1c3QgcHVzaCB0aGUgbmV3IHBhcmVudC4KLSAgICBp
ZiAoIXBhcmVudHNQYXJlbnQgfHwgbV9jaGVja2VyLnBhcmVudFN0YWNrSXNFbXB0eSgpKQotICAg
ICAgICBtX2NoZWNrZXIuc2V0dXBQYXJlbnRTdGFjayhwYXJlbnQpOwotICAgIGVsc2UKLSAgICAg
ICAgbV9jaGVja2VyLnB1c2hQYXJlbnQocGFyZW50KTsKLQotI2lmIEVOQUJMRShTVFlMRV9TQ09Q
RUQpCiAgICAgLy8gU2hvcnRjdXQ6IERvbid0IGJvdGhlciB3aXRoIHRoZSBzY29waW5nIGVsZW1l
bnQgc3RhY2sgaWYgPHN0eWxlIHNjb3BlZD4gaXNuJ3QgdXNlZCBhbnl3aGVyZS4KICAgICBpZiAo
bV9zY29wZWRBdXRob3JTdHlsZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVCghbV9zY29w
aW5nRWxlbWVudFN0YWNrUGFyZW50KTsKLSAgICAgICAgQVNTRVJUKG1fc2NvcGluZ0VsZW1lbnRT
dGFjay5pc0VtcHR5KCkpOworICAgICAgICBBU1NFUlQoIW1fc2NvcGVTdGFja1BhcmVudCk7Cisg
ICAgICAgIEFTU0VSVChtX3Njb3BlU3RhY2suaXNFbXB0eSgpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAvLyBJbiBzb21lIHdhY2t5IGNhc2VzIGR1cmluZyBzdHlsZSByZXNvbHZlIHdl
IG1heSBnZXQgaW52b2tlZCBmb3IgcmFuZG9tIGVsZW1lbnRzLgogICAgIC8vIFJlY3JlYXRlIHRo
ZSB3aG9sZSBzY29waW5nIGVsZW1lbnQgc3RhY2sgaW4gc3VjaCBjYXNlcy4KLSAgICBpZiAoIXNj
b3BpbmdFbGVtZW50U3RhY2tJc0NvbnNpc3RlbnQocGFyZW50c1BhcmVudCkpIHsKLSAgICAgICAg
c2V0dXBTY29waW5nRWxlbWVudFN0YWNrKHBhcmVudCk7CisgICAgaWYgKCFzY29wZVN0YWNrSXND
b25zaXN0ZW50KHNjb3BlUGFyZW50KSkgeworICAgICAgICBzZXR1cFNjb3BlU3RhY2soc2NvcGUp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIC8vIE90aGVyd2lzZSBqdXN0IHB1c2ggdGhl
IHBhcmVudCBvbnRvIHRoZSBzdGFjay4KLSAgICBSdWxlU2V0KiBydWxlU2V0ID0gc2NvcGVkUnVs
ZVNldEZvckVsZW1lbnQocGFyZW50KTsKKyAgICBSdWxlU2V0KiBydWxlU2V0ID0gcnVsZVNldEZv
clNjb3BlKHNjb3BlKTsKICAgICBpZiAocnVsZVNldCkKLSAgICAgICAgbV9zY29waW5nRWxlbWVu
dFN0YWNrLmFwcGVuZChTY29wZVN0YWNrRnJhbWUocGFyZW50LCBydWxlU2V0KSk7Ci0gICAgbV9z
Y29waW5nRWxlbWVudFN0YWNrUGFyZW50ID0gcGFyZW50OworICAgICAgICBtX3Njb3BlU3RhY2su
YXBwZW5kKFNjb3BlU3RhY2tGcmFtZShzY29wZSwgcnVsZVNldCkpOworICAgIG1fc2NvcGVTdGFj
a1BhcmVudCA9IHNjb3BlOworfQorCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6OnBvcFNjb3BlKGNv
bnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKQoreworICAgIC8vIE9ubHkgYm90aGVyIHRvIHVwZGF0
ZSB0aGUgc2NvcGluZyBlbGVtZW50IHN0YWNrIGlmIGl0IGlzIGNvbnNpc3RlbnQuCisgICAgaWYg
KHNjb3BlU3RhY2tJc0NvbnNpc3RlbnQoc2NvcGUpKSB7CisgICAgICAgIG1fc2NvcGVTdGFjay5y
ZW1vdmVMYXN0KCk7CisgICAgICAgIG1fc2NvcGVTdGFja1BhcmVudCA9IHNjb3BlLT5wYXJlbnRP
ckhvc3ROb2RlKCk7CisgICAgfQorfQogI2VuZGlmCisKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
cHVzaFBhcmVudEVsZW1lbnQoRWxlbWVudCogcGFyZW50KQoreworICAgIGNvbnN0IENvbnRhaW5l
ck5vZGUqIHBhcmVudHNQYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAv
LyBXZSBhcmUgbm90IGFsd2F5cyBpbnZva2VkIGNvbnNpc3RlbnRseS4gRm9yIGV4YW1wbGUsIHNj
cmlwdCBleGVjdXRpb24gY2FuIGNhdXNlIHVzIHRvIGVudGVyCisgICAgLy8gc3R5bGUgcmVjYWxj
IGluIHRoZSBtaWRkbGUgb2YgdHJlZSBidWlsZGluZy4gV2UgbWF5IGFsc28gYmUgaW52b2tlZCBm
cm9tIHNvbWV3aGVyZSB3aXRoaW4gdGhlIHRyZWUuCisgICAgLy8gUmVzZXQgdGhlIHN0YWNrIGlu
IHRoaXMgY2FzZSwgb3IgaWYgd2Ugc2VlIGEgbmV3IHJvb3QgZWxlbWVudC4KKyAgICAvLyBPdGhl
cndpc2UganVzdCBwdXNoIHRoZSBuZXcgcGFyZW50LgorICAgIGlmICghcGFyZW50c1BhcmVudCB8
fCBtX2NoZWNrZXIucGFyZW50U3RhY2tJc0VtcHR5KCkpCisgICAgICAgIG1fY2hlY2tlci5zZXR1
cFBhcmVudFN0YWNrKHBhcmVudCk7CisgICAgZWxzZQorICAgICAgICBtX2NoZWNrZXIucHVzaFBh
cmVudChwYXJlbnQpOworICAgIHB1c2hTY29wZShwYXJlbnQsIHBhcmVudHNQYXJlbnQpOwogfQog
Ci12b2lkIENTU1N0eWxlU2VsZWN0b3I6OnBvcFBhcmVudChFbGVtZW50KiBwYXJlbnQpCit2b2lk
IENTU1N0eWxlU2VsZWN0b3I6OnBvcFBhcmVudEVsZW1lbnQoRWxlbWVudCogcGFyZW50KQogewog
ICAgIC8vIE5vdGUgdGhhdCB3ZSBtYXkgZ2V0IGludm9rZWQgZm9yIHNvbWUgcmFuZG9tIGVsZW1l
bnRzIGluIHNvbWUgd2Fja3kgY2FzZXMgZHVyaW5nIHN0eWxlIHJlc29sdmUuCiAgICAgLy8gUGF1
c2UgbWFpbnRhaW5pbmcgdGhlIHN0YWNrIGluIHRoaXMgY2FzZS4KICAgICBpZiAobV9jaGVja2Vy
LnBhcmVudFN0YWNrSXNDb25zaXN0ZW50KHBhcmVudCkpCiAgICAgICAgIG1fY2hlY2tlci5wb3BQ
YXJlbnQoKTsKLSNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQotICAgIC8vIE9ubHkgYm90aGVyIHRv
IHVwZGF0ZSB0aGUgc2NvcGluZyBlbGVtZW50IHN0YWNrIGlmIGl0IGlzIGNvbnNpc3RlbnQuCi0g
ICAgaWYgKHNjb3BpbmdFbGVtZW50U3RhY2tJc0NvbnNpc3RlbnQocGFyZW50KSkgewotICAgICAg
ICBtX3Njb3BpbmdFbGVtZW50U3RhY2sucmVtb3ZlTGFzdCgpOwotICAgICAgICBtX3Njb3BpbmdF
bGVtZW50U3RhY2tQYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9ySG9zdEVsZW1lbnQoKTsKLSAgICB9
Ci0jZW5kaWYKKyAgICBwb3BTY29wZShwYXJlbnQpOworfQorCit2b2lkIENTU1N0eWxlU2VsZWN0
b3I6OnB1c2hQYXJlbnRTaGFkb3dSb290KGNvbnN0IFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QpCit7
CisgICAgQVNTRVJUKHNoYWRvd1Jvb3QtPmhvc3QoKSk7CisgICAgcHVzaFNjb3BlKHNoYWRvd1Jv
b3QsIHNoYWRvd1Jvb3QtPmhvc3QoKSk7Cit9CisKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6cG9w
UGFyZW50U2hhZG93Um9vdChjb25zdCBTaGFkb3dSb290KiBzaGFkb3dSb290KQoreworICAgIEFT
U0VSVChzaGFkb3dSb290LT5ob3N0KCkpOworICAgIHBvcFNjb3BlKHNoYWRvd1Jvb3QpOwogfQog
CiAvLyBUaGlzIGlzIGEgc2ltcGxpZmllZCBzdHlsZSBzZXR0aW5nIGZ1bmN0aW9uIGZvciBrZXlm
cmFtZSBzdHlsZXMKQEAgLTg0MSwxNyArODYzLDE3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
bWF0Y2hTY29wZWRBdXRob3JSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVF
CiAgICAgTWF0Y2hPcHRpb25zIG9wdGlvbnMoaW5jbHVkZUVtcHR5UnVsZXMpOwogCiAgICAgLy8g
TWF0Y2ggc2NvcGVkIGF1dGhvciBydWxlcyBieSB0cmF2ZXJzaW5nIHRoZSBzY29wZWQgZWxlbWVu
dCBzdGFjayAocmVidWlsZCBpdCBpZiBpdCBnb3QgaW5jb25zaXN0ZW50KS4KLSAgICBjb25zdCBF
bGVtZW50KiBwYXJlbnQgPSBtX2VsZW1lbnQtPnBhcmVudE9ySG9zdEVsZW1lbnQoKTsKLSAgICBp
ZiAoIXNjb3BpbmdFbGVtZW50U3RhY2tJc0NvbnNpc3RlbnQocGFyZW50KSkKLSAgICAgICAgc2V0
dXBTY29waW5nRWxlbWVudFN0YWNrKHBhcmVudCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IG1fc2Nv
cGluZ0VsZW1lbnRTdGFjay5zaXplKCk7IGk7IC0taSkgewotICAgICAgICBjb25zdCBTY29wZVN0
YWNrRnJhbWUmIGZyYW1lID0gbV9zY29waW5nRWxlbWVudFN0YWNrW2kgLSAxXTsKLSAgICAgICAg
b3B0aW9ucy5zY29wZSA9IGZyYW1lLm1fZWxlbWVudDsKKyAgICBjb25zdCBDb250YWluZXJOb2Rl
KiBwYXJlbnQgPSBtX2VsZW1lbnQtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICBpZiAoIXNjb3Bl
U3RhY2tJc0NvbnNpc3RlbnQocGFyZW50KSkKKyAgICAgICAgc2V0dXBTY29wZVN0YWNrKHBhcmVu
dCk7CisgICAgZm9yIChzaXplX3QgaSA9IG1fc2NvcGVTdGFjay5zaXplKCk7IGk7IC0taSkgewor
ICAgICAgICBjb25zdCBTY29wZVN0YWNrRnJhbWUmIGZyYW1lID0gbV9zY29wZVN0YWNrW2kgLSAx
XTsKKyAgICAgICAgb3B0aW9ucy5zY29wZSA9IGZyYW1lLm1fc2NvcGU7CiAgICAgICAgIGNvbGxl
Y3RNYXRjaGluZ1J1bGVzKGZyYW1lLm1fcnVsZVNldCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhv
clJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOwogICAgICAgICBj
b2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihmcmFtZS5tX3J1bGVTZXQsIHJlc3VsdC5yYW5n
ZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlLCBvcHRpb25z
KTsKICAgICB9CiAgICAgLy8gQWxzbyBpbmNsdWRlIHRoZSBjdXJyZW50IGVsZW1lbnQuCi0gICAg
UnVsZVNldCogcnVsZVNldCA9IHNjb3BlZFJ1bGVTZXRGb3JFbGVtZW50KG1fZWxlbWVudCk7Cisg
ICAgUnVsZVNldCogcnVsZVNldCA9IHJ1bGVTZXRGb3JTY29wZShtX2VsZW1lbnQpOwogICAgIGlm
IChydWxlU2V0KSB7CiAgICAgICAgIG9wdGlvbnMuc2NvcGUgPSBtX2VsZW1lbnQ7CiAgICAgICAg
IGNvbGxlY3RNYXRjaGluZ1J1bGVzKHJ1bGVTZXQsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JS
dWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlLCBvcHRpb25zKTsKQEAgLTIxMDIsNyAr
MjEyNCw3IEBAIFBhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IENTU1N0eWxlU2VsZWN0b3I6OnBzZXVk
b1N0eWxlUnVsZXNGb3JFbGVtZW50KEVsZW1lbnQqIGUsCiAgICAgcmV0dXJuIG1fcnVsZUxpc3Qu
cmVsZWFzZSgpOwogfQogCi1pbmxpbmUgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjaGVja1NlbGVj
dG9yKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSwgY29uc3QgRWxlbWVudCogc2NvcGUpCitpbmxp
bmUgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjaGVja1NlbGVjdG9yKGNvbnN0IFJ1bGVEYXRhJiBy
dWxlRGF0YSwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUpCiB7CiAgICAgbV9keW5hbWljUHNl
dWRvID0gTk9QU0VVRE87CiAgICAgbV9jaGVja2VyLmNsZWFySGFzVW5rbm93blBzZXVkb0VsZW1l
bnRzKCk7CkBAIC0yMzc0LDcgKzIzOTYsNyBAQCB2b2lkIFJ1bGVTZXQ6OmFkZFJlZ2lvblJ1bGUo
V2ViS2l0Q1NTUmVnaW9uUnVsZSogcnVsZSkKICAgICBtX3JlZ2lvblNlbGVjdG9yc0FuZFJ1bGVT
ZXRzLmFwcGVuZChSdWxlU2V0U2VsZWN0b3JQYWlyKHJ1bGUtPnNlbGVjdG9yTGlzdCgpLmZpcnN0
KCksIHJlZ2lvblJ1bGVTZXQpKTsKIH0KIAotdm9pZCBSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVl
dChDU1NTdHlsZVNoZWV0KiBzaGVldCwgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgbWVkaXVt
LCBDU1NTdHlsZVNlbGVjdG9yKiBzdHlsZVNlbGVjdG9yLCBjb25zdCBFbGVtZW50KiBzY29wZSkK
K3ZvaWQgUnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQoQ1NTU3R5bGVTaGVldCogc2hlZXQsIGNv
bnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIG1lZGl1bSwgQ1NTU3R5bGVTZWxlY3Rvciogc3R5bGVT
ZWxlY3RvciwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUpCiB7CiAgICAgQVNTRVJUKHNoZWV0
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKaW5kZXggNGRiN2YyMjZkNzA0
MTU2NWVlOTA0ZGVmNWQxNmZlMWYwNWVkZjJlMi4uNjk2MjIwZTZhYmRiY2QyOWJlYzBhMDU1ZTIw
YTliMTgxZTE3MmNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCkBAIC0x
MDcsOCArMTA3LDEwIEBAIHB1YmxpYzoKICAgICB+Q1NTU3R5bGVTZWxlY3RvcigpOwogCiAgICAg
Ly8gVXNpbmcgdGhlc2UgZHVyaW5nIHRyZWUgd2FsayB3aWxsIGFsbG93IHN0eWxlIHNlbGVjdG9y
IHRvIG9wdGltaXplIGNoaWxkIGFuZCBkZXNjZW5kYW50IHNlbGVjdG9yIGxvb2t1cHMuCi0gICAg
dm9pZCBwdXNoUGFyZW50KEVsZW1lbnQqIHBhcmVudCk7Ci0gICAgdm9pZCBwb3BQYXJlbnQoRWxl
bWVudCogcGFyZW50KTsKKyAgICB2b2lkIHB1c2hQYXJlbnRFbGVtZW50KEVsZW1lbnQqKTsKKyAg
ICB2b2lkIHBvcFBhcmVudEVsZW1lbnQoRWxlbWVudCopOworICAgIHZvaWQgcHVzaFBhcmVudFNo
YWRvd1Jvb3QoY29uc3QgU2hhZG93Um9vdCopOworICAgIHZvaWQgcG9wUGFyZW50U2hhZG93Um9v
dChjb25zdCBTaGFkb3dSb290Kik7CiAKICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHls
ZUZvckVsZW1lbnQoRWxlbWVudCosIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IDAsIGJvb2wg
YWxsb3dTaGFyaW5nID0gdHJ1ZSwgYm9vbCByZXNvbHZlRm9yUm9vdERlZmF1bHQgPSBmYWxzZSwg
UmVuZGVyUmVnaW9uKiByZWdpb25Gb3JTdHlsaW5nID0gMCk7CiAKQEAgLTE1MCw2ICsxNTIsMTQg
QEAgcHJpdmF0ZToKIAogICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yS2V5ZnJh
bWUoY29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUqLCBLZXlm
cmFtZVZhbHVlJik7CiAKKyNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQorICAgIHZvaWQgcHVzaFNj
b3BlKGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29w
ZVBhcmVudCk7CisgICAgdm9pZCBwb3BTY29wZShjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSk7
CisjZWxzZQorICAgIHZvaWQgcHVzaFNjb3BlKGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlLCBj
b25zdCBDb250YWluZXJOb2RlKiBzY29wZVBhcmVudCkgeyB9CisgICAgdm9pZCBwb3BTY29wZShj
b25zdCBDb250YWluZXJOb2RlKiBzY29wZSkgeyB9CisjZW5kaWYKKwogcHVibGljOgogICAgIC8v
IFRoZXNlIG1ldGhvZHMgd2lsbCBnaXZlIGJhY2sgdGhlIHNldCBvZiBydWxlcyB0aGF0IG1hdGNo
ZWQgZm9yIGEgZ2l2ZW4gZWxlbWVudCAob3IgYSBwc2V1ZG8tZWxlbWVudCkuCiAgICAgZW51bSBD
U1NSdWxlRmlsdGVyIHsKQEAgLTI4Niw4ICsyOTYsOCBAQCBwcml2YXRlOgogICAgIH07CiAKICAg
ICBzdHJ1Y3QgTWF0Y2hPcHRpb25zIHsKLSAgICAgICAgTWF0Y2hPcHRpb25zKGJvb2wgaW5jbHVk
ZUVtcHR5UnVsZXMsIGNvbnN0IEVsZW1lbnQqIHNjb3BlID0gMCkgOiBzY29wZShzY29wZSksIGlu
Y2x1ZGVFbXB0eVJ1bGVzKGluY2x1ZGVFbXB0eVJ1bGVzKSB7IH0KLSAgICAgICAgY29uc3QgRWxl
bWVudCogc2NvcGU7CisgICAgICAgIE1hdGNoT3B0aW9ucyhib29sIGluY2x1ZGVFbXB0eVJ1bGVz
LCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSA9IDApIDogc2NvcGUoc2NvcGUpLCBpbmNsdWRl
RW1wdHlSdWxlcyhpbmNsdWRlRW1wdHlSdWxlcykgeyB9CisgICAgICAgIGNvbnN0IENvbnRhaW5l
ck5vZGUqIHNjb3BlOwogICAgICAgICBib29sIGluY2x1ZGVFbXB0eVJ1bGVzOwogICAgIH07CiAK
QEAgLTMwNiw3ICszMTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc29ydE1hdGNoZWRSdWxlcygp
OwogICAgIHZvaWQgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKE1hdGNoUmVzdWx0Jik7CiAK
LSAgICBib29sIGNoZWNrU2VsZWN0b3IoY29uc3QgUnVsZURhdGEmLCBjb25zdCBFbGVtZW50KiBz
Y29wZSA9IDApOworICAgIGJvb2wgY2hlY2tTZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYsIGNvbnN0
IENvbnRhaW5lck5vZGUqIHNjb3BlID0gMCk7CiAgICAgYm9vbCBjaGVja1JlZ2lvblNlbGVjdG9y
KENTU1NlbGVjdG9yKiByZWdpb25TZWxlY3RvciwgRWxlbWVudCogcmVnaW9uRWxlbWVudCk7CiAg
ICAgdm9pZCBhcHBseU1hdGNoZWRQcm9wZXJ0aWVzKGNvbnN0IE1hdGNoUmVzdWx0Jik7CiAgICAg
dGVtcGxhdGUgPGJvb2wgZmlyc3RQYXNzPgpAQCAtNDQ5LDI5ICs0NTksMjkgQEAgcHJpdmF0ZToK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkKLSAgICBzdGF0aWMgY29uc3QgRWxl
bWVudCogZGV0ZXJtaW5lU2NvcGluZ0VsZW1lbnQoY29uc3QgQ1NTU3R5bGVTaGVldCopOworICAg
IHN0YXRpYyBjb25zdCBDb250YWluZXJOb2RlKiBkZXRlcm1pbmVTY29wZShjb25zdCBDU1NTdHls
ZVNoZWV0Kik7CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgRWxlbWVudCosIE93blB0cjxS
dWxlU2V0PiA+IFNjb3BlZFJ1bGVTZXRNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IENv
bnRhaW5lck5vZGUqLCBPd25QdHI8UnVsZVNldD4gPiBTY29wZWRSdWxlU2V0TWFwOwogCi0gICAg
UnVsZVNldCogc2NvcGVkUnVsZVNldEZvckVsZW1lbnQoY29uc3QgRWxlbWVudCopIGNvbnN0Owor
ICAgIFJ1bGVTZXQqIHJ1bGVTZXRGb3JTY29wZShjb25zdCBDb250YWluZXJOb2RlKikgY29uc3Q7
CiAKLSAgICB2b2lkIHNldHVwU2NvcGluZ0VsZW1lbnRTdGFjayhjb25zdCBFbGVtZW50Kik7Ci0g
ICAgYm9vbCBzY29waW5nRWxlbWVudFN0YWNrSXNDb25zaXN0ZW50KGNvbnN0IEVsZW1lbnQqIHBh
cmVudCkgY29uc3QgeyByZXR1cm4gcGFyZW50ICYmIHBhcmVudCA9PSBtX3Njb3BpbmdFbGVtZW50
U3RhY2tQYXJlbnQ7IH0KKyAgICB2b2lkIHNldHVwU2NvcGVTdGFjayhjb25zdCBDb250YWluZXJO
b2RlKik7CisgICAgYm9vbCBzY29wZVN0YWNrSXNDb25zaXN0ZW50KGNvbnN0IENvbnRhaW5lck5v
ZGUqIHBhcmVudCkgY29uc3QgeyByZXR1cm4gcGFyZW50ICYmIHBhcmVudCA9PSBtX3Njb3BlU3Rh
Y2tQYXJlbnQ7IH0KIAogICAgIFNjb3BlZFJ1bGVTZXRNYXAgbV9zY29wZWRBdXRob3JTdHlsZXM7
CiAgICAgCiAgICAgc3RydWN0IFNjb3BlU3RhY2tGcmFtZSB7Ci0gICAgICAgIFNjb3BlU3RhY2tG
cmFtZSgpIDogbV9lbGVtZW50KDApLCBtX3J1bGVTZXQoMCkgeyB9Ci0gICAgICAgIFNjb3BlU3Rh
Y2tGcmFtZShjb25zdCBFbGVtZW50KiBlbGVtZW50LCBSdWxlU2V0KiBydWxlU2V0KSA6IG1fZWxl
bWVudChlbGVtZW50KSwgbV9ydWxlU2V0KHJ1bGVTZXQpIHsgfQotICAgICAgICBjb25zdCBFbGVt
ZW50KiBtX2VsZW1lbnQ7CisgICAgICAgIFNjb3BlU3RhY2tGcmFtZSgpIDogbV9zY29wZSgwKSwg
bV9ydWxlU2V0KDApIHsgfQorICAgICAgICBTY29wZVN0YWNrRnJhbWUoY29uc3QgQ29udGFpbmVy
Tm9kZSogc2NvcGUsIFJ1bGVTZXQqIHJ1bGVTZXQpIDogbV9zY29wZShzY29wZSksIG1fcnVsZVNl
dChydWxlU2V0KSB7IH0KKyAgICAgICAgY29uc3QgQ29udGFpbmVyTm9kZSogbV9zY29wZTsKICAg
ICAgICAgUnVsZVNldCogbV9ydWxlU2V0OwogICAgIH07CiAgICAgLy8gVmVjdG9yICh1c2VkIGFz
IHN0YWNrKSB0aGF0IGtlZXBzIHRyYWNrIG9mIHNjb3BpbmcgZWxlbWVudHMgKGkuZS4sIGVsZW1l
bnRzIHdpdGggYSA8c3R5bGUgc2NvcGVkPiBjaGlsZCkKICAgICAvLyBlbmNvdW50ZXJlZCBkdXJp
bmcgdHJlZSBpdGVyYXRpb24gZm9yIHN0eWxlIHJlc29sdXRpb24uCi0gICAgVmVjdG9yPFNjb3Bl
U3RhY2tGcmFtZT4gbV9zY29waW5nRWxlbWVudFN0YWNrOworICAgIFZlY3RvcjxTY29wZVN0YWNr
RnJhbWU+IG1fc2NvcGVTdGFjazsKICAgICAvLyBFbGVtZW50IGxhc3Qgc2VlbiBhcyBwYXJlbnQg
ZWxlbWVudCB3aGVuIHVwZGF0aW5nIG1fc2NvcGluZ0VsZW1lbnRTdGFjay4KICAgICAvLyBUaGlz
IGlzIHVzZWQgdG8gZGVjaWRlIHdoZXRoZXIgbV9zY29waW5nRWxlbWVudFN0YWNrIGlzIGNvbnNp
c3RlbnQsIHNlcGFyYXRlbHkgZnJvbSBTZWxlY3RvckNoZWNrZXI6Om1fcGFyZW50U3RhY2suCi0g
ICAgY29uc3QgRWxlbWVudCogbV9zY29waW5nRWxlbWVudFN0YWNrUGFyZW50OworICAgIGNvbnN0
IENvbnRhaW5lck5vZGUqIG1fc2NvcGVTdGFja1BhcmVudDsKICNlbmRpZgogCiAgICAgZnJpZW5k
IGNsYXNzIENTU1N0eWxlQXBwbHlQcm9wZXJ0eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TZWxlY3RvckNoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNr
ZXIuaAppbmRleCA3ZTgwODA4ZGQzYjZiZDhiZjRhZjc1NDQ2MmRjYjM5YTFiYWU4MTI1Li4yMmIx
MjdmMDIxYTc1N2EyNTY1MzY3ZmVjYzQ2MDUxZDA1MWZjNTkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yQ2hlY2tlci5oCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKIAogICAgICAgICBDU1NT
ZWxlY3Rvciogc2VsZWN0b3I7CiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQ7Ci0gICAgICAgIGNv
bnN0IEVsZW1lbnQqIHNjb3BlOworICAgICAgICBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZTsK
ICAgICAgICAgVmlzaXRlZE1hdGNoVHlwZSB2aXNpdGVkTWF0Y2hUeXBlOwogICAgICAgICBSZW5k
ZXJTdHlsZSogZWxlbWVudFN0eWxlOwogICAgICAgICBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVu
dFN0eWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDVjZjcwYjU5MjZmZDExMGI1ZmUwMjRh
YmIyYTBmZjFhM2ZlNzU2MjEuLmFmZTEyZDA2NjBhMGJkYmJkYmJmMzdlZjExOGM2ZjMwYjJhNzQ0
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogICAg
ICAgICBpZiAobV9wdXNoZWRTdHlsZVNlbGVjdG9yKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBtX3B1c2hlZFN0eWxlU2VsZWN0b3IgPSBtX3BhcmVudC0+ZG9jdW1lbnQoKS0+c3R5bGVT
ZWxlY3RvcigpOwotICAgICAgICBtX3B1c2hlZFN0eWxlU2VsZWN0b3ItPnB1c2hQYXJlbnQobV9w
YXJlbnQpOworICAgICAgICBtX3B1c2hlZFN0eWxlU2VsZWN0b3ItPnB1c2hQYXJlbnRFbGVtZW50
KG1fcGFyZW50KTsKICAgICB9CiAgICAgflN0eWxlU2VsZWN0b3JQYXJlbnRQdXNoZXIoKSAKICAg
ICB7CkBAIC0xMDcsNyArMTA3LDcgQEAgcHVibGljOgogICAgICAgICBpZiAobV9wdXNoZWRTdHls
ZVNlbGVjdG9yICE9IG1fcGFyZW50LT5kb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbV9wdXNoZWRTdHlsZVNlbGVjdG9yLT5wb3BQYXJl
bnQobV9wYXJlbnQpOyAKKyAgICAgICAgbV9wdXNoZWRTdHlsZVNlbGVjdG9yLT5wb3BQYXJlbnRF
bGVtZW50KG1fcGFyZW50KTsgCiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTMyMyw3ICsxMzIzLDcg
QEAgdm9pZCBFbGVtZW50OjpiZWdpblBhcnNpbmdDaGlsZHJlbigpCiAgICAgY2xlYXJJc1BhcnNp
bmdDaGlsZHJlbkZpbmlzaGVkKCk7CiAgICAgQ1NTU3R5bGVTZWxlY3Rvciogc3R5bGVTZWxlY3Rv
ciA9IGRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3JJZkV4aXN0cygpOwogICAgIGlmIChzdHlsZVNl
bGVjdG9yICYmIGF0dGFjaGVkKCkpCi0gICAgICAgIHN0eWxlU2VsZWN0b3ItPnB1c2hQYXJlbnQo
dGhpcyk7CisgICAgICAgIHN0eWxlU2VsZWN0b3ItPnB1c2hQYXJlbnRFbGVtZW50KHRoaXMpOwog
fQogCiB2b2lkIEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCkBAIC0xMzMyLDcgKzEz
MzIsNyBAQCB2b2lkIEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCiAgICAgc2V0SXNQ
YXJzaW5nQ2hpbGRyZW5GaW5pc2hlZCgpOwogICAgIGNoZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdl
cyh0aGlzLCByZW5kZXJTdHlsZSgpLCB0cnVlLCBsYXN0Q2hpbGQoKSwgMCwgMCk7CiAgICAgaWYg
KENTU1N0eWxlU2VsZWN0b3IqIHN0eWxlU2VsZWN0b3IgPSBkb2N1bWVudCgpLT5zdHlsZVNlbGVj
dG9ySWZFeGlzdHMoKSkKLSAgICAgICAgc3R5bGVTZWxlY3Rvci0+cG9wUGFyZW50KHRoaXMpOwor
ICAgICAgICBzdHlsZVNlbGVjdG9yLT5wb3BQYXJlbnRFbGVtZW50KHRoaXMpOwogfQogCiAjaWZu
ZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IGNiOWQ4YzMwY2Q4MGI5
OTRkMjJmMTI0ZWU1YTEwODFkZTc0NDI4NGEuLmRhOGE5NDAxN2I3ODI0YjA1Y2Y2OTdjMWJmZGNk
OTMxMzJiN2NlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAgLTI3LDYgKzI3LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAKKyNpbmNs
dWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTENvbnRlbnRFbGVtZW50LmgiCkBAIC0xOTIsNyAr
MTkzLDExIEBAIHZvaWQgU2hhZG93Um9vdDo6YXR0YWNoKCkKICAgICAvLyBGSVhNRTogVGhpcyBh
c3NlcnRpb24gYnJlYWtzIGlmIG11bHRpcGxlIHNoYWRvdyByb290cyBhcmUgYmVpbmcgYXR0YWNo
ZWQuCiAgICAgLy8gU2hhZG93VHJlZSBzaG91bGQgaGF2ZSByZXNwb25zaWJpbGl0eSBvZiBzaWRl
IGVmZmVjdCBvZiBzZWxlY3RvciBpbiBhdHRhY2hpbmcvZGV0YWNoaW5nLgogICAgIEFTU0VSVCgh
dHJlZSgpLT5zZWxlY3RvcigpIHx8ICF0cmVlKCktPnNlbGVjdG9yKCktPmhhc0NhbmRpZGF0ZXMo
KSk7CisKKyAgICBDU1NTdHlsZVNlbGVjdG9yKiBzdHlsZVNlbGVjdG9yID0gZG9jdW1lbnQoKS0+
c3R5bGVTZWxlY3RvcigpOworICAgIHN0eWxlU2VsZWN0b3ItPnB1c2hQYXJlbnRTaGFkb3dSb290
KHRoaXMpOwogICAgIERvY3VtZW50RnJhZ21lbnQ6OmF0dGFjaCgpOworICAgIHN0eWxlU2VsZWN0
b3ItPnBvcFBhcmVudFNoYWRvd1Jvb3QodGhpcyk7CiAgICAgaWYgKEhUTUxDb250ZW50U2VsZWN0
b3IqIHNlbGVjdG9yID0gdHJlZSgpLT5zZWxlY3RvcigpKQogICAgICAgICBzZWxlY3Rvci0+ZGlk
U2VsZWN0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAKaW5kZXggM2VmMjUxYjFkNDQ0
Y2QxNWZlNGE0NDA4ZTkzMDU3NzczOWYzZTc3YS4uODVlYTVjZTEwOTkzM2ZjYWZhNjllMWI3ZDI5
ZTBkY2NkNDc4NTY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmNwcApAQCAtMjcsNiArMjcs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYWRvd1RyZWUuaCIKIAorI2lu
Y2x1ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCkBAIC0yMjYs
MTIgKzIyNywxNiBAQCB2b2lkIFNoYWRvd1RyZWU6OnJlY2FsY1NoYWRvd1RyZWVTdHlsZShOb2Rl
OjpTdHlsZUNoYW5nZSBjaGFuZ2UpCiAgICAgaWYgKG5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5B
bmRTaGFkb3coKSkKICAgICAgICAgcmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKICAg
ICBlbHNlIHsKKyAgICAgICAgQ1NTU3R5bGVTZWxlY3Rvciogc3R5bGVTZWxlY3RvciA9IHlvdW5n
ZXN0LT5kb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCk7CisKKyAgICAgICAgc3R5bGVTZWxlY3Rv
ci0+cHVzaFBhcmVudFNoYWRvd1Jvb3QoeW91bmdlc3QpOwogICAgICAgICBmb3IgKE5vZGUqIG4g
PSB5b3VuZ2VzdC0+Zmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+bmV4dFNpYmxpbmcoKSkgewogICAg
ICAgICAgICAgaWYgKG4tPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxFbGVtZW50Kj4obiktPnJlY2FsY1N0eWxlKGNoYW5nZSk7CiAgICAgICAgICAgICBlbHNl
IGlmIChuLT5pc1RleHROb2RlKCkpCiAgICAgICAgICAgICAgICAgdG9UZXh0KG4pLT5yZWNhbGNU
ZXh0U3R5bGUoY2hhbmdlKTsKICAgICAgICAgfQorICAgICAgICBzdHlsZVNlbGVjdG9yLT5wb3BQ
YXJlbnRTaGFkb3dSb290KHlvdW5nZXN0KTsKICAgICB9CiAKICAgICBjbGVhck5lZWRzUmVhdHRh
Y2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129821</attachid>
            <date>2012-03-01 22:30:50 -0800</date>
            <delta_ts>2012-03-02 05:27:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79549-20120302153048.patch</filename>
            <type>text/plain</type>
            <size>26349</size>
            <attacher name="Roland Steiner">rolandsteiner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2E3MDhmNWJiYmE3YTJj
ZGJjYzQ2M2QyZTc4NTU5NzdhMWVlNzBjOC4uY2YyMTI1YzljNzE5NTYyMTNiYzUzNTdmNTUzODVk
NTYxYWY3Y2NiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEyLTAzLTAxICBSb2xh
bmQgU3RlaW5lciAgPHJvbGFuZHN0ZWluZXJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNjb3Bl
ZCBzdHlsZXNoZWV0cyBkb24ndCBhcHBlYXIgdG8gd29yayBpbiBTaGFkb3cgRE9NCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTU0OQorCisgICAgICAg
IE1ha2UgdGhlIHNjb3BlIHN0YWNrIGluIENTU1N0eWxlU2VsZWN0b3IgdXNlIENvbnRhaW5lck5v
ZGUqIGluc3RlYWQgb2YgRWxlbWVudCouCisgICAgICAgIEFkYXB0IHVzaW5nIHNpdGVzIGFjY29y
ZGluZ2x5LgorICAgICAgICBQdXNoIHRoZSBTaGFkb3dSb290IHRvIHRoZSBzY29wZSBzdGFjayBp
biB0aGUgc2FtZSB3YXkgdGhhdCBlbGVtZW50cyBhcmUgcHVzaGVkLgorICAgICAgICBGaXggYW4g
aXNzdWUgd2l0aCByZW1vdmVkRnJvbURvY3VtZW50KCkgb24gZGVzdHJ1Y3Rpb24uCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZmFzdC9jc3Mv
c3R5bGUtc2NvcGVkL3N0eWxlLXNjb3BlZC1pbi1zaGFkb3cuaHRtbAorCisgICAgICAgICogY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoUnVsZVNldCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpDU1NTdHlsZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2VsZWN0b3I6OmRldGVybWluZVNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1N0eWxlU2VsZWN0b3I6OnJ1bGVTZXRGb3JTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NTdHlsZVNlbGVjdG9yOjphcHBlbmRBdXRob3JTdHlsZXNoZWV0cyk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpzZXR1cFNjb3BlU3RhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6cHVzaFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6cG9wU2NvcGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6cHVzaFBhcmVudEVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6cG9wUGFyZW50RWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpwdXNoUGFyZW50U2hhZG93Um9vdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpwb3BQYXJlbnRTaGFkb3dSb290KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hdGNoU2NvcGVkQXV0aG9yUnVsZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JM
aXN0KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5oOgorICAgICAgICAoQ1NTU3R5
bGVTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpwdXNoU2Nv
cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6cG9wU2NvcGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6TWF0Y2hPcHRpb25zOjpNYXRjaE9wdGlv
bnMpOgorICAgICAgICAoTWF0Y2hPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxl
U2VsZWN0b3I6OnNjb3BlU3RhY2tJc0NvbnNpc3RlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U3R5bGVTZWxlY3Rvcjo6U2NvcGVTdGFja0ZyYW1lOjpTY29wZVN0YWNrRnJhbWUpOgorICAgICAg
ICAoU2NvcGVTdGFja0ZyYW1lKToKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6Cisg
ICAgICAgIChTZWxlY3RvckNoZWNraW5nQ29udGV4dCk6CisgICAgICAgICogZG9tL0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTZWxlY3RvclBhcmVudFB1c2hlcjo6cHVzaCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNlbGVjdG9yUGFyZW50UHVzaGVyOjp+U3R5bGVTZWxl
Y3RvclBhcmVudFB1c2hlcik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpiZWdpblBhcnNp
bmdDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hp
bGRyZW4pOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNoYWRvd1Jvb3Q6OmF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20v
U2hhZG93Um9vdC5oOgorICAgICAgICAoU2hhZG93Um9vdCk6CisgICAgICAgICogZG9tL1NoYWRv
d1RyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6cmVjYWxjU2hhZG93VHJl
ZVN0eWxlKToKKyAgICAgICAgKiBodG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFN0eWxlRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCk6CisKIDIwMTIt
MDMtMDEgIFhpbmduYW4gV2FuZyAgPHhpbmduYW4ud2FuZ0BpbnRlbC5jb20+CiAKICAgICAgICAg
U1NFIG9wdGltaXphdGlvbiBmb3IgdnN2ZXNxIGFuZCB2bWF4bWd2CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggYjNmZTMzZDBhY2FiM2E3MWY0Nzc1MzM0M2E4ZDM4
YzRkZGJkMTMyNS4uMzBkY2EyOTk3MjM3Mzg0Y2VjOGM4NGM1M2YyOWFkNjc5NjFhMTM2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcApAQCAtOTIsNiArOTIsNyBAQAog
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNs
dWRlICJTaGFkb3dEYXRhLmgiCisjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlNo
YWRvd1ZhbHVlLmgiCiAjaW5jbHVkZSAiU2tld1RyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1
ZGUgIlN0eWxlQ2FjaGVkSW1hZ2UuaCIKQEAgLTIyNyw3ICsyMjgsNyBAQCBwdWJsaWM6CiAKICAg
ICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIE93blB0cjxWZWN0b3I8UnVsZURh
dGE+ID4gPiBBdG9tUnVsZU1hcDsKIAotICAgIHZvaWQgYWRkUnVsZXNGcm9tU2hlZXQoQ1NTU3R5
bGVTaGVldCosIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImLCBDU1NTdHlsZVNlbGVjdG9yKiA9
IDAsIGNvbnN0IEVsZW1lbnQqID0gMCk7CisgICAgdm9pZCBhZGRSdWxlc0Zyb21TaGVldChDU1NT
dHlsZVNoZWV0KiwgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYsIENTU1N0eWxlU2VsZWN0b3Iq
ID0gMCwgY29uc3QgQ29udGFpbmVyTm9kZSogPSAwKTsKIAogICAgIHZvaWQgYWRkU3R5bGVSdWxl
KFN0eWxlUnVsZSosIGJvb2wgY2FuVXNlRmFzdENoZWNrU2VsZWN0b3IgPSB0cnVlLCBib29sIGlz
SW5SZWdpb25SdWxlID0gZmFsc2UpOwogICAgIHZvaWQgYWRkUnVsZShTdHlsZVJ1bGUqLCBDU1NT
ZWxlY3RvciosIGJvb2wgY2FuVXNlRmFzdENoZWNrU2VsZWN0b3IgPSB0cnVlLCBib29sIGlzSW5S
ZWdpb25SdWxlID0gZmFsc2UpOwpAQCAtMzQzLDcgKzM0NCw3IEBAIENTU1N0eWxlU2VsZWN0b3I6
OkNTU1N0eWxlU2VsZWN0b3IoRG9jdW1lbnQqIGRvY3VtZW50LCBTdHlsZVNoZWV0TGlzdCogc3R5
bGVTaGVlCiAgICAgLCBtX2hhc1BlbmRpbmdTaGFkZXJzKGZhbHNlKQogI2VuZGlmCiAjaWYgRU5B
QkxFKFNUWUxFX1NDT1BFRCkKLSAgICAsIG1fc2NvcGluZ0VsZW1lbnRTdGFja1BhcmVudCgwKQor
ICAgICwgbV9zY29wZVN0YWNrUGFyZW50KDApCiAjZW5kaWYKIHsKICAgICBFbGVtZW50KiByb290
ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOwpAQCAtNDQ3LDcgKzQ0OCw3IEBAIHZvaWQg
Q1NTU3R5bGVTZWxlY3Rvcjo6Y29sbGVjdEZlYXR1cmVzKCkKIH0KIAogI2lmIEVOQUJMRShTVFlM
RV9TQ09QRUQpCi1jb25zdCBFbGVtZW50KiBDU1NTdHlsZVNlbGVjdG9yOjpkZXRlcm1pbmVTY29w
aW5nRWxlbWVudChjb25zdCBDU1NTdHlsZVNoZWV0KiBzaGVldCkKK2NvbnN0IENvbnRhaW5lck5v
ZGUqIENTU1N0eWxlU2VsZWN0b3I6OmRldGVybWluZVNjb3BlKGNvbnN0IENTU1N0eWxlU2hlZXQq
IHNoZWV0KQogewogICAgIEFTU0VSVChzaGVldCk7CiAKQEAgLTQ2MiwxNCArNDYzLDE4IEBAIGNv
bnN0IEVsZW1lbnQqIENTU1N0eWxlU2VsZWN0b3I6OmRldGVybWluZVNjb3BpbmdFbGVtZW50KGNv
bnN0IENTU1N0eWxlU2hlZXQqIHNoCiAgICAgaWYgKCFzdHlsZUVsZW1lbnQtPnNjb3BlZCgpKQog
ICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBzdHlsZUVsZW1lbnQtPnBhcmVudEVsZW1l
bnQoKTsKKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBzdHlsZUVsZW1lbnQtPnBhcmVudE5v
ZGUoKTsKKyAgICBpZiAoIXBhcmVudCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4g
KHBhcmVudC0+aXNFbGVtZW50Tm9kZSgpIHx8IHBhcmVudC0+aXNTaGFkb3dSb290KCkpID8gcGFy
ZW50IDogMDsKIH0KIAotaW5saW5lIFJ1bGVTZXQqIENTU1N0eWxlU2VsZWN0b3I6OnNjb3BlZFJ1
bGVTZXRGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CitpbmxpbmUgUnVs
ZVNldCogQ1NTU3R5bGVTZWxlY3Rvcjo6cnVsZVNldEZvclNjb3BlKGNvbnN0IENvbnRhaW5lck5v
ZGUqIHNjb3BlKSBjb25zdAogewotICAgIGlmICghZWxlbWVudC0+aGFzU2NvcGVkSFRNTFN0eWxl
Q2hpbGQoKSkKKyAgICBpZiAoIXNjb3BlLT5oYXNTY29wZWRIVE1MU3R5bGVDaGlsZCgpKQogICAg
ICAgICByZXR1cm4gMDsKLSAgICBTY29wZWRSdWxlU2V0TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IG1fc2NvcGVkQXV0aG9yU3R5bGVzLmZpbmQoZWxlbWVudCk7CisgICAgU2NvcGVkUnVsZVNldE1h
cDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3Njb3BlZEF1dGhvclN0eWxlcy5maW5kKHNjb3BlKTsK
ICAgICByZXR1cm4gaXQgIT0gbV9zY29wZWRBdXRob3JTdHlsZXMuZW5kKCkgPyBpdC0+c2Vjb25k
LmdldCgpIDogMDsgCiB9CiAjZW5kaWYKQEAgLTQ4NCw3ICs0ODksNyBAQCB2b2lkIENTU1N0eWxl
U2VsZWN0b3I6OmFwcGVuZEF1dGhvclN0eWxlc2hlZXRzKHVuc2lnbmVkIGZpcnN0TmV3LCBjb25z
dCBWZWN0b3I8UgogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIENTU1N0eWxlU2hlZXQq
IGNzc1NoZWV0ID0gc3RhdGljX2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KHN0eWxlc2hlZXRzW2ldLmdl
dCgpKTsKICNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQotICAgICAgICBjb25zdCBFbGVtZW50KiBz
Y29wZSA9IGRldGVybWluZVNjb3BpbmdFbGVtZW50KGNzc1NoZWV0KTsKKyAgICAgICAgY29uc3Qg
Q29udGFpbmVyTm9kZSogc2NvcGUgPSBkZXRlcm1pbmVTY29wZShjc3NTaGVldCk7CiAgICAgICAg
IGlmIChzY29wZSkgewogICAgICAgICAgICAgcGFpcjxTY29wZWRSdWxlU2V0TWFwOjppdGVyYXRv
ciwgYm9vbD4gYWRkUmVzdWx0ID0gbV9zY29wZWRBdXRob3JTdHlsZXMuYWRkKHNjb3BlLCBudWxs
cHRyKTsKICAgICAgICAgICAgIGlmIChhZGRSZXN1bHQuc2Vjb25kKQpAQCAtNTAzLDY4ICs1MDgs
ODUgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBlbmRBdXRob3JTdHlsZXNoZWV0cyh1bnNp
Z25lZCBmaXJzdE5ldywgY29uc3QgVmVjdG9yPFIKIH0KIAogI2lmIEVOQUJMRShTVFlMRV9TQ09Q
RUQpCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6OnNldHVwU2NvcGluZ0VsZW1lbnRTdGFjayhjb25z
dCBFbGVtZW50KiBwYXJlbnQpCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6OnNldHVwU2NvcGVTdGFj
ayhjb25zdCBDb250YWluZXJOb2RlKiBwYXJlbnQpCiB7CiAgICAgLy8gVGhlIHNjb3BpbmcgZWxl
bWVudCBzdGFjayBzaG91bGRuJ3QgYmUgdXNlZCBpZiA8c3R5bGUgc2NvcGVkPiBpc24ndCB1c2Vk
IGFueXdoZXJlLgogICAgIEFTU0VSVCghbV9zY29wZWRBdXRob3JTdHlsZXMuaXNFbXB0eSgpKTsK
IAotICAgIG1fc2NvcGluZ0VsZW1lbnRTdGFjay5zaHJpbmsoMCk7Ci0gICAgZm9yICg7IHBhcmVu
dDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPckhvc3RFbGVtZW50KCkpIHsKLSAgICAgICAgUnVs
ZVNldCogcnVsZVNldCA9IHNjb3BlZFJ1bGVTZXRGb3JFbGVtZW50KHBhcmVudCk7CisgICAgbV9z
Y29wZVN0YWNrLnNocmluaygwKTsKKyAgICBmb3IgKDsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQt
PnBhcmVudE9ySG9zdE5vZGUoKSkgeworICAgICAgICBSdWxlU2V0KiBydWxlU2V0ID0gcnVsZVNl
dEZvclNjb3BlKHBhcmVudCk7CiAgICAgICAgIGlmIChydWxlU2V0KQotICAgICAgICAgICAgbV9z
Y29waW5nRWxlbWVudFN0YWNrLmFwcGVuZChTY29wZVN0YWNrRnJhbWUocGFyZW50LCBydWxlU2V0
KSk7CisgICAgICAgICAgICBtX3Njb3BlU3RhY2suYXBwZW5kKFNjb3BlU3RhY2tGcmFtZShwYXJl
bnQsIHJ1bGVTZXQpKTsKICAgICB9Ci0gICAgbV9zY29waW5nRWxlbWVudFN0YWNrLnJldmVyc2Uo
KTsKLSAgICBtX3Njb3BpbmdFbGVtZW50U3RhY2tQYXJlbnQgPSBwYXJlbnQ7CisgICAgbV9zY29w
ZVN0YWNrLnJldmVyc2UoKTsKKyAgICBtX3Njb3BlU3RhY2tQYXJlbnQgPSBwYXJlbnQ7CiB9Ci0j
ZW5kaWYKIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpwdXNoUGFyZW50KEVsZW1lbnQqIHBhcmVu
dCkKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6cHVzaFNjb3BlKGNvbnN0IENvbnRhaW5lck5vZGUq
IHNjb3BlLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZVBhcmVudCkKIHsKLSAgICBjb25zdCBF
bGVtZW50KiBwYXJlbnRzUGFyZW50ID0gcGFyZW50LT5wYXJlbnRPckhvc3RFbGVtZW50KCk7Ci0g
ICAgLy8gV2UgYXJlIG5vdCBhbHdheXMgaW52b2tlZCBjb25zaXN0ZW50bHkuIEZvciBleGFtcGxl
LCBzY3JpcHQgZXhlY3V0aW9uIGNhbiBjYXVzZSB1cyB0byBlbnRlcgotICAgIC8vIHN0eWxlIHJl
Y2FsYyBpbiB0aGUgbWlkZGxlIG9mIHRyZWUgYnVpbGRpbmcuIFdlIG1heSBhbHNvIGJlIGludm9r
ZWQgZnJvbSBzb21ld2hlcmUgd2l0aGluIHRoZSB0cmVlLgotICAgIC8vIFJlc2V0IHRoZSBzdGFj
ayBpbiB0aGlzIGNhc2UsIG9yIGlmIHdlIHNlZSBhIG5ldyByb290IGVsZW1lbnQuCi0gICAgLy8g
T3RoZXJ3aXNlIGp1c3QgcHVzaCB0aGUgbmV3IHBhcmVudC4KLSAgICBpZiAoIXBhcmVudHNQYXJl
bnQgfHwgbV9jaGVja2VyLnBhcmVudFN0YWNrSXNFbXB0eSgpKQotICAgICAgICBtX2NoZWNrZXIu
c2V0dXBQYXJlbnRTdGFjayhwYXJlbnQpOwotICAgIGVsc2UKLSAgICAgICAgbV9jaGVja2VyLnB1
c2hQYXJlbnQocGFyZW50KTsKLQotI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpCiAgICAgLy8gU2hv
cnRjdXQ6IERvbid0IGJvdGhlciB3aXRoIHRoZSBzY29waW5nIGVsZW1lbnQgc3RhY2sgaWYgPHN0
eWxlIHNjb3BlZD4gaXNuJ3QgdXNlZCBhbnl3aGVyZS4KICAgICBpZiAobV9zY29wZWRBdXRob3JT
dHlsZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVCghbV9zY29waW5nRWxlbWVudFN0YWNr
UGFyZW50KTsKLSAgICAgICAgQVNTRVJUKG1fc2NvcGluZ0VsZW1lbnRTdGFjay5pc0VtcHR5KCkp
OworICAgICAgICBBU1NFUlQoIW1fc2NvcGVTdGFja1BhcmVudCk7CisgICAgICAgIEFTU0VSVCht
X3Njb3BlU3RhY2suaXNFbXB0eSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAvLyBJ
biBzb21lIHdhY2t5IGNhc2VzIGR1cmluZyBzdHlsZSByZXNvbHZlIHdlIG1heSBnZXQgaW52b2tl
ZCBmb3IgcmFuZG9tIGVsZW1lbnRzLgogICAgIC8vIFJlY3JlYXRlIHRoZSB3aG9sZSBzY29waW5n
IGVsZW1lbnQgc3RhY2sgaW4gc3VjaCBjYXNlcy4KLSAgICBpZiAoIXNjb3BpbmdFbGVtZW50U3Rh
Y2tJc0NvbnNpc3RlbnQocGFyZW50c1BhcmVudCkpIHsKLSAgICAgICAgc2V0dXBTY29waW5nRWxl
bWVudFN0YWNrKHBhcmVudCk7CisgICAgaWYgKCFzY29wZVN0YWNrSXNDb25zaXN0ZW50KHNjb3Bl
UGFyZW50KSkgeworICAgICAgICBzZXR1cFNjb3BlU3RhY2soc2NvcGUpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIC8vIE90aGVyd2lzZSBqdXN0IHB1c2ggdGhlIHBhcmVudCBvbnRvIHRo
ZSBzdGFjay4KLSAgICBSdWxlU2V0KiBydWxlU2V0ID0gc2NvcGVkUnVsZVNldEZvckVsZW1lbnQo
cGFyZW50KTsKKyAgICBSdWxlU2V0KiBydWxlU2V0ID0gcnVsZVNldEZvclNjb3BlKHNjb3BlKTsK
ICAgICBpZiAocnVsZVNldCkKLSAgICAgICAgbV9zY29waW5nRWxlbWVudFN0YWNrLmFwcGVuZChT
Y29wZVN0YWNrRnJhbWUocGFyZW50LCBydWxlU2V0KSk7Ci0gICAgbV9zY29waW5nRWxlbWVudFN0
YWNrUGFyZW50ID0gcGFyZW50OworICAgICAgICBtX3Njb3BlU3RhY2suYXBwZW5kKFNjb3BlU3Rh
Y2tGcmFtZShzY29wZSwgcnVsZVNldCkpOworICAgIG1fc2NvcGVTdGFja1BhcmVudCA9IHNjb3Bl
OworfQorCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6OnBvcFNjb3BlKGNvbnN0IENvbnRhaW5lck5v
ZGUqIHNjb3BlKQoreworICAgIC8vIE9ubHkgYm90aGVyIHRvIHVwZGF0ZSB0aGUgc2NvcGluZyBl
bGVtZW50IHN0YWNrIGlmIGl0IGlzIGNvbnNpc3RlbnQuCisgICAgaWYgKHNjb3BlU3RhY2tJc0Nv
bnNpc3RlbnQoc2NvcGUpKSB7CisgICAgICAgIG1fc2NvcGVTdGFjay5yZW1vdmVMYXN0KCk7Cisg
ICAgICAgIG1fc2NvcGVTdGFja1BhcmVudCA9IHNjb3BlLT5wYXJlbnRPckhvc3ROb2RlKCk7Cisg
ICAgfQorfQogI2VuZGlmCisKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6cHVzaFBhcmVudEVsZW1l
bnQoRWxlbWVudCogcGFyZW50KQoreworICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIHBhcmVudHNQ
YXJlbnQgPSBwYXJlbnQtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAvLyBXZSBhcmUgbm90IGFs
d2F5cyBpbnZva2VkIGNvbnNpc3RlbnRseS4gRm9yIGV4YW1wbGUsIHNjcmlwdCBleGVjdXRpb24g
Y2FuIGNhdXNlIHVzIHRvIGVudGVyCisgICAgLy8gc3R5bGUgcmVjYWxjIGluIHRoZSBtaWRkbGUg
b2YgdHJlZSBidWlsZGluZy4gV2UgbWF5IGFsc28gYmUgaW52b2tlZCBmcm9tIHNvbWV3aGVyZSB3
aXRoaW4gdGhlIHRyZWUuCisgICAgLy8gUmVzZXQgdGhlIHN0YWNrIGluIHRoaXMgY2FzZSwgb3Ig
aWYgd2Ugc2VlIGEgbmV3IHJvb3QgZWxlbWVudC4KKyAgICAvLyBPdGhlcndpc2UganVzdCBwdXNo
IHRoZSBuZXcgcGFyZW50LgorICAgIGlmICghcGFyZW50c1BhcmVudCB8fCBtX2NoZWNrZXIucGFy
ZW50U3RhY2tJc0VtcHR5KCkpCisgICAgICAgIG1fY2hlY2tlci5zZXR1cFBhcmVudFN0YWNrKHBh
cmVudCk7CisgICAgZWxzZQorICAgICAgICBtX2NoZWNrZXIucHVzaFBhcmVudChwYXJlbnQpOwor
ICAgIHB1c2hTY29wZShwYXJlbnQsIHBhcmVudHNQYXJlbnQpOwogfQogCi12b2lkIENTU1N0eWxl
U2VsZWN0b3I6OnBvcFBhcmVudChFbGVtZW50KiBwYXJlbnQpCit2b2lkIENTU1N0eWxlU2VsZWN0
b3I6OnBvcFBhcmVudEVsZW1lbnQoRWxlbWVudCogcGFyZW50KQogewogICAgIC8vIE5vdGUgdGhh
dCB3ZSBtYXkgZ2V0IGludm9rZWQgZm9yIHNvbWUgcmFuZG9tIGVsZW1lbnRzIGluIHNvbWUgd2Fj
a3kgY2FzZXMgZHVyaW5nIHN0eWxlIHJlc29sdmUuCiAgICAgLy8gUGF1c2UgbWFpbnRhaW5pbmcg
dGhlIHN0YWNrIGluIHRoaXMgY2FzZS4KICAgICBpZiAobV9jaGVja2VyLnBhcmVudFN0YWNrSXND
b25zaXN0ZW50KHBhcmVudCkpCiAgICAgICAgIG1fY2hlY2tlci5wb3BQYXJlbnQoKTsKLSNpZiBF
TkFCTEUoU1RZTEVfU0NPUEVEKQotICAgIC8vIE9ubHkgYm90aGVyIHRvIHVwZGF0ZSB0aGUgc2Nv
cGluZyBlbGVtZW50IHN0YWNrIGlmIGl0IGlzIGNvbnNpc3RlbnQuCi0gICAgaWYgKHNjb3BpbmdF
bGVtZW50U3RhY2tJc0NvbnNpc3RlbnQocGFyZW50KSkgewotICAgICAgICBtX3Njb3BpbmdFbGVt
ZW50U3RhY2sucmVtb3ZlTGFzdCgpOwotICAgICAgICBtX3Njb3BpbmdFbGVtZW50U3RhY2tQYXJl
bnQgPSBwYXJlbnQtPnBhcmVudE9ySG9zdEVsZW1lbnQoKTsKLSAgICB9Ci0jZW5kaWYKKyAgICBw
b3BTY29wZShwYXJlbnQpOworfQorCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6OnB1c2hQYXJlbnRT
aGFkb3dSb290KGNvbnN0IFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QpCit7CisgICAgQVNTRVJUKHNo
YWRvd1Jvb3QtPmhvc3QoKSk7CisgICAgcHVzaFNjb3BlKHNoYWRvd1Jvb3QsIHNoYWRvd1Jvb3Qt
Pmhvc3QoKSk7Cit9CisKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6cG9wUGFyZW50U2hhZG93Um9v
dChjb25zdCBTaGFkb3dSb290KiBzaGFkb3dSb290KQoreworICAgIEFTU0VSVChzaGFkb3dSb290
LT5ob3N0KCkpOworICAgIHBvcFNjb3BlKHNoYWRvd1Jvb3QpOwogfQogCiAvLyBUaGlzIGlzIGEg
c2ltcGxpZmllZCBzdHlsZSBzZXR0aW5nIGZ1bmN0aW9uIGZvciBrZXlmcmFtZSBzdHlsZXMKQEAg
LTg1OCwxNyArODgwLDE3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hTY29wZWRBdXRo
b3JSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFCiAgICAgTWF0Y2hPcHRp
b25zIG9wdGlvbnMoaW5jbHVkZUVtcHR5UnVsZXMpOwogCiAgICAgLy8gTWF0Y2ggc2NvcGVkIGF1
dGhvciBydWxlcyBieSB0cmF2ZXJzaW5nIHRoZSBzY29wZWQgZWxlbWVudCBzdGFjayAocmVidWls
ZCBpdCBpZiBpdCBnb3QgaW5jb25zaXN0ZW50KS4KLSAgICBjb25zdCBFbGVtZW50KiBwYXJlbnQg
PSBtX2VsZW1lbnQtPnBhcmVudE9ySG9zdEVsZW1lbnQoKTsKLSAgICBpZiAoIXNjb3BpbmdFbGVt
ZW50U3RhY2tJc0NvbnNpc3RlbnQocGFyZW50KSkKLSAgICAgICAgc2V0dXBTY29waW5nRWxlbWVu
dFN0YWNrKHBhcmVudCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IG1fc2NvcGluZ0VsZW1lbnRTdGFj
ay5zaXplKCk7IGk7IC0taSkgewotICAgICAgICBjb25zdCBTY29wZVN0YWNrRnJhbWUmIGZyYW1l
ID0gbV9zY29waW5nRWxlbWVudFN0YWNrW2kgLSAxXTsKLSAgICAgICAgb3B0aW9ucy5zY29wZSA9
IGZyYW1lLm1fZWxlbWVudDsKKyAgICBjb25zdCBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBtX2Vs
ZW1lbnQtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICBpZiAoIXNjb3BlU3RhY2tJc0NvbnNpc3Rl
bnQocGFyZW50KSkKKyAgICAgICAgc2V0dXBTY29wZVN0YWNrKHBhcmVudCk7CisgICAgZm9yIChz
aXplX3QgaSA9IG1fc2NvcGVTdGFjay5zaXplKCk7IGk7IC0taSkgeworICAgICAgICBjb25zdCBT
Y29wZVN0YWNrRnJhbWUmIGZyYW1lID0gbV9zY29wZVN0YWNrW2kgLSAxXTsKKyAgICAgICAgb3B0
aW9ucy5zY29wZSA9IGZyYW1lLm1fc2NvcGU7CiAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVz
KGZyYW1lLm1fcnVsZVNldCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5y
YW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOwogICAgICAgICBjb2xsZWN0TWF0Y2hpbmdS
dWxlc0ZvclJlZ2lvbihmcmFtZS5tX3J1bGVTZXQsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JS
dWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlLCBvcHRpb25zKTsKICAgICB9CiAgICAg
Ly8gQWxzbyBpbmNsdWRlIHRoZSBjdXJyZW50IGVsZW1lbnQuCi0gICAgUnVsZVNldCogcnVsZVNl
dCA9IHNjb3BlZFJ1bGVTZXRGb3JFbGVtZW50KG1fZWxlbWVudCk7CisgICAgUnVsZVNldCogcnVs
ZVNldCA9IHJ1bGVTZXRGb3JTY29wZShtX2VsZW1lbnQpOwogICAgIGlmIChydWxlU2V0KSB7CiAg
ICAgICAgIG9wdGlvbnMuc2NvcGUgPSBtX2VsZW1lbnQ7CiAgICAgICAgIGNvbGxlY3RNYXRjaGlu
Z1J1bGVzKHJ1bGVTZXQsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFu
Z2VzLmxhc3RBdXRob3JSdWxlLCBvcHRpb25zKTsKQEAgLTIxMjAsNyArMjE0Miw3IEBAIFBhc3NS
ZWZQdHI8Q1NTUnVsZUxpc3Q+IENTU1N0eWxlU2VsZWN0b3I6OnBzZXVkb1N0eWxlUnVsZXNGb3JF
bGVtZW50KEVsZW1lbnQqIGUsCiAgICAgcmV0dXJuIG1fcnVsZUxpc3QucmVsZWFzZSgpOwogfQog
Ci1pbmxpbmUgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjaGVja1NlbGVjdG9yKGNvbnN0IFJ1bGVE
YXRhJiBydWxlRGF0YSwgY29uc3QgRWxlbWVudCogc2NvcGUpCitpbmxpbmUgYm9vbCBDU1NTdHls
ZVNlbGVjdG9yOjpjaGVja1NlbGVjdG9yKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSwgY29uc3Qg
Q29udGFpbmVyTm9kZSogc2NvcGUpCiB7CiAgICAgbV9keW5hbWljUHNldWRvID0gTk9QU0VVRE87
CiAgICAgbV9jaGVja2VyLmNsZWFySGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKCk7CkBAIC0yMzky
LDcgKzI0MTQsNyBAQCB2b2lkIFJ1bGVTZXQ6OmFkZFJlZ2lvblJ1bGUoV2ViS2l0Q1NTUmVnaW9u
UnVsZSogcnVsZSkKICAgICBtX3JlZ2lvblNlbGVjdG9yc0FuZFJ1bGVTZXRzLmFwcGVuZChSdWxl
U2V0U2VsZWN0b3JQYWlyKHJ1bGUtPnNlbGVjdG9yTGlzdCgpLmZpcnN0KCksIHJlZ2lvblJ1bGVT
ZXQpKTsKIH0KIAotdm9pZCBSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVldChDU1NTdHlsZVNoZWV0
KiBzaGVldCwgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgbWVkaXVtLCBDU1NTdHlsZVNlbGVj
dG9yKiBzdHlsZVNlbGVjdG9yLCBjb25zdCBFbGVtZW50KiBzY29wZSkKK3ZvaWQgUnVsZVNldDo6
YWRkUnVsZXNGcm9tU2hlZXQoQ1NTU3R5bGVTaGVldCogc2hlZXQsIGNvbnN0IE1lZGlhUXVlcnlF
dmFsdWF0b3ImIG1lZGl1bSwgQ1NTU3R5bGVTZWxlY3Rvciogc3R5bGVTZWxlY3RvciwgY29uc3Qg
Q29udGFpbmVyTm9kZSogc2NvcGUpCiB7CiAgICAgQVNTRVJUKHNoZWV0KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKaW5kZXggMmYyZmU3MGZmNmY0ZWM3NDZmMzlmNWNkNGM1
YjA0NTc1ZjZkZDViMy4uZTNjNzA0ZDM5MjkwZmZhYjQ5MzAyM2FlYTRmN2NkM2I5YTMwMTAwYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCkBAIC0xMDcsOCArMTA3LDEwIEBA
IHB1YmxpYzoKICAgICB+Q1NTU3R5bGVTZWxlY3RvcigpOwogCiAgICAgLy8gVXNpbmcgdGhlc2Ug
ZHVyaW5nIHRyZWUgd2FsayB3aWxsIGFsbG93IHN0eWxlIHNlbGVjdG9yIHRvIG9wdGltaXplIGNo
aWxkIGFuZCBkZXNjZW5kYW50IHNlbGVjdG9yIGxvb2t1cHMuCi0gICAgdm9pZCBwdXNoUGFyZW50
KEVsZW1lbnQqIHBhcmVudCk7Ci0gICAgdm9pZCBwb3BQYXJlbnQoRWxlbWVudCogcGFyZW50KTsK
KyAgICB2b2lkIHB1c2hQYXJlbnRFbGVtZW50KEVsZW1lbnQqKTsKKyAgICB2b2lkIHBvcFBhcmVu
dEVsZW1lbnQoRWxlbWVudCopOworICAgIHZvaWQgcHVzaFBhcmVudFNoYWRvd1Jvb3QoY29uc3Qg
U2hhZG93Um9vdCopOworICAgIHZvaWQgcG9wUGFyZW50U2hhZG93Um9vdChjb25zdCBTaGFkb3dS
b290Kik7CiAKICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZUZvckVsZW1lbnQoRWxl
bWVudCosIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IDAsIGJvb2wgYWxsb3dTaGFyaW5nID0g
dHJ1ZSwgYm9vbCByZXNvbHZlRm9yUm9vdERlZmF1bHQgPSBmYWxzZSwgUmVuZGVyUmVnaW9uKiBy
ZWdpb25Gb3JTdHlsaW5nID0gMCk7CiAKQEAgLTE1MCw2ICsxNTIsMTQgQEAgcHJpdmF0ZToKIAog
ICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yS2V5ZnJhbWUoY29uc3QgUmVuZGVy
U3R5bGUqLCBjb25zdCBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUqLCBLZXlmcmFtZVZhbHVlJik7CiAK
KyNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQorICAgIHZvaWQgcHVzaFNjb3BlKGNvbnN0IENvbnRh
aW5lck5vZGUqIHNjb3BlLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZVBhcmVudCk7CisgICAg
dm9pZCBwb3BTY29wZShjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSk7CisjZWxzZQorICAgIHZv
aWQgcHVzaFNjb3BlKGNvbnN0IENvbnRhaW5lck5vZGUqLCBjb25zdCBDb250YWluZXJOb2RlKikg
eyB9CisgICAgdm9pZCBwb3BTY29wZShjb25zdCBDb250YWluZXJOb2RlKikgeyB9CisjZW5kaWYK
KwogcHVibGljOgogICAgIC8vIFRoZXNlIG1ldGhvZHMgd2lsbCBnaXZlIGJhY2sgdGhlIHNldCBv
ZiBydWxlcyB0aGF0IG1hdGNoZWQgZm9yIGEgZ2l2ZW4gZWxlbWVudCAob3IgYSBwc2V1ZG8tZWxl
bWVudCkuCiAgICAgZW51bSBDU1NSdWxlRmlsdGVyIHsKQEAgLTI4OSw4ICsyOTksOCBAQCBwcml2
YXRlOgogICAgIH07CiAKICAgICBzdHJ1Y3QgTWF0Y2hPcHRpb25zIHsKLSAgICAgICAgTWF0Y2hP
cHRpb25zKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMsIGNvbnN0IEVsZW1lbnQqIHNjb3BlID0gMCkg
OiBzY29wZShzY29wZSksIGluY2x1ZGVFbXB0eVJ1bGVzKGluY2x1ZGVFbXB0eVJ1bGVzKSB7IH0K
LSAgICAgICAgY29uc3QgRWxlbWVudCogc2NvcGU7CisgICAgICAgIE1hdGNoT3B0aW9ucyhib29s
IGluY2x1ZGVFbXB0eVJ1bGVzLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSA9IDApIDogc2Nv
cGUoc2NvcGUpLCBpbmNsdWRlRW1wdHlSdWxlcyhpbmNsdWRlRW1wdHlSdWxlcykgeyB9CisgICAg
ICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlOwogICAgICAgICBib29sIGluY2x1ZGVFbXB0
eVJ1bGVzOwogICAgIH07CiAKQEAgLTMxMCw3ICszMjAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
c29ydE1hdGNoZWRSdWxlcygpOwogICAgIHZvaWQgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVz
KE1hdGNoUmVzdWx0Jik7CiAKLSAgICBib29sIGNoZWNrU2VsZWN0b3IoY29uc3QgUnVsZURhdGEm
LCBjb25zdCBFbGVtZW50KiBzY29wZSA9IDApOworICAgIGJvb2wgY2hlY2tTZWxlY3Rvcihjb25z
dCBSdWxlRGF0YSYsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlID0gMCk7CiAgICAgYm9vbCBj
aGVja1JlZ2lvblNlbGVjdG9yKENTU1NlbGVjdG9yKiByZWdpb25TZWxlY3RvciwgRWxlbWVudCog
cmVnaW9uRWxlbWVudCk7CiAgICAgdm9pZCBhcHBseU1hdGNoZWRQcm9wZXJ0aWVzKGNvbnN0IE1h
dGNoUmVzdWx0Jik7CiAgICAgdGVtcGxhdGUgPGJvb2wgZmlyc3RQYXNzPgpAQCAtNDUzLDI5ICs0
NjMsMjkgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkKLSAg
ICBzdGF0aWMgY29uc3QgRWxlbWVudCogZGV0ZXJtaW5lU2NvcGluZ0VsZW1lbnQoY29uc3QgQ1NT
U3R5bGVTaGVldCopOworICAgIHN0YXRpYyBjb25zdCBDb250YWluZXJOb2RlKiBkZXRlcm1pbmVT
Y29wZShjb25zdCBDU1NTdHlsZVNoZWV0Kik7CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3Qg
RWxlbWVudCosIE93blB0cjxSdWxlU2V0PiA+IFNjb3BlZFJ1bGVTZXRNYXA7CisgICAgdHlwZWRl
ZiBIYXNoTWFwPGNvbnN0IENvbnRhaW5lck5vZGUqLCBPd25QdHI8UnVsZVNldD4gPiBTY29wZWRS
dWxlU2V0TWFwOwogCi0gICAgUnVsZVNldCogc2NvcGVkUnVsZVNldEZvckVsZW1lbnQoY29uc3Qg
RWxlbWVudCopIGNvbnN0OworICAgIFJ1bGVTZXQqIHJ1bGVTZXRGb3JTY29wZShjb25zdCBDb250
YWluZXJOb2RlKikgY29uc3Q7CiAKLSAgICB2b2lkIHNldHVwU2NvcGluZ0VsZW1lbnRTdGFjayhj
b25zdCBFbGVtZW50Kik7Ci0gICAgYm9vbCBzY29waW5nRWxlbWVudFN0YWNrSXNDb25zaXN0ZW50
KGNvbnN0IEVsZW1lbnQqIHBhcmVudCkgY29uc3QgeyByZXR1cm4gcGFyZW50ICYmIHBhcmVudCA9
PSBtX3Njb3BpbmdFbGVtZW50U3RhY2tQYXJlbnQ7IH0KKyAgICB2b2lkIHNldHVwU2NvcGVTdGFj
ayhjb25zdCBDb250YWluZXJOb2RlKik7CisgICAgYm9vbCBzY29wZVN0YWNrSXNDb25zaXN0ZW50
KGNvbnN0IENvbnRhaW5lck5vZGUqIHBhcmVudCkgY29uc3QgeyByZXR1cm4gcGFyZW50ICYmIHBh
cmVudCA9PSBtX3Njb3BlU3RhY2tQYXJlbnQ7IH0KIAogICAgIFNjb3BlZFJ1bGVTZXRNYXAgbV9z
Y29wZWRBdXRob3JTdHlsZXM7CiAgICAgCiAgICAgc3RydWN0IFNjb3BlU3RhY2tGcmFtZSB7Ci0g
ICAgICAgIFNjb3BlU3RhY2tGcmFtZSgpIDogbV9lbGVtZW50KDApLCBtX3J1bGVTZXQoMCkgeyB9
Ci0gICAgICAgIFNjb3BlU3RhY2tGcmFtZShjb25zdCBFbGVtZW50KiBlbGVtZW50LCBSdWxlU2V0
KiBydWxlU2V0KSA6IG1fZWxlbWVudChlbGVtZW50KSwgbV9ydWxlU2V0KHJ1bGVTZXQpIHsgfQot
ICAgICAgICBjb25zdCBFbGVtZW50KiBtX2VsZW1lbnQ7CisgICAgICAgIFNjb3BlU3RhY2tGcmFt
ZSgpIDogbV9zY29wZSgwKSwgbV9ydWxlU2V0KDApIHsgfQorICAgICAgICBTY29wZVN0YWNrRnJh
bWUoY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUsIFJ1bGVTZXQqIHJ1bGVTZXQpIDogbV9zY29w
ZShzY29wZSksIG1fcnVsZVNldChydWxlU2V0KSB7IH0KKyAgICAgICAgY29uc3QgQ29udGFpbmVy
Tm9kZSogbV9zY29wZTsKICAgICAgICAgUnVsZVNldCogbV9ydWxlU2V0OwogICAgIH07CiAgICAg
Ly8gVmVjdG9yICh1c2VkIGFzIHN0YWNrKSB0aGF0IGtlZXBzIHRyYWNrIG9mIHNjb3BpbmcgZWxl
bWVudHMgKGkuZS4sIGVsZW1lbnRzIHdpdGggYSA8c3R5bGUgc2NvcGVkPiBjaGlsZCkKICAgICAv
LyBlbmNvdW50ZXJlZCBkdXJpbmcgdHJlZSBpdGVyYXRpb24gZm9yIHN0eWxlIHJlc29sdXRpb24u
Ci0gICAgVmVjdG9yPFNjb3BlU3RhY2tGcmFtZT4gbV9zY29waW5nRWxlbWVudFN0YWNrOworICAg
IFZlY3RvcjxTY29wZVN0YWNrRnJhbWU+IG1fc2NvcGVTdGFjazsKICAgICAvLyBFbGVtZW50IGxh
c3Qgc2VlbiBhcyBwYXJlbnQgZWxlbWVudCB3aGVuIHVwZGF0aW5nIG1fc2NvcGluZ0VsZW1lbnRT
dGFjay4KICAgICAvLyBUaGlzIGlzIHVzZWQgdG8gZGVjaWRlIHdoZXRoZXIgbV9zY29waW5nRWxl
bWVudFN0YWNrIGlzIGNvbnNpc3RlbnQsIHNlcGFyYXRlbHkgZnJvbSBTZWxlY3RvckNoZWNrZXI6
Om1fcGFyZW50U3RhY2suCi0gICAgY29uc3QgRWxlbWVudCogbV9zY29waW5nRWxlbWVudFN0YWNr
UGFyZW50OworICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIG1fc2NvcGVTdGFja1BhcmVudDsKICNl
bmRpZgogCiAgICAgZnJpZW5kIGNsYXNzIENTU1N0eWxlQXBwbHlQcm9wZXJ0eTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TZWxlY3RvckNoZWNrZXIuaAppbmRleCA3ZTgwODA4ZGQzYjZiZDhiZjRhZjc1NDQ2MmRj
YjM5YTFiYWU4MTI1Li4yMmIxMjdmMDIxYTc1N2EyNTY1MzY3ZmVjYzQ2MDUxZDA1MWZjNTkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCkBAIC02Niw3ICs2Niw3IEBAIHB1Ymxp
YzoKIAogICAgICAgICBDU1NTZWxlY3Rvciogc2VsZWN0b3I7CiAgICAgICAgIEVsZW1lbnQqIGVs
ZW1lbnQ7Ci0gICAgICAgIGNvbnN0IEVsZW1lbnQqIHNjb3BlOworICAgICAgICBjb25zdCBDb250
YWluZXJOb2RlKiBzY29wZTsKICAgICAgICAgVmlzaXRlZE1hdGNoVHlwZSB2aXNpdGVkTWF0Y2hU
eXBlOwogICAgICAgICBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlOwogICAgICAgICBSZW5kZXJT
dHlsZSogZWxlbWVudFBhcmVudFN0eWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDVmYmQx
ZTI1ZTdlZGFjNTY4NWZmNTMzMzg3OTZlYjAwZWFiNzNlYzMuLmZjNWU3ZWRkZGFmN2Y1YTcxZjZl
MjZkZGE4ZTBiMWY2ODZlOWE0MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTk0LDcgKzk0
LDcgQEAgcHVibGljOgogICAgICAgICBpZiAobV9wdXNoZWRTdHlsZVNlbGVjdG9yKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICBtX3B1c2hlZFN0eWxlU2VsZWN0b3IgPSBtX3BhcmVudC0+
ZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpOwotICAgICAgICBtX3B1c2hlZFN0eWxlU2VsZWN0
b3ItPnB1c2hQYXJlbnQobV9wYXJlbnQpOworICAgICAgICBtX3B1c2hlZFN0eWxlU2VsZWN0b3It
PnB1c2hQYXJlbnRFbGVtZW50KG1fcGFyZW50KTsKICAgICB9CiAgICAgflN0eWxlU2VsZWN0b3JQ
YXJlbnRQdXNoZXIoKSAKICAgICB7CkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgICAg
ICBpZiAobV9wdXNoZWRTdHlsZVNlbGVjdG9yICE9IG1fcGFyZW50LT5kb2N1bWVudCgpLT5zdHls
ZVNlbGVjdG9yKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbV9wdXNoZWRTdHls
ZVNlbGVjdG9yLT5wb3BQYXJlbnQobV9wYXJlbnQpOyAKKyAgICAgICAgbV9wdXNoZWRTdHlsZVNl
bGVjdG9yLT5wb3BQYXJlbnRFbGVtZW50KG1fcGFyZW50KTsgCiAgICAgfQogCiBwcml2YXRlOgpA
QCAtMTMxMCw3ICsxMzEwLDcgQEAgdm9pZCBFbGVtZW50OjpiZWdpblBhcnNpbmdDaGlsZHJlbigp
CiAgICAgY2xlYXJJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkKCk7CiAgICAgQ1NTU3R5bGVTZWxl
Y3Rvciogc3R5bGVTZWxlY3RvciA9IGRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3JJZkV4aXN0cygp
OwogICAgIGlmIChzdHlsZVNlbGVjdG9yICYmIGF0dGFjaGVkKCkpCi0gICAgICAgIHN0eWxlU2Vs
ZWN0b3ItPnB1c2hQYXJlbnQodGhpcyk7CisgICAgICAgIHN0eWxlU2VsZWN0b3ItPnB1c2hQYXJl
bnRFbGVtZW50KHRoaXMpOwogfQogCiB2b2lkIEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJl
bigpCkBAIC0xMzE5LDcgKzEzMTksNyBAQCB2b2lkIEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGls
ZHJlbigpCiAgICAgc2V0SXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZCgpOwogICAgIGNoZWNrRm9y
U2libGluZ1N0eWxlQ2hhbmdlcyh0aGlzLCByZW5kZXJTdHlsZSgpLCB0cnVlLCBsYXN0Q2hpbGQo
KSwgMCwgMCk7CiAgICAgaWYgKENTU1N0eWxlU2VsZWN0b3IqIHN0eWxlU2VsZWN0b3IgPSBkb2N1
bWVudCgpLT5zdHlsZVNlbGVjdG9ySWZFeGlzdHMoKSkKLSAgICAgICAgc3R5bGVTZWxlY3Rvci0+
cG9wUGFyZW50KHRoaXMpOworICAgICAgICBzdHlsZVNlbGVjdG9yLT5wb3BQYXJlbnRFbGVtZW50
KHRoaXMpOwogfQogCiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmlu
ZGV4IGY3NmNiMjA5MjNlMzcyYWVjMGMyY2U2N2I2OWEzMzAxNzkyZWViNzMuLjI4MGRiMTE0ZTA1
NDAzMWYyZWU3OTZiZDg0NGI5MzRmNDIxZGU0MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5j
cHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFk
b3dSb290LmgiCiAKKyNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVu
dC5oIgpAQCAtMTk4LDQgKzE5OSwxMiBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnNldEFwcGx5QXV0aG9y
U2hlZXRzKGJvb2wgdmFsdWUpCiAgICAgbV9hcHBseUF1dGhvclNoZWV0cyA9IHZhbHVlOwogfQog
Cit2b2lkIFNoYWRvd1Jvb3Q6OmF0dGFjaCgpCit7CisgICAgQ1NTU3R5bGVTZWxlY3Rvciogc3R5
bGVTZWxlY3RvciA9IGRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKTsKKyAgICBzdHlsZVNlbGVj
dG9yLT5wdXNoUGFyZW50U2hhZG93Um9vdCh0aGlzKTsKKyAgICBEb2N1bWVudEZyYWdtZW50Ojph
dHRhY2goKTsKKyAgICBzdHlsZVNlbGVjdG9yLT5wb3BQYXJlbnRTaGFkb3dSb290KHRoaXMpOwor
fQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAppbmRleCA2NGRkZmE4MmY5NTJiMjUyMGJkZTIw
ZjNiZjE4NmMxMWYxMjZjYmRiLi4zZGYyOGM2YTRiNTU5ZTVhNWExNjg0YjM5ZTM4YTRjYzgyNjY0
NjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKQEAgLTgxLDYgKzgxLDggQEAgcHVibGljOgog
CiAgICAgYm9vbCBoYXNJbnNlcnRpb25Qb2ludCgpIGNvbnN0OwogCisgICAgdmlydHVhbCB2b2lk
IGF0dGFjaCgpOworCiBwcml2YXRlOgogICAgIFNoYWRvd1Jvb3QoRG9jdW1lbnQqKTsKICAgICB2
aXJ0dWFsIH5TaGFkb3dSb290KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93VHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAKaW5kZXggMmNj
ZTk5N2NhNjE3MWNhZDBkMTEwNzBmYjk0MjJmMDY0Yzk4MTU0Yi4uYmVlMzcyZjc4ZTc2Nzc3OTAx
MGEyZmNjNDc3NzYxMDI1MzE1ZTE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1RyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmNwcApAQCAt
MjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYWRvd1RyZWUu
aCIKIAorI2luY2x1ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgi
CkBAIC0yNDUsMTIgKzI0NiwxNiBAQCB2b2lkIFNoYWRvd1RyZWU6OnJlY2FsY1NoYWRvd1RyZWVT
dHlsZShOb2RlOjpTdHlsZUNoYW5nZSBjaGFuZ2UpCiAgICAgaWYgKG5lZWRzUmVhdHRhY2hIb3N0
Q2hpbGRyZW5BbmRTaGFkb3coKSkKICAgICAgICAgcmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFk
b3coKTsKICAgICBlbHNlIHsKKyAgICAgICAgQ1NTU3R5bGVTZWxlY3Rvciogc3R5bGVTZWxlY3Rv
ciA9IHlvdW5nZXN0LT5kb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCk7CisKKyAgICAgICAgc3R5
bGVTZWxlY3Rvci0+cHVzaFBhcmVudFNoYWRvd1Jvb3QoeW91bmdlc3QpOwogICAgICAgICBmb3Ig
KE5vZGUqIG4gPSB5b3VuZ2VzdC0+Zmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+bmV4dFNpYmxpbmco
KSkgewogICAgICAgICAgICAgaWYgKG4tPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obiktPnJlY2FsY1N0eWxlKGNoYW5nZSk7CiAgICAgICAg
ICAgICBlbHNlIGlmIChuLT5pc1RleHROb2RlKCkpCiAgICAgICAgICAgICAgICAgdG9UZXh0KG4p
LT5yZWNhbGNUZXh0U3R5bGUoY2hhbmdlKTsKICAgICAgICAgfQorICAgICAgICBzdHlsZVNlbGVj
dG9yLT5wb3BQYXJlbnRTaGFkb3dSb290KHlvdW5nZXN0KTsKICAgICB9CiAKICAgICBjbGVhck5l
ZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTdHlsZUVsZW1lbnQuY3BwCmluZGV4IGRjMTIzNTNlZDY1MWZjODlmOWNkNWYzM2E2NDcwZjU2
NTQyM2QyY2MuLmI4NTk0MWE0OWRhMWQyYTFlN2E2Nzk0YjEwMjE4OWY0OTg5ODE0NTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcApAQCAtMTY0LDcgKzE2NCwxMCBA
QCB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKIHZvaWQgSFRN
TFN0eWxlRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpCiB7CiAjaWYgRU5BQkxFKFNUWUxF
X1NDT1BFRCkKLSAgICBBU1NFUlQoIW1faXNSZWdpc3RlcmVkV2l0aFNjb3BpbmdOb2RlKTsKKyAg
ICAvLyBJbiBjb21lIGNhc2VzIG9uIHRlYXJkb3duIHdpbGxSZW1vdmUgaXMgbm90IGNhbGxlZCAt
IHRlc3QgaGVyZSBmb3IgdW5yZWdpc3RlcmluZyBhZ2FpbgorICAgIC8vIEZJWE1FOiBEbyB3ZSBu
ZWVkIHRvIGJvdGhlcj8KKyAgICBpZiAobV9pc1JlZ2lzdGVyZWRXaXRoU2NvcGluZ05vZGUpCisg
ICAgICAgIHVucmVnaXN0ZXJXaXRoU2NvcGluZ05vZGUoKTsKICNlbmRpZgogICAgIEhUTUxFbGVt
ZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCk7CiAgICAgU3R5bGVFbGVtZW50OjpyZW1vdmVkRnJv
bURvY3VtZW50KGRvY3VtZW50KCksIHRoaXMpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGMxZTM5M2Y0OGM5YjJjNzBjNmUx
NmE3OGJhY2EzOWZiNDM2MDY0NWQuLmUyYjU5MzlkYzU4MzY5Yjg2NWM2Y2Y5MTgwODBhMDk5Njc4
Nzc0MDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMy0wMSAgUm9sYW5kIFN0ZWluZXIg
IDxyb2xhbmRzdGVpbmVyQGNocm9taXVtLm9yZz4KKworICAgICAgICBTY29wZWQgc3R5bGVzaGVl
dHMgZG9uJ3QgYXBwZWFyIHRvIHdvcmsgaW4gU2hhZG93IERPTQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk1NDkKKworICAgICAgICBUZXN0IHRoYXQg
PHN0eWxlIHNjb3BlZD4gd29ya3MgaW4gc2hhZG93IERPTSBhcyBkaXJlY3QgY2hpbGQgb2YgdGhl
IFNoYWRvd1Jvb3QKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGZhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtaW4tc2hhZG93LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3N0eWxlLXNj
b3BlZC1pbi1zaGFkb3cuaHRtbDogQWRkZWQuCisKIDIwMTItMDMtMDEgIEFkYW0gS2xlaW4gIDxh
ZGFta0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBnYXJkZW5pbmcuIE1hcmsg
YSBKUyBzdHJpY3QgbW9kZSB0ZXN0IGFzIGZhaWxpbmcgaW4gVjgsCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLWluLXNoYWRvdy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVk
LWluLXNoYWRvdy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Q1MDU2OWYyMGQ4OWRiNTFhMWM1
MGZlZGY2ZDkxNzMwODc2MThmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtaW4tc2hhZG93LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE3IEBACitUZXN0cyB0aGF0CisKK1BBU1Mgd2luZG93LmludGVybmFscyBpcyBkZWZp
bmVkLgorUEFTUyB3aW5kb3cuaW50ZXJuYWxzLmVuc3VyZVNoYWRvd1Jvb3QgaXMgZGVmaW5lZC4K
K1BBU1MgV2ViS2l0U2hhZG93Um9vdCBpcyBkZWZpbmVkLgorUEFTUyBzaGFkb3cuaG9zdCBpcyBk
ZWZpbmVkLgorUEFTUyBzaGFkb3cuaW5uZXJIVE1MIGlzIGRlZmluZWQuCitQQVNTIHNoYWRvdy5n
ZXRFbGVtZW50QnlJZCBpcyBkZWZpbmVkLgorQTogcmdiKDAsIDAsIDApCitCOiByZ2IoMCwgMCwg
MCkKK0M6IHJnYigyNTUsIDAsIDApCitEOiByZ2IoMCwgMCwgMCkKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorQUFBCitEREQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtaW4tc2hhZG93Lmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLWluLXNo
YWRvdy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkMTM3Mjk5MWFmOWU0YjdkOGVhYTc0NWY1OThjNjZhYjJm
NzliYTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29w
ZWQvc3R5bGUtc2NvcGVkLWluLXNoYWRvdy5odG1sCkBAIC0wLDAgKzEsNDcgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVz
dHMgdGhhdCA8c3R5bGUgc2NvcGVkPiBpcyBjb3JyZWN0bHkgYXBwbGllZCBhcyBjaGlsZCBvZiBh
IFNoYWRvd1Jvb3QsIGFuZCB0aGF0IGl0IGRvZXNuJ3QgbGVhayBvdXQuIENhbiBvbmx5IHJ1biB3
aXRoaW4gRFJULiIpOworCisgICAgZnVuY3Rpb24gdGVzdCgpCisgICAgeworICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHNob3VsZEJlRGVmaW5lZCgid2luZG93Lmlu
dGVybmFscyIpOworICAgICAgICBzaG91bGRCZURlZmluZWQoIndpbmRvdy5pbnRlcm5hbHMuZW5z
dXJlU2hhZG93Um9vdCIpOworICAgICAgICBzaG91bGRCZURlZmluZWQoIldlYktpdFNoYWRvd1Jv
b3QiKTsKKworICAgICAgICB2YXIgYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJBIik7Cisg
ICAgICAgIHZhciBiID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkIiKTsKKyAgICAgICAgc2hh
ZG93ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoYik7CisgICAgICAgIHNob3VsZEJlRGVmaW5lZCgi
c2hhZG93Lmhvc3QiKTsKKyAgICAgICAgc2hvdWxkQmVEZWZpbmVkKCJzaGFkb3cuaW5uZXJIVE1M
Iik7CisgICAgICAgIHNob3VsZEJlRGVmaW5lZCgic2hhZG93LmdldEVsZW1lbnRCeUlkIik7Cisg
ICAgICAgIHNoYWRvdy5pbm5lckhUTUwgPSAiPHN0eWxlIHNjb3BlZD5kaXYgeyBjb2xvcjogcmVk
OyB9PC9zdHlsZT48Y29udGVudD48L2NvbnRlbnQ+PGRpdiBpZD0nQyc+Q0NDPC9kaXY+IjsKKyAg
ICAgICAgdmFyIGMgPSBzaGFkb3cuZ2V0RWxlbWVudEJ5SWQoIkMiKTsKKyAgICAgICAgdmFyIGQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRCIpOworICAgICAgICAKKyAgICAgICAgZGVidWco
IkE6ICIgKyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGEsIG51bGwpLmdl
dFByb3BlcnR5VmFsdWUoJ2NvbG9yJykpOyAvKiBibGFjayAqLworICAgICAgICBkZWJ1ZygiQjog
IiArIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoYiwgbnVsbCkuZ2V0UHJv
cGVydHlWYWx1ZSgnY29sb3InKSk7IC8qIGJsYWNrICovCisgICAgICAgIGRlYnVnKCJDOiAiICsg
ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShjLCBudWxsKS5nZXRQcm9wZXJ0
eVZhbHVlKCdjb2xvcicpKTsgLyogcmVkICovCisgICAgICAgIGRlYnVnKCJEOiAiICsgZG9jdW1l
bnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShkLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVl
KCdjb2xvcicpKTsgLyogYmxhY2sgKi8KKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorICAgIDxkaXYgaWQ9IkEiPgorICAgICAgICBBQUEKKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGlk
PSJCIj4KKyAgICAgICAgQkJCCisgICAgPC9kaXY+CisgICAgPGRpdiBpZD0iRCI+CisgICAgICAg
IERERAorICAgIDwvZGl2PgorICAgIDxzY3JpcHQ+dGVzdCgpOzwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>